changeset 29055:cfca0217d162

merge of '263b34adf7373694b48a494714d66824d6bb3443' and 'd6f80b7ba5ba2da4ae203eac6f07565721b10ad8'
author Paul Aurich <paul@darkrain42.org>
date Sun, 29 Nov 2009 17:32:05 +0000
parents 61cd675b73df (current diff) 54db9b78be71 (diff)
children 52dc24a5069f
files libpurple/protocols/jabber/presence.c
diffstat 23 files changed, 1037 insertions(+), 927 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Nov 28 05:51:05 2009 +0000
+++ b/ChangeLog	Sun Nov 29 17:32:05 2009 +0000
@@ -4,6 +4,9 @@
 version 2.6.4 (??/??/20??):
 	libpurple:
 	* Actually emit the hold signal for media calls.
+	* Don't send Proxy-Authorization headers to HTTP proxy servers until we've
+	  received a "407 Proxy Authentication Required" response from the server.
+	  (thecrux)
 	* Added "MXit" protocol plugin, supported and maintained by the MXit folks
 	  themselves (MXit Lifestyle (Pty) Ltd.)
 
@@ -20,6 +23,7 @@
 	* The simultaneous login account option is respected when using
 	  the clientLogin authentication method.
 	* Fix offline message retrieval (broken in 2.6.3)
+	* Fix handling of markup on some messages (broken in 2.6.2)
 	* Fix SSL when clientLogin is enabled.
 	* Fix sending and receiving Unicode characters in a Direct IM
 
@@ -32,6 +36,9 @@
 	* Fix a random crash that might occur when idle.
 	* Fix a crash when logging in with some long non-ASCII passwords.
 	  (Shaun Lindsay)
+	* Cache our own friendly name as the server no longer does that for
+	  us.  Users of older versions may need to re-set their friendly name
+	  as it has probably been reset.
 
 	XMPP:
 	* Users connecting to Google Talk now have an "Initiate Chat" context menu
@@ -67,6 +74,9 @@
 	* Add a hold button to the media window.
 	* Fix a bug where the conversation backlog stops scrolling in a very busy
 	  chat room.
+	* In the Conversation "Send To" menu, offline buddies appear grayed
+	  out (but are still selectable).  Previously, only offline buddies on
+	  accounts that do not support offline messaging appeared grayed out.
 
 	Pidgin Preference and Preference Window Changes:
 	* Removed the "Use font from theme" and "Conversation Font" preferences
--- a/libpurple/dbus-server.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/dbus-server.c	Sun Nov 29 17:32:05 2009 +0000
@@ -25,16 +25,16 @@
 #define DBUS_API_SUBJECT_TO_CHANGE
 #endif
 
+/* Allow the code below to see deprecated functions, so we can continue to
+ * export them via DBus. */
+#undef PURPLE_DISABLE_DEPRECATED
+
 #include "internal.h"
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 
-/* Allow the code below to see deprecated functions, so we can continue to
- * export them via DBus. */
-#undef PURPLE_DISABLE_DEPRECATED
-
 #include "account.h"
 #include "blist.h"
 #include "conversation.h"
--- a/libpurple/protocols/jabber/bosh.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/jabber/bosh.c	Sun Nov 29 17:32:05 2009 +0000
@@ -369,8 +369,8 @@
 	                "sid='%s' "
 	                "to='%s' "
 	                "xml:lang='en' "
-	                "xmlns='http://jabber.org/protocol/httpbind' "
-	                "xmlns:xmpp='urn:xmpp:xbosh'",
+	                "xmlns='" NS_BOSH "' "
+	                "xmlns:xmpp='" NS_XMPP_BOSH "'",
 	                ++conn->rid,
 	                conn->sid,
 	                conn->js->user->domain);
@@ -567,13 +567,13 @@
 	                "xml:lang='en' "
 	                "xmpp:version='1.0' "
 	                "ver='1.6' "
-	                "xmlns:xmpp='urn:xmpp:bosh' "
+	                "xmlns:xmpp='" NS_XMPP_BOSH "' "
 	                "rid='%" G_GUINT64_FORMAT "' "
 /* TODO: This should be adjusted/adjustable automatically according to
  * realtime network behavior */
 	                "wait='60' "
 	                "hold='1' "
-	                "xmlns='http://jabber.org/protocol/httpbind'/>",
+	                "xmlns='" NS_BOSH "'/>",
 	                conn->js->user->domain,
 	                ++conn->rid);
 
--- a/libpurple/protocols/jabber/message.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/jabber/message.c	Sun Nov 29 17:32:05 2009 +0000
@@ -742,13 +742,13 @@
 				jm->eventitems = g_list_append(jm->eventitems, items);
 		} else if(!strcmp(child->name, "attention") && !strcmp(xmlns, NS_ATTENTION)) {
 			jm->hasBuzz = TRUE;
-		} else if(!strcmp(child->name, "delay") && !strcmp(xmlns,"urn:xmpp:delay")) {
+		} else if(!strcmp(child->name, "delay") && !strcmp(xmlns, NS_DELAYED_DELIVERY)) {
 			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(!strcmp(xmlns, "jabber:x:delay")) {
+			if(!strcmp(xmlns, NS_DELAYED_DELIVERY_LEGACY)) {
 				const char *timestamp = xmlnode_get_attrib(child, "stamp");
 				jm->delayed = TRUE;
 				if(timestamp)
--- a/libpurple/protocols/jabber/namespaces.h	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/jabber/namespaces.h	Sun Nov 29 17:32:05 2009 +0000
@@ -60,6 +60,9 @@
 #define NS_AVATAR_1_1_DATA      "urn:xmpp:avatar:data"
 #define NS_AVATAR_1_1_METADATA  "urn:xmpp:avatar:metadata"
 
+/* XEP-0124 Bidirectional-streams Over Synchronous HTTP (BOSH) */
+#define NS_BOSH "http://jabber.org/protocol/httpbind"
+
 /* XEP-0191 Simple Communications Blocking */
 #define NS_SIMPLE_BLOCKING "urn:xmpp:blocking"
 
@@ -69,6 +72,13 @@
 /* XEP-0202 Entity Time */
 #define NS_ENTITY_TIME "urn:xmpp:time"
 
+/* XEP-0203 Delayed Delivery (and legacy delayed delivery) */
+#define NS_DELAYED_DELIVERY "urn:xmpp:delay"
+#define NS_DELAYED_DELIVERY_LEGACY "jabber:x:delay"
+
+/* XEP-0206 XMPP over BOSH */
+#define NS_XMPP_BOSH "urn:xmpp:xbosh"
+
 /* XEP-0224 Attention */
 #define NS_ATTENTION "urn:xmpp:attention:0"
 
--- a/libpurple/protocols/jabber/presence.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/jabber/presence.c	Sun Nov 29 17:32:05 2009 +0000
@@ -633,7 +633,7 @@
 		} 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")) {
+		} else if(!strcmp(y->name, "delay") && !strcmp(xmlns, NS_DELAYED_DELIVERY)) {
 			/* XXX: compare the time.  jabber:x:delay can happen on presence packets that aren't really and truly delayed */
 			delayed = TRUE;
 			stamp = xmlnode_get_attrib(y, "stamp");
@@ -642,7 +642,7 @@
 		} else if (g_str_equal(y->name, "nick") && g_str_equal(xmlns, "http://jabber.org/protocol/nick")) {
 			nickname = xmlnode_get_data(y);
 		} else if(!strcmp(y->name, "x")) {
-			if(!strcmp(xmlns, "jabber:x:delay")) {
+			if(!strcmp(xmlns, NS_DELAYED_DELIVERY_LEGACY)) {
 				/* XXX: compare the time.  jabber:x:delay can happen on presence packets that aren't really and truly delayed */
 				delayed = TRUE;
 				stamp = xmlnode_get_attrib(y, "stamp");
--- a/libpurple/protocols/msn/contact.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/msn/contact.c	Sun Nov 29 17:32:05 2009 +0000
@@ -702,12 +702,15 @@
 		type = xmlnode_get_data(contactType);
 
 		/*setup the Display Name*/
-		if (type && !strcmp(type, "Me")){
-			char *friendly = NULL;
-			if ((displayName = xmlnode_get_child(contactInfo, "displayName")))
-				friendly = xmlnode_get_data(displayName);
-			purple_connection_set_display_name(session->account->gc, friendly ? purple_url_decode(friendly) : NULL);
-			g_free(friendly);
+		if (type && !strcmp(type, "Me")) {
+			if (purple_connection_get_display_name(pc) == NULL) {
+				char *friendly = NULL;
+				if ((displayName = xmlnode_get_child(contactInfo, "displayName")))
+					friendly = xmlnode_get_data(displayName);
+				purple_connection_set_display_name(pc,
+					friendly ? purple_url_decode(friendly) : NULL);
+				g_free(friendly);
+			}
 			continue; /* Not adding own account as buddy to buddylist */
 		}
 
--- a/libpurple/protocols/msn/msn.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/msn/msn.c	Sun Nov 29 17:32:05 2009 +0000
@@ -1062,6 +1062,9 @@
 	if (strcmp(username, purple_account_get_username(account)))
 		purple_account_set_username(account, username);
 
+	username = purple_account_get_string(account, "display-name", NULL);
+	purple_connection_set_display_name(gc, username);
+
 	if (!msn_session_connect(session, host, port, http_method))
 		purple_connection_error_reason(gc,
 			PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
--- a/libpurple/protocols/msn/notification.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/msn/notification.c	Sun Nov 29 17:32:05 2009 +0000
@@ -1408,6 +1408,7 @@
 				purple_connection_set_display_name(
 					purple_account_get_connection(session->account),
 					friendlyname);
+				purple_account_set_string(session->account, "display-name", friendlyname);
 			}
 		}
 	}
--- a/libpurple/protocols/mxit/chunk.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/mxit/chunk.c	Sun Nov 29 17:32:05 2009 +0000
@@ -576,18 +576,17 @@
 
 	/* parse the resource chunks */
 	while ( chunklen > 0 ) {
-		struct raw_chunk* chunkhdr = ( struct raw_chunk * ) &chunkdata[pos];
-		chunkhdr->length = ntohl( chunkhdr->length );		/* host byte-order */
+		gchar* chunk = &chunkdata[pos];
 
 		/* start of chunk data */
-		pos += sizeof( struct raw_chunk );
+		pos += MXIT_CHUNK_HEADER_SIZE;
 
-		switch ( chunkhdr->type ) {
+		switch ( chunk_type( chunk ) ) {
 			case CP_CHUNK_SPLASH :			/* splash image */
 				{
 					struct splash_chunk* splash = g_new0( struct splash_chunk, 1 );
 
-					mxit_chunk_parse_splash( &chunkdata[pos], chunkhdr->length, splash );
+					mxit_chunk_parse_splash( &chunkdata[pos], chunk_length( chunk ), splash );
 
 					cr->resources = g_list_append( cr->resources, splash );
 					break;
@@ -600,12 +599,12 @@
 					break;
 				}
 			default:
-				purple_debug_info( MXIT_PLUGIN_ID, "Unsupported custom resource chunk received (%i)\n", chunkhdr->type );
+				purple_debug_info( MXIT_PLUGIN_ID, "Unsupported custom resource chunk received (%i)\n", chunk_type( chunk) );
 		}
 
 		/* skip over data to next resource chunk */
-		pos += chunkhdr->length;
-		chunklen -= ( sizeof( struct raw_chunk ) + chunkhdr->length );
+		pos += chunk_length( chunk );
+		chunklen -= ( MXIT_CHUNK_HEADER_SIZE + chunk_length( chunk ) );
 	}
 }
 
--- a/libpurple/protocols/mxit/chunk.h	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/mxit/chunk.h	Sun Nov 29 17:32:05 2009 +0000
@@ -31,6 +31,8 @@
 
 
 #define		MXIT_CHUNK_FILEID_LEN		8			/* bytes */
+#define		MXIT_CHUNK_HEADER_SIZE		5			/* type (1 byte) + length (4 bytes) */
+
 
 /* Multimedia chunk types */
 #define		CP_CHUNK_NONE				0x00		/* (0) no chunk */
@@ -68,13 +70,35 @@
 #define		REJECT_BAD_RECIPIENT		4
 
 /*
- * a Chunk header
+ * Chunk header manipulation functions
  */
-struct raw_chunk {
-	guint8		type;
-	guint32		length;
-	gchar		data[0];
-} __attribute__ ((packed));
+static inline guint chunk_type( gchar* chunkheader )
+{
+	return *chunkheader;
+}
+
+static inline void set_chunk_type( gchar* chunkheader, guint type )
+{
+	*chunkheader = type;
+}
+
+static inline guint32 chunk_length( gchar* chunkheader )
+{
+	guint32 length = *( (const guint32*) &chunkheader[1] );
+	return htonl( length );
+}
+
+static inline void set_chunk_length( gchar* chunkheader, guint32 size )
+{
+	size = htonl( size );
+	memcpy( &chunkheader[1], &size, sizeof( guint32 ) );
+}
+
+static inline gchar* chunk_data( gchar* chunkheader )
+{
+	return &chunkheader[MXIT_CHUNK_HEADER_SIZE];
+}
+
 
 struct offerfile_chunk {
 	char	fileid[MXIT_CHUNK_FILEID_LEN];
--- a/libpurple/protocols/mxit/formcmds.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/mxit/formcmds.c	Sun Nov 29 17:32:05 2009 +0000
@@ -239,12 +239,10 @@
 	replymsg = g_hash_table_lookup(hash, "replymsg");		/* find the reply message */
 	if ((selmsg) && (replymsg)) {
 		gchar*	seltext = g_markup_escape_text(purple_url_decode(selmsg), -1);
-		gchar*	replytext = g_markup_escape_text(purple_url_decode(replymsg), -1);
 
-		mxit_add_html_link( mx, replytext, seltext );
+		mxit_add_html_link( mx, purple_url_decode(replymsg), seltext );
 
 		g_free(seltext);
-		g_free(replytext);
 	}
 }
 
@@ -345,7 +343,6 @@
  *  @param message			The message text
  *  @return					The length of the command
  */
-//void mxit_command_received(struct MXitSession* session, const char* from, char* message, time_t timestamp)
 int mxit_parse_command(struct RXMsgData* mx, char* message)
 {
 	GHashTable* hash	= NULL;
--- a/libpurple/protocols/mxit/markup.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/mxit/markup.c	Sun Nov 29 17:32:05 2009 +0000
@@ -416,7 +416,6 @@
 	}
 	else if ( mx->chatid < 0 ) {
 		/* normal chat message */
-		//serv_got_im( mx->session->con, mx->from, mx->msg->str, mx->flags, mx->timestamp );
 		mxit_show_split_message( mx );
 	}
 	else {
--- a/libpurple/protocols/mxit/mxit.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/mxit/mxit.c	Sun Nov 29 17:32:05 2009 +0000
@@ -689,9 +689,6 @@
 
 	option = purple_account_option_bool_new( _( "Enable splash-screen popup" ), MXIT_CONFIG_SPLASHPOPUP, FALSE );
 	proto_info.protocol_options = g_list_append( proto_info.protocol_options, option );
-
-	if ( sizeof( struct raw_chunk ) != 5 )
-		g_log(G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, "sizeof(struct raw_chunk) != 5!  MXit probably won't work!\n");
 }
 
 PURPLE_INIT_PLUGIN( mxit, init_plugin, plugin_info );
--- a/libpurple/protocols/mxit/mxit.h	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/mxit/mxit.h	Sun Nov 29 17:32:05 2009 +0000
@@ -61,7 +61,7 @@
 /* Plugin details */
 #define		MXIT_PLUGIN_ID				"prpl-loubserp-mxit"
 #define		MXIT_PLUGIN_NAME			"MXit"
-#define		MXIT_PLUGIN_VERSION			"2.2.0"
+#define		MXIT_PLUGIN_VERSION			"2.3.0"
 #define		MXIT_PLUGIN_EMAIL			"Pieter Loubser <libpurple@mxit.com>"
 #define		MXIT_PLUGIN_WWW				"http://www.mxit.com"
 #define		MXIT_PLUGIN_SUMMARY			"MXit Protocol Plugin"
--- a/libpurple/protocols/mxit/protocol.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/mxit/protocol.c	Sun Nov 29 17:32:05 2009 +0000
@@ -1035,7 +1035,7 @@
 {
 	char				data[CP_MAX_PACKET];
 	int					datalen		= 0;
-	struct raw_chunk*	chunk;
+	gchar*				chunk;
 	int					size;
 
 	purple_debug_info( MXIT_PLUGIN_ID, "SENDING FILE '%s' of %i bytes to user '%s'\n", filename, buflen, username );
@@ -1044,17 +1044,17 @@
 	datalen = sprintf( data, "ms=" );
 
 	/* map chunk header over data buffer */
-	chunk = (struct raw_chunk *) &data[datalen];
-
-	size = mxit_chunk_create_senddirect( chunk->data, username, filename, buf, buflen );
+	chunk = &data[datalen];
+
+	size = mxit_chunk_create_senddirect( chunk_data( chunk ), username, filename, buf, buflen );
 	if ( size < 0 ) {
 		purple_debug_error( MXIT_PLUGIN_ID, "Error creating senddirect chunk (%i)\n", size );
 		return;
 	}
 
-	chunk->type = CP_CHUNK_DIRECT_SND;
-	chunk->length = htonl( size );
-	datalen += sizeof( struct raw_chunk ) + size;
+	set_chunk_type( chunk, CP_CHUNK_DIRECT_SND );
+	set_chunk_length( chunk, size );
+	datalen += MXIT_CHUNK_HEADER_SIZE + size;
 
 	/* send the byte stream to the mxit server */
 	mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA );
@@ -1071,7 +1071,7 @@
 {
 	char				data[CP_MAX_PACKET];
 	int					datalen		= 0;
-	struct raw_chunk*	chunk;
+	gchar*				chunk;
 	int					size;
 
 	purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_file_reject\n" );
@@ -1080,17 +1080,17 @@
 	datalen = sprintf( data, "ms=" );
 
 	/* map chunk header over data buffer */
-	chunk = (struct raw_chunk *) &data[datalen];
-
-	size = mxit_chunk_create_reject( chunk->data, fileid );
+	chunk = &data[datalen];
+
+	size = mxit_chunk_create_reject( chunk_data( chunk ), fileid );
 	if ( size < 0 ) {
 		purple_debug_error( MXIT_PLUGIN_ID, "Error creating reject chunk (%i)\n", size );
 		return;
 	}
 
-	chunk->type = CP_CHUNK_REJECT;
-	chunk->length = htonl( size );
-	datalen += sizeof( struct raw_chunk ) + size;
+	set_chunk_type( chunk, CP_CHUNK_REJECT );
+	set_chunk_length( chunk, size );
+	datalen += MXIT_CHUNK_HEADER_SIZE + size;
 
 	/* send the byte stream to the mxit server */
 	mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA );
@@ -1109,7 +1109,7 @@
 {
 	char				data[CP_MAX_PACKET];
 	int					datalen		= 0;
-	struct raw_chunk*	chunk;
+	gchar*				chunk;
 	int					size;
 
 	purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_file_accept\n" );
@@ -1118,17 +1118,17 @@
 	datalen = sprintf( data, "ms=" );
 
 	/* map chunk header over data buffer */
-	chunk = (struct raw_chunk *) &data[datalen];
-
-	size = mxit_chunk_create_get( chunk->data, fileid, filesize, offset );
+	chunk = &data[datalen];
+
+	size = mxit_chunk_create_get( chunk_data(chunk), fileid, filesize, offset );
 	if ( size < 0 ) {
 		purple_debug_error( MXIT_PLUGIN_ID, "Error creating getfile chunk (%i)\n", size );
 		return;
 	}
 
-	chunk->type = CP_CHUNK_GET;
-	chunk->length = htonl( size );
-	datalen += sizeof( struct raw_chunk ) + size;
+	set_chunk_type( chunk, CP_CHUNK_GET );
+	set_chunk_length( chunk, size );
+	datalen += MXIT_CHUNK_HEADER_SIZE + size;
 
 	/* send the byte stream to the mxit server */
 	mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA );
@@ -1145,7 +1145,7 @@
 {
 	char				data[CP_MAX_PACKET];
 	int					datalen		= 0;
-	struct raw_chunk*	chunk;
+	gchar*				chunk;
 	int					size;
 
 	purple_debug_info( MXIT_PLUGIN_ID, "mxit_send_file_received\n" );
@@ -1154,17 +1154,17 @@
 	datalen = sprintf( data, "ms=" );
 
 	/* map chunk header over data buffer */
-	chunk = (struct raw_chunk *) &data[datalen];
-
-	size = mxit_chunk_create_received( chunk->data, fileid, status );
+	chunk = &data[datalen];
+
+	size = mxit_chunk_create_received( chunk_data(chunk), fileid, status );
 	if ( size < 0 ) {
 		purple_debug_error( MXIT_PLUGIN_ID, "Error creating received chunk (%i)\n", size );
 		return;
 	}
 
-	chunk->type = CP_CHUNK_RECIEVED;
-	chunk->length = htonl( size );
-	datalen += sizeof( struct raw_chunk ) + size;
+	set_chunk_type( chunk, CP_CHUNK_RECIEVED );
+	set_chunk_length( chunk, size );
+	datalen += MXIT_CHUNK_HEADER_SIZE + size;
 
 	/* send the byte stream to the mxit server */
 	mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA );
@@ -1182,7 +1182,7 @@
 {
 	char				data[CP_MAX_PACKET];
 	int					datalen		= 0;
-	struct raw_chunk*	chunk;
+	gchar*				chunk;
 	int					size;
 
 	purple_debug_info( MXIT_PLUGIN_ID, "mxit_set_avatar: %i bytes\n", avatarlen );
@@ -1191,17 +1191,17 @@
 	datalen = sprintf( data, "ms=" );
 
 	/* map chunk header over data buffer */
-	chunk = (struct raw_chunk *) &data[datalen];
-
-	size = mxit_chunk_create_set_avatar( chunk->data, avatar, avatarlen );
+	chunk = &data[datalen];
+
+	size = mxit_chunk_create_set_avatar( chunk_data(chunk), avatar, avatarlen );
 	if ( size < 0 ) {
 		purple_debug_error( MXIT_PLUGIN_ID, "Error creating set avatar chunk (%i)\n", size );
 		return;
 	}
 
-	chunk->type = CP_CHUNK_SET_AVATAR;
-	chunk->length = htonl( size );
-	datalen += sizeof( struct raw_chunk ) + size;
+	set_chunk_type( chunk, CP_CHUNK_SET_AVATAR );
+	set_chunk_length( chunk, size );
+	datalen += MXIT_CHUNK_HEADER_SIZE + size;
 
 	/* send the byte stream to the mxit server */
 	mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA );
@@ -1221,7 +1221,7 @@
 {
 	char				data[CP_MAX_PACKET];
 	int					datalen		= 0;
-	struct raw_chunk*	chunk;
+	gchar*				chunk;
 	int					size;
 
 	purple_debug_info( MXIT_PLUGIN_ID, "mxit_get_avatar: %s\n", mxitId );
@@ -1230,17 +1230,17 @@
 	datalen = sprintf( data, "ms=" );
 
 	/* map chunk header over data buffer */
-	chunk = (struct raw_chunk *) &data[datalen];
-
-	size = mxit_chunk_create_get_avatar( chunk->data, mxitId, avatarId, MXIT_AVATAR_SIZE );
+	chunk = &data[datalen];
+
+	size = mxit_chunk_create_get_avatar( chunk_data(chunk), mxitId, avatarId, MXIT_AVATAR_SIZE );
 	if ( size < 0 ) {
 		purple_debug_error( MXIT_PLUGIN_ID, "Error creating get avatar chunk (%i)\n", size );
 		return;
 	}
 
-	chunk->type = CP_CHUNK_GET_AVATAR;
-	chunk->length = htonl( size );
-	datalen += sizeof( struct raw_chunk ) + size;
+	set_chunk_type( chunk, CP_CHUNK_GET_AVATAR );
+	set_chunk_length( chunk, size );
+	datalen += MXIT_CHUNK_HEADER_SIZE + size;
 
 	/* send the byte stream to the mxit server */
 	mxit_queue_packet( session, data, datalen, CP_CMD_MEDIA );
--- a/libpurple/protocols/mxit/roster.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/mxit/roster.c	Sun Nov 29 17:32:05 2009 +0000
@@ -53,11 +53,11 @@
 	const char*				name;
 } const mxit_statuses[] = {
 		/*	primative,						no,							id,			name					*/
-		{	PURPLE_STATUS_OFFLINE,			MXIT_PRESENCE_OFFLINE,		"offline",	NULL				},	/* 0 */
-		{	PURPLE_STATUS_AVAILABLE,		MXIT_PRESENCE_ONLINE,		"online",	NULL				},	/* 1 */
-		{	PURPLE_STATUS_AWAY,				MXIT_PRESENCE_AWAY,			"away",		NULL				},	/* 2 */
-		{	PURPLE_STATUS_AVAILABLE,		MXIT_PRESENCE_AVAILABLE,	"chat",		N_( "Chatty" )		},	/* 3 */
-		{	PURPLE_STATUS_UNAVAILABLE,		MXIT_PRESENCE_DND,			"dnd",		NULL				}	/* 4 */
+		{	PURPLE_STATUS_OFFLINE,			MXIT_PRESENCE_OFFLINE,		"offline",	N_( "Offline" )			},	/* 0 */
+		{	PURPLE_STATUS_AVAILABLE,		MXIT_PRESENCE_ONLINE,		"online",	N_( "Available" )		},	/* 1 */
+		{	PURPLE_STATUS_AWAY,				MXIT_PRESENCE_AWAY,			"away",		N_( "Away" )			},	/* 2 */
+		{	PURPLE_STATUS_AVAILABLE,		MXIT_PRESENCE_AVAILABLE,	"chat",		N_( "Chatty" )			},	/* 3 */
+		{	PURPLE_STATUS_UNAVAILABLE,		MXIT_PRESENCE_DND,			"dnd",		N_( "Do Not Disturb" )	}	/* 4 */
 };
 
 
@@ -398,7 +398,7 @@
 		contact->statusMsg = NULL;
 	}
 	if ( statusMsg[0] != '\0' )
-		contact->statusMsg = g_strdup( statusMsg );	
+		contact->statusMsg = g_markup_escape_text( statusMsg, -1 );
 
 	/* update avatarId */
 	if ( ( contact->avatarId ) && ( g_ascii_strcasecmp( contact->avatarId, avatarId ) == 0 ) ) {
--- a/libpurple/protocols/mxit/splashscreen.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/mxit/splashscreen.c	Sun Nov 29 17:32:05 2009 +0000
@@ -43,10 +43,10 @@
 {
 	const char* splashId = purple_account_get_string(session->acc, MXIT_CONFIG_SPLASHID, NULL);
 
-	purple_debug_info(MXIT_PLUGIN_ID, "Current splashId: '%s'\n", splashId);
-
-	if ((splashId != NULL) && (*splashId != '\0'))
+	if ((splashId != NULL) && (*splashId != '\0')) {
+		purple_debug_info(MXIT_PLUGIN_ID, "Current splashId: '%s'\n", splashId);
 		return splashId;
+	}
 	else
 		return NULL;
 }
@@ -149,7 +149,7 @@
 
 	/* Get current splash ID */
 	splashId = splash_current(session);
-	if (!splashId)
+	if (splashId == NULL)		/* no splash-screen */
 		return;
 
 	/* if is clickable, then send click event */
--- a/libpurple/protocols/oscar/oscar.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Sun Nov 29 17:32:05 2009 +0000
@@ -2461,42 +2461,81 @@
 	 */
 	if (purple_markup_find_tag("body", tmp, &start, &end, &attribs))
 	{
+		int len;
+		char *tmp2, *body;
 		const char *ichattextcolor, *ichatballooncolor;
-		const char *start2, *end2;
+		const char *slash_body_start, *slash_body_end = NULL; /* </body> */
 		GData *unused;
 
 		/*
 		 * Find the ending </body> so we can strip off the outer <html/>
 		 * and <body/>
 		 */
-		if (purple_markup_find_tag("/body", end + 1, &start2, &end2, &unused))
+		if (purple_markup_find_tag("/body", end + 1, &slash_body_start, &slash_body_end, &unused))
 		{
-			gchar *tmp2;
-			tmp2 = g_strndup(end + 1, (start2 - 1) - (end + 1) + 1);
-			g_free(tmp);
-			tmp = tmp2;
+			body = g_strndup(start, slash_body_end - start + 1);
 			g_datalist_clear(&unused);
 		}
+		else
+		{
+			purple_debug_warning("oscar", "Broken message contains <body> but not </body>!\n");
+			/* Take everything after <body> */
+			body = g_strdup(start);
+		}
 
 		ichattextcolor = g_datalist_get_data(&attribs, "ichattextcolor");
 		if (ichattextcolor != NULL)
 		{
-			gchar *tmp2;
-			tmp2 = g_strdup_printf("<font color=\"%s\">%s</font>", ichattextcolor, tmp);
-			g_free(tmp);
-			tmp = tmp2;
+			tmp2 = g_strdup_printf("<font color=\"%s\">%s</font>", ichattextcolor, body);
+			g_free(body);
+			body = tmp2;
 		}
 
 		ichatballooncolor = g_datalist_get_data(&attribs, "ichatballooncolor");
 		if (ichatballooncolor != NULL)
 		{
-			gchar *tmp2;
-			tmp2 = g_strdup_printf("<font back=\"%s\">%s</font>", ichatballooncolor, tmp);
-			g_free(tmp);
-			tmp = tmp2;
+			tmp2 = g_strdup_printf("<font back=\"%s\">%s</font>", ichatballooncolor, body);
+			g_free(body);
+			body = tmp2;
 		}
 
 		g_datalist_clear(&attribs);
+
+		len = start - tmp;
+		tmp2 = g_strdup_printf("%.*s%s%s", len, tmp, body, slash_body_end ? slash_body_end + 1: "</body>");
+		g_free(tmp);
+		g_free(body);
+
+		tmp = tmp2;
+	}
+
+	/*
+	 * Are there <html/> surrounding tags? If so, strip them out, too.
+	 */
+	if (purple_markup_find_tag("html", tmp, &start, &end, &attribs))
+	{
+		gchar *tmp2;
+		int len;
+
+		g_datalist_clear(&attribs);
+
+		len = start - tmp;
+		tmp2 = g_strdup_printf("%.*s%s", len, tmp, end + 1);
+		g_free(tmp);
+		tmp = tmp2;
+	}
+
+	if (purple_markup_find_tag("/html", tmp, &start, &end, &attribs))
+	{
+		gchar *tmp2;
+		int len;
+
+		g_datalist_clear(&attribs);
+
+		len = start - tmp;
+		tmp2 = g_strdup_printf("%.*s%s", len, tmp, end + 1);
+		g_free(tmp);
+		tmp = tmp2;
 	}
 
 	serv_got_im(gc, userinfo->bn, tmp, flags,
@@ -5258,7 +5297,7 @@
 	{ /* If not in server list then prune from local list */
 		GSList *cur, *next;
 		GSList *buddies = purple_find_buddies(account, NULL);
-
+		
 		/* Buddies */
 		cur = NULL;
 
@@ -5348,28 +5387,45 @@
 
 	/* Add from server list to local list */
 	for (curitem=od->ssi.local; curitem; curitem=curitem->next) {
+	  if ((curitem->name == NULL) || (g_utf8_validate(curitem->name, -1, NULL)))
 		switch (curitem->type) {
 			case AIM_SSI_TYPE_BUDDY: { /* Buddy */
 				if (curitem->name) {
 					struct aim_ssi_item *groupitem;
-					const char *gname, *alias;
+					char *gname, *gname_utf8, *alias, *alias_utf8;
 
 					groupitem = aim_ssi_itemlist_find(od->ssi.local, curitem->gid, 0x0000);
 					gname = groupitem ? groupitem->name : NULL;
-
-					g = purple_find_group(gname ? gname : _("Orphans"));
+					if (gname != NULL) {
+						if (g_utf8_validate(gname, -1, NULL))
+							gname_utf8 = g_strdup(gname);
+						else
+							gname_utf8 = oscar_utf8_try_convert(account, gname);
+					} else
+						gname_utf8 = NULL;
+
+					g = purple_find_group(gname_utf8 ? gname_utf8 : _("Orphans"));
 					if (g == NULL) {
-						g = purple_group_new(gname ? gname : _("Orphans"));
+						g = purple_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
 						purple_blist_add_group(g, NULL);
 					}
 
 					alias = aim_ssi_getalias(od->ssi.local, gname, curitem->name);
+					if (alias != NULL) {
+						if (g_utf8_validate(alias, -1, NULL))
+							alias_utf8 = g_strdup(alias);
+						else
+							alias_utf8 = oscar_utf8_try_convert(account, alias);
+						g_free(alias);
+					} else
+						alias_utf8 = NULL;
+
 					b = purple_find_buddy_in_group(account, curitem->name, g);
 					if (b) {
 						/* Get server stored alias */
-						purple_blist_alias_buddy(b, alias);
+						purple_blist_alias_buddy(b, alias_utf8);
 					} else {
-						b = purple_buddy_new(account, curitem->name, alias);
+						b = purple_buddy_new(account, curitem->name, alias_utf8);
 
 						purple_debug_info("oscar",
 								   "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname);
@@ -5393,15 +5449,30 @@
 								purple_buddy_get_name(b),
 								OSCAR_STATUS_ID_MOBILE, NULL);
 					}
+
+					g_free(gname_utf8);
+					g_free(alias_utf8);
 				}
 			} break;
 
 			case AIM_SSI_TYPE_GROUP: { /* Group */
-				const char *gname = curitem->name;
-				if (gname != NULL && purple_find_group(gname) == NULL) {
-					g = purple_group_new(gname);
+				char *gname;
+				char *gname_utf8;
+
+				gname = curitem->name;
+				if (gname != NULL) {
+					if (g_utf8_validate(gname, -1, NULL))
+						gname_utf8 = g_strdup(gname);
+					else
+						gname_utf8 = oscar_utf8_try_convert(account, gname);
+				} else
+					gname_utf8 = NULL;
+
+				if (gname_utf8 != NULL && purple_find_group(gname_utf8) == NULL) {
+					g = purple_group_new(gname_utf8);
 					purple_blist_add_group(g, NULL);
 				}
+				g_free(gname_utf8);
 			} break;
 
 			case AIM_SSI_TYPE_PERMIT: { /* Permit buddy */
@@ -5540,8 +5611,7 @@
 {
 	PurpleConnection *gc;
 	PurpleAccount *account;
-	const char *gname;
-	char *alias;
+	char *gname, *gname_utf8, *alias, *alias_utf8;
 	PurpleBuddy *b;
 	PurpleGroup *g;
 	struct aim_ssi_item *ssi_item;
@@ -5562,7 +5632,19 @@
 		return 1;
 
 	gname = aim_ssi_itemlist_findparentname(od->ssi.local, name);
+	gname_utf8 = gname ? oscar_utf8_try_convert(account, gname) : NULL;
+
 	alias = aim_ssi_getalias(od->ssi.local, gname, name);
+	if (alias != NULL)
+	{
+		if (g_utf8_validate(alias, -1, NULL))
+			alias_utf8 = g_strdup(alias);
+		else
+			alias_utf8 = oscar_utf8_try_convert(account, alias);
+	}
+	else
+		alias_utf8 = NULL;
+	g_free(alias);
 
 	b = purple_find_buddy(account, name);
 	if (b) {
@@ -5571,21 +5653,21 @@
 		 * of your buddies, so update our local buddy list with
 		 * the person's new alias.
 		 */
-		purple_blist_alias_buddy(b, alias);
+		purple_blist_alias_buddy(b, alias_utf8);
 	} else if (snac_subtype == 0x0008) {
 		/*
 		 * You're logged in somewhere else and you added a buddy to
 		 * your server list, so add them to your local buddy list.
 		 */
-		b = purple_buddy_new(account, name, alias);
-
-		if (!(g = purple_find_group(gname ? gname : _("Orphans")))) {
-			g = purple_group_new(gname ? gname : _("Orphans"));
+		b = purple_buddy_new(account, name, alias_utf8);
+
+		if (!(g = purple_find_group(gname_utf8 ? gname_utf8 : _("Orphans")))) {
+			g = purple_group_new(gname_utf8 ? gname_utf8 : _("Orphans"));
 			purple_blist_add_group(g, NULL);
 		}
 
 		purple_debug_info("oscar",
-				   "ssi: adding buddy %s to group %s to local list\n", name, gname ? gname : _("Orphans"));
+				   "ssi: adding buddy %s to group %s to local list\n", name, gname_utf8 ? gname_utf8 : _("Orphans"));
 		purple_blist_add_buddy(b, NULL, g, NULL);
 
 		/* Mobile users should always be online */
@@ -5598,8 +5680,6 @@
 
 	}
 
-	g_free(alias);
-
 	ssi_item = aim_ssi_itemlist_finditem(od->ssi.local,
 			gname, name, AIM_SSI_TYPE_BUDDY);
 	if (ssi_item == NULL)
@@ -5609,6 +5689,9 @@
 				"group %s\n", name, gname);
 	}
 
+	g_free(gname_utf8);
+	g_free(alias_utf8);
+
 	return 1;
 }
 
@@ -6311,6 +6394,7 @@
 	struct name_data *data;
 	PurpleGroup *g;
 	char *comment;
+	gchar *comment_utf8;
 	gchar *title;
 	PurpleAccount *account;
 	const char *name;
@@ -6329,6 +6413,7 @@
 	data = g_new(struct name_data, 1);
 
 	comment = aim_ssi_getcomment(od->ssi.local, purple_group_get_name(g), name);
+	comment_utf8 = comment ? oscar_utf8_try_convert(account, comment) : NULL;
 
 	data->gc = gc;
 	data->name = g_strdup(name);
@@ -6336,7 +6421,7 @@
 
 	title = g_strdup_printf(_("Buddy Comment for %s"), data->name);
 	purple_request_input(gc, title, _("Buddy Comment:"), NULL,
-					   comment, TRUE, FALSE, NULL,
+					   comment_utf8, TRUE, FALSE, NULL,
 					   _("_OK"), G_CALLBACK(oscar_ssi_editcomment),
 					   _("_Cancel"), G_CALLBACK(oscar_free_name_data),
 					   account, data->name, NULL,
@@ -6344,6 +6429,7 @@
 	g_free(title);
 
 	g_free(comment);
+	g_free(comment_utf8);
 }
 
 static void
--- a/libpurple/proxy.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/libpurple/proxy.c	Sun Nov 29 17:32:05 2009 +0000
@@ -1099,36 +1099,6 @@
 			connect_data->host, connect_data->port,
 			connect_data->host, connect_data->port);
 
-	if (purple_proxy_info_get_username(connect_data->gpi) != NULL)
-	{
-		char *t1, *t2, *ntlm_type1;
-		char hostname[256];
-
-		ret = gethostname(hostname, sizeof(hostname));
-		hostname[sizeof(hostname) - 1] = '\0';
-		if (ret < 0 || hostname[0] == '\0') {
-			purple_debug_warning("proxy", "gethostname() failed -- is your hostname set?");
-			strcpy(hostname, "localhost");
-		}
-
-		t1 = g_strdup_printf("%s:%s",
-			purple_proxy_info_get_username(connect_data->gpi),
-			purple_proxy_info_get_password(connect_data->gpi) ?
-				purple_proxy_info_get_password(connect_data->gpi) : "");
-		t2 = purple_base64_encode((const guchar *)t1, strlen(t1));
-		g_free(t1);
-
-		ntlm_type1 = purple_ntlm_gen_type1(hostname, "");
-
-		g_string_append_printf(request,
-			"Proxy-Authorization: Basic %s\r\n"
-			"Proxy-Authorization: NTLM %s\r\n"
-			"Proxy-Connection: Keep-Alive\r\n",
-			t2, ntlm_type1);
-		g_free(ntlm_type1);
-		g_free(t2);
-	}
-
 	g_string_append(request, "\r\n");
 
 	connect_data->write_buf_len = request->len;
--- a/pidgin/gtkconv.c	Sat Nov 28 05:51:05 2009 +0000
+++ b/pidgin/gtkconv.c	Sun Nov 29 17:32:05 2009 +0000
@@ -3903,8 +3903,7 @@
 	gtk_box_pack_start(GTK_BOX(box), label, TRUE, TRUE, 4);
 
 	if (buddy != NULL &&
-	    !purple_presence_is_online(purple_buddy_get_presence(buddy)) &&
-	    !purple_account_supports_offline_message(account, buddy))
+	    !purple_presence_is_online(purple_buddy_get_presence(buddy)))
 	{
 		gtk_widget_set_sensitive(label, FALSE);
 
--- a/po/ca.po	Sat Nov 28 05:51:05 2009 +0000
+++ b/po/ca.po	Sun Nov 29 17:32:05 2009 +0000
@@ -33,8 +33,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-14 20:33-0500\n"
-"PO-Revision-Date: 2009-10-26 09:20+0100\n"
+"POT-Creation-Date: 2009-11-28 18:48+0100\n"
+"PO-Revision-Date: 2009-11-28 21:57+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"
@@ -475,7 +475,7 @@
 msgstr "Indiqueu el nom de l'ordiador"
 
 msgid "Type the host name this certificate is for."
-msgstr "Entreu el nom de l'ordinador al qual pertany aquest certificat."
+msgstr "Introduïu el nom de l'ordinador al qual pertany aquest certificat."
 
 #, c-format
 msgid ""
@@ -880,7 +880,7 @@
 msgid ""
 "Chats will only be logged if the \"Log all chats\" preference is enabled."
 msgstr ""
-"Els xats només es registraran si s'habilita preferència «Registra tots els "
+"Els xats només es registraran si s'habilita la preferència «Registra tots els "
 "xats»."
 
 msgid "No logs were found"
@@ -1569,7 +1569,7 @@
 msgstr "Fes un TinyURL d'això d'aquí dalt: %s"
 
 msgid "Please wait while TinyURL fetches a shorter URL ..."
-msgstr "Espreu mentre TinyURL obté una URL més curta..."
+msgstr "Espereu mentre TinyURL obté una URL més curta..."
 
 msgid "Only create TinyURL for URLs of this length or greater"
 msgstr "Només crea TinyURL per a URL així de llargues o més"
@@ -1585,11 +1585,12 @@
 
 msgid "When receiving a message with URL(s), use TinyURL for easier copying"
 msgstr ""
-"En rebre missagtes amb URL, s'empra TinyURL perquè sigui més fàcil copiar"
+"En rebre missatges amb URL, s'empra TinyURL perquè sigui més fàcil copiar"
 
 msgid "Online"
 msgstr "En línia"
 
+#. primative,						no,							id,			name
 msgid "Offline"
 msgstr "Fora de línia"
 
@@ -1634,7 +1635,7 @@
 msgstr "comptes"
 
 msgid "Password is required to sign on."
-msgstr "Es necessita la contrasenya per a poder connectar."
+msgstr "Es necessita la contrasenya per poder connectar."
 
 #, c-format
 msgid "Enter password for %s (%s)"
@@ -3210,10 +3211,12 @@
 msgid "Add to chat..."
 msgstr "Afegeix al xat..."
 
+#. 0
 #. Global
 msgid "Available"
 msgstr "Disponible"
 
+#. 1
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
@@ -3668,14 +3671,14 @@
 "channels, optionally providing a channel key for each if needed."
 msgstr ""
 "j &lt;sala1&gt;[,sala2][,...] [clau1[,clau2][,...]]:  entra a un o més "
-"canals, opcionalment proporcionant una clau si cal."
+"canals, proporcionant una clau opcional si cal."
 
 msgid ""
 "join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
 "channels, optionally providing a channel key for each if needed."
 msgstr ""
 "join &lt;sala1&gt;[,sala2][,...] [clau1[,clau2][,...]]:  entra a un o més "
-"canals, opcionalment proporcionant una clau si cal."
+"canals, proporcionant una clau opcional si cal."
 
 msgid ""
 "kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a "
@@ -4027,12 +4030,14 @@
 msgid "Log Out"
 msgstr "Desconnecta"
 
+#. 2
 msgid "Chatty"
 msgstr "Xerraire"
 
 msgid "Extended Away"
 msgstr "Absent des de fa una bona estona"
 
+#. 3
 msgid "Do Not Disturb"
 msgstr "No molesteu"
 
@@ -4297,6 +4302,7 @@
 msgid "None (To pending)"
 msgstr "Cap (a pendent)"
 
+#. 0
 msgid "None"
 msgstr "Cap"
 
@@ -5504,9 +5510,8 @@
 msgid "Unknown error (%d)"
 msgstr "Error desconegut (%d)"
 
-#, fuzzy
 msgid "Unable to remove user"
-msgstr "No s'ha pogut afegir l'usuari"
+msgstr "No s'ha pogut suprimir l'usuari"
 
 msgid "Mobile message was not sent because it was too long."
 msgstr "No s'ha enviat el missatge al mòbil perquè era massa llarg."
@@ -5757,28 +5762,84 @@
 msgid "%s has removed you from his or her buddy list."
 msgstr "%s us ha suprimit de la seva llista d'amics."
 
+#. 1
+msgid "Angry"
+msgstr "Enfadat"
+
+#. 2
+msgid "Excited"
+msgstr "Excitat"
+
+#. 3
+msgid "Grumpy"
+msgstr "Rondinaire"
+
+#. 4
+msgid "Happy"
+msgstr "Content"
+
+#. 5
+msgid "In Love"
+msgstr "Enamorat"
+
+#. 6
+msgid "Invincible"
+msgstr "Invencible"
+
+#. 7
+msgid "Sad"
+msgstr "Trist"
+
+#. 8
+msgid "Hot"
+msgstr "Calent"
+
+#. 9
+msgid "Sick"
+msgstr "Malalt"
+
+#. 10
+msgid "Sleepy"
+msgstr "Endormiscat"
+
 #. show current mood
-#, fuzzy
 msgid "Current Mood"
-msgstr "El vostre estat d'ànim actual"
+msgstr "Estat d'ànim actual"
 
 #. add all moods to list
-#, fuzzy
 msgid "New Mood"
-msgstr "Estat d'ànim de l'usuari"
-
-#, fuzzy
+msgstr "Nou estat d'ànim"
+
 msgid "Change your Mood"
-msgstr "Canvia la contrasenya"
-
-#, fuzzy
+msgstr "Canvieu el vostre estat d'ànim"
+
 msgid "How do you feel right now?"
-msgstr "Ara mateix no sóc aquí"
+msgstr "Com us trobeu ara mateix?"
+
+msgid "The PIN you entered is invalid."
+msgstr "El PIN que heu introduït no és vàlid."
+
+msgid "The PIN you entered has an invalid length [4-10]."
+msgstr "La llargada del PIN que heu introduït no és vàlida [4-10]."
+
+msgid "The PIN is invalid. It should only consist of digits [0-9]."
+msgstr "El PIN no és vàlid. Només pot contenir dígits [0-9]."
+
+msgid "The two PINs you entered do not match."
+msgstr "Els dos PIN que heu introduït no coincideixen."
+
+msgid "The name you entered is invalid."
+msgstr "El nom que heu introduït no és vàlid."
+
+msgid ""
+"The birthday you entered is invalid. The correct format is: 'YYYY-MM-DD'."
+msgstr ""
+"La data de l'aniversari que heu introduït no és vàlida. El format és: 'AAAA-"
+"MM-DD'."
 
 #. show error to user
-#, fuzzy
 msgid "Profile Update Error"
-msgstr "Error d'escriptura"
+msgstr "S'ha produït un error en actualitzar el perfil"
 
 #. no profile information yet, so we cannot update
 #. (reference: "libpurple/request.h")
@@ -5787,356 +5848,304 @@
 
 msgid "Your profile information is not yet retrieved. Please try again later."
 msgstr ""
+"Encara no s'ha pogut recuperar la informació del vostre perfil. Torneu-ho a "
+"intentar més tard."
 
 #. pin
-#, fuzzy
 msgid "PIN"
-msgstr "UIN"
+msgstr "PIN"
 
 msgid "Verify PIN"
-msgstr ""
+msgstr "Verifiqueu el PIN"
 
 #. display name
-#, fuzzy
 msgid "Display Name"
-msgstr "Visualitza"
+msgstr "Nom que es mostrarà"
 
 #. hidden
 msgid "Hide my number"
-msgstr ""
+msgstr "Oculta el meu número"
 
 #. mobile number
-#, fuzzy
 msgid "Mobile Number"
-msgstr "Número del telèfon mòbil"
-
-#, fuzzy
+msgstr "Número de telèfon mòbil"
+
 msgid "Update your Profile"
-msgstr "Perfil de l'usuari"
+msgstr "Actualitzeu el vostre perfil"
 
 msgid "Here you can update your MXit profile"
-msgstr ""
+msgstr "Aquí podeu actualitzar el vostre perfil MXit"
 
 msgid "View Splash"
-msgstr ""
-
-#, fuzzy
+msgstr "Mostra la pantalla de presentació"
+
 msgid "There is no splash-screen currently available"
-msgstr "El xat no està actualment disponible"
-
-#, fuzzy
+msgstr "No hi ha cap pantalla de presentació disponible"
+
 msgid "About"
-msgstr "Quant a mi"
+msgstr "Quant a"
 
 #. display / change mood
-#, fuzzy
 msgid "Change Mood..."
-msgstr "Canvia la contrasenya..."
+msgstr "Canvia l'estat d'ànim..."
 
 #. display / change profile
-#, fuzzy
 msgid "Change Profile..."
-msgstr "Canvia la contrasenya..."
+msgstr "Canvia el perfil..."
 
 #. display splash-screen
-#, fuzzy
 msgid "View Splash..."
-msgstr "Mostra el registre..."
+msgstr "Mostra la pantalla de presentació..."
 
 #. display plugin version
-#, fuzzy
 msgid "About..."
-msgstr "Quant a mi"
+msgstr "Quant a..."
 
 #. the file is too big
-#, fuzzy
 msgid "The file you are trying to send is too large!"
-msgstr "El missatge és massa llarg."
-
-msgid ""
-"Unable to connect to the mxit HTTP server. Please check your server server "
-"settings."
-msgstr ""
-
-#, fuzzy
+msgstr "El fitxer que voleu enviar és massa llarg."
+
+msgid ""
+"Unable to connect to the MXit HTTP server. Please check your server settings."
+msgstr ""
+"No s'ha pogut connectar al servidor HTTP de MXit. Comproveu la configuració "
+"del servidor."
+
 msgid "Logging In..."
-msgstr "S'està entrant"
-
-#, fuzzy
-msgid ""
-"Unable to connect to the mxit server. Please check your server server "
-"settings."
-msgstr ""
-"No s'ha pogut connectar al servidor. Introduïu l'adreça del servidor al qual "
-"us vulgueu connectar."
-
-#, fuzzy
+msgstr "S'està entrant..."
+
+msgid ""
+"Unable to connect to the MXit server. Please check your server settings."
+msgstr "No s'ha pogut connectar al servidor MXit. Comproveu la configuració."
+
 msgid "Connecting..."
-msgstr "S'està connectant"
+msgstr "S'està connectant..."
+
+msgid "The nick name you entered is invalid."
+msgstr "El sobrenom que heu introduït no és vàlid."
+
+msgid "The PIN you entered has an invalid length [7-10]."
+msgstr "La llargada del PIN que heu introduït no és vàlida [4-10]."
 
 #. mxit login name
 msgid "MXit Login Name"
-msgstr ""
+msgstr "Nom d'usuari de MXit"
 
 #. nick name
-#, fuzzy
 msgid "Nick Name"
 msgstr "Sobrenom"
 
 #. show the form to the user to complete
-#, fuzzy
 msgid "Register New MXit Account"
-msgstr "Registra un compte XMPP nou"
-
-#, fuzzy
+msgstr "Crea un compte MXit nou"
+
 msgid "Please fill in the following fields:"
-msgstr "Empleneu els camps següents"
+msgstr "Empleneu aquests camps:"
 
 #. no reply from the WAP site
 msgid "Error contacting the MXit WAP site. Please try again later."
 msgstr ""
+"S'ha produït un error en connectar al lloc WAP de MXit. Intenteu-ho més tard."
 
 #. wapserver error
 #. server could not find the user
 msgid ""
 "MXit is currently unable to process the request. Please try again later."
 msgstr ""
+"Ara mateix MXit no pot processar la sol·licitud. Torneu-ho a intentar més "
+"tard."
 
 msgid "Wrong security code entered. Please try again later."
 msgstr ""
+"S'ha introduït un codi de seguretat equivocat. Torneu-ho a intentar més tard."
 
 msgid "Your session has expired. Please try again later."
-msgstr ""
+msgstr "La vostra sessió ha expirat. Torneu-ho a intentar més tard."
 
 msgid "Invalid country selected. Please try again."
-msgstr ""
+msgstr "El país seleccionat no és vàlid. Intenteu-ho de nou."
 
 msgid "Username is not registered. Please register first."
-msgstr ""
+msgstr "El nom d'usuari no està registrat, cal que primer el registreu."
 
 msgid "Username is already registered. Please choose another username."
-msgstr ""
-
-#, fuzzy
+msgstr "Aquest nom d'usuari ja està registrat, escolliu-ne un altre."
+
 msgid "Internal error. Please try again later."
-msgstr "El servidor no està disponible, proveu-ho més tard"
+msgstr "S'ha produït un error intern. Torneu-ho a provar més tard."
 
 msgid "You did not enter the security code"
-msgstr ""
-
-#, fuzzy
+msgstr "No heu introduït codi de seguretat"
+
 msgid "Security Code"
-msgstr "Seguretat habilitada"
+msgstr "Codi de seguretat"
 
 #. ask for input
-#, fuzzy
 msgid "Enter Security Code"
-msgstr "Introduïu el codi"
-
-#, fuzzy
+msgstr "Introduïu el codi de seguretat"
+
 msgid "Your Country"
-msgstr "País"
-
-#, fuzzy
+msgstr "El vostre país"
+
 msgid "Your Language"
-msgstr "Idioma preferit"
+msgstr "La vostra llengua"
 
 #. display the form to the user and wait for his/her input
-#, fuzzy
 msgid "MXit Authorization"
-msgstr "Sol·licitud d'autorització"
+msgstr "Autorització MXit"
 
 msgid "MXit account validation"
-msgstr ""
-
-#, fuzzy
+msgstr "Validació del compte MXit"
+
 msgid "Retrieving User Information..."
-msgstr "Informació del servidor"
-
-#, fuzzy
+msgstr "S'està obtenint informació de l'usuari..."
+
+msgid "Loading menu..."
+msgstr "S'està carregant el menú..."
+
 msgid "Status Message"
 msgstr "Missatge d'estat"
 
 # Segons la viquipèdia
-#, fuzzy
 msgid "Hidden Number"
-msgstr "Nom del mig"
-
-#, fuzzy
+msgstr "Nombre ocult"
+
 msgid "Your Mobile Number..."
-msgstr "Estableix el número del telèfon mòbil..."
+msgstr "El vostre telèfon mòbil..."
 
 #. Configuration options
 #. WAP server (reference: "libpurple/accountopt.h")
-#, fuzzy
 msgid "WAP Server"
-msgstr "Servidor"
-
-#, fuzzy
+msgstr "Servidor WAP"
+
 msgid "Connect via HTTP"
-msgstr "Connecta amb TCP"
+msgstr "Connecta amb HTTP"
 
 msgid "Enable splash-screen popup"
-msgstr ""
+msgstr "Habilita la pantalla de presentació emergent"
 
 #. we must have lost the connection, so terminate it so that we can reconnect
-#, fuzzy
 msgid "We have lost the connection to MXit. Please reconnect."
-msgstr "Heu perdut la connexió a la sala de xat %s."
+msgstr "S'ha trencat la connexió a MXit. Torneu-vos a connectar."
 
 #. packet could not be queued for transmission
-#, fuzzy
 msgid "Message Send Error"
-msgstr "Missatge d'error de l'XMPP"
-
-#, fuzzy
+msgstr "S'ha produït un error en enviar el missatge"
+
 msgid "Unable to process your request at this time"
-msgstr "No s'ha pogut resoldre el nom de l'ordinador"
+msgstr "Ara mateix no es pot processar la sol·licitud"
 
 msgid "Timeout while waiting for a response from the MXit server."
 msgstr ""
-
-#, fuzzy
+"S'ha exhaurit el temps d'espera per obtenir una resposta del servidor MXit."
+
 msgid "Successfully Logged In..."
-msgstr "S'ha entrat al Qun"
-
-#, fuzzy
+msgstr "S'ha pogut entrar..."
+
+#, c-format
+msgid ""
+"%s sent you an encrypted message, but it is not supported on this client."
+msgstr ""
+"%s us ha enviat un missatge xifrat, però aquest client no implementa el "
+"mètode emprat per xifrar."
+
 msgid "Message Error"
-msgstr "Missatge d'error de l'XMPP"
+msgstr "S'ha produït un error en el missatge"
 
 msgid "Cannot perform redirect using the specified protocol"
-msgstr ""
-
-#, fuzzy
+msgstr "No es pot redireccionar amb el protocol seleccionat"
+
+msgid "An internal MXit server error occurred."
+msgstr "S'ha produït un error intern del servidor MXit."
+
+#, c-format
+msgid "Login error: %s (%i)"
+msgstr "S'ha produït un error en entrar: %s (%i)"
+
+#, c-format
+msgid "Logout error: %s (%i)"
+msgstr "S'ha produït un error en sortir: %s (%i)"
+
 msgid "Contact Error"
-msgstr "Error de connexió"
-
-#, fuzzy
+msgstr "S'ha produït un error en un contacte"
+
 msgid "Message Sending Error"
-msgstr "Missatge d'error de l'XMPP"
-
-#, fuzzy
+msgstr "S'ha produït un error en enviar un missatge"
+
 msgid "Status Error"
-msgstr "Error de flux"
-
-#, fuzzy
+msgstr "S'ha produït un error en l'estat"
+
 msgid "Mood Error"
-msgstr "Error en la icona"
-
-#, fuzzy
+msgstr "S'ha produït un error en l'estat d'ànim"
+
 msgid "Invitation Error"
-msgstr "Error en desconnectar"
-
-#, fuzzy
+msgstr "S'ha produït un error en la invitació"
+
 msgid "Contact Removal Error"
-msgstr "Error de connexió"
-
-#, fuzzy
+msgstr "S'ha produït un error en suprimir un contacte"
+
 msgid "Subscription Error"
-msgstr "Subscripció"
-
-#, fuzzy
+msgstr "S'ha produït un error en la subscripció"
+
 msgid "Contact Update Error"
-msgstr "Error de connexió"
-
-#, fuzzy
+msgstr "S'ha produït un error en actualitzar un contacte"
+
 msgid "File Transfer Error"
-msgstr "Transferència de fitxers"
-
-#, fuzzy
+msgstr "S'ha produït un error en la transferència de fitxers"
+
 msgid "Cannot create MultiMx room"
-msgstr "No s'ha pogut crear l'avís"
-
-#, fuzzy
+msgstr "No s'ha pogut crear una sala MultiMx"
+
 msgid "MultiMx Invitation Error"
-msgstr "Error en desconnectar"
-
-#, fuzzy
+msgstr "S'ha produït un error en la invitació MultiMix"
+
 msgid "Profile Error"
-msgstr "Error d'escriptura"
+msgstr "S'ha produït un error en el perfil"
 
 #. bad packet
 msgid "Invalid packet received from MXit."
-msgstr ""
+msgstr "S'ha rebut un paquet invàlid de MXit."
 
 #. connection error
 msgid "A connection error occurred to MXit. (read stage 0x01)"
-msgstr ""
+msgstr "S'ha produït un error de connexió a MXit. (read stage 0x01)"
 
 #. connection closed
 msgid "A connection error occurred to MXit. (read stage 0x02)"
-msgstr ""
+msgstr "S'ha produït un error de conneció a MXit. (read stage 0x02)"
 
 msgid "A connection error occurred to MXit. (read stage 0x03)"
-msgstr ""
+msgstr "S'ha produït un error de connexió a MXit. (read stage 0x03)"
 
 #. malformed packet length record (too long)
 msgid "A connection error occurred to MXit. (read stage 0x04)"
-msgstr ""
+msgstr "S'ha produït un error de connexió a MXit. (read stage 0x04)"
 
 #. connection error
 msgid "A connection error occurred to MXit. (read stage 0x05)"
-msgstr ""
+msgstr "S'ha produït un error de connexió a MXit. (read stage 0x05)"
 
 #. connection closed
 msgid "A connection error occurred to MXit. (read stage 0x06)"
-msgstr ""
-
-msgid "Angry"
-msgstr "Enfadat"
-
-msgid "Excited"
-msgstr "Excitat"
-
-#, fuzzy
-msgid "Grumpy"
-msgstr "Grup"
-
-msgid "Happy"
-msgstr "Content"
-
-msgid "In Love"
-msgstr "Enamorat"
-
-msgid "Invincible"
-msgstr "Invencible"
-
-msgid "Sad"
-msgstr "Trist"
-
-#, fuzzy
-msgid "Hot"
-msgstr "Ordinador:"
-
-#, fuzzy
-msgid "Sick"
-msgstr "Sobrenom"
-
-msgid "Sleepy"
-msgstr "Endormiscat"
-
-#, fuzzy
+msgstr "S'ha produït un error de connexió a MXit. (read stage 0x06)"
+
 msgid "Pending"
-msgstr "S'està enviant"
-
-#, fuzzy
+msgstr "Pendent"
+
 msgid "Invited"
-msgstr "Convida"
-
-#, fuzzy
+msgstr "Convidat"
+
 msgid "Rejected"
-msgstr "Rebutja"
-
-#, fuzzy
+msgstr "Rebutjat"
+
 msgid "Deleted"
-msgstr "Suprimeix"
+msgstr "Suprimit"
 
 msgid "MXit Advertising"
-msgstr ""
-
-#, fuzzy
+msgstr "Anuncis MXit"
+
 msgid "More Information"
-msgstr "Informació de la feina"
+msgstr "Més informació"
 
 #, c-format
 msgid "No such user: %s"
@@ -6353,7 +6362,7 @@
 msgstr "No s'ha establer cap nom d'usuari"
 
 msgid "Please enter a username to check its availability:"
-msgstr "Entreu un nom d'usuari per a comprovar-ne la disponibilitat:"
+msgstr "Introduïu un nom d'usuari per a comprovar-ne la disponibilitat:"
 
 #. TODO: icons for each zap
 #. Lots of comments for translators:
@@ -6374,7 +6383,7 @@
 
 #. Whack means "to hit or strike someone with a sharp blow"
 msgid "Whack"
-msgstr "bufetejar"
+msgstr "Bufetejar"
 
 #, c-format
 msgid "%s has whacked you!"
@@ -6548,7 +6557,8 @@
 msgstr "L'arxiu mestre està desconfigurat"
 
 msgid "Could not recognize the host of the username you entered"
-msgstr "No s'ha pogut reconèixer l'ordinador del nom d'usuari que heu entrat"
+msgstr ""
+"No s'ha pogut reconèixer l'ordinador del nom d'usuari que heu introduït"
 
 msgid ""
 "Your account has been disabled because too many incorrect passwords were "
@@ -6930,47 +6940,42 @@
 msgstr "No es pot fer mentre estigui a AOL"
 
 msgid "Cannot receive IM due to parental controls"
-msgstr ""
+msgstr "Els controls parentals no permeten que es pugui rebre MI"
 
 msgid "Cannot send SMS without accepting terms"
-msgstr ""
-
-#, fuzzy
+msgstr "No es poden enviar SMS si no s'accepten els termes"
+
 msgid "Cannot send SMS"
-msgstr "No s'ha pogut enviar el fitxer"
+msgstr "No s'ha pogut enviar l'SMS"
 
 #. SMS_WITHOUT_DISCLAIMER is weird
-#, fuzzy
 msgid "Cannot send SMS to this country"
-msgstr "No es pot enviar un directori."
+msgstr "No es poden enviar SMS a aquest país"
 
 #. Undocumented
-#, fuzzy
 msgid "Cannot send SMS to unknown country"
-msgstr "No es poden enviar SMS, no es coneix l'operador de telefona mòbil."
+msgstr "No es poden enviar SMS a un país desconegut"
 
 msgid "Bot accounts cannot initiate IMs"
-msgstr ""
+msgstr "Els robots no poden iniciar MI"
 
 msgid "Bot account cannot IM this user"
-msgstr ""
+msgstr "Aquest robot no pot fer MI amb aquest usuari"
 
 msgid "Bot account reached IM limit"
-msgstr ""
+msgstr "Aquest robot ha superat el límit de MI"
 
 msgid "Bot account reached daily IM limit"
-msgstr ""
+msgstr "Aquest robot ha superat el límit de MI diari"
 
 msgid "Bot account reached monthly IM limit"
-msgstr ""
-
-#, fuzzy
+msgstr "Aquest robot ha superat el límit de MI mensual"
+
 msgid "Unable to receive offline messages"
-msgstr "No s'ha pogut enviar el missatge."
-
-#, fuzzy
+msgstr "No s'han pogut rebre els missatges fora de línia"
+
 msgid "Offline message store full"
-msgstr "Missatge de fora de línia"
+msgstr "El dipòsit per a missatge de fora de línia és ple"
 
 msgid ""
 "(There was an error receiving this message.  The buddy you are speaking with "
@@ -7143,15 +7148,14 @@
 "El servei de missatges instantanis d'AOL no està disponible temporalment."
 
 #. username connecting too frequently
-#, fuzzy
 msgid ""
 "Your username has been connecting and disconnecting too frequently. Wait ten "
 "minutes and try again. If you continue to try, you will need to wait even "
 "longer."
 msgstr ""
-"Heu estat connectant-vos i desconnectat-vos amb massa freqüència. Espereu "
-"deu minuts i intenteu-ho de nou. Si continueu intentant-ho, haureu d'esperar "
-"encara més temps."
+"El vostre usuari s'ha estat connectant i desconnectat amb massa freqüència. "
+"Espereu deu minuts i intenteu-ho de nou. Si continueu intentant-ho, haureu "
+"d'esperar encara més temps."
 
 #. client too old
 #, c-format
@@ -7159,18 +7163,17 @@
 msgstr "La versió del client que useu és massa antiga, actualitzeu-la a %s"
 
 #. IP address connecting too frequently
-#, fuzzy
 msgid ""
 "Your IP address has been connecting and disconnecting too frequently. Wait a "
 "minute and try again. If you continue to try, you will need to wait even "
 "longer."
 msgstr ""
-"Heu estat connectant-vos i desconnectat-vos amb massa freqüència. Espereu un "
-"minut i intenteu-ho de nou. Si continueu intentant-ho, haureu d'esperar "
-"encara més temps."
+"La vostra adreça IP s'ha estat connectant i desconnectat amb massa "
+"freqüència. Espereu un minut i intenteu-ho de nou. Si continueu intentant-"
+"ho, haureu d'esperar encara més temps."
 
 msgid "The SecurID key entered is invalid"
-msgstr "La clau SecurID que heu entrat no és vàlida"
+msgstr "La clau SecurID que heu introduït no és vàlida"
 
 msgid "Enter SecurID"
 msgstr "Introduïu el SecureID"
@@ -7185,7 +7188,8 @@
 msgstr "No s'ha pogut inicialitzar la connexió"
 
 msgid "Please authorize me so I can add you to my buddy list."
-msgstr "Autoritzeu-me perquè us pugui afegir a la meva llista d'amics."
+msgstr ""
+"Si us plau, autoritzeu-me perquè us pugui afegir a la meva llista d'amics."
 
 msgid "No reason given."
 msgstr "No s'ha indicat cap motiu."
@@ -7305,21 +7309,21 @@
 msgstr[0] "Heu perdut %hu missatge de %s per motius desconeguts."
 msgstr[1] "Heu perdut %hu missatges de %s per motius desconeguts."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to send message: %s (%s)"
-msgstr "No s'ha pogut enviar el missatge (%s)."
+msgstr "No s'ha pogut enviar el missatge: %s (%s)"
 
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "No s'ha pogut enviar el missatge: %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to send message to %s: %s (%s)"
-msgstr "No s'ha pogut enviar el missatge a %s:"
-
-#, fuzzy, c-format
+msgstr "No s'ha pogut enviar el missatge a %s: %s (%s)"
+
+#, c-format
 msgid "Unable to send message to %s: %s"
-msgstr "No s'ha pogut enviar el missatge a %s:"
+msgstr "No s'ha pogut enviar el missatge a %s: %s"
 
 #, c-format
 msgid "User information not available: %s"
@@ -7348,13 +7352,12 @@
 "[No s'ha pogut mostrar el missatge d'aquest usuari perquè contenia caràcters "
 "invàlids.]"
 
-#, fuzzy
 msgid ""
 "The last action you attempted could not be performed because you are over "
 "the rate limit. Please wait 10 seconds and try again.\n"
 msgstr ""
 "No s'ha pogut realitzar la darrera acció que havíeu intentat perquè esteu "
-"per sobre del límit. Espereu 10 segons i torneu-ho a provar."
+"per sobre del límit. Espereu 10 segons i torneu-ho a provar.\n"
 
 #, c-format
 msgid "You have been disconnected from chat room %s."
@@ -8648,7 +8651,7 @@
 msgstr "ID de Sametime"
 
 msgid "An ambiguous user ID was entered"
-msgstr "S'ha entrat un ID d'usuari ambigu"
+msgstr "S'ha introduït un ID d'usuari ambigu"
 
 #, c-format
 msgid ""
@@ -10771,6 +10774,8 @@
 msgid ""
 "Chat over IM.  Supports AIM, Google Talk, Jabber/XMPP, MSN, Yahoo and more"
 msgstr ""
+"Xategeu amb missatgeria instantània, amb AIM, Google Talk, Jabber/XMPP, MSN, "
+"Yahoo i més"
 
 msgid "Internet Messenger"
 msgstr "Missatger d'Internet"
@@ -11494,7 +11499,7 @@
 msgstr "/Amics/Ordena els amics"
 
 msgid "Type the host name for this certificate."
-msgstr "Entreu el nom de l'ordinador al qual pertany aquest certificat."
+msgstr "Introduïu el nom de l'ordinador al qual pertany aquest certificat."
 
 #. Widget creation function
 msgid "SSL Servers"
@@ -12044,6 +12049,9 @@
 msgid "Mongolian"
 msgstr "Mongol"
 
+msgid "Malay"
+msgstr "Malai"
+
 msgid "Bokmål Norwegian"
 msgstr "Noruec bokmål"
 
@@ -12115,6 +12123,9 @@
 msgid "Turkish"
 msgstr "Turc"
 
+msgid "Ukranian"
+msgstr "Ucraïnès"
+
 # FIXME?
 msgid "Urdu"
 msgstr "Urdu"
@@ -13070,8 +13081,10 @@
 msgid "(Custom)"
 msgstr "(Personalitzat)"
 
-msgid "(Default)"
-msgstr "(Predeterminat)"
+# Nom propi: http://www.penguinpimps.com/?
+# "proxenetes" no queda gens, s'hi podria posar alguna altra cosa (josep)
+msgid "Penguin Pimps"
+msgstr "Penguin Pimps"
 
 msgid "The default Pidgin sound theme"
 msgstr "El tema de sons predeterminat del pidgin"
@@ -13091,18 +13104,30 @@
 msgid "Theme failed to copy."
 msgstr "No s'ha pogut copiar el tema."
 
-msgid "Install Theme"
-msgstr "Instal·la el tema"
-
-msgid ""
-"Select a smiley theme that you would like to use from the list below. New "
-"themes can be installed by dragging and dropping them onto the theme list."
-msgstr ""
-"Seleccioneu un tema d'emoticones de la llista següent. Es poden instal·lar "
-"temes nous arrossegant-los i deixant-los anar a la llista de temes."
-
-msgid "Icon"
-msgstr "Icona"
+msgid "Theme Selections"
+msgstr "Selecció del tema"
+
+#. Instructions
+msgid ""
+"Select a theme that you would like to use from the lists below.\n"
+"New themes can be installed by dragging and dropping them onto the theme "
+"list."
+msgstr ""
+"Seleccioneu el tema que vulgueu emprar de la llista d'aquí sota.\n"
+"Es poden afegir temes nous arrossegant-los i deixant-los anar a la llista de "
+"temes."
+
+msgid "Buddy List Theme:"
+msgstr "Tema de la llista d'amics:"
+
+msgid "Status Icon Theme:"
+msgstr "Tema de la icona d'estat:"
+
+msgid "Sound Theme:"
+msgstr "Tema de sons:"
+
+msgid "Smiley Theme:"
+msgstr "Tema d'emoticones:"
 
 msgid "Keyboard Shortcuts"
 msgstr "Dreceres de teclat"
@@ -13110,10 +13135,6 @@
 msgid "Cl_ose conversations with the Escape key"
 msgstr "Tanca les converses amb la tecla d'_escapament"
 
-#. Buddy List Themes
-msgid "Buddy List Theme"
-msgstr "Tema de la llista d'amics"
-
 #. System Tray
 msgid "System Tray Icon"
 msgstr "Icona d'estat"
@@ -13200,9 +13221,6 @@
 msgid "Font"
 msgstr "Tipus de lletra"
 
-msgid "Use document font from _theme"
-msgstr "_Empra el tipus de lletra del document del tema"
-
 msgid "Use font from _theme"
 msgstr "Empra el tipus de lletra del _tema"
 
@@ -13248,17 +13266,14 @@
 msgid "_Enable automatic router port forwarding"
 msgstr "_Habilita la desviació automàtica de ports de l'encaminador"
 
-#, fuzzy
 msgid "_Manually specify range of ports to listen on:"
-msgstr "_Especifica manualment el rang de ports on escoltar"
-
-#, fuzzy
+msgstr "_Especifica manualment el rang de ports on escoltar:"
+
 msgid "_Start:"
-msgstr "E_stat:"
-
-#, fuzzy
+msgstr "_Inici:"
+
 msgid "_End:"
-msgstr "_Amplia"
+msgstr "_Final:"
 
 #. TURN server
 msgid "Relay Server (TURN)"
@@ -13267,60 +13282,11 @@
 msgid "_TURN server:"
 msgstr "Servidor _TURN:"
 
-#, fuzzy
 msgid "Use_rname:"
-msgstr "Nom d'usuari:"
-
-#, fuzzy
+msgstr "Nom d'_usuari:"
+
 msgid "Pass_word:"
-msgstr "Contrasenya:"
-
-msgid "Proxy Server &amp; Browser"
-msgstr "Servidor intermediari i navegador"
-
-msgid "<b>Proxy configuration program was not found.</b>"
-msgstr ""
-"<b>No s'ha pogut trobar el programa de configuració del servidor "
-"intermediari.</b>"
-
-msgid "<b>Browser configuration program was not found.</b>"
-msgstr "<b>No s'ha pogut trobar el programa de configuració del navegador.</b>"
-
-msgid ""
-"Proxy & Browser preferences are configured\n"
-"in GNOME Preferences"
-msgstr ""
-"Les preferències del servidor intermediari i\n"
-"del navegador les gestiona el GNOME"
-
-msgid "Configure _Proxy"
-msgstr "Configura el _servidor intermediari"
-
-msgid "Configure _Browser"
-msgstr "Configura el _navegador"
-
-msgid "Proxy Server"
-msgstr "Servidor intermediari"
-
-#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
-#, fuzzy
-msgid "Use remote _DNS with SOCKS4 proxies"
-msgstr "Empra DNS remot amb servidors intermediàris SOCKS4"
-
-#, fuzzy
-msgid "Proxy t_ype:"
-msgstr "_Tipus de servidor intermediari"
-
-msgid "No proxy"
-msgstr "Sense servidor intermediari"
-
-#, fuzzy
-msgid "P_ort:"
-msgstr "Port:"
-
-#, fuzzy
-msgid "User_name:"
-msgstr "Nom d'usuari:"
+msgstr "Contrasen_ya:"
 
 msgid "Seamonkey"
 msgstr "Seamonkey"
@@ -13361,6 +13327,15 @@
 msgid "Browser Selection"
 msgstr "Selecció del navegador"
 
+msgid "Browser preferences are configured in GNOME preferences"
+msgstr "Les preferències del navegador es configuren a través del GNOME"
+
+msgid "<b>Browser configuration program was not found.</b>"
+msgstr "<b>No s'ha pogut trobar el programa de configuració del navegador.</b>"
+
+msgid "Configure _Browser"
+msgstr "Configura el _navegador"
+
 msgid "_Browser:"
 msgstr "_Navegador:"
 
@@ -13384,6 +13359,38 @@
 "_Manual:\n"
 "(%s per a l'URL)"
 
+msgid "Proxy Server"
+msgstr "Servidor intermediari"
+
+msgid "Proxy preferences are configured in GNOME preferences"
+msgstr ""
+"Les preferències del servidor intermediari es configuren a través el GNOME"
+
+msgid "<b>Proxy configuration program was not found.</b>"
+msgstr ""
+"<b>No s'ha pogut trobar el programa de configuració del servidor "
+"intermediari.</b>"
+
+msgid "Configure _Proxy"
+msgstr "Configura el _servidor intermediari"
+
+#. This is a global option that affects SOCKS4 usage even with
+#. * account-specific proxy settings
+msgid "Use remote _DNS with SOCKS4 proxies"
+msgstr "Empra _DNS remot amb servidors intermediàris SOCKS4"
+
+msgid "Proxy t_ype:"
+msgstr "_Tipus de servidor intermediari:"
+
+msgid "No proxy"
+msgstr "Sense servidor intermediari"
+
+msgid "P_ort:"
+msgstr "P_ort:"
+
+msgid "User_name:"
+msgstr "_Nom d'usuari:"
+
 msgid "Log _format:"
 msgstr "_Format del registre:"
 
@@ -13467,25 +13474,18 @@
 msgid "Based on keyboard or mouse use"
 msgstr "Basat en l'ús del teclat o el ratolí"
 
+msgid "_Minutes before becoming idle:"
+msgstr "_Minuts abans de passar a inactiu:"
+
+msgid "Change to this status when _idle:"
+msgstr "_Canvia l'estat quan estigui inactiu:"
+
 msgid "_Auto-reply:"
 msgstr "Resposta _automàtica:"
 
 msgid "When both away and idle"
 msgstr "En estar absent i inactiu alhora"
 
-#. Auto-away stuff
-msgid "Auto-away"
-msgstr "Auto-absència"
-
-msgid "_Minutes before becoming idle:"
-msgstr "_Minuts abans de passar a inactiu:"
-
-msgid "Change status when _idle"
-msgstr "_Canvia l'estat quan estigui inactiu"
-
-msgid "Change _status to:"
-msgstr "Canvia l'_estat a:"
-
 #. Signon status stuff
 msgid "Status at Startup"
 msgstr "L'estat en iniciar"
@@ -13499,15 +13499,15 @@
 msgid "Interface"
 msgstr "Interfície"
 
-msgid "Smiley Themes"
-msgstr "Temes d'emoticones"
-
 msgid "Browser"
 msgstr "Navegador"
 
 msgid "Status / Idle"
 msgstr "Estat / Inactiu"
 
+msgid "Themes"
+msgstr "Temes"
+
 msgid "Allow all users to contact me"
 msgstr "Permet a tots els usuaris contactar amb mi"
 
@@ -13854,11 +13854,6 @@
 msgid "Pidgin smileys"
 msgstr "Emoticones del Pidgin"
 
-# Nom propi: http://www.penguinpimps.com/?
-# "proxenetes" no queda gens, s'hi podria posar alguna altra cosa (josep)
-msgid "Penguin Pimps"
-msgstr "Penguin Pimps"
-
 msgid "Selecting this disables graphical emoticons."
 msgstr "Si seleccioneu això s'inhabilitaran les emoticones gràfiques."
 
@@ -14505,6 +14500,9 @@
 msgid "Conversation Entry"
 msgstr "Entrada de la conversa"
 
+msgid "Conversation History"
+msgstr "Històric de converses"
+
 msgid "Request Dialog"
 msgstr "Diàleg de sol·licitud"
 
@@ -15038,6 +15036,27 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
 
+#~ msgid "(Default)"
+#~ msgstr "(Predeterminat)"
+
+#~ msgid "Install Theme"
+#~ msgstr "Instal·la el tema"
+
+#~ msgid "Icon"
+#~ msgstr "Icona"
+
+#~ msgid "Use document font from _theme"
+#~ msgstr "_Empra el tipus de lletra del document del tema"
+
+#~ msgid "Proxy Server &amp; Browser"
+#~ msgstr "Servidor intermediari i navegador"
+
+#~ msgid "Auto-away"
+#~ msgstr "Auto-absència"
+
+#~ msgid "Change _status to:"
+#~ msgstr "Canvia l'_estat a:"
+
 #~ msgid "Send instant messages over multiple protocols"
 #~ msgstr "Envieu missatges instantanis en múltiples protocols"
 
@@ -15794,7 +15813,7 @@
 #~ msgstr "Estat desconegut"
 
 #~ msgid "You entered a group ID outside the acceptable range"
-#~ msgstr "Heu entrat un identificador de grup fora del rang"
+#~ msgstr "Heu introduït un identificador de grup fora del rang"
 
 #~ msgid "Are you sure you want to leave this Qun?"
 #~ msgstr "Esteu segur que voleu deixar aquest Qun?"
@@ -16074,9 +16093,6 @@
 #~ msgid "_Send To"
 #~ msgstr "_Envia a"
 
-#~ msgid "Conversation History"
-#~ msgstr "Històric de converses"
-
 #~ msgid "Log Viewer"
 #~ msgstr "Visualitzador del registre"
 
@@ -17344,9 +17360,6 @@
 #~ msgid "Burmese"
 #~ msgstr "Birmà"
 
-#~ msgid "Ukrainian"
-#~ msgstr "Ucraïnès"
-
 #~ msgid "Xhosa"
 #~ msgstr "Xosa"
 
--- a/po/fr.po	Sat Nov 28 05:51:05 2009 +0000
+++ b/po/fr.po	Sun Nov 29 17:32:05 2009 +0000
@@ -21,8 +21,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-14 20:34-0500\n"
-"PO-Revision-Date: 2009-08-29 09:40+0200\n"
+"POT-Creation-Date: 2009-11-28 15:44+0100\n"
+"PO-Revision-Date: 2009-11-28 15:03+0100\n"
 "Last-Translator: Éric Boumaour <zongo_fr@users.sourceforge.net>\n"
 "Language-Team: fr <fr@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -644,9 +644,8 @@
 msgid "Enable Sounds"
 msgstr "Activer les sons"
 
-#, fuzzy
 msgid "You are not connected."
-msgstr "Impossible de se connecter."
+msgstr "Vous n'êtes pas connecté."
 
 msgid "<AUTO-REPLY> "
 msgstr "<Réponse automatique> "
@@ -657,9 +656,8 @@
 msgstr[0] "Liste de %d utilisateur :\n"
 msgstr[1] "Liste de %d utilisateurs :\n"
 
-#, fuzzy
 msgid "Supported debug options are: plugins version"
-msgstr "Les options de débuggage supportées sont : version"
+msgstr "Les options de débuggage supportées sont : plugins version"
 
 msgid "No such command (in this context)."
 msgstr "Cette commande n'existe pas dans ce contexte."
@@ -1545,10 +1543,10 @@
 
 #, c-format
 msgid "TinyURL for above: %s"
-msgstr ""
+msgstr "TinyURL pour ci-dessus : %s"
 
 msgid "Please wait while TinyURL fetches a shorter URL ..."
-msgstr ""
+msgstr "Veuillez patientez pendant que TinyURL génère une URL plus courte..."
 
 msgid "Only create TinyURL for URLs of this length or greater"
 msgstr "Création de TinyURL seulement pour les liens de cette taille mini"
@@ -1570,6 +1568,7 @@
 msgid "Online"
 msgstr "En ligne"
 
+#. primative,						no,							id,			name
 msgid "Offline"
 msgstr "Déconnecté"
 
@@ -1678,6 +1677,8 @@
 "The certificate is not trusted because no certificate that can verify it is "
 "currently trusted."
 msgstr ""
+"Il n'y a pas de confiance dans ce certificat parce qu'il n'y a pas de "
+"confiance dans aucun des certificats qui le vérifient."
 
 msgid "The certificate is not valid yet."
 msgstr "Le certificat n'est pas encore valide."
@@ -1909,9 +1910,9 @@
 msgid "Resolver process exited without answering our request"
 msgstr "Le processus de résolution s'est arrêté sans répondre."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error converting %s to punycode: %d"
-msgstr "Erreur à la résolution du nom %s : %d"
+msgstr "Erreur à la conversion de %s en punycode : %d"
 
 #, c-format
 msgid "Thread creation failure: %s"
@@ -2234,17 +2235,14 @@
 msgid "A non-recoverable Farsight2 error has occurred."
 msgstr "Une erreur insurmontable de Farsight2 est survenue."
 
-#, fuzzy
 msgid "Conference error"
-msgstr "Erreur de conférence."
-
-#, fuzzy
+msgstr "Erreur de conférence"
+
 msgid "Error with your microphone"
-msgstr "Problème avec votre micro."
-
-#, fuzzy
+msgstr "Problème avec votre micro"
+
 msgid "Error with your webcam"
-msgstr "Problème avec votre webcam."
+msgstr "Problème avec votre webcam"
 
 #, c-format
 msgid "Error creating session: %s"
@@ -3199,10 +3197,12 @@
 msgid "Add to chat..."
 msgstr "Ajouter à la discussion..."
 
+#. 0
 #. Global
 msgid "Available"
 msgstr "Disponible"
 
+#. 1
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
@@ -4024,12 +4024,14 @@
 msgstr "Déconnexion"
 
 # Pour avoir le même texte que « Free for Chat »
+#. 2
 msgid "Chatty"
 msgstr "Libre pour discuter"
 
 msgid "Extended Away"
 msgstr "Longue absence"
 
+#. 3
 msgid "Do Not Disturb"
 msgstr "Ne pas déranger"
 
@@ -4297,6 +4299,7 @@
 msgid "None (To pending)"
 msgstr "Aucune (Destination en attente)"
 
+#. 0
 msgid "None"
 msgstr "Aucun"
 
@@ -4606,9 +4609,8 @@
 msgid "configure:  Configure a chat room."
 msgstr "configure : Configurer un salon de discussions"
 
-#, fuzzy
 msgid "part [message]:  Leave the room."
-msgstr "part [salon] : Quitter le salon"
+msgstr "part [salon] : Quitter le salon."
 
 msgid "register:  Register with a chat room."
 msgstr "register : S'enregistrer dans un salon"
@@ -5280,7 +5282,7 @@
 "Le support de SSL est nécessaire pour MSN. Veuillez installer une "
 "bibliothèque SSL pour l'application."
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Unable to add the buddy %s because the username is invalid.  Usernames must "
 "be valid email addresses."
@@ -5509,9 +5511,8 @@
 msgid "Unknown error (%d)"
 msgstr "Erreur inconnue (%d)"
 
-#, fuzzy
 msgid "Unable to remove user"
-msgstr "Impossible d'ajouter un utilisateur"
+msgstr "Impossible de supprimer l'utilisateur"
 
 msgid "Mobile message was not sent because it was too long."
 msgstr "Le message mobile n'a pas été envoyé parce qu'il est trop long."
@@ -5751,28 +5752,84 @@
 msgid "%s has removed you from his or her buddy list."
 msgstr "L'utilisateur %s vous a supprimé de sa liste de contacts."
 
+#. 1
+msgid "Angry"
+msgstr "En colère"
+
+#. 2
+msgid "Excited"
+msgstr "Excité"
+
+#. 3
+msgid "Grumpy"
+msgstr "Grognon"
+
+#. 4
+msgid "Happy"
+msgstr "Heureux"
+
+#. 5
+msgid "In Love"
+msgstr "Amoureux"
+
+#. 6
+msgid "Invincible"
+msgstr "Invincible"
+
+#. 7
+msgid "Sad"
+msgstr "Triste"
+
+#. 8
+msgid "Hot"
+msgstr "Chaud"
+
+#. 9
+msgid "Sick"
+msgstr "Malade"
+
+#. 10
+msgid "Sleepy"
+msgstr "Somnolant"
+
 #. show current mood
-#, fuzzy
 msgid "Current Mood"
-msgstr "Votre humeur actuelle"
+msgstr "Humeur actuelle"
 
 #. add all moods to list
-#, fuzzy
 msgid "New Mood"
-msgstr "Humeur de l'utilisateur"
-
-#, fuzzy
+msgstr "Nouvelle humeur"
+
 msgid "Change your Mood"
-msgstr "Changer de mot de passe"
-
-#, fuzzy
+msgstr "Changer d'humeur"
+
 msgid "How do you feel right now?"
-msgstr "Je ne suis pas là pour l'instant."
+msgstr "Comment vous sentez-vous ?"
+
+msgid "The PIN you entered is invalid."
+msgstr "Le code d'accès est non valide."
+
+msgid "The PIN you entered has an invalid length [4-10]."
+msgstr "Le code d'accès n'a pas la bonne longueur [4-10]."
+
+msgid "The PIN is invalid. It should only consist of digits [0-9]."
+msgstr ""
+"Le code d'accès est non valide. Il doit être uniquement composé de chiffres."
+
+msgid "The two PINs you entered do not match."
+msgstr "Les nouveaux codes d'accès diffèrent."
+
+msgid "The name you entered is invalid."
+msgstr "Le nom saisi est non valide."
+
+msgid ""
+"The birthday you entered is invalid. The correct format is: 'YYYY-MM-DD'."
+msgstr ""
+"La date de naissance saisie est non valide. Le format est : AAAA-MM-JJ."
 
 #. show error to user
-#, fuzzy
 msgid "Profile Update Error"
-msgstr "Erreur d'écriture"
+msgstr "Erreur à la mise à jour du profil"
 
 #. no profile information yet, so we cannot update
 #. (reference: "libpurple/request.h")
@@ -5781,353 +5838,303 @@
 
 msgid "Your profile information is not yet retrieved. Please try again later."
 msgstr ""
+"Les informations de votre profil n'ont pu être récupérées. Veuillez "
+"réessayer plus tard."
 
 #. pin
-#, fuzzy
 msgid "PIN"
-msgstr "UIN"
+msgstr "Code"
 
 msgid "Verify PIN"
-msgstr ""
+msgstr "Vérification code"
 
 #. display name
-#, fuzzy
 msgid "Display Name"
-msgstr "Nom de famille"
+msgstr "Nom affiché"
 
 #. hidden
 msgid "Hide my number"
-msgstr ""
+msgstr "Cacher mon numéro"
 
 #. mobile number
-#, fuzzy
 msgid "Mobile Number"
 msgstr "Téléphone portable"
 
-#, fuzzy
 msgid "Update your Profile"
-msgstr "Profil de l'utilisateur"
+msgstr "Mettre à jour votre profil"
 
 msgid "Here you can update your MXit profile"
-msgstr ""
+msgstr "Vous pouvez mettre à jour votre profil MXit ici"
 
 msgid "View Splash"
-msgstr ""
+msgstr "Voir la bannière"
 
 msgid "There is no splash-screen currently available"
-msgstr ""
-
-#, fuzzy
+msgstr "Il n'y a pas de bannière disponible pour l'instant"
+
 msgid "About"
-msgstr "À mon propos"
+msgstr "À propos"
 
 #. display / change mood
-#, fuzzy
 msgid "Change Mood..."
-msgstr "Changer de mot de passe..."
+msgstr "Changer d'humeur..."
 
 #. display / change profile
-#, fuzzy
 msgid "Change Profile..."
-msgstr "Changer de mot de passe..."
+msgstr "Changer le profil..."
 
 #. display splash-screen
-#, fuzzy
 msgid "View Splash..."
-msgstr "Voir les archives..."
+msgstr "Voir la bannière..."
 
 #. display plugin version
-#, fuzzy
 msgid "About..."
-msgstr "À mon propos"
+msgstr "À propos..."
 
 #. the file is too big
-#, fuzzy
 msgid "The file you are trying to send is too large!"
-msgstr "Message trop long"
-
-msgid ""
-"Unable to connect to the mxit HTTP server. Please check your server server "
-"settings."
-msgstr ""
-
-#, fuzzy
+msgstr "Le fichier que vous voulez envoyer est trop gros !"
+
+msgid ""
+"Unable to connect to the MXit HTTP server. Please check your server settings."
+msgstr ""
+"Impossible de se connecter au serveur HTTP MXit. Veuillez vérifier votre "
+"configuration."
+
 msgid "Logging In..."
-msgstr "Connexion"
-
-#, fuzzy
-msgid ""
-"Unable to connect to the mxit server. Please check your server server "
-"settings."
-msgstr ""
-"Impossible de se connecter au serveur. Veuillez saisir l'adresse du serveur "
-"sur lequel vous voulez vous connecter."
-
-#, fuzzy
+msgstr "Connexion..."
+
+msgid ""
+"Unable to connect to the MXit server. Please check your server settings."
+msgstr ""
+"Impossible de se connecter au serveur MXit. Veuillez vérifier votre "
+"configuration."
+
 msgid "Connecting..."
-msgstr "Connexion en cours"
+msgstr "Connexion..."
+
+msgid "The nick name you entered is invalid."
+msgstr "Le pseudo saisi est non valide."
+
+msgid "The PIN you entered has an invalid length [7-10]."
+msgstr "Le code d'accès saisi n'a pas la bonne taille [7-10]."
 
 #. mxit login name
 msgid "MXit Login Name"
-msgstr ""
+msgstr "Nom d'utilisateur MXit"
 
 #. nick name
-#, fuzzy
 msgid "Nick Name"
 msgstr "Pseudonyme"
 
 #. show the form to the user to complete
-#, fuzzy
 msgid "Register New MXit Account"
-msgstr "Enregistrer un nouveau compte XMPP"
-
-#, fuzzy
+msgstr "Enregistrer un nouveau compte MXit"
+
 msgid "Please fill in the following fields:"
-msgstr "Veuillez renseigner les rubriques suivantes"
+msgstr "Veuillez renseigner les rubriques suivantes :"
 
 #. no reply from the WAP site
 msgid "Error contacting the MXit WAP site. Please try again later."
 msgstr ""
+"Erreur à la connexion au site WAP de MXit. Veuillez réessayer plus tard."
 
 #. wapserver error
 #. server could not find the user
 msgid ""
 "MXit is currently unable to process the request. Please try again later."
 msgstr ""
+"MXit ne peut gérer cette requête pour l'instant. Veuillez réessayer plus "
+"tard."
 
 msgid "Wrong security code entered. Please try again later."
-msgstr ""
+msgstr "Mauvais code de sécurité saisi. Veuillez réessayer plus tard."
 
 msgid "Your session has expired. Please try again later."
-msgstr ""
+msgstr "Votre session a expirée. Veuillez réessayer plus tard."
 
 msgid "Invalid country selected. Please try again."
-msgstr ""
+msgstr "Pays choisi non valide. Veuillez réessayer plus tard."
 
 msgid "Username is not registered. Please register first."
 msgstr ""
+"Le nom d'utilisateur n'est pas enregistré. Veuillez l'enregistrer d'abord."
 
 msgid "Username is already registered. Please choose another username."
 msgstr ""
-
-#, fuzzy
+"Le nom d'utilisateur est déjà enregistré. Veuillez en choisir un autre."
+
 msgid "Internal error. Please try again later."
-msgstr "Le serveur est non disponible. Veuillez réessayer plus tard."
+msgstr "Erreur interne. Veuillez réessayer plus tard."
 
 msgid "You did not enter the security code"
-msgstr ""
-
-#, fuzzy
+msgstr "Vous n'avez pas saisi le code de sécurité"
+
 msgid "Security Code"
-msgstr "Sécurité activée"
+msgstr "Code de sécurité"
 
 #. ask for input
-#, fuzzy
 msgid "Enter Security Code"
-msgstr "Saisissez le code"
-
-#, fuzzy
+msgstr "Saisissez le code de sécurité"
+
 msgid "Your Country"
-msgstr "Pays"
-
-#, fuzzy
+msgstr "Votre pays"
+
 msgid "Your Language"
-msgstr "Langue préférée"
+msgstr "Votre langue"
 
 #. display the form to the user and wait for his/her input
-#, fuzzy
 msgid "MXit Authorization"
-msgstr "Demande d'autorisation"
+msgstr "Autorisation MXit"
 
 msgid "MXit account validation"
-msgstr ""
-
-#, fuzzy
+msgstr "Validation du compte MXit"
+
 msgid "Retrieving User Information..."
-msgstr "Informations du serveur"
-
-#, fuzzy
+msgstr "Récupération des informations de l'utilisateur..."
+
+msgid "Loading menu..."
+msgstr "Chargement du menu..."
+
 msgid "Status Message"
-msgstr "Messages envoyés"
-
-#, fuzzy
+msgstr "Messages d'état"
+
 msgid "Hidden Number"
-msgstr "Deuxième prénom"
-
-#, fuzzy
+msgstr "Numéro caché"
+
 msgid "Your Mobile Number..."
-msgstr "Changer le numéro de téléphone portable..."
+msgstr "Votre numéro de téléphone portable..."
 
 #. Configuration options
 #. WAP server (reference: "libpurple/accountopt.h")
-#, fuzzy
 msgid "WAP Server"
-msgstr "Serveur"
-
-#, fuzzy
+msgstr "Serveur WAP"
+
 msgid "Connect via HTTP"
-msgstr "Connexion par TCP"
+msgstr "Connexion par HTTP"
 
 msgid "Enable splash-screen popup"
-msgstr ""
+msgstr "Activer l'affichage de la bannière"
 
 #. we must have lost the connection, so terminate it so that we can reconnect
 msgid "We have lost the connection to MXit. Please reconnect."
-msgstr ""
+msgstr "Connexion perdue avec MXit. Veuillez vous reconnecter."
 
 #. packet could not be queued for transmission
-#, fuzzy
 msgid "Message Send Error"
-msgstr "Erreur message XMPP"
-
-#, fuzzy
+msgstr "Erreur à l'envoi du message"
+
 msgid "Unable to process your request at this time"
-msgstr "Impossible de résoudre l'adresse internet."
+msgstr "Impossible d'effectuer votre requête en ce moment."
 
 msgid "Timeout while waiting for a response from the MXit server."
-msgstr ""
-
-#, fuzzy
+msgstr "Temps d'attente dépassé pour la réponse du serveur MXit."
+
 msgid "Successfully Logged In..."
-msgstr "Entrée réussie dans le Qun"
-
-#, fuzzy
+msgstr "Connexion réussie..."
+
+#, c-format
+msgid ""
+"%s sent you an encrypted message, but it is not supported on this client."
+msgstr "%s vous a envoyé un message chiffré, ce qui n'est pas supporté."
+
 msgid "Message Error"
-msgstr "Erreur message XMPP"
+msgstr "Erreur de message"
 
 msgid "Cannot perform redirect using the specified protocol"
-msgstr ""
-
-#, fuzzy
+msgstr "Impossible de faire une redirection avec le protocole utilisé"
+
+msgid "An internal MXit server error occurred."
+msgstr "Une erreur interne au serveur MXit est survenue."
+
+#, c-format
+msgid "Login error: %s (%i)"
+msgstr "Erreur de connexion : %s (%i)"
+
+#, c-format
+msgid "Logout error: %s (%i)"
+msgstr "Erreur de déconnexion : %s (%i)"
+
 msgid "Contact Error"
-msgstr "Erreur de connexion"
-
-#, fuzzy
+msgstr "Erreur de contact"
+
 msgid "Message Sending Error"
-msgstr "Erreur message XMPP"
-
-#, fuzzy
+msgstr "Erreur à l'envoi du message"
+
 msgid "Status Error"
-msgstr "Erreur dans le flux"
-
-#, fuzzy
+msgstr "Erreur de message d'état"
+
 msgid "Mood Error"
-msgstr "Erreur d'icône"
-
-#, fuzzy
+msgstr "Erreur d'humeur"
+
 msgid "Invitation Error"
-msgstr "Erreur de désinscription"
-
-#, fuzzy
+msgstr "Erreur d'invitation"
+
 msgid "Contact Removal Error"
-msgstr "Erreur de connexion"
-
-#, fuzzy
+msgstr "Erreur de suppression de contact"
+
 msgid "Subscription Error"
-msgstr "Inscription"
-
-#, fuzzy
+msgstr "Erreur d'inscription"
+
 msgid "Contact Update Error"
-msgstr "Erreur de connexion"
-
-#, fuzzy
+msgstr "Erreur de mise à jour de contact"
+
 msgid "File Transfer Error"
-msgstr "Transfert de fichier"
-
-#, fuzzy
+msgstr "Erreur de transfert de fichier"
+
 msgid "Cannot create MultiMx room"
-msgstr "Impossible de créer l'alerte"
-
-#, fuzzy
+msgstr "Impossible de créer un salon MultiMx"
+
 msgid "MultiMx Invitation Error"
-msgstr "Erreur de désinscription"
-
-#, fuzzy
+msgstr "Erreur d'invitation MultiMx"
+
 msgid "Profile Error"
-msgstr "Erreur d'écriture"
+msgstr "Erreur de profil"
 
 #. bad packet
 msgid "Invalid packet received from MXit."
-msgstr ""
+msgstr "Paquet de données non valide reçu du serveur MXit."
 
 #. connection error
 msgid "A connection error occurred to MXit. (read stage 0x01)"
-msgstr ""
+msgstr "Erreur de connexion MXit (étape de lecture 0x01)."
 
 #. connection closed
 msgid "A connection error occurred to MXit. (read stage 0x02)"
-msgstr ""
+msgstr "Erreur de connexion MXit (étape de lecture 0x02)."
 
 msgid "A connection error occurred to MXit. (read stage 0x03)"
-msgstr ""
+msgstr "Erreur de connexion MXit (étape de lecture 0x03)."
 
 #. malformed packet length record (too long)
 msgid "A connection error occurred to MXit. (read stage 0x04)"
-msgstr ""
+msgstr "Erreur de connexion MXit (étape de lecture 0x04)."
 
 #. connection error
 msgid "A connection error occurred to MXit. (read stage 0x05)"
-msgstr ""
+msgstr "Erreur de connexion MXit (étape de lecture 0x05)."
 
 #. connection closed
 msgid "A connection error occurred to MXit. (read stage 0x06)"
-msgstr ""
-
-msgid "Angry"
-msgstr "En colère"
-
-msgid "Excited"
-msgstr "Excité"
-
-#, fuzzy
-msgid "Grumpy"
-msgstr "Groupe"
-
-msgid "Happy"
-msgstr "Heureux"
-
-msgid "In Love"
-msgstr "Amoureux"
-
-msgid "Invincible"
-msgstr "Invincible"
-
-msgid "Sad"
-msgstr "Triste"
-
-#, fuzzy
-msgid "Hot"
-msgstr "_Hôte :"
-
-#, fuzzy
-msgid "Sick"
-msgstr "Pseudonyme"
-
-msgid "Sleepy"
-msgstr "Somnolant"
-
-#, fuzzy
+msgstr "Erreur de connexion MXit (étape de lecture 0x06)."
+
 msgid "Pending"
-msgstr "Envoi en cours"
-
-#, fuzzy
+msgstr "En attente"
+
 msgid "Invited"
-msgstr "Inviter"
-
-#, fuzzy
+msgstr "Invité"
+
 msgid "Rejected"
-msgstr "Refuser"
-
-#, fuzzy
+msgstr "Refusé"
+
 msgid "Deleted"
-msgstr "Supprimer"
+msgstr "Supprimé"
 
 msgid "MXit Advertising"
-msgstr ""
-
-#, fuzzy
+msgstr "Publicité MXit"
+
 msgid "More Information"
-msgstr "Informations professionnelles"
+msgstr "Plus d'informations"
 
 #, c-format
 msgid "No such user: %s"
@@ -6908,46 +6915,42 @@
 msgstr "Impossible sur AOL"
 
 msgid "Cannot receive IM due to parental controls"
-msgstr ""
+msgstr "Impossible de recevoir le message à cause du contrôle parental"
 
 msgid "Cannot send SMS without accepting terms"
-msgstr ""
-
-#, fuzzy
+msgstr "Impossible d'envoyer de SMS sans accepter les termes"
+
 msgid "Cannot send SMS"
-msgstr "Impossible d'envoyer le fichier"
+msgstr "Impossible d'envoyer le SMS"
 
 #. SMS_WITHOUT_DISCLAIMER is weird
-#, fuzzy
 msgid "Cannot send SMS to this country"
-msgstr "Impossible d'envoyer un dossier."
+msgstr "Impossible d'envoyer le SMS vers ce pays"
 
 #. Undocumented
 msgid "Cannot send SMS to unknown country"
-msgstr ""
+msgstr "Impossible d'envoyer le SMS vers un pays inconnu"
 
 msgid "Bot accounts cannot initiate IMs"
-msgstr ""
+msgstr "Les comptes Bot ne peuvent pas commencer les conversations"
 
 msgid "Bot account cannot IM this user"
-msgstr ""
+msgstr "Le compte Bot ne peut pas envoyer de message à cette personne"
 
 msgid "Bot account reached IM limit"
-msgstr ""
+msgstr "Le compte Bot a atteint sa limite de messages"
 
 msgid "Bot account reached daily IM limit"
-msgstr ""
+msgstr "Le compte Bot a atteint sa limite de messages quotidiens"
 
 msgid "Bot account reached monthly IM limit"
-msgstr ""
-
-#, fuzzy
+msgstr "Le compte Bot a atteint sa limite de messages mensuels"
+
 msgid "Unable to receive offline messages"
-msgstr "Impossible d'envoyer le message"
-
-#, fuzzy
+msgstr "Impossible de recevoir les messages déconnectés"
+
 msgid "Offline message store full"
-msgstr "Message déconnecté"
+msgstr "Stockage des messages déconnectés plein"
 
 msgid ""
 "(There was an error receiving this message.  The buddy you are speaking with "
@@ -7118,7 +7121,6 @@
 msgstr "Le service est temporairement indisponible."
 
 #. username connecting too frequently
-#, fuzzy
 msgid ""
 "Your username has been connecting and disconnecting too frequently. Wait ten "
 "minutes and try again. If you continue to try, you will need to wait even "
@@ -7136,13 +7138,12 @@
 "à jour sur %s."
 
 #. IP address connecting too frequently
-#, fuzzy
 msgid ""
 "Your IP address has been connecting and disconnecting too frequently. Wait a "
 "minute and try again. If you continue to try, you will need to wait even "
 "longer."
 msgstr ""
-"Vous vous reconnectez trop rapidement. Attendez quelques minutes et "
+"Votre adresse IP se reconnecte trop rapidement. Attendez quelques minutes et "
 "réessayez. Si vous persistez maintenant, il vous faudra attendre encore plus "
 "longtemps."
 
@@ -7291,21 +7292,21 @@
 msgstr[0] "Vous avez raté %hu message de %s pour des raisons inconnues."
 msgstr[1] "Vous avez raté %hu messages de %s pour des raisons inconnues."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to send message: %s (%s)"
-msgstr "Impossible d'envoyer le message (%s)"
+msgstr "Impossible d'envoyer le message : %s (%s)"
 
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Impossible d'envoyer le message : %s"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to send message to %s: %s (%s)"
-msgstr "Impossible d'envoyer le message vers %s :"
-
-#, fuzzy, c-format
+msgstr "Impossible d'envoyer le message vers %s : %s (%s)"
+
+#, c-format
 msgid "Unable to send message to %s: %s"
-msgstr "Impossible d'envoyer le message vers %s :"
+msgstr "Impossible d'envoyer le message vers %s : %s"
 
 #, c-format
 msgid "User information not available: %s"
@@ -7334,13 +7335,12 @@
 "[Impossible d'afficher un message de cet utilisateur car il contient des "
 "caractères non valides.]"
 
-#, fuzzy
 msgid ""
 "The last action you attempted could not be performed because you are over "
 "the rate limit. Please wait 10 seconds and try again.\n"
 msgstr ""
 "La dernière action n'a pas pu être effectuée car vous avez dépassé le quota "
-"limite. Veuillez attendre 10 secondes et réessayer."
+"limite. Veuillez attendre 10 secondes et réessayer.\n"
 
 #, c-format
 msgid "You have been disconnected from chat room %s."
@@ -10197,12 +10197,13 @@
 
 msgid "Can't send SMS. Unable to obtain mobile carrier."
 msgstr ""
+"Impossible d'envoyer le SMS. Impossible de trouver le fournisseur mobile."
 
 msgid "Can't send SMS. Unknown mobile carrier."
-msgstr ""
+msgstr "Impossible d'envoyer le SNS. Fournisseur mobile inconnu."
 
 msgid "Getting mobile carrier to send the SMS."
-msgstr ""
+msgstr "Récupération du fournisseur mobile pour l'envoi du SMS."
 
 #. Write a local message to this conversation showing that a request for a
 #. * Doodle session has been made
@@ -10746,6 +10747,8 @@
 msgid ""
 "Chat over IM.  Supports AIM, Google Talk, Jabber/XMPP, MSN, Yahoo and more"
 msgstr ""
+"Conversation par messages instantanés. Supporte AIM, Google Talk, Jabber/"
+"XMPP, MSN, Yahoo et d'autres"
 
 msgid "Internet Messenger"
 msgstr "Messagerie internet"
@@ -12017,6 +12020,9 @@
 msgid "Mongolian"
 msgstr "Mongol"
 
+msgid "Malay"
+msgstr "Malaisien"
+
 msgid "Bokmål Norwegian"
 msgstr "Norvégien bokmål"
 
@@ -12086,6 +12092,9 @@
 msgid "Turkish"
 msgstr "Turc"
 
+msgid "Ukranian"
+msgstr "Ukrainien"
+
 msgid "Urdu"
 msgstr "Ourdou"
 
@@ -12724,10 +12733,10 @@
 "\n"
 
 msgid "DIR"
-msgstr ""
+msgstr "DOS"
 
 msgid "use DIR for config files"
-msgstr "utilise le dossier DIR pour les fichiers de config"
+msgstr "utilise le dossier DOS pour les fichiers de config"
 
 msgid "print debugging messages to stdout"
 msgstr "affiche les messages de debug sur la sortie standard"
@@ -12745,16 +12754,17 @@
 msgstr "ne pas se connecter automatiquement"
 
 msgid "NAME"
-msgstr ""
-
-#, fuzzy
+msgstr "NOM"
+
 msgid ""
 "enable specified account(s) (optional argument NAME\n"
 "                      specifies account(s) to use, separated by commas.\n"
 "                      Without this only the first account will be enabled)."
 msgstr ""
-"active certains comptes (l'argument facultatif NAME\n"
-"                      spécifie ces comptes, séparés par des virgules."
+"active certains comptes (l'argument facultatif NOM\n"
+"                      spécifie ces comptes, séparés par des "
+"virgules.                      Sans cela, seul le premier compte sera "
+"activé.)"
 
 msgid "X display to use"
 msgstr "affichage X à utiliser"
@@ -13020,21 +13030,19 @@
 msgstr "Événement d'alerte inconnu. Veuillez reporter cette erreur."
 
 msgid "(Custom)"
-msgstr ""
-
-#, fuzzy
-msgid "(Default)"
-msgstr "(défaut)"
+msgstr "(Personnalisé)"
+
+msgid "Penguin Pimps"
+msgstr "Penguin Pimps"
 
 msgid "The default Pidgin sound theme"
-msgstr ""
-
-#, fuzzy
+msgstr "Le thème de sons par défaut Pidgin"
+
 msgid "The default Pidgin buddy list theme"
-msgstr "Éditeur de thème de liste de contacts Pidgin"
+msgstr "Le thème de liste de contacts par défaut Pidgin"
 
 msgid "The default Pidgin status icon theme"
-msgstr ""
+msgstr "Le thème d'icônes par défaut Pidgin"
 
 msgid "Theme failed to unpack."
 msgstr "Le thème de frimousses n'a pas pu être déballé."
@@ -13045,19 +13053,30 @@
 msgid "Theme failed to copy."
 msgstr "Le thème de frimousses n'a pas pu être copié."
 
-msgid "Install Theme"
-msgstr "Installer un thème"
-
-msgid ""
-"Select a smiley theme that you would like to use from the list below. New "
-"themes can be installed by dragging and dropping them onto the theme list."
-msgstr ""
-"Choisissez un thème de frimousses que vous voulez utiliser dans la liste ci-"
-"dessous.  De nouveau thèmes peuvent être installés en les faisant glisser "
-"dans la liste des thèmes."
-
-msgid "Icon"
-msgstr "Icône"
+msgid "Theme Selections"
+msgstr "Choix des thèmes"
+
+#. Instructions
+msgid ""
+"Select a theme that you would like to use from the lists below.\n"
+"New themes can be installed by dragging and dropping them onto the theme "
+"list."
+msgstr ""
+"Choisissez un thème que vous voulez utiliser dans la liste ci-dessous.\n"
+"De nouveau thèmes peuvent être installés en les faisant glisser dans la "
+"liste des thèmes."
+
+msgid "Buddy List Theme:"
+msgstr "Thème de liste de contacts :"
+
+msgid "Status Icon Theme:"
+msgstr "Thème d'icônes d'état :"
+
+msgid "Sound Theme:"
+msgstr "Thème de sons :"
+
+msgid "Smiley Theme:"
+msgstr "Thèmes de frimousses :"
 
 msgid "Keyboard Shortcuts"
 msgstr "Raccourcis clavier"
@@ -13065,10 +13084,6 @@
 msgid "Cl_ose conversations with the Escape key"
 msgstr "Fermer les conversations avec la touche _Echap"
 
-#. Buddy List Themes
-msgid "Buddy List Theme"
-msgstr "Thème de liste de contacts"
-
 #. System Tray
 msgid "System Tray Icon"
 msgstr "Icône de notification"
@@ -13155,9 +13170,6 @@
 msgid "Font"
 msgstr "Police"
 
-msgid "Use document font from _theme"
-msgstr "Utiliser la police de document du _thème"
-
 msgid "Use font from _theme"
 msgstr "Utiliser la police du thème"
 
@@ -13180,15 +13192,13 @@
 msgid "Cannot start browser configuration program."
 msgstr "Impossible de lancer le programme de configuration du navigateur."
 
-#, fuzzy
 msgid "Disabled"
-msgstr "_Désactiver"
+msgstr "Désactivé"
 
 #, c-format
 msgid "Use _automatically detected IP address: %s"
 msgstr "_Détection auto de l'adresse IP : %s"
 
-#, fuzzy
 msgid "ST_UN server:"
 msgstr "Serveur ST_UN :"
 
@@ -13204,78 +13214,27 @@
 msgid "_Enable automatic router port forwarding"
 msgstr "_Activer la redirection automatique des ports du routeur"
 
-#, fuzzy
 msgid "_Manually specify range of ports to listen on:"
-msgstr "Spécifier _manuellement la plage de ports à écouter"
-
-#, fuzzy
+msgstr "Spécifier _manuellement la plage de ports à écouter :"
+
 msgid "_Start:"
-msgstr "É_tat :"
-
-#, fuzzy
+msgstr "_Début :"
+
 msgid "_End:"
-msgstr "_Etendre"
+msgstr "_Fin :"
 
 #. TURN server
 msgid "Relay Server (TURN)"
 msgstr "Serveur relai (TURN)"
 
-#, fuzzy
 msgid "_TURN server:"
-msgstr "Serveur ST_UN :"
-
-#, fuzzy
+msgstr "Serveur _TURN :"
+
 msgid "Use_rname:"
-msgstr "Utilisateur :"
-
-#, fuzzy
+msgstr "Utilisateu_r :"
+
 msgid "Pass_word:"
-msgstr "Mot de passe :"
-
-msgid "Proxy Server &amp; Browser"
-msgstr "Serveur proxy &amp; navigateur"
-
-msgid "<b>Proxy configuration program was not found.</b>"
-msgstr "<b>Le programme de configuration de proxy n'a pas été trouvé.</b>"
-
-msgid "<b>Browser configuration program was not found.</b>"
-msgstr "<b>Le programme de configuration du navigateur n'a pas été trouvé.</b>"
-
-msgid ""
-"Proxy & Browser preferences are configured\n"
-"in GNOME Preferences"
-msgstr ""
-"Le choix du serveur proxy & navigateur\n"
-"est géré par les options de GNOME"
-
-msgid "Configure _Proxy"
-msgstr "_Configurer le proxy"
-
-msgid "Configure _Browser"
-msgstr "_Configurer le navigateur"
-
-msgid "Proxy Server"
-msgstr "Serveur proxy"
-
-#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
-#, fuzzy
-msgid "Use remote _DNS with SOCKS4 proxies"
-msgstr "Utiliser une DNS distantes avec SOCKS4"
-
-#, fuzzy
-msgid "Proxy t_ype:"
-msgstr "_Type :"
-
-msgid "No proxy"
-msgstr "Aucun"
-
-#, fuzzy
-msgid "P_ort:"
-msgstr "_Port :"
-
-#, fuzzy
-msgid "User_name:"
-msgstr "Utilisateur :"
+msgstr "Mot de _passe :"
 
 msgid "Seamonkey"
 msgstr "Seamonkey"
@@ -13316,6 +13275,15 @@
 msgid "Browser Selection"
 msgstr "Choix du navigateur"
 
+msgid "Browser preferences are configured in GNOME preferences"
+msgstr "Le choix du navigateur est géré par les options de GNOME"
+
+msgid "<b>Browser configuration program was not found.</b>"
+msgstr "<b>Le programme de configuration du navigateur n'a pas été trouvé.</b>"
+
+msgid "Configure _Browser"
+msgstr "_Configurer le navigateur"
+
 msgid "_Browser:"
 msgstr "_Navigateur :"
 
@@ -13339,6 +13307,35 @@
 "_Manuel :\n"
 "(%s pour l'URL)"
 
+msgid "Proxy Server"
+msgstr "Serveur proxy"
+
+msgid "Proxy preferences are configured in GNOME preferences"
+msgstr "Le choix du serveur proxy est géré par les options de GNOME"
+
+msgid "<b>Proxy configuration program was not found.</b>"
+msgstr "<b>Le programme de configuration de proxy n'a pas été trouvé.</b>"
+
+msgid "Configure _Proxy"
+msgstr "_Configurer le proxy"
+
+#. This is a global option that affects SOCKS4 usage even with
+#. * account-specific proxy settings
+msgid "Use remote _DNS with SOCKS4 proxies"
+msgstr "Utiliser une _DNS distantes avec SOCKS4"
+
+msgid "Proxy t_ype:"
+msgstr "_Typede proxy :"
+
+msgid "No proxy"
+msgstr "Aucun"
+
+msgid "P_ort:"
+msgstr "_Port :"
+
+msgid "User_name:"
+msgstr "Utilisateur :"
+
 msgid "Log _format:"
 msgstr "_Format des archives :"
 
@@ -13422,25 +13419,18 @@
 msgid "Based on keyboard or mouse use"
 msgstr "Selon l'activité du clavier ou de la souris"
 
+msgid "_Minutes before becoming idle:"
+msgstr "_Minutes avant de passer inactif :"
+
+msgid "Change to this status when _idle:"
+msgstr "Changer vers cet état lorsque _inactif :"
+
 msgid "_Auto-reply:"
 msgstr "_Réponse automatique :"
 
 msgid "When both away and idle"
 msgstr "Lorsque absent et inactif"
 
-#. Auto-away stuff
-msgid "Auto-away"
-msgstr "Absence automatique"
-
-msgid "_Minutes before becoming idle:"
-msgstr "_Minutes avant de passer inactif :"
-
-msgid "Change status when _idle"
-msgstr "Changer d'état lorsque _inactif"
-
-msgid "Change _status to:"
-msgstr "_Changer l'état en :"
-
 #. Signon status stuff
 msgid "Status at Startup"
 msgstr "État au démarrage"
@@ -13454,15 +13444,15 @@
 msgid "Interface"
 msgstr "Interface"
 
-msgid "Smiley Themes"
-msgstr "Thèmes des frimousses"
-
 msgid "Browser"
 msgstr "Navigateur"
 
 msgid "Status / Idle"
 msgstr "État / Inactivité"
 
+msgid "Themes"
+msgstr "Thèmes"
+
 msgid "Allow all users to contact me"
 msgstr "Permettre à tous les utilisateurs de me contacter"
 
@@ -13809,9 +13799,6 @@
 msgid "Pidgin smileys"
 msgstr "Frimousses de Pidgin"
 
-msgid "Penguin Pimps"
-msgstr "Penguin Pimps"
-
 msgid "Selecting this disables graphical emoticons."
 msgstr "Ce choix désactive les frimousses graphiques."
 
@@ -14462,6 +14449,9 @@
 msgid "Conversation Entry"
 msgstr "Ligne de conversation"
 
+msgid "Conversation History"
+msgstr "Historique des conversations"
+
 msgid "Request Dialog"
 msgstr "Boite de message pour requête"
 
@@ -14925,9 +14915,8 @@
 msgid "_Start %s on Windows startup"
 msgstr "_Démarrer %s au lancement de Windows"
 
-#, fuzzy
 msgid "Allow multiple instances"
-msgstr "autoriser plusieurs instances du logiciel"
+msgstr "Autoriser plusieurs instances"
 
 msgid "_Dockable Buddy List"
 msgstr "Liste de contacts _accrochable"
@@ -14990,6 +14979,22 @@
 msgstr "Ce plugin est utile pour débugger les clients ou serveurs XMPP."
 
 #, fuzzy
+#~ msgid "(Default)"
+#~ msgstr "(défaut)"
+
+#~ msgid "Install Theme"
+#~ msgstr "Installer un thème"
+
+#~ msgid "Icon"
+#~ msgstr "Icône"
+
+#~ msgid "Auto-away"
+#~ msgstr "Absence automatique"
+
+#~ msgid "Change _status to:"
+#~ msgstr "_Changer l'état en :"
+
+#, fuzzy
 #~ msgid "The root certificate this one claims to be issued by is unknown."
 #~ msgstr ""
 #~ "Le certificat racine dont est prétendu issu ce certificat est inconnu de "
@@ -15010,9 +15015,6 @@
 #~ msgid "GTK+ Runtime Version"
 #~ msgstr "Version des bibliothèques GTK+"
 
-#~ msgid "Without this only the first account will be enabled)."
-#~ msgstr "Sans cela, seul le premier compte sera activé.)"
-
 #~ msgid "Calling ... "
 #~ msgstr "Appel... "
 
@@ -15507,9 +15509,6 @@
 #~ msgid "Burmese"
 #~ msgstr "Birman"
 
-#~ msgid "Ukrainian"
-#~ msgstr "Ukrainien"
-
 #~ msgid "Xhosa"
 #~ msgstr "Xhosa"