changeset 25881:ca01403251f1

explicit merge of 'dabe77d56a2fc7c171caa81bd12d72ce8737a7a8' and 'b299a165920a9d922e9b8c27b4c879c77b43efe1'
author Richard Laager <rlaager@wiktel.com>
date Fri, 02 Jan 2009 21:47:52 +0000
parents be87547aa431 (current diff) 773662f77be7 (diff)
children f8dbd57cf635
files libpurple/protocols/msn/msn.c libpurple/protocols/msn/userlist.c libpurple/protocols/qq/im.c pidgin/gtkimhtml.c pidgin/gtkutils.c
diffstat 24 files changed, 1059 insertions(+), 1232 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Dec 13 21:13:04 2008 +0000
+++ b/ChangeLog	Fri Jan 02 21:47:52 2009 +0000
@@ -2,11 +2,6 @@
 
 version 2.5.3 (??/??/????):
 	libpurple:
-	* Fix an error with MSN offline messages by shipping the *new*
-	  "Microsoft Secure Server Authority" and the
-	  "Microsoft Internet Authority" certificates.  People that use
-	  --with-system-ssl-certs and GnuTLS need to include these in the
-	  system certs directory.
 	* Corrected maximum message lengths for Yahoo!
 	* The Buddy State Notification plugin no longer prints duplicate
 	  notifications when the same buddy is in multiple groups (Florian Quèze)
@@ -20,9 +15,6 @@
 	  connected (Paul Aurich)
 	* Fix a crash in purple_accounts_delete that happens when this function is
 	  called before the buddy list is initialized (Florian Quèze)
-	* On MSN, the Games and Office media can now be set and displayed (in
-	  addition to the previous Music media). The Media status text now shows
-	  the album, if possible.
 	* Fix use of av_len in perl bindings to fix some off-by-one bugs (Paul
 	  Aurich)
 	* On ICQ, advertise the ICQ 6 typing capability.  This should fix the
@@ -35,6 +27,17 @@
 	* Gadu-Gadu now does proper charset translations where needed (Adam
 	  Strzelecki)
 
+	MSN:
+	* Fix an error with offline messages by shipping the *new* "Microsoft
+	  Secure Server Authority" and the "Microsoft Internet Authority"
+	  certificates. These are now always installed even when using
+	  --with-system-ssl-certs because most system certs are not up to date.
+	* The Games and Office media can now be set and displayed (in addition
+	  to the previous Music media). The Media status text now shows the
+	  album, if possible.
+	* Messages sent from a mobile device while you were offline are now
+	  correctly received.
+
 	XMPP:
 	* Fix the namespace URL we look for in PEP reply stanzas to match the URL
 	  used in the 'get' requests (Paul Aurich)
--- a/libpurple/certificate.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/certificate.c	Fri Jan 02 21:47:52 2009 +0000
@@ -748,9 +748,9 @@
 # ifdef SSL_CERTIFICATES_DIR
 		x509_ca_paths = g_list_append(NULL, g_strdup(SSL_CERTIFICATES_DIR));
 # else
-		x509_ca_paths = g_list_append(NULL, g_build_filename(DATADIR,
-						   "purple", "ca-certs", NULL));
 # endif
+		x509_ca_paths = g_list_append(x509_ca_paths,
+			g_build_filename(DATADIR, "purple", "ca-certs", NULL));
 #endif
 	}
 
--- a/libpurple/protocols/jabber/message.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/jabber/message.c	Fri Jan 02 21:47:52 2009 +0000
@@ -571,12 +571,39 @@
 
 	for(child = packet->child; child; child = child->next) {
 		const char *xmlns = xmlnode_get_namespace(child);
-		if(!xmlns)
-			xmlns = "";
 		if(child->type != XMLNODE_TYPE_TAG)
 			continue;
 
-		if(!strcmp(child->name, "subject") && !strcmp(xmlns,"jabber:client")) {
+		if(!strcmp(child->name, "error")) {
+			const char *code = xmlnode_get_attrib(child, "code");
+			char *code_txt = NULL;
+			char *text = xmlnode_get_data(child);
+			if (!text) {
+				xmlnode *enclosed_text_node;
+				
+				if ((enclosed_text_node = xmlnode_get_child(child, "text")))
+					text = xmlnode_get_data(enclosed_text_node);
+			}
+
+			if(code)
+				code_txt = g_strdup_printf(_("(Code %s)"), code);
+
+			if(!jm->error)
+				jm->error = g_strdup_printf("%s%s%s",
+						text ? text : "",
+						text && code_txt ? " " : "",
+						code_txt ? code_txt : "");
+
+			g_free(code_txt);
+			g_free(text);
+		} else if (xmlns == NULL) {
+			/* QuLogic: Not certain this is correct, but it would have happened
+			   with the previous code. */
+			if(!strcmp(child->name, "x"))
+				jm->etc = g_list_append(jm->etc, child);
+			/* The following tests expect xmlns != NULL */
+			continue;
+		} else if(!strcmp(child->name, "subject") && !strcmp(xmlns,"jabber:client")) {
 			if(!jm->subject)
 				jm->subject = xmlnode_get_data(child);
 		} else if(!strcmp(child->name, "thread") && !strcmp(xmlns,"jabber:client")) {
@@ -706,46 +733,24 @@
 				jm->eventitems = g_list_append(jm->eventitems, items);
 		} else if(!strcmp(child->name, "attention") && !strcmp(xmlns,"http://www.xmpp.org/extensions/xep-0224.html#ns")) {
 			jm->hasBuzz = TRUE;
-		} else if(!strcmp(child->name, "error")) {
-			const char *code = xmlnode_get_attrib(child, "code");
-			char *code_txt = NULL;
-			char *text = xmlnode_get_data(child);
-			if (!text) {
-				xmlnode *enclosed_text_node;
-				
-				if ((enclosed_text_node = xmlnode_get_child(child, "text")))
-					text = xmlnode_get_data(enclosed_text_node);
-			}
-
-			if(code)
-				code_txt = g_strdup_printf(_("(Code %s)"), code);
-
-			if(!jm->error)
-				jm->error = g_strdup_printf("%s%s%s",
-						text ? text : "",
-						text && code_txt ? " " : "",
-						code_txt ? code_txt : "");
-
-			g_free(code_txt);
-			g_free(text);
-		} else if(!strcmp(child->name, "delay") && xmlns && !strcmp(xmlns,"urn:xmpp:delay")) {
+		} else if(!strcmp(child->name, "delay") && !strcmp(xmlns,"urn:xmpp:delay")) {
 			const char *timestamp = xmlnode_get_attrib(child, "stamp");
 			jm->delayed = TRUE;
 			if(timestamp)
 				jm->sent = purple_str_to_time(timestamp, TRUE, NULL, NULL, NULL);
 		} else if(!strcmp(child->name, "x")) {
-			if(xmlns && !strcmp(xmlns, "jabber:x:event")) {
+			if(!strcmp(xmlns, "jabber:x:event")) {
 				if(xmlnode_get_child(child, "composing")) {
 					if(jm->chat_state == JM_STATE_ACTIVE)
 						jm->chat_state = JM_STATE_COMPOSING;
 					jm->typing_style |= JM_TS_JEP_0022;
 				}
-			} else if(xmlns && !strcmp(xmlns, "jabber:x:delay")) {
+			} else if(!strcmp(xmlns, "jabber:x:delay")) {
 				const char *timestamp = xmlnode_get_attrib(child, "stamp");
 				jm->delayed = TRUE;
 				if(timestamp)
 					jm->sent = purple_str_to_time(timestamp, TRUE, NULL, NULL, NULL);
-			} else if(xmlns && !strcmp(xmlns, "jabber:x:conference") &&
+			} else if(!strcmp(xmlns, "jabber:x:conference") &&
 					jm->type != JABBER_MESSAGE_GROUPCHAT_INVITE &&
 					jm->type != JABBER_MESSAGE_ERROR) {
 				const char *jid = xmlnode_get_attrib(child, "jid");
@@ -754,8 +759,7 @@
 					g_free(jm->to);
 					jm->to = g_strdup(jid);
 				}
-			} else if(xmlns && !strcmp(xmlns,
-						"http://jabber.org/protocol/muc#user") &&
+			} else if(!strcmp(xmlns, "http://jabber.org/protocol/muc#user") &&
 					jm->type != JABBER_MESSAGE_ERROR) {
 				xmlnode *invite = xmlnode_get_child(child, "invite");
 				if(invite) {
--- a/libpurple/protocols/jabber/presence.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/jabber/presence.c	Fri Jan 02 21:47:52 2009 +0000
@@ -502,17 +502,19 @@
 				priority = atoi(p);
 				g_free(p);
 			}
+		} else if(xmlns == NULL) {
+			/* The rest of the cases used to check xmlns individually. */
+			continue;
 		} else if(!strcmp(y->name, "delay") && !strcmp(xmlns, "urn:xmpp:delay")) {
 			/* XXX: compare the time.  jabber:x:delay can happen on presence packets that aren't really and truly delayed */
 			delayed = TRUE;
-		} else if(xmlns && !strcmp(y->name, "c") && !strcmp(xmlns, "http://jabber.org/protocol/caps")) {
+		} else if(!strcmp(y->name, "c") && !strcmp(xmlns, "http://jabber.org/protocol/caps")) {
 			caps = y; /* store for later, when creating buddy resource */
 		} else if(!strcmp(y->name, "x")) {
-			const char *xmlns = xmlnode_get_namespace(y);
-			if(xmlns && !strcmp(xmlns, "jabber:x:delay")) {
+			if(!strcmp(xmlns, "jabber:x:delay")) {
 				/* XXX: compare the time.  jabber:x:delay can happen on presence packets that aren't really and truly delayed */
 				delayed = TRUE;
-			} else if(xmlns && !strcmp(xmlns, "http://jabber.org/protocol/muc#user")) {
+			} else if(!strcmp(xmlns, "http://jabber.org/protocol/muc#user")) {
 				xmlnode *z;
 
 				muc = TRUE;
@@ -555,7 +557,7 @@
 							flags |= PURPLE_CBFLAGS_VOICE;
 					}
 				}
-			} else if(xmlns && !strcmp(xmlns, "vcard-temp:x:update")) {
+			} else if(!strcmp(xmlns, "vcard-temp:x:update")) {
 				xmlnode *photo = xmlnode_get_child(y, "photo");
 				if(photo) {
 					g_free(avatar_hash);
--- a/libpurple/protocols/msn/contact.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/msn/contact.c	Fri Jan 02 21:47:52 2009 +0000
@@ -224,19 +224,24 @@
 	char *member_id = xmlnode_get_data(xmlnode_get_child(member, "MembershipId"));
 	MsnUser *user = msn_userlist_find_add_user(session->userlist, passport, NULL);
 	xmlnode *annotation;
-	guint nid = MSN_NETWORK_PASSPORT;
+	guint nid = MSN_NETWORK_UNKNOWN;
 
-	for (annotation = xmlnode_get_child(member, "Annotations/Annotation");
-	     annotation;
-	     annotation = xmlnode_get_next_twin(annotation)) {
-		char *name = xmlnode_get_data(xmlnode_get_child(annotation, "Name"));
-		if (name && !strcmp(name, "MSN.IM.BuddyType")) {
-			char *value = xmlnode_get_data(xmlnode_get_child(annotation, "Value"));
-			if (value != NULL)
-				nid = strtoul(value, NULL, 10);
-			g_free(value);
+	/* For EmailMembers, the network must be found in the annotations. */
+	if (!strcmp(node, "PassportName")) {
+		nid = MSN_NETWORK_PASSPORT;
+	} else {
+		for (annotation = xmlnode_get_child(member, "Annotations/Annotation");
+		     annotation;
+		     annotation = xmlnode_get_next_twin(annotation)) {
+			char *name = xmlnode_get_data(xmlnode_get_child(annotation, "Name"));
+			if (name && !strcmp(name, "MSN.IM.BuddyType")) {
+				char *value = xmlnode_get_data(xmlnode_get_child(annotation, "Value"));
+				if (value != NULL)
+					nid = strtoul(value, NULL, 10);
+				g_free(value);
+			}
+			g_free(name);
 		}
-		g_free(name);
 	}
  
 	purple_debug_info("msn", "CL: %s name: %s, Type: %s, MembershipID: %s, NetworkID: %u\n",
--- a/libpurple/protocols/msn/msg.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/msn/msg.c	Fri Jan 02 21:47:52 2009 +0000
@@ -231,6 +231,25 @@
 	{
 		const char *key, *value;
 
+		/* If this line starts with whitespace, it's been folded from the
+		   previous line and won't have ':'. */
+		if ((**cur == ' ') || (**cur == '\t')) {
+			tokens = g_strsplit(g_strchug(*cur), "=\"", 2);
+			key = tokens[0];
+			value = tokens[1];
+
+			/* The only one I care about is 'boundary' (which is folded from
+			   the key 'Content-Type'), so only process that. */
+			if (!strcmp(key, "boundary")) {
+				char *end = strchr(value, '\"');
+				*end = '\0';
+				msn_message_set_attr(msg, key, value);
+			}
+
+			g_strfreev(tokens);
+			continue;
+		}
+
 		tokens = g_strsplit(*cur, ": ", 2);
 
 		key = tokens[0];
--- a/libpurple/protocols/msn/msn.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/msn/msn.c	Fri Jan 02 21:47:52 2009 +0000
@@ -1424,6 +1424,7 @@
 	MsnSession *session;
 	MsnUserList *userlist;
 	const char *who, *gname;
+	MsnUser *user;
 
 	session = gc->proto_data;
 	userlist = session->userlist;
@@ -1453,9 +1454,10 @@
 	/* XXX - Would group ever be NULL here?  I don't think so...
 	 * shx: Yes it should; MSN handles non-grouped buddies, and this is only
 	 * internal. */
-	if (msn_userlist_find_user(userlist, who) != NULL) {
-		/* We already know this buddy. This function takes care of users
-		   already in the list and stuff... */
+	user = msn_userlist_find_user(userlist, who);
+	if ((user != NULL) && (user->networkid != MSN_NETWORK_UNKNOWN)) {
+		/* We already know this buddy and their network. This function knows
+		   what to do with users already in the list and stuff... */
 		msn_userlist_add_buddy(userlist, who, gname);
 	} else {
 		/* We need to check the network for this buddy first */
--- a/libpurple/protocols/msn/notification.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/msn/notification.c	Fri Jan 02 21:47:52 2009 +0000
@@ -1958,7 +1958,7 @@
 
 void
 msn_notification_add_buddy_to_list(MsnNotification *notification, MsnListId list_id,
-							  const char *who)
+							  MsnUser *user)
 {
 	MsnCmdProc *cmdproc;
 	MsnListOp list_op = 1 << list_id;
@@ -1971,8 +1971,8 @@
 	adl_node = xmlnode_new("ml");
 	adl_node->child = NULL;
 
-	msn_add_contact_xml(notification->session, adl_node, who, list_op,
-						MSN_NETWORK_PASSPORT);
+	msn_add_contact_xml(notification->session, adl_node, user->passport,
+	                    list_op, user->networkid);
 
 	payload = xmlnode_to_str(adl_node,&payload_len);
 	xmlnode_free(adl_node);
@@ -1984,7 +1984,7 @@
 
 void
 msn_notification_rem_buddy_from_list(MsnNotification *notification, MsnListId list_id,
-						   const char *who)
+						   MsnUser *user)
 {
 	MsnCmdProc *cmdproc;
 	MsnTransaction *trans;
@@ -1998,7 +1998,8 @@
 	rml_node = xmlnode_new("ml");
 	rml_node->child = NULL;
 
-	msn_add_contact_xml(notification->session, rml_node, who, list_op, MSN_NETWORK_PASSPORT);
+	msn_add_contact_xml(notification->session, rml_node, user->passport,
+	                    list_op, user->networkid);
 
 	payload = xmlnode_to_str(rml_node, &payload_len);
 	xmlnode_free(rml_node);
--- a/libpurple/protocols/msn/notification.h	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/msn/notification.h	Fri Jan 02 21:47:52 2009 +0000
@@ -42,6 +42,7 @@
 #include "session.h"
 #include "servconn.h"
 #include "cmdproc.h"
+#include "user.h"
 
 struct _MsnNotification
 {
@@ -64,9 +65,9 @@
 void msn_notification_init(void);
 
 void msn_notification_add_buddy_to_list(MsnNotification *notification,
-					MsnListId list_id, const char *who);
+					MsnListId list_id, MsnUser *user);
 void msn_notification_rem_buddy_from_list(MsnNotification *notification,
-					  MsnListId list_id, const char *who);
+					  MsnListId list_id, MsnUser *user);
 
 void msn_notification_send_fqy(MsnSession *session, const char *passport);
 
--- a/libpurple/protocols/msn/oim.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/msn/oim.c	Fri Jan 02 21:47:52 2009 +0000
@@ -594,47 +594,88 @@
 msn_oim_report_to_user(MsnOimRecvData *rdata, const char *msg_str)
 {
 	MsnMessage *message;
-	char *date,*from,*decode_msg;
+	const char *date;
+	const char *from;
+	char *decode_msg = NULL;
 	gsize body_len;
 	char **tokens;
-	char *start,*end;
-	int has_nick = 0;
-	char *passport_str, *passport;
+	char *passport = NULL;
 	time_t stamp;
 
 	message = msn_message_new(MSN_MSG_UNKNOWN);
 
 	msn_message_parse_payload(message, msg_str, strlen(msg_str),
-							  MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM);
+	                          MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM);
 	purple_debug_info("msn", "oim body:{%s}\n", message->body);
-	decode_msg = (char *)purple_base64_decode(message->body,&body_len);
-	date =	(char *)g_hash_table_lookup(message->attr_table, "Date");
-	from =	(char *)g_hash_table_lookup(message->attr_table, "From");
-	if (strstr(from," ")) {
-		has_nick = 1;
-	}
-	if (has_nick) {
-		tokens = g_strsplit(from , " " , 2);
-		passport_str = g_strdup(tokens[1]);
-		purple_debug_info("msn", "oim Date:{%s},nickname:{%s},tokens[1]:{%s} passport{%s}\n",
-							date, tokens[0], tokens[1], passport_str);
+
+	if (!strcmp(msn_message_get_attr(message, "X-OIMProxy"), "MOSMS")) {
+		char *boundary;
+		char **part;
+
+		from = msn_message_get_attr(message, "X-OIM-originatingSource");
+
+		/* Match number to user's mobile number, FROM is a phone number
+		   if the other side pages you using your phone number */
+		if (!strncmp(passport, "tel:+", 5)) {
+			MsnUser *user =	msn_userlist_find_user_with_mobile_phone(
+					rdata->oim->session->userlist, from + 4);
+
+			if (user && user->passport)
+				passport = g_strdup(user->passport);
+		}
+		if (passport == NULL)
+			passport = g_strdup(from);
+
+		boundary = g_strdup_printf("--%s" MSG_OIM_LINE_DEM,
+		                           msn_message_get_attr(message, "boundary"));
+		tokens = g_strsplit(message->body, boundary, 0);
+
+		for (part = tokens; *part != NULL; part++) {
+			MsnMessage *multipart;
+			multipart = msn_message_new(MSN_MSG_UNKNOWN);
+			msn_message_parse_payload(multipart, *part, strlen(*part),
+			                          MSG_OIM_LINE_DEM, MSG_OIM_BODY_DEM);
+
+			if (!strcmp(msn_message_get_content_type(multipart), "text/plain")) {
+				decode_msg = (char *)purple_base64_decode(multipart->body, &body_len);
+				msn_message_destroy(multipart);
+				break;
+			}
+			msn_message_destroy(multipart);
+		}
+
 		g_strfreev(tokens);
+		g_free(boundary);
+
+		if (decode_msg == NULL) {
+			purple_debug_error("msn", "Couldn't find text/plain OIM message.\n");
+			g_free(passport);
+			return;
+		}
 	} else {
-		passport_str = g_strdup(from);
-		purple_debug_info("msn", "oim Date:{%s},passport{%s}\n",
-					date, passport_str);
+		char *start, *end;
+
+		from = msn_message_get_attr(message, "From");
+		decode_msg = (char *)purple_base64_decode(message->body, &body_len);
+
+		tokens = g_strsplit(from, " ", 2);
+		if (tokens[1] != NULL)
+			from = (const char *)tokens[1];
+
+		start = strchr(from, '<') + 1;
+		end = strchr(from, '>');
+		passport = g_strndup(start, end - start);
+
+		g_strfreev(tokens);
 	}
-	start = strstr(passport_str,"<");
-	start += 1;
-	end = strstr(passport_str,">");
-	passport = g_strndup(start,end - start);
-	g_free(passport_str);
-	purple_debug_info("msn", "oim Date:{%s},passport{%s}\n", date, passport);
 
+	date = msn_message_get_attr(message, "Date");
 	stamp = msn_oim_parse_timestamp(date);
+	purple_debug_info("msn", "oim Date:{%s},passport{%s}\n",
+	                  date, passport);
 
 	serv_got_im(rdata->oim->session->account->gc, passport, decode_msg, 0,
-		stamp);
+	            stamp);
 
 	/*Now get the oim message ID from the oim_list.
 	 * and append to read list to prepare for deleting the Offline Message when sign out
--- a/libpurple/protocols/msn/soap.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/msn/soap.c	Fri Jan 02 21:47:52 2009 +0000
@@ -505,7 +505,7 @@
 		purple_debug_info("soap", "read: %s\n", g_strerror(perrno));
 
 #ifndef MSN_UNSAFE_DEBUG
-	if (conn->current_request->secure)
+	if (conn->current_request && conn->current_request->secure)
 		purple_debug_misc("soap", "Received secure request.\n");
 	else
 #endif
--- a/libpurple/protocols/msn/userlist.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/msn/userlist.c	Fri Jan 02 21:47:52 2009 +0000
@@ -668,7 +668,7 @@
 
 	msn_user_unset_op(user, list_op);
 
-	msn_notification_rem_buddy_from_list(userlist->session->notification, list_id, who);
+	msn_notification_rem_buddy_from_list(userlist->session->notification, list_id, user);
 }
 
 /*add buddy*/
@@ -775,6 +775,7 @@
                                /*MsnNetwork*/ int network)
 {
 	MsnUser *user = NULL;
+	MsnUser *user2;
 	GList *l;
 	char *group;
 
@@ -793,13 +794,18 @@
 		return;
 	}
 
-	/* Bit of a hack, but by adding to userlist now, the rest of the code
-	 * will know what network to use.
-	 */
+	group = msn_user_remove_pending_group(user);
+
+	user2 = msn_userlist_find_user(userlist, who);
+	if (user2 != NULL) {
+		/* User already in userlist, so just update it. */
+		msn_user_destroy(user);
+		user = user2;
+	} else {
+		msn_userlist_add_user(userlist, user);
+	}
+
 	msn_user_set_network(user, network);
-	msn_userlist_add_user(userlist, user);
-
-	group = msn_user_remove_pending_group(user);
 	msn_userlist_add_buddy(userlist, who, group);
 	g_free(group);
 }
@@ -829,7 +835,7 @@
 
 	msn_user_set_op(user, list_op);
 
-	msn_notification_add_buddy_to_list(userlist->session->notification, list_id, who);
+	msn_notification_add_buddy_to_list(userlist->session->notification, list_id, user);
 }
 
 gboolean
--- a/libpurple/protocols/myspace/markup.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/myspace/markup.c	Fri Jan 02 21:47:52 2009 +0000
@@ -76,14 +76,14 @@
 	{ NULL, NULL }
 };
 
-
-
 /* Indexes of this array + 1 map HTML font size to scale of normal font size. *
  * Based on _point_sizes from libpurple/gtkimhtml.c
  *                                 1    2  3    4     5      6       7 */
 static gdouble _font_scale[] = { .85, .95, 1, 1.2, 1.44, 1.728, 2.0736 };
 
-#define MAX_FONT_SIZE                   7       /* Purple maximum font size */
+/* Purple maximum font size.  Equivalent to sizeof(_font_scale) / sizeof(_font_scale[0]) */
+#define MAX_FONT_SIZE                   7
+
 #define POINTS_PER_INCH                 72      /* How many pt's in an inch */
 
 /* Text formatting bits for <f s=#> */
@@ -100,7 +100,6 @@
  * in account options. */
 #define MSIM_DEFAULT_DPI                96
 
-
 /* round is part of C99, but sometimes is unavailable before then.
  * Based on http://forums.belution.com/en/cpp/000/050/13.shtml
  */
@@ -113,22 +112,17 @@
 	}
 }
 
-
 /** Convert typographical font point size to HTML font size.
  * Based on libpurple/gtkimhtml.c */
 static guint
 msim_point_to_purple_size(MsimSession *session, guint point)
 {
 	guint size, this_point, base;
-	gdouble scale;
 
 	base = purple_account_get_int(session->account, "base_font_size", MSIM_BASE_FONT_POINT_SIZE);
 
-	for (size = 0;
-			size < sizeof(_font_scale) / sizeof(_font_scale[0]);
-			++size) {
-		scale = _font_scale[CLAMP(size, 1, MAX_FONT_SIZE) - 1];
-		this_point = (guint)msim_round(scale * base);
+	for (size = 0; size < MAX_FONT_SIZE; ++size) {
+		this_point = (guint)msim_round(base * _font_scale[size]);
 
 		if (this_point >= point) {
 			purple_debug_info("msim", "msim_point_to_purple_size: %d pt -> size=%d\n",
@@ -198,35 +192,38 @@
 	height_str = xmlnode_get_attrib(root, "h");
 	decor_str = xmlnode_get_attrib(root, "s");
 
-	if (height_str) {
-		height = atol(height_str);
+	/* Validate the font face, to avoid constructing invalid HTML later */
+	if (strchr(face, '\'') != NULL)
+		face = NULL;
+
+	height = height_str != NULL ? atol(height_str) : 12;
+	decor = decor_str != NULL ? atol(decor_str) : 0;
+
+	/*
+	 * The HTML we're constructing here is a bit redudant.  Ideally we
+	 * would use only the font-family and font-size CSS span, but Pidgin
+	 * doesn't support it (it's included for other UIs).  For Pidgin we
+	 * wrap the whole thing in an ugly font tag, and Pidgin will happily
+	 * ignore the <span>.
+	 */
+	gs_begin = g_string_new("");
+	if (height && !face) {
+		guint point_size = msim_height_to_point(session, height);
+		g_string_printf(gs_begin,
+				"<font size='%d'><span style='font-size: %dpt'>",
+				msim_point_to_purple_size(session, point_size),
+				point_size);
+	} else if (height && face) {
+		guint point_size = msim_height_to_point(session, height);
+		g_string_printf(gs_begin,
+				"<font face='%s' size='%d'><span style='font-family: %s; font-size: %dpt'>",
+				face, msim_point_to_purple_size(session, point_size),
+				face, point_size);
 	} else {
-		height = 12;
-	}
-
-	if (decor_str) {
-		decor = atol(decor_str);
-	} else {
-		decor = 0;
+		g_string_printf(gs_begin, "<font><span>");
 	}
 
-	gs_begin = g_string_new("");
-	/* TODO: get font size working */
-	if (height && !face) {
-		g_string_printf(gs_begin, "<font size='%d'>",
-				msim_point_to_purple_size(session, msim_height_to_point(session, height)));
-	} else if (height && face) {
-		g_string_printf(gs_begin, "<font face='%s' size='%d'>", face,
-				msim_point_to_purple_size(session, msim_height_to_point(session, height)));
-	} else {
-		g_string_printf(gs_begin, "<font>");
-	}
-
-	/* No support for font-size CSS? */
-	/* g_string_printf(gs_begin, "<span style='font-family: %s; font-size: %dpt'>", face,
-			msim_height_to_point(height)); */
-
-	gs_end = g_string_new("</font>");
+	gs_end = g_string_new("</span></font>");
 
 	if (decor & MSIM_TEXT_BOLD) {
 		g_string_append(gs_begin, "<b>");
@@ -243,7 +240,6 @@
 		g_string_append(gs_end, "</u>");
 	}
 
-
 	*begin = g_string_free(gs_begin, FALSE);
 	*end = g_string_free(gs_end, FALSE);
 }
@@ -550,29 +546,26 @@
  *
  * @return An HTML string. Caller frees.
  */
-static gchar *
-msim_convert_xmlnode(MsimSession *session, xmlnode *root, MSIM_XMLNODE_CONVERT f, int nodes_processed)
+static void
+msim_convert_xmlnode(MsimSession *session, GString *out, xmlnode *root, MSIM_XMLNODE_CONVERT f, int nodes_processed)
 {
 	xmlnode *node;
 	gchar *begin, *inner, *end;
-	GString *final;
 	int descended = nodes_processed;
 
-	if (!root || !root->name) {
-		return g_strdup("");
-	}
+	if (!root || !root->name)
+		return;
 
 	purple_debug_info("msim", "msim_convert_xmlnode: got root=%s\n",
 			root->name);
 
 	begin = inner = end = NULL;
 
-	final = g_string_new("");
-
 	if (descended == 0) /* We've not formatted this yet.. :) */
 		descended = f(session, root, &begin, &end); /* Get the value that our format function has already descended for us */
 
-	g_string_append(final, begin);
+	g_string_append(out, begin);
+	g_free(begin);
 
 	/* Loop over all child nodes. */
 	for (node = root->child; node != NULL; node = node->next) {
@@ -583,29 +576,20 @@
 
 			case XMLNODE_TYPE_TAG:
 				/* A tag or tag with attributes. Recursively descend. */
-				inner = msim_convert_xmlnode(session, node, f, descended);
-				g_return_val_if_fail(inner != NULL, NULL);
+				msim_convert_xmlnode(session, out, node, f, descended);
 
 				purple_debug_info("msim", " ** node name=%s\n",
-						(node && node->name) ? node->name : "(NULL)");
+						node->name ? node->name : "(NULL)");
 				break;
 
 			case XMLNODE_TYPE_DATA:
 				/* Literal text. */
-				inner = g_strndup(node->data, node->data_sz);
-				purple_debug_info("msim", " ** node data=%s\n",
-						inner ? inner : "(NULL)");
+				g_string_append_len(out, node->data, node->data_sz);
 				break;
 
 			default:
-				purple_debug_info("msim",
-						"msim_convert_xmlnode: strange node\n");
-		}
-
-		if (inner) {
-			g_string_append(final, inner);
-			g_free(inner);
-			inner = NULL;
+				purple_debug_warning("msim",
+						"msim_convert_xmlnode: unknown node type\n");
 		}
 	}
 
@@ -613,15 +597,8 @@
 	 * a paragraph and will display each on its own line. You actually have
 	 * to _nest_ <f> tags to intersperse different text in one paragraph!
 	 * Comment out this line below to see. */
-	g_string_append(final, end);
-
-	g_free(begin);
+	g_string_append(out, end);
 	g_free(end);
-
-	purple_debug_info("msim", "msim_markup_xmlnode_to_gtkhtml: RETURNING %s\n",
-			(final && final->str) ? final->str : "(NULL)");
-
-	return g_string_free(final, FALSE);
 }
 
 /** Convert XML to something based on MSIM_XMLNODE_CONVERT. */
@@ -629,7 +606,7 @@
 msim_convert_xml(MsimSession *session, const gchar *raw, MSIM_XMLNODE_CONVERT f)
 {
 	xmlnode *root;
-	gchar *str;
+	GString *str;
 	gchar *enclosed_raw;
 
 	g_return_val_if_fail(raw != NULL, NULL);
@@ -640,7 +617,7 @@
 	root = xmlnode_from_str(enclosed_raw, -1);
 
 	if (!root) {
-		purple_debug_info("msim", "msim_markup_to_html: couldn't parse "
+		purple_debug_warning("msim", "msim_markup_to_html: couldn't parse "
 				"%s as XML, returning raw: %s\n", enclosed_raw, raw);
 		/* TODO: msim_unrecognized */
 		g_free(enclosed_raw);
@@ -649,13 +626,13 @@
 
 	g_free(enclosed_raw);
 
-	str = msim_convert_xmlnode(session, root, f, 0);
-	g_return_val_if_fail(str != NULL, NULL);
-	purple_debug_info("msim", "msim_markup_to_html: returning %s\n", str);
-
+	str = g_string_new(NULL);
+	msim_convert_xmlnode(session, str, root, f, 0);
 	xmlnode_free(root);
 
-	return str;
+	purple_debug_info("msim", "msim_markup_to_html: returning %s\n", str->str);
+
+	return g_string_free(str, FALSE);
 }
 
 /** Convert plaintext smileys to <i> markup tags.
--- a/libpurple/protocols/oscar/family_auth.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/oscar/family_auth.c	Fri Jan 02 21:47:52 2009 +0000
@@ -597,18 +597,18 @@
 {
 	if (od->authinfo != NULL)
 	{
-		free(od->authinfo->sn);
-		free(od->authinfo->bosip);
-		free(od->authinfo->errorurl);
-		free(od->authinfo->email);
-		free(od->authinfo->chpassurl);
-		free(od->authinfo->latestrelease.name);
-		free(od->authinfo->latestrelease.url);
-		free(od->authinfo->latestrelease.info);
-		free(od->authinfo->latestbeta.name);
-		free(od->authinfo->latestbeta.url);
-		free(od->authinfo->latestbeta.info);
-		free(od->authinfo);
+		g_free(od->authinfo->sn);
+		g_free(od->authinfo->bosip);
+		g_free(od->authinfo->errorurl);
+		g_free(od->authinfo->email);
+		g_free(od->authinfo->chpassurl);
+		g_free(od->authinfo->latestrelease.name);
+		g_free(od->authinfo->latestrelease.url);
+		g_free(od->authinfo->latestrelease.info);
+		g_free(od->authinfo->latestbeta.name);
+		g_free(od->authinfo->latestbeta.url);
+		g_free(od->authinfo->latestbeta.info);
+		g_free(od->authinfo);
 	}
 }
 
--- a/libpurple/protocols/qq/group_im.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/qq/group_im.c	Fri Jan 02 21:47:52 2009 +0000
@@ -378,7 +378,7 @@
 	g_return_val_if_fail(id != 0 && what != NULL, -1);
 
 	qd = (qq_data *) gc->proto_data;
-	purple_debug_info("QQ", "Send chat IM to %u, len %d:\n%s\n", id, strlen(what), what);
+	purple_debug_info("QQ", "Send chat IM to %u, len %" G_GSIZE_FORMAT ":\n%s\n", id, strlen(what), what);
 
 	/* qq_show_packet("chat IM UTF8", (guint8 *)what, strlen(what)); */
 
--- a/libpurple/protocols/qq/im.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/qq/im.c	Fri Jan 02 21:47:52 2009 +0000
@@ -1258,7 +1258,7 @@
 	g_return_val_if_fail(who != NULL && what != NULL, -1);
 
 	qd = (qq_data *) gc->proto_data;
-	purple_debug_info("QQ", "Send IM to %s, len %d:\n%s\n", who, strlen(what), what);
+	purple_debug_info("QQ", "Send IM to %s, len %" G_GSIZE_FORMAT ":\n%s\n", who, strlen(what), what);
 
 	uid_to = purple_name_to_uid(who);
 	if (uid_to == qd->uid) {
--- a/libpurple/protocols/yahoo/yahoo_picture.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/libpurple/protocols/yahoo/yahoo_picture.c	Fri Jan 02 21:47:52 2009 +0000
@@ -408,8 +408,10 @@
 	if (ret < 0 && errno == EAGAIN)
 		return;
 	else if (ret <= 0) {
-		purple_debug_info("yahoo", "Buddy icon upload response (%d) bytes (> ~400 indicates failure):\n%.*s\n",
-			d->str->len, d->str->len, d->str->str);
+		/* There are other problems if d->str->len overflows, so shut up the
+		 * warning on 64-bit. */
+		purple_debug_info("yahoo", "Buddy icon upload response (%" G_GSIZE_FORMAT ") bytes (> ~400 indicates failure):\n%.*s\n",
+			d->str->len, (guint)d->str->len, d->str->str);
 
 		yahoo_buddy_icon_upload_data_free(d);
 		return;
@@ -517,7 +519,8 @@
 	g_string_prepend(d->str, header);
 	g_free(header);
 
-	purple_debug_info("yahoo", "Buddy icon upload data:\n%.*s\n", d->str->len, d->str->str);
+	/* There are other problems if we're uploading over 4GB of data */
+	purple_debug_info("yahoo", "Buddy icon upload data:\n%.*s\n", (guint)d->str->len, d->str->str);
 
 	d->fd = source;
 	d->watcher = purple_input_add(d->fd, PURPLE_INPUT_WRITE, yahoo_buddy_icon_upload_pending, d);
--- a/pidgin/gtkimhtml.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/pidgin/gtkimhtml.c	Fri Jan 02 21:47:52 2009 +0000
@@ -3122,9 +3122,15 @@
 								font->size = 6;
 							else if (g_ascii_strcasecmp(size, "xx-large") == 0)
 								font->size = 7;
-							else
-								font->size = 3;
-						    gtk_imhtml_font_set_size(imhtml, font->size);
+
+							/*
+							 * TODO: Handle other values, like percentages, or
+							 * lengths specified as em, ex, px, in, cm, mm, pt
+							 * or pc.  Or even better, use an actual HTML
+							 * renderer like webkit.
+							 */
+							if (font->size > 0)
+							    gtk_imhtml_font_set_size(imhtml, font->size);
 						}
 						else if (oldfont)
 						{
--- a/pidgin/gtkutils.c	Sat Dec 13 21:13:04 2008 +0000
+++ b/pidgin/gtkutils.c	Fri Jan 02 21:47:52 2009 +0000
@@ -1505,16 +1505,16 @@
 
 		break;
 	}
-	free(data->filename);
-	free(data->who);
-	free(data);
+	g_free(data->filename);
+	g_free(data->who);
+	g_free(data);
 }
 
 static void dnd_image_cancel_callback(_DndData *data, int choice)
 {
-	free(data->filename);
-	free(data->who);
-	free(data);
+	g_free(data->filename);
+	g_free(data->who);
+	g_free(data);
 }
 
 static void dnd_set_icon_ok_cb(_DndData *data)
@@ -1524,9 +1524,9 @@
 
 static void dnd_set_icon_cancel_cb(_DndData *data)
 {
-	free(data->filename);
-	free(data->who);
-	free(data);
+	g_free(data->filename);
+	g_free(data->who);
+	g_free(data);
 }
 
 void
--- a/po/ca.po	Sat Dec 13 21:13:04 2008 +0000
+++ b/po/ca.po	Fri Jan 02 21:47:52 2009 +0000
@@ -3,7 +3,7 @@
 # Copyright (C) unknown, Robert Millan <zeratul2@wanadoo.es>
 # Copyright (C) December 2003 (from 2003-12-12 until 2003-12-18),
 #               January (2004-01-07,12), Xan <dxpublica@telefonica.net>
-# Copyright (c) 2004, 2005, 2006, 2007
+# Copyright (c) 2004, 2005, 2006, 2007, 2008
 #               Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
 #
 # This file is distributed under the same license as the Pidgin package.
@@ -27,14 +27,14 @@
 #
 # NOTE: adjectives in catalan go [almost] always to the end, for instance:
 # NOTA: els adjectius en català acostumen a anar al final, per exemple:
-#   "New file" --> "Fitxer nou"
+#  "New file" --> "Fitxer nou"
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
-"PO-Revision-Date: 2008-05-11 13:00+0200\n"
+"POT-Creation-Date: 2008-12-14 17:46+0100\n"
+"PO-Revision-Date: 2008-12-15 00:07+0100\n"
 "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
 "Language-Team: Catalan <tradgnome@softcatala.net>\n"
 "MIME-Version: 1.0\n"
@@ -96,7 +96,6 @@
 msgid "Remember password"
 msgstr "Recorda la contrasenya"
 
-#, fuzzy
 msgid "There are no protocol plugins installed."
 msgstr "No hi ha connectors de protocol instal·lats."
 
@@ -122,9 +121,8 @@
 msgstr "Àlies:"
 
 #. Register checkbox
-#, fuzzy
 msgid "Create this account on the server"
-msgstr "Crea aquest compte nou al servidor"
+msgstr "Crea aquest compte al servidor"
 
 #. Cancel button
 #. Cancel
@@ -434,9 +432,8 @@
 msgid "View Log..."
 msgstr "Mostra el registre..."
 
-#, fuzzy
 msgid "View All Logs"
-msgstr "Visualitza el registre"
+msgstr "Visualitza tots els registres"
 
 msgid "Show"
 msgstr "Mostra"
@@ -641,21 +638,18 @@
 msgid "Send To"
 msgstr "Envia a"
 
-# FIXME
-#, fuzzy
 msgid "Invite message"
-msgstr "Missatge de sortida"
+msgstr "Missatge d'invitació"
 
 msgid "Invite"
 msgstr "Convida"
 
-#, fuzzy
 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, així com un missatge "
-"d'invitació opcional."
+"Introduïu el nom de l'usuari que vulgueu convidar,\n"
+"així com un missatge d'invitació opcional."
 
 msgid "Conversation"
 msgstr "Conversa"
@@ -670,9 +664,8 @@
 msgid "Add Buddy Pounce..."
 msgstr "Afegeix un avís per a l'amic..."
 
-#, fuzzy
 msgid "Invite..."
-msgstr "Convida"
+msgstr "Convida..."
 
 msgid "Enable Logging"
 msgstr "Habilita el registre"
@@ -683,11 +676,11 @@
 msgid "<AUTO-REPLY> "
 msgstr "<RESPOSTA-AUTOMÀTICA> "
 
-#, fuzzy, c-format
+#, c-format
 msgid "List of %d user:\n"
 msgid_plural "List of %d users:\n"
-msgstr[0] "Llista d'usuaris:\n"
-msgstr[1] "Llista d'usuaris:\n"
+msgstr[0] "Llista d'%d usuari:\n"
+msgstr[1] "Llista de %d usuaris:\n"
 
 msgid "Supported debug options are:  version"
 msgstr "Les opcions de depuració disponibles són:  version"
@@ -707,10 +700,14 @@
 "%s is not a valid message class. See '/help msgcolor' for valid message "
 "classes."
 msgstr ""
+"%s no és una classe de missatge vàlida. Vegeu '/help msgcolor' per a llistar "
+"les classes de missatge vàlides."
 
 #, c-format
 msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
 msgstr ""
+"%s no és un color vàlid. Vegei '/help msgcolor' per a llistar els colors "
+"vàlids."
 
 msgid ""
 "say &lt;message&gt;:  Send a message normally as if you weren't using a "
@@ -763,6 +760,13 @@
 "background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
 "cyan, default<br><br>EXAMPLE:<br>    msgcolor send cyan default"
 msgstr ""
+"msgcolor &lt;classe&gt; &lt;primer pla&gt; &lt;fons&gt;: estableix el color "
+"de les diferents classes de missatge en les finestres de conversa.<br>    "
+"&lt;classe&gt;: receive (rep), send (envia), highlight (ressalta), action "
+"(acció), timestamp (marca de temps)<br>    &lt;primer pla/fons&gt;: black "
+"(negre), red (vermell), green (verd), blue (blau), white (blanc), gray "
+"(gris), darkgray (gris fosc), magenta, cyan (cian), default (per defecte)"
+"<br><br>EXEMPLE:<br>    msgcolor send cyan default"
 
 msgid "Unable to open file."
 msgstr "No s'ha pogut obrir el fitxer."
@@ -783,10 +787,10 @@
 msgid "Pause"
 msgstr "Fes una pausa"
 
-#, fuzzy, c-format
+#, c-format
 msgid "File Transfers - %d%% of %d file"
 msgid_plural "File Transfers - %d%% of %d files"
-msgstr[0] "Transferència de fitxers - %d%% de %d fitxers"
+msgstr[0] "Transferència de fitxers - %d%% de %d fitxer"
 msgstr[1] "Transferència de fitxers - %d%% de %d fitxers"
 
 #. Create the window.
@@ -904,9 +908,8 @@
 msgid "Conversations with %s"
 msgstr "Converses amb %s"
 
-#, fuzzy
 msgid "All Conversations"
-msgstr "Converses"
+msgstr "Totes les converses"
 
 msgid "System Log"
 msgstr "Registre del sistema"
@@ -1542,10 +1545,10 @@
 msgstr "Sense agrupament"
 
 msgid "Nested Subgroup"
-msgstr ""
+msgstr "Subgrup imbricat"
 
 msgid "Nested Grouping (experimental)"
-msgstr ""
+msgstr "Subgrup imbricat (experimental)"
 
 msgid "Provides alternate buddylist grouping options."
 msgstr "Proporciona opcions alternatives per a l'agrupament d'amics."
@@ -1868,7 +1871,7 @@
 
 #, c-format
 msgid "Resolver process exited without answering our request"
-msgstr ""
+msgstr "El procés resoledor ha acabat sense respondre la nostra sol·licitud"
 
 #, c-format
 msgid "Thread creation failure: %s"
@@ -2177,10 +2180,11 @@
 msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
 msgstr "Hi ha un error de coincidència de l'ABI %d.%d.x (cal %d.%d.x)"
 
-#, fuzzy
 msgid ""
 "Plugin does not implement all required functions (list_icon, login and close)"
-msgstr "El connector no implementa totes les funcions requerides"
+msgstr ""
+"El connector no implementa totes les funcions requerides (list_icon, login i "
+"close)"
 
 #, c-format
 msgid ""
@@ -2266,9 +2270,8 @@
 "s'hagi transferit completament (només quan no hi ha conversa amb qui\n"
 "l'envia)"
 
-#, fuzzy
 msgid "Create a new directory for each user"
-msgstr "Seleccioneu quin directori d'usuari cercar"
+msgstr "Crea un directori nou per a cada usuari"
 
 msgid "Notes"
 msgstr "Notes"
@@ -2433,7 +2436,7 @@
 msgstr "Temps d'espera d'inactivitat del usuaris (en minuts)"
 
 msgid "Apply hiding rules to buddies"
-msgstr ""
+msgstr "Aplica les normes d'ocultació als amics"
 
 #. *< type
 #. *< ui_requirement
@@ -2846,14 +2849,13 @@
 "No s'ha pogut detectar la instal·lació d'ActiveTCL. Si voleu emprar "
 "connectors TCL, instal·leu l'ActiveTCL de http://www.activestate.com\n"
 
-#, fuzzy
 msgid ""
 "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
 "pidgin.im/BonjourWindows for more information."
 msgstr ""
 "No s'ha pogut trobar el joc d'eines per a Windows de l'Apple Bonjour, "
-"consulteu les preguntes més freqüents a http://developer.pidgin.im/wiki/Using"
-"%20Pidgin#CanIusePidginforBonjourLink-LocalMessaging per a més informació."
+"consulteu les preguntes més freqüents a http://developer.pidgin.im/"
+"BonjourWindows per a més informació."
 
 msgid "Unable to listen for incoming IM connections\n"
 msgstr "No es poden escoltar connexions entrants de MI\n"
@@ -3257,7 +3259,7 @@
 msgstr "Codificacions"
 
 msgid "Auto-detect incoming UTF-8"
-msgstr ""
+msgstr "Detecta UTF-8 entrant automàticament"
 
 msgid "Real name"
 msgstr "Nom real"
@@ -3272,9 +3274,9 @@
 msgid "Bad mode"
 msgstr "Mode dolent"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Ban on %s by %s, set %s ago"
-msgstr "Bandejament a %s de %s, establert fa %ld segons"
+msgstr "Bandejament a %s de %s, establert fa %s"
 
 #, c-format
 msgid "Ban on %s"
@@ -3445,7 +3447,7 @@
 "missatge el treu."
 
 msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
-msgstr ""
+msgstr "ctcp <sobrenom> <msg>: envia un missatge ctcp a sobrenom"
 
 msgid "chanserv: Send a command to chanserv"
 msgstr "chanserv: envia una ordre al chanserv"
@@ -3750,9 +3752,9 @@
 msgid "Service Discovery Items"
 msgstr "Elements del servei de descoberta"
 
-#, fuzzy
+# http://xmpp.org/extensions/xep-0033.html
 msgid "Extended Stanza Addressing"
-msgstr "Adreça (cont.)"
+msgstr "Bloc d'adressament estès"
 
 msgid "Multi-User Chat"
 msgstr "Xat multi-usuari"
@@ -3812,17 +3814,18 @@
 msgstr "Negociacions de la sessió xifrada"
 
 # Pot ser també música, cançó... (josep)
-#, fuzzy
+# Vegeu: http://xmpp.org/extensions/xep-0118.html
 msgid "User Tune"
 msgstr "Melodia de l'usuari"
 
-#, fuzzy
+# Nota: "Roster" en XMPP és la llista de contactes (josep)
 msgid "Roster Item Exchange"
-msgstr "MI amb intercanvi de clau"
-
-#, fuzzy
+msgstr "Intercanvi d'element de la llista de contactes"
+
+# Vegeu: http://xmpp.org/extensions/xep-0152.html (josep)
+# Nota: codi mort
 msgid "Reachability Address"
-msgstr "Adreça de correu"
+msgstr "Adreça de localització"
 
 msgid "User Profile"
 msgstr "Perfil de l'usuari"
@@ -3875,8 +3878,11 @@
 msgid "Ping"
 msgstr "Ping"
 
+# Vegeu: http://xmpp.org/extensions/xep-0200.html
+# Nota: Això es refereix a les capabilitats de l'altre interlocutor
+# No apareix a l'aplicació final, és codi mort dins un #if 0 ... #endif (josep)
 msgid "Stanza Encryption"
-msgstr "Xifratge de paràgrafs"
+msgstr "Blocs xifrats"
 
 msgid "Entity Time"
 msgstr "Hora de l'entitat"
@@ -3909,9 +3915,9 @@
 msgid "Resource"
 msgstr "Recurs"
 
-# FIXME
+# Segons la viquipèdia
 msgid "Middle Name"
-msgstr "Primer cognom"
+msgstr "Nom del mig"
 
 msgid "Address"
 msgstr "Adreça"
@@ -4421,8 +4427,9 @@
 msgid "Unsupported Encoding"
 msgstr "La codificació no està implementada"
 
+# FIXME
 msgid "Unsupported Stanza Type"
-msgstr "El tipus de permanència no està implementada"
+msgstr "Aquest tipus de bloc no està implementat"
 
 msgid "Unsupported Version"
 msgstr "Aquesta versió no està implementada"
@@ -4580,7 +4587,6 @@
 
 #. this should probably be part of global smiley theme settings later on,
 #. shared with MSN
-#, fuzzy
 msgid "Show Custom Smileys"
 msgstr "Mostra emoticones personalitzades"
 
@@ -4607,9 +4613,9 @@
 msgid "XMPP Message Error"
 msgstr "Missatge d'error de l'XMPP"
 
-#, fuzzy, c-format
+#, c-format
 msgid "(Code %s)"
-msgstr " (Codi %s)"
+msgstr "(Codi %s)"
 
 msgid "XML Parse error"
 msgstr "Error en l'anàlisi de l'XML"
@@ -4709,6 +4715,19 @@
 msgid "Unable to retrieve MSN Address Book"
 msgstr "No s'ha pogut obtenir la llibreta d'adreces MSN"
 
+#. only notify the user about problems adding to the friends list
+#. * maybe we should do something else for other lists, but it probably
+#. * won't cause too many problems if we just ignore it
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "No s'ha pogut afegir «%s»."
+
+msgid "Buddy Add error"
+msgstr "Error en afegir un amic"
+
+msgid "The username specified does not exist."
+msgstr "El nom d'usuari especificat no existeix."
+
 #, c-format
 msgid "Buddy list synchronization issue in %s (%s)"
 msgstr "Problema de sincronització de la llista d'amics a %s (%s)"
@@ -4936,9 +4955,9 @@
 msgid "Passport account not yet verified"
 msgstr "El compte de passaport encara no està verificat"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Passport account suspended"
-msgstr "El compte de passaport encara no està verificat"
+msgstr "El compte de passaport s'ha suspès"
 
 #, c-format
 msgid "Bad ticket"
@@ -4952,13 +4971,11 @@
 msgid "MSN Error: %s\n"
 msgstr "Error d'MSN: %s\n"
 
-#, fuzzy
 msgid "Other Contacts"
-msgstr "Contacte preferit"
-
-#, fuzzy
+msgstr "Altres contactes"
+
 msgid "Non-IM Contacts"
-msgstr "Suprimeix el contacte"
+msgstr "Contactes que no són de MI"
 
 msgid "Nudge"
 msgstr "Donar un cop de colze"
@@ -4971,9 +4988,8 @@
 msgid "Nudging %s..."
 msgstr "S'està donant un cop de colze a %s..."
 
-#, fuzzy
 msgid "Email Address..."
-msgstr "Adreça de correu electrònic"
+msgstr "Correu electrònic..."
 
 msgid "Your new MSN friendly name is too long."
 msgstr "El vostre nom amistós nou d'MSN és massa llarg."
@@ -5009,22 +5025,20 @@
 msgid "Disallow"
 msgstr "Denega"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Blocked Text for %s"
-msgstr "Comentari sobre l'amic %s"
-
-#, fuzzy
+msgstr "Text blocat de %s"
+
 msgid "No text is blocked for this account."
-msgstr "Utilitza aquesta _icona d'amic per a aquest compte:"
+msgstr "No hi ha text blocat per aquest compte."
 
 #, c-format
 msgid ""
 "MSN servers are currently blocking the following regular expressions:<br/>%s"
-msgstr ""
-
-#, fuzzy
+msgstr "Actualment, sevidors MSN bloquen aquestes expressions regulars:<br/>%s"
+
 msgid "This account does not have email enabled."
-msgstr "Pot ser que aquest compte Hotmail no sigui actiu."
+msgstr "Aquest compte no té el correu habilitat."
 
 msgid "Send a mobile message."
 msgstr "Envia un missatge de mòbil."
@@ -5032,6 +5046,12 @@
 msgid "Page"
 msgstr "Pàgina"
 
+msgid "Playing a game"
+msgstr "Jugant a un joc"
+
+msgid "Working"
+msgstr "Treballant"
+
 msgid "Has you"
 msgstr "Us té"
 
@@ -5068,6 +5088,12 @@
 msgid "Album"
 msgstr "Àlbum"
 
+msgid "Game Title"
+msgstr "Títol del joc"
+
+msgid "Office Title"
+msgstr "Títol oficial"
+
 msgid "Set Friendly Name..."
 msgstr "Estableix el nom amistós..."
 
@@ -5087,7 +5113,7 @@
 msgstr "Permet/denega pàgines de mòbil..."
 
 msgid "View Blocked Text..."
-msgstr ""
+msgstr "Mostra el text blocat..."
 
 msgid "Open Hotmail Inbox"
 msgstr "Obre la safata d'entrada de Hotmail"
@@ -5259,8 +5285,8 @@
 "No s'ha pogut trobar informació del perfil de l'usuari. El més segur és que "
 "l'usuari no existeixi."
 
-msgid "Profile URL"
-msgstr "URL del perfil"
+msgid "View web profile"
+msgstr "Mostra el perfil web"
 
 #. *< type
 #. *< ui_requirement
@@ -5289,9 +5315,8 @@
 msgid "Windows Live ID authentication:Unable to connect"
 msgstr "Autenticació amb el Windows Live ID: no s'ha pogut connectar"
 
-#, fuzzy
 msgid "Windows Live ID authentication:Invalid response"
-msgstr "Autenticació amb el Windows Live ID: no s'ha pogut connectar"
+msgstr "Autenticació amb el Windows Live ID: la resposta no és vàlida"
 
 #, c-format
 msgid "%s is not a valid group."
@@ -5316,9 +5341,8 @@
 msgid "Unable to add user"
 msgstr "No s'ha pogut afegir l'usuari"
 
-#, fuzzy
 msgid "The following users are missing from your addressbook"
-msgstr "El que segueix són els resultats de la vostra cerca"
+msgstr "Manquen aquests usuaris a la vostra llista d'amics"
 
 #, c-format
 msgid "Unable to add user on %s (%s)"
@@ -5343,9 +5367,8 @@
 msgid "Service Temporarily Unavailable."
 msgstr "El servei no està disponible temporalment."
 
-#, fuzzy
 msgid "Mobile message was not sent because it was too long."
-msgstr "El missatge no s'ha enviat perquè no esteu connectat."
+msgstr "No s'ha enviat el missatge al mòbil perquè era massa llarg."
 
 msgid "Unable to rename group"
 msgstr "No s'ha pogut canviar el nom del grup"
@@ -5385,21 +5408,21 @@
 "Message was not sent because the system is unavailable. This normally "
 "happens when the user is blocked or does not exist."
 msgstr ""
-
-#, fuzzy
+"No s'ha pogut enviar el missatge perquè el sistema no està disponible. Això "
+"normalment passa quan l'usuari està blocat o no existeix."
+
 msgid "Message was not sent because messages are being sent too quickly."
 msgstr ""
-"El missatge no s'ha pogut enviar perquè s'està enviant massa de pressa:"
-
-#, fuzzy
+"No s'ha pogut enviar el missatge perquè se n'estan enviant massa depressa."
+
 msgid "Message was not sent because an unknown encoding error occurred."
 msgstr ""
-"No s'ha pogut enviar el missatge perquè s'ha produït un error desconegut:"
-
-#, fuzzy
+"No s'ha pogut enviar el missatge perquè s'ha produït un error desconegut en "
+"la codificació."
+
 msgid "Message was not sent because an unknown error occurred."
 msgstr ""
-"No s'ha pogut enviar el missatge perquè s'ha produït un error desconegut:"
+"No s'ha pogut enviar el missatge perquè s'ha produït un error desconegut."
 
 msgid "Unable to connect"
 msgstr "No s'ha pogut connectar"
@@ -5518,20 +5541,11 @@
 msgid "%s has removed you from his or her buddy list."
 msgstr "%s us ha suprimit de la seva llista d'amics."
 
-#, fuzzy
 msgid "Delete Buddy from Address Book?"
-msgstr "Afegeix a la llibreta d'adreces"
-
-#, fuzzy
+msgstr "Voleu suprimir l'amic de la llibreta d'adreces?"
+
 msgid "Do you want to delete this buddy from your address book as well?"
-msgstr "Voleu afegir aquest amic a la vostra llista d'amics?"
-
-#. only notify the user about problems adding to the friends list
-#. * maybe we should do something else for other lists, but it probably
-#. * won't cause too many problems if we just ignore it
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "No s'ha pogut afegir «%s»."
+msgstr "Voleu suprimir aquest amic de la vostra llista d'amics també?"
 
 msgid "The username specified is invalid."
 msgstr "El nom d'usuari especificat no és vàlid."
@@ -5539,6 +5553,9 @@
 msgid "This Hotmail account may not be active."
 msgstr "Pot ser que aquest compte Hotmail no sigui actiu."
 
+msgid "Profile URL"
+msgstr "URL del perfil"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -5575,13 +5592,8 @@
 msgid "Logging in"
 msgstr "S'està entrant"
 
-#, fuzzy, c-format
-msgid "Connection to server lost (no data received within %d second)"
-msgid_plural "Connection to server lost (no data received within %d seconds)"
-msgstr[0] ""
-"S'ha perdut la connexió al servidor (fa %d segons que no s'hi reben dades)"
-msgstr[1] ""
-"S'ha perdut la connexió al servidor (fa %d segons que no s'hi reben dades)"
+msgid "Lost connection with server"
+msgstr "S'ha perdut la connexió amb el servidor"
 
 #. Can't write _()'d strings in array initializers. Workaround.
 msgid "New mail messages"
@@ -5676,7 +5688,7 @@
 msgid "IM Friends"
 msgstr "Amics de MI"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%d buddy was added or updated from the server (including buddies already on "
 "the server-side list)"
@@ -5684,8 +5696,8 @@
 "%d buddies were added or updated from the server (including buddies already "
 "on the server-side list)"
 msgstr[0] ""
-"S'han afegit o actualitzat %d amics al servidor (incloent els amics que ja "
-"són a la llista del servidor)"
+"S'ha afegit o actualitzat %d amic al servidor (incloent els amics que ja són "
+"a la llista del servidor)"
 msgstr[1] ""
 "S'han afegit o actualitzat %d amics al servidor (incloent els amics que ja "
 "són a la llista del servidor)"
@@ -5740,9 +5752,6 @@
 msgid "User"
 msgstr "Usuari"
 
-msgid "Profile"
-msgstr "Perfil"
-
 msgid "Headline"
 msgstr "Titular"
 
@@ -6237,9 +6246,8 @@
 msgid "AIM Protocol Plugin"
 msgstr "Connector per al protocol AIM"
 
-#, fuzzy
 msgid "ICQ UIN..."
-msgstr "ICQ UIN"
+msgstr "ICQ UIN..."
 
 #. *< type
 #. *< ui_requirement
@@ -6339,10 +6347,10 @@
 msgstr "En la llista de permès/denegat local"
 
 msgid "Warning level too high (sender)"
-msgstr ""
+msgstr "Nivell d'avís massa alt (remitent)"
 
 msgid "Warning level too high (receiver)"
-msgstr ""
+msgstr "Nivell d'avís massa alt (receptor)"
 
 msgid "User temporarily unavailable"
 msgstr "Usuari no disponible temporalment"
@@ -6446,9 +6454,8 @@
 msgid "Camera"
 msgstr "Càmera"
 
-#, fuzzy
 msgid "Screen Sharing"
-msgstr "Nom d'usuari"
+msgstr "Compartició de pantalla"
 
 #, c-format
 msgid "Free For Chat"
@@ -6697,27 +6704,30 @@
 msgstr[0] "S'ha perdut %hu missatge de %s perquè no era vàlid."
 msgstr[1] "S'han perdut %hu missatges de %s perquè no eren vàlids."
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "You missed %hu message from %s because his/her warning level is too high."
 msgid_plural ""
 "You missed %hu messages from %s because his/her warning level is too high."
-msgstr[0] "S'ha perdut %hu missatge de %s perquè ell/ella era massa dolent/a."
+msgstr[0] ""
+"Heu perdut %hu missatge de %s perquè el seu nivell d'avís és massa alt."
 msgstr[1] ""
-"S'han perdut %hu missatges de %s perquè ell/ella era massa dolent/a."
-
-#, fuzzy, c-format
+"Heu perdut %hu missatges de %s perquè el seu nivell d'avís és massa alt."
+
+#, c-format
 msgid "You missed %hu message from %s because your warning level is too high."
 msgid_plural ""
 "You missed %hu messages from %s because your warning level is too high."
-msgstr[0] "S'ha perdut %hu missatge de %s perquè sou massa dolent."
-msgstr[1] "S'han perdut %hu missatges de %s perquè sou massa dolent."
+msgstr[0] ""
+"Heu perdut %hu missatge de %s perquè el vostre nivell d'avís és massa alt."
+msgstr[1] ""
+"Heu perdut %hu missatges de %s perquè el vostre nivell d'avís és massa alt."
 
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
 msgid_plural "You missed %hu messages from %s for an unknown reason."
-msgstr[0] "S'ha perdut %hu missatge de %s per motius desconeguts."
-msgstr[1] "S'han perdut %hu missatges de %s per motius desconeguts."
+msgstr[0] "Heu perdut %hu missatge de %s per motius desconeguts."
+msgstr[1] "Heu perdut %hu missatges de %s per motius desconeguts."
 
 #. Data is assumed to be the destination sn
 #, c-format
@@ -6741,6 +6751,9 @@
 msgid "Member Since"
 msgstr "Membre des de"
 
+msgid "Profile"
+msgstr "Perfil"
+
 msgid "Your AIM connection may be lost."
 msgstr "La vostra connexió d'AIM es pot perdre."
 
@@ -6928,11 +6941,9 @@
 "d'usuari han de ser adreces de correu vàlides, o començar amb una lletra i "
 "contenir només lletres, nombres i espais, o només nombres."
 
-#, fuzzy
 msgid "Unable to Add"
 msgstr "No s'ha pogut afegir"
 
-#, fuzzy
 msgid "Unable to Retrieve Buddy List"
 msgstr "No s'ha pogut obtenir la llista d'amics"
 
@@ -7126,8 +7137,9 @@
 "per a la transferència de fitxers\n"
 "(és més lent, però acostuma a funcionar)"
 
+# FIXME: entrades/registres?
 msgid "Allow multiple simultaneous logins"
-msgstr ""
+msgstr "Permet diverses entrades simultànies"
 
 #, c-format
 msgid "Asking %s to connect to us at %s:%hu for Direct IM."
@@ -7230,16 +7242,14 @@
 msgid "Other"
 msgstr "Altres"
 
-#, fuzzy
 msgid "Visible"
-msgstr "Invisible"
-
-msgid "Firend Only"
-msgstr ""
-
-#, fuzzy
+msgstr "Visible"
+
+msgid "Friend Only"
+msgstr "Només amic"
+
 msgid "Private"
-msgstr "Privadesa"
+msgstr "Privat"
 
 msgid "QQ Number"
 msgstr "Número QQ"
@@ -7256,9 +7266,8 @@
 msgid "Phone Number"
 msgstr "Número de telèfon"
 
-#, fuzzy
 msgid "Authorize adding"
-msgstr "Voleu autoritzar l'amic?"
+msgstr "Autoritzar que us afegeixin"
 
 msgid "Cellphone Number"
 msgstr "Número de mòbil"
@@ -7266,131 +7275,110 @@
 msgid "Personal Introduction"
 msgstr "Introducció personal"
 
-#, fuzzy
 msgid "City/Area"
-msgstr "Ciutat"
-
-#, fuzzy
+msgstr "Ciutat/Àrea"
+
 msgid "Publish Mobile"
-msgstr "Mòbil personal"
-
-#, fuzzy
+msgstr "Publica el mòbil"
+
 msgid "Publish Contact"
-msgstr "Posa un àlies al contacte"
+msgstr "Publica el contacte"
 
 msgid "College"
 msgstr "Col·legi"
 
-#, fuzzy
 msgid "Horoscope"
-msgstr "Signe de l'horòscop"
-
-#, fuzzy
+msgstr "Horòscop"
+
 msgid "Zodiac"
-msgstr "Signe del zodíac"
-
-#, fuzzy
+msgstr "Zodíac"
+
 msgid "Blood"
-msgstr "Blocat"
-
-#, fuzzy
+msgstr "Sang"
+
 msgid "True"
-msgstr "Taure"
-
-#, fuzzy
+msgstr "Cert"
+
 msgid "False"
-msgstr "Ha fallat"
-
-#, fuzzy
+msgstr "Fals"
+
 msgid "Modify Contact"
-msgstr "Modifica el compte"
-
-#, fuzzy
+msgstr "Modifica el contacte"
+
 msgid "Modify Address"
-msgstr "Adreça de casa"
-
-#, fuzzy
+msgstr "Modifica l'adreça"
+
 msgid "Modify Extended Information"
-msgstr "Modifica la meva informació"
-
-#, fuzzy
+msgstr "Modifica la informació estesa"
+
 msgid "Modify Information"
-msgstr "Modifica la meva informació"
+msgstr "Modifica la informació"
 
 msgid "Update"
 msgstr "Actualitza"
 
-#, fuzzy
 msgid "Could not change buddy information."
-msgstr "Introduïu informació sobre l'amic."
-
-#, c-format
-msgid "%d needs Q&A"
-msgstr ""
-
-#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "Afegeix un amic"
-
-#, fuzzy
-msgid "Input answer here"
-msgstr "Introduïu la sol·licitud aquí"
+msgstr "No s'ha pogut canviar la informació l'amic."
+
+#, c-format
+msgid "%u requires verification"
+msgstr "Cal verificació per a %u"
+
+# Nota: títol de finestra
+msgid "Add buddy question"
+msgstr "Afegir una pregunta"
+
+msgid "Enter answer here"
+msgstr "Introduïu la resposta aquí"
 
 msgid "Send"
 msgstr "Envia"
 
-#, fuzzy
 msgid "Invalid answer."
-msgstr "La contrasenya no és vàlida"
+msgstr "La resposta no és vàlida"
 
 msgid "Authorization denied message:"
 msgstr "Missatge de denegació de l'autorització:"
 
-#, fuzzy
-msgid "Sorry, You are not my style."
-msgstr "Em sap greu, no sou el meu tipus..."
-
-#, fuzzy, c-format
-msgid "%d needs authentication"
-msgstr "L'usuari %d necessita autenticació"
-
-#, fuzzy
+msgid "Sorry, you're not my style."
+msgstr "Em sap greu, no sou el meu tipus."
+
+#, c-format
+msgid "%u needs authorization"
+msgstr "Cal autorització per a %u"
+
+# Nota: títol de finestra (josep)
 msgid "Add buddy authorize"
-msgstr "Voleu afegir l'amic a la llista?"
-
-msgid "Input request here"
+msgstr "Autorització per a afegir un amic"
+
+msgid "Enter request here"
 msgstr "Introduïu la sol·licitud aquí"
 
 msgid "Would you be my friend?"
 msgstr "Voleu ser el meu amic?"
 
-#, fuzzy
 msgid "QQ Buddy"
-msgstr "Amic"
-
-#, fuzzy
+msgstr "Amic QQ"
+
 msgid "Add buddy"
 msgstr "Afegeix un amic"
 
-#, fuzzy
 msgid "Invalid QQ Number"
-msgstr "El nom de la cara QQ no és vàlida"
-
-#, fuzzy
+msgstr "El nombre QQ no és vàlid"
+
 msgid "Failed sending authorize"
-msgstr "Autoritzeu-me, si us plau."
-
-#, fuzzy, c-format
-msgid "Failed removing buddy %d"
-msgstr "No s'ha pogut suprimir l'amic"
-
-#, fuzzy, c-format
+msgstr "No s'ha pogut enviar l'autorizació"
+
+#, c-format
+msgid "Failed removing buddy %u"
+msgstr "No s'ha pogut suprimir l'amic %u"
+
+#, c-format
 msgid "Failed removing me from %d's buddy list"
-msgstr "Suprimeix l'usuari de la llista d'amics"
-
-#, fuzzy
+msgstr "No us heu pogut suprimir de la llista d'amics de %d"
+
 msgid "No reason given"
-msgstr "No s'ha indicat cap motiu."
+msgstr "No s'ha indicat cap motiu"
 
 #. only need to get value
 #, c-format
@@ -7400,9 +7388,9 @@
 msgid "Would you like to add him?"
 msgstr "Voleu afegir-lo?"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Rejected by %s"
-msgstr "S'ha connectat a %s"
+msgstr "Rebutjat per %s"
 
 #, c-format
 msgid "Message: %s"
@@ -7417,82 +7405,73 @@
 msgid "QQ Qun"
 msgstr "QQ Qun"
 
-#, fuzzy
 msgid "Please enter Qun number"
-msgstr "Introduïu un nou nom per a %s"
-
-#, fuzzy
+msgstr "Introduïu el número Qun"
+
 msgid "You can only search for permanent Qun\n"
-msgstr "Només podeu cercar grups QQ permanents\n"
-
-#, fuzzy
+msgstr "Només podeu cercar Quns permanents\n"
+
+msgid "(Invalid UTF-8 string)"
+msgstr "(No és una cadena UTF-8 vàlida)"
+
 msgid "Not member"
 msgstr "No en sóc membre"
 
-#, fuzzy
 msgid "Member"
-msgstr "Membre des de"
-
-#, fuzzy
+msgstr "Membre"
+
 msgid "Requesting"
-msgstr "Diàleg de sol·licitud"
-
-#, fuzzy
+msgstr "Demanant"
+
 msgid "Admin"
-msgstr "Alerta d'administració"
-
-#, fuzzy
+msgstr "Administrador"
+
 msgid "Notice"
-msgstr "Nota"
-
-#, fuzzy
+msgstr "Avís"
+
 msgid "Detail"
 msgstr "Detalls"
 
 msgid "Creator"
 msgstr "Creador"
 
-#, fuzzy
 msgid "About me"
-msgstr "Quant al %s"
-
-#, fuzzy
+msgstr "Quant a mi"
+
 msgid "Category"
-msgstr "Error en el xat"
-
-#, fuzzy
+msgstr "Categoria"
+
 msgid "The Qun does not allow others to join"
-msgstr "Aquest grup no permet que s'hi afegeixi ningú"
-
-#, fuzzy
+msgstr "Aquest Qun no permet que s'hi afegeixi ningú"
+
 msgid "Join QQ Qun"
-msgstr "Entra a un xat"
-
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
-
-#, fuzzy
+msgstr "Entra al Qun QQ"
+
+msgid "Input request here"
+msgstr "Introduïu la sol·licitud aquí"
+
+#, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "S'ha entrat al Qun %s (%u)"
+
 msgid "Successfully joined Qun"
-msgstr "Heu modificat amb èxit el membre del Qun"
-
-#, c-format
-msgid "Qun %d denied to join"
-msgstr ""
+msgstr "S'ha entrat al Qun"
+
+#, c-format
+msgid "Qun %u denied from joining"
+msgstr "No se us ha permès entrar al Qun %u"
 
 msgid "QQ Qun Operation"
 msgstr "Operació Qun QQ"
 
-#, fuzzy
 msgid "Failed:"
-msgstr "Ha fallat"
-
-msgid "Join Qun, Unknow Reply"
-msgstr ""
-
-#, fuzzy
+msgstr "Ha fallat:"
+
+msgid "Join Qun, Unknown Reply"
+msgstr "Resposta desconeguda en entrar al Qun"
+
 msgid "Quit Qun"
-msgstr "QQ Qun"
+msgstr "Surt del Qun"
 
 msgid ""
 "Note, if you are the creator, \n"
@@ -7501,51 +7480,47 @@
 "Nota, si en sou el creador, \n"
 "aquesta operació suprimirà aquest Qun."
 
-#, fuzzy
-msgid "Sorry, you are not our style ..."
-msgstr "Em sap greu, no sou el meu tipus..."
-
-#, fuzzy
-msgid "Successfully changed Qun member"
-msgstr "Heu modificat amb èxit el membre del Qun"
-
-#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "Em sap greu, no sou el meu tipus"
+
+msgid "Successfully changed Qun members"
+msgstr "S'ha canviat els membres del Qun"
+
 msgid "Successfully changed Qun information"
-msgstr "Heu modificat amb èxit la informació del Qun"
+msgstr "S'ha canviat la iformació del Qun correctament"
 
 msgid "You have successfully created a Qun"
 msgstr "Heu creat un Qun"
 
-#, fuzzy
-msgid "Would you like to set detailed information now?"
-msgstr "Voleu establir-la els detalls del Qun ara?"
+msgid "Would you like to set up detailed information now?"
+msgstr "Voleu establir informació detallada ara?"
 
 msgid "Setup"
-msgstr "Instal·lació"
-
-#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
-msgstr "L'usuari %d ha sol·licitat unir-se al grup %d"
-
-#, fuzzy, c-format
-msgid "%d request to join Qun %d"
-msgstr "L'usuari %d ha sol·licitat unir-se al grup %d"
-
-#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
-msgstr "No s'ha pogut entrar al xat de l'amic."
-
-#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
-msgstr "Suprimeix l'amic"
-
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+msgstr "Configuració"
+
+#, c-format
+msgid "%u requested to join Qun %u for %s"
+msgstr "%u ha sol·licitat unir-se al Qun %u per %s"
+
+#, c-format
+msgid "%u request to join Qun %u"
+msgstr "%u ha sol·licitat unir-se al Qun %u"
+
+#, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr "No s'ha pogut entrar al Qun %u, administrat per %u"
+
+#, c-format
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
+msgstr "<b>L'administrador %2$u us ha permès unir-vos al Qun %1$u per %3$s</b>"
+
+#, c-format
+msgid "<b>Removed buddy %u.</b>"
+msgstr "<b>S'ha suprimit l'amic %u.</b>"
+
+#, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "<b>El nou amic %u ha entrat.</b>"
 
 #, c-format
 msgid "Unknown-%d"
@@ -7555,10 +7530,10 @@
 msgstr "Nivell"
 
 msgid " VIP"
-msgstr ""
+msgstr " VIP"
 
 msgid " TCP"
-msgstr ""
+msgstr " TCP"
 
 #, fuzzy
 msgid " FromMobile"
@@ -7568,128 +7543,122 @@
 msgid " BindMobile"
 msgstr "Mòbil"
 
-#, fuzzy
 msgid " Video"
-msgstr "Vídeo en directe"
-
-#, fuzzy
+msgstr " Vídeo"
+
 msgid " Zone"
-msgstr "Cap"
-
+msgstr " Zona"
+
+# Nota: només apareix si es defineix DEBUG
 msgid "Flag"
-msgstr ""
-
+msgstr "Bandera"
+
+# Nota: només apareix si es defineix DEBUG
 msgid "Ver"
-msgstr ""
+msgstr "Ver"
 
 msgid "Invalid name"
 msgstr "QQ: El nom d'usuari no és vàlid"
 
-#, fuzzy
 msgid "Select icon..."
-msgstr "Selecciona una carpeta..."
-
-#, fuzzy, c-format
+msgstr "Selecciona una icona..."
+
+#, c-format
 msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Temps de connexió</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Temps d'entrada</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
 msgid "<b>Total Online Buddies</b>: %d<br>\n"
-msgstr "<b>En línia ara</b>: %d<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Amic en línia</b>: %d<br>\n"
+
+#, c-format
 msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Actualitzat per darrer cop</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Actualitzat per darrer cop</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
 msgid "<b>Server</b>: %s<br>\n"
-msgstr "<b>ID del servidor:</b> %s: %d<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Servidor</b>: %s<br>\n"
+
+#, c-format
 msgid "<b>Client Tag</b>: %s<br>\n"
-msgstr "<b>Temps de connexió</b>: %s<br>\n"
+msgstr "<b>Etiqueta del client</b>: %s<br>\n"
 
 #, c-format
 msgid "<b>Connection Mode</b>: %s<br>\n"
 msgstr "<b>Mode de connexió</b>: %s<br>\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "<b>My Internet IP</b>: %s:%d<br>\n"
-msgstr "<b>Adreça IP:</b> %s<br>"
-
-#, fuzzy, c-format
+msgstr "<b>La meva adreça IP</b>: %s:%d<br>\n"
+
+#, c-format
 msgid "<b>Sent</b>: %lu<br>\n"
-msgstr "<b>En línia ara</b>: %d<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Enviats</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Resend</b>: %lu<br>\n"
-msgstr "<b>Usuari:</b> %s<br>"
-
-#, fuzzy, c-format
+msgstr "<b>Reenviats</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Lost</b>: %lu<br>\n"
-msgstr "<b>%s:</b> %s<br>"
-
-#, fuzzy, c-format
+msgstr "<b>Perduts</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Received</b>: %lu<br>\n"
-msgstr "<b>Actualitzat per darrer cop</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Rebuta</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Received Duplicate</b>: %lu<br>\n"
-msgstr "<b>La meva IP pública:</b> %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Rebuts duplicats</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Temps de connexió</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Temps</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
 msgid "<b>IP</b>: %s<br>\n"
-msgstr "<b>ID del servidor:</b> %s: %d<br>\n"
+msgstr "<b>IP</b>: %s<br>\n"
 
 msgid "Login Information"
 msgstr "Informació de la connexió"
 
-#, fuzzy
 msgid "<p><b>Original Author</b>:<br>\n"
-msgstr "<b>Usuari extern</b><br>"
+msgstr "<p><b>Autor original</b>:<br>\n"
 
 msgid "<p><b>Code Contributors</b>:<br>\n"
-msgstr ""
-
-#, fuzzy
+msgstr "<p><b>Col·laboradors del codi</b>:<br>\n"
+
 msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
-msgstr "<b>Actualitzat per darrer cop</b>: %s<br>\n"
-
-#, fuzzy
+msgstr "<p><b>Encantadors apedaçadors (de codi)</b>:<br>\n"
+
 msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<b>En línia ara</b>: %d<br>\n"
-
+msgstr "<p><b>Reconeixement</b>:<br>\n"
+
+# FIXME: ush... traducció lliure... 
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
-msgstr ""
+msgstr "<p><i>I tothom que ho ha fet possible...<i><br>\n"
 
 msgid "<i>Feel free to join us!</i> :)"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "About OpenQ r%s"
-msgstr "Quant al %s"
-
-#, fuzzy
+msgstr "<i>No dubteu a col·laborar amb nosaltres!</i> :)"
+
+#, c-format
+msgid "About OpenQ %s"
+msgstr "Quant a l'OpenQ %s"
+
 msgid "Change Icon"
-msgstr "Desa la icona"
+msgstr "Canvia la icona"
 
 msgid "Change Password"
 msgstr "Canvia la contrasenya"
 
-#, fuzzy
 msgid "Account Information"
-msgstr "Informació de la connexió"
+msgstr "Informació del compte"
 
 msgid "Update all QQ Quns"
-msgstr ""
-
-#, fuzzy
+msgstr "Actualitza tots els Quns QQ"
+
 msgid "About OpenQ"
-msgstr "Quant al %s"
+msgstr "Quant a l'OpenQ"
 
 #. *< type
 #. *< ui_requirement
@@ -7701,116 +7670,102 @@
 #. *< version
 #. *  summary
 #. *  description
-#, fuzzy
 msgid "QQ Protocol Plugin"
 msgstr "Connector per al protocol QQ"
 
-#, fuzzy
 msgid "Auto"
-msgstr "Autor"
-
-#, fuzzy
+msgstr "Auto"
+
 msgid "Select Server"
-msgstr "Seleccioneu un usuari"
+msgstr "Seleccioneu un servidor"
 
 msgid "QQ2005"
-msgstr ""
+msgstr "QQ2005"
 
 msgid "QQ2007"
-msgstr ""
+msgstr "QQ2007"
 
 msgid "QQ2008"
-msgstr ""
-
-#. #endif
-#, fuzzy
+msgstr "QQ2008"
+
 msgid "Connect by TCP"
 msgstr "Connecta amb TCP"
 
-#, fuzzy
 msgid "Show server notice"
-msgstr "Mostra menys opcions"
-
-#, fuzzy
+msgstr "Mostra els avisos del servidor"
+
 msgid "Show server news"
-msgstr "Mostra menys opcions"
-
-#, fuzzy
+msgstr "Mostra les notícies del servidor"
+
+# FIXME: keep alive -> permanència
 msgid "Keep alive interval (seconds)"
-msgstr "Error de permanència"
-
-#, fuzzy
+msgstr "Interval de permanència (en segons)"
+
 msgid "Update interval (seconds)"
-msgstr "Error de permanència"
-
-#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "No s'ha pogut obtenir informació del servidor"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
-msgstr "No s'ha pogut obtenir informació del servidor"
+msgstr "Interval d'actualització (en segons)"
+
+msgid "Cannot decrypt server reply"
+msgstr "No es pot desxifrar la resposta del servidor"
 
 #, c-format
 msgid "Failed requesting token, 0x%02X"
-msgstr ""
-
-#, fuzzy, c-format
+msgstr "S'ha produït un error en sol·licitar el testimoni, 0x%02X"
+
+#, c-format
 msgid "Invalid token len, %d"
-msgstr "El títol no és vàlid"
+msgstr "La longiud del testimoni no és vàlida, %d"
 
 #. extend redirect used in QQ2006
 msgid "Redirect_EX is not currently supported"
-msgstr ""
+msgstr "Redirect_EX no està implementat"
 
 #. need activation
 #. need activation
 #. need activation
-#, fuzzy
 msgid "Activation required"
-msgstr "Cal registre"
-
-#, c-format
-msgid "Unknow reply code when login (0x%02X)"
-msgstr ""
-
-msgid "Keep alive error"
-msgstr "Error de permanència"
-
-#, fuzzy
-msgid "Requesting captcha ..."
-msgstr "S'està cridant l'atenció de %s..."
-
-msgid "Checking code of captcha ..."
-msgstr ""
-
-msgid "Failed captcha verify"
-msgstr ""
-
-#, fuzzy
+msgstr "Cal activació"
+
+#, c-format
+msgid "Unknown reply code when logging in (0x%02X)"
+msgstr "No s'ha reconegut el codi de resposta en entrar (0x%02X)"
+
+msgid "Could not decrypt server reply"
+msgstr "No s'ha pogut desxifrar la resposta del servidor"
+
+# FIXME: captcha
+msgid "Requesting captcha"
+msgstr "S'està sol·licitant un capcha"
+
+msgid "Checking captcha"
+msgstr "S'està comprovant el captcha"
+
+msgid "Failed captcha verification"
+msgstr "Ha fallat la verificació del captcha"
+
 msgid "Captcha Image"
-msgstr "Desa imatge"
-
-#, fuzzy
+msgstr "Imatge captcha"
+
 msgid "Enter code"
-msgstr "Introduïu la contrasenya"
-
-msgid "QQ Captcha Verifing"
-msgstr ""
-
-#, fuzzy
+msgstr "Introduïu el codi"
+
+msgid "QQ Captcha Verification"
+msgstr "Verificació del captcha QQ"
+
 msgid "Enter the text from the image"
-msgstr "Introduïu el nom del grup"
-
-#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
-msgstr ""
-
-#, c-format
-msgid ""
-"Unknow reply code when login (0x%02X):\n"
+msgstr "Introduïu el text de la imatge"
+
+#, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr ""
+"No s'ha reconegut el codi de resposta en comprovar la contrasenya (0x%02X)"
+
+#, c-format
+msgid ""
+"Unknown reply code when logging in (0x%02X):\n"
 "%s"
 msgstr ""
+"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."
@@ -7819,14 +7774,6 @@
 msgid "Socket error"
 msgstr "Error del sòcol"
 
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"S'ha perdut la connexió amb el servidor:\n"
-"%s"
-
 msgid "Unable to read from socket"
 msgstr "No s'ha pogut llegir el sòcol"
 
@@ -7836,77 +7783,74 @@
 msgid "Connection lost"
 msgstr "S'ha perdut la connexió"
 
-#, fuzzy
-msgid "Get server ..."
-msgstr "Estableix informació d'usuari..."
-
-#, fuzzy
-msgid "Request token"
-msgstr "Petició denegada"
+msgid "Getting server"
+msgstr "S'està obtenint el servidor"
+
+msgid "Requesting token"
+msgstr "S'està sol·licitant un testimoni"
 
 msgid "Couldn't resolve host"
 msgstr "No s'ha pogut obtenir l'adreça de l'ordinador"
 
-#, fuzzy
 msgid "Invalid server or port"
-msgstr "El nom d'usuari o la contrasenya no són vàlides"
-
-#, fuzzy
-msgid "Connecting server ..."
-msgstr "Servidor al qual connectar-se"
-
-#, fuzzy
+msgstr "El servidor o el port no són vàlids"
+
+msgid "Connecting to server"
+msgstr "S'està connectant al servidor"
+
 msgid "QQ Error"
-msgstr "Error del QQid"
-
-msgid "Failed to send IM."
-msgstr "No s'ha pogut enviar la MI."
-
-#, fuzzy, c-format
+msgstr "Error del QQ"
+
+#, c-format
 msgid ""
 "Server News:\n"
 "%s\n"
 "%s\n"
 "%s"
-msgstr "Servidor repetidor d'ICQ"
-
-#, fuzzy, c-format
+msgstr ""
+"Notícies del servidor:\n"
+"%s\n"
+"%s\n"
+"%s"
+
+#, c-format
+msgid "%s:%s"
+msgstr "%s:%s"
+
+#, c-format
 msgid "From %s:"
-msgstr "De"
-
-#, fuzzy, c-format
+msgstr "De %s:"
+
+#, c-format
 msgid ""
 "Server notice From %s: \n"
 "%s"
-msgstr "Instruccions del servidor: %s"
-
-msgid "Unknow SERVER CMD"
-msgstr ""
+msgstr ""
+"Avís del servidor de %s: \n"
+"%s"
+
+msgid "Unknown SERVER CMD"
+msgstr "Ordre del servidor desconeguda"
 
 #, c-format
 msgid ""
 "Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
-msgstr ""
-
-#, fuzzy
+"Room %u, reply 0x%02X"
+msgstr ""
+"Resposta d'error de %s(0x%02X)\n"
+"Sala %u, resposta 0x%02X"
+
 msgid "QQ Qun Command"
-msgstr "Ordre"
-
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
-
-#, fuzzy
-msgid "Unknow LOGIN CMD"
-msgstr "Motiu desconegut"
-
-#, fuzzy
-msgid "Unknow CLIENT CMD"
-msgstr "Motiu desconegut"
+msgstr "Ordre QQ Qun"
+
+msgid "Could not decrypt login reply"
+msgstr "No s'ha pogut desxifrar la resposta d'entrada"
+
+msgid "Unknown LOGIN CMD"
+msgstr "Ordre d'entrada desconeguda"
+
+msgid "Unknown CLIENT CMD"
+msgstr "Ordre de client desconeguda"
 
 #, c-format
 msgid "%d has declined the file %s"
@@ -8931,9 +8875,9 @@
 msgid "Error loading SILC key pair"
 msgstr "S'ha produït un error en carregar el parell de claus claus SILC"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Download %s: %s"
-msgstr "Usuaris a %s: %s"
+msgstr "Baixada %s: %s"
 
 msgid "Your Current Mood"
 msgstr "El vostre estat d'ànim actual"
@@ -9195,7 +9139,8 @@
 msgid "Private Key file"
 msgstr "Fitxer de la clau privada"
 
-# FIXME
+# El recull diu "xifra", però aquí no es refereix a una xifra sinó a un
+# mètode de xifratge
 msgid "Cipher"
 msgstr "Codi"
 
@@ -9779,9 +9724,8 @@
 msgid "doodle: Request user to start a Doodle session"
 msgstr "doodle: fa una petició a l'usuari per iniciar una sessió Doodle"
 
-#, fuzzy
 msgid "Yahoo ID..."
-msgstr "ID de Yahoo!"
+msgstr "ID de Yahoo..."
 
 #. *< type
 #. *< ui_requirement
@@ -9891,16 +9835,9 @@
 msgid "Last Update"
 msgstr "Darrera actualització"
 
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "Dades de l'usuari %s no disponibles"
-
-msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
-msgstr ""
-"Disculpeu, aquest perfil deu estar en una llengua que actualment no està "
-"implementada."
+msgid ""
+"This profile is in a language or format that is not supported at this time."
+msgstr "Aquest perfil és en una llengua que actualment no està implementada."
 
 msgid ""
 "Could not retrieve the user's profile. This most likely is a temporary "
@@ -10153,11 +10090,11 @@
 
 #, c-format
 msgid "Requesting %s's attention..."
-msgstr "S'està cridant l'atenció de %s..."
+msgstr "S'està reclamant l'atenció de %s..."
 
 #, c-format
 msgid "%s has requested your attention!"
-msgstr "%s us ha cridat l'atenció!"
+msgstr "%s us ha demanat l'atenció!"
 
 #. *
 #. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
@@ -10203,21 +10140,18 @@
 msgstr "Voleu acceptar la invitació al xat?"
 
 #. Shortcut
-#, fuzzy
 msgid "Shortcut"
-msgstr "Ordena"
-
-#, fuzzy
+msgstr "Drecera"
+
 msgid "The text-shortcut for the smiley"
-msgstr "Tema de la drecera de text de GTK+"
+msgstr "La drecera de text per a l'emoticona"
 
 #. Stored Image
-#, fuzzy
 msgid "Stored Image"
-msgstr "Desa imatge"
+msgstr "Imatge desada"
 
 msgid "Stored Image. (that'll have to do for now)"
-msgstr ""
+msgstr "Imatge desada. (de moment hem de passar amb això)"
 
 msgid "SSL Connection Failed"
 msgstr "No s'ha pogut connectar amb SSL"
@@ -10347,9 +10281,11 @@
 msgid "Unable to connect to %s"
 msgstr "No s'ha pogut connectar a %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error reading from %s: response too long (%d bytes limit)"
-msgstr "S'ha produït un error en llegir de %s: %s"
+msgstr ""
+"S'ha produït un error en llegir de %s: la resposta és massa llarga (%d bytes "
+"de límit)"
 
 #, c-format
 msgid ""
@@ -10400,9 +10336,9 @@
 msgstr "S'ha refusat la connexió."
 
 #. 10048
-#, fuzzy, c-format
+#, c-format
 msgid "Address already in use."
-msgstr "Aquest nom de xat ja existeix"
+msgstr "Aquesta adreça ja s'està fent servir"
 
 msgid "Internet Messenger"
 msgstr "Missatger d'Internet"
@@ -10511,9 +10447,8 @@
 msgid "_Basic"
 msgstr "_Bàsic"
 
-#, fuzzy
 msgid "Create _this new account on the server"
-msgstr "Crea aquest compte nou al servidor"
+msgstr "Crea _aquest compte nou al servidor"
 
 msgid "_Advanced"
 msgstr "_Avançat"
@@ -10524,7 +10459,7 @@
 msgid "Protocol"
 msgstr "Protocol"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "<span size='larger' weight='bold'>Welcome to %s!</span>\n"
 "\n"
@@ -10539,12 +10474,12 @@
 "<span size='larger' weight='bold'>Benvingut al %s!</span>\n"
 "\n"
 "No teniu cap compte de MI configurat. Per a connectar-vos amb el %s premeu "
-"el botó <b>Afegeix</b> de sota, i configureu el vostre primer compte. Si "
-"voleu que el %s es connecti amb més comptes de MI, torneu a prémer "
-"<b>Afegeix</b> fins a configurar-los tots.\n"
+"el botó <b>Afegeix</b> d'aquí sota, i configureu el vostre primer compte. Si "
+"voleu que el %s es connecti amb més comptes de missatgeria instantània (MI), "
+"torneu a prémer <b>Afegeix</b> fins a configurar-los tots.\n"
 "\n"
 "Podeu tornar a aquesta finestra per afegir, editar o suprimir comptes, a "
-"partir del menú <b>Comptes->Afegeix/Edita</b> de la finestra de la llista "
+"partir del menú <b>Comptes->Gestiona els comptes</b> a finestra de la llista "
 "d'amics."
 
 #, c-format
@@ -10613,9 +10548,8 @@
 msgid "_Remove"
 msgstr "Sup_rimeix"
 
-#, fuzzy
 msgid "Set Custom Icon"
-msgstr "Estableix una icona personalitzada..."
+msgstr "Estableix una icona personalitzada"
 
 msgid "Remove Custom Icon"
 msgstr "Suprimeix la icona personalitzada"
@@ -10717,9 +10651,8 @@
 msgid "/_Accounts"
 msgstr "/_Comptes"
 
-#, fuzzy
 msgid "/Accounts/Manage Accounts"
-msgstr "/Comptes/Gestió"
+msgstr "/Comptes/Gestió de comptes"
 
 # Accelerador a la "n" com en la resta de programes
 #. Tools
@@ -10736,14 +10669,13 @@
 msgstr "/Eines/_Connectors"
 
 msgid "/Tools/Pr_eferences"
-msgstr "/Eines/Pr_eferències"
+msgstr "/Eines/Preferè_ncies"
 
 msgid "/Tools/Pr_ivacy"
 msgstr "/Eines/_Privadesa"
 
-#, fuzzy
 msgid "/Tools/Smile_y"
-msgstr "/Eines/_Absent"
+msgstr "/Eines/Em_oticona"
 
 msgid "/Tools/_File Transfers"
 msgstr "/Eines/Transferència de _fitxers"
@@ -10904,7 +10836,7 @@
 msgstr "/Comptes"
 
 #. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "<span weight='bold' size='larger'>Welcome to %s!</span>\n"
 "\n"
@@ -10915,9 +10847,9 @@
 "<span weight='bold' size='larger'>Benvingut al %s!</span>\n"
 "\n"
 "No teniu cap compte habilitat. Podeu habilitar comptes de MI des del menú "
-"<b>Comptes->Gestió</b> de la finestra de <b>Comptes</b>. Quan hagueu "
-"habilitat algun compte, podreu connectar-vos, establir el vostre estat, i "
-"parlar amb amics."
+"<b>Comptes->Gestió de comptes</b> de la finestra de <b>Comptes</b>. Quan "
+"hagueu habilitat algun compte podreu connectar-vos-hi, establir el vostre "
+"estat, i parlar amb amics."
 
 #. set the Show Offline Buddies option. must be done
 #. * after the treeview or faceprint gets mad. -Robot101
@@ -10970,9 +10902,8 @@
 msgid "Auto_join when account becomes online."
 msgstr "Entra _automàticament quant el compte estigui connectat."
 
-#, fuzzy
 msgid "_Remain in chat after window is closed."
-msgstr "_Oculta el xat quan la finestra es tanqui."
+msgstr "_Continua al xat quan la finestra es tanqui."
 
 msgid "Please enter the name of the group to be added."
 msgstr "Introduïu el nom del grup que vulgueu afegir."
@@ -11348,23 +11279,22 @@
 msgid "Fatal Error"
 msgstr "Error fatal"
 
+# Fixme
 msgid "bug master"
-msgstr ""
-
-#, fuzzy
+msgstr "bug master"
+
 msgid "artist"
-msgstr "Artista"
+msgstr "artista"
 
 #. feel free to not translate this
 msgid "Ka-Hing Cheung"
-msgstr ""
+msgstr "Ka-Hing Cheung"
 
 msgid "support"
 msgstr "suport"
 
-#, fuzzy
 msgid "webmaster"
-msgstr "desenvolupador i mantenidor de la pàgina web"
+msgstr "administrador del web"
 
 msgid "Senior Contributor/QA"
 msgstr "Col·laborador veterà/CQ"
@@ -11387,7 +11317,7 @@
 msgstr "suport/CQ"
 
 msgid "XMPP"
-msgstr ""
+msgstr "XMPP"
 
 msgid "original author"
 msgstr "autor original"
@@ -11466,9 +11396,8 @@
 msgid "French"
 msgstr "Francès"
 
-#, fuzzy
 msgid "Irish"
-msgstr "Kurd"
+msgstr "Irlandès"
 
 msgid "Galician"
 msgstr "Gallec"
@@ -11537,7 +11466,7 @@
 msgstr "Noruec (Nynorsk)"
 
 msgid "Occitan"
-msgstr ""
+msgstr "Occità"
 
 msgid "Punjabi"
 msgstr "Punjabi"
@@ -11779,45 +11708,35 @@
 msgid "Right-click for more unread messages...\n"
 msgstr "Feu clic amb el botó principal per a més missatges per llegir...\n"
 
-#, fuzzy
 msgid "_Change Status"
-msgstr "Canvia d'estat"
-
-#, fuzzy
+msgstr "_Canvia d'estat"
+
 msgid "Show Buddy _List"
-msgstr "Mostra la llista d'amics"
-
-#, fuzzy
+msgstr "Mostra la _llista d'amics"
+
 msgid "_Unread Messages"
-msgstr "Missatges sense llegir"
-
-#, fuzzy
+msgstr "Missatges _sense llegir"
+
 msgid "New _Message..."
-msgstr "Missatge nou..."
-
-#, fuzzy
+msgstr "_Missatge nou..."
+
 msgid "_Accounts"
-msgstr "/_Comptes"
-
-#, fuzzy
+msgstr "_Comptes"
+
 msgid "Plu_gins"
-msgstr "Connectors"
-
-#, fuzzy
+msgstr "Co_nnectors"
+
 msgid "Pr_eferences"
-msgstr "Preferències"
-
-#, fuzzy
+msgstr "Pr_eferències"
+
 msgid "Mute _Sounds"
-msgstr "Inhabilita els sons"
-
-#, fuzzy
+msgstr "Inhabilita els _sons"
+
 msgid "_Blink on New Message"
-msgstr "Parpelleja si hi ha missatges nous"
-
-#, fuzzy
+msgstr "_Parpelleja si hi ha missatges nous"
+
 msgid "_Quit"
-msgstr "Surt"
+msgstr "_Surt"
 
 msgid "Not started"
 msgstr "No s'ha iniciat"
@@ -11900,14 +11819,13 @@
 msgid "Color to draw hyperlinks."
 msgstr "El color amb què pintar els enllaços."
 
-#, fuzzy
 msgid "Hyperlink visited color"
-msgstr "Color dels enllaços"
-
-#, fuzzy
+msgstr "Color dels enllaços visitats"
+
 msgid "Color to draw hyperlinks after it has been visited (or activated)."
 msgstr ""
-"El color amb què es pintaran els enllaços quan el ratolí hi estigui a sobre."
+"El color amb el qual es pintaran els enllaços que ja s'hagin visitat (o "
+"activat)."
 
 # FIXME: prelight? (josep)
 msgid "Hyperlink prelight color"
@@ -11943,13 +11861,11 @@
 msgid "Color to draw the name of an action message."
 msgstr "Color amb el qual es pintaran els missatges d'acció."
 
-#, fuzzy
 msgid "Action Message Name Color for Whispered Message"
-msgstr "Nom del color dels missatges d'acció"
-
-#, fuzzy
+msgstr "Color del nom del missatge d'acció per a missatges xiuxiuejats"
+
 msgid "Whisper Message Name Color"
-msgstr "Nom del color per als missatges enviats"
+msgstr "Color dels missatges xiuxiuejats enviats"
 
 msgid "Typing notification color"
 msgstr "Color per a les notificacions de quan s'escriu"
@@ -12025,9 +11941,9 @@
 msgid "_Save Image..."
 msgstr "_Desa la imatge..."
 
-#, fuzzy, c-format
+#, c-format
 msgid "_Add Custom Smiley..."
-msgstr "Mostra emoticones personalitzades"
+msgstr "_Afegeix una emoticones personalitzada..."
 
 msgid "Select Font"
 msgstr "Selecciona el tipus de lletra"
@@ -12072,13 +11988,15 @@
 "This smiley is disabled because a custom smiley exists for this shortcut:\n"
 " %s"
 msgstr ""
+"Aquesta emoticona està inhabilitada perquè hi ha una emoticona "
+"personalitzada per aquesta drecera:\n"
+" %s"
 
 msgid "Smile!"
 msgstr "Somrieu!"
 
-#, fuzzy
 msgid "_Manage custom smileys"
-msgstr "Mostra emoticones personalitzades"
+msgstr "_Gestiona les emoticones personalitzades"
 
 msgid "This theme has no available smileys."
 msgstr "Aquest tema no disposa d'emoticones."
@@ -12290,7 +12208,7 @@
 "  -v, --version       mostra la versió actual i surt\n"
 
 # FIXME: backtrace -> traça (bug-buddy) ?
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s %s has segfaulted and attempted to dump a core file.\n"
 "This is a bug in the software and has happened through\n"
@@ -12311,17 +12229,12 @@
 "\n"
 "Si podeu reproduir aquest error, feu-ho saber als desenvolupadors,\n"
 "enviant-los un error de programació a:\n"
-"%ssimpleticket\n"
+"%ssimpleticket/\n"
 "\n"
 "Assegureu-vos que indiqueu el que estàveu fent, i envieu una traça\n"
 "(backtrace) del fitxer core. Si no sabeu com obtenir una traça,\n"
 "llegiu les instruccions que hi ha a:\n"
 "%swiki/GetABacktrace\n"
-"\n"
-"Si necessiteu ajuda, envieu un missatge instantani a SeanEgn o\n"
-"bé a LSchiere (per AIM). La informació per a contactar en Sean o\n"
-"en Luke a través d'altres protocols és aquí:\n"
-"%swiki/DeveloperPages\n"
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
@@ -12329,7 +12242,7 @@
 msgstr "Pidgin"
 
 msgid "Open All Messages"
-msgstr "Obre els _missatges"
+msgstr "Obre tots els missatges"
 
 msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
 msgstr "<span weight=\"bold\" size=\"larger\">Teniu correu electrònic.</span>"
@@ -12360,8 +12273,7 @@
 msgid ""
 "The 'Manual' browser command has been chosen, but no command has been set."
 msgstr ""
-"S'ha triat l'ordre per al navegador 'manualment', però no se n'ha indicat "
-"cap."
+"S'ha triat l'ordre per al navegador «manualment», però no se n'ha indicat cap."
 
 msgid "The following plugins will be unloaded."
 msgstr "Es descarregaran els connectors següents."
@@ -12794,31 +12706,26 @@
 "Ordre per al so\n"
 "(%s per al nom de fitxer)"
 
-#, fuzzy
 msgid "M_ute sounds"
-msgstr "Inhabilita els sons"
+msgstr "In_habilita els sons"
 
 msgid "Sounds when conversation has _focus"
 msgstr "Sons quan la conversa tingui el _focus"
 
-#, fuzzy
 msgid "_Enable sounds:"
-msgstr "Habilita els sons:"
-
-#, fuzzy
+msgstr "_Habilita els sons:"
+
 msgid "V_olume:"
-msgstr "Volum:"
+msgstr "V_olum:"
 
 msgid "Play"
 msgstr "Reprodueix"
 
-#, fuzzy
 msgid "_Browse..."
 msgstr "Nav_ega..."
 
-#, fuzzy
 msgid "_Reset"
-msgstr "Reinicia"
+msgstr "_Reinicia"
 
 msgid "_Report idle time:"
 msgstr "Informa del _temps d'inactivitat:"
@@ -12990,61 +12897,52 @@
 msgid "Status for %s"
 msgstr "Estat per a %s"
 
-#, fuzzy
 msgid "Custom Smiley"
-msgstr "Insereix una emoticona"
+msgstr "Emoticona personalitzada"
 
 msgid "More Data needed"
-msgstr ""
+msgstr "Calen més dades"
 
 msgid "Please provide a shortcut to associate with the smiley."
-msgstr ""
-
-#, fuzzy
+msgstr "Especifiqueu una drecera associada a l'emoticona."
+
 msgid "Duplicate Shortcut"
-msgstr "Duplicació de la correcció"
+msgstr "Drecera duplicada"
 
 msgid ""
 "A custom smiley for the selected shortcut already exists. Please specify a "
 "different shortcut."
 msgstr ""
-
-#, fuzzy
+"Hi ha una emoticona personalitzada per la drecera que heu seleccionat. "
+"Indiqueu-ne una de diferent."
+
 msgid "Please select an image for the smiley."
-msgstr "Seleccioneu l'estat d'ànim de la llista."
-
-#, fuzzy
+msgstr "Seleccioneu una imatge per a l'emoticona."
+
 msgid "Edit Smiley"
-msgstr "Insereix una emoticona"
-
-#, fuzzy
+msgstr "Edita l'emoticona"
+
 msgid "Add Smiley"
-msgstr "_Emoticona"
-
-#, fuzzy
+msgstr "Afegeix una emoticona"
+
 msgid "Smiley _Image"
-msgstr "Desa imatge"
+msgstr "_Imatge de l'emoticona"
 
 #. Smiley shortcut
-#, fuzzy
 msgid "Smiley S_hortcut"
-msgstr "Dreceres de teclat"
-
-#, fuzzy
+msgstr "_Dreceres de l'emoticona"
+
 msgid "Smiley"
-msgstr "_Emoticona"
-
-#, fuzzy
+msgstr "Emoticona"
+
 msgid "Custom Smiley Manager"
-msgstr "Gestor de certificats"
-
-#, fuzzy
+msgstr "Gestor d'emoticones personalitzades"
+
 msgid "Click to change your buddyicon for this account."
-msgstr "Utilitza aquesta _icona d'amic per a aquest compte:"
-
-#, fuzzy
+msgstr "Feu clic per canviar la icona d'amic d'aquest compte."
+
 msgid "Click to change your buddyicon for all accounts."
-msgstr "Utilitza aquesta _icona d'amic per a aquest compte:"
+msgstr "Feu clic per canviar la icona d'amic de tots els comptes."
 
 msgid "Waiting for network connection"
 msgstr "S'està esperant la connexió de xarxa"
@@ -13182,20 +13080,17 @@
 msgid "_Invite"
 msgstr "Conv_ida"
 
-#, fuzzy
 msgid "_Modify..."
-msgstr "_Modifica"
-
-#, fuzzy
+msgstr "_Modifica..."
+
 msgid "_Add..."
-msgstr "_Afegeix"
+msgstr "_Afegeix..."
 
 msgid "_Open Mail"
 msgstr "_Obre el correu"
 
-#, fuzzy
 msgid "_Edit"
-msgstr "Edita"
+msgstr "_Edita"
 
 msgid "Pidgin Tooltip"
 msgstr "Indicador de funció del Pidgin"
@@ -13214,12 +13109,11 @@
 msgid "none"
 msgstr "cap"
 
-#, fuzzy
 msgid "Small"
-msgstr "Correu electrònic"
+msgstr "Petites"
 
 msgid "Smaller versions of the default smilies"
-msgstr ""
+msgstr "Versions més petites de les emoticones per defecte"
 
 msgid "Response Probability:"
 msgstr "Probabilitat de resposta:"
@@ -13693,9 +13587,9 @@
 msgid "Set window manager \"_URGENT\" hint"
 msgstr "Aplica l'opció «_URGENT» del gestor de finestres"
 
-#, fuzzy
+# (gnome)
 msgid "_Flash window"
-msgstr "Finestres de _xat"
+msgstr "Finestres _flash"
 
 #. Raise window method button
 msgid "R_aise conversation window"
@@ -13783,9 +13677,8 @@
 msgid "Hyperlink Color"
 msgstr "Color dels hiperenllaços"
 
-#, fuzzy
 msgid "Visited Hyperlink Color"
-msgstr "Color dels hiperenllaços"
+msgstr "Color dels enllaços visitats"
 
 msgid "Highlighted Message Name Color"
 msgstr "Nom del color per als missatges ressaltats"
@@ -13880,18 +13773,16 @@
 
 #, c-format
 msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "Podeu actualitzar-vos a %s %s avui."
 
 msgid "New Version Available"
 msgstr "Nova versió disponible"
 
-#, fuzzy
 msgid "Later"
-msgstr "Data"
-
-#, fuzzy
+msgstr "Més tard"
+
 msgid "Download Now"
-msgstr "Usuaris a %s: %s"
+msgstr "Baixa-la ara"
 
 #. *< type
 #. *< ui_requirement
@@ -14190,24 +14081,64 @@
 
 # FIXME: stanza -> estrofa (literal) (Josep)
 msgid "Insert an <iq/> stanza."
-msgstr "Insereix una estrofa <iq/>"
+msgstr "Insereix un bloc <iq/>."
 
 msgid "Insert a <presence/> stanza."
-msgstr "Insereix una estrofa <presence/>"
+msgstr "Insereix un bloc <presence/>."
 
 msgid "Insert a <message/> stanza."
-msgstr "Insereix una estrofa <message/>"
+msgstr "Insereix un bloc <message/>."
 
 #. *< name
 #. *< version
 #. *  summary
 msgid "Send and receive raw XMPP stanzas."
-msgstr "Envia i rep estrofes XMPP en brut."
+msgstr "Envia i rep blocs XMPP en brut."
 
 #. *  description
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
 
+#~ msgid "Connection to server lost (no data received within %d second)"
+#~ msgid_plural ""
+#~ "Connection to server lost (no data received within %d seconds)"
+#~ msgstr[0] ""
+#~ "S'ha perdut la connexió al servidor (fa %d segon que no s'hi reben dades)"
+#~ msgstr[1] ""
+#~ "S'ha perdut la connexió al servidor (fa %d segons que no s'hi reben dades)"
+
+#~ msgid "Keep alive error"
+#~ msgstr "Error de permanència"
+
+#~ msgid ""
+#~ "Lost connection with server:\n"
+#~ "%d, %s"
+#~ msgstr ""
+#~ "S'ha perdut la connexió amb el servidor:\n"
+#~ "%d, %s"
+
+#~ msgid "Connecting server ..."
+#~ msgstr "S'està connectant al servidor..."
+
+#~ msgid "Failed to send IM."
+#~ msgstr "No s'ha pogut enviar la MI."
+
+#~ msgid "Not a member of room \"%s\"\n"
+#~ msgstr "No sou un membre de la sala «%s»\n"
+
+#~ msgid "User information for %s unavailable"
+#~ msgstr "Dades de l'usuari %s no disponibles"
+
+#~ msgid ""
+#~ "You are using %s version %s.  The current version is %s.  You can get it "
+#~ "from <a href=\"%s\">%s</a><hr>"
+#~ msgstr ""
+#~ "Esteu emprant la versió %s del %s. La versió actual és %s, la podeu "
+#~ "obtenir de <a href=\"%s\">%s</a><hr>"
+
+#~ msgid "<b>ChangeLog:</b><br>%s"
+#~ msgstr "<b>Registre de canvis:</b><br>%s"
+
 #~ msgid "A group with the name already exists."
 #~ msgstr "Ja existeix un grup amb aquest nom."
 
@@ -14217,13 +14148,8 @@
 #~ msgid "Blood Type"
 #~ msgstr "Tipus de sang"
 
-#, fuzzy
 #~ msgid "Update information"
-#~ msgstr "Actualitza la meva informació"
-
-#, fuzzy
-#~ msgid "Successed:"
-#~ msgstr "Velocitat:"
+#~ msgstr "Actualitza la informació"
 
 #~ msgid ""
 #~ "Setting custom faces is not currently supported. Please choose an image "
@@ -14244,14 +14170,6 @@
 #~ msgid "Add buddy with auth request failed"
 #~ msgstr "Ha fallat la sol·licitut per afegir un amic amb autorització"
 
-#, fuzzy
-#~ msgid "Add into %d's buddy list"
-#~ msgstr "No s'ha pogut carregar la llista d'amics"
-
-#, fuzzy
-#~ msgid "QQ Number Error"
-#~ msgstr "Número QQ"
-
 #~ msgid "Group Description"
 #~ msgstr "Descripció del grup"
 
@@ -14261,26 +14179,12 @@
 #~ msgid "Approve"
 #~ msgstr "Aprova"
 
-#, fuzzy
-#~ msgid "Successed to join Qun %d, operated by admin %d"
-#~ msgstr ""
-#~ "L'administrador %2$d ha rebutjat la vostra sol·liciut per entrar al grup %"
-#~ "1$d"
-
-#, fuzzy
-#~ msgid "[%d] removed from Qun \"%d\""
-#~ msgstr "Vós [%d] heu sortit del grup «%d»"
-
-#, fuzzy
-#~ msgid "[%d] added to Qun \"%d\""
-#~ msgstr "Vós [%d] heu estat afegit al grup «%d»"
-
 #~ msgid "I am a member"
 #~ msgstr "En sóc membre"
 
-#, fuzzy
+# FIXME? (hi demano [entrar]?)
 #~ msgid "I am requesting"
-#~ msgstr "Sol·licitud incorrecta"
+#~ msgstr "Demano"
 
 #~ msgid "I am the admin"
 #~ msgstr "En sóc l'administrador"
@@ -14288,10 +14192,6 @@
 #~ msgid "Unknown status"
 #~ msgstr "Estat desconegut"
 
-#, fuzzy
-#~ msgid "Remove from Qun"
-#~ msgstr "Suprimeix el grup"
-
 #~ msgid "You entered a group ID outside the acceptable range"
 #~ msgstr "Heu entrat un identificador de grup fora del rang"
 
@@ -14301,24 +14201,6 @@
 #~ msgid "Do you want to approve the request?"
 #~ msgstr "Voleu aprovar aquesta sol·licitud?"
 
-#, fuzzy
-#~ msgid "Change Qun member"
-#~ msgstr "Número de telèfon"
-
-#, fuzzy
-#~ msgid "Change Qun information"
-#~ msgstr "Informació del canal"
-
-# Gnome_2.6_Extras [rhythmbox.HEAD.ca.po]
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr ""
-#~ "%s:\n"
-#~ "%s"
-
 #~ msgid "System Message"
 #~ msgstr "Missatge del sistema"
 
@@ -14331,64 +14213,47 @@
 #~ msgid "Set My Information"
 #~ msgstr "Estableix la meva informació"
 
-#, fuzzy
-#~ msgid "Leave the QQ Qun"
-#~ msgstr "Surt d'aquest Qun QQ"
-
 #~ msgid "Block this buddy"
 #~ msgstr "Bloca aquest usuari"
 
-#, fuzzy
 #~ msgid "Error password: %s"
-#~ msgstr "S'ha produït un error en canviar la contrasenya"
-
-#, fuzzy
+#~ msgstr "Error en la contrasenya: %s"
+
 #~ msgid "Failed to connect all servers"
-#~ msgstr "No s'ha pogut connectar al servidor."
-
-#, fuzzy
+#~ msgstr "No s'han pogut connectar tots els servidors"
+
 #~ msgid "Connecting server %s, retries %d"
-#~ msgstr ""
-#~ "S'ha produït un error de connexió del servidor %s:\n"
-#~ "%s"
-
-#, fuzzy
+#~ msgstr "S'està connectant al servidor %s, %d reintents"
+
 #~ msgid "Do you approve the requestion?"
 #~ msgstr "Voleu aprovar aquesta sol·licitud?"
 
-#, fuzzy
 #~ msgid "Do you add the buddy?"
 #~ msgstr "Voleu afegir aquest amic?"
 
-#, fuzzy
 #~ msgid "%s added you [%s] to buddy list"
 #~ msgstr "%s us ha afegit [%s] a la seva llista d'amics"
 
-#, fuzzy
 #~ msgid "QQ Budy"
-#~ msgstr "Amic"
+#~ msgstr "Amic QQ"
+
+#~ msgid "Requestion approved by %s"
+#~ msgstr "%s ha aprovat la sol.licitud"
 
 #~ msgid "%s wants to add you [%s] as a friend"
 #~ msgstr "%s us vol afegir [%s] com a amic"
 
-#, fuzzy
 #~ msgid "%s is not in buddy list"
 #~ msgstr "%s no és a la vostra llista d'amics"
 
-#, fuzzy
 #~ msgid "Would you add?"
 #~ msgstr "Voleu afegir-lo?"
 
 #~ msgid "%s"
 #~ msgstr "%s"
 
-#, fuzzy
-#~ msgid "QQ Server Notice"
-#~ msgstr "Port en el servidor"
-
-#, fuzzy
 #~ msgid "Network disconnected"
-#~ msgstr "El remot s'ha desconnectat"
+#~ msgstr "La xarxa s'ha desconnectat"
 
 #~ msgid "developer"
 #~ msgstr "desenvolupador"
@@ -14399,33 +14264,6 @@
 #~ msgid "Artists"
 #~ msgstr "Artistes"
 
-#~ msgid ""
-#~ "You are using %s version %s.  The current version is %s.  You can get it "
-#~ "from <a href=\"%s\">%s</a><hr>"
-#~ msgstr ""
-#~ "Esteu emprant la versió %s del %s. La versió actual és %s, la podeu "
-#~ "obtenir de <a href=\"%s\">%s</a><hr>"
-
-#~ msgid "<b>ChangeLog:</b><br>%s"
-#~ msgstr "<b>Registre de canvis:</b><br>%s"
-
-#~ msgid "EOF while reading from resolver process"
-#~ msgstr ""
-#~ "S'ha arribat al final del fitxer (EOF) en llegir del procés resoledor"
-
-#~ msgid "Error setting socket options"
-#~ msgstr "S'ha produït un error en establir les opcions del sòcol"
-
-#~ msgid ""
-#~ "Windows Live ID authentication: cannot find authenticate token in server "
-#~ "response"
-#~ msgstr ""
-#~ "Autenticació amb el Windows Live ID: no s'ha pogut trobar el testimoni "
-#~ "d'autenticació al servidor"
-
-#~ msgid "Windows Live ID authentication Failed"
-#~ msgstr "No s'ha pogut autenticar amb el Windows Live ID"
-
 #~ msgid "Too evil (sender)"
 #~ msgstr "Massa malvat (remitent)"
 
@@ -14441,86 +14279,6 @@
 #~ msgid "<i>(retrieving)</i>"
 #~ msgstr "<i>(s'està recuperant)</i>"
 
-#~ msgid "Your information has been updated"
-#~ msgstr "S'ha actualitzat la vostra informació"
-
-#~ msgid "Input your reason:"
-#~ msgstr "Indiqueu-ne el motiu:"
-
-#~ msgid "You have successfully removed a buddy"
-#~ msgstr "Heu suprimit amb èxit un amic"
-
-#~ msgid "You have successfully removed yourself from your friend's buddy list"
-#~ msgstr "Us heu suprimit amb èxit de la llista d'amics del vostre amic"
-
-#~ msgid "You have added %d to buddy list"
-#~ msgstr "Heu afegit %d a la llista d'amics"
-
-#~ msgid "Invalid QQid"
-#~ msgstr "QQid invàlid"
-
-#~ msgid "Please enter external group ID"
-#~ msgstr "Introduïu l'ID del grup extern"
-
-#~ msgid "Reason: %s"
-#~ msgstr "Motiu: %s"
-
-#~ msgid "Your request to join group %d has been approved by admin %d"
-#~ msgstr ""
-#~ "L'administrador %2$d ha aprovat la vostra sol·liciud per entrar al grup %1"
-#~ "$d"
-
-#~ msgid "This group has been added to your buddy list"
-#~ msgstr "S'ha afegit aquest grup a la vostra llista d'amics"
-
-#~ msgid "I am applying to join"
-#~ msgstr "Estic sol·licitant entrar-hi"
-
-#~ msgid "You have successfully left the group"
-#~ msgstr "Heu sortit del grup correctament"
-
-#~ msgid "QQ Group Auth"
-#~ msgstr "Autorització de grup QQ"
-
-#~ msgid "Your authorization request has been accepted by the QQ server"
-#~ msgstr "El servidor QQ ha acceptat la sol·licitud d'autorització"
-
-#~ msgid "Code [0x%02X]: %s"
-#~ msgstr "Codi [0x%02X]: %s"
-
-#~ msgid "Group Operation Error"
-#~ msgstr "S'ha produït un error d'orientació del grup"
-
-#~ msgid "Enter your reason:"
-#~ msgstr "Indiqueu-ne el motiu:"
-
-#~ msgid "Error requesting login token"
-#~ msgstr "S'ha produït un error en sol·licitar un testimoni d'entrada"
-
-#~ msgid "Unable to login. Check debug log."
-#~ msgstr "No s'ha pogut connectar, comproveu el registre de depuració."
-
-#~ msgid "Unable to login"
-#~ msgstr "No s'ha connectar"
-
-#~ msgid "TCP Address"
-#~ msgstr "Adreça TCP"
-
-#~ msgid "UDP Address"
-#~ msgstr "Adreça UDP"
-
-#~ msgid "Show Login Information"
-#~ msgstr "Mostra informació de la connexió"
-
-#~ msgid "Login failed, no reply"
-#~ msgstr "Ha fallat l'entrada, no s'ha obtingut resposta"
-
-#~ msgid "User %s rejected your request"
-#~ msgstr "L'usuari %s ha declinat la vostra sol·licitud"
-
-#~ msgid "User %s approved your request"
-#~ msgstr "L'usuari %s ha acceptat la vostra sol·licitud"
-
 #~ msgid "Screen name:"
 #~ msgstr "Nom d'usuari:"
 
@@ -15521,6 +15279,9 @@
 #~ msgid "Reject Call"
 #~ msgstr "Rebutja la trucada"
 
+#~ msgid "Connected to %s"
+#~ msgstr "S'ha connectat a %s"
+
 #~ msgid "_Mute"
 #~ msgstr "_Silencia"
 
@@ -15941,9 +15702,6 @@
 #~ msgid "Away title: "
 #~ msgstr "Motiu de l'absència: "
 
-#~ msgid "Buddy List Error"
-#~ msgstr "Error en la llista d'amics"
-
 #~ msgid ""
 #~ "\n"
 #~ "Mark all accounts as \"away\" with the default message.\n"
--- a/po/de.po	Sat Dec 13 21:13:04 2008 +0000
+++ b/po/de.po	Fri Jan 02 21:47:52 2009 +0000
@@ -7,14 +7,13 @@
 #
 # This file is distributed under the same license as the Pidgin package.
 #
-# Jochen Kemnade <jochenkemnade@web.de>, 2008.
 msgid ""
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-12 17:46+0100\n"
-"PO-Revision-Date: 2008-12-12 17:42+0100\n"
-"Last-Translator: Jochen Kemnade <jochenkemnade@web.de>\n"
+"POT-Creation-Date: 2008-12-14 22:58+0100\n"
+"PO-Revision-Date: 2008-12-14 22:58+0100\n"
+"Last-Translator: Björn Voigt <bjoern@cs.tu-berlin.de>\n"
 "Language-Team: German <de@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -4311,7 +4310,7 @@
 msgstr "Server überlastet"
 
 msgid "Service Unavailable"
-msgstr "Dienst nicht erreichbar"
+msgstr "Dienst nicht verfügbar"
 
 msgid "Subscription Required"
 msgstr "Abonnement erforderlich"
@@ -4691,7 +4690,7 @@
 msgstr "Kann „%s“ nicht hinzufügen."
 
 msgid "Buddy Add error"
-msgstr ""
+msgstr "Fehler beim Hinzufügen des Buddys"
 
 msgid "The username specified does not exist."
 msgstr "Der angegebene Benutzername existiert nicht."
@@ -4964,11 +4963,10 @@
 msgstr "Nachricht"
 
 msgid "Playing a game"
-msgstr ""
-
-#, fuzzy
+msgstr "Spielt ein Spiel"
+
 msgid "Working"
-msgstr "Geschäftlich"
+msgstr "Arbeitet"
 
 msgid "Has you"
 msgstr "Hat Sie"
@@ -5006,9 +5004,8 @@
 msgid "Album"
 msgstr "Album"
 
-#, fuzzy
 msgid "Game Title"
-msgstr "Titel anpassen"
+msgstr "Spieltitel"
 
 #, fuzzy
 msgid "Office Title"
@@ -7184,7 +7181,7 @@
 msgstr "Sichtbar"
 
 msgid "Friend Only"
-msgstr ""
+msgstr "Nur Freund"
 
 msgid "Private"
 msgstr "Privat"
@@ -7204,9 +7201,8 @@
 msgid "Phone Number"
 msgstr "Telefonnummer"
 
-#, fuzzy
 msgid "Authorize adding"
-msgstr "Buddy autorisieren?"
+msgstr "Hinzufügen autorisieren?"
 
 msgid "Cellphone Number"
 msgstr "Handy-Telefonnummer"
@@ -7221,9 +7217,8 @@
 msgid "Publish Mobile"
 msgstr "Handy (privat)"
 
-#, fuzzy
 msgid "Publish Contact"
-msgstr "Kontakt-Alias"
+msgstr "Kontakt veröffentlichen"
 
 msgid "College"
 msgstr "College"
@@ -7238,13 +7233,11 @@
 msgid "Blood"
 msgstr "Blockiert"
 
-#, fuzzy
 msgid "True"
-msgstr "Stier"
-
-#, fuzzy
+msgstr "Wahr"
+
 msgid "False"
-msgstr "Gescheitert"
+msgstr "Falsch"
 
 msgid "Modify Contact"
 msgstr "Kontakt bearbeiten"
@@ -7268,9 +7261,8 @@
 msgid "%u requires verification"
 msgstr "%u erfordert Autorisierung"
 
-#, fuzzy
 msgid "Add buddy question"
-msgstr "Benutzer zu Ihrer Buddy-Liste hinzufügen?"
+msgstr "Buddy-Frage hinzufügen"
 
 msgid "Enter answer here"
 msgstr "Antwort hier eingeben"
@@ -7279,22 +7271,20 @@
 msgstr "Senden"
 
 msgid "Invalid answer."
-msgstr "Ungültige Antwort"
+msgstr "Ungültige Antwort."
 
 msgid "Authorization denied message:"
 msgstr "Nachricht für die Ablehnung der Autorisierung:"
 
-#, fuzzy
 msgid "Sorry, you're not my style."
-msgstr "Tut mir Leid, du bist nicht mein Typ..."
+msgstr "Tut mir Leid, du bist nicht mein Typ."
 
 #, c-format
 msgid "%u needs authorization"
 msgstr "%u benötigt Authorisierung"
 
-#, fuzzy
 msgid "Add buddy authorize"
-msgstr "Benutzer zu Ihrer Buddy-Liste hinzufügen?"
+msgstr "Buddy-Autorisierung hinzufügen"
 
 msgid "Enter request here"
 msgstr "Anfrage hier eingeben"
@@ -7311,9 +7301,8 @@
 msgid "Invalid QQ Number"
 msgstr "Ungültige QQ-Nummer"
 
-#, fuzzy
 msgid "Failed sending authorize"
-msgstr "Bitte autorisiere mich!"
+msgstr "Senden der Autorisierung fehlgeschlagen"
 
 #, c-format
 msgid "Failed removing buddy %u"
@@ -7360,24 +7349,20 @@
 msgid "(Invalid UTF-8 string)"
 msgstr "(Ungültige UTF8-Zeichenkette)"
 
-#, fuzzy
 msgid "Not member"
-msgstr "Ich bin kein Mitglied"
+msgstr "Kein Mitglied"
 
 msgid "Member"
 msgstr "Mitglied"
 
-#, fuzzy
 msgid "Requesting"
-msgstr "Anfrage-Dialog"
-
-#, fuzzy
+msgstr "Frage an"
+
 msgid "Admin"
-msgstr "Adium"
-
-#, fuzzy
+msgstr "Admin"
+
 msgid "Notice"
-msgstr "Bemerkung:"
+msgstr "Bemerkung"
 
 msgid "Detail"
 msgstr "Detail"
@@ -7430,9 +7415,8 @@
 "Beachten Sie, dass diese Operation den Qun entfernen könnte, \n"
 "wenn Sie der Ersteller sind."
 
-#, fuzzy
 msgid "Sorry, you are not our style"
-msgstr "Tut mir Leid, du bist nicht mein Typ..."
+msgstr "Tut mir Leid, du bist nicht unser Typ"
 
 msgid "Successfully changed Qun members"
 msgstr "Qun-Mitglieder erfolgreich geändert"
@@ -7507,9 +7491,8 @@
 msgid "Invalid name"
 msgstr "QQ: Ungültiger Name"
 
-#, fuzzy
 msgid "Select icon..."
-msgstr "Ordner auswählen..."
+msgstr "Icon wählen..."
 
 #, fuzzy, c-format
 msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
@@ -7535,9 +7518,9 @@
 msgid "<b>Connection Mode</b>: %s<br>\n"
 msgstr "<b>Verbindungsmodus</b>: %s<br>\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "<b>My Internet IP</b>: %s:%d<br>\n"
-msgstr "<b>Meine Internet-Adresse</b>: %s<br>\n"
+msgstr "<b>Meine Internet-IP</b>: %s:%d<br>\n"
 
 #, c-format
 msgid "<b>Sent</b>: %lu<br>\n"
@@ -7559,9 +7542,9 @@
 msgid "<b>Received Duplicate</b>: %lu<br>\n"
 msgstr "<b>Duplikat empfangen</b>: %lu<br>\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Anmeldezeit</b>: %s<br>\n"
+msgstr "<b>Zeit</b>: %d-%d-%d, %d:%d:%d<br>\n"
 
 #, c-format
 msgid "<b>IP</b>: %s<br>\n"
@@ -7673,49 +7656,45 @@
 msgid "Activation required"
 msgstr "Aktivierung erforderlich"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unknown reply code when logging in (0x%02X)"
-msgstr "Anmeldung nicht möglich, unbekannter Antwort-Code 0x%02X"
+msgstr "Unbekannte Antwort bei der Anmeldung (0x%02X)"
 
 msgid "Could not decrypt server reply"
 msgstr "Konnte die Antwort des Servers nicht entschlüsseln"
 
-#, fuzzy
 msgid "Requesting captcha"
-msgstr "Bitte um %ss Aufmerksamkeit..."
-
-#, fuzzy
+msgstr "Captcha anfordern"
+
 msgid "Checking captcha"
-msgstr "Bitte um %ss Aufmerksamkeit..."
-
-#, fuzzy
+msgstr "Captcha überprüfen"
+
 msgid "Failed captcha verification"
-msgstr "Yahoo-Authentifizierung fehlgeschlagen"
-
-#, fuzzy
+msgstr "Captcha-Überprüfung fehlgeschlagen"
+
 msgid "Captcha Image"
-msgstr "Bild speichern"
-
-#, fuzzy
+msgstr "Captcha-Bild"
+
 msgid "Enter code"
-msgstr "Geben Sie ein Passwort ein"
-
-#, fuzzy
+msgstr "Geben Sie den Code ein"
+
 msgid "QQ Captcha Verification"
-msgstr "SSL-Zertifikatsüberprüfung"
+msgstr "QQ-Captcha-Überprüfung"
 
 msgid "Enter the text from the image"
 msgstr "Bitte geben Sie den Text aus dem Bild ein"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unknown reply when checking password (0x%02X)"
-msgstr "Anmeldung nicht möglich, unbekannter Antwort-Code 0x%02X"
-
-#, fuzzy, c-format
+msgstr "Unbekannte Antwort bei Überprüfungen des Passwortes (0x%02X)"
+
+#, c-format
 msgid ""
 "Unknown reply code when logging in (0x%02X):\n"
 "%s"
-msgstr "Anmeldung nicht möglich, unbekannter Antwort-Code 0x%02X"
+msgstr ""
+"Unbekannte Antwort bei der Anmeldung (0x%02X):\n"
+"%s"
 
 #. we didn't successfully connect. tdt->toc_fd is valid here
 msgid "Unable to connect."
@@ -7773,22 +7752,24 @@
 msgid "From %s:"
 msgstr "Von %s:"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Server notice From %s: \n"
 "%s"
-msgstr "Anleitung vom Server: %s"
+msgstr ""
+"Servernotiz von %s: \n"
+"%s"
 
 msgid "Unknown SERVER CMD"
 msgstr "Unbekanntes SERVER-CMD"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Error reply of %s(0x%02X)\n"
 "Room %u, reply 0x%02X"
 msgstr ""
-"Fehlerantwort %s(0x%02X)\n"
-"Raum %d, Antwort 0x%02X"
+"Fehlerantwort von %s(0x%02X)\n"
+"Raum %u, Antwort 0x%02X"
 
 msgid "QQ Qun Command"
 msgstr "QQ-Qun-Kommando"
--- a/share/ca-certs/Makefile.am	Sat Dec 13 21:13:04 2008 +0000
+++ b/share/ca-certs/Makefile.am	Fri Jan 02 21:47:52 2009 +0000
@@ -3,19 +3,27 @@
 		CAcert_Class3.pem \
 		Equifax_Secure_CA.pem \
 		GTE_CyberTrust_Global_Root.pem \
-		Microsoft_Internet_Authority.pem \
-		Microsoft_Secure_Server_Authority.pem \
 		StartCom_Free_SSL_CA.pem \
 		Verisign_RSA_Secure_Server_CA.pem \
 		Verisign_Class3_Primary_CA.pem \
 		VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
 
-if INSTALL_SSL_CERTIFICATES
+EXTRA_CERTS = \
+		Microsoft_Internet_Authority.pem \
+		Microsoft_Secure_Server_Authority.pem
+
+
 cacertsdir =	$(datadir)/purple/ca-certs
-cacerts_DATA =	$(CERTIFICATES)
+
+if INSTALL_SSL_CERTIFICATES
+cacerts_DATA = \
+	$(CERTIFICATES) \
+	$(EXTRA_CERTS)
+else
+cacerts_DATA = $(EXTRA_CERTS)
 endif
 
 EXTRA_DIST =	\
 		Makefile.mingw \
-		$(CERTIFICATES)
-
+		$(CERTIFICATES) \
+		$(EXTRA_CERTS)
--- a/share/ca-certs/Microsoft_Internet_Authority.pem	Sat Dec 13 21:13:04 2008 +0000
+++ b/share/ca-certs/Microsoft_Internet_Authority.pem	Fri Jan 02 21:47:52 2009 +0000
@@ -1,24 +1,29 @@
------BEGIN CERTIFICATE-----
-MIIECzCCA3SgAwIBAgIEBAAD/jANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
-UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
-cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
-b2JhbCBSb290MB4XDTA2MDQxOTE0MzUwMFoXDTA5MDQxOTIzNTkwMFowJzElMCMG
-A1UEAxMcTWljcm9zb2Z0IEludGVybmV0IEF1dGhvcml0eTCCASIwDQYJKoZIhvcN
-AQEBBQADggEPADCCAQoCggEBALUIbk0YdsTXnGPswqx8d/Ntrsjy8Wau8cKHBGBu
-KZwAZe5qW+QOU4gRxiKbM/trspEu1lObU77PVtiZSqFQMkXOYNLhlq1a/eqh68RJ
-Jxxev9KWmfppQ388ONqhi8wziHoXc66RUCiqabp751dbmwnnTN6GfIR952Zg+ab1
-wmGL3o7B1efCMCI9LIMKsId16yHiXKbTBHuWnkAe4Qx2BMAgoJQQ21EbTBhyvCfd
-EiRdOdYo1OTe2xih4JUPmXf7xPNDjMCrpjEJ8woxgCnH12z7PNPqwrhnFe/6808t
-axy4iNgObXcZS3ERcZBA9RFT1z3onQ2E2plkaBPmZQPiZu0CAwEAAaOCAXAwggFs
-MEUGA1UdHwQ+MDwwOqA4oDaGNGh0dHA6Ly93d3cucHVibGljLXRydXN0LmNvbS9j
-Z2ktYmluL0NSTC8yMDE4L2NkcC5jcmwwHQYDVR0OBBYEFDNf3Q+3nFzO7ofdcHCL
-X33PIry5MFQGA1UdIARNMEswSQYKKoZIhvhjAQIBBTA7MDkGCCsGAQUFBwIBFi1o
-dHRwOi8vd3d3LnB1YmxpYy10cnVzdC5jb20vQ1BTL09tbmlSb290Lmh0bWwwgYkG
-A1UdIwSBgTB/oXmkdzB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBv
-cmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4x
-IzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEdsb2JhbCBSb290ggIBpTAOBgNVHQ8B
-Af8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBAjANBgkqhkiG9w0BAQUFAAOBgQBj
-SQlU7cXbnngZAIOa4zci+1Z2XFTTyOFc/Tfc0qU/xVWPZPBJdx2UVk2yCwmIHFBY
-OJSQC+7Kn7GE5nE3rBAyBrnB0oymBcBeD8tT3B4B31jHfnFgsC9UYin9uJN144+e
-tbzOegUg4qaNApAaWGre3YY7ALn1y/6XgqIEIEZcCQ==
------END CERTIFICATE-----
+-----BEGIN CERTIFICATE-----
+MIIFCjCCBHOgAwIBAgIEBycWdTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQGEwJV
+UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
+cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
+b2JhbCBSb290MB4XDTA4MDIxOTE4MjcwMloXDTExMDIxOTE4MjQ1M1owJzElMCMG
+A1UEAxMcTWljcm9zb2Z0IEludGVybmV0IEF1dGhvcml0eTCCAiIwDQYJKoZIhvcN
+AQEBBQADggIPADCCAgoCggIBAKiloatvDehDG/rQriel2AC9qmSJdvjKb2fmJf30
+K7SaC3zQu8kGQxENUEFsHsH0jmBejJ9vvn9tHZ8hGL+kORvWUVBskdMzP65rC0V0
+VeVgUYzPZ7MvrLfhh9+v3yJ7qRuf1aNgmzJg5t1AA91X+aRrFT4lRzl9BFWhQ1VS
+XaD7l6qoiyhD8FbrdLRAe61swsRmzWeXoy6NJpOBsGXaCSG1Jooylro+zkWxt97c
+NkNf/wYqoYcIXo02YpFbwreveejW9a0Lh/1z9+e9aiMtC5QnPT57GTqNINt5R0rp
+Iz4g3GJhmjXVoVF/tev5DMJuhRgPoz0W0aA3UnSmTWh2RFvgqawLqSRrKUhVjySi
+/m5s62uG5xxIftO7/6ljzS061CFoV/RBl/I3WghYp04sr4cSXWa/rL449YhBT8BJ
+jltefWCYAOcT1nA4oFXwXbl1qCUIkZ0bqwju2FGW5vl2qh6vmzcQjc3XxD0m2UqC
+yJNFa9SUgVXtUCqeOI+KqgLW01tpqZteG10byWKmppTVAvdPwHoGE0bl6wBwXldE
+f7Pn4lqu6Yp4bedP3Qv1sfp2H7D98cxSwYRt3UcXN2kjTPv+pby2fEHm9GWf3iE/
+7OtzUI7LYhP7+rGyuCYTtZKH1jDWHrTZBpnAPmrAQQHCI8/4TjF9ZQ1mqRi6x9I9
+9XGfAgMBAAGjggFvMIIBazASBgNVHRMBAf8ECDAGAQH/AgEBMFMGA1UdIARMMEow
+SAYJKwYBBAGxPgEAMDswOQYIKwYBBQUHAgEWLWh0dHA6Ly9jeWJlcnRydXN0Lm9t
+bmlyb290LmNvbS9yZXBvc2l0b3J5LmNmbTAOBgNVHQ8BAf8EBAMCAYYwgYkGA1Ud
+IwSBgTB/oXmkdzB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0
+aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAh
+BgNVBAMTGkdURSBDeWJlclRydXN0IEdsb2JhbCBSb290ggIBpTBFBgNVHR8EPjA8
+MDqgOKA2hjRodHRwOi8vd3d3LnB1YmxpYy10cnVzdC5jb20vY2dpLWJpbi9DUkwv
+MjAxOC9jZHAuY3JsMB0GA1UdDgQWBBTG27vA2CAZkvFg/IjxWH+8G06PGjANBgkq
+hkiG9w0BAQUFAAOBgQBnSDXCyiqGmHTAEJOtZYVm/IbzGtzCY423NF6/yuccYZkm
+spJnDoh8nq3nx3P2KBEyPAqoQ1MEFC+ByQjV4AAQ9dMQALUGNRfHhFUhBeeIybYd
+bzvKOxSlIYSwO2T56+oXyDlkbQWKmHec5qzCE0lwGHslsRU/CHwhuFu2nH+CxQ==
+-----END CERTIFICATE-----
--- a/share/ca-certs/Microsoft_Secure_Server_Authority.pem	Sat Dec 13 21:13:04 2008 +0000
+++ b/share/ca-certs/Microsoft_Secure_Server_Authority.pem	Fri Jan 02 21:47:52 2009 +0000
@@ -1,30 +1,35 @@
 -----BEGIN CERTIFICATE-----
-MIIFEzCCA/ugAwIBAgIKYQVOAQADAAAAHDANBgkqhkiG9w0BAQUFADAnMSUwIwYD
-VQQDExxNaWNyb3NvZnQgSW50ZXJuZXQgQXV0aG9yaXR5MB4XDTA3MDkyODIyMDYz
-N1oXDTA5MDQxOTIzNTkwMFowgYsxEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJ
+MIIGEzCCA/ugAwIBAgIKYRZtLwAEAAAAIDANBgkqhkiG9w0BAQUFADAnMSUwIwYD
+VQQDExxNaWNyb3NvZnQgSW50ZXJuZXQgQXV0aG9yaXR5MB4XDTA4MDQwOTIxMzc1
+NFoXDTExMDIxOTE4MjQ1M1owgYsxEzARBgoJkiaJk/IsZAEZFgNjb20xGTAXBgoJ
 kiaJk/IsZAEZFgltaWNyb3NvZnQxFDASBgoJkiaJk/IsZAEZFgRjb3JwMRcwFQYK
 CZImiZPyLGQBGRYHcmVkbW9uZDEqMCgGA1UEAxMhTWljcm9zb2Z0IFNlY3VyZSBT
 ZXJ2ZXIgQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-xcCphW3RnMyuq1EAwlSsUghQUuCSQAaeFBTro1qbeCJEALHQGrXg8SMnY9Om64WG
-PnB9HhOb1LTOdkMVx6a3GU0mcv+LkefcW/CewIMfDXPoeGA4ULmY9wbraPwJY8Ba
-H3PAvOVSTJ0k9ZX6tXjE0D/214kn0+ZN+Y+ZwoqFC5/lgQyUxxgfVA0FsR/NDNF6
-keBsoNz2vPghAsruLhkON+5KGQo0o+T+XcJ7xNs7eJR7MWZn2rNCM1J+qrR0o2vG
-vz8QBSKogUXiPRXYVkNSkBEFZqGvEob1pDwC5fJEP71J6xEJHsSe0pcaa637RU04
-4BsjRHqJE3Rrlurb6Fc8vQIDAQABo4IB2jCCAdYwEgYDVR0TAQH/BAgwBgEB/wIB
-ATAdBgNVHQ4EFgQUmY+l9x6Bb/p5wvAWP7JUsQhoR1UwCwYDVR0PBAQDAgGGMBIG
-CSsGAQQBgjcVAQQFAgMEAAQwIwYJKwYBBAGCNxUCBBYEFBOB4Tms57aqAqhuDUms
-pmqjrALsMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFDNf
-3Q+3nFzO7ofdcHCLX33PIry5MIGjBgNVHR8EgZswgZgwgZWggZKggY+GNmh0dHA6
-Ly9tc2NybC5taWNyb3NvZnQuY29tL3BraS9tc2NvcnAvY3JsL21zd3d3KDMpLmNy
+kYTz6fKXvrdfIr5o3Ue4CRIzhTE+8JE4hrLTQki3emjYn/CfHRPb7hmMiOZmWBdE
+DUEymyXOyZ7Sy2tC6WaBC4onVYotPoSsaOZJv6EJeHPk64RiWTfX+XqufRndYOEC
+DUmotYQNPV/8InioIBf9+gOSsAMdmyGZF6C1PkJqvPZTRxNv6hxuMMb6uOQIPoFX
+/ceQvAOZcJx2qGsAVKsJHylYkC0GgVyFVhOI0vcZZBcP5T+NtOmyjVBWdxS413HL
+D+8w+3wG0bOP8EyOeRnuf0KLXGBangte0ZFIRd28GXpo5UrcA/r5000e2RTHmhC4
+8YPMIoi+q9XZoF5R0Z069QIDAQABo4IB2jCCAdYwEgYDVR0TAQH/BAgwBgEB/wIB
+ADAdBgNVHQ4EFgQUFFXEOeA9LtFVLkiWsNh+FCIGk7wwCwYDVR0PBAQDAgGGMBIG
+CSsGAQQBgjcVAQQFAgMFAAUwIwYJKwYBBAGCNxUCBBYEFM7FoL4P/nlmdZEP8PeS
+WzWYqBWzMBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMB8GA1UdIwQYMBaAFMbb
+u8DYIBmS8WD8iPFYf7wbTo8aMIGjBgNVHR8EgZswgZgwgZWggZKggY+GNmh0dHA6
+Ly9tc2NybC5taWNyb3NvZnQuY29tL3BraS9tc2NvcnAvY3JsL21zd3d3KDQpLmNy
 bIY0aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraS9tc2NvcnAvY3JsL21zd3d3
-KDMpLmNybIYfaHR0cDovL2NvcnBwa2kvY3JsL21zd3d3KDMpLmNybDB5BggrBgEF
+KDQpLmNybIYfaHR0cDovL2NvcnBwa2kvY3JsL21zd3d3KDQpLmNybDB5BggrBgEF
 BQcBAQRtMGswPAYIKwYBBQUHMAKGMGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS9w
-a2kvbXNjb3JwL21zd3d3KDMpLmNydDArBggrBgEFBQcwAoYfaHR0cDovL2NvcnBw
-a2kvYWlhL21zd3d3KDMpLmNydDANBgkqhkiG9w0BAQUFAAOCAQEARSzU1qmSJczv
-IiFrscxgYtzXekBWgm2rYVIqN996H5ZfMDaso0tZXmhWo0zX0z0r0H+IIGtJ+4D9
-t6dMTpB26jV/5EtMbtQu48ryCkMHBKNtCn7pQ5Mq2gqjq84KrVUlBFfPT4z4+Hqp
-Q6gVghMggWNtiujdHh7w4ja3OqHkFZTX/wUSTb+BtH+GBZKYAGU6duakb3D0piFu
-W5W6gZ4j15R12ys3ZYTKThZjW5blolA0lzuCSghoSfJHRA4jChIzDNojkf7OxqJw
-yFl8+++iZwTiulCTgOucJxGCT1tEEwdfX2c+XKyJIS/d5Ndtk91WEWU+TzqX9ZT4
-SAMJpIZ1pg==
+a2kvbXNjb3JwL21zd3d3KDQpLmNydDArBggrBgEFBQcwAoYfaHR0cDovL2NvcnBw
+a2kvYWlhL21zd3d3KDQpLmNydDANBgkqhkiG9w0BAQUFAAOCAgEAempuzk/VLM4N
+H9TAbFtCjKc95iGmyx2bHbEk9m2cbGxXjBre+N4cJoIYYmhLrZ6L712ov1NjM73b
+m8fb2Fy8Yw8Cmwc8VtarPZT2yzGr8MhNUDVuZswaKfjCY3H7RYv/XKc7AOMd25WP
+/M0WTT4Bna6hl9dUaDGwv5SZFFIJ17FLo4FR2H7IkOOI/WcUPAHeDXUewp4qRPE/
+560xZrLSeNH2lKnOAwwXxwnXSo5WOF5AQXh1nRdbBV9Nu7yI6jH1QV6fKf6oFU2Y
+IOjpnJ0FihVB6XoZ0wNOUMzPEEQcTfIoVoc+t0iK02wcmTLgBgbYU703dHvvPTcn
+IfdI2mscx8l9MjUOdklIIve0FhCxRPqHpEeKjM95gllbXmWgQxAXiog+A62fEo5d
+M7nfeEyiweSlhj1cv+2dyhzyS5saKYkk3ocCnOMCyD0M+4gJx4n4b/zT3rcujyN+
+7m20PbBTjcdTT1+AxOs75rON2hhKUqqrk2MDCpnEJsNK4TuRyDUtm9r+AxaZ4XRK
+MT8InY1Xl9hzrIK6MVERYH46kxg6odwpzJ8Urn4dREBiMy6Gzq8mtyXvpYEcmeGL
+zz1aT7qNNbQ0qqbPb6RpOMHlUWOIhVWJC71T5WK1pynAc3P9zOm8BkUYvIyJvCbR
+bufCGVng4FAtVZ1advxSVRoa4GyuFZ8=
 -----END CERTIFICATE-----