changeset 32649:626efe139f98

propagate from branch 'im.pidgin.pidgin' (head c22777dae7e766426b17df35dbf42ba6d49bf820) to branch 'im.pidgin.cpw.qulogic.gtk3' (head 1887cd5f7ea1e4bc0950747da36d56d618ecd105)
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Sat, 12 Feb 2011 23:54:14 +0000
parents a7397a3d67ef (current diff) 1b1f9d6b25d0 (diff)
children 20af3cc69543
files configure.ac pidgin/gtkutils.c pidgin/plugins/vvconfig.c
diffstat 111 files changed, 4232 insertions(+), 3697 deletions(-) [+]
line wrap: on
line diff
--- a/COPYRIGHT	Sun Jan 09 23:32:10 2011 +0000
+++ b/COPYRIGHT	Sat Feb 12 23:54:14 2011 +0000
@@ -81,6 +81,7 @@
 Norbert Buchmuller
 Johannes Buchner
 Sean Burke
+Gabriel Burt
 Thomas Butter
 Trevor Caira
 Andrea Canciani
@@ -131,6 +132,7 @@
 Florian Delizy
 Jiri Denemark
 Vinicius Depizzol
+Marc Dequènes
 Philip Derrin
 Taso N. Devetzis
 Balwinder Singh Dheeman
@@ -279,6 +281,7 @@
 Joe LaPenna
 Steve Láposi
 Daniel Larsson
+Julia Lawall
 Peter Lawler
 Vadim Lebedev
 Ho-seok Lee
@@ -377,6 +380,7 @@
 Riley Patterson
 Havoc Pennington
 Ted Percival
+Hugo Pereira Da Costa
 Eduardo Pérez
 Matt Perry
 Ani Peter
@@ -411,6 +415,7 @@
 Etan Reisner
 David Reiss
 Luoh Ren-Shan
+Noa Resare
 Daniele Ricci
 Kristian Rietveld
 Pekka Riikonen
@@ -580,6 +585,7 @@
 Timmy Yee
 Li Yuan
 Yuriy Yevgrafov
+Jan Zachorowski
 Nickolai Zeldovich
 Tom Zickel
 Marco Ziech
--- a/ChangeLog	Sun Jan 09 23:32:10 2011 +0000
+++ b/ChangeLog	Sat Feb 12 23:54:14 2011 +0000
@@ -1,14 +1,29 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
-version 2.7.10 (??/??/????):
+version 2.7.11 (??/??/????):
+	General:
+	* Our bundled libgadu should now build on HP-UX.
+
+version 2.7.10 (02/06/2011):
 	General:
 	* Force video sources to all have the same capabilities.  This reduces the
 	  number of times video must be scaled down, saving CPU time. (Jakub Adam)
 	  (half of #13095)
 	* Starting multiple video calls and ending one no longer causes the other
-	  calls to stop sending audio and video. (Jakub Adam) (#12758)
+	  calls to stop sending audio and video. (Jakub Adam) (#12758, #13237)
 	* Perl bindings now respect LDFLAGS. (Peter Volkov, Markos Chandras)
 	  (#12638)
+	* Added AddTrust External Root CA.  (#11554)
+	* Resolve some issues validating X.509 certificates signed off the CAcert
+	  Class 3 intermediate cert when using the GnuTLS SSL/TLS plugin.
+
+	Gadu-Gadu:
+	* Don't drop whole messages when text is colored. (Jan Zachorowski)
+	  (#13259)
+
+	Groupwise:
+	* Don't show two windows when using "Get Info" on a buddy. (Gabriel Burt;
+	  Novell, Inc.) (#13108)
 
 	IRC:
 	* Don't send ISON messages longer than 512 bytes. (Jeffrey Honig) (#9692)
@@ -21,16 +36,25 @@
 	  Samstag) (#13073)
 	* Fixed bugs in purple_str_to_time() that caused the most recent 'make
 	  check' failures.  (Nader Morshed) (#13131)
+	* Correct an issue that caused some UIs other than Pidgin or Finch to
+	  leave a buddy in the "is typing" state.  (Jan Kaluza)
+	* Fix potential information disclosure issues in the Cipher code.  (Julia
+	  Lawall)
 
 	Pidgin:
 	* Support using the Page Up and Page Down keys on the numeric keypad in
 	  the conversation window.  (Ryan Flegel) (#13127)
 	* Fix a few memory leaks. (Nader Morshed) (#13162)
 	* Support rendering strikethrough when received as in-line CSS. (#13168)
+	* Editable comboboxes are now more friendly to some GTK+ themes. (Hugo
+	  Pereira Da Costa) (#13164).
 
 	Plugins:
 	* The Voice/Video Settings plugin no longer resets selected devices to
 	  defaults. (Jakub Adam) (#13044)
+	* The Voice/Video Settings plugin no longer crashes when a stored device
+	  name is not found in the list of available devices. (Jakub Adam)
+	  (#13238)
 	* The Autoaccept plugin now allows disabling filename escaping. (Rok
 	  Mandeljc) (half of #11459)
 	* The Autoaccept plugin now allows choosing Reject/Ask/Accept for
@@ -42,6 +66,11 @@
 	XMPP:
 	* Don't crash when receiving an unexpected/invalid jingle transport type.
 	  (Nikita Kozlov) (#13136)
+	* Handle Connection: Close headers for BOSH, when the server does not
+	  terminate the connection itself. (#13008)
+	* Improved parsing for DIGEST-MD5, which should resolve issues
+	  connecting to some jabberd2 servers.  This corrects an issue parsing
+	  one-character or empty elements. (Noa Resare) (#a14514)
 
 	Yahoo!/Yahoo! JAPAN:
 	* Fix a crash when an account disconnects before a p2p session is
@@ -927,7 +956,7 @@
 	  from you on MSN.
 	* Support sending an invite message to buddies when requesting
 	  authorization from them on MSN.
-	* Timeout switchboard connections aggressively (60 seconds).
+	* Timeout switchboard connections after 60 seconds (msn-pecan devs).
 
 	XMPP:
 	* Voice & Video support with Jingle (XEP-0166, 0167, 0176, & 0177),
--- a/ChangeLog.API	Sun Jan 09 23:32:10 2011 +0000
+++ b/ChangeLog.API	Sat Feb 12 23:54:14 2011 +0000
@@ -1,6 +1,11 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
-version 2.7.9 (??/??/????):
+version 2.7.11 (??/??/????):
+
+version 2.7.10 (02/06/2011):
+	* No changes
+
+version 2.7.9 (12/26/2010):
 	* No changes
 
 version 2.7.8 (12/19/2010):
--- a/NEWS	Sun Jan 09 23:32:10 2011 +0000
+++ b/NEWS	Sat Feb 12 23:54:14 2011 +0000
@@ -2,7 +2,13 @@
 
 Our development blog is available at: http://planet.pidgin.im
 
-2.7.10 (??/??/????):
+2.7.11 (??/??/????):
+
+2.7.10 (02/06/2011):
+	John: It's release time again.  This release contains a bunch of stuff
+	committed from Trac.  This is another "thank a patch writer" release.
+	Unfortunately, no one has fixed our wonderful MSN issues yet.  There is
+	a tiny security fix in this release, as well.
 
 2.7.9 (12/26/2010):
 	John: Just a quick release for a security fix here.  Elliott has not
--- a/configure.ac	Sun Jan 09 23:32:10 2011 +0000
+++ b/configure.ac	Sat Feb 12 23:54:14 2011 +0000
@@ -46,7 +46,7 @@
 m4_define([purple_lt_current], [7])
 m4_define([purple_major_version], [2])
 m4_define([purple_minor_version], [7])
-m4_define([purple_micro_version], [10])
+m4_define([purple_micro_version], [11])
 m4_define([purple_version_suffix], [devel])
 m4_define([purple_version],
           [purple_major_version.purple_minor_version.purple_micro_version])
@@ -55,7 +55,7 @@
 m4_define([gnt_lt_current], [8])
 m4_define([gnt_major_version], [2])
 m4_define([gnt_minor_version], [8])
-m4_define([gnt_micro_version], [6])
+m4_define([gnt_micro_version], [7])
 m4_define([gnt_version_suffix], [devel])
 m4_define([gnt_version],
           [gnt_major_version.gnt_minor_version.gnt_micro_version])
@@ -329,7 +329,7 @@
 dnl #######################################################################
 dnl # Check for GLib 2.12 (required)
 dnl #######################################################################
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0 gio-2.0 gobject-2.0 gmodule-2.0 gthread-2.0], , [
+PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.12.0 gobject-2.0 gmodule-2.0 gthread-2.0], , [
 	AC_MSG_RESULT(no)
 	AC_MSG_ERROR([
 
--- a/libpurple/certificate.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/certificate.c	Sat Feb 12 23:54:14 2011 +0000
@@ -1602,7 +1602,7 @@
 	GSList *ca_crts, *cur;
 	GByteArray *last_fpr, *ca_fpr;
 	gboolean valid = FALSE;
-	gchar *ca_id;
+	gchar *ca_id, *ca2_id;
 
 	peer_crt = (PurpleCertificate *) chain->data;
 
@@ -1619,7 +1619,6 @@
 		return;
 	} /* if (self signed) */
 
-	/* Next, attempt to verify the last certificate against a CA */
 	ca = purple_certificate_find_pool(x509_tls_cached.scheme_name, "ca");
 
 	/* Next, check that the certificate chain is valid */
@@ -1669,6 +1668,9 @@
 		return;
 	} /* if (signature chain not good) */
 
+	/* Next, attempt to verify the last certificate is signed by a trusted
+	 * CA, or is a trusted CA (based on fingerprint).
+	 */
 	/* If, for whatever reason, there is no Certificate Authority pool
 	   loaded, we'll verify the subject name and then warn about thsi. */
 	if ( !ca ) {
@@ -1684,27 +1686,31 @@
 
 	end_crt = g_list_last(chain)->data;
 
-	/* Attempt to look up the last certificate's issuer */
-	ca_id = purple_certificate_get_issuer_unique_id(end_crt);
+	/* Attempt to look up the last certificate, and the last certificate's
+	 * issuer. 
+	 */
+	ca_id  = purple_certificate_get_issuer_unique_id(end_crt);
+	ca2_id = purple_certificate_get_unique_id(end_crt);
 	purple_debug_info("certificate/x509/tls_cached",
 			  "Checking for a CA with DN=%s\n",
 			  ca_id);
-	ca_crts = x509_ca_get_certs(ca_id);
+	purple_debug_info("certificate/x509/tls_cached",
+			  "Also checking for a CA with DN=%s\n",
+			  ca2_id);
+	ca_crts = g_slist_concat(x509_ca_get_certs(ca_id), x509_ca_get_certs(ca2_id));
+	g_free(ca_id);
+	g_free(ca2_id);
 	if ( NULL == ca_crts ) {
 		flags |= PURPLE_CERTIFICATE_CA_UNKNOWN;
 
 		purple_debug_warning("certificate/x509/tls_cached",
-				  "Certificate Authority with DN='%s' not "
-				  "found. I'll prompt the user, I guess.\n",
-				  ca_id);
-		g_free(ca_id);
+				  "No Certificate Authorities with either DN found "
+				  "found. I'll prompt the user, I guess.\n");
 
 		x509_tls_cached_check_subject_name(vrq, flags);
 		return;
 	}
 
-	g_free(ca_id);
-
 	/*
 	 * Check the fingerprints; if they match, then this certificate *is* one
 	 * of the designated "trusted roots", and we don't need to verify the
@@ -1714,10 +1720,6 @@
 	 *
 	 * If the fingerprints don't match, we'll fall back to checking the
 	 * signature.
-	 *
-	 * GnuTLS doesn't seem to include the final root in the verification
-	 * list, so this check will never succeed.  NSS *does* include it in
-	 * the list, so here we are.
 	 */
 	last_fpr = purple_certificate_get_fingerprint_sha1(end_crt);
 	for (cur = ca_crts; cur; cur = cur->next) {
--- a/libpurple/cipher.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/cipher.c	Sat Feb 12 23:54:14 2011 +0000
@@ -249,7 +249,7 @@
 	purple_cipher_context_reset(context, NULL);
 
 	md5_context = purple_cipher_context_get_data(context);
-	memset(md5_context, 0, sizeof(md5_context));
+	memset(md5_context, 0, sizeof(*md5_context));
 
 	g_free(md5_context);
 	md5_context = NULL;
@@ -705,7 +705,7 @@
 	purple_cipher_context_reset(context, NULL);
 
 	md4_context = purple_cipher_context_get_data(context);
-	memset(md4_context, 0, sizeof(md4_context));
+	memset(md4_context, 0, sizeof(*md4_context));
 
 	g_free(md4_context);
 	md4_context = NULL;
@@ -1356,7 +1356,7 @@
 	struct _des_ctx *des_context;
 
 	des_context = purple_cipher_context_get_data(context);
-	memset(des_context, 0, sizeof(des_context));
+	memset(des_context, 0, sizeof(*des_context));
 
 	g_free(des_context);
 	des_context = NULL;
@@ -1706,7 +1706,7 @@
 	struct _des3_ctx *des3_context;
 
 	des3_context = purple_cipher_context_get_data(context);
-	memset(des3_context, 0, sizeof(des3_context));
+	memset(des3_context, 0, sizeof(*des3_context));
 
 	g_free(des3_context);
 	des3_context = NULL;
@@ -2382,7 +2382,7 @@
 	struct RC4Context *rc4_ctx;
 
 	rc4_ctx = purple_cipher_context_get_data(context);
-	memset(rc4_ctx, 0, sizeof(rc4_ctx));
+	memset(rc4_ctx, 0, sizeof(*rc4_ctx));
 
 	g_free(rc4_ctx);
 	rc4_ctx = NULL;
@@ -2828,7 +2828,7 @@
 	if(cipher->ops && cipher->ops->uninit)
 		cipher->ops->uninit(context);
 
-	memset(context, 0, sizeof(context));
+	memset(context, 0, sizeof(*context));
 	g_free(context);
 	context = NULL;
 }
--- a/libpurple/conversation.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/conversation.c	Sat Feb 12 23:54:14 2011 +0000
@@ -999,12 +999,6 @@
 		}
 	}
 
-	if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
-		if ((flags & PURPLE_MESSAGE_RECV) == PURPLE_MESSAGE_RECV) {
-			purple_conv_im_set_typing_state(PURPLE_CONV_IM(conv), PURPLE_NOT_TYPING);
-		}
-	}
-
 	if (ops && ops->write_conv)
 		ops->write_conv(conv, who, alias, displayed, flags, mtime);
 
@@ -1229,6 +1223,10 @@
 		c->ui_ops->write_im(c, who, message, flags, mtime);
 	else
 		purple_conversation_write(c, who, message, flags, mtime);
+
+	if ((flags & PURPLE_MESSAGE_RECV) == PURPLE_MESSAGE_RECV) {
+		purple_conv_im_set_typing_state(im, PURPLE_NOT_TYPING);
+	}
 }
 
 gboolean purple_conv_present_error(const char *who, PurpleAccount *account, const char *what)
--- a/libpurple/media/backend-fs2.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/media/backend-fs2.c	Sat Feb 12 23:54:14 2011 +0000
@@ -155,6 +155,44 @@
 {
 }
 
+static gboolean
+event_probe_cb(GstPad *srcpad, GstEvent *event, gboolean release_pad)
+{
+	if (GST_EVENT_TYPE(event) == GST_EVENT_CUSTOM_DOWNSTREAM
+		&& gst_event_has_name(event, "purple-unlink-tee")) {
+
+		const GstStructure *s = gst_event_get_structure(event);
+
+		gst_pad_unlink(srcpad, gst_pad_get_peer(srcpad));
+
+		gst_pad_remove_event_probe(srcpad,
+			g_value_get_uint(gst_structure_get_value(s, "handler-id")));
+
+		if (g_value_get_boolean(gst_structure_get_value(s, "release-pad")))
+			gst_element_release_request_pad(GST_ELEMENT_PARENT(srcpad), srcpad);
+
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static void
+unlink_teepad_dynamic(GstPad *srcpad, gboolean release_pad)
+{
+	guint id = gst_pad_add_event_probe(srcpad, G_CALLBACK(event_probe_cb), NULL);
+
+	if (GST_IS_GHOST_PAD(srcpad))
+		srcpad = gst_ghost_pad_get_target(GST_GHOST_PAD(srcpad));
+
+	gst_element_send_event(gst_pad_get_parent_element(srcpad),
+		gst_event_new_custom(GST_EVENT_CUSTOM_DOWNSTREAM,
+			gst_structure_new("purple-unlink-tee",
+				"release-pad", G_TYPE_BOOLEAN, release_pad,
+				"handler-id", G_TYPE_UINT, id,
+				NULL)));
+}
+
 static void
 purple_media_backend_fs2_dispose(GObject *obj)
 {
@@ -179,7 +217,7 @@
 					g_list_delete_link(sessions, sessions)) {
 				PurpleMediaBackendFs2Session *session = sessions->data;
 				if (session->srcpad) {
-					gst_pad_set_blocked(session->srcpad, TRUE);
+					unlink_teepad_dynamic(session->srcpad, FALSE);
 					gst_object_unref(session->srcpad);
 					session->srcpad = NULL;
 				}
--- a/libpurple/mediamanager.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/mediamanager.c	Sat Feb 12 23:54:14 2011 +0000
@@ -400,7 +400,6 @@
 	GstIteratorResult result;
 
 	gst_element_release_request_pad(GST_ELEMENT_PARENT(pad), pad);
-	gst_pad_set_blocked(pad, FALSE);
 
 	iter = gst_element_iterate_src_pads(parent);
 
--- a/libpurple/protocols/gg/gg.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/gg/gg.c	Sat Feb 12 23:54:14 2011 +0000
@@ -1464,6 +1464,10 @@
 				increased_len += 4;
 				under = FALSE;
 			}
+
+			if (actformat->font & GG_FONT_COLOR) {
+				cformats += sizeof(struct gg_msg_richtext_color);
+			}
 		}
 
 		msg = message->str;
--- a/libpurple/protocols/gg/lib/libgadu.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/gg/lib/libgadu.h	Sat Feb 12 23:54:14 2011 +0000
@@ -117,7 +117,7 @@
 typedef unsigned short uint16_t;
 typedef unsigned int   uint32_t;
 
-#if !defined(__CYGWIN__) && !defined(__SunOS)
+#if !defined(__CYGWIN__) && !defined(__SunOS) && !defined(_INCLUDE_HPUX_SOURCE)
 #define __int8_t_defined
 typedef   signed char    int8_t;
 typedef   signed short  int16_t;
--- a/libpurple/protocols/jabber/Makefile.am	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/jabber/Makefile.am	Sat Feb 12 23:54:14 2011 +0000
@@ -11,6 +11,7 @@
 			  auth.c \
 			  auth.h \
 			  auth_digest_md5.c \
+			  auth_digest_md5.h \
 			  auth_plain.c \
 			  auth_scram.c \
 			  auth_scram.h \
--- a/libpurple/protocols/jabber/auth_cyrus.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/jabber/auth_cyrus.c	Sat Feb 12 23:54:14 2011 +0000
@@ -520,9 +520,12 @@
 		g_free(dec_in);
 
 		if (js->sasl_state != SASL_OK) {
-			/* This should never happen! */
+			/* This happens when the server sends back jibberish
+			 * in the "additional data with success" case.
+			 * Seen with Wildfire 3.0.1.
+			 */
 			*error = g_strdup(_("Invalid response from server"));
-			g_return_val_if_reached(JABBER_SASL_STATE_FAIL);
+			return JABBER_SASL_STATE_FAIL;
 		}
 	}
 
--- a/libpurple/protocols/jabber/auth_digest_md5.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/jabber/auth_digest_md5.c	Sat Feb 12 23:54:14 2011 +0000
@@ -27,6 +27,7 @@
 #include "util.h"
 #include "xmlnode.h"
 
+#include "auth_digest_md5.h"
 #include "auth.h"
 #include "jabber.h"
 
@@ -43,7 +44,7 @@
 }
 
 /* Parts of this algorithm are inspired by stuff in libgsasl */
-static GHashTable* parse_challenge(const char *challenge)
+GHashTable* jabber_auth_digest_md5_parse(const char *challenge)
 {
 	const char *token_start, *val_start, *val_end, *cur;
 	GHashTable *ret = g_hash_table_new_full(g_str_hash, g_str_equal,
@@ -77,12 +78,12 @@
 					val_start++;
 
 				val_end = cur;
-				while (val_end != val_start && (*val_end == ' ' || *val_end == ',' || *val_end == '\t'
+				while (val_end >= val_start && (*val_end == ' ' || *val_end == ',' || *val_end == '\t'
 						|| *val_end == '\r' || *val_end == '\n'
 						|| *val_end == '"'  || *val_end == '\0'))
 					val_end--;
 
-				if (val_start != val_end)
+				if (val_end - val_start + 1 >= 0)
 					value = g_strndup(val_start, val_end - val_start + 1);
 			}
 
@@ -186,7 +187,7 @@
 			dec_in != NULL ? strlen(dec_in) : 0,
 			dec_in != NULL  ? dec_in : "(null)");
 
-	parts = parse_challenge(dec_in);
+	parts = jabber_auth_digest_md5_parse(dec_in);
 
 	if (g_hash_table_lookup(parts, "rspauth")) {
 		char *rspauth = g_hash_table_lookup(parts, "rspauth");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/jabber/auth_digest_md5.h	Sat Feb 12 23:54:14 2011 +0000
@@ -0,0 +1,39 @@
+/**
+ * @file auth_digest_md5.h Implementation of SASL DIGEST-MD5 authentication
+ *
+ * purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+#ifndef PURPLE_JABBER_AUTH_DIGEST_MD5_H_
+#define PURPLE_JABBER_AUTH_DIGEST_MD5_H_
+
+#include "internal.h"
+
+/*
+ * Every function in this file is ONLY exposed for tests.
+ * DO NOT USE ANYTHING HERE OR YOU WILL BE SENT TO THE PIT OF DESPAIR.
+ */
+
+/*
+ * Parse a DIGEST-MD5 challenge.
+ */
+GHashTable *jabber_auth_digest_md5_parse(const char *challenge);
+
+#endif /* PURPLE_JABBER_AUTH_DIGEST_MD5_H_ */
--- a/libpurple/protocols/jabber/bosh.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/jabber/bosh.c	Sat Feb 12 23:54:14 2011 +0000
@@ -108,8 +108,27 @@
 	int requests; /* number of outstanding HTTP requests */
 
 	gboolean headers_done;
+	gboolean close;
+};
 
-};
+static void
+debug_dump_http_connections(PurpleBOSHConnection *conn)
+{
+	int i;
+
+	g_return_if_fail(conn != NULL);
+
+	for (i = 0; i < NUM_HTTP_CONNECTIONS; ++i) {
+		PurpleHTTPConnection *httpconn = conn->connections[i];
+		if (httpconn == NULL)
+			purple_debug_misc("jabber", "BOSH %p->connections[%d] = (nil)\n",
+			                  conn, i);
+		else
+			purple_debug_misc("jabber", "BOSH %p->connections[%d] = %p, state = %d"
+			                  ", requests = %d\n", conn, i, httpconn,
+			                  httpconn->state, httpconn->requests);
+	}
+}
 
 static void http_connection_connect(PurpleHTTPConnection *conn);
 static void http_connection_send_request(PurpleHTTPConnection *conn,
@@ -263,18 +282,8 @@
 {
 	int i;
 
-	if (purple_debug_is_verbose()) {
-		for (i = 0; i < NUM_HTTP_CONNECTIONS; ++i) {
-			PurpleHTTPConnection *httpconn = conn->connections[i];
-			if (httpconn == NULL)
-				purple_debug_misc("jabber", "BOSH %p->connections[%d] = (nil)\n",
-				                  conn, i);
-			else
-				purple_debug_misc("jabber", "BOSH %p->connections[%d] = %p, state = %d"
-				                  ", requests = %d\n", conn, i, httpconn,
-				                  httpconn->state, httpconn->requests);
-		}
-	}
+	if (purple_debug_is_verbose())
+		debug_dump_http_connections(conn);
 
 	/* Easy solution: Does everyone involved support pipelining? Hooray! Just use
 	 * one TCP connection! */
@@ -297,11 +306,23 @@
 			return NULL;
 	}
 
-	/* Third loop, look for one that's NULL and create a new connection */
+	/* Third loop, is something offline that we can connect? */
+	for (i = 0; i < NUM_HTTP_CONNECTIONS; ++i) {
+		if (conn->connections[i] &&
+				conn->connections[i]->state == HTTP_CONN_OFFLINE) {
+			purple_debug_info("jabber", "bosh: Reconnecting httpconn "
+			                            "(%i, %p)\n", i, conn->connections[i]);
+			http_connection_connect(conn->connections[i]);
+			return NULL;
+		}
+	}
+
+	/* Fourth loop, look for one that's NULL and create a new connection */
 	for (i = 0; i < NUM_HTTP_CONNECTIONS; ++i) {
 		if (!conn->connections[i]) {
-			purple_debug_info("jabber", "bosh: Creating and connecting new httpconn\n");
 			conn->connections[i] = jabber_bosh_http_connection_init(conn);
+			purple_debug_info("jabber", "bosh: Creating and connecting new httpconn "
+			                            "(%i, %p)\n", i, conn->connections[i]);
 
 			http_connection_connect(conn->connections[i]);
 			return NULL;
@@ -344,6 +365,8 @@
 	chosen = find_available_http_connection(conn);
 
 	if (!chosen) {
+		if (type == PACKET_FLUSH)
+			return;
 		/*
 		 * For non-ordinary traffic, we can't 'buffer' it, so use the
 		 * first connection.
@@ -444,6 +467,27 @@
 	send_timer_cb(bosh);
 }
 
+static void
+jabber_bosh_disable_pipelining(PurpleBOSHConnection *bosh)
+{
+	/* Do nothing if it's already disabled */
+	if (!bosh->pipelining)
+		return;
+
+	purple_debug_info("jabber", "BOSH: Disabling pipelining on conn %p\n",
+	                            bosh);
+	bosh->pipelining = FALSE;
+	if (bosh->connections[1] == NULL) {
+		bosh->connections[1] = jabber_bosh_http_connection_init(bosh);
+		http_connection_connect(bosh->connections[1]);
+	} else {
+		/* Shouldn't happen; this should be the only place pipelining
+		 * is turned off.
+		 */
+		g_warn_if_reached();
+	}
+}
+
 static void jabber_bosh_connection_received(PurpleBOSHConnection *conn, xmlnode *node) {
 	xmlnode *child;
 	JabberStream *js = conn->js;
@@ -611,6 +655,8 @@
 static void
 connection_common_established_cb(PurpleHTTPConnection *conn)
 {
+	purple_debug_misc("jabber", "bosh: httpconn %p re-connected\n", conn);
+
 	/* Indicate we're ready and reset some variables */
 	conn->state = HTTP_CONN_CONNECTED;
 	if (conn->requests != 0)
@@ -622,9 +668,13 @@
 		g_string_free(conn->read_buf, TRUE);
 		conn->read_buf = NULL;
 	}
+	conn->close = FALSE;
 	conn->headers_done = FALSE;
 	conn->handled_len = conn->body_len = 0;
 
+	if (purple_debug_is_verbose())
+		debug_dump_http_connections(conn->bosh);
+
 	if (conn->bosh->js->reinit)
 		jabber_bosh_connection_send(conn->bosh, PACKET_NORMAL, NULL);
 	else if (conn->bosh->state == BOSH_CONN_ONLINE) {
@@ -639,6 +689,7 @@
 
 static void http_connection_disconnected(PurpleHTTPConnection *conn)
 {
+	gboolean had_requests = FALSE;
 	/*
 	 * Well, then. Fine! I never liked you anyway, server! I was cheating on you
 	 * with AIM!
@@ -662,7 +713,8 @@
 		conn->writeh = 0;
 	}
 
-	if (conn->requests > 0 && conn->read_buf->len == 0) {
+	had_requests = (conn->requests > 0);
+	if (had_requests && conn->read_buf->len == 0) {
 		purple_debug_error("jabber", "bosh: Adjusting BOSHconn requests (%d) to %d\n",
 		                   conn->bosh->requests, conn->bosh->requests - conn->requests);
 		conn->bosh->requests -= conn->requests;
@@ -671,13 +723,15 @@
 
 	if (conn->bosh->pipelining) {
 		/* Hmmmm, fall back to multiple connections */
-		conn->bosh->pipelining = FALSE;
-		if (conn->bosh->connections[1] == NULL) {
-			conn->bosh->connections[1] = jabber_bosh_http_connection_init(conn->bosh);
-			http_connection_connect(conn->bosh->connections[1]);
-		}
+		jabber_bosh_disable_pipelining(conn->bosh);
 	}
 
+	if (!had_requests)
+		/* If the server disconnected us without any requests, let's
+		 * just wait until we have something to send before we reconnect
+		 */
+		return;
+
 	if (++conn->bosh->failed_connections == MAX_FAILED_CONNECTIONS) {
 		purple_connection_error_reason(conn->bosh->js->gc,
 				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
@@ -704,30 +758,49 @@
 
 	cursor = conn->read_buf->str + conn->handled_len;
 
+	if (purple_debug_is_verbose())
+		purple_debug_misc("jabber", "BOSH server sent: %s\n", cursor);
+
+	/* TODO: Chunked encoding and check response version :/ */
 	if (!conn->headers_done) {
-		const char *content_length = purple_strcasestr(cursor, "\r\nContent-Length");
+		const char *content_length = purple_strcasestr(cursor, "\r\nContent-Length:");
+		const char *connection = purple_strcasestr(cursor, "\r\nConnection:");
 		const char *end_of_headers = strstr(cursor, "\r\n\r\n");
 
 		/* Make sure Content-Length is in headers, not body */
 		if (content_length && (!end_of_headers || content_length < end_of_headers)) {
-			const char *sep;
 			int len;
 
-			if ((sep = strstr(content_length, ": ")) == NULL ||
-					strstr(sep, "\r\n") == NULL)
+			if (strstr(content_length, "\r\n") == NULL)
 				/*
 				 * The packet ends in the middle of the Content-Length line.
 				 * We'll try again later when we have more.
 				 */
 				return;
 
-			len = atoi(sep + 2);
+			len = atoi(content_length + strlen("\r\nContent-Length:"));
 			if (len == 0)
-				purple_debug_warning("jabber", "Found mangled Content-Length header.\n");
+				purple_debug_warning("jabber", "Found mangled Content-Length header, or server returned 0-length response.\n");
 
 			conn->body_len = len;
 		}
 
+		if (connection && (!end_of_headers || content_length < end_of_headers)) {
+			const char *tmp;
+			if (strstr(connection, "\r\n") == NULL)
+				return;
+
+
+			tmp = connection + strlen("\r\nConnection:");
+			while (*tmp && (*tmp == ' ' || *tmp == '\t'))
+				++tmp;
+
+			if (!g_ascii_strncasecmp(tmp, "close", strlen("close"))) {
+				conn->close = TRUE;
+				jabber_bosh_disable_pipelining(conn->bosh);
+			}
+		}
+
 		if (end_of_headers) {
 			conn->headers_done = TRUE;
 			conn->handled_len = end_of_headers - conn->read_buf->str + 4;
@@ -752,6 +825,14 @@
 	http_received_cb(conn->read_buf->str + conn->handled_len, conn->body_len,
 	                 conn->bosh);
 
+	/* Connection: Close? */
+	if (conn->close && conn->state == HTTP_CONN_CONNECTED) {
+		if (purple_debug_is_verbose())
+			purple_debug_misc("jabber", "bosh (%p), server sent Connection: "
+			                            "close\n", conn);
+		http_connection_disconnected(conn);
+	}
+
 	if (conn->bosh->state == BOSH_CONN_ONLINE &&
 			(conn->bosh->requests == 0 || conn->bosh->pending->bufused > 0)) {
 		purple_debug_misc("jabber", "BOSH: Sending an empty request\n");
@@ -791,10 +872,11 @@
 
 	if (cnt == 0 || (cnt < 0 && errno != EAGAIN)) {
 		if (cnt < 0)
-			purple_debug_info("jabber", "bosh read=%d, errno=%d, error=%s\n",
-			                  cnt, errno, g_strerror(errno));
+			purple_debug_info("jabber", "BOSH (%p) read=%d, errno=%d, error=%s\n",
+			                  conn, cnt, errno, g_strerror(errno));
 		else
-			purple_debug_info("jabber", "bosh server closed the connection\n");
+			purple_debug_info("jabber", "BOSH server closed the connection (%p)\n",
+			                  conn);
 
 		/*
 		 * If the socket is closed, the processing really needs to know about
@@ -911,6 +993,9 @@
 	else
 		ret = write(conn->fd, data, len);
 
+	if (purple_debug_is_verbose())
+		purple_debug_misc("jabber", "BOSH (%p): wrote %d bytes\n", conn, ret);
+
 	return ret;
 }
 
@@ -975,7 +1060,10 @@
 
 	if (purple_debug_is_unsafe() && purple_debug_is_verbose())
 		/* Will contain passwords for SASL PLAIN and is verbose */
-		purple_debug_misc("jabber", "BOSH: Sending %s\n", data);
+		purple_debug_misc("jabber", "BOSH (%p): Sending %s\n", conn, data);
+	else if (purple_debug_is_verbose())
+		purple_debug_misc("jabber", "BOSH (%p): Sending request of "
+		                            "%" G_GSIZE_FORMAT " bytes.\n", conn, len);
 
 	if (conn->writeh == 0)
 		ret = http_connection_do_send(conn, data, len);
--- a/libpurple/protocols/msn/error.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/error.c	Sat Feb 12 23:54:14 2011 +0000
@@ -31,7 +31,7 @@
 
 typedef struct
 {
-	PurpleConnection *gc;
+	MsnSession *session;
 	char *who;
 	char *group;
 	gboolean add;
@@ -293,9 +293,9 @@
 		group = purple_find_group(data->group);
 
 	if (group != NULL)
-		buddy = purple_find_buddy_in_group(purple_connection_get_account(data->gc), data->who, group);
+		buddy = purple_find_buddy_in_group(data->session->account, data->who, group);
 	else
-		buddy = purple_find_buddy(purple_connection_get_account(data->gc), data->who);
+		buddy = purple_find_buddy(data->session->account, data->who);
 
 	if (buddy != NULL)
 		purple_blist_remove_buddy(buddy);
@@ -309,14 +309,9 @@
 	/* this *should* be necessary !! */
 	msn_complete_sync_issue(data);
 #endif
+	MsnUserList *userlist = data->session->userlist;
 
-	if (g_list_find(purple_connections_get_all(), data->gc) != NULL)
-	{
-		MsnSession *session = data->gc->proto_data;
-		MsnUserList *userlist = session->userlist;
-
-		msn_userlist_add_buddy(userlist, data->who, data->group);
-	}
+	msn_userlist_add_buddy(userlist, data->who, data->group);
 
 	g_free(data->group);
 	g_free(data->who);
@@ -326,18 +321,14 @@
 static void
 msn_rem_cb(MsnAddRemData *data)
 {
+	MsnUserList *userlist = data->session->userlist;
 	msn_complete_sync_issue(data);
 
-	if (g_list_find(purple_connections_get_all(), data->gc) != NULL)
-	{
-		MsnSession *session = data->gc->proto_data;
-		MsnUserList *userlist = session->userlist;
 
-		if (data->group == NULL) {
-			msn_userlist_rem_buddy_from_list(userlist, data->who, MSN_LIST_FL);
-		} else {
-			g_free(data->group);
-		}
+	if (data->group == NULL) {
+		msn_userlist_rem_buddy_from_list(userlist, data->who, MSN_LIST_FL);
+	} else {
+		g_free(data->group);
 	}
 
 	g_free(data->who);
@@ -356,10 +347,10 @@
 	account = session->account;
 	gc = purple_account_get_connection(account);
 
-	data        = g_new0(MsnAddRemData, 1);
-	data->who   = g_strdup(passport);
-	data->group = g_strdup(group_name);
-	data->gc    = gc;
+	data          = g_new0(MsnAddRemData, 1);
+	data->who     = g_strdup(passport);
+	data->group   = g_strdup(group_name);
+	data->session = session;
 
 	msg = g_strdup_printf(_("Buddy list synchronization issue in %s (%s)"),
 						  purple_account_get_username(account),
@@ -382,7 +373,7 @@
 	}
 
 	purple_request_action(gc, NULL, msg, reason, PURPLE_DEFAULT_ACTION_NONE,
-						purple_connection_get_account(gc), data->who, NULL,
+						account, data->who, NULL,
 						data, 2,
 						_("Yes"), G_CALLBACK(msn_add_cb),
 						_("No"), G_CALLBACK(msn_rem_cb));
@@ -390,3 +381,4 @@
 	g_free(reason);
 	g_free(msg);
 }
+
--- a/libpurple/protocols/msn/msg.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/msg.c	Sat Feb 12 23:54:14 2011 +0000
@@ -613,15 +613,7 @@
 
 	if (msg->msnslp_message)
 	{
-		g_string_append_printf(str, "Session ID: %u\r\n", msg->part->header->session_id);
-		g_string_append_printf(str, "ID:         %u\r\n", msg->part->header->id);
-		g_string_append_printf(str, "Offset:     %" G_GUINT64_FORMAT "\r\n", msg->part->header->offset);
-		g_string_append_printf(str, "Total size: %" G_GUINT64_FORMAT "\r\n", msg->part->header->total_size);
-		g_string_append_printf(str, "Length:     %u\r\n", msg->part->header->length);
-		g_string_append_printf(str, "Flags:      0x%x\r\n", msg->part->header->flags);
-		g_string_append_printf(str, "ACK ID:     %u\r\n", msg->part->header->ack_id);
-		g_string_append_printf(str, "SUB ID:     %u\r\n", msg->part->header->ack_sub_id);
-		g_string_append_printf(str, "ACK Size:   %" G_GUINT64_FORMAT "\r\n", msg->part->header->ack_size);
+		msn_slpmsgpart_to_string(msg->part, str);
 
 		if (purple_debug_is_verbose() && body != NULL)
 		{
@@ -638,27 +630,17 @@
 			else
 			{
 				int i;
-				int bin_len;
 
-				if (msg->part->footer->value == P2P_APPID_SESSION)
-					bin_len = P2P_PACKET_HEADER_SIZE;
-				else
-					bin_len = body_len;
-
-				for (i = 0; i < bin_len; i++)
+				for (i = 0; i < body_len; i++)
 				{
 					g_string_append_printf(str, "%.2hhX ", body[i]);
 					if ((i % 16) == 15)
 						g_string_append(str, "\r\n");
 				}
 
-				if (bin_len == P2P_PACKET_HEADER_SIZE)
-					g_string_append_printf(str, "%s ", body + P2P_PACKET_HEADER_SIZE);
 				g_string_append(str, "\r\n");
 			}
 		}
-
-		g_string_append_printf(str, "Footer:     0x%08X\r\n", msg->part->footer->value);
 	}
 	else
 	{
--- a/libpurple/protocols/msn/msg.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/msg.h	Sat Feb 12 23:54:14 2011 +0000
@@ -79,7 +79,6 @@
 	MsnMsgType type;
 
 	gboolean msnslp_message;
-	MsnSlpMessage *slpmsg;
 	MsnSlpMessagePart *part;
 
 	char *remote_user;
@@ -99,7 +98,6 @@
 								  been ref'ed for using it in a callback. */
 
 	MsnCommand *cmd;
-	MsnTransaction *trans;
 
 	MsnMsgCb ack_cb; /**< The callback to call when we receive an ACK of this
 					   message. */
@@ -107,8 +105,6 @@
 					   message. */
 	void *ack_data; /**< The data used by callbacks. */
 
-	MsnMsgErrorType error; /**< The error of the message. */
-
 	guint32 retries;
 };
 
--- a/libpurple/protocols/msn/p2p.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/p2p.c	Sat Feb 12 23:54:14 2011 +0000
@@ -27,12 +27,32 @@
 #include "p2p.h"
 #include "msnutils.h"
 
-MsnP2PHeader *
-msn_p2p_header_from_wire(const char *wire)
+MsnP2PInfo *
+msn_p2p_info_new(void)
+{
+	return g_new0(MsnP2PInfo, 1);
+}
+
+MsnP2PInfo *
+msn_p2p_info_dup(MsnP2PInfo *info)
+{
+	MsnP2PInfo *new_info = g_new0(MsnP2PInfo, 1);
+	*new_info = *info;
+	return new_info;
+}
+
+void
+msn_p2p_info_free(MsnP2PInfo *info)
+{
+	g_free(info);
+}
+
+size_t
+msn_p2p_header_from_wire(MsnP2PInfo *info, const char *wire)
 {
 	MsnP2PHeader *header;
 
-	header = g_new(MsnP2PHeader, 1);
+	header = &info->header;
 
 	header->session_id = msn_pop32le(wire);
 	header->id         = msn_pop32le(wire);
@@ -44,15 +64,17 @@
 	header->ack_sub_id = msn_pop32le(wire);
 	header->ack_size   = msn_pop64le(wire);
 
-	return header;
+	return P2P_PACKET_HEADER_SIZE;
 }
 
 char *
-msn_p2p_header_to_wire(MsnP2PHeader *header)
+msn_p2p_header_to_wire(MsnP2PInfo *info, size_t *len)
 {
+	MsnP2PHeader *header;
 	char *wire;
 	char *tmp;
 
+	header = &info->header;
 	tmp = wire = g_new(char, P2P_PACKET_HEADER_SIZE);
 
 	msn_push32le(tmp, header->session_id);
@@ -65,35 +87,58 @@
 	msn_push32le(tmp, header->ack_sub_id);
 	msn_push64le(tmp, header->ack_size);
 
+	if (len)
+		*len = P2P_PACKET_HEADER_SIZE;
+
 	return wire;
 
 }
 
-MsnP2PFooter *
-msn_p2p_footer_from_wire(const char *wire)
+size_t
+msn_p2p_footer_from_wire(MsnP2PInfo *info, const char *wire)
 {
 	MsnP2PFooter *footer;
 
-	footer = g_new(MsnP2PFooter, 1);
+	footer = &info->footer;
 
 	footer->value = msn_pop32be(wire);
 
-	return footer;
+	return P2P_PACKET_FOOTER_SIZE;
 }
 
 char *
-msn_p2p_footer_to_wire(MsnP2PFooter *footer)
+msn_p2p_footer_to_wire(MsnP2PInfo *info, size_t *len)
 {
+	MsnP2PFooter *footer;
 	char *wire;
 	char *tmp;
 
+	footer = &info->footer;
 	tmp = wire = g_new(char, P2P_PACKET_FOOTER_SIZE);
 
 	msn_push32be(tmp, footer->value);
 
+	if (len)
+		*len = P2P_PACKET_FOOTER_SIZE;
+
 	return wire;
 }
 
+void
+msn_p2p_info_to_string(MsnP2PInfo *info, GString *str)
+{
+	g_string_append_printf(str, "Session ID: %u\r\n", info->header.session_id);
+	g_string_append_printf(str, "ID:         %u\r\n", info->header.id);
+	g_string_append_printf(str, "Offset:     %" G_GUINT64_FORMAT "\r\n", info->header.offset);
+	g_string_append_printf(str, "Total size: %" G_GUINT64_FORMAT "\r\n", info->header.total_size);
+	g_string_append_printf(str, "Length:     %u\r\n", info->header.length);
+	g_string_append_printf(str, "Flags:      0x%x\r\n", info->header.flags);
+	g_string_append_printf(str, "ACK ID:     %u\r\n", info->header.ack_id);
+	g_string_append_printf(str, "SUB ID:     %u\r\n", info->header.ack_sub_id);
+	g_string_append_printf(str, "ACK Size:   %" G_GUINT64_FORMAT "\r\n", info->header.ack_size);
+	g_string_append_printf(str, "Footer:     0x%08X\r\n", info->footer.value);
+}
+
 gboolean
 msn_p2p_msg_is_data(const MsnP2PHeaderFlag flags)
 {
@@ -102,3 +147,135 @@
 	        flags == P2P_FILE_DATA);
 }
 
+gboolean
+msn_p2p_info_is_valid(MsnP2PInfo *info)
+{
+	return info->header.total_size >= info->header.length;
+}
+
+gboolean
+msn_p2p_info_is_final(MsnP2PInfo *info)
+{
+	return info->header.offset + info->header.length >= info->header.total_size;
+}
+
+guint32
+msn_p2p_info_get_session_id(MsnP2PInfo *info)
+{
+	return info->header.session_id;
+}
+
+guint32
+msn_p2p_info_get_id(MsnP2PInfo *info)
+{
+	return info->header.id;
+}
+
+guint64
+msn_p2p_info_get_offset(MsnP2PInfo *info)
+{
+	return info->header.offset;
+}
+
+guint64
+msn_p2p_info_get_total_size(MsnP2PInfo *info)
+{
+	return info->header.total_size;
+}
+
+guint32
+msn_p2p_info_get_length(MsnP2PInfo *info)
+{
+	return info->header.length;
+}
+
+guint32
+msn_p2p_info_get_flags(MsnP2PInfo *info)
+{
+	return info->header.flags;
+}
+
+guint32
+msn_p2p_info_get_ack_id(MsnP2PInfo *info)
+{
+	return info->header.ack_id;
+}
+
+guint32
+msn_p2p_info_get_ack_sub_id(MsnP2PInfo *info)
+{
+	return info->header.ack_sub_id;
+}
+
+guint64
+msn_p2p_info_get_ack_size(MsnP2PInfo *info)
+{
+	return info->header.ack_size;
+}
+
+guint32
+msn_p2p_info_get_app_id(MsnP2PInfo *info)
+{
+	return info->footer.value;
+}
+
+void
+msn_p2p_info_set_session_id(MsnP2PInfo *info, guint32 session_id)
+{
+	info->header.session_id = session_id;
+}
+
+void
+msn_p2p_info_set_id(MsnP2PInfo *info, guint32 id)
+{
+	info->header.id = id;
+}
+
+void
+msn_p2p_info_set_offset(MsnP2PInfo *info, guint64 offset)
+{
+	info->header.offset = offset;
+}
+
+void
+msn_p2p_info_set_total_size(MsnP2PInfo *info, guint64 total_size)
+{
+	info->header.total_size = total_size;
+}
+
+void
+msn_p2p_info_set_length(MsnP2PInfo *info, guint32 length)
+{
+	info->header.length = length;
+}
+
+void
+msn_p2p_info_set_flags(MsnP2PInfo *info, guint32 flags)
+{
+	info->header.flags = flags;
+}
+
+void
+msn_p2p_info_set_ack_id(MsnP2PInfo *info, guint32 ack_id)
+{
+	info->header.ack_id = ack_id;
+}
+
+void
+msn_p2p_info_set_ack_sub_id(MsnP2PInfo *info, guint32 ack_sub_id)
+{
+	info->header.ack_sub_id = ack_sub_id;
+}
+
+void
+msn_p2p_info_set_ack_size(MsnP2PInfo *info, guint64 ack_size)
+{
+	info->header.ack_size = ack_size;
+}
+
+void
+msn_p2p_info_set_app_id(MsnP2PInfo *info, guint32 app_id)
+{
+	info->footer.value = app_id;
+}
+
--- a/libpurple/protocols/msn/p2p.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/p2p.h	Sat Feb 12 23:54:14 2011 +0000
@@ -58,6 +58,11 @@
 } MsnP2PFooter;
 #define P2P_PACKET_FOOTER_SIZE (1 * 4)
 
+typedef struct {
+	MsnP2PHeader header;
+	MsnP2PFooter footer;
+} MsnP2PInfo;
+
 typedef enum
 {
 	P2P_NO_FLAG         = 0x0,        /**< No flags specified */
@@ -88,19 +93,98 @@
 	P2P_APPID_DISPLAY   = 0xC         /**< Display Image */
 } MsnP2PAppId;
 
-MsnP2PHeader *
-msn_p2p_header_from_wire(const char *wire);
+MsnP2PInfo *
+msn_p2p_info_new(void);
+
+MsnP2PInfo *
+msn_p2p_info_dup(MsnP2PInfo *info);
+
+void
+msn_p2p_info_free(MsnP2PInfo *info);
+
+size_t
+msn_p2p_header_from_wire(MsnP2PInfo *info, const char *wire);
 
 char *
-msn_p2p_header_to_wire(MsnP2PHeader *header);
+msn_p2p_header_to_wire(MsnP2PInfo *info, size_t *len);
 
-MsnP2PFooter *
-msn_p2p_footer_from_wire(const char *wire);
+size_t
+msn_p2p_footer_from_wire(MsnP2PInfo *info, const char *wire);
 
 char *
-msn_p2p_footer_to_wire(MsnP2PFooter *footer);
+msn_p2p_footer_to_wire(MsnP2PInfo *info, size_t *len);
+
+void
+msn_p2p_info_to_string(MsnP2PInfo *info, GString *str);
 
 gboolean
 msn_p2p_msg_is_data(const MsnP2PHeaderFlag flags);
 
+gboolean
+msn_p2p_info_is_valid(MsnP2PInfo *info);
+
+gboolean
+msn_p2p_info_is_final(MsnP2PInfo *info);
+
+guint32
+msn_p2p_info_get_session_id(MsnP2PInfo *info);
+
+guint32
+msn_p2p_info_get_id(MsnP2PInfo *info);
+
+guint64
+msn_p2p_info_get_offset(MsnP2PInfo *info);
+
+guint64
+msn_p2p_info_get_total_size(MsnP2PInfo *info);
+
+guint32
+msn_p2p_info_get_length(MsnP2PInfo *info);
+
+guint32
+msn_p2p_info_get_flags(MsnP2PInfo *info);
+
+guint32
+msn_p2p_info_get_ack_id(MsnP2PInfo *info);
+
+guint32
+msn_p2p_info_get_ack_sub_id(MsnP2PInfo *info);
+
+guint64
+msn_p2p_info_get_ack_size(MsnP2PInfo *info);
+
+guint32
+msn_p2p_info_get_app_id(MsnP2PInfo *info);
+
+void
+msn_p2p_info_set_session_id(MsnP2PInfo *info, guint32 session_id);
+
+void
+msn_p2p_info_set_id(MsnP2PInfo *info, guint32 id);
+
+void
+msn_p2p_info_set_offset(MsnP2PInfo *info, guint64 offset);
+
+void
+msn_p2p_info_set_total_size(MsnP2PInfo *info, guint64 total_size);
+
+void
+msn_p2p_info_set_length(MsnP2PInfo *info, guint32 length);
+
+void
+msn_p2p_info_set_flags(MsnP2PInfo *info, guint32 flags);
+
+void
+msn_p2p_info_set_ack_id(MsnP2PInfo *info, guint32 ack_id);
+
+void
+msn_p2p_info_set_ack_sub_id(MsnP2PInfo *info, guint32 ack_sub_id);
+
+void
+msn_p2p_info_set_ack_size(MsnP2PInfo *info, guint64 ack_size);
+
+void
+msn_p2p_info_set_app_id(MsnP2PInfo *info, guint32 app_id);
+
 #endif /* MSN_P2P_H */
+
--- a/libpurple/protocols/msn/sbconn.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/sbconn.c	Sat Feb 12 23:54:14 2011 +0000
@@ -126,8 +126,6 @@
 	trans->payload = payload;
 	trans->payload_len = payload_len;
 
-	msg->trans = trans;
-
 	msn_cmdproc_send_trans(cmdproc, trans);
 }
 
--- a/libpurple/protocols/msn/slpcall.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/slpcall.c	Sat Feb 12 23:54:14 2011 +0000
@@ -1059,16 +1059,21 @@
 	MsnSlpCall *slpcall;
 	const guchar *body;
 	gsize body_len;
+	guint32 session_id;
+	guint32 flags;
 
 	slpcall = NULL;
 	body = slpmsg->buffer;
-	body_len = slpmsg->header->offset;
+	body_len = msn_p2p_info_get_offset(slpmsg->p2p_info);
 
-	if (slpmsg->header->flags == P2P_NO_FLAG || slpmsg->header->flags == P2P_WLM2009_COMP)
+	session_id = msn_p2p_info_get_session_id(slpmsg->p2p_info);
+	flags = msn_p2p_info_get_flags(slpmsg->p2p_info);
+
+	if (flags == P2P_NO_FLAG || flags == P2P_WLM2009_COMP)
 	{
 		char *body_str;
 
-		if (slpmsg->header->session_id == 64)
+		if (session_id == 64)
 		{
 			/* This is for handwritten messages (Ink) */
 			GError *error = NULL;
@@ -1125,9 +1130,9 @@
 		}
 		g_free(body_str);
 	}
-	 else if (msn_p2p_msg_is_data(slpmsg->header->flags))
+	 else if (msn_p2p_msg_is_data(flags))
 	{
-		slpcall = msn_slplink_find_slp_call_with_session_id(slplink, slpmsg->header->session_id);
+		slpcall = msn_slplink_find_slp_call_with_session_id(slplink, session_id);
 
 		if (slpcall != NULL)
 		{
@@ -1142,13 +1147,13 @@
 			slpcall->wasted = TRUE;
 		}
 	}
-	else if (slpmsg->header->flags == P2P_ACK)
+	else if (flags == P2P_ACK)
 	{
 		/* Acknowledgement of previous message. Don't do anything currently. */
 	}
 	else
 		purple_debug_warning("msn", "Unprocessed SLP message with flags 0x%04x\n",
-		                     slpmsg->header->flags);
+		                     flags);
 
 	return slpcall;
 }
--- a/libpurple/protocols/msn/slplink.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/slplink.c	Sat Feb 12 23:54:14 2011 +0000
@@ -281,17 +281,21 @@
 msn_slplink_send_msgpart(MsnSlpLink *slplink, MsnSlpMessage *slpmsg)
 {
 	MsnSlpMessagePart *part;
+	MsnP2PInfo *info;
 	long long real_size;
 	size_t len = 0;
+	guint64 offset;
 
 	/* Maybe we will want to create a new msg for this slpmsg instead of
 	 * reusing the same one all the time. */
-	part = msn_slpmsgpart_new(slpmsg->header, slpmsg->footer);
+	info = slpmsg->p2p_info;
+	part = msn_slpmsgpart_new(info);
 	part->ack_data = slpmsg;
 
-	real_size = (slpmsg->header->flags == P2P_ACK) ? 0 : slpmsg->size;
+	real_size = (msn_p2p_info_get_flags(info) == P2P_ACK) ? 0 : slpmsg->size;
 
-	if (slpmsg->header->offset < real_size)
+	offset = msn_p2p_info_get_offset(info);
+	if (offset < real_size)
 	{
 		if (slpmsg->slpcall && slpmsg->slpcall->xfer && purple_xfer_get_type(slpmsg->slpcall->xfer) == PURPLE_XFER_SEND &&
 				purple_xfer_get_status(slpmsg->slpcall->xfer) == PURPLE_XFER_STATUS_STARTED)
@@ -301,15 +305,15 @@
 		}
 		else
 		{
-			len = slpmsg->size - slpmsg->header->offset;
+			len = slpmsg->size - offset;
 
 			if (len > MSN_SBCONN_MAX_SIZE)
 				len = MSN_SBCONN_MAX_SIZE;
 
-			msn_slpmsgpart_set_bin_data(part, slpmsg->buffer + slpmsg->header->offset, len);
+			msn_slpmsgpart_set_bin_data(part, slpmsg->buffer + offset, len);
 		}
 
-		slpmsg->header->length = len;
+		msn_p2p_info_set_length(slpmsg->p2p_info, len);
 	}
 
 #if 0
@@ -326,7 +330,7 @@
 	msn_slplink_send_part(slplink, part);
 
 
-	if (msn_p2p_msg_is_data(slpmsg->header->flags) &&
+	if (msn_p2p_msg_is_data(msn_p2p_info_get_flags(info)) &&
 		(slpmsg->slpcall != NULL))
 	{
 		slpmsg->slpcall->progress = TRUE;
@@ -334,7 +338,7 @@
 		if (slpmsg->slpcall->progress_cb != NULL)
 		{
 			slpmsg->slpcall->progress_cb(slpmsg->slpcall, slpmsg->size,
-										 len, slpmsg->header->offset);
+										 len, offset);
 		}
 	}
 
@@ -344,27 +348,30 @@
 static void
 msn_slplink_release_slpmsg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg)
 {
-	slpmsg = slpmsg;
-	slpmsg->footer = g_new0(MsnP2PFooter, 1);
+	MsnP2PInfo *info;
+	guint32 flags;
+
+	info = slpmsg->p2p_info;
 
-	if (slpmsg->header->flags == P2P_NO_FLAG)
+	flags = msn_p2p_info_get_flags(info);
+	if (flags == P2P_NO_FLAG)
 	{
-		slpmsg->header->ack_id = rand() % 0xFFFFFF00;
+		msn_p2p_info_set_ack_id(info, rand() % 0xFFFFFF00);
 	}
-	else if (msn_p2p_msg_is_data(slpmsg->header->flags))
+	else if (msn_p2p_msg_is_data(flags))
 	{
 		MsnSlpCall *slpcall;
 		slpcall = slpmsg->slpcall;
 
 		g_return_if_fail(slpcall != NULL);
-		slpmsg->header->session_id = slpcall->session_id;
-		slpmsg->footer->value = slpcall->app_id;
-		slpmsg->header->ack_id = rand() % 0xFFFFFF00;
+		msn_p2p_info_set_session_id(info, slpcall->session_id);
+		msn_p2p_info_set_app_id(info, slpcall->app_id);
+		msn_p2p_info_set_ack_id(info, rand() % 0xFFFFFF00);
 	}
 
-	slpmsg->header->id = slpmsg->id;
+	msn_p2p_info_set_id(info, slpmsg->id);
 
-	slpmsg->header->total_size = slpmsg->size;
+	msn_p2p_info_set_total_size(info, slpmsg->size);
 
 	msn_slplink_send_msgpart(slplink, slpmsg);
 }
@@ -400,20 +407,20 @@
 }
 
 static MsnSlpMessage *
-msn_slplink_create_ack(MsnSlpLink *slplink, MsnP2PHeader *header)
+msn_slplink_create_ack(MsnSlpLink *slplink, MsnP2PInfo *info)
 {
 	MsnSlpMessage *slpmsg;
 
-	slpmsg = msn_slpmsg_ack_new(header);
+	slpmsg = msn_slpmsg_ack_new(info);
 	msn_slpmsg_set_slplink(slpmsg, slplink);
 
 	return slpmsg;
 }
 
 static void
-msn_slplink_send_ack(MsnSlpLink *slplink, MsnP2PHeader *header)
+msn_slplink_send_ack(MsnSlpLink *slplink, MsnP2PInfo *info)
 {
-	MsnSlpMessage *slpmsg = msn_slplink_create_ack(slplink, header);
+	MsnSlpMessage *slpmsg = msn_slplink_create_ack(slplink, info);
 
 	msn_slplink_send_slpmsg(slplink, slpmsg);
 	msn_slpmsg_destroy(slpmsg);
@@ -428,7 +435,7 @@
 	{
 		MsnSlpMessage *slpmsg = e->data;
 
-		if ((slpmsg->header->session_id == session_id) && (slpmsg->id == id))
+		if ((msn_p2p_info_get_session_id(slpmsg->p2p_info) == session_id) && (slpmsg->id == id))
 			return slpmsg;
 	}
 
@@ -436,22 +443,26 @@
 }
 
 static MsnSlpMessage *
-init_first_msg(MsnSlpLink *slplink, MsnP2PHeader *header)
+init_first_msg(MsnSlpLink *slplink, MsnP2PInfo *info)
 {
 	MsnSlpMessage *slpmsg;
+	guint32 session_id;
+	guint32 flags;
 
 	slpmsg = msn_slpmsg_new(slplink);
-	slpmsg->id = header->id;
-	slpmsg->header->session_id = header->session_id;
-	slpmsg->size = header->total_size;
-	slpmsg->header->flags = header->flags;
+	slpmsg->id = msn_p2p_info_get_id(info);
+	session_id = msn_p2p_info_get_session_id(info);
+	msn_p2p_info_set_session_id(slpmsg->p2p_info, session_id);
+	slpmsg->size = msn_p2p_info_get_total_size(info);
+	flags = msn_p2p_info_get_flags(info);
+	msn_p2p_info_set_flags(slpmsg->p2p_info, flags);
 
-	if (slpmsg->header->session_id)
+	if (session_id)
 	{
-		slpmsg->slpcall = msn_slplink_find_slp_call_with_session_id(slplink, slpmsg->header->session_id);
+		slpmsg->slpcall = msn_slplink_find_slp_call_with_session_id(slplink, session_id);
 		if (slpmsg->slpcall != NULL)
 		{
-			if (msn_p2p_msg_is_data(header->flags))
+			if (msn_p2p_msg_is_data(flags))
 			{
 				PurpleXfer *xfer = slpmsg->slpcall->xfer;
 				if (xfer != NULL)
@@ -488,9 +499,10 @@
 }
 
 static void
-process_complete_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg, MsnP2PHeader *header)
+process_complete_msg(MsnSlpLink *slplink, MsnSlpMessage *slpmsg, MsnP2PInfo *info)
 {
 	MsnSlpCall *slpcall;
+	guint32 flags;
 
 	slpcall = msn_slp_process_msg(slplink, slpmsg);
 
@@ -501,8 +513,10 @@
 
 	purple_debug_info("msn", "msn_slplink_process_msg: slpmsg complete\n");
 
-	if (slpmsg->header->flags == P2P_NO_FLAG || slpmsg->header->flags == P2P_WLM2009_COMP ||
-			msn_p2p_msg_is_data(slpmsg->header->flags))
+	flags = msn_p2p_info_get_flags(slpmsg->p2p_info);
+
+	if (flags == P2P_NO_FLAG || flags == P2P_WLM2009_COMP ||
+	    msn_p2p_msg_is_data(flags))
 	{
 		/* Release all the messages and send the ACK */
 
@@ -515,11 +529,11 @@
 			 */
 			purple_debug_info("msn", "msn_slplink_process_msg: save ACK\n");
 
-			slpcall->slplink->dc->prev_ack = msn_slplink_create_ack(slplink, header);
+			slpcall->slplink->dc->prev_ack = msn_slplink_create_ack(slplink, info);
 		} else if (!slpcall->wasted) {
 			purple_debug_info("msn", "msn_slplink_process_msg: send ACK\n");
 
-			msn_slplink_send_ack(slplink, header);
+			msn_slplink_send_ack(slplink, info);
 			msn_slplink_send_queued_slpmsgs(slplink);
 		}
 	}
@@ -539,16 +553,17 @@
 		purple_xfer_prpl_ready(slpmsg->slpcall->xfer);
 	}
 	else if (slpmsg->size && slpmsg->buffer) {
-		if (G_MAXSIZE - part->size < part->header->offset
-				|| (part->header->offset + part->size) > slpmsg->size
-				|| slpmsg->header->offset != part->header->offset) {
+		guint64 offset = msn_p2p_info_get_offset(part->info);
+		if (G_MAXSIZE - part->size < offset
+				|| (offset + part->size) > slpmsg->size
+				|| msn_p2p_info_get_offset(slpmsg->p2p_info) != offset) {
 			purple_debug_error("msn",
 				"Oversized slpmsg - msgsize=%lld offset=%" G_GUINT64_FORMAT " len=%" G_GSIZE_FORMAT "\n",
-				slpmsg->size, part->header->offset, part->size);
+				slpmsg->size, offset, part->size);
 			g_return_if_reached();
 		} else {
-			memcpy(slpmsg->buffer + part->header->offset, part->buffer, part->size);
-			slpmsg->header->offset += part->size;
+			memcpy(slpmsg->buffer + offset, part->buffer, part->size);
+			msn_p2p_info_set_offset(slpmsg->p2p_info, offset + part->size);
 		}
 	}
 }
@@ -557,12 +572,12 @@
 msn_slplink_process_msg(MsnSlpLink *slplink, MsnSlpMessagePart *part)
 {
 	MsnSlpMessage *slpmsg;
-	MsnP2PHeader *header;
+	MsnP2PInfo *info;
 	guint64 offset;
 
-	header = part->header;
+	info = part->info;
 
-	if (header->total_size < header->length)
+	if (!msn_p2p_info_is_valid(info))
 	{
 		/* We seem to have received a bad header */
 		purple_debug_warning("msn", "Total size listed in SLP binary header "
@@ -571,12 +586,15 @@
 		return;
 	}
 
-	offset = header->offset;
+	offset = msn_p2p_info_get_offset(info);
 
 	if (offset == 0)
-		slpmsg = init_first_msg(slplink, header);
+		slpmsg = init_first_msg(slplink, info);
 	else {
-		slpmsg = msn_slplink_message_find(slplink, header->session_id, header->id);
+		guint32 session_id, id;
+		session_id = msn_p2p_info_get_session_id(info);
+		id = msn_p2p_info_get_id(info);
+		slpmsg = msn_slplink_message_find(slplink, session_id, id);
 		if (slpmsg == NULL)
 		{
 			/* Probably the transfer was cancelled */
@@ -587,8 +605,7 @@
 
 	slpmsg_add_part(slpmsg, part);
 
-
-	if (msn_p2p_msg_is_data(slpmsg->header->flags) &&
+	if (msn_p2p_msg_is_data(msn_p2p_info_get_flags(slpmsg->p2p_info)) &&
 		(slpmsg->slpcall != NULL))
 	{
 		slpmsg->slpcall->progress = TRUE;
@@ -606,8 +623,8 @@
 #endif
 
 	/* All the pieces of the slpmsg have been received */
-	if (header->offset + header->length >= header->total_size)
-		process_complete_msg(slplink, slpmsg, header);
+	if (msn_p2p_info_is_final(info))
+		process_complete_msg(slplink, slpmsg, info);
 
 	/* NOTE: The slpmsg will be destroyed in process_complete_msg or left in
 	   the slplink until fully received. Don't free it here!
--- a/libpurple/protocols/msn/slpmsg.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/slpmsg.c	Sat Feb 12 23:54:14 2011 +0000
@@ -48,8 +48,7 @@
 	else
 		slpmsg->slplink = NULL;
 
-	slpmsg->header = g_new0(MsnP2PHeader, 1);
-	slpmsg->footer = NULL;
+	slpmsg->p2p_info = msn_p2p_info_new();
 
 	return slpmsg;
 }
@@ -90,8 +89,7 @@
 
 	slplink->slp_msgs = g_list_remove(slplink->slp_msgs, slpmsg);
 
-	g_free(slpmsg->header);
-	g_free(slpmsg->footer);
+	msn_p2p_info_free(slpmsg->p2p_info);
 
 	g_free(slpmsg);
 }
@@ -193,7 +191,6 @@
 	slpmsg = msn_slpmsg_new(slplink);
 	msn_slpmsg_set_body(slpmsg, body, body_len);
 
-	slpmsg->sip = TRUE;
 	slpmsg->slpcall = slpcall;
 
 	g_free(body);
@@ -201,18 +198,20 @@
 	return slpmsg;
 }
 
-MsnSlpMessage *msn_slpmsg_ack_new(MsnP2PHeader *header)
+MsnSlpMessage *msn_slpmsg_ack_new(MsnP2PInfo *ack_info)
 {
 	MsnSlpMessage *slpmsg;
+	MsnP2PInfo *new_info;
 
 	slpmsg = msn_slpmsg_new(NULL);
 
-	slpmsg->header->session_id = header->session_id;
-	slpmsg->size       = header->total_size;
-	slpmsg->header->flags      = P2P_ACK;
-	slpmsg->header->ack_id     = header->id;
-	slpmsg->header->ack_sub_id = header->ack_id;
-	slpmsg->header->ack_size   = header->total_size;
+	new_info = slpmsg->p2p_info;
+	msn_p2p_info_set_session_id(new_info, msn_p2p_info_get_session_id(ack_info));
+	slpmsg->size = msn_p2p_info_get_total_size(ack_info);
+	msn_p2p_info_set_flags(new_info, P2P_ACK);
+	msn_p2p_info_set_ack_id(new_info, msn_p2p_info_get_id(ack_info));
+	msn_p2p_info_set_ack_sub_id(new_info, msn_p2p_info_get_ack_id(ack_info));
+	msn_p2p_info_set_ack_size(new_info, msn_p2p_info_get_total_size(ack_info));
 	slpmsg->info = "SLP ACK";
 
 	return slpmsg;
@@ -224,7 +223,7 @@
 
 	slpmsg = msn_slpmsg_new(NULL);
 	slpmsg->slpcall = slpcall;
-	slpmsg->header->flags = P2P_MSN_OBJ_DATA;
+	msn_p2p_info_set_flags(slpmsg->p2p_info, P2P_MSN_OBJ_DATA);
 	slpmsg->info = "SLP DATA";
 
 	msn_slpmsg_set_image(slpmsg, img);
@@ -239,7 +238,7 @@
 	slpmsg = msn_slpmsg_new(NULL);
 
 	slpmsg->slpcall = slpcall;
-	slpmsg->header->session_id = slpcall->session_id;
+	msn_p2p_info_set_session_id(slpmsg->p2p_info, slpcall->session_id);
 	msn_slpmsg_set_body(slpmsg, NULL, 4);
 	slpmsg->info = "SLP DATA PREP";
 
@@ -254,7 +253,7 @@
 	slpmsg = msn_slpmsg_new(NULL);
 
 	slpmsg->slpcall = slpcall;
-	slpmsg->header->flags = P2P_FILE_DATA;
+	msn_p2p_info_set_flags(slpmsg->p2p_info, P2P_FILE_DATA);
 	slpmsg->info = "SLP FILE";
 	slpmsg->size = size;
 
@@ -267,27 +266,25 @@
 	char *footer;
 	char *base;
 	char *tmp;
-	size_t siz;
+	size_t header_size, footer_size;
 
-	base = g_malloc(P2P_PACKET_HEADER_SIZE + slpmsg->size + P2P_PACKET_FOOTER_SIZE);
+	header = msn_p2p_header_to_wire(slpmsg->p2p_info, &header_size);
+	footer = msn_p2p_footer_to_wire(slpmsg->p2p_info, &footer_size);
+
+	base = g_malloc(header_size + slpmsg->size + footer_size);
 	tmp = base;
 
-	header = msn_p2p_header_to_wire(slpmsg->header);
-	footer = msn_p2p_footer_to_wire(slpmsg->footer);
-
-	siz = P2P_PACKET_HEADER_SIZE;
 	/* Copy header */
-	memcpy(tmp, header, siz);
-	tmp += siz;
+	memcpy(tmp, header, header_size);
+	tmp += header_size;
 
 	/* Copy body */
 	memcpy(tmp, slpmsg->buffer, slpmsg->size);
 	tmp += slpmsg->size;
 
 	/* Copy footer */
-	siz = P2P_PACKET_FOOTER_SIZE;
-	memcpy(tmp, footer, siz);
-	tmp += siz;
+	memcpy(tmp, footer, footer_size);
+	tmp += footer_size;
 
 	*ret_size = tmp - base;
 
@@ -303,15 +300,7 @@
 
 	str = g_string_new(NULL);
 
-	g_string_append_printf(str, "Session ID: %u\r\n", slpmsg->header->session_id);
-	g_string_append_printf(str, "ID:         %u\r\n", slpmsg->header->id);
-	g_string_append_printf(str, "Offset:     %" G_GUINT64_FORMAT "\r\n", slpmsg->header->offset);
-	g_string_append_printf(str, "Total size: %" G_GUINT64_FORMAT "\r\n", slpmsg->header->total_size);
-	g_string_append_printf(str, "Length:     %u\r\n", slpmsg->header->length);
-	g_string_append_printf(str, "Flags:      0x%x\r\n", slpmsg->header->flags);
-	g_string_append_printf(str, "ACK ID:     %u\r\n", slpmsg->header->ack_id);
-	g_string_append_printf(str, "SUB ID:     %u\r\n", slpmsg->header->ack_sub_id);
-	g_string_append_printf(str, "ACK Size:   %" G_GUINT64_FORMAT "\r\n", slpmsg->header->ack_size);
+	msn_p2p_info_to_string(slpmsg->p2p_info, str);
 
 	if (purple_debug_is_verbose() && slpmsg->buffer != NULL) {
 		g_string_append_len(str, (gchar*)slpmsg->buffer, slpmsg->size);
@@ -324,7 +313,5 @@
 
 	}
 
-	g_string_append_printf(str, "Footer:     %u\r\n", slpmsg->footer->value);
-
 	purple_debug_info("msn", "SlpMessage %s:\n{%s}\n", slpmsg->info, str->str);
 }
--- a/libpurple/protocols/msn/slpmsg.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/slpmsg.h	Sat Feb 12 23:54:14 2011 +0000
@@ -45,13 +45,10 @@
 	MsnSlpLink *slplink; /**< The slplink through which this slp message is being sent. */
 	MsnSession *session;
 
-	MsnP2PHeader *header;
-	MsnP2PFooter *footer;
+	MsnP2PInfo *p2p_info;
 
 	long id;
 
-	gboolean sip; /**< A flag that states if this is a SIP slp message. */
-
 	gboolean ft;
 	PurpleStoredImage *img;
 	guchar *buffer;
@@ -94,8 +91,6 @@
 void msn_slpmsg_set_body(MsnSlpMessage *slpmsg, const char *body,
 						 long long size);
 void msn_slpmsg_set_image(MsnSlpMessage *slpmsg, PurpleStoredImage *img);
-void msn_slpmsg_open_file(MsnSlpMessage *slpmsg,
-						  const char *file_name);
 MsnSlpMessage * msn_slpmsg_sip_new(MsnSlpCall *slpcall, int cseq,
 								   const char *header,
 								   const char *branch,
@@ -109,7 +104,7 @@
  *
  * @return A new SlpMessage with ACK headers
  */
-MsnSlpMessage *msn_slpmsg_ack_new(MsnP2PHeader *header);
+MsnSlpMessage *msn_slpmsg_ack_new(MsnP2PInfo *info);
 
 /**
  * Create a new SLP message for MsnObject data.
--- a/libpurple/protocols/msn/slpmsg_part.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/slpmsg_part.c	Sat Feb 12 23:54:14 2011 +0000
@@ -28,16 +28,14 @@
 #include "slpmsg.h"
 #include "slpmsg_part.h"
 
-MsnSlpMessagePart *msn_slpmsgpart_new(MsnP2PHeader *header, MsnP2PFooter *footer)
+MsnSlpMessagePart *msn_slpmsgpart_new(MsnP2PInfo *info)
 {
 	MsnSlpMessagePart *part;
 
 	part = g_new0(MsnSlpMessagePart, 1);
 
-	if (header)
-		part->header = g_memdup(header, P2P_PACKET_HEADER_SIZE);
-	if (footer)
-		part->footer = g_memdup(footer, P2P_PACKET_FOOTER_SIZE);
+	if (info)
+		part->info = msn_p2p_info_dup(info);
 
 	part->ack_cb = msn_slpmsgpart_ack;
 	part->nak_cb = msn_slpmsgpart_nak;
@@ -48,20 +46,22 @@
 MsnSlpMessagePart *msn_slpmsgpart_new_from_data(const char *data, size_t data_len)
 {
 	MsnSlpMessagePart *part;
+	size_t len;
 	int body_len;
 
 	if (data_len < P2P_PACKET_HEADER_SIZE) {
 		return NULL;
 	}
 
-	part = msn_slpmsgpart_new(NULL, NULL);
+	part = msn_slpmsgpart_new(NULL);
+	part->info = msn_p2p_info_new();
 
 	/* Extract the binary SLP header */
-	part->header = msn_p2p_header_from_wire(data);
-	data += P2P_PACKET_HEADER_SIZE;
+	len = msn_p2p_header_from_wire(part->info, data);
+	data += len;
 
 	/* Extract the body */
-	body_len = data_len - P2P_PACKET_HEADER_SIZE - P2P_PACKET_FOOTER_SIZE;
+	body_len = data_len - len - P2P_PACKET_FOOTER_SIZE;
 	/* msg->body_len = msg->msnslp_header.length; */
 
 	if (body_len > 0) {
@@ -73,15 +73,14 @@
 
 	/* Extract the footer */
 	if (body_len >= 0)
-		part->footer = msn_p2p_footer_from_wire(data);
+		msn_p2p_footer_from_wire(part->info, data);
 
 	return part;
 }
 
 static void msn_slpmsgpart_destroy(MsnSlpMessagePart *part)
 {
-	g_free(part->header);
-	g_free(part->footer);
+	g_free(part->info);
 	g_free(part->buffer);
 
 	g_free(part);
@@ -138,27 +137,25 @@
 	char *footer;
 	char *base;
 	char *tmp;
-	size_t siz;
+	size_t header_size, footer_size;
 
-	base = g_malloc(P2P_PACKET_HEADER_SIZE + part->size + P2P_PACKET_FOOTER_SIZE);
+	header = msn_p2p_header_to_wire(part->info, &header_size);
+	footer = msn_p2p_footer_to_wire(part->info, &footer_size);
+
+	base = g_malloc(header_size + part->size + footer_size);
 	tmp = base;
 
-	header = msn_p2p_header_to_wire(part->header);
-	footer = msn_p2p_footer_to_wire(part->footer);
-
-	siz = P2P_PACKET_HEADER_SIZE;
 	/* Copy header */
-	memcpy(tmp, header, siz);
-	tmp += siz;
+	memcpy(tmp, header, header_size);
+	tmp += header_size;
 
 	/* Copy body */
 	memcpy(tmp, part->buffer, part->size);
 	tmp += part->size;
 
 	/* Copy footer */
-	siz = P2P_PACKET_FOOTER_SIZE;
-	memcpy(tmp, footer, siz);
-	tmp += siz;
+	memcpy(tmp, footer, footer_size);
+	tmp += footer_size;
 
 	*ret_size = tmp - base;
 
@@ -167,23 +164,27 @@
 
 	return base;
 }
+
 /* We have received the message ack */
 void
 msn_slpmsgpart_ack(MsnSlpMessagePart *part, void *data)
 {
 	MsnSlpMessage *slpmsg;
+	guint64 offset;
 	long long real_size;
 
 	slpmsg = data;
 
-	real_size = (slpmsg->header->flags == P2P_ACK) ? 0 : slpmsg->size;
+	real_size = (msn_p2p_info_get_flags(slpmsg->p2p_info) == P2P_ACK) ? 0 : slpmsg->size;
 
-	slpmsg->header->offset += part->header->length;
+	offset = msn_p2p_info_get_offset(slpmsg->p2p_info);
+	offset += msn_p2p_info_get_length(part->info);
+	msn_p2p_info_set_offset(slpmsg->p2p_info, offset);
 
 	slpmsg->parts = g_list_remove(slpmsg->parts, part);
 	msn_slpmsgpart_unref(part);
 
-	if (slpmsg->header->offset < real_size)
+	if (offset < real_size)
 	{
 		if (slpmsg->slpcall->xfer && purple_xfer_get_status(slpmsg->slpcall->xfer) == PURPLE_XFER_STATUS_STARTED)
 		{
@@ -196,7 +197,7 @@
 	else
 	{
 		/* The whole message has been sent */
-		if (msn_p2p_msg_is_data(slpmsg->header->flags))
+		if (msn_p2p_msg_is_data(msn_p2p_info_get_flags(slpmsg->p2p_info)))
 		{
 			if (slpmsg->slpcall != NULL)
 			{
@@ -222,3 +223,9 @@
 	msn_slpmsgpart_unref(part);
 }
 
+void
+msn_slpmsgpart_to_string(MsnSlpMessagePart *part, GString *str)
+{
+	msn_p2p_info_to_string(part->info, str);
+}
+
--- a/libpurple/protocols/msn/slpmsg_part.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/msn/slpmsg_part.h	Sat Feb 12 23:54:14 2011 +0000
@@ -34,8 +34,7 @@
 {
 	guint ref_count;
 
-	MsnP2PHeader *header;
-	MsnP2PFooter *footer;
+	MsnP2PInfo *info;
 
 	MsnSlpPartCb ack_cb;
 	MsnSlpPartCb nak_cb;
@@ -45,7 +44,7 @@
 	size_t size;
 };
 
-MsnSlpMessagePart *msn_slpmsgpart_new(MsnP2PHeader *header, MsnP2PFooter *footer);
+MsnSlpMessagePart *msn_slpmsgpart_new(MsnP2PInfo *info);
 
 MsnSlpMessagePart *msn_slpmsgpart_new_from_data(const char *data, size_t data_len);
 
@@ -60,4 +59,8 @@
 void msn_slpmsgpart_ack(MsnSlpMessagePart *part, void *data);
 
 void msn_slpmsgpart_nak(MsnSlpMessagePart *part, void *data);
+
+void msn_slpmsgpart_to_string(MsnSlpMessagePart *part, GString *str);
+
 #endif /* MSN_SLPMSG_PART_H */
+
--- a/libpurple/protocols/novell/novell.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/novell/novell.c	Sat Feb 12 23:54:14 2011 +0000
@@ -74,7 +74,7 @@
 _sync_privacy_lists(NMUser *user);
 
 static void
-_show_info(PurpleConnection * gc, NMUserRecord * user_record);
+_show_info(PurpleConnection * gc, NMUserRecord * user_record, char * name);
 
 const char *
 _get_conference_name(int id);
@@ -705,7 +705,7 @@
 		user_record = (NMUserRecord *) resp_data;
 		if (user_record) {
 			_show_info(purple_account_get_connection(user->client_data),
-					   user_record);
+					   user_record, g_strdup(name));
 		}
 	} else {
 		gc = purple_account_get_connection(user->client_data);
@@ -1505,7 +1505,7 @@
 
 /* Display a dialog box showing the properties for the given user record */
 static void
-_show_info(PurpleConnection * gc, NMUserRecord * user_record)
+_show_info(PurpleConnection * gc, NMUserRecord * user_record, char * name)
 {
 	PurpleNotifyUserInfo *user_info =	purple_notify_user_info_new();
 	int count, i;
@@ -1544,9 +1544,10 @@
 		}
 	}
 
-	purple_notify_userinfo(gc, nm_user_record_get_userid(user_record),
-						 user_info, NULL, NULL);
+	purple_notify_userinfo(gc, name, user_info, NULL, NULL);
 	purple_notify_user_info_destroy(user_info);
+
+	g_free(name);
 }
 
 /* Send a join conference, the first item in the parms list is the
@@ -2912,11 +2913,9 @@
 
 		user_record = nm_find_user_record(user, name);
 		if (user_record) {
-
-			_show_info(gc, user_record);
+			_show_info(gc, user_record, g_strdup(name));
 
 		} else {
-
 			rc = nm_send_get_details(user, name,
 									 _get_details_resp_show_info, g_strdup(name));
 
--- a/libpurple/protocols/oscar/family_feedbag.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/oscar/family_feedbag.c	Sat Feb 12 23:54:14 2011 +0000
@@ -44,10 +44,66 @@
  */
 
 #include "oscar.h"
+#include "debug.h"
 
 static int aim_ssi_addmoddel(OscarData *od);
 
 /**
+ * List types based on http://dev.aol.com/aim/oscar/#FEEDBAG (archive.org)
+ * and http://iserverd.khstu.ru/oscar/ssi_item.html
+ *
+ * @param type The type of a list item as integer number, as provided by an aim_ssi_item struct.
+ * @return Returns the name of the item type as a character string.
+ */
+static const gchar*
+aim_ssi_type_to_string(guint16 type)
+{
+	struct TypeStringPair
+	{
+		guint16 type;
+		const gchar *string;
+	};
+	static const struct TypeStringPair type_strings[] = {
+		{ 0x0000, "Buddy" },
+		{ 0x0001, "Group" },
+		{ 0x0002, "Permit/Visible" },
+		{ 0x0003, "Deny/Invisible" },
+		{ 0x0004, "PDInfo" },
+		{ 0x0005, "PresencePrefs" }, 
+		{ 0x0006, "Non-Buddy Info" },
+		{ 0x0009, "ClientPrefs" },
+		{ 0x000e, "ICQDeny/Ignore" },
+		{ 0x0014, "Buddy Icon" }, 
+		{ 0x0015, "Recent Buddies" },
+		{ 0x0019, "Non-Buddy" },
+		{ 0x001d, "Vanity Info" },
+		{ 0x0020, "ICQ-MDir" },
+		{ 0x0029, "Facebook" },
+	};
+	int i;
+	for (i = 0; i < G_N_ELEMENTS(type_strings); i++) {
+		if (type_strings[i].type == type) {
+			return type_strings[i].string;
+		}
+	}
+	return "unknown";
+}
+
+/** For debug log output: Appends a line containing information about a given list item to a string.
+ *
+ * @param str String to which the line will be appended.
+ * @param prefix A string which will be prepended to the line.
+ * @param item List item from which information is extracted.
+ */
+static void
+aim_ssi_item_debug_append(GString *str, char *prefix, struct aim_ssi_item *item)
+{
+	g_string_append_printf(str, 
+		"%s gid=0x%04hx, bid=0x%04hx, list_type=0x%04hx [%s], name=%s.\n",
+		prefix, item->gid, item->bid, item->type, aim_ssi_type_to_string(item->type), item->name);
+}
+
+/**
  * Locally rebuild the 0x00c8 TLV in the additional data of the given group.
  *
  * @param list A pointer to a pointer to the current list of items.
@@ -478,6 +534,7 @@
 	struct aim_ssi_item *cur1, *cur2;
 	struct aim_ssi_tmp *cur, *new;
 	int n = 0;
+	GString *debugstr = g_string_new("");
 
 	/*
 	 * The variable "n" is used to limit the number of addmoddel's that
@@ -517,6 +574,7 @@
 					cur->next = new;
 				} else
 					od->ssi.pending = new;
+			       	aim_ssi_item_debug_append(debugstr, "Deleting item ", cur1);
 			}
 		}
 	}
@@ -537,6 +595,7 @@
 					cur->next = new;
 				} else
 					od->ssi.pending = new;
+			       	aim_ssi_item_debug_append(debugstr, "Adding item ", cur1);
 			}
 		}
 	}
@@ -558,9 +617,21 @@
 					cur->next = new;
 				} else
 					od->ssi.pending = new;
+			       	aim_ssi_item_debug_append(debugstr, "Modifying item ", cur1);
 			}
 		}
 	}
+	if (debugstr->len > 0) {
+		purple_debug_info("oscar", "%s", debugstr->str);
+		if (purple_debug_is_verbose()) {
+	    		g_string_truncate(debugstr, 0);
+			for (cur1 = od->ssi.local; cur1; cur1 = cur1->next) 
+				aim_ssi_item_debug_append(debugstr, "\t", cur1);
+			purple_debug_misc("oscar", "Dumping item list of account %s:\n%s",
+				purple_connection_get_account(od->gc)->username, debugstr->str);
+		}
+	}
+	g_string_free(debugstr, TRUE);
 
 	/* We're out of stuff to do, so tell the AIM servers we're done and exit */
 	if (!od->ssi.pending) {
@@ -1165,6 +1236,7 @@
 	guint16 namelen, gid, bid, type;
 	char *name;
 	GSList *data;
+	GString *debugstr = g_string_new("");
 
 	fmtver = byte_stream_get8(bs); /* Version of ssi data.  Should be 0x00 */
 	od->ssi.numitems += byte_stream_get16(bs); /* # of items in this SSI SNAC */
@@ -1179,10 +1251,13 @@
 		bid = byte_stream_get16(bs);
 		type = byte_stream_get16(bs);
 		data = aim_tlvlist_readlen(bs, byte_stream_get16(bs));
-		aim_ssi_itemlist_add(&od->ssi.official, name, gid, bid, type, data);
+		aim_ssi_item_debug_append(debugstr, "\t", aim_ssi_itemlist_add(&od->ssi.official, name, gid, bid, type, data));
 		g_free(name);
 		aim_tlvlist_free(data);
 	}
+	purple_debug_misc("oscar", "Reading items from tlvlist for account %s:\n%s",
+		purple_connection_get_account(od->gc)->username, debugstr->str);
+	g_string_free(debugstr, TRUE);
 
 	/* Read in the timestamp */
 	od->ssi.timestamp = byte_stream_get32(bs);
--- a/libpurple/protocols/qq/ChangeLog	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/ChangeLog	Sat Feb 12 23:54:14 2011 +0000
@@ -1,3 +1,12 @@
+2010.01.23 - flos <lonicerae(at)gmail.com>
+	* added an option to force incoming message in chat room to use a default font instead of the font in message itself
+
+2010.01.18 - flos <lonicerae(at)gmail.com>
+	* added type 'UPDCLS' and 'UID' for implementing business logic layer
+
+2010.01.13 - ccpaging <ccpaging(at)gmail.com>
+	* qq2009-1 patch from ccpaging
+
 2009.04.23 - flos <lonicerae(at)gmail.com>
 	* Fixed a bug of updating buddy who is not in user's buddy list
 
--- a/libpurple/protocols/qq/buddy_info.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/buddy_info.c	Sat Feb 12 23:54:14 2011 +0000
@@ -26,6 +26,7 @@
 #include "debug.h"
 #include "notify.h"
 #include "request.h"
+#include "connection.h"
 
 #include "utils.h"
 #include "packet_parse.h"
@@ -221,8 +222,8 @@
 	g_strfreev(segments);
 }
 
-void qq_request_buddy_info(PurpleConnection *gc, guint32 uid,
-		guint32 update_class, int action)
+void qq_request_buddy_info(PurpleConnection *gc, UID uid,
+		UPDCLS update_class, int action)
 {
 	gchar raw_data[16] = {0};
 
@@ -620,7 +621,7 @@
 	PurpleBuddy *buddy = NULL;
 	qq_data *qd = NULL;
 	qq_buddy_data *bd = NULL;
-	guint32 uid;
+	UID uid;
 	gchar *who;
 	gchar *alias_utf8;
 
@@ -741,7 +742,7 @@
 	return;
 }
 
-void qq_request_get_level(PurpleConnection *gc, guint32 uid)
+void qq_request_get_level(PurpleConnection *gc, UID uid)
 {
 	qq_data *qd = (qq_data *) gc->proto_data;
 	guint8 buf[16] = {0};
@@ -756,7 +757,7 @@
 	qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes);
 }
 
-void qq_request_get_level_2007(PurpleConnection *gc, guint32 uid)
+void qq_request_get_level_2007(PurpleConnection *gc, UID uid)
 {
 	guint8 buf[16] = {0};
 	gint bytes = 0;
@@ -767,7 +768,7 @@
 	qq_send_cmd(gc, QQ_CMD_GET_LEVEL, buf, bytes);
 }
 
-void qq_request_get_buddies_level(PurpleConnection *gc, guint32 update_class)
+void qq_request_get_buddies_level(PurpleConnection *gc, UPDCLS update_class)
 {
 	qq_data *qd = (qq_data *) gc->proto_data;
 	PurpleBuddy *buddy;
@@ -797,7 +798,8 @@
 static void process_level(PurpleConnection *gc, guint8 *data, gint data_len)
 {
 	gint bytes = 0;
-	guint32 uid, onlineTime;
+	UID uid;
+	guint32 onlineTime;
 	guint16 level, timeRemainder;
 	qq_buddy_data *bd;
 
@@ -829,7 +831,8 @@
 static void process_level_2007(PurpleConnection *gc, guint8 *data, gint data_len)
 {
 	gint bytes;
-	guint32 uid, onlineTime;
+	UID uid;
+	guint32 onlineTime;
 	guint16 level, timeRemainder;
 	qq_buddy_data *bd;
 	guint16 str_len;
--- a/libpurple/protocols/qq/buddy_info.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/buddy_info.h	Sat Feb 12 23:54:14 2011 +0000
@@ -78,15 +78,14 @@
 gchar *qq_get_icon_path(gchar *icon_name);
 void qq_change_icon_cb(PurpleConnection *gc, const char *filepath);
 
-void qq_request_buddy_info(PurpleConnection *gc, guint32 uid,
-		guint32 update_class, int action);
+void qq_request_buddy_info(PurpleConnection *gc, UID uid, UPDCLS update_class, int action);
 void qq_set_custom_icon(PurpleConnection *gc, PurpleStoredImage *img);
 void qq_process_change_info(PurpleConnection *gc, guint8 *data, gint data_len);
 void qq_process_get_buddy_info(guint8 *data, gint data_len, guint32 action, PurpleConnection *gc);
 
-void qq_request_get_level(PurpleConnection *gc, guint32 uid);
-void qq_request_get_level_2007(PurpleConnection *gc, guint32 uid);
-void qq_request_get_buddies_level(PurpleConnection *gc, guint32 update_class);
+void qq_request_get_level(PurpleConnection *gc, UID uid);
+void qq_request_get_level_2007(PurpleConnection *gc, UID uid);
+void qq_request_get_buddies_level(PurpleConnection *gc, UPDCLS update_class);
 void qq_process_get_level_reply(guint8 *buf, gint buf_len, PurpleConnection *gc);
 
 void qq_update_buddy_icon(PurpleAccount *account, const gchar *who, gint face);
--- a/libpurple/protocols/qq/buddy_list.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/buddy_list.c	Sat Feb 12 23:54:14 2011 +0000
@@ -53,7 +53,7 @@
 } qq_buddy_online;
 
 /* get a list of online_buddies */
-void qq_request_get_buddies_online(PurpleConnection *gc, guint8 position, guint32 update_class)
+void qq_request_get_buddies_online(PurpleConnection *gc, guint8 position, UPDCLS update_class)
 {
 	guint8 *raw_data;
 	gint bytes = 0;
@@ -77,7 +77,7 @@
 
 /* position starts with 0x0000,
  * server may return a position tag if list is too long for one packet */
-void qq_request_get_buddies(PurpleConnection *gc, guint16 position, guint32 update_class)
+void qq_request_get_buddies(PurpleConnection *gc, guint16 position, UPDCLS update_class)
 {
 	qq_data *qd;
 	guint8 raw_data[16] = {0};
@@ -101,7 +101,7 @@
 }
 
 /* get all list, buddies & Quns with groupsid support */
-void qq_request_get_buddies_and_rooms(PurpleConnection *gc, guint32 position, guint32 update_class)
+void qq_request_get_buddies_and_rooms(PurpleConnection *gc, guint32 position, UPDCLS update_class)
 {
 	guint8 raw_data[16] = {0};
 	gint bytes = 0;
@@ -362,7 +362,7 @@
 	gint bytes;
 	guint8 sub_cmd, reply_code;
 	guint32 unknown, position;
-	guint32 uid;
+	UID uid;
 	guint8 type;
 	qq_room_data *rmd;
 
@@ -455,7 +455,7 @@
 }
 
 /* send a packet to change my online status */
-void qq_request_change_status(PurpleConnection *gc, guint32 update_class)
+void qq_request_change_status(PurpleConnection *gc, UPDCLS update_class)
 {
 	qq_data *qd;
 	guint8 raw_data[16] = {0};
@@ -525,7 +525,7 @@
 {
 	qq_data *qd;
 	gint bytes;
-	guint32 my_uid;
+	UID my_uid;
 	gchar *who;
 	PurpleBuddy *buddy;
 	qq_buddy_data *bd;
@@ -583,7 +583,7 @@
 }
 
 /*TODO: maybe this should be qq_update_buddy_status() ?*/
-void qq_update_buddy_status(PurpleConnection *gc, guint32 uid, guint8 status, guint8 flag)
+void qq_update_buddy_status(PurpleConnection *gc, UID uid, guint8 status, guint8 flag)
 {
 	gchar *who;
 	const gchar *status_id;
--- a/libpurple/protocols/qq/buddy_list.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/buddy_list.h	Sat Feb 12 23:54:14 2011 +0000
@@ -30,7 +30,7 @@
 
 #include "qq.h"
 typedef struct _qq_buddy_status {
-	guint32 uid;
+	UID uid;
 	guint8 unknown1;
 	struct in_addr ip;
 	guint16 port;
@@ -40,20 +40,20 @@
 	guint8 unknown_key[QQ_KEY_LENGTH];
 } qq_buddy_status;
 
-void qq_request_get_buddies_online(PurpleConnection *gc, guint8 position, guint32 update_class);
+void qq_request_get_buddies_online(PurpleConnection *gc, guint8 position, UPDCLS update_class);
 guint8 qq_process_get_buddies_online(guint8 *data, gint data_len, PurpleConnection *gc);
 
-void qq_request_get_buddies(PurpleConnection *gc, guint16 position, guint32 update_class);
+void qq_request_get_buddies(PurpleConnection *gc, guint16 position, UPDCLS update_class);
 guint16 qq_process_get_buddies(guint8 *data, gint data_len, PurpleConnection *gc);
 
-void qq_request_get_buddies_and_rooms(PurpleConnection *gc, guint32 position, guint32 update_class);
+void qq_request_get_buddies_and_rooms(PurpleConnection *gc, guint32 position, UPDCLS update_class);
 guint32 qq_process_get_buddies_and_rooms(guint8 *data, gint data_len, PurpleConnection *gc);
 
-void qq_request_change_status(PurpleConnection *gc, guint32 update_class);
+void qq_request_change_status(PurpleConnection *gc, UPDCLS update_class);
 void qq_process_change_status(guint8 *data, gint data_len, PurpleConnection *gc);
 void qq_process_buddy_change_status(guint8 *data, gint data_len, PurpleConnection *gc);
 
 void qq_update_buddyies_status(PurpleConnection *gc);
-void qq_update_buddy_status(PurpleConnection *gc, guint32 uid, guint8 status, guint8 flag);
+void qq_update_buddy_status(PurpleConnection *gc, UID uid, guint8 status, guint8 flag);
 void qq_buddy_data_free_all(PurpleConnection *gc);
 #endif
--- a/libpurple/protocols/qq/buddy_memo.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/buddy_memo.c	Sat Feb 12 23:54:14 2011 +0000
@@ -83,7 +83,7 @@
 
 typedef struct _modify_memo_request {
 	PurpleConnection *gc;
-	guint32 bd_uid;
+	UID bd_uid;
 	gchar **segments;
 } modify_memo_request;
 
@@ -107,7 +107,7 @@
 	purple_debug_info("QQ", "memo freed\n");
 }
 
-static void update_buddy_memo(PurpleConnection *gc, guint32 bd_uid, gchar *alias)
+static void update_buddy_memo(PurpleConnection *gc, UID bd_uid, gchar *alias)
 {
 	PurpleAccount *account;
 	PurpleBuddy *buddy;
@@ -127,7 +127,7 @@
 	purple_blist_alias_buddy(buddy, (const char*)alias);
 }
 
-static void request_change_memo(PurpleConnection *gc, guint32 bd_uid, gchar **segments)
+static void request_change_memo(PurpleConnection *gc, UID bd_uid, gchar **segments)
 {
 	gint bytes;
 	/* Attention, length of each segment must be guint8(0~255),
@@ -170,7 +170,7 @@
 static void memo_modify_ok_cb(modify_memo_request *memo_request, PurpleRequestFields *fields)
 {
 	PurpleConnection *gc;
-	guint32 bd_uid;
+	UID bd_uid;
 	gchar **segments;
 	const gchar *utf8_str;
 	gchar *value = NULL;
@@ -187,7 +187,7 @@
 		utf8_str = purple_request_fields_get_string(fields, memo_id[index]);
 		/* update alias */
 		if (QQ_MEMO_ALIAS == index) {
-			update_buddy_memo(gc, bd_uid, segments[QQ_MEMO_ALIAS]);
+			update_buddy_memo(gc, (UID)bd_uid, segments[QQ_MEMO_ALIAS]);
 		}
 		if (NULL == utf8_str) {
 			value = g_strdup("");
@@ -213,7 +213,7 @@
 }
 
 /* memo modify dialogue */
-static void memo_modify_dialogue(PurpleConnection *gc, guint32 bd_uid, gchar **segments, guint32 action)
+static void memo_modify_dialogue(PurpleConnection *gc, UID bd_uid, gchar **segments, guint32 action)
 {
 	modify_memo_request *memo_request;
 	PurpleRequestField *field;
@@ -272,7 +272,7 @@
 	}
 }
 
-static void qq_create_buddy_memo(PurpleConnection *gc, guint32 bd_uid, guint32 action)
+static void qq_create_buddy_memo(PurpleConnection *gc, UID bd_uid, guint32 action)
 {
 	gchar **segments;
 	gint index;
@@ -285,9 +285,11 @@
 	memo_modify_dialogue(gc, bd_uid, segments, action);
 }
 
-/* process reply to get_memo packet */
+/* process reply to get_memo packet
+ * here, update_class will be regarded as buddy's uid. because some 
+ * memo packages returned without uid, which will make us confused */
 void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len,
-		guint32 update_class, guint32 action)
+		UPDCLS update_class, guint32 action)
 {
 	gchar **segments;
 	gint bytes;
@@ -314,7 +316,9 @@
 	if (1 == data_len) { /* only one byte */
 		purple_debug_info("QQ", "memo packet contains no buddy uid and memo...\n");
 		if (QQ_BUDDY_MEMO_MODIFY == action) {
-			qq_create_buddy_memo(gc, (guint32)update_class, QQ_BUDDY_MEMO_MODIFY);
+			UID mod_uid;
+			mod_uid = (UID)update_class;
+			qq_create_buddy_memo(gc, mod_uid, QQ_BUDDY_MEMO_MODIFY);
 			return;
 		}
 		return;
@@ -354,9 +358,9 @@
 			}
 
 			/* common action, update buddy memo */
-			update_buddy_memo(gc, rcv_uid, segments[QQ_MEMO_ALIAS]);
+			update_buddy_memo(gc, (UID)rcv_uid, segments[QQ_MEMO_ALIAS]);
 
-			/* memo is thing that we regard our buddy as, so we need one more buddy_uid */
+			/* memo is a thing that we regard our buddy as, so we need one more buddy_uid */
 			memo_modify_dialogue(gc, rcv_uid, segments, action);
 			break;
 		default:
@@ -365,8 +369,12 @@
 	}
 }
 
-/* request buddy memo */
-void qq_request_buddy_memo(PurpleConnection *gc, guint32 bd_uid, guint32 update_class, guint32 action)
+/* request buddy memo
+ *
+ * param: gc, uid, update_class, action
+ * here, update_class will be set to buddy's uid. because some memo 
+ * packages returned without uid, which will make us confused */
+void qq_request_buddy_memo(PurpleConnection *gc, UID bd_uid, UPDCLS update_class, guint32 action)
 {
 	guint8 raw_data[16] = {0};
 	gint bytes;
--- a/libpurple/protocols/qq/buddy_memo.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/buddy_memo.h	Sat Feb 12 23:54:14 2011 +0000
@@ -28,6 +28,7 @@
 #include <glib.h>
 #include "connection.h"
 #include "blist.h"
+#include "qq.h"
 
 #define QQ_BUDDY_MEMO_REQUEST_SUCCESS 0x00
 
@@ -40,9 +41,9 @@
 };
 
 
-void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len, guint32 update_class, guint32 action);
+void qq_process_get_buddy_memo(PurpleConnection *gc, guint8* data, gint data_len, UPDCLS update_class, guint32 action);
 
-void qq_request_buddy_memo(PurpleConnection *gc, guint32 bd_uid, guint32 update_class, guint32 action);
+void qq_request_buddy_memo(PurpleConnection *gc, UID bd_uid, UPDCLS update_class, guint32 action);
 
 #endif
 
--- a/libpurple/protocols/qq/buddy_opt.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/buddy_opt.c	Sat Feb 12 23:54:14 2011 +0000
@@ -51,12 +51,12 @@
 
 typedef struct _qq_buddy_req {
 	PurpleConnection *gc;
-	guint32 uid;
+	UID uid;
 	guint8 *auth;
 	guint8 auth_len;
 } qq_buddy_req;
 
-void add_buddy_authorize_input(PurpleConnection *gc, guint32 uid,
+void add_buddy_authorize_input(PurpleConnection *gc, UID uid,
 		guint8 *auth, guint8 auth_len);
 
 static void buddy_req_free(qq_buddy_req *add_req)
@@ -88,7 +88,7 @@
 	return g;
 }
 
-static qq_buddy_data *qq_buddy_data_new(guint32 uid)
+static qq_buddy_data *qq_buddy_data_new(UID uid)
 {
 	qq_buddy_data *bd = g_new0(qq_buddy_data, 1);
 	memset(bd, 0, sizeof(qq_buddy_data));
@@ -97,7 +97,7 @@
 	return bd;
 }
 
-qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, guint32 uid)
+qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, UID uid)
 {
 	gchar *who;
 	PurpleBuddy *buddy;
@@ -131,7 +131,7 @@
 }
 
 /* create purple buddy without data and display with no-auth icon */
-PurpleBuddy *qq_buddy_new(PurpleConnection *gc, guint32 uid)
+PurpleBuddy *qq_buddy_new(PurpleConnection *gc, UID uid)
 {
 	PurpleBuddy *buddy;
 	PurpleGroup *group;
@@ -175,7 +175,7 @@
 	purple_blist_remove_buddy(buddy);
 }
 
-PurpleBuddy *qq_buddy_find(PurpleConnection *gc, guint32 uid)
+PurpleBuddy *qq_buddy_find(PurpleConnection *gc, UID uid)
 {
 	PurpleBuddy *buddy;
 	gchar *who;
@@ -188,7 +188,7 @@
 	return buddy;
 }
 
-PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid)
+PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, UID uid)
 {
 	PurpleBuddy *buddy;
 	qq_buddy_data *bd;
@@ -213,7 +213,7 @@
 }
 
 /* send packet to remove a buddy from my buddy list */
-static void request_remove_buddy(PurpleConnection *gc, guint32 uid)
+static void request_remove_buddy(PurpleConnection *gc, UID uid)
 {
 	gchar uid_str[11];
 	gint bytes;
@@ -226,7 +226,7 @@
 }
 
 static void request_remove_buddy_ex(PurpleConnection *gc,
-		guint32 uid, guint8 *auth, guint8 auth_len)
+		UID uid, guint8 *auth, guint8 auth_len)
 {
 	gint bytes;
 	guint8 *raw_data;
@@ -246,7 +246,7 @@
 	qq_send_cmd_mess(gc, QQ_CMD_REMOVE_BUDDY, raw_data, bytes, 0, uid);
 }
 
-void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, guint32 uid)
+void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, UID uid)
 {
 	guint8 raw_data[16];
 	gint bytes;
@@ -260,7 +260,7 @@
 	qq_send_cmd_mess(gc, QQ_CMD_AUTH_CODE, raw_data, bytes, 0, uid);
 }
 
-void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
+void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, UID uid)
 {
 	gint bytes;
 	guint8 cmd, reply;
@@ -308,7 +308,7 @@
 	buddy_req_free(add_req);
 }
 
-static void add_buddy_question_input(PurpleConnection *gc, guint32 uid, gchar *question)
+static void add_buddy_question_input(PurpleConnection *gc, UID uid, gchar *question)
 {
 	gchar *who, *msg;
 	qq_buddy_req *add_req;
@@ -336,7 +336,7 @@
 }
 
 void qq_request_question(PurpleConnection *gc,
-		guint8 cmd, guint32 uid, const gchar *question_utf8, const gchar *answer_utf8)
+		guint8 cmd, UID uid, const gchar *question_utf8, const gchar *answer_utf8)
 {
 	guint8 raw_data[MAX_PACKET_SIZE - 16];
 	gint bytes;
@@ -371,7 +371,7 @@
 	return;
 }
 
-static void request_add_buddy_by_question(PurpleConnection *gc, guint32 uid,
+static void request_add_buddy_by_question(PurpleConnection *gc, UID uid,
 	guint8 *code, guint16 code_len)
 {
 	guint8 raw_data[MAX_PACKET_SIZE - 16];
@@ -395,7 +395,7 @@
 	qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH_EX, raw_data, bytes);
 }
 
-void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
+void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, UID uid)
 {
 	gint bytes;
 	guint8 cmd, reply;
@@ -461,7 +461,7 @@
 }
 
 /* try to remove myself from someone's buddy list */
-static void request_buddy_remove_me(PurpleConnection *gc, guint32 uid)
+static void request_buddy_remove_me(PurpleConnection *gc, UID uid)
 {
 	guint8 raw_data[16] = {0};
 	gint bytes = 0;
@@ -474,7 +474,7 @@
 }
 
 /* try to add a buddy without authentication */
-static void request_add_buddy_no_auth(PurpleConnection *gc, guint32 uid)
+static void request_add_buddy_no_auth(PurpleConnection *gc, UID uid)
 {
 	gchar uid_str[11];
 
@@ -486,7 +486,7 @@
 			(guint8 *) uid_str, strlen(uid_str), 0, uid);
 }
 
-static void request_add_buddy_no_auth_ex(PurpleConnection *gc, guint32 uid)
+static void request_add_buddy_no_auth_ex(PurpleConnection *gc, UID uid)
 {
 	guint bytes;
 	guint8 raw_data[16];
@@ -499,7 +499,7 @@
 }
 
 /* this buddy needs authentication, text conversion is done at lowest level */
-static void request_add_buddy_auth(PurpleConnection *gc, guint32 uid, const gchar response, const gchar *text)
+static void request_add_buddy_auth(PurpleConnection *gc, UID uid, const gchar response, const gchar *text)
 {
 	guint8 raw_data[MAX_PACKET_SIZE - 16];
 	gint bytes;
@@ -526,7 +526,7 @@
 	qq_send_cmd(gc, QQ_CMD_ADD_BUDDY_AUTH, raw_data, bytes);
 }
 
-static void request_add_buddy_auth_ex(PurpleConnection *gc, guint32 uid,
+static void request_add_buddy_auth_ex(PurpleConnection *gc, UID uid,
 	const gchar *text, guint8 *auth, guint8 auth_len)
 {
 	guint8 raw_data[MAX_PACKET_SIZE - 16];
@@ -643,7 +643,7 @@
 	buddy_req_free(add_req);
 }
 
-void add_buddy_authorize_input(PurpleConnection *gc, guint32 uid,
+void add_buddy_authorize_input(PurpleConnection *gc, UID uid,
 		guint8 *auth, guint8 auth_len)
 {
 	gchar *who, *msg;
@@ -683,7 +683,7 @@
 void qq_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
 {
 	qq_data *qd;
-	guint32 uid;
+	UID uid;
 
 	g_return_if_fail(NULL != gc && NULL != gc->proto_data);
 	g_return_if_fail(buddy != NULL);
@@ -733,7 +733,7 @@
 }
 
 /* process the server reply for my request to remove a buddy */
-void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
+void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, UID uid)
 {
 	PurpleBuddy *buddy = NULL;
 	gchar *msg;
@@ -756,7 +756,7 @@
 }
 
 /* process the server reply for my request to remove myself from a buddy */
-void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid)
+void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, UID uid)
 {
 	gchar *msg;
 
@@ -772,7 +772,7 @@
 }
 
 void qq_process_add_buddy_no_auth(PurpleConnection *gc,
-		guint8 *data, gint data_len, guint32 uid)
+		guint8 *data, gint data_len, UID uid)
 {
 	qq_data *qd;
 	gchar **segments;
@@ -834,11 +834,11 @@
 }
 
 void qq_process_add_buddy_no_auth_ex(PurpleConnection *gc,
-		guint8 *data, gint data_len, guint32 uid)
+		guint8 *data, gint data_len, UID uid)
 {
 	qq_data *qd;
 	gint bytes;
-	guint32 dest_uid;
+	UID dest_uid;
 	guint8 reply;
 	guint8 auth_type;
 
@@ -903,7 +903,7 @@
 {
 	qq_data *qd;
 	qq_buddy_data *bd;
-	guint32 uid;
+	UID uid;
 
 	g_return_if_fail(gc != NULL && gc->proto_data != NULL);
 	g_return_if_fail(buddy != NULL);
@@ -933,7 +933,7 @@
 	 * otherwise purple segmentation fault */
 }
 
-static void buddy_add_input(PurpleConnection *gc, guint32 uid, gchar *reason)
+static void buddy_add_input(PurpleConnection *gc, UID uid, gchar *reason)
 {
 	PurpleAccount *account = purple_connection_get_account(gc);
 	qq_buddy_req *add_req;
@@ -967,7 +967,7 @@
 static void server_buddy_add_request(PurpleConnection *gc, gchar *from, gchar *to,
 		guint8 *data, gint data_len)
 {
-	guint32 uid;
+	UID uid;
 	gchar *msg, *reason;
 
 	g_return_if_fail(from != NULL && to != NULL);
@@ -996,7 +996,7 @@
 	gint bytes;
 	guint8 cmd;
 	guint8 reply;
-	guint32 uid;
+	UID uid;
 	guint16 flag1, flag2;
 
 	g_return_if_fail(data != NULL && data_len >= 5);
@@ -1026,7 +1026,7 @@
 {
 	guint8 *raw_data;
 	gint bytes;
-	guint32 uid;
+	UID uid;
 
 	g_return_if_fail(code != NULL && code_len > 0 && from != NULL);
 
@@ -1073,7 +1073,7 @@
 		guint8 *data, gint data_len)
 {
 	gint bytes;
-	guint32 uid;
+	UID uid;
 	gchar *msg;
 	guint8 allow_reverse;
 
@@ -1103,7 +1103,7 @@
 {
 	PurpleAccount *account = purple_connection_get_account(gc);
 	PurpleBuddy *buddy;
-	guint32 uid;
+	UID uid;
 	qq_buddy_req *add_req;
 	gchar *who;
 	gchar *primary;
@@ -1177,7 +1177,7 @@
 {
 	PurpleAccount *account = purple_connection_get_account(gc);
 	qq_data *qd;
-	guint32 uid;
+	UID uid;
 
 	g_return_if_fail(from != NULL && to != NULL);
 
@@ -1204,7 +1204,7 @@
 static void server_buddy_rejected_me(PurpleConnection *gc, gchar *from, gchar *to,
 		guint8 *data, gint data_len)
 {
-	guint32 uid;
+	UID uid;
 	PurpleBuddy *buddy;
 	gchar *msg, *msg_utf8;
 	gint bytes;
--- a/libpurple/protocols/qq/buddy_opt.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/buddy_opt.h	Sat Feb 12 23:54:14 2011 +0000
@@ -54,31 +54,31 @@
 void qq_remove_buddy_and_me(PurpleBlistNode * node);
 void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group);
 
-void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid);
-void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid);
+void qq_process_remove_buddy(PurpleConnection *gc, guint8 *data, gint data_len, UID uid);
+void qq_process_buddy_remove_me(PurpleConnection *gc, guint8 *data, gint data_len, UID uid);
 void qq_process_add_buddy_no_auth(PurpleConnection *gc,
-		guint8 *data, gint data_len, guint32 uid);
+		guint8 *data, gint data_len, UID uid);
 void qq_process_add_buddy_no_auth_ex(PurpleConnection *gc,
-		guint8 *data, gint data_len, guint32 uid);
+		guint8 *data, gint data_len, UID uid);
 void qq_process_add_buddy_auth(guint8 *data, gint data_len, PurpleConnection *gc);
 void qq_process_buddy_from_server(PurpleConnection *gc, int funct,
 		gchar *from, gchar *to, guint8 *data, gint data_len);
 
 void qq_process_buddy_check_code(PurpleConnection *gc, guint8 *data, gint data_len);
 
-void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, guint32 uid);
-void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid);
+void qq_request_auth_code(PurpleConnection *gc, guint8 cmd, guint16 sub_cmd, UID uid);
+void qq_process_auth_code(PurpleConnection *gc, guint8 *data, gint data_len, UID uid);
 void qq_request_question(PurpleConnection *gc,
-		guint8 cmd, guint32 uid, const gchar *question_utf8, const gchar *answer_utf8);
-void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, guint32 uid);
+		guint8 cmd, UID uid, const gchar *question_utf8, const gchar *answer_utf8);
+void qq_process_question(PurpleConnection *gc, guint8 *data, gint data_len, UID uid);
 
 void qq_process_add_buddy_auth_ex(PurpleConnection *gc, guint8 *data, gint data_len, guint32 ship32);
 
-qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, guint32 uid);
+qq_buddy_data *qq_buddy_data_find(PurpleConnection *gc, UID uid);
 void qq_buddy_data_free(qq_buddy_data *bd);
 
-PurpleBuddy *qq_buddy_new(PurpleConnection *gc, guint32 uid);
-PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid);
-PurpleBuddy *qq_buddy_find(PurpleConnection *gc, guint32 uid);
+PurpleBuddy *qq_buddy_new(PurpleConnection *gc, UID uid);
+PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, UID uid);
+PurpleBuddy *qq_buddy_find(PurpleConnection *gc, UID uid);
 PurpleGroup *qq_group_find_or_new(const gchar *group_name);
 #endif
--- a/libpurple/protocols/qq/file_trans.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/file_trans.c	Sat Feb 12 23:54:14 2011 +0000
@@ -38,14 +38,12 @@
 #include "send_file.h"
 #include "utils.h"
 
-struct _qq_file_header {
+typedef struct _qq_file_header {
 	guint16 client_ver;
 	guint8 file_key;
-	guint32 sender_uid;
-	guint32 receiver_uid;
-};
-
-typedef struct _qq_file_header qq_file_header;
+	UID sender_uid;
+	UID receiver_uid;
+} qq_file_header;
 
 static guint32 _get_file_key(guint8 seed)
 {
@@ -62,12 +60,12 @@
 	return _get_file_key(seed);
 }
 
-static guint32 _decrypt_qq_uid(guint32 uid, guint32 key)
+static guint32 _decrypt_qq_uid(UID uid, guint32 key)
 {
 	return ~(uid ^ key);
 }
 
-static guint32 _encrypt_qq_uid(guint32 uid, guint32 key)
+static guint32 _encrypt_qq_uid(UID uid, guint32 key)
 {
 	return (~uid) ^ key;
 }
@@ -232,7 +230,7 @@
 }
 #endif
 
-static gint _qq_send_file(PurpleConnection *gc, guint8 *data, gint len, guint16 packet_type, guint32 to_uid)
+static gint _qq_send_file(PurpleConnection *gc, guint8 *data, gint len, guint16 packet_type, UID to_uid)
 {
 	guint8 *raw_data;
 	gint bytes = 0;
@@ -259,7 +257,7 @@
 }
 
 /* send a file to udp channel with QQ_FILE_CONTROL_PACKET_TAG */
-void qq_send_file_ctl_packet(PurpleConnection *gc, guint16 packet_type, guint32 to_uid, guint8 hellobyte)
+void qq_send_file_ctl_packet(PurpleConnection *gc, guint16 packet_type, UID to_uid, guint8 hellobyte)
 {
 	qq_data *qd;
 	gint bytes, bytes_expected, encrypted_len;
--- a/libpurple/protocols/qq/file_trans.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/file_trans.h	Sat Feb 12 23:54:14 2011 +0000
@@ -26,6 +26,7 @@
 #define _QQ_QQ_FILE_TRANS_H_
 
 #include "server.h"
+#include "qq.h"
 
 enum {
 	QQ_FILE_CMD_SENDER_SAY_HELLO = 0x31,
@@ -59,7 +60,7 @@
 #define QQ_FILE_AGENT_PACKET_TAG 0x04
 /* #define QQ_PACKET_TAIL          0x03 */   /* all QQ text packets end with it */
 
-void qq_send_file_ctl_packet(PurpleConnection *gc, guint16 packet_type, guint32 to_uid, guint8 hellobyte);
+void qq_send_file_ctl_packet(PurpleConnection *gc, guint16 packet_type, UID to_uid, guint8 hellobyte);
 void qq_process_recv_file(PurpleConnection *gc, guint8 *data, gint len);
 /* void qq_send_file_data_packet(PurpleConnection *gc, guint16 packet_type, guint8 sub_type, guint32 fragment_index, guint16 seq, guint8 *data, gint len); */
 void qq_xfer_close_file(PurpleXfer *xfer);
--- a/libpurple/protocols/qq/group.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/group.h	Sat Feb 12 23:54:14 2011 +0000
@@ -40,14 +40,13 @@
 	QQ_ROOM_ROLE_ADMIN
 } qq_room_role;
 
-typedef struct _qq_room_data qq_room_data;
-struct _qq_room_data {
+typedef struct _qq_room_data {
 	/* all these will be saved when we exit Purple */
 	qq_room_role my_role;	/* my role for this room */
 	guint32 id;
 	guint32 ext_id;
 	guint8 type8;			/* permanent or temporory */
-	guint32 creator_uid;
+	UID creator_uid;
 	guint32 category;
 	guint8 auth_type;
 	gchar *title_utf8;
@@ -57,7 +56,7 @@
 
 	gboolean is_got_buddies;
 	GList *members;
-};
+} qq_room_data;
 
 GList *qq_chat_info(PurpleConnection *gc);
 GHashTable *qq_chat_info_defaults(PurpleConnection *gc, const gchar *chat_name);
--- a/libpurple/protocols/qq/group_im.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/group_im.c	Sat Feb 12 23:54:14 2011 +0000
@@ -161,7 +161,7 @@
 }
 
 void qq_room_got_chat_in(PurpleConnection *gc,
-		guint32 room_id, guint32 uid_from, const gchar *msg, time_t in_time)
+		guint32 room_id, UID uid_from, const gchar *msg, time_t in_time)
 {
 	PurpleConversation *conv;
 	qq_data *qd;
@@ -207,10 +207,11 @@
 {
 	gchar *msg_smiley, *msg_fmt, *msg_utf8;
 	gint bytes, tail_len;
+	qq_data *qd;
 	struct {
 		guint32 ext_id;
 		guint8 type8;
-		guint32 member_uid;
+		UID member_uid;
 		guint16 unknown;
 		guint16 msg_seq;
 		time_t send_time;
@@ -222,11 +223,15 @@
 	guint16 content_type;
 	guint8 frag_count, frag_index;
 	guint16 msg_id;
+	guint32 use_default_font;
 	qq_im_format *fmt = NULL;
+	qd = (qq_data *) gc->proto_data;
 
 	/* at least include im_text.msg_len */
 	g_return_if_fail(data != NULL && data_len > 23);
 
+	use_default_font = (qd->custom) & QQ_CUSTOM_USE_DEFAULT_FONT;
+
 	/* qq_show_packet("ROOM_IM", data, data_len); */
 	memset(&im_text, 0, sizeof(im_text));
 	bytes = 0;
@@ -279,8 +284,14 @@
 	/* group im_group has no flag to indicate whether it has font_attr or not */
 	msg_smiley = qq_emoticon_to_purple(im_text.msg);
 	if (fmt != NULL) {
+		purple_debug_info("QQ", "going to use_default_font\n");
+		if (QQ_CUSTOM_USE_DEFAULT_FONT == use_default_font) {
+			qq_im_fmt_reset_font(fmt);
+			purple_debug_info("QQ", "use_default_font set\n");
+		}
 		msg_fmt = qq_im_fmt_to_purple(fmt, msg_smiley);
 		msg_utf8 =  qq_to_utf8(msg_fmt, QQ_CHARSET_DEFAULT);
+		purple_debug_info("QQ", "passed!\n");
 		g_free(msg_fmt);
 		qq_im_fmt_free(fmt);
 	} else {
--- a/libpurple/protocols/qq/group_im.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/group_im.h	Sat Feb 12 23:54:14 2011 +0000
@@ -30,11 +30,16 @@
 #include "conversation.h"
 #include "group.h"
 
+enum {
+	QQ_CUSTOM_USE_DEFAULT_FONT = 0x00000001,
+	QQ_CUSTOM_NONE = 0x00000000
+};
+
 PurpleConversation *qq_room_conv_open(PurpleConnection *gc, qq_room_data *rmd);
 void qq_room_conv_set_onlines(PurpleConnection *gc, qq_room_data *rmd);
 
 void qq_room_got_chat_in(PurpleConnection *gc,
-		guint32 room_id, guint32 uid_from, const gchar *msg, time_t in_time);
+		guint32 room_id, UID uid_from, const gchar *msg, time_t in_time);
 
 int qq_chat_send(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags);
 void qq_process_room_send_im(PurpleConnection *gc, guint8 *data, gint len);
@@ -43,3 +48,4 @@
 void qq_process_room_im(guint8 *data, gint data_len, guint32 id, PurpleConnection *gc, guint16 msg_type);
 
 #endif
+
--- a/libpurple/protocols/qq/group_info.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/group_info.c	Sat Feb 12 23:54:14 2011 +0000
@@ -65,7 +65,7 @@
 }
 
 /* send packet to get info for each group member */
-gint qq_request_room_get_buddies(PurpleConnection *gc, guint32 room_id, guint32 update_class)
+gint qq_request_room_get_buddies(PurpleConnection *gc, guint32 room_id, UPDCLS update_class)
 {
 	guint8 *raw_data;
 	gint bytes, num;
@@ -177,7 +177,8 @@
 	PurpleConversation *conv;
 	guint8 organization, role;
 	guint16 unknown, max_members;
-	guint32 member_uid, id, ext_id;
+	UID member_uid;
+	guint32 id, ext_id;
 	guint32 unknown4;
 	guint8 unknown1;
 	gint bytes, num;
@@ -286,7 +287,8 @@
 
 void qq_process_room_cmd_get_onlines(guint8 *data, gint len, PurpleConnection *gc)
 {
-	guint32 room_id, member_uid;
+	guint32 room_id;
+	UID member_uid;
 	guint8 unknown;
 	gint bytes, num;
 	qq_room_data *rmd;
@@ -334,7 +336,8 @@
 {
 	gint bytes;
 	gint num;
-	guint32 id, member_uid;
+	guint32 id;
+	UID member_uid;
 	guint16 unknown;
 	qq_room_data *rmd;
 	qq_buddy_data *bd;
--- a/libpurple/protocols/qq/group_info.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/group_info.h	Sat Feb 12 23:54:14 2011 +0000
@@ -34,7 +34,7 @@
 	QQ_ROOM_INFO_DISPLAY
 };
 
-gint qq_request_room_get_buddies(PurpleConnection *gc, guint32 room_id, guint32 update_class);
+gint qq_request_room_get_buddies(PurpleConnection *gc, guint32 room_id, UPDCLS update_class);
 
 void qq_process_room_cmd_get_info(guint8 *data, gint len, guint32 action, PurpleConnection *gc);
 void qq_process_room_cmd_get_onlines(guint8 *data, gint len, PurpleConnection *gc);
--- a/libpurple/protocols/qq/group_internal.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/group_internal.c	Sat Feb 12 23:54:14 2011 +0000
@@ -207,7 +207,7 @@
 }
 
 /* find a qq_buddy_data by uid, called by im.c */
-qq_buddy_data *qq_room_buddy_find(qq_room_data *rmd, guint32 uid)
+qq_buddy_data *qq_room_buddy_find(qq_room_data *rmd, UID uid)
 {
 	GList *list;
 	qq_buddy_data *bd;
@@ -226,7 +226,7 @@
 }
 
 /* remove a qq_buddy_data by uid, called by qq_group_opt.c */
-void qq_room_buddy_remove(qq_room_data *rmd, guint32 uid)
+void qq_room_buddy_remove(qq_room_data *rmd, UID uid)
 {
 	GList *list;
 	qq_buddy_data *bd;
@@ -244,7 +244,7 @@
 	}
 }
 
-qq_buddy_data *qq_room_buddy_find_or_new(PurpleConnection *gc, qq_room_data *rmd, guint32 member_uid)
+qq_buddy_data *qq_room_buddy_find_or_new(PurpleConnection *gc, qq_room_data *rmd, UID member_uid)
 {
 	qq_buddy_data *member, *bd;
 	PurpleBuddy *buddy;
--- a/libpurple/protocols/qq/group_internal.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/group_internal.h	Sat Feb 12 23:54:14 2011 +0000
@@ -36,9 +36,9 @@
 void qq_room_remove(PurpleConnection *gc, guint32 id);
 void qq_room_update_chat_info(PurpleChat *chat, qq_room_data *rmd);
 
-qq_buddy_data *qq_room_buddy_find(qq_room_data *rmd, guint32 uid);
-void qq_room_buddy_remove(qq_room_data *rmd, guint32 uid);
-qq_buddy_data *qq_room_buddy_find_or_new(PurpleConnection *gc, qq_room_data *rmd, guint32 member_uid);
+qq_buddy_data *qq_room_buddy_find(qq_room_data *rmd, UID uid);
+void qq_room_buddy_remove(qq_room_data *rmd, UID uid);
+qq_buddy_data *qq_room_buddy_find_or_new(PurpleConnection *gc, qq_room_data *rmd, UID member_uid);
 
 void qq_room_data_initial(PurpleConnection *gc);
 void qq_room_data_free_all(PurpleConnection *gc);
--- a/libpurple/protocols/qq/group_join.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/group_join.c	Sat Feb 12 23:54:14 2011 +0000
@@ -155,7 +155,7 @@
 }
 
 void qq_send_cmd_group_auth(PurpleConnection *gc, qq_room_data *rmd,
-		guint8 opt, guint32 uid, const gchar *reason_utf8)
+		guint8 opt, UID uid, const gchar *reason_utf8)
 {
 	guint8 raw_data[MAX_PACKET_SIZE - 16];
 	gint bytes;
--- a/libpurple/protocols/qq/group_join.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/group_join.h	Sat Feb 12 23:54:14 2011 +0000
@@ -49,7 +49,7 @@
 void qq_request_room_search(PurpleConnection *gc, guint32 ext_id, int action);
 void qq_process_room_search(PurpleConnection *gc, guint8 *data, gint len, guint32 ship32);
 
-void qq_send_cmd_group_auth(PurpleConnection *gc, qq_room_data *rmd, guint8 opt, guint32 uid, const gchar *reason_utf8);
+void qq_send_cmd_group_auth(PurpleConnection *gc, qq_room_data *rmd, guint8 opt, UID uid, const gchar *reason_utf8);
 void qq_group_join(PurpleConnection *gc, GHashTable *data);
 void qq_request_room_join(PurpleConnection *gc, qq_room_data *rmd);
 void qq_room_quit(PurpleConnection *gc, guint32 room_id);
@@ -57,3 +57,4 @@
 void qq_process_group_cmd_join_group_auth(guint8 *data, gint len, PurpleConnection *gc);
 void qq_process_group_cmd_join_group(guint8 *data, gint len, PurpleConnection *gc);
 #endif
+
--- a/libpurple/protocols/qq/im.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/im.c	Sat Feb 12 23:54:14 2011 +0000
@@ -67,15 +67,14 @@
 	QQ_NORMAL_IM_FILE_EX_NOTIFY_IP = 0x87
 };
 
-typedef struct _qq_im_header qq_im_header;
-struct _qq_im_header {
+typedef struct _qq_im_header {
 	/* this is the common part of normal_text */
 	guint16 version_from;
-	guint32 uid_from;
-	guint32 uid_to;
+	UID uid_from;
+	UID uid_to;
 	guint8 session_md5[QQ_KEY_LENGTH];
 	guint16 im_type;
-};
+} qq_im_header;
 
 /* read the common parts of the normal_im,
  * returns the bytes read if succeed, or -1 if there is any error */
@@ -93,11 +92,10 @@
 	return bytes;
 }
 
-typedef struct _qq_emoticon qq_emoticon;
-struct _qq_emoticon {
+typedef struct _qq_emoticon {
 	guint8 symbol;
 	gchar *name;
-};
+} qq_emoticon;
 
 static gboolean emoticons_is_sorted = FALSE;
 /* Map for purple smiley convert to qq, need qsort */
@@ -528,7 +526,8 @@
 qq_im_format *qq_im_fmt_new(void)
 {
 	qq_im_format *fmt;
-	const gchar simsun[] = { 0xcb, 0xce, 0xcc, 0xe5, 0};	/* simsun in Chinese */
+	/* '0xcb, 0xce, 0xcc, 0xe5' means Chinese '宋体' in utf8 */
+	const gchar simsun[] = { 0xcb, 0xce, 0xcc, 0xe5, 0};
 
 	fmt = g_new0(qq_im_format, 1);
 	memset(fmt, 0, sizeof(qq_im_format));
@@ -541,6 +540,17 @@
 	return fmt;
 }
 
+void qq_im_fmt_reset_font(qq_im_format *fmt)
+{
+	const gchar simsun[] = {0xcb, 0xce, 0xcc, 0xe5, 0x00};
+	g_return_if_fail(NULL != fmt);
+
+	if (NULL != fmt->font) {
+		g_free(fmt->font);
+		fmt->font = g_strdup(simsun);
+	}
+}
+
 qq_im_format *qq_im_fmt_new_by_purple(const gchar *msg)
 {
 	qq_im_format *fmt;
@@ -1036,7 +1046,7 @@
 }
 
 /* send an IM to uid_to */
-static void request_send_im(PurpleConnection *gc, guint32 uid_to, gint type,
+static void request_send_im(PurpleConnection *gc, UID uid_to, gint type,
 	qq_im_format *fmt, gchar *msg, guint8 id, guint8 frag_count, guint8 frag_index)
 {
 	qq_data *qd;
@@ -1241,7 +1251,7 @@
 gint qq_send_im(PurpleConnection *gc, const gchar *who, const gchar *what, PurpleMessageFlags flags)
 {
 	qq_data *qd;
-	guint32 uid_to;
+	UID uid_to;
 	gint type;
 	qq_im_format *fmt;
 	gchar *msg_stripped, *tmp;
--- a/libpurple/protocols/qq/im.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/im.h	Sat Feb 12 23:54:14 2011 +0000
@@ -49,6 +49,10 @@
 };
 
 typedef struct {
+	/* attr:
+		bit0-4 for font size, bit5 for bold,
+		bit6 for italic, bit7 for underline
+	*/
 	guint8 attr;
 	guint8 rgb[3];
 	guint16 charset;
@@ -61,6 +65,7 @@
 
 qq_im_format *qq_im_fmt_new(void);
 void qq_im_fmt_free(qq_im_format *fmt);
+void qq_im_fmt_reset_font(qq_im_format *fmt);
 qq_im_format *qq_im_fmt_new_by_purple(const gchar *msg);
 gchar *qq_im_fmt_to_purple(qq_im_format *fmt, gchar *text);
 gboolean qq_im_smiley_none(const gchar *msg);
--- a/libpurple/protocols/qq/qq.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq.c	Sat Feb 12 23:54:14 2011 +0000
@@ -173,6 +173,13 @@
 	qd->is_show_news = purple_account_get_bool(account, "show_news", TRUE);
 	qd->is_show_chat = purple_account_get_bool(account, "show_chat", TRUE);
 
+	if (purple_account_get_bool(account, "default_font", FALSE)) {
+		qd->custom = QQ_CUSTOM_USE_DEFAULT_FONT;
+	}
+	else {
+		qd->custom = QQ_CUSTOM_NONE;
+	}
+
 	qd->resend_times = purple_prefs_get_int("/plugins/prpl/qq/resend_times");
 	if (qd->resend_times <= 1) qd->itv_config.resend = 4;
 
@@ -443,7 +450,7 @@
 /* send packet to get who's detailed information */
 static void qq_show_buddy_info(PurpleConnection *gc, const gchar *who)
 {
-	guint32 uid;
+	UID uid;
 	qq_data *qd;
 
 	qd = gc->proto_data;
@@ -823,7 +830,7 @@
 	PurpleBuddy *buddy;
 	qq_buddy_data *bd;
 	PurpleConnection *gc;
-	guint32 bd_uid;
+	UID bd_uid;
 
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
@@ -927,7 +934,7 @@
 {
 	qq_data *qd;
 	gchar *uid_str;
-	guint32 uid;
+	UID uid;
 
 	purple_debug_info("QQ", "Get chat buddy info of %s\n", who);
 	g_return_if_fail(who != NULL);
@@ -1142,6 +1149,9 @@
 	option = purple_account_option_bool_new(_("Show chat room when msg comes"), "show_chat", TRUE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
+	option = purple_account_option_bool_new(_("Use default font"), "default_font", FALSE);
+	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
+
 	option = purple_account_option_int_new(_("Keep alive interval (seconds)"), "keep_alive_interval", 60);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
--- a/libpurple/protocols/qq/qq.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq.h	Sat Feb 12 23:54:14 2011 +0000
@@ -39,22 +39,19 @@
 #define qq_strlen(s) ((s)!=NULL?strlen(s):0)
 #define qq_strcmp(s1,s2) ((s1)!=NULL && (s2)!=NULL?strcmp(s1,s2):0)
 
-typedef struct _qq_data qq_data;
-typedef struct _qq_buddy_data qq_buddy_data;
-typedef struct _qq_interval qq_interval;
-typedef struct _qq_net_stat qq_net_stat;
-typedef struct _qq_login_data qq_login_data;
-typedef struct _qq_captcha_data qq_captcha_data;
+/* business logic layer */
+typedef guint32 UPDCLS;
+typedef guint32 UID;
 
-struct _qq_captcha_data {
+typedef struct _qq_captcha_data {
 	guint8 *token;
 	guint16 token_len;
 	guint8 next_index;
 	guint8 *data;
 	guint16 data_len;
-};
+} qq_captcha_data;
 
-struct _qq_login_data {
+typedef struct _qq_login_data {
 	guint8 random_key[QQ_KEY_LENGTH];			/* first encrypt key generated by client */
 	guint8 *token;				/* get from server */
 	guint8 token_len;
@@ -67,24 +64,24 @@
 	guint8 *login_token;
 	guint16 login_token_len;
 	guint8 login_key[QQ_KEY_LENGTH];
-};
+} qq_login_data;
 
-struct _qq_interval {
+typedef struct _qq_interval {
 	gint resend;
 	gint keep_alive;
 	gint update;
-};
+} qq_interval;
 
-struct _qq_net_stat {
+typedef struct _qq_net_stat {
 	glong sent;
 	glong resend;
 	glong lost;
 	glong rcved;
 	glong rcved_dup;
-};
+} qq_net_stat;
 
-struct _qq_buddy_data {
-	guint32 uid;
+typedef struct _qq_buddy_data {
+	UID uid;
 	guint16 face;		/* index: 0 - 299 */
 	guint8 age;
 	guint8 gender;
@@ -104,7 +101,7 @@
 	gchar** memo;
 
 	gint8  role;		/* role in group, used only in group->members list */
-};
+} qq_buddy_data;
 
 typedef struct _qq_connection qq_connection;
 struct _qq_connection {
@@ -118,7 +115,7 @@
 	int tcp_rxlen;
 };
 
-struct _qq_data {
+typedef struct _qq_data {
 	PurpleConnection *gc;
 
 	GSList *openconns;
@@ -153,7 +150,7 @@
 
 	GList *transactions;	/* check ack packet and resend */
 
-	guint32 uid;			/* QQ number */
+	UID uid;			/* QQ number */
 
 	qq_login_data ld;
 	qq_captcha_data captcha;
@@ -187,8 +184,9 @@
 	gboolean is_show_notice;
 	gboolean is_show_news;
 	gboolean is_show_chat;
+	guint32 custom;
 
 	guint16 send_im_id;		/* send IM sequence number */
-};
+} qq_data;
 
 #endif
--- a/libpurple/protocols/qq/qq_base.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_base.c	Sat Feb 12 23:54:14 2011 +0000
@@ -42,7 +42,7 @@
 #include "utils.h"
 
 /* generate a md5 key using uid and session_key */
-static void get_session_md5(guint8 *session_md5, guint32 uid, guint8 *session_key)
+static void get_session_md5(guint8 *session_md5, UID uid, guint8 *session_key)
 {
 	guint8 src[QQ_KEY_LENGTH + QQ_KEY_LENGTH];
 	gint bytes = 0;
@@ -60,7 +60,7 @@
 	gint bytes;
 
 	guint8 ret;
-	guint32 uid;
+	UID uid;
 	struct in_addr ip;
 	guint16 port;
 	struct tm *tm_local;
@@ -151,7 +151,7 @@
 	gint bytes;
 	struct {
 		guint8 result;
-		guint32 uid;
+		UID uid;
 		struct in_addr new_server_ip;
 		guint16 new_server_port;
 	} packet;
@@ -1236,7 +1236,7 @@
 	qq_data *qd;
 	gint bytes;
 	guint8 ret;
-	guint32 uid;
+	UID uid;
 	gchar *error;
 	gchar *msg;
 	gchar *msg_utf8;
@@ -1427,7 +1427,7 @@
 	qq_data *qd;
 	gint bytes;
 	guint8 ret;
-	guint32 uid;
+	UID uid;
 	gchar *error;
 	gchar *msg;
 	gchar *msg_utf8;
--- a/libpurple/protocols/qq/qq_base.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_base.h	Sat Feb 12 23:54:14 2011 +0000
@@ -28,12 +28,12 @@
 #include <glib.h>
 #include "connection.h"
 
-#define QQ_LOGIN_REPLY_OK							0x00
+#define QQ_LOGIN_REPLY_OK				0x00
 #define QQ_LOGIN_REPLY_REDIRECT				0x01
 /* defined by myself */
 #define QQ_LOGIN_REPLY_CAPTCHA_DLG			0xfd
-#define QQ_LOGIN_REPLY_NEXT_TOKEN_EX		0xfe
-#define QQ_LOGIN_REPLY_ERR							0xff
+#define QQ_LOGIN_REPLY_NEXT_TOKEN_EX			0xfe
+#define QQ_LOGIN_REPLY_ERR				0xff
 
 #define QQ_LOGIN_MODE_NORMAL		0x0a
 #define QQ_LOGIN_MODE_AWAY	    	0x1e
@@ -76,3 +76,4 @@
 void qq_request_login_2008(PurpleConnection *gc);
 guint8 qq_process_login_2008( PurpleConnection *gc, guint8 *data, gint data_len);
 #endif
+
--- a/libpurple/protocols/qq/qq_define.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_define.c	Sat Feb 12 23:54:14 2011 +0000
@@ -118,6 +118,8 @@
 		return "QQMac 1.0 preview1 build 670";
 	case QQ_CLIENT_1441:
 		return "QQ2009 preview2";
+	case QQ_CLIENT_1663:
+		return "QQ2009";
 	case QQ_SERVER_0100:
 		return "QQ Server 0100";
 	default:
--- a/libpurple/protocols/qq/qq_define.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_define.h	Sat Feb 12 23:54:14 2011 +0000
@@ -35,7 +35,9 @@
 
 #define QQ_CLIENT_0D55 0x0d55	/* QQ2005 used by openq before */
 #define QQ_CLIENT_111D 0x111D	/* QQ2007 */
-#define QQ_CLIENT_115B 0x115B	/* QQ2008 He Sui*/
+#define QQ_CLIENT_115B 0x115B	/* QQ2008 He Sui */
+#define QQ_CLIENT_1663 0x1663	/* QQ2009 Release */
+#define QQ_CLIENT_1801 0x1801	/* QQ2009 International Beta1 */
 
 const gchar *qq_get_ver_desc(gint source);
 
--- a/libpurple/protocols/qq/qq_network.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_network.c	Sat Feb 12 23:54:14 2011 +0000
@@ -42,11 +42,11 @@
 #define QQ_DEFAULT_PORT					8000
 
 /* set QQ_CONNECT_MAX to 1, when test reconnecting */
-#define QQ_CONNECT_MAX						3
+#define QQ_CONNECT_MAX				3
 #define QQ_CONNECT_INTERVAL			2
-#define QQ_CONNECT_CHECK					5
-#define QQ_KEEP_ALIVE_INTERVAL		60
-#define QQ_TRANS_INTERVAL				10
+#define QQ_CONNECT_CHECK			5
+#define QQ_KEEP_ALIVE_INTERVAL			60
+#define QQ_TRANS_INTERVAL			10
 
 gboolean connect_to_server(PurpleConnection *gc, gchar *server, gint port);
 
@@ -63,6 +63,7 @@
 
 static qq_connection *connection_create(qq_data *qd, int fd) {
 	qq_connection *ret = g_new0(qq_connection, 1);
+	g_return_val_if_fail(ret != NULL, NULL);
 	ret->fd = fd;
 	qd->openconns = g_slist_append(qd->openconns, ret);
 	return ret;
@@ -268,7 +269,7 @@
 	guint16 seq;		/* May be ack_seq or send_seq, depends on cmd */
 	guint8 room_cmd;
 	guint32 room_id;
-	guint32 update_class;
+	UPDCLS update_class;
 	guint32 ship32;
 	int ret;
 
@@ -772,9 +773,14 @@
 	}
 
 	/* _qq_show_socket("Got login socket", source); */
+	/* ok, already connected to the server */
 	qd->fd = source;
 	conn = connection_create(qd, source);
+	g_return_if_fail( conn != NULL );
+
 	if (qd->use_tcp) {
+		/* events which match "PURPLE_INPUT_READ" of
+		 * "source" would trigger the callback function */
 		conn->input_handler = purple_input_add(source, PURPLE_INPUT_READ, tcp_pending, gc);
 	} else {
 		conn->input_handler = purple_input_add(source, PURPLE_INPUT_READ, udp_pending, gc);
@@ -1131,7 +1137,7 @@
 /* Encrypt data with session_key, and send packet out */
 static gint send_cmd_detail(PurpleConnection *gc, guint16 cmd, guint16 seq,
 	guint8 *data, gint data_len, gboolean is_save2trans,
-        guint32 update_class, guint32 ship32)
+        UPDCLS update_class, guint32 ship32)
 {
 	qq_data *qd;
 	guint8 *encrypted;
@@ -1161,7 +1167,7 @@
 }
 
 gint qq_send_cmd_mess(PurpleConnection *gc, guint16 cmd, guint8 *data, gint data_len,
-		guint32 update_class, guint32 ship32)
+		UPDCLS update_class, guint32 ship32)
 {
 	qq_data *qd;
 	guint16 seq;
@@ -1235,7 +1241,7 @@
 }
 
 static gint send_room_cmd(PurpleConnection *gc, guint8 room_cmd, guint32 room_id,
-		guint8 *data, gint data_len, guint32 update_class, guint32 ship32)
+		guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32)
 {
 	qq_data *qd;
 	guint8 *buf;
@@ -1289,7 +1295,7 @@
 }
 
 gint qq_send_room_cmd_mess(PurpleConnection *gc, guint8 room_cmd, guint32 room_id,
-		guint8 *data, gint data_len, guint32 update_class, guint32 ship32)
+		guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32)
 {
 	g_return_val_if_fail(room_cmd > 0, -1);
 	return send_room_cmd(gc, room_cmd, room_id, data, data_len, update_class, ship32);
--- a/libpurple/protocols/qq/qq_network.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_network.h	Sat Feb 12 23:54:14 2011 +0000
@@ -39,7 +39,7 @@
 		guint8 *encrypted_data, gint encrypted_len, gboolean is_save2trans);
 gint qq_send_cmd(PurpleConnection *gc, guint16 cmd, guint8 *data, gint datalen);
 gint qq_send_cmd_mess(PurpleConnection *gc, guint16 cmd, guint8 *data, gint data_len,
-		guint32 update_class, guint32 ship32);
+		UPDCLS update_class, guint32 ship32);
 
 gint qq_send_server_reply(PurpleConnection *gc, guint16 cmd, guint16 seq,
 		guint8 *data, gint data_len);
@@ -47,7 +47,7 @@
 gint qq_send_room_cmd(PurpleConnection *gc, guint8 room_cmd, guint32 room_id,
 		guint8 *data, gint data_len);
 gint qq_send_room_cmd_mess(PurpleConnection *gc, guint8 room_cmd, guint32 room_id,
-		guint8 *data, gint data_len, guint32 update_class, guint32 ship32);
+		guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32);
 gint qq_send_room_cmd_only(PurpleConnection *gc, guint8 room_cmd, guint32 room_id);
 gint qq_send_room_cmd_noid(PurpleConnection *gc, guint8 room_cmd,
 		guint8 *data, gint data_len);
--- a/libpurple/protocols/qq/qq_process.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_process.c	Sat Feb 12 23:54:14 2011 +0000
@@ -254,8 +254,8 @@
 	gint bytes;
 
 	struct {
-		guint32 uid_from;
-		guint32 uid_to;
+		UID uid_from;
+		UID uid_to;
 		guint32 seq;
 		struct in_addr ip_from;
 		guint16 port_from;
@@ -725,7 +725,7 @@
 
 void qq_proc_room_cmds(PurpleConnection *gc, guint16 seq,
 		guint8 room_cmd, guint32 room_id, guint8 *rcved, gint rcved_len,
-		guint32 update_class, guint32 ship32)
+		UPDCLS update_class, guint32 ship32)
 {
 	qq_data *qd;
 	guint8 *data;
@@ -861,7 +861,7 @@
 }
 
 guint8 qq_proc_login_cmds(PurpleConnection *gc,  guint16 cmd, guint16 seq,
-		guint8 *rcved, gint rcved_len, guint32 update_class, guint32 ship32)
+		guint8 *rcved, gint rcved_len, UPDCLS update_class, guint32 ship32)
 {
 	qq_data *qd;
 	guint8 *data = NULL;
@@ -1013,7 +1013,7 @@
 }
 
 void qq_proc_client_cmds(PurpleConnection *gc, guint16 cmd, guint16 seq,
-		guint8 *rcved, gint rcved_len, guint32 update_class, guint32 ship32)
+		guint8 *rcved, gint rcved_len, UPDCLS update_class, guint32 ship32)
 {
 	qq_data *qd;
 
--- a/libpurple/protocols/qq/qq_process.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_process.h	Sat Feb 12 23:54:14 2011 +0000
@@ -39,12 +39,12 @@
 };
 
 guint8 qq_proc_login_cmds(PurpleConnection *gc,  guint16 cmd, guint16 seq,
-		guint8 *rcved, gint rcved_len, guint32 update_class, guint32 ship32);
+		guint8 *rcved, gint rcved_len, UPDCLS update_class, guint32 ship32);
 void qq_proc_client_cmds(PurpleConnection *gc, guint16 cmd, guint16 seq,
-		guint8 *rcved, gint rcved_len, guint32 update_class, guint32 ship32);
+		guint8 *rcved, gint rcved_len, UPDCLS update_class, guint32 ship32);
 void qq_proc_room_cmds(PurpleConnection *gc, guint16 seq,
 		guint8 room_cmd, guint32 room_id, guint8 *rcved, gint rcved_len,
-		guint32 update_class, guint32 ship32);
+		UPDCLS update_class, guint32 ship32);
 
 void qq_proc_server_cmd(PurpleConnection *gc, guint16 cmd, guint16 seq, guint8 *rcved, gint rcved_len);
 
--- a/libpurple/protocols/qq/qq_trans.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_trans.c	Sat Feb 12 23:54:14 2011 +0000
@@ -42,25 +42,6 @@
 	QQ_TRANS_IS_REPLY = 0x08				/* server command before login*/
 };
 
-struct _qq_transaction {
-	guint8 flag;
-	guint16 seq;
-	guint16 cmd;
-
-	guint8 room_cmd;
-	guint32 room_id;
-
-	guint8 *data;
-	gint data_len;
-
-	gint fd;
-	gint send_retries;
-	gint rcved_times;
-	gint scan_times;
-
-	guint32 update_class;
-	guint32 ship32;
-};
 
 gboolean qq_trans_is_server(qq_transaction *trans)
 {
@@ -107,7 +88,7 @@
 }
 
 static qq_transaction *trans_create(PurpleConnection *gc, gint fd,
-	guint16 cmd, guint16 seq, guint8 *data, gint data_len, guint32 update_class, guint32 ship32)
+	guint16 cmd, guint16 seq, guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32)
 {
 	qq_transaction *trans;
 
@@ -178,7 +159,7 @@
 }
 
 void qq_trans_add_client_cmd(PurpleConnection *gc,
-	guint16 cmd, guint16 seq, guint8 *data, gint data_len, guint32 update_class, guint32 ship32)
+	guint16 cmd, guint16 seq, guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32)
 {
 	qq_data *qd = (qq_data *)gc->proto_data;
 	qq_transaction *trans = trans_create(gc, qd->fd, cmd, seq, data, data_len, update_class, ship32);
@@ -218,7 +199,7 @@
 
 void qq_trans_add_room_cmd(PurpleConnection *gc,
 		guint16 seq, guint8 room_cmd, guint32 room_id, guint8 *data, gint data_len,
-		guint32 update_class, guint32 ship32)
+		UPDCLS update_class, guint32 ship32)
 {
 	qq_data *qd = (qq_data *)gc->proto_data;
 	qq_transaction *trans = trans_create(gc, qd->fd, QQ_CMD_ROOM, seq, data, data_len,
--- a/libpurple/protocols/qq/qq_trans.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/qq_trans.h	Sat Feb 12 23:54:14 2011 +0000
@@ -28,7 +28,25 @@
 #include <glib.h>
 #include "qq.h"
 
-typedef struct _qq_transaction qq_transaction;
+typedef struct _qq_transaction {
+	guint8 flag;
+	guint16 seq;
+	guint16 cmd;
+
+	guint8 room_cmd;
+	guint32 room_id;
+
+	guint8 *data;
+	gint data_len;
+
+	gint fd;
+	gint send_retries;
+	gint rcved_times;
+	gint scan_times;
+
+	UPDCLS update_class;
+	guint32 ship32;
+} qq_transaction;
 
 qq_transaction *qq_trans_find_rcved(PurpleConnection *gc, guint16 cmd, guint16 seq);
 gboolean qq_trans_is_server(qq_transaction *trans) ;
@@ -39,10 +57,10 @@
 guint32 qq_trans_get_ship(qq_transaction *trans);
 
 void qq_trans_add_client_cmd(PurpleConnection *gc, guint16 cmd, guint16 seq,
-		guint8 *data, gint data_len, guint32 update_class, guint32 ship32);
+		guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32);
 void qq_trans_add_room_cmd(PurpleConnection *gc,
 		guint16 seq, guint8 room_cmd, guint32 room_id,
-		guint8 *data, gint data_len, guint32 update_class, guint32 ship32);
+		guint8 *data, gint data_len, UPDCLS update_class, guint32 ship32);
 void qq_trans_add_server_cmd(PurpleConnection *gc, guint16 cmd, guint16 seq,
 	guint8 *rcved, gint rcved_len);
 void qq_trans_add_server_reply(PurpleConnection *gc, guint16 cmd, guint16 seq,
--- a/libpurple/protocols/qq/send_file.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/send_file.c	Sat Feb 12 23:54:14 2011 +0000
@@ -278,7 +278,7 @@
 
 /* fill in the common information of file transfer */
 static gint _qq_create_packet_file_header
-(guint8 *raw_data, guint32 to_uid, guint16 message_type, qq_data *qd, gboolean seq_ack)
+(guint8 *raw_data, UID to_uid, guint16 message_type, qq_data *qd, gboolean seq_ack)
 {
 	gint bytes;
 	time_t now;
@@ -430,7 +430,7 @@
 }
 
 /* create the QQ_FILE_TRANS_REQ packet with file infomations */
-static void _qq_send_packet_file_request (PurpleConnection *gc, guint32 to_uid, gchar *filename, gint filesize)
+static void _qq_send_packet_file_request (PurpleConnection *gc, UID to_uid, gchar *filename, gint filesize)
 {
 	qq_data *qd;
 	guint8 *raw_data;
@@ -482,7 +482,7 @@
 }
 
 /* tell the buddy we want to accept the file */
-static void _qq_send_packet_file_accept(PurpleConnection *gc, guint32 to_uid)
+static void _qq_send_packet_file_accept(PurpleConnection *gc, UID to_uid)
 {
 	qq_data *qd;
 	guint8 *raw_data;
@@ -520,7 +520,7 @@
 			    packet_len, bytes);
 }
 
-static void _qq_send_packet_file_notifyip(PurpleConnection *gc, guint32 to_uid)
+static void _qq_send_packet_file_notifyip(PurpleConnection *gc, UID to_uid)
 {
 	PurpleXfer *xfer;
 	ft_info *info;
@@ -552,7 +552,7 @@
 }
 
 /* tell the buddy we don't want the file */
-static void _qq_send_packet_file_reject (PurpleConnection *gc, guint32 to_uid)
+static void _qq_send_packet_file_reject (PurpleConnection *gc, UID to_uid)
 {
 	qq_data *qd;
 	guint8 *raw_data;
@@ -576,7 +576,7 @@
 }
 
 /* tell the buddy to cancel transfer */
-static void _qq_send_packet_file_cancel (PurpleConnection *gc, guint32 to_uid)
+static void _qq_send_packet_file_cancel (PurpleConnection *gc, UID to_uid)
 {
 	qq_data *qd;
 	guint8 *raw_data;
@@ -611,7 +611,7 @@
 {
 	PurpleConnection *gc;
 	PurpleAccount *account;
-	guint32 to_uid;
+	UID to_uid;
 	const gchar *filename;
 	gchar *base_filename;
 
@@ -678,7 +678,7 @@
 
 /* process reject im for file transfer request */
 void qq_process_recv_file_reject (guint8 *data, gint data_len,
-		guint32 sender_uid, PurpleConnection *gc)
+		UID sender_uid, PurpleConnection *gc)
 {
 	gchar *msg, *filename;
 	qq_data *qd;
@@ -708,7 +708,7 @@
 
 /* process cancel im for file transfer request */
 void qq_process_recv_file_cancel (guint8 *data, gint data_len,
-		guint32 sender_uid, PurpleConnection *gc)
+		UID sender_uid, PurpleConnection *gc)
 {
 	gchar *msg, *filename;
 	qq_data *qd;
@@ -738,7 +738,7 @@
 }
 
 /* process accept im for file transfer request */
-void qq_process_recv_file_accept(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc)
+void qq_process_recv_file_accept(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc)
 {
 	qq_data *qd;
 	gint bytes;
@@ -764,7 +764,7 @@
 }
 
 /* process request from buddy's im for file transfer request */
-void qq_process_recv_file_request(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection * gc)
+void qq_process_recv_file_request(guint8 *data, gint data_len, UID sender_uid, PurpleConnection * gc)
 {
 	qq_data *qd;
 	PurpleXfer *xfer;
@@ -874,7 +874,7 @@
 }
 
 void qq_process_recv_file_notify(guint8 *data, gint data_len,
-		guint32 sender_uid, PurpleConnection *gc)
+		UID sender_uid, PurpleConnection *gc)
 {
 	gint bytes;
 	qq_data *qd;
--- a/libpurple/protocols/qq/send_file.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/send_file.h	Sat Feb 12 23:54:14 2011 +0000
@@ -29,7 +29,7 @@
 #include "qq.h"
 
 typedef struct _ft_info {
-	guint32 to_uid;
+	UID to_uid;
 	guint16 send_seq;
 	guint8 file_session_key[QQ_KEY_LENGTH];
 	guint8 conn_method;
@@ -67,11 +67,11 @@
 	gboolean use_major;
 } ft_info;
 
-void qq_process_recv_file_accept(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc);
-void qq_process_recv_file_reject(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc);
-void qq_process_recv_file_cancel(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc);
-void qq_process_recv_file_request(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc);
-void qq_process_recv_file_notify(guint8 *data, gint data_len, guint32 sender_uid, PurpleConnection *gc);
+void qq_process_recv_file_accept(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc);
+void qq_process_recv_file_reject(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc);
+void qq_process_recv_file_cancel(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc);
+void qq_process_recv_file_request(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc);
+void qq_process_recv_file_notify(guint8 *data, gint data_len, UID sender_uid, PurpleConnection *gc);
 gboolean qq_can_receive_file(PurpleConnection *gc, const char *who);
 void qq_send_file(PurpleConnection *gc, const char *who, const char *file);
 gint qq_get_conn_info(ft_info *info, guint8 *data);
--- a/libpurple/protocols/qq/utils.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/utils.c	Sat Feb 12 23:54:14 2011 +0000
@@ -131,9 +131,9 @@
 }
 
 /* convert Purple name to original QQ UID */
-guint32 purple_name_to_uid(const gchar *const name)
+UID purple_name_to_uid(const gchar *const name)
 {
-	guint32 ret;
+	UID ret;
 	g_return_val_if_fail(name != NULL, 0);
 
 	ret = strtoul(name, NULL, 10);
@@ -168,7 +168,7 @@
 
 /* convert a QQ UID to a unique name of Purple
  * the return needs to be freed */
-gchar *uid_to_purple_name(guint32 uid)
+gchar *uid_to_purple_name(UID uid)
 {
 	return g_strdup_printf("%u", uid);
 }
--- a/libpurple/protocols/qq/utils.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/qq/utils.h	Sat Feb 12 23:54:14 2011 +0000
@@ -27,6 +27,7 @@
 
 #include <stdio.h>
 #include <glib.h>
+#include "qq.h"
 
 #include "debug.h"
 
@@ -40,8 +41,8 @@
 gchar *gen_ip_str(guint8 *ip);
 guint8 *str_ip_gen(gchar *str);
 
-guint32 purple_name_to_uid(const gchar *name);
-gchar *uid_to_purple_name(guint32 uid);
+UID purple_name_to_uid(const gchar *name);
+gchar *uid_to_purple_name(UID uid);
 
 gchar *try_dump_as_gbk(const guint8 *const data, gint len);
 
--- a/libpurple/protocols/zephyr/Zinternal.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/zephyr/Zinternal.c	Sat Feb 12 23:54:14 2011 +0000
@@ -30,7 +30,6 @@
 #else
 #include <arpa/inet.h>
 #include <sys/socket.h>
-#include <utmp.h>
 #endif
 
 int __Zephyr_fd = -1;
--- a/libpurple/protocols/zephyr/zephyr.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/protocols/zephyr/zephyr.c	Sat Feb 12 23:54:14 2011 +0000
@@ -870,12 +870,12 @@
 			zephyr_triple *zt1, *zt2;
 			gchar *send_inst_utf8;
 			zephyr_account *zephyr = gc->proto_data;
-			zt1 = new_triple(gc->proto_data,notice.z_class, notice.z_class_inst, notice.z_recipient);
-			zt2 = find_sub_by_triple(gc->proto_data,zt1);
+			zt1 = new_triple(zephyr,notice.z_class, notice.z_class_inst, notice.z_recipient);
+			zt2 = find_sub_by_triple(zephyr,zt1);
 			if (!zt2) {
 				/* This is a server supplied subscription */
 				zephyr->subscrips = g_slist_append(zephyr->subscrips, new_triple(zephyr,zt1->class,zt1->instance,zt1->recipient));
-				zt2 = find_sub_by_triple(gc->proto_data,zt1);
+				zt2 = find_sub_by_triple(zephyr,zt1);
 			}
 
 			if (!zt2->open) {
@@ -1499,6 +1499,7 @@
 
 static void process_anyone(PurpleConnection *gc)
 {
+	zephyr_account *zephyr = purple_connection_get_protocol_data(gc);
 	FILE *fd;
 	gchar buff[BUFSIZ], *filename;
 	PurpleGroup *g;
@@ -1515,7 +1516,7 @@
 			strip_comments(buff);
 			if (buff[0]) {
 				if (!(b = purple_find_buddy(gc->account, buff))) {
-					char *stripped_user = zephyr_strip_local_realm(gc->proto_data,buff);
+					char *stripped_user = zephyr_strip_local_realm(zephyr,buff);
 					purple_debug_info("zephyr","stripped_user %s\n",stripped_user);
 					if (!(b = purple_find_buddy(gc->account,stripped_user))){
 						b = purple_buddy_new(gc->account, stripped_user, NULL);
@@ -1924,13 +1925,12 @@
 	fclose(fd);
 }
 
-static void write_anyone(PurpleConnection *gc)
+static void write_anyone(zephyr_account *zephyr)
 {
 	GSList *buddies;
 	char *fname;
 	FILE *fd;
 	PurpleAccount *account;
-	zephyr_account* zephyr = gc->proto_data;
 	fname = g_strdup_printf("%s/.anyone", purple_home_dir());
 	fd = g_fopen(fname, "w");
 	if (!fd) {
@@ -1938,7 +1938,7 @@
 		return;
 	}
 
-	account = purple_connection_get_account(gc);
+	account = zephyr->account;
 	for (buddies = purple_find_buddies(account, NULL); buddies;
 			buddies = g_slist_delete_link(buddies, buddies)) {
 		PurpleBuddy *b = buddies->data;
@@ -1966,10 +1966,10 @@
 	g_list_free(zephyr->pending_zloc_names);
 
 	if (purple_account_get_bool(gc->account, "write_anyone", FALSE))
-		write_anyone(gc);
+		write_anyone(zephyr);
 
 	if (purple_account_get_bool(gc->account, "write_zsubs", FALSE))
-		write_zsubs(gc->proto_data);
+		write_zsubs(zephyr);
 
 	s = zephyr->subscrips;
 	while (s) {
@@ -2032,7 +2032,7 @@
 	char *recipient;
 	zephyr_account *zephyr = gc->proto_data;
 
-	zt = find_sub_by_id(gc->proto_data,id);
+	zt = find_sub_by_id(zephyr,id);
 	if (!zt)
 		/* this should never happen. */
 		return -EINVAL;
@@ -2432,8 +2432,8 @@
 	if (!g_ascii_strcasecmp(recip, "%me%"))
 		recip = zephyr->username;
 
-	zt1 = new_triple(gc->proto_data,classname, instname, recip);
-	zt2 = find_sub_by_triple(gc->proto_data,zt1);
+	zt1 = new_triple(zephyr,classname, instname, recip);
+	zt2 = find_sub_by_triple(zephyr,zt1);
 	if (zt2) {
 		free_triple(zt1);
 		if (!zt2->open) {
@@ -2563,7 +2563,7 @@
 	zephyr_account* zephyr = gc->proto_data;
 	char *sender = (char *)zephyr->username;
 
-	zt = find_sub_by_id(gc->proto_data,id);
+	zt = find_sub_by_id(zephyr,id);
 	/* find_sub_by_id can return NULL */
 	if (!zt)
 		return;
--- a/libpurple/tests/Makefile.am	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/tests/Makefile.am	Sat Feb 12 23:54:14 2011 +0000
@@ -11,6 +11,7 @@
 	    tests.h \
 		test_cipher.c \
 		test_jabber_caps.c \
+		test_jabber_digest_md5.c \
 		test_jabber_jutil.c \
 		test_jabber_scram.c \
 		test_qq.c \
--- a/libpurple/tests/check_libpurple.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/tests/check_libpurple.c	Sat Feb 12 23:54:14 2011 +0000
@@ -85,6 +85,7 @@
 
 	srunner_add_suite(sr, cipher_suite());
 	srunner_add_suite(sr, jabber_caps_suite());
+	srunner_add_suite(sr, jabber_digest_md5_suite());
 	srunner_add_suite(sr, jabber_jutil_suite());
 	srunner_add_suite(sr, jabber_scram_suite());
 	srunner_add_suite(sr, qq_suite());
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/tests/test_jabber_digest_md5.c	Sat Feb 12 23:54:14 2011 +0000
@@ -0,0 +1,59 @@
+#include <string.h>
+
+#include "tests.h"
+#include "../util.h"
+#include "../protocols/jabber/auth_digest_md5.h"
+#include "../protocols/jabber/jutil.h"
+
+START_TEST(test_parsing)
+{
+	GHashTable *table;
+
+	table = jabber_auth_digest_md5_parse("r=\"realm\",token=   \"   asdf\"");
+	fail_if(g_hash_table_lookup(table, "r") == NULL);
+	assert_string_equal("realm", g_hash_table_lookup(table, "r"));
+	fail_if(g_hash_table_lookup(table, "token") == NULL);
+	assert_string_equal("asdf", g_hash_table_lookup(table, "token"));
+	g_hash_table_destroy(table);
+
+	table = jabber_auth_digest_md5_parse("r=\"a\", token=   \"   asdf\"");
+	fail_if(g_hash_table_lookup(table, "r") == NULL);
+	assert_string_equal("a", g_hash_table_lookup(table, "r"));
+	fail_if(g_hash_table_lookup(table, "token") == NULL);
+	assert_string_equal("asdf", g_hash_table_lookup(table, "token"));
+	g_hash_table_destroy(table);
+
+	table = jabber_auth_digest_md5_parse("r=\"\", token=   \"   asdf\"");
+	fail_if(g_hash_table_lookup(table, "r") == NULL);
+	assert_string_equal("", g_hash_table_lookup(table, "r"));
+	fail_if(g_hash_table_lookup(table, "token") == NULL);
+	assert_string_equal("asdf", g_hash_table_lookup(table, "token"));
+	g_hash_table_destroy(table);
+
+	table = jabber_auth_digest_md5_parse("realm=\"somerealm\",nonce=\"OA6MG9tEQGm2hh\",qop=\"auth\",charset=utf-8,algorithm=md5-sess");
+	fail_if(g_hash_table_lookup(table, "realm") == NULL);
+	assert_string_equal("somerealm", g_hash_table_lookup(table, "realm"));
+	fail_if(g_hash_table_lookup(table, "nonce") == NULL);
+	assert_string_equal("OA6MG9tEQGm2hh", g_hash_table_lookup(table, "nonce"));
+	fail_if(g_hash_table_lookup(table, "qop") == NULL);
+	assert_string_equal("auth", g_hash_table_lookup(table, "qop"));
+	fail_if(g_hash_table_lookup(table, "charset") == NULL);
+	assert_string_equal("utf-8", g_hash_table_lookup(table, "charset"));
+	fail_if(g_hash_table_lookup(table, "algorithm") == NULL);
+	assert_string_equal("md5-sess", g_hash_table_lookup(table, "algorithm"));
+
+	g_hash_table_destroy(table);
+
+}
+END_TEST
+
+Suite *
+jabber_digest_md5_suite(void)
+{
+	Suite *s = suite_create("Jabber SASL DIGEST-MD5 functions");
+
+	TCase *tc = tcase_create("Parsing Functionality");
+	tcase_add_test(tc, test_parsing);
+	suite_add_tcase(s, tc);
+	return s;
+}
--- a/libpurple/tests/tests.h	Sun Jan 09 23:32:10 2011 +0000
+++ b/libpurple/tests/tests.h	Sat Feb 12 23:54:14 2011 +0000
@@ -10,6 +10,7 @@
 Suite * master_suite(void);
 Suite * cipher_suite(void);
 Suite * jabber_caps_suite(void);
+Suite * jabber_digest_md5_suite(void);
 Suite * jabber_jutil_suite(void);
 Suite * jabber_scram_suite(void);
 Suite * qq_suite(void);
--- a/pidgin/gtkutils.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/pidgin/gtkutils.c	Sat Feb 12 23:54:14 2011 +0000
@@ -1394,6 +1394,7 @@
 
 static void dnd_image_ok_callback(_DndData *data, int choice)
 {
+	const gchar *shortname;
 	gchar *filedata;
 	size_t size;
 	struct stat st;
@@ -1448,7 +1449,9 @@
 
 			break;
 		}
-		id = purple_imgstore_add_with_id(filedata, size, data->filename);
+		shortname = strrchr(data->filename, G_DIR_SEPARATOR);
+		shortname = shortname ? shortname + 1 : data->filename;
+		id = purple_imgstore_add_with_id(filedata, size, shortname);
 
 		gtk_text_buffer_get_iter_at_mark(GTK_IMHTML(gtkconv->entry)->text_buffer, &iter,
 						 gtk_text_buffer_get_insert(GTK_IMHTML(gtkconv->entry)->text_buffer));
@@ -2854,7 +2857,7 @@
 	GtkComboBoxText *ret = NULL;
 	GtkWidget *the_entry = NULL;
 
-	ret = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new());
+	ret = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new_with_entry());
 	the_entry = gtk_entry_new();
 	gtk_container_add(GTK_CONTAINER(ret), the_entry);
 
--- a/pidgin/plugins/vvconfig.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/pidgin/plugins/vvconfig.c	Sat Feb 12 23:54:14 2011 +0000
@@ -82,20 +82,11 @@
 	GstPropertyProbe *probe;
 	const GParamSpec *pspec;
 
-	if (!strcmp(element_name, "<custom>")) {
-		ret = g_list_prepend(ret, NULL);
-		ret = g_list_prepend(ret, (gpointer)_("Default"));
-		ret = g_list_prepend(ret, "");
-		return ret;
-	}
-
 	ret = g_list_prepend(ret, (gpointer)_("Default"));
 	ret = g_list_prepend(ret, "");
 
-	if (*element_name == '\0') {
-		ret = g_list_prepend(ret, NULL);
-		ret = g_list_reverse(ret);
-		return ret;
+	if (!strcmp(element_name, "<custom>") || (*element_name == '\0')) {
+		return g_list_reverse(ret);
 	}
 
 	element = gst_element_factory_make(element_name, "test");
@@ -120,9 +111,7 @@
 		array = gst_property_probe_probe_and_get_values (probe, pspec);
 		if (array == NULL) {
 			purple_debug_info("vvconfig", "'%s' has no devices\n", element_name);
-			ret = g_list_prepend(ret, NULL);
-			ret = g_list_reverse(ret);
-			return ret;
+			return g_list_reverse(ret);
 		}
 
 		for (n=0; n < array->n_values; ++n) {
@@ -153,10 +142,7 @@
 	}
 	gst_object_unref(element);
 
-	ret = g_list_prepend(ret, NULL);
-	ret = g_list_reverse(ret);
-
-	return ret;
+	return g_list_reverse(ret);
 }
 
 static GList *
@@ -173,7 +159,6 @@
 			ret = g_list_prepend(ret, (gpointer)plugins[0]);
 		}
 	}
-	ret = g_list_prepend(ret, NULL);
 	ret = g_list_reverse(ret);
 	return ret;
 }
@@ -236,7 +221,8 @@
 	pref = g_strdup(name);
 	strcpy(pref + strlen(pref) - strlen("plugin"), "device");
 	devices = get_element_devices(value);
-	if (g_list_find(devices, purple_prefs_get_string(pref)) == NULL)
+	if (g_list_find_custom(devices, purple_prefs_get_string(pref),
+			(GCompareFunc)strcmp) == NULL)
 		purple_prefs_set_string(pref, g_list_next(devices)->data);
 	widget = pidgin_prefs_dropdown_from_list(parent,
 			label, PURPLE_PREF_STRING,
--- a/pidgin/win32/nsis/pidgin-installer.nsi	Sun Jan 09 23:32:10 2011 +0000
+++ b/pidgin/win32/nsis/pidgin-installer.nsi	Sat Feb 12 23:54:14 2011 +0000
@@ -530,6 +530,7 @@
     Push "xmpp"
     Call un.UnregisterURIHandler
 
+    Delete "$INSTDIR\ca-certs\AddTrust_External_Root.pem"
     Delete "$INSTDIR\ca-certs\America_Online_Root_Certification_Authority_1.pem"
     Delete "$INSTDIR\ca-certs\AOL_Member_CA.pem"
     Delete "$INSTDIR\ca-certs\CAcert_Class3.pem"
--- a/pidgin/win32/winpidgin.c	Sun Jan 09 23:32:10 2011 +0000
+++ b/pidgin/win32/winpidgin.c	Sat Feb 12 23:54:14 2011 +0000
@@ -632,11 +632,11 @@
 			} else {
 				if (strchr(__argv[i], 'd'))
 					debug = TRUE;
-				else if (strchr(__argv[i], 'h'))
+				if (strchr(__argv[i], 'h'))
 					help = TRUE;
-				else if (strchr(__argv[i], 'v'))
+				if (strchr(__argv[i], 'v'))
 					version = TRUE;
-				else if (strchr(__argv[i], 'm'))
+				if (strchr(__argv[i], 'm'))
 					multiple = TRUE;
 			}
 		}
--- a/po/ChangeLog	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/ChangeLog	Sat Feb 12 23:54:14 2011 +0000
@@ -1,6 +1,21 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
 version 2.7.10
+	* Bengali translation updated (Jamil Ahmed)
+	* Chinese (Hong Kong) translation updated (Ambrose C. Li, Paladin R.
+	  Liu)
+	* Chinese (Traditional) translation updated (Ambrose C. Li, Paladin R.
+	  Liu)
+	* Czech translation updated (David Vachulka)
+	* Dutch translation updated (Gideon van Melle)
+	* Hebrew translation updated (Shalom Craimer)
+	* Norwegian Nynorsk translation updated (Yngve Spjeld Landro)
+	* Occitan translation updated (Yannig Marchegay)
+	* Polish translation updated (Piotr Drąg)
+	* Romanian translation updated (Mişu Moldovan)
+	* Russian translation updated (Антон Самохвалов)
+	* Spanish translation updated (Javier Fernández-Sanguino Peña)
+	* Ukrainian translation updated (Oleksandr Kovalenko)
 
 version 2.7.9
 	* Czech translation updated (David Vachulka)
--- a/po/POTFILES.in	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/POTFILES.in	Sat Feb 12 23:54:14 2011 +0000
@@ -124,8 +124,8 @@
 libpurple/protocols/mxit/filexfer.c
 libpurple/protocols/mxit/http.c
 libpurple/protocols/mxit/login.c
+libpurple/protocols/mxit/multimx.c
 libpurple/protocols/mxit/mxit.c
-libpurple/protocols/mxit/multimx.c
 libpurple/protocols/mxit/profile.c
 libpurple/protocols/mxit/protocol.c
 libpurple/protocols/mxit/roster.c
@@ -148,8 +148,8 @@
 libpurple/protocols/oscar/oft.c
 libpurple/protocols/oscar/oscar.c
 libpurple/protocols/oscar/peer.c
+libpurple/protocols/oscar/userinfo.c
 libpurple/protocols/oscar/util.c
-libpurple/protocols/oscar/userinfo.c
 libpurple/protocols/oscar/visibility.c
 libpurple/protocols/qq/buddy_info.c
 libpurple/protocols/qq/buddy_list.c
--- a/po/ar.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/ar.po	Sat Feb 12 23:54:14 2011 +0000
@@ -747,9 +747,9 @@
 #, c-format
 msgid "File Transfers - %d%% of %d file"
 msgid_plural "File Transfers - %d%% of %d files"
-msgstr[0] "نقل الملفات - %d%% من %0.sصفر ملفات"
-msgstr[1] "نقل الملفات - %d%% من %0.sملف واحد"
-msgstr[2] "نقل الملفات - %d%% من %0.sملفين"
+msgstr[0] "نقل الملفات - %d%% من صفر ملفات"
+msgstr[1] "نقل الملفات - %d%% من ملف واحد"
+msgstr[2] "نقل الملفات - %d%% من ملفين"
 msgstr[3] "نقل الملفات - %d%% من %d ملفات"
 msgstr[4] "نقل الملفات - %d%% من %d ملفا"
 msgstr[5] "نقل الملفات - %d%% من %d ملف"
@@ -921,9 +921,9 @@
 #, c-format
 msgid "%s (%s) has %d new message."
 msgid_plural "%s (%s) has %d new messages."
-msgstr[0] "لا رسائل%0.s جديدة لـ ‏%s (%s)."
-msgstr[1] "‏%s (%s) لديه %0.sرسالة واحدة جديدة"
-msgstr[2] "‏%s (%s) لديه %0.sرسالتان جديدتان."
+msgstr[0] "لا رسائل جديدة لـ ‏%s ‏(%s)."
+msgstr[1] "‏%s (%s) لديه رسالة واحدة جديدة"
+msgstr[2] "‏%s (%s) لديه رسالتان جديدتان."
 msgstr[3] "‏%s (%s) لديه %d رسائل جديدة."
 msgstr[4] "‏%s (%s) لديه %d رسالة جديدة."
 msgstr[5] "‏%s (%s) لديه %d رسالة جديدة."
@@ -11231,9 +11231,9 @@
 #, c-format
 msgid "%s, %d hour"
 msgid_plural "%s, %d hours"
-msgstr[0] "%s، %0.sلا ساعات"
-msgstr[1] "‏%s، %0.sساعة واحدة"
-msgstr[2] "‏%s، %0.sساعتين"
+msgstr[0] "%s، لا ساعات"
+msgstr[1] "‏%s، ساعة واحدة"
+msgstr[2] "‏%s، ساعتين"
 msgstr[3] "‏%s، %d ساعات"
 msgstr[4] "‏%s، %d ساعة"
 msgstr[5] "‏%s، %d ساعة"
@@ -11251,9 +11251,9 @@
 #, c-format
 msgid "%s, %d minute"
 msgid_plural "%s, %d minutes"
-msgstr[0] "‏%s، %0.sلا دقائق"
-msgstr[1] "‏%s، %0.sدقيقة واحدة"
-msgstr[2] "‏%s، %0.sدقيقتين"
+msgstr[0] "‏%s، لا دقائق"
+msgstr[1] "‏%s، دقيقة واحدة"
+msgstr[2] "‏%s، دقيقتين"
 msgstr[3] "%s، %d دقائق"
 msgstr[4] "%s، %d دقيقة"
 msgstr[5] "%s، %d دقيقة"
@@ -11604,13 +11604,12 @@
 msgid "The text information for a buddy's status"
 msgstr "غيّر معلومات المستخدم لأجل %s"
 
-#, c-format
 msgid "You have %d contact named %s. Would you like to merge them?"
 msgid_plural ""
 "You currently have %d contacts named %s. Would you like to merge them?"
-msgstr[0] "لا مراسلين%0.s لديك باسم %s. أتريد دمجهم؟"
-msgstr[1] "لديك مراسل واحد%0.s باسم %s. أتريد دمجه؟"
-msgstr[2] "لديك مراسليْن%0.s باسم %s. أتريد دمجهما؟"
+msgstr[0] "%0.sلا مراسلين لديك باسم %s. أتريد دمجهم؟"
+msgstr[1] "%0.sلديك مراسل واحد باسم %s. أتريد دمجه؟"
+msgstr[2] "%0.sلديك مراسليْن باسم %s. أتريد دمجهما؟"
 msgstr[3] "لديك %d مراسلين باسم %s. أتريد دمجهم؟"
 msgstr[4] "لديك %d مراسلا باسم %s. أتريد دمجهم؟"
 msgstr[5] "لديك %d مراسل باسم %s. أتريد دمجهم؟"
@@ -11948,12 +11947,11 @@
 msgid "/Tools/Room List"
 msgstr "/الأدوات/قائمة الغرف"
 
-#, c-format
 msgid "%d unread message from %s\n"
 msgid_plural "%d unread messages from %s\n"
-msgstr[0] "لا رسائل%0.s غير مقروءة من %s\n"
-msgstr[1] "رسالة واحدة%0.s غير مقروءة من %s\n"
-msgstr[2] "رسالتان%0.s غير مقروءتان من %s\n"
+msgstr[0] "%0.sلا رسائل غير مقروءة من %s\n"
+msgstr[1] "%0.sرسالة واحدة غير مقروءة من %s\n"
+msgstr[2] "%0.sرسالتان غير مقروءتان من %s\n"
 msgstr[3] "%d رسائل غير مقروءة من %s\n"
 msgstr[4] "%d رسالة غير مقروءة من %s\n"
 msgstr[5] "%d رسالة غير مقروءة من %s\n"
@@ -12932,13 +12930,13 @@
 "You are about to remove the contact containing %s and %d other buddies from "
 "your buddy list.  Do you want to continue?"
 msgstr[0] ""
-"أنت بصدد إزالة مراسل يحتوي %s و %0.sلا أصدقاء من قائمة أصدقائك.  هل تريد "
+"أنت بصدد إزالة مراسل يحتوي %s ولا أصدقاء من قائمة أصدقائك.  هل تريد "
 "الاستمرار؟"
 msgstr[1] ""
-"أنت بصدد إزالة مراسل يحتوي %s و %0.sصديق آخر من قائمة أصدقائك.  هل تريد "
+"أنت بصدد إزالة مراسل يحتوي %s وصديق آخر من قائمة أصدقائك.  هل تريد "
 "الاستمرار؟"
 msgstr[2] ""
-"أنت بصدد إزالة مراسل يحتوي %s و %0.sصديقين آخرين من قائمة أصدقائك.  هل تريد "
+"أنت بصدد إزالة مراسل يحتوي %s وصديقين آخرين من قائمة أصدقائك.  هل تريد "
 "الاستمرار؟"
 msgstr[3] ""
 "أنت بصدد إزالة مراسل يحتوي %s و %d أصدقاء آخرين من قائمة أصدقائك.  هل تريد "
@@ -13504,12 +13502,12 @@
 #, c-format
 msgid "%s has %d new message."
 msgid_plural "%s has %d new messages."
-msgstr[0] "لا رسائل%0.s جديدة ل %s."
-msgstr[1] "رسالة%0.s جديدة ل %s."
-msgstr[2] "رسالتان%0.s جديدتان ل %s."
-msgstr[3] "%Id رسائل جديدة ل %s."
-msgstr[4] "%Id رسالة جديدة ل %s."
-msgstr[5] "%Id رسالة جديدة ل %s."
+msgstr[0] "لا رسائل جديدة ل‍ %s."
+msgstr[1] "رسالة جديدة ل‍ %s."
+msgstr[2] "رسالتان جديدتان ل‍ %s."
+msgstr[3] "%2$d رسائل جديدة ل‍ %1$s."
+msgstr[4] "%2$d رسالة جديدة ل‍ %1$s."
+msgstr[5] "%2$d رسالة جديدة ل‍ %1$s."
 
 #, c-format
 msgid "<b>%d new email.</b>"
--- a/po/az.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/az.po	Sat Feb 12 23:54:14 2011 +0000
@@ -15,7 +15,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: KBabel 1.3\n"
 
 #. Translators may want to transliterate the name.
--- a/po/bn.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/bn.po	Sat Feb 12 23:54:14 2011 +0000
@@ -13,7 +13,7 @@
 msgstr ""
 "Project-Id-Version: bn\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 20:34-0500\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
 "PO-Revision-Date: 2010-12-19 13:37+0600\n"
 "Last-Translator: israt <israt@ankur.org.bd>\n"
 "Language-Team: Bengali <ankur-bd-l10n@googlegroups.com>\n"
@@ -2466,8 +2466,12 @@
 "ফাইল সংরক্ষণের ‍‍পাথ\n"
 "(অনুগ্রহ করে সম্পূর্ণ পাথ প্রদান করুন)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "বন্ধু তালিকার বহির্ভূত ব্যবহারকারী থেকে স্বয়ংক্রিয় ভাবে বাতিল করা হবে"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"যখন একজন ব্যবহারকারী থেকে ফাইল স্থানান্তরের অনুরোধ আসে\n"
+" যা আপনার বন্ধু তালিকায় *নেই*:"
 
 # tithi
 msgid ""
@@ -2480,6 +2484,10 @@
 msgid "Create a new directory for each user"
 msgstr "প্রত্যেক ব্যবহারকারীর জন্য একটি নতুন ডিরেক্টরি তৈরি করা হবে"
 
+# Translated by sadia
+msgid "Escape the filenames"
+msgstr "ফাইলনাম এড়িয়ে যাওয়া"
+
 msgid "Notes"
 msgstr "নোট"
 
@@ -3993,7 +4001,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "একটি এনক্রিপশনবিহীন স্ট্রীমে সার্ভারের সরল-টেক্সট প্রমাণীকরণ প্রয়োজন"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "সার্ভার থেকে অকার্যকর উত্তর"
 
@@ -6605,6 +6616,22 @@
 msgid "Retrieving User Information..."
 msgstr "ব্যবহারকারীর তথ্য খুঁজে আনা হচ্ছে..."
 
+# Kick =  তিরস্কার
+# OR  পদাঘাত
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "MultiMX হতে আপনাকে তিরস্কার করা হয়েছে।"
+
+msgid "was kicked"
+msgstr "তিরস্কার করা হয়েছে"
+
+msgid "_Room Name:"
+msgstr "আসরের নাম (_R):"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "আপনাকে আমন্ত্রণ জানানো হয়েছে"
+
 # Translated by sadia
 msgid "Loading menu..."
 msgstr "মেনু লোড করা হচ্ছে..."
@@ -6640,22 +6667,6 @@
 msgid "Enable splash-screen popup"
 msgstr "স্প্ল্যাশ স্ক্রীন পপ আপ সক্রিয় করা হবে"
 
-# Kick =  তিরস্কার
-# OR  পদাঘাত
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "MultiMX হতে আপনাকে তিরস্কার করা হয়েছে।"
-
-msgid "was kicked"
-msgstr "তিরস্কার করা হয়েছে"
-
-msgid "_Room Name:"
-msgstr "আসরের নাম (_R):"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "আপনাকে আমন্ত্রণ জানানো হয়েছে"
-
 msgid "Last Online"
 msgstr "শেষ যখন অনলাইনে"
 
@@ -8546,91 +8557,6 @@
 "এটির জন্য দুটি কম্পিউটারের মধ্যে সরাসরি সংযোগ প্রয়োজন যা কিনা IM এর ছবির জন্য "
 "আবশ্যক। যেহেতু আপনার IP ঠিকানা প্রকাশিত হবে, তাই এতে গোপনীয়তায় ঝুঁকি থাকতে পারে।"
 
-msgid "Invalid SNAC"
-msgstr "অকার্যকর SNAC"
-
-msgid "Server rate limit exceeded"
-msgstr "সার্ভার হারের সীমা পেরিয়ে গেছে"
-
-msgid "Client rate limit exceeded"
-msgstr "ক্লায়েন্ট হারের সীমা পেরিয়ে গেছে"
-
-msgid "Service unavailable"
-msgstr "সার্ভিস বিদ্যমান নয়"
-
-# tithi
-msgid "Service not defined"
-msgstr "সেবা নির্ধারিত নয়"
-
-# tithi
-msgid "Obsolete SNAC"
-msgstr "অপ্রচলিত SNAC"
-
-# tithi
-msgid "Not supported by host"
-msgstr "হোস্ট দ্বারা সমর্থিত নয়"
-
-# tithi
-msgid "Not supported by client"
-msgstr "ক্লায়েন্ট দ্বারা সমর্থিত নয়"
-
-# tithi
-msgid "Refused by client"
-msgstr "ক্লায়েন্ট দ্বারা প্রত্যাখ্যাত"
-
-# tithi
-msgid "Reply too big"
-msgstr "অতিরিক্ত বড় উত্তর"
-
-# tithi
-msgid "Responses lost"
-msgstr "প্রতিক্রিয়া হারিয়ে গেছে"
-
-msgid "Request denied"
-msgstr "অনুরোধ প্রত্যাখ্যাত"
-
-# tithi
-msgid "Busted SNAC payload"
-msgstr "ব্যর্থ SNAC পেলোড"
-
-# tithi
-msgid "Insufficient rights"
-msgstr "অপর্যাপ্ত অধিকার"
-
-# tithi
-msgid "In local permit/deny"
-msgstr "স্থানীয় অনুমতি/অস্বীকারে"
-
-# tithi
-msgid "Warning level too high (sender)"
-msgstr "সতর্কতা স্তর খুব উচ্চ (প্রেরক)"
-
-# tithi
-msgid "Warning level too high (receiver)"
-msgstr "সতর্কতা স্তর খুব উচ্চ (গ্রাহক)"
-
-# tithi
-msgid "User temporarily unavailable"
-msgstr "ব্যবহারকারীকে সাময়িকভাবে পাওয়া যায়না"
-
-# tithi
-msgid "No match"
-msgstr "কোনো মিল নেই"
-
-# tithi
-msgid "List overflow"
-msgstr "লিস্ট ওভার‌ফ্লো"
-
-msgid "Request ambiguous"
-msgstr "অনুরোধ অস্পষ্ট"
-
-# tithi
-msgid "Queue full"
-msgstr "কিউ পরিপূর্ণ"
-
-msgid "Not while on AOL"
-msgstr "AOL এ থাকা অবস্থায় নয়"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "বন্ধু আইকন"
@@ -8767,6 +8693,91 @@
 msgid "Capabilities"
 msgstr "ক্ষমতা"
 
+msgid "Invalid SNAC"
+msgstr "অকার্যকর SNAC"
+
+msgid "Server rate limit exceeded"
+msgstr "সার্ভার হারের সীমা পেরিয়ে গেছে"
+
+msgid "Client rate limit exceeded"
+msgstr "ক্লায়েন্ট হারের সীমা পেরিয়ে গেছে"
+
+msgid "Service unavailable"
+msgstr "সার্ভিস বিদ্যমান নয়"
+
+# tithi
+msgid "Service not defined"
+msgstr "সেবা নির্ধারিত নয়"
+
+# tithi
+msgid "Obsolete SNAC"
+msgstr "অপ্রচলিত SNAC"
+
+# tithi
+msgid "Not supported by host"
+msgstr "হোস্ট দ্বারা সমর্থিত নয়"
+
+# tithi
+msgid "Not supported by client"
+msgstr "ক্লায়েন্ট দ্বারা সমর্থিত নয়"
+
+# tithi
+msgid "Refused by client"
+msgstr "ক্লায়েন্ট দ্বারা প্রত্যাখ্যাত"
+
+# tithi
+msgid "Reply too big"
+msgstr "অতিরিক্ত বড় উত্তর"
+
+# tithi
+msgid "Responses lost"
+msgstr "প্রতিক্রিয়া হারিয়ে গেছে"
+
+msgid "Request denied"
+msgstr "অনুরোধ প্রত্যাখ্যাত"
+
+# tithi
+msgid "Busted SNAC payload"
+msgstr "ব্যর্থ SNAC পেলোড"
+
+# tithi
+msgid "Insufficient rights"
+msgstr "অপর্যাপ্ত অধিকার"
+
+# tithi
+msgid "In local permit/deny"
+msgstr "স্থানীয় অনুমতি/অস্বীকারে"
+
+# tithi
+msgid "Warning level too high (sender)"
+msgstr "সতর্কতা স্তর খুব উচ্চ (প্রেরক)"
+
+# tithi
+msgid "Warning level too high (receiver)"
+msgstr "সতর্কতা স্তর খুব উচ্চ (গ্রাহক)"
+
+# tithi
+msgid "User temporarily unavailable"
+msgstr "ব্যবহারকারীকে সাময়িকভাবে পাওয়া যায়না"
+
+# tithi
+msgid "No match"
+msgstr "কোনো মিল নেই"
+
+# tithi
+msgid "List overflow"
+msgstr "লিস্ট ওভার‌ফ্লো"
+
+msgid "Request ambiguous"
+msgstr "অনুরোধ অস্পষ্ট"
+
+# tithi
+msgid "Queue full"
+msgstr "কিউ পরিপূর্ণ"
+
+msgid "Not while on AOL"
+msgstr "AOL এ থাকা অবস্থায় নয়"
+
 # tithi
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
@@ -9420,16 +9431,16 @@
 msgstr "সার্ভার নির্বাচন"
 
 # tithi
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 # tithi
 msgid "QQ2007"
 msgstr "QQ2007"
 
 # tithi
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "TCP দ্বারা সংযোগ করা হবে"
@@ -13272,10 +13283,6 @@
 msgid "Fatal Error"
 msgstr "মারাত্মক ত্রুটি"
 
-# tithi
-msgid "bug master"
-msgstr "বাগ মাস্টার"
-
 msgid "artist"
 msgstr "শিল্পী"
 
@@ -13472,6 +13479,9 @@
 msgid "Maithili"
 msgstr "মৈথিলি"
 
+msgid "Meadow Mari"
+msgstr "মিইডো মারি"
+
 msgid "Macedonian"
 msgstr "ম্যাসেডনিয়"
 
@@ -16808,6 +16818,13 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "আপনার এই অ্যাপ্লিকেশনটি আনইন্সটল করার অনুমতি নেই।"
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr "বন্ধু তালিকার বহির্ভূত ব্যবহারকারী থেকে স্বয়ংক্রিয় ভাবে বাতিল করা হবে"
+
+# tithi
+#~ msgid "bug master"
+#~ msgstr "বাগ মাস্টার"
+
 #~ msgid "An error occurred on the in-band bytestream transfer\n"
 #~ msgstr "ইন-ব্যান্ড বাইটস্ট্রিম বিনিময়ে ত্রুটি হয়েছে\n"
 
--- a/po/ca.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/ca.po	Sat Feb 12 23:54:14 2011 +0000
@@ -3,7 +3,7 @@
 # Copyright (C) unknown, Robert Millan <zeratul2@wanadoo.es>
 # Copyright (C) December 2003 (from 2003-12-12 until 2003-12-18),
 #               January (2004-01-07,12), Xan <dxpublica@telefonica.net>
-# Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010
+# Copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 #               Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>
 #
 # This file is distributed under the same license as the Pidgin package.
@@ -33,8 +33,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-23 07:57+0100\n"
-"PO-Revision-Date: 2010-12-23 08:04+0100\n"
+"POT-Creation-Date: 2011-01-30 11:04+0100\n"
+"PO-Revision-Date: 2011-01-30 11:11+0100\n"
 "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
 "Language-Team: Catalan <tradgnome@softcatala.net>\n"
 "Language: ca\n"
@@ -2387,9 +2387,12 @@
 "Camí on desar els fitxers\n"
 "(introduïu tot el camí)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr ""
-"Rebutja automàticament dels usuaris que no estiguin a la llista d'amics"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Quan arribi una sol·licitud de transferència d'un fitxer d'un\n"
+"usuari que *no* és a la vostra llista d'amics:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2402,6 +2405,10 @@
 msgid "Create a new directory for each user"
 msgstr "Crea un directori nou per a cada usuari"
 
+#, fuzzy
+msgid "Escape the filenames"
+msgstr "%s ha cancel·lat la transferència del fitxer"
+
 msgid "Notes"
 msgstr "Notes"
 
@@ -3859,7 +3866,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "El servidor requereix autenticació de text sobre un flux no xifrat"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "La resposta del servidor no és vàlida"
 
@@ -6201,6 +6211,20 @@
 msgid "Retrieving User Information..."
 msgstr "S'està obtenint informació de l'usuari..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "Us han fet fora d'aquest MultiMX."
+
+msgid "was kicked"
+msgstr "ha estat fet fora"
+
+msgid "_Room Name:"
+msgstr "Nom de la _Sala:"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "Heu convidat"
+
 msgid "Loading menu..."
 msgstr "S'està carregant el menú..."
 
@@ -6229,20 +6253,6 @@
 msgid "Enable splash-screen popup"
 msgstr "Habilita la pantalla de presentació emergent"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "Us han fet fora d'aquest MultiMX."
-
-msgid "was kicked"
-msgstr "ha estat fet fora"
-
-msgid "_Room Name:"
-msgstr "Nom de la _Sala:"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "Heu convidat"
-
 msgid "Last Online"
 msgstr "Darrer cop en línia"
 
@@ -7917,75 +7927,6 @@
 "necessari per poder enviar imatges instantànies. Atès que es revelarà la "
 "vostra adreça IP, això es pot considerar un risc de privadesa."
 
-msgid "Invalid SNAC"
-msgstr "SNAC invàlid"
-
-msgid "Server rate limit exceeded"
-msgstr "S'ha excedit el límit de velocitat del servidor"
-
-msgid "Client rate limit exceeded"
-msgstr "S'ha excedit el límit de velocitat del client"
-
-msgid "Service unavailable"
-msgstr "Servei no disponible"
-
-msgid "Service not defined"
-msgstr "Servei no definit"
-
-msgid "Obsolete SNAC"
-msgstr "SNAC obsolet"
-
-msgid "Not supported by host"
-msgstr "El servidor no ho permet"
-
-msgid "Not supported by client"
-msgstr "El client no ho permet"
-
-msgid "Refused by client"
-msgstr "Rebutjat pel client"
-
-msgid "Reply too big"
-msgstr "Resposta massa gran"
-
-msgid "Responses lost"
-msgstr "S'han perdut respostes"
-
-msgid "Request denied"
-msgstr "Petició denegada"
-
-msgid "Busted SNAC payload"
-msgstr "Càrrega SNAC malmesa"
-
-msgid "Insufficient rights"
-msgstr "Drets insuficients"
-
-msgid "In local permit/deny"
-msgstr "En la llista de permès/denegat local"
-
-msgid "Warning level too high (sender)"
-msgstr "Nivell d'avís massa alt (remitent)"
-
-msgid "Warning level too high (receiver)"
-msgstr "Nivell d'avís massa alt (receptor)"
-
-msgid "User temporarily unavailable"
-msgstr "Usuari no disponible temporalment"
-
-msgid "No match"
-msgstr "Cap coincidència"
-
-msgid "List overflow"
-msgstr "Sobreeiximent de la llista"
-
-msgid "Request ambiguous"
-msgstr "Petició ambigua"
-
-msgid "Queue full"
-msgstr "Cua plena"
-
-msgid "Not while on AOL"
-msgstr "No es pot fer mentre estigui a AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "Icona de l'amic"
@@ -8104,6 +8045,75 @@
 msgid "Capabilities"
 msgstr "Capacitats"
 
+msgid "Invalid SNAC"
+msgstr "SNAC invàlid"
+
+msgid "Server rate limit exceeded"
+msgstr "S'ha excedit el límit de velocitat del servidor"
+
+msgid "Client rate limit exceeded"
+msgstr "S'ha excedit el límit de velocitat del client"
+
+msgid "Service unavailable"
+msgstr "Servei no disponible"
+
+msgid "Service not defined"
+msgstr "Servei no definit"
+
+msgid "Obsolete SNAC"
+msgstr "SNAC obsolet"
+
+msgid "Not supported by host"
+msgstr "El servidor no ho permet"
+
+msgid "Not supported by client"
+msgstr "El client no ho permet"
+
+msgid "Refused by client"
+msgstr "Rebutjat pel client"
+
+msgid "Reply too big"
+msgstr "Resposta massa gran"
+
+msgid "Responses lost"
+msgstr "S'han perdut respostes"
+
+msgid "Request denied"
+msgstr "Petició denegada"
+
+msgid "Busted SNAC payload"
+msgstr "Càrrega SNAC malmesa"
+
+msgid "Insufficient rights"
+msgstr "Drets insuficients"
+
+msgid "In local permit/deny"
+msgstr "En la llista de permès/denegat local"
+
+msgid "Warning level too high (sender)"
+msgstr "Nivell d'avís massa alt (remitent)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Nivell d'avís massa alt (receptor)"
+
+msgid "User temporarily unavailable"
+msgstr "Usuari no disponible temporalment"
+
+msgid "No match"
+msgstr "Cap coincidència"
+
+msgid "List overflow"
+msgstr "Sobreeiximent de la llista"
+
+msgid "Request ambiguous"
+msgstr "Petició ambigua"
+
+msgid "Queue full"
+msgstr "Cua plena"
+
+msgid "Not while on AOL"
+msgstr "No es pot fer mentre estigui a AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8703,14 +8713,14 @@
 msgid "Select Server"
 msgstr "Seleccioneu un servidor"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Connecta amb TCP"
@@ -12284,10 +12294,6 @@
 msgid "Fatal Error"
 msgstr "Error fatal"
 
-# Fixme
-msgid "bug master"
-msgstr "bug master"
-
 msgid "artist"
 msgstr "artista"
 
@@ -12469,6 +12475,9 @@
 msgid "Maithili"
 msgstr "Maithili"
 
+msgid "Meadow Mari"
+msgstr "Txeremís oriental"
+
 msgid "Macedonian"
 msgstr "Macedoni"
 
@@ -15626,6 +15635,14 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "No tens permís per desinstal.lar aquesta aplicació."
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr ""
+#~ "Rebutja automàticament dels usuaris que no estiguin a la llista d'amics"
+
+# Fixme
+#~ msgid "bug master"
+#~ msgstr "bug master"
+
 #~ msgid "Error requesting %s"
 #~ msgstr "S'ha produït un error en sol·licitar %s"
 
--- a/po/cs.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/cs.po	Sat Feb 12 23:54:14 2011 +0000
@@ -9,8 +9,8 @@
 msgstr ""
 "Project-Id-Version: pidgin VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-26 22:11-0500\n"
-"PO-Revision-Date: 2010-12-21 09:08+0100\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
+"PO-Revision-Date: 2011-02-01 21:09+0100\n"
 "Last-Translator: David Vachulka <david@konstrukce-cad.com>\n"
 "Language-Team: Czech <cs@li.org>\n"
 "Language: cs\n"
@@ -2328,8 +2328,12 @@
 "Cesta, kam ukládat soubory\n"
 "(Zadejte prosím plnou cestu)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "Automaticky odmítat od uživatelů, kteří nejsou na seznamu kamarádů"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Když přijde požadavek na přenos souboru od někoho,\n"
+"kdo není v seznamu kamarádů:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2342,6 +2346,9 @@
 msgid "Create a new directory for each user"
 msgstr "Vytvořit nový adresář pro každého uživatele"
 
+msgid "Escape the filenames"
+msgstr "Upravit jména souborů"
+
 msgid "Notes"
 msgstr "Poznámky"
 
@@ -3793,7 +3800,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "Server vyžaduje textovou autentizaci v nešifrovaném proudu"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Neplatná odpověď od serveru"
 
@@ -6074,6 +6084,20 @@
 msgid "Retrieving User Information..."
 msgstr "Získávám informace o uživateli..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "Byl jste vykopnut z MultiMX."
+
+msgid "was kicked"
+msgstr "byl vykopnut"
+
+msgid "_Room Name:"
+msgstr "_Místnost:"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "Přišlo vám pozvání"
+
 msgid "Loading menu..."
 msgstr "Načítám menu..."
 
@@ -6101,20 +6125,6 @@
 msgid "Enable splash-screen popup"
 msgstr "Povolit zobrazení spouštěcí obrazovky"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "Byl jste vykopnut z MultiMX."
-
-msgid "was kicked"
-msgstr "byl vykopnut"
-
-msgid "_Room Name:"
-msgstr "_Místnost:"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "Přišlo vám pozvání"
-
 msgid "Last Online"
 msgstr "Naposledy připojen"
 
@@ -7776,75 +7786,6 @@
 "Images. Protože bude odkryta vaše IP adresa, dá se to považovat za riziko "
 "pro soukromí."
 
-msgid "Invalid SNAC"
-msgstr "Neplatné SNAC"
-
-msgid "Server rate limit exceeded"
-msgstr "Překročen limit poměru serveru"
-
-msgid "Client rate limit exceeded"
-msgstr "Překročen limit poměru klienta"
-
-msgid "Service unavailable"
-msgstr "Služba nedostupná"
-
-msgid "Service not defined"
-msgstr "Služba nedefinována"
-
-msgid "Obsolete SNAC"
-msgstr "Zastaralé SNAC"
-
-msgid "Not supported by host"
-msgstr "Nepodporováno hostitelem"
-
-msgid "Not supported by client"
-msgstr "Nepodporováno klientem"
-
-msgid "Refused by client"
-msgstr "Odmítnuto klientem"
-
-msgid "Reply too big"
-msgstr "Odpověď příliš velká"
-
-msgid "Responses lost"
-msgstr "Odpovědi ztraceny"
-
-msgid "Request denied"
-msgstr "Požadavek zamítnut"
-
-msgid "Busted SNAC payload"
-msgstr "Poškozená data SNAC"
-
-msgid "Insufficient rights"
-msgstr "Nedostatečná oprávnění"
-
-msgid "In local permit/deny"
-msgstr "V místním povolit/zakázat"
-
-msgid "Warning level too high (sender)"
-msgstr "Hladina varování příliš vysoká (odeslání)"
-
-msgid "Warning level too high (receiver)"
-msgstr "Hladina varování příliš vysoká (příjem)"
-
-msgid "User temporarily unavailable"
-msgstr "Uživatel dočasně nedostupný"
-
-msgid "No match"
-msgstr "Žádná shoda"
-
-msgid "List overflow"
-msgstr "Přetečení seznamu"
-
-msgid "Request ambiguous"
-msgstr "Požadavek nejednoznačný"
-
-msgid "Queue full"
-msgstr "Fronta plná"
-
-msgid "Not while on AOL"
-msgstr "Ne když na AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "Ikona kamaráda"
@@ -7963,6 +7904,75 @@
 msgid "Capabilities"
 msgstr "Schopnosti"
 
+msgid "Invalid SNAC"
+msgstr "Neplatné SNAC"
+
+msgid "Server rate limit exceeded"
+msgstr "Překročen limit poměru serveru"
+
+msgid "Client rate limit exceeded"
+msgstr "Překročen limit poměru klienta"
+
+msgid "Service unavailable"
+msgstr "Služba nedostupná"
+
+msgid "Service not defined"
+msgstr "Služba nedefinována"
+
+msgid "Obsolete SNAC"
+msgstr "Zastaralé SNAC"
+
+msgid "Not supported by host"
+msgstr "Nepodporováno hostitelem"
+
+msgid "Not supported by client"
+msgstr "Nepodporováno klientem"
+
+msgid "Refused by client"
+msgstr "Odmítnuto klientem"
+
+msgid "Reply too big"
+msgstr "Odpověď příliš velká"
+
+msgid "Responses lost"
+msgstr "Odpovědi ztraceny"
+
+msgid "Request denied"
+msgstr "Požadavek zamítnut"
+
+msgid "Busted SNAC payload"
+msgstr "Poškozená data SNAC"
+
+msgid "Insufficient rights"
+msgstr "Nedostatečná oprávnění"
+
+msgid "In local permit/deny"
+msgstr "V místním povolit/zakázat"
+
+msgid "Warning level too high (sender)"
+msgstr "Hladina varování příliš vysoká (odeslání)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Hladina varování příliš vysoká (příjem)"
+
+msgid "User temporarily unavailable"
+msgstr "Uživatel dočasně nedostupný"
+
+msgid "No match"
+msgstr "Žádná shoda"
+
+msgid "List overflow"
+msgstr "Přetečení seznamu"
+
+msgid "Request ambiguous"
+msgstr "Požadavek nejednoznačný"
+
+msgid "Queue full"
+msgstr "Fronta plná"
+
+msgid "Not while on AOL"
+msgstr "Ne když na AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8552,14 +8562,14 @@
 msgid "Select Server"
 msgstr "Vyberte server"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Připojit se pomocí TCP"
@@ -12088,9 +12098,6 @@
 msgid "Fatal Error"
 msgstr "Fatální chyba"
 
-msgid "bug master"
-msgstr "lovec chyb"
-
 msgid "artist"
 msgstr "umělec"
 
@@ -12270,6 +12277,9 @@
 msgid "Maithili"
 msgstr "Maithili"
 
+msgid "Meadow Mari"
+msgstr "Meadow Mari"
+
 msgid "Macedonian"
 msgstr "Makedonština"
 
@@ -15350,6 +15360,12 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "Nemáte oprávnění k odinstalaci této aplikace."
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr "Automaticky odmítat od uživatelů, kteří nejsou na seznamu kamarádů"
+
+#~ msgid "bug master"
+#~ msgstr "lovec chyb"
+
 #~ msgid "Error requesting %s"
 #~ msgstr "Chyba žádosti %s"
 
--- a/po/de.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/de.po	Sat Feb 12 23:54:14 2011 +0000
@@ -2,7 +2,7 @@
 # Pidgin German translation
 # Copyright (C) 2001, Daniel Seifert <Pidgin-translation@dseifert.de>
 # Copyright (C) 2002, Karsten Weiss <knweiss@gmx.de>
-# Copyright (C) 2002-2010, Björn Voigt <bjoern@cs.tu-berlin.de>,
+# Copyright (C) 2002-2011, Björn Voigt <bjoern@cs.tu-berlin.de>,
 #                     Jochen Kemnade <jochenkemnade@web.de>
 #
 # This file is distributed under the same license as the Pidgin package.
@@ -11,9 +11,9 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-22 10:12+0100\n"
-"PO-Revision-Date: 2010-12-22 10:21+0100\n"
-"Last-Translator: Björn Voigt <bjoern@cs.tu-berlin.de>\n"
+"POT-Creation-Date: 2011-02-06 14:22+0100\n"
+"PO-Revision-Date: 2011-02-06 14:22+0100\n"
+"Last-Translator: Jochen Kemnade <jochenkemnade@web.de>\n"
 "Language-Team: German <de@li.org>\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
@@ -401,7 +401,7 @@
 msgstr "Chat betreten"
 
 msgid "Please enter the name of the chat you want to join."
-msgstr "Bitte geben Sie die den Namen des Chats an, den Sie betreten möchten."
+msgstr "Bitte geben Sie den Namen des Chats an, den Sie betreten möchten."
 
 msgid "Join"
 msgstr "Betreten"
@@ -568,7 +568,7 @@
 msgstr "Konten reaktivieren"
 
 msgid "No such command."
-msgstr "Es gibt kein solches Kommando."
+msgstr "Unbekanntes Kommando."
 
 msgid "Syntax Error:  You typed the wrong number of arguments to that command."
 msgstr ""
@@ -581,7 +581,8 @@
 msgstr "Dieses Kommando funktioniert nur in Chats, nicht bei IMs."
 
 msgid "That command only works in IMs, not chats."
-msgstr "Dieses Kommando funktioniert nur bei IMs, nicht bei Chats."
+msgstr ""
+"Dieses Kommando funktioniert nur bei Sofortnachrichten, nicht bei Chats."
 
 msgid "That command doesn't work on this protocol."
 msgstr "Dieses Kommando funktioniert nicht in diesem Protokoll."
@@ -646,7 +647,7 @@
 msgstr "Einladen..."
 
 msgid "Enable Logging"
-msgstr "Mitschnitt einschalten"
+msgstr "Mitschnitt aktivieren"
 
 msgid "Enable Sounds"
 msgstr "Klänge aktivieren"
@@ -801,7 +802,7 @@
 msgstr "Status"
 
 msgid "Close this window when all transfers finish"
-msgstr "Schließe dieses Fenster, wenn alle Übertragungen abgeschlossen sind"
+msgstr "Fenster schließen, wenn alle Übertragungen abgeschlossen sind"
 
 msgid "Clear finished transfers"
 msgstr "Entferne komplette Übertragungen"
@@ -816,7 +817,7 @@
 msgstr "Abgebrochen"
 
 msgid "Failed"
-msgstr "Gescheitert"
+msgstr "Fehlgeschlagen"
 
 #, c-format
 msgid "%.2f KiB/s"
@@ -884,11 +885,11 @@
 
 #, c-format
 msgid "Conversations in %s"
-msgstr "Unterhaltung in %s"
+msgstr "Unterhaltungen in %s"
 
 #, c-format
 msgid "Conversations with %s"
-msgstr "Unterhaltung mit %s"
+msgstr "Unterhaltungen mit %s"
 
 msgid "All Conversations"
 msgstr "Alle Unterhaltungen"
@@ -910,7 +911,7 @@
 msgstr "Ablehnen"
 
 msgid "Call in progress."
-msgstr "Anruf läuft."
+msgstr "Verbindungsaufbau."
 
 msgid "The call has been terminated."
 msgstr "Der Anruf wurde beendet."
@@ -926,7 +927,7 @@
 "starten."
 
 msgid "You have rejected the call."
-msgstr "Sie haben den Anruf abgelehnt."
+msgstr "Sie haben den Anruf abgewiesen."
 
 msgid "call: Make an audio call."
 msgstr "call: Einen Audio-Anruf tätigen."
@@ -1009,7 +1010,7 @@
 msgstr "Keine Einstellungsoptionen für dieses Plugin."
 
 msgid "Error loading plugin"
-msgstr "Beim Laden des Plugins traten Fehler auf"
+msgstr "Beim Laden des Plugins ist ein Fehler aufgetreten"
 
 msgid "The selected file is not a valid plugin."
 msgstr "Die gewählte Datei ist kein gültiges Plugin."
@@ -1021,7 +1022,7 @@
 "genaue Fehlermeldung zu sehen."
 
 msgid "Select plugin to install"
-msgstr "Wählen Sie ein Plugin zum Installieren"
+msgstr "Zu installierendes Plugin auswählen"
 
 msgid "You can (un)load plugins from the following list."
 msgstr "Die können Plugins von der folgenden Liste laden bzw. entladen."
@@ -1064,10 +1065,10 @@
 msgstr "Alarm, wenn Buddy..."
 
 msgid "Signs on"
-msgstr "sich angemeldet"
+msgstr "sich anmeldet"
 
 msgid "Signs off"
-msgstr "sich abgemeldet"
+msgstr "sich abmeldet"
 
 msgid "Goes away"
 msgstr "hinausgeht"
@@ -1085,7 +1086,7 @@
 msgstr "zu tippen beginnt"
 
 msgid "Pauses while typing"
-msgstr "beim Tippen anhält"
+msgstr "das Tippen unterbricht"
 
 msgid "Stops typing"
 msgstr "aufhört zu tippen"
@@ -1119,13 +1120,13 @@
 msgstr "Wiederkehrend"
 
 msgid "Cannot create pounce"
-msgstr "Kann Alarm nicht erzeugen"
+msgstr "Alarm konnte nicht erstellt werden"
 
 msgid "You do not have any accounts."
 msgstr "Sie haben keine Kontos."
 
 msgid "You must create an account first before you can create a pounce."
-msgstr "Sie müssen ein Konto anlegen, bevor Sie einen Alarm erzeugen können."
+msgstr "Sie müssen ein Konto anlegen, bevor Sie einen Alarm einrichten können."
 
 #, c-format
 msgid "Are you sure you want to delete the pounce on %s for %s?"
@@ -1164,7 +1165,7 @@
 
 #, c-format
 msgid "%s has become idle (%s)"
-msgstr "%s wurde untätig (%s)"
+msgstr "%s ist nun untätig (%s)"
 
 #, c-format
 msgid "%s has gone away. (%s)"
@@ -1178,7 +1179,7 @@
 msgstr "Unbekanntes Alarm-Ereignis. Bitte berichten Sie dieses Problem!"
 
 msgid "Based on keyboard use"
-msgstr "Abhängig von Tastaturbenutzung"
+msgstr "Abhängig von der Tastaturbenutzung"
 
 msgid "From last sent message"
 msgstr "Von letzter gesendeter Nachricht"
@@ -1199,7 +1200,7 @@
 msgstr "Mitschnitt-Format"
 
 msgid "Log IMs"
-msgstr "IMs mitschneiden"
+msgstr "Sofortnachrichten mitschneiden"
 
 msgid "Log chats"
 msgstr "Chats mitschneiden"
@@ -1247,7 +1248,7 @@
 msgstr "Drücken Sie 'Enter', um mehr Räume dieser Kategorie zu finden."
 
 msgid "Get"
-msgstr "Holen"
+msgstr "Abrufen"
 
 #. Create the window.
 msgid "Room List"
@@ -1441,7 +1442,7 @@
 msgstr "Statusmeldungen"
 
 msgid "Error loading the plugin."
-msgstr "Beim Laden des Plugins traten Fehler auf."
+msgstr "Beim Laden des Plugins ist ein Fehler aufgetreten."
 
 msgid "Couldn't find X display"
 msgstr "Konnte X-Display nicht finden"
@@ -1519,7 +1520,7 @@
 msgstr "<b>Unterhaltung mit %s am %s:</b><br>"
 
 msgid "History Plugin Requires Logging"
-msgstr "Das Verlaufs-Plugin erfordert das Mitschneiden"
+msgstr "Für das Verlaufs-Plugin muss das Mitschneiden aktiviert sein"
 
 msgid ""
 "Logging can be enabled from Tools -> Preferences -> Logging.\n"
@@ -1543,7 +1544,7 @@
 "When a new conversation is opened this plugin will insert the last "
 "conversation into the current conversation."
 msgstr ""
-"Wenn eine neue Unterhaltung eröffnet wird, fügt dieses Plugin die letzte "
+"Wenn eine neue Unterhaltung begonnen wird, fügt dieses Plugin die letzte "
 "Unterhaltung in die aktuelle Unterhaltung ein."
 
 #, c-format
@@ -1607,7 +1608,7 @@
 msgstr "Verschachtelte Gruppen (experimentell)"
 
 msgid "Provides alternate buddylist grouping options."
-msgstr "Bietet alternative Einstellungen für die Kontaktlisten-Gruppierung."
+msgstr "Bietet alternative Einstellungen für die Gruppierung der Kontaktliste."
 
 msgid "Lastlog"
 msgstr "Verlauf"
@@ -1900,11 +1901,11 @@
 
 #, c-format
 msgid "Failed to get name: %s"
-msgstr "Kann den Namen nicht bekommen: %s"
+msgstr "Name konnte nicht abgerufen werden: %s"
 
 #, c-format
 msgid "Failed to get serv name: %s"
-msgstr "Kann den Serv-Namen nicht bekommen: %s"
+msgstr "Serv-Name konnte nicht abgerufen werden: %s"
 
 msgid "Purple's D-BUS server is not running for the reason listed below"
 msgstr "Purple's D-Bus-Server läuft aus dem folgenden Grund nicht"
@@ -2041,7 +2042,7 @@
 msgstr "Übertragung der Datei %s ist komplett"
 
 msgid "File transfer complete"
-msgstr "Dateiübertragung ist komplett"
+msgstr "Dateiübertragung abgeschlossen"
 
 #, c-format
 msgid "You cancelled the transfer of %s"
@@ -2368,8 +2369,12 @@
 "Pfad in denen die Dateien gespeichert werden sollen\n"
 "(Bitte geben Sie den vollständigen Pfad an)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "Automatisch von Benutzern ablehnen, die nicht in der Buddy-Liste sind"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Wenn eine Dateitransferanfrage von einem Benutzer ankommt, \n"
+"der *nicht* in Ihrer Buddy-Liste ist:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2382,6 +2387,9 @@
 msgid "Create a new directory for each user"
 msgstr "Für jeden Benutzer ein neues Verzeichnis anlegen"
 
+msgid "Escape the filenames"
+msgstr "Sonderzeichen in Dateinamen ersetzen"
+
 msgid "Notes"
 msgstr "Notizen"
 
@@ -3850,7 +3858,10 @@
 "Der Server erfordert eine Klartext-Authentifizierung über einen "
 "unverschlüsselten Kanal"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Ungültige Serverantwort"
 
@@ -8730,14 +8741,14 @@
 msgid "Select Server"
 msgstr "Server wählen"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Über TCP verbinden"
@@ -8751,6 +8762,9 @@
 msgid "Show chat room when msg comes"
 msgstr "Chatraum zeigen, wenn Nachricht empfangen wird"
 
+msgid "Use default font"
+msgstr "Standardschriftart benutzen"
+
 msgid "Keep alive interval (seconds)"
 msgstr "Intervall zum Aufrechterhalten der Verbindung (Sekunden)"
 
@@ -12328,9 +12342,6 @@
 msgid "Fatal Error"
 msgstr "Schwerer Fehler"
 
-msgid "bug master"
-msgstr "Bug-Master"
-
 msgid "artist"
 msgstr "Künstler"
 
@@ -12510,6 +12521,9 @@
 msgid "Maithili"
 msgstr "Maithili"
 
+msgid "Meadow Mari"
+msgstr "Wiesen-Mari"
+
 msgid "Macedonian"
 msgstr "Makedonisch"
 
@@ -13448,10 +13462,10 @@
 msgstr "Budd_y-Name:"
 
 msgid "Si_gns on"
-msgstr "si_ch angemeldet"
+msgstr "si_ch anmeldet"
 
 msgid "Signs o_ff"
-msgstr "sich abgemel_det"
+msgstr "sich abmel_det"
 
 msgid "Goes a_way"
 msgstr "hinausgeh_t"
@@ -15662,15 +15676,3 @@
 
 msgid "You do not have permission to uninstall this application."
 msgstr "Sie haben keine Berechtigung, diese Anwendung zu deinstallieren."
-
-#~ msgid "Error requesting %s"
-#~ msgstr "Fehler beim Anfordern von %s"
-
-#~ msgid "An error occurred on the in-band bytestream transfer\n"
-#~ msgstr "Bei der In-Band-Bytestrom-Übertragung trat ein Fehler auf\n"
-
-#~ msgid "Transfer was closed."
-#~ msgstr "Übertragung wurde geschlossen."
-
-#~ msgid "Failed to open in-band bytestream"
-#~ msgstr "Öffnen des In-Band-Bytestroms fehlgeschlagen"
--- a/po/el.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/el.po	Sat Feb 12 23:54:14 2011 +0000
@@ -18,7 +18,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: Plural-Forms:  nplurals=2; plural=(n != 1)\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "X-Generator: Lokalize 0.3\n"
 
 #. Translators may want to transliterate the name.
--- a/po/en_AU.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/en_AU.po	Sat Feb 12 23:54:14 2011 +0000
@@ -16,7 +16,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n>1;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
--- a/po/en_GB.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/en_GB.po	Sat Feb 12 23:54:14 2011 +0000
@@ -15,7 +15,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n>1;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
--- a/po/es.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/es.po	Sat Feb 12 23:54:14 2011 +0000
@@ -7,7 +7,7 @@
 #               <franciscojavier.fernandez.serrador@hispalinux.es>, 2003.
 # Copyright (C) February 2010, Francisco Javier F. Serrador <fserrador@gmail.com>
 # Copyright (C) June 2002, April 2003, January 2004, March 2004, September 2004,
-# 	      January 2005, 2006-2008, July 2009, July 2010, August 2010
+# 	      January 2005, 2006-2008, July 2009, July 2010, August 2010, January 2011
 # 		Javier Fernández-Sanguino Peña  <jfs@debian.org>
 #
 # Agradecemos la ayuda de revisión realizada por:
@@ -53,8 +53,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:33-0500\n"
-"PO-Revision-Date: 2010-12-15 03:32+0100\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
+"PO-Revision-Date: 2011-01-30 21:28+0100\n"
 "Last-Translator: Javier Fernández-Sanguino <jfs@debian.org>\n"
 "Language-Team:  Spanish team <es@li.org>\n"
 "Language: \n"
@@ -2475,10 +2475,12 @@
 "Ruta donde se guardarán los archivos\n"
 "(Debe dar la ruta completa)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr ""
-"Rechazar automáticamente las transferencias de usuarios que no están en mi "
-"lista de amigos"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Cuando llega una solicitud de transferencia de un usuario que\n"
+"*no* está en su lista de amigos:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2491,6 +2493,9 @@
 msgid "Create a new directory for each user"
 msgstr "Crear un directorio para cada usuario"
 
+msgid "Escape the filenames"
+msgstr "Indentar los nombres de fichero"
+
 msgid "Notes"
 msgstr "Notas"
 
@@ -3954,7 +3959,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "El servidor solicita autenticación en claro sobre un canal no cifrado"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Respuesta inválida del servidor"
 
@@ -6298,6 +6306,20 @@
 msgid "Retrieving User Information..."
 msgstr "Obteniendo la información del usuario..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "Ha sido expulsado de este MultiMX."
+
+msgid "was kicked"
+msgstr "fue expulsado"
+
+msgid "_Room Name:"
+msgstr "Nombre de _Sala:"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "Ha sido invitado"
+
 msgid "Loading menu..."
 msgstr "Cargando el menú..."
 
@@ -6325,20 +6347,6 @@
 msgid "Enable splash-screen popup"
 msgstr "Activar la pantalla de bienvenida"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "Ha sido expulsado de este MultiMX."
-
-msgid "was kicked"
-msgstr "fue expulsado"
-
-msgid "_Room Name:"
-msgstr "Nombre de _Sala:"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "Ha sido invitado"
-
 msgid "Last Online"
 msgstr "Última conexión"
 
@@ -8007,75 +8015,6 @@
 "para Imágenes de MI.  Como su dirección IP será revelada, puede considerarse "
 "esto como un riesgo a su privacidad."
 
-msgid "Invalid SNAC"
-msgstr "SNAC inválido"
-
-msgid "Server rate limit exceeded"
-msgstr "Se excedió el límite de tasa del servidor"
-
-msgid "Client rate limit exceeded"
-msgstr "Se excedió el límite de tasa del cliente"
-
-msgid "Service unavailable"
-msgstr "Servicio no disponible"
-
-msgid "Service not defined"
-msgstr "Servicio no definido"
-
-msgid "Obsolete SNAC"
-msgstr "SNAC obsoleto"
-
-msgid "Not supported by host"
-msgstr "No soportado por el servidor"
-
-msgid "Not supported by client"
-msgstr "No soportado por el cliente"
-
-msgid "Refused by client"
-msgstr "Rechazado por el cliente"
-
-msgid "Reply too big"
-msgstr "Respuesta demasiado grande"
-
-msgid "Responses lost"
-msgstr "Respuestas perdidas"
-
-msgid "Request denied"
-msgstr "Solicitud denegada"
-
-msgid "Busted SNAC payload"
-msgstr "Carga de SNAC destrozada"
-
-msgid "Insufficient rights"
-msgstr "Derechos insuficientes"
-
-msgid "In local permit/deny"
-msgstr "En la lista local de autorizar/negar"
-
-msgid "Warning level too high (sender)"
-msgstr "Nivel de aviso demasiado alto (emisor)"
-
-msgid "Warning level too high (receiver)"
-msgstr "Nivel de aviso demasiado alto (receptor)"
-
-msgid "User temporarily unavailable"
-msgstr "Usuario temporalmente no disponible"
-
-msgid "No match"
-msgstr "No hubo coincidencia"
-
-msgid "List overflow"
-msgstr "Desbordamiento de la lista"
-
-msgid "Request ambiguous"
-msgstr "Solicitud ambigua"
-
-msgid "Queue full"
-msgstr "Cola llena"
-
-msgid "Not while on AOL"
-msgstr "No mientras esté en AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "Icono de amigo"
@@ -8194,6 +8133,75 @@
 msgid "Capabilities"
 msgstr "Capacidades"
 
+msgid "Invalid SNAC"
+msgstr "SNAC inválido"
+
+msgid "Server rate limit exceeded"
+msgstr "Se excedió el límite de tasa del servidor"
+
+msgid "Client rate limit exceeded"
+msgstr "Se excedió el límite de tasa del cliente"
+
+msgid "Service unavailable"
+msgstr "Servicio no disponible"
+
+msgid "Service not defined"
+msgstr "Servicio no definido"
+
+msgid "Obsolete SNAC"
+msgstr "SNAC obsoleto"
+
+msgid "Not supported by host"
+msgstr "No soportado por el servidor"
+
+msgid "Not supported by client"
+msgstr "No soportado por el cliente"
+
+msgid "Refused by client"
+msgstr "Rechazado por el cliente"
+
+msgid "Reply too big"
+msgstr "Respuesta demasiado grande"
+
+msgid "Responses lost"
+msgstr "Respuestas perdidas"
+
+msgid "Request denied"
+msgstr "Solicitud denegada"
+
+msgid "Busted SNAC payload"
+msgstr "Carga de SNAC destrozada"
+
+msgid "Insufficient rights"
+msgstr "Derechos insuficientes"
+
+msgid "In local permit/deny"
+msgstr "En la lista local de autorizar/negar"
+
+msgid "Warning level too high (sender)"
+msgstr "Nivel de aviso demasiado alto (emisor)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Nivel de aviso demasiado alto (receptor)"
+
+msgid "User temporarily unavailable"
+msgstr "Usuario temporalmente no disponible"
+
+msgid "No match"
+msgstr "No hubo coincidencia"
+
+msgid "List overflow"
+msgstr "Desbordamiento de la lista"
+
+msgid "Request ambiguous"
+msgstr "Solicitud ambigua"
+
+msgid "Queue full"
+msgstr "Cola llena"
+
+msgid "Not while on AOL"
+msgstr "No mientras esté en AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8786,14 +8794,14 @@
 msgid "Select Server"
 msgstr "Seleccionar servidor"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Conectar por TCP"
@@ -12353,9 +12361,6 @@
 msgid "Fatal Error"
 msgstr "Error fatal"
 
-msgid "bug master"
-msgstr "maestro de las erratas"
-
 msgid "artist"
 msgstr "artista"
 
@@ -12536,6 +12541,9 @@
 msgid "Maithili"
 msgstr "Maithili"
 
+msgid "Meadow Mari"
+msgstr "Mari"
+
 msgid "Macedonian"
 msgstr "Macedonio"
 
@@ -15685,6 +15693,14 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "No tiene permisos para desinstalar esta aplicación."
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr ""
+#~ "Rechazar automáticamente las transferencias de usuarios que no están en "
+#~ "mi lista de amigos"
+
+#~ msgid "bug master"
+#~ msgstr "maestro de las erratas"
+
 #~ msgid "Error requesting %s"
 #~ msgstr "Error al solicitar %s"
 
@@ -15757,20 +15773,20 @@
 #~ msgstr "Album"
 
 #~ msgid "Current Mood"
-#~ msgstr "Luna actual"
+#~ msgstr "Estado de ánimo actual"
 
 #~ msgid "New Mood"
-#~ msgstr "Luna nueva"
+#~ msgstr "Nuevo estado de ánimo"
 
 #~ msgid "Change your Mood"
-#~ msgstr "Cambiar su luna"
+#~ msgstr "Cambiar su estado de ánimo"
 
 #~ msgid "How do you feel right now?"
 #~ msgstr "¿Cómo se encuentra justo ahora?"
 
 #, fuzzy
 #~ msgid "Change Mood..."
-#~ msgstr "Cambiar su contraseña..."
+#~ msgstr "Cambiar su estado de ánimo..."
 
 #~ msgid "Pager server"
 #~ msgstr "Servidor buscapersonas"
--- a/po/eu.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/eu.po	Sat Feb 12 23:54:14 2011 +0000
@@ -16,7 +16,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.9.1\n"
-"Plural-Forms: Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
--- a/po/fr.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/fr.po	Sat Feb 12 23:54:14 2011 +0000
@@ -4,7 +4,7 @@
 # Copyright (C) 2002, Stéphane Pontier <stephane.pontier@free.fr>
 # Copyright (C) 2002, Stéphane Wirtel <stephane.wirtel@belgacom.net>
 # Copyright (C) 2002, Loïc Jeannin <loic.jeannin@free.fr>
-# Copyright (C) 2002-2010, Éric Boumaour <zongo_fr@users.sourceforge.net>
+# Copyright (C) 2002-2011, Éric Boumaour <zongo_fr@users.sourceforge.net>
 #
 # This file is distributed under the same license as the Pidgin package.
 #
@@ -21,14 +21,14 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:33-0500\n"
-"PO-Revision-Date: 2010-12-16 23:25+0100\n"
+"POT-Creation-Date: 2011-01-30 21:28+0100\n"
+"PO-Revision-Date: 2011-01-30 21:14+0100\n"
 "Last-Translator: Éric Boumaour <zongo_fr@users.sourceforge.net>\n"
 "Language-Team: fr <fr@li.org>\n"
-"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
 "Plural-Forms: nplurals=2; plural=n>1;\n"
 
 #. Translators may want to transliterate the name.
@@ -864,8 +864,8 @@
 "System events will only be logged if the \"Log all status changes to system "
 "log\" preference is enabled."
 msgstr ""
-"Les événements système ne seront archivés que si l'option « Archiver tous "
-"les changements d'état dans les archives système » est activée."
+"Les événements système ne seront archivés que si l'option « Archiver tous les "
+"changements d'état dans les archives système » est activée."
 
 msgid ""
 "Instant messages will only be logged if the \"Log all instant messages\" "
@@ -2372,9 +2372,12 @@
 "Dossier où placer les fichiers\n"
 "(Veuillez fournir le chemin complet)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr ""
-"Refuser automatiquement si l'utilisateur n'est pas dans ma liste de contacts"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Quand une demande de transfert arrive de quelqu'un qui\n"
+"n'est *pas* dans la liste de contacts :"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2387,6 +2390,9 @@
 msgid "Create a new directory for each user"
 msgstr "Créer un nouveau dossier pour chaque contact"
 
+msgid "Escape the filenames"
+msgstr "Encoder les noms des fichiers"
+
 msgid "Notes"
 msgstr "Notes"
 
@@ -2767,8 +2773,7 @@
 msgstr "Message déconnecté"
 
 msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
-msgstr ""
-"Vous pouvez modifier ou supprimer l'alerte dans la fenêtre « Alertes »."
+msgstr "Vous pouvez modifier ou supprimer l'alerte dans la fenêtre « Alertes »."
 
 msgid "Yes"
 msgstr "Oui"
@@ -3859,7 +3864,10 @@
 "Le serveur demande une authentification en texte non chiffré au travers d'un "
 "flux crypté."
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Réponse non valide du serveur"
 
@@ -6197,6 +6205,20 @@
 msgid "Retrieving User Information..."
 msgstr "Récupération des informations de l'utilisateur..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "Vous avez été expulsé de ce MultiMX."
+
+msgid "was kicked"
+msgstr "a été expulsé"
+
+msgid "_Room Name:"
+msgstr "_Salon :"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "Vous avez été invité"
+
 msgid "Loading menu..."
 msgstr "Chargement du menu..."
 
@@ -6224,20 +6246,6 @@
 msgid "Enable splash-screen popup"
 msgstr "Activer l'affichage de la bannière"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "Vous avez été expulsé de ce MultiMX."
-
-msgid "was kicked"
-msgstr "a été expulsé"
-
-msgid "_Room Name:"
-msgstr "_Salon :"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "Vous avez été invité"
-
 msgid "Last Online"
 msgstr "En ligne dernièrement"
 
@@ -7908,75 +7916,6 @@
 "d'images. Votre adresse IP sera révélée et ceci peut être considéré comme "
 "une faille de sécurité."
 
-msgid "Invalid SNAC"
-msgstr "SNAC non valide"
-
-msgid "Server rate limit exceeded"
-msgstr "Vitesse du serveur dépassée"
-
-msgid "Client rate limit exceeded"
-msgstr "Vitesse du client dépassée"
-
-msgid "Service unavailable"
-msgstr "Service non disponible"
-
-msgid "Service not defined"
-msgstr "Service non défini"
-
-msgid "Obsolete SNAC"
-msgstr "SNAC obsolète"
-
-msgid "Not supported by host"
-msgstr "Non supporté par l'hôte"
-
-msgid "Not supported by client"
-msgstr "Non supporté par le client"
-
-msgid "Refused by client"
-msgstr "Refusé par le client"
-
-msgid "Reply too big"
-msgstr "Réponse trop grosse"
-
-msgid "Responses lost"
-msgstr "Réponses perdues"
-
-msgid "Request denied"
-msgstr "Requête refusée"
-
-msgid "Busted SNAC payload"
-msgstr "Charge SNAC incorrecte"
-
-msgid "Insufficient rights"
-msgstr "Droits insuffisants"
-
-msgid "In local permit/deny"
-msgstr "Dans l'autorisation/interdiction locale"
-
-msgid "Warning level too high (sender)"
-msgstr "Niveau d'avertissement trop élevé (émission)"
-
-msgid "Warning level too high (receiver)"
-msgstr "Niveau d'avertissement trop élevé (réception)"
-
-msgid "User temporarily unavailable"
-msgstr "L'utilisateur est temporairement indisponible."
-
-msgid "No match"
-msgstr "Aucun résultat"
-
-msgid "List overflow"
-msgstr "Dépassement de liste"
-
-msgid "Request ambiguous"
-msgstr "Requête ambiguë"
-
-msgid "Queue full"
-msgstr "File d'attente pleine"
-
-msgid "Not while on AOL"
-msgstr "Impossible sur AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "Icône du contact"
@@ -8095,6 +8034,75 @@
 msgid "Capabilities"
 msgstr "Possibilités"
 
+msgid "Invalid SNAC"
+msgstr "SNAC non valide"
+
+msgid "Server rate limit exceeded"
+msgstr "Vitesse du serveur dépassée"
+
+msgid "Client rate limit exceeded"
+msgstr "Vitesse du client dépassée"
+
+msgid "Service unavailable"
+msgstr "Service non disponible"
+
+msgid "Service not defined"
+msgstr "Service non défini"
+
+msgid "Obsolete SNAC"
+msgstr "SNAC obsolète"
+
+msgid "Not supported by host"
+msgstr "Non supporté par l'hôte"
+
+msgid "Not supported by client"
+msgstr "Non supporté par le client"
+
+msgid "Refused by client"
+msgstr "Refusé par le client"
+
+msgid "Reply too big"
+msgstr "Réponse trop grosse"
+
+msgid "Responses lost"
+msgstr "Réponses perdues"
+
+msgid "Request denied"
+msgstr "Requête refusée"
+
+msgid "Busted SNAC payload"
+msgstr "Charge SNAC incorrecte"
+
+msgid "Insufficient rights"
+msgstr "Droits insuffisants"
+
+msgid "In local permit/deny"
+msgstr "Dans l'autorisation/interdiction locale"
+
+msgid "Warning level too high (sender)"
+msgstr "Niveau d'avertissement trop élevé (émission)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Niveau d'avertissement trop élevé (réception)"
+
+msgid "User temporarily unavailable"
+msgstr "L'utilisateur est temporairement indisponible."
+
+msgid "No match"
+msgstr "Aucun résultat"
+
+msgid "List overflow"
+msgstr "Dépassement de liste"
+
+msgid "Request ambiguous"
+msgstr "Requête ambiguë"
+
+msgid "Queue full"
+msgstr "File d'attente pleine"
+
+msgid "Not while on AOL"
+msgstr "Impossible sur AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8686,14 +8694,14 @@
 msgid "Select Server"
 msgstr "Choisir le serveur"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Connexion par TCP"
@@ -10445,8 +10453,8 @@
 msgstr ""
 "Le serveur Yahoo! a demandé une méthode d'authentification non reconnue. "
 "Cette version de l'application n'arrivera probablement pas à se connecter au "
-"service Yahoo!. Vous pouvez vérifier qu'une mise à jour est disponible sur "
-"%s."
+"service Yahoo!. Vous pouvez vérifier qu'une mise à jour est disponible sur %"
+"s."
 
 msgid "Failed Yahoo! Authentication"
 msgstr "Échec de l'authentification Yahoo!"
@@ -12257,9 +12265,6 @@
 msgid "Fatal Error"
 msgstr "Erreur critique"
 
-msgid "bug master"
-msgstr "maitre des bogues"
-
 msgid "artist"
 msgstr "artiste"
 
@@ -12439,6 +12444,9 @@
 msgid "Maithili"
 msgstr "Maïhili"
 
+msgid "Meadow Mari"
+msgstr "Mari des prairies"
+
 msgid "Macedonian"
 msgstr "Macédonien"
 
@@ -12559,8 +12567,8 @@
 "to multiple messaging services at once.  %s is written in C using GTK+.  %s "
 "is released, and may be modified and redistributed,  under the terms of the "
 "GPL version 2 (or later).  A copy of the GPL is distributed with %s.  %s is "
-"copyrighted by its contributors, a list of whom is also distributed with "
-"%s.  There is no warranty for %s.<BR><BR>"
+"copyrighted by its contributors, a list of whom is also distributed with %"
+"s.  There is no warranty for %s.<BR><BR>"
 msgstr ""
 "%s est un client de messagerie basé sur libpurple capable de se connecter à "
 "de multiples services de messageries instantanées. %s est écrit en C et "
@@ -13115,16 +13123,16 @@
 
 #, c-format
 msgid ""
-"Are you sure you want to permanently delete the log of the conversation in "
-"%s which started at %s?"
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
 msgstr ""
 "Êtes-vous sûr de vouloir supprimer les archives de la conversation dans %s "
 "datée du %s ?"
 
 #, c-format
 msgid ""
-"Are you sure you want to permanently delete the system log which started at "
-"%s?"
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
 msgstr "Êtes-vous sûr de vouloir supprimer les archives système datées du %s ?"
 
 msgid "Delete Log?"
@@ -14956,8 +14964,8 @@
 "'Enter' in the entry box to send. Watch the debug window."
 msgstr ""
 "Permet d'envoyer des données brutes aux protocoles en mode texte (XMPP, MSN, "
-"IRC, TOC). Tapez « Entrée » dans la boîte de saisie pour envoyer. Observez "
-"le résultat dans la fenêtre de debug."
+"IRC, TOC). Tapez « Entrée » dans la boîte de saisie pour envoyer. Observez le "
+"résultat dans la fenêtre de debug."
 
 #, c-format
 msgid "You can upgrade to %s %s today."
@@ -15485,13 +15493,13 @@
 #, no-c-format
 msgid ""
 "Error Installing Spellchecking ($R3).$\\rIf retrying fails, manual "
-"installation instructions are at: http://developer.pidgin.im/wiki/Installing"
-"%20Pidgin#manual_win32_spellcheck_installation"
+"installation instructions are at: http://developer.pidgin.im/wiki/Installing%"
+"20Pidgin#manual_win32_spellcheck_installation"
 msgstr ""
 "Erreur lors de l'installation du correcteur orthographique ($R3).$\\rSi une "
 "nouvelle tentative échoue, veuillez suivre les instructions sur http://"
-"developer.pidgin.im/wiki/Installing"
-"%20Pidgin#manual_win32_spellcheck_installation"
+"developer.pidgin.im/wiki/Installing%"
+"20Pidgin#manual_win32_spellcheck_installation"
 
 #. Installer Subsection Text
 msgid "GTK+ Runtime (required if not present)"
@@ -15570,6 +15578,14 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "Vous n'avez pas les permissions pour supprimer cette application."
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr ""
+#~ "Refuser automatiquement si l'utilisateur n'est pas dans ma liste de "
+#~ "contacts"
+
+#~ msgid "bug master"
+#~ msgstr "maitre des bogues"
+
 #~ msgid "An error occurred on the in-band bytestream transfer\n"
 #~ msgstr "Erreur lors du transfert dans le flux de données in-band.\n"
 
--- a/po/gl.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/gl.po	Sat Feb 12 23:54:14 2011 +0000
@@ -18,7 +18,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: KBabel 1.11.4\n"
 
 #. Translators may want to transliterate the name.
--- a/po/he.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/he.po	Sat Feb 12 23:54:14 2011 +0000
@@ -8,8 +8,8 @@
 msgstr ""
 "Project-Id-Version: he\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:33-0500\n"
-"PO-Revision-Date: 2010-12-16 16:39+0200\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
+"PO-Revision-Date: 2011-01-26 08:34+0200\n"
 "Last-Translator: Shalom Craimer <scraimer at g mail dot com>\n"
 "Language-Team: Hebrew <he@li.org>\n"
 "Language: he\n"
@@ -2278,8 +2278,12 @@
 "נתיב לשמור בו את הקבצים\n"
 "(יש לספק נתיב מלא)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "דחה אוטומטית ממשתמשים שאינם ברשימת החברים שלי"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"כאשר מגיעה בקשה להעברת-קובץ ממשתמש\n"
+"אשר *אינו* ברשימת החברים שלך:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2291,6 +2295,9 @@
 msgid "Create a new directory for each user"
 msgstr "צור ספרייה חדשה עבור כל משתמש"
 
+msgid "Escape the filenames"
+msgstr "קדד אותיות בעייתיות בשמות הקבצים"
+
 msgid "Notes"
 msgstr "הערות"
 
@@ -3724,7 +3731,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "השרת דורש אימות לא מוצפן מעל תקשורת לא מוצפנת"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "תגובה לא תקפה מהשרת"
 
@@ -5980,6 +5990,20 @@
 msgid "Retrieving User Information..."
 msgstr "שולף מידע משתמש..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "נבעטת מתוך MultiMX זה."
+
+msgid "was kicked"
+msgstr "נבעט/ה"
+
+msgid "_Room Name:"
+msgstr "שם _חדר:"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "הוזמנת"
+
 msgid "Loading menu..."
 msgstr "טוען תפריט..."
 
@@ -6007,20 +6031,6 @@
 msgid "Enable splash-screen popup"
 msgstr "אפשר פתיחת חלון-הקדמה"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "נבעטת מתוך MultiMX זה."
-
-msgid "was kicked"
-msgstr "נבעט/ה"
-
-msgid "_Room Name:"
-msgstr "שם _חדר:"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "הוזמנת"
-
 msgid "Last Online"
 msgstr "חיבור אחרון"
 
@@ -7620,75 +7630,6 @@
 "זה דורש חיבור ישיר בין שני המחשבים, ונחוץ עבור תמונות בהודעות. מכיוון שכתובת "
 "ה-IP שלך תיחשף, ייתכן וזה ייחשב כסיכון לפרטיותך."
 
-msgid "Invalid SNAC"
-msgstr "SNAC לא תקף"
-
-msgid "Server rate limit exceeded"
-msgstr "הפרזת מעבר למגבלת השרת"
-
-msgid "Client rate limit exceeded"
-msgstr "הפרזת מעבר למגבלת הלקוח"
-
-msgid "Service unavailable"
-msgstr "השירות אינו זמין"
-
-msgid "Service not defined"
-msgstr "שירות אינו מוגדר"
-
-msgid "Obsolete SNAC"
-msgstr "SNAC מיושן"
-
-msgid "Not supported by host"
-msgstr "לא נתמך על-ידי השרת"
-
-msgid "Not supported by client"
-msgstr "לא נתמך על-ידי הלקוח"
-
-msgid "Refused by client"
-msgstr "החיבור נדחה על ידי הלקוח."
-
-msgid "Reply too big"
-msgstr "המענה גדול מדיי"
-
-msgid "Responses lost"
-msgstr "אבדו המשובים"
-
-msgid "Request denied"
-msgstr "הבקשה נדחית"
-
-msgid "Busted SNAC payload"
-msgstr "מידע פגום ב-SNAC"
-
-msgid "Insufficient rights"
-msgstr "אין די הרשאות"
-
-msgid "In local permit/deny"
-msgstr "באישור/שלילה מקומיים"
-
-msgid "Warning level too high (sender)"
-msgstr "רמת אזהרה גבוהה מדי (שולח("
-
-msgid "Warning level too high (receiver)"
-msgstr "רמת אזהרה גבוהה מדי (מקבל)"
-
-msgid "User temporarily unavailable"
-msgstr "המשתמש אינו זמין כרגע"
-
-msgid "No match"
-msgstr "אין התאמה"
-
-msgid "List overflow"
-msgstr "גלישת מגבולות הרשימה"
-
-msgid "Request ambiguous"
-msgstr "בקשה לא ברורה"
-
-msgid "Queue full"
-msgstr "התור מלא"
-
-msgid "Not while on AOL"
-msgstr "לא בזמן שהות ב-AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "סמל איש הקשר"
@@ -7807,6 +7748,75 @@
 msgid "Capabilities"
 msgstr "יכולות"
 
+msgid "Invalid SNAC"
+msgstr "SNAC לא תקף"
+
+msgid "Server rate limit exceeded"
+msgstr "הפרזת מעבר למגבלת השרת"
+
+msgid "Client rate limit exceeded"
+msgstr "הפרזת מעבר למגבלת הלקוח"
+
+msgid "Service unavailable"
+msgstr "השירות אינו זמין"
+
+msgid "Service not defined"
+msgstr "שירות אינו מוגדר"
+
+msgid "Obsolete SNAC"
+msgstr "SNAC מיושן"
+
+msgid "Not supported by host"
+msgstr "לא נתמך על-ידי השרת"
+
+msgid "Not supported by client"
+msgstr "לא נתמך על-ידי הלקוח"
+
+msgid "Refused by client"
+msgstr "החיבור נדחה על ידי הלקוח."
+
+msgid "Reply too big"
+msgstr "המענה גדול מדיי"
+
+msgid "Responses lost"
+msgstr "אבדו המשובים"
+
+msgid "Request denied"
+msgstr "הבקשה נדחית"
+
+msgid "Busted SNAC payload"
+msgstr "מידע פגום ב-SNAC"
+
+msgid "Insufficient rights"
+msgstr "אין די הרשאות"
+
+msgid "In local permit/deny"
+msgstr "באישור/שלילה מקומיים"
+
+msgid "Warning level too high (sender)"
+msgstr "רמת אזהרה גבוהה מדי (שולח("
+
+msgid "Warning level too high (receiver)"
+msgstr "רמת אזהרה גבוהה מדי (מקבל)"
+
+msgid "User temporarily unavailable"
+msgstr "המשתמש אינו זמין כרגע"
+
+msgid "No match"
+msgstr "אין התאמה"
+
+msgid "List overflow"
+msgstr "גלישת מגבולות הרשימה"
+
+msgid "Request ambiguous"
+msgstr "בקשה לא ברורה"
+
+msgid "Queue full"
+msgstr "התור מלא"
+
+msgid "Not while on AOL"
+msgstr "לא בזמן שהות ב-AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8398,14 +8408,14 @@
 msgid "Select Server"
 msgstr "בחר שרת"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "התחבר בעזרת TCP"
@@ -11881,9 +11891,6 @@
 msgid "Fatal Error"
 msgstr "שגיאה קטלנית"
 
-msgid "bug master"
-msgstr "שר-הבאגים"
-
 msgid "artist"
 msgstr "אמן"
 
@@ -12063,6 +12070,9 @@
 msgid "Maithili"
 msgstr "מאת'ילי"
 
+msgid "Meadow Mari"
+msgstr "Meadow Mari"
+
 msgid "Macedonian"
 msgstr "מקדונית"
 
@@ -15107,6 +15117,12 @@
 msgid "You do not have permission to uninstall this application."
 msgstr ".אין לך זכות למחוק תוכנה זאת"
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr "דחה אוטומטית ממשתמשים שאינם ברשימת החברים שלי"
+
+#~ msgid "bug master"
+#~ msgstr "שר-הבאגים"
+
 #~ msgid "An error occurred on the in-band bytestream transfer\n"
 #~ msgstr "ארעה שגיאה בעת ההעברה בזרם בתווך\n"
 
--- a/po/hu.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/hu.po	Sat Feb 12 23:54:14 2011 +0000
@@ -1,22 +1,22 @@
 # Hungarian translation of pidgin.
-# Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 # This file is distributed under the same license as the Pidgin package.
 # The Hungarian translation of Pidgin was sponsored by Novell Hungary, many thanks for it!
 #
 # Zoltan Sutto <suttozoltan@chello.hu>, 2003.
-# Gabor Kelemen <kelemeng at gnome dot hu>, 2005, 2006, 2007, 2008, 2009, 2010.
-msgid ""
-msgstr ""
-"Project-Id-Version: pidgin 2.7\n"
+# Gabor Kelemen <kelemeng at gnome dot hu>, 2005, 2006, 2007, 2008, 2009, 2010, 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: pidgin 2.7.10\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-21 15:20+0100\n"
-"PO-Revision-Date: 2010-12-21 15:19+0100\n"
+"POT-Creation-Date: 2011-01-25 15:12+0100\n"
+"PO-Revision-Date: 2011-01-25 15:12+0100\n"
 "Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
 "Language-Team: Hungarian <gnome at fsf dot hu>\n"
-"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: \n"
 "Plural-Forms:  nplurals=2; plural=(n != 1);\n"
 "X-Generator: KBabel 1.11.4\n"
 
@@ -2350,9 +2350,12 @@
 "A fájlok mentési útvonala\n"
 "(Teljes elérési utat adjon meg)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr ""
-"Automatikus visszautasítás a partnerlistán nem szereplő felhasználóktól"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Ha fájlküldési kérés érkezik egy a partnerlistán NEM szereplő\n"
+"felhasználótól:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2365,6 +2368,9 @@
 msgid "Create a new directory for each user"
 msgstr "Új könyvtár létrehozása minden felhasználóhoz"
 
+msgid "Escape the filenames"
+msgstr "Fájlnevek escape-elése."
+
 msgid "Notes"
 msgstr "Megjegyzések"
 
@@ -3828,7 +3834,10 @@
 msgstr ""
 "A kiszolgáló szöveges hitelesítést követel meg egy nem titkosított csatornán"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Érvénytelen válasz a kiszolgálótól"
 
@@ -6757,8 +6766,8 @@
 #, c-format
 msgid "Unable to send message. Could not get details for user (%s)."
 msgstr ""
-"Az üzenetet nem lehet elküldeni. A felhasználó részletei nem kérhetőek le "
-"(%s)."
+"Az üzenetet nem lehet elküldeni. A felhasználó részletei nem kérhetőek le (%"
+"s)."
 
 #, c-format
 msgid "Unable to add %s to your buddy list (%s)."
@@ -7191,8 +7200,8 @@
 "%s tried to send you a %s file, but we only allow files up to %s over Direct "
 "IM.  Try using file transfer instead.\n"
 msgstr ""
-"%s egy %s fájlt próbált küldeni, de közvetlen kapcsolatban legfeljebb csak "
-"%s méretű fájl küldhető. Próbálkozzon inkább a fájlátvitellel.\n"
+"%s egy %s fájlt próbált küldeni, de közvetlen kapcsolatban legfeljebb csak %"
+"s méretű fájl küldhető. Próbálkozzon inkább a fájlátvitellel.\n"
 
 #, c-format
 msgid "File %s is %s, which is larger than the maximum size of %s."
@@ -8628,14 +8637,14 @@
 msgid "Select Server"
 msgstr "Válassza ki a kiszolgálót"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Kapcsolódás TCP segítségével"
@@ -10831,8 +10840,8 @@
 #, c-format
 msgid "Access denied: HTTP proxy server forbids port %d tunneling"
 msgstr ""
-"Hozzáférés megtagadva: a HTTP proxy kiszolgáló tiltja az alagutazást a(z) "
-"%d. porton"
+"Hozzáférés megtagadva: a HTTP proxy kiszolgáló tiltja az alagutazást a(z) %"
+"d. porton"
 
 #, c-format
 msgid "Error resolving %s"
@@ -11080,8 +11089,8 @@
 "An error was encountered reading your %s.  The file has not been loaded, and "
 "the old file has been renamed to %s~."
 msgstr ""
-"Hiba történt a(z) %s olvasásakor. Ez a fájl nem lett betöltve, a régi fájl "
-"%s~ néven lett elmentve."
+"Hiba történt a(z) %s olvasásakor. Ez a fájl nem lett betöltve, a régi fájl %"
+"s~ néven lett elmentve."
 
 msgid ""
 "Chat over IM.  Supports AIM, Google Talk, Jabber/XMPP, MSN, Yahoo and more"
@@ -12207,10 +12216,6 @@
 msgid "Fatal Error"
 msgstr "Végzetes hiba"
 
-# fixme: jobb ötlet?
-msgid "bug master"
-msgstr "hibaritkító"
-
 msgid "artist"
 msgstr "grafikus"
 
@@ -12390,6 +12395,9 @@
 msgid "Maithili"
 msgstr "Maithili"
 
+msgid "Meadow Mari"
+msgstr "Mari"
+
 msgid "Macedonian"
 msgstr "macedón"
 
@@ -12510,8 +12518,8 @@
 "to multiple messaging services at once.  %s is written in C using GTK+.  %s "
 "is released, and may be modified and redistributed,  under the terms of the "
 "GPL version 2 (or later).  A copy of the GPL is distributed with %s.  %s is "
-"copyrighted by its contributors, a list of whom is also distributed with "
-"%s.  There is no warranty for %s.<BR><BR>"
+"copyrighted by its contributors, a list of whom is also distributed with %"
+"s.  There is no warranty for %s.<BR><BR>"
 msgstr ""
 "A %s egy libpurple alapú moduláris üzenetküldő kliens, amely egyszerre több "
 "üzenetküldő szolgáltatáshoz is képes csatlakozni. A %s GTK+ használatával, C "
@@ -13061,16 +13069,16 @@
 
 #, c-format
 msgid ""
-"Are you sure you want to permanently delete the log of the conversation in "
-"%s which started at %s?"
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
 msgstr ""
 "Biztos, hogy törölni akarja a(z) %s csatornán folytatott, %s időpontban "
 "kezdődött beszélgetés naplóját?"
 
 #, c-format
 msgid ""
-"Are you sure you want to permanently delete the system log which started at "
-"%s?"
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
 msgstr ""
 "Biztos, hogy törölni akarja a(z) %s időpontban kezdődött rendszernaplót?"
 
@@ -15421,8 +15429,8 @@
 #, no-c-format
 msgid ""
 "Error Installing Spellchecking ($R3).$\\rIf retrying fails, manual "
-"installation instructions are at: http://developer.pidgin.im/wiki/Installing"
-"%20Pidgin#manual_win32_spellcheck_installation"
+"installation instructions are at: http://developer.pidgin.im/wiki/Installing%"
+"20Pidgin#manual_win32_spellcheck_installation"
 msgstr ""
 "Hiba a helyesírás-ellenőrző telepítésekor. ($R3).$\\rHa az újrapróbálkozás "
 "meghiúsul, akkor saját kezűleg is telepítheti a http://developer.pidgin.im/"
--- a/po/hy.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/hy.po	Sat Feb 12 23:54:14 2011 +0000
@@ -3,7 +3,6 @@
 # This file is distributed under the same license as the PACKAGE package.
 # David Avsharyan <avsharyan@gmail.com>, 2009.
 #
-#, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: am\n"
@@ -16,7 +15,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
--- a/po/mn.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/mn.po	Sat Feb 12 23:54:14 2011 +0000
@@ -15,7 +15,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
--- a/po/ms_MY.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/ms_MY.po	Sat Feb 12 23:54:14 2011 +0000
@@ -15,7 +15,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: KBabel 1.11.4\n"
 
 #. Translators may want to transliterate the name.
--- a/po/nl.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/nl.po	Sat Feb 12 23:54:14 2011 +0000
@@ -8,9 +8,9 @@
 msgstr ""
 "Project-Id-Version: pidgin 2.7.3\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:34-0500\n"
-"PO-Revision-Date: 2010-12-14 10:45+0100\n"
-"Last-Translator: Dingoe <translations@gvmelle.com>\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
+"PO-Revision-Date: 2011-01-25 10:45+0100\n"
+"Last-Translator: Gideon van Melle <translations@gvmelle.com>\n"
 "Language-Team: Dutch <translations@gvmelle.com>\n"
 "Language: nl\n"
 "MIME-Version: 1.0\n"
@@ -156,7 +156,7 @@
 
 #, c-format
 msgid "%s%s%s%s has made %s his or her buddy%s%s"
-msgstr "%s%s%s%s heeft %s in zijn/haar vriendt gemaakt%s%s"
+msgstr "%s%s%s%s heeft %s in zijn/haar vriend gemaakt%s%s"
 
 msgid "Add buddy to your list?"
 msgstr "Vriend toevoegen aan uw lijst?"
@@ -2365,8 +2365,12 @@
 "Pad voor opslaan bestanden\n"
 "(Geef spv het volledige pad)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "Automatisch verwerpen van gebruikers die niet in vriendenlijst staan"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Als een bestandsoverdracht aanvraag komt van gebruiker die\n"
+"*niet\" op uw vriendenlijst staat:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2379,6 +2383,9 @@
 msgid "Create a new directory for each user"
 msgstr "Een nieuwe map voor elke gebruiker aanmaken"
 
+msgid "Escape the filenames"
+msgstr "*Escape* de bestandsnamen"
+
 msgid "Notes"
 msgstr "Notities"
 
@@ -3862,7 +3869,10 @@
 "Server vereist een waarmerking via tekstaanmelding via een ongecodeerde "
 "datastroom"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Ongeldig antwoord van server"
 
@@ -6178,6 +6188,20 @@
 msgid "Retrieving User Information..."
 msgstr "Ophalen Gebruikersinformatie..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "U bent uit deze MultiMX gegooid."
+
+msgid "was kicked"
+msgstr "eruit gegooid"
+
+msgid "_Room Name:"
+msgstr "_Ruimtenaam:"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "U heeft uitgenodigd"
+
 msgid "Loading menu..."
 msgstr "Menu aan 't laden..."
 
@@ -6205,20 +6229,6 @@
 msgid "Enable splash-screen popup"
 msgstr "inschakelen splashscreen pop-up"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "U bent uit deze MultiMX gegooid."
-
-msgid "was kicked"
-msgstr "eruit gegooid"
-
-msgid "_Room Name:"
-msgstr "_Ruimtenaam:"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "U heeft uitgenodigd"
-
 msgid "Last Online"
 msgstr "Laatste Online"
 
@@ -7892,75 +7902,6 @@
 "afbeeldingen via chatberichten). Dit zou als een inbreuk op de privacy "
 "beschouwd kunnen worden omdat de ander dan uw IP-adres te weten komt."
 
-msgid "Invalid SNAC"
-msgstr "Ongeldige SNAC"
-
-msgid "Server rate limit exceeded"
-msgstr "Server snelheidslimiet overschreden"
-
-msgid "Client rate limit exceeded"
-msgstr "Cliënt snelheidslimiet overschreden"
-
-msgid "Service unavailable"
-msgstr "Service niet beschikbaar"
-
-msgid "Service not defined"
-msgstr "Service niet gedefinieerd"
-
-msgid "Obsolete SNAC"
-msgstr "Verouderde SNAC"
-
-msgid "Not supported by host"
-msgstr "Niet ondersteund door computer"
-
-msgid "Not supported by client"
-msgstr "Niet ondersteund door cliënt"
-
-msgid "Refused by client"
-msgstr "Gewegerd door cliënt"
-
-msgid "Reply too big"
-msgstr "Antwoord te groot"
-
-msgid "Responses lost"
-msgstr "Reacties verloren"
-
-msgid "Request denied"
-msgstr "Aanvraag geweigerd"
-
-msgid "Busted SNAC payload"
-msgstr "SNAC bagage kapot"
-
-msgid "Insufficient rights"
-msgstr "Niet genoeg rechten"
-
-msgid "In local permit/deny"
-msgstr "In lokale toestaan/weigeren"
-
-msgid "Warning level too high (sender)"
-msgstr "Waarschuwingsniveau te hoog (verzender)"
-
-msgid "Warning level too high (receiver)"
-msgstr "Waarschuwingsniveau te hoog (ontvanger)"
-
-msgid "User temporarily unavailable"
-msgstr "Gebruiker tijdelijk niet beschikbaar"
-
-msgid "No match"
-msgstr "Geen overeenkomstige resultaten"
-
-msgid "List overflow"
-msgstr "Te grote lijst"
-
-msgid "Request ambiguous"
-msgstr "Dubieuze aanvraag"
-
-msgid "Queue full"
-msgstr "Wachtrij vol"
-
-msgid "Not while on AOL"
-msgstr "Niet tijdens AOL"
-
 # msgstr ""
 # "(Er is een fout opgetreden bij het ontvangen van het bericht. Of jij en %s "
 # "hebben verschillende coderingen geselecteerd of de andere persoon gebruikt "
@@ -8083,6 +8024,75 @@
 msgid "Capabilities"
 msgstr "Mogelijkheden"
 
+msgid "Invalid SNAC"
+msgstr "Ongeldige SNAC"
+
+msgid "Server rate limit exceeded"
+msgstr "Server snelheidslimiet overschreden"
+
+msgid "Client rate limit exceeded"
+msgstr "Cliënt snelheidslimiet overschreden"
+
+msgid "Service unavailable"
+msgstr "Service niet beschikbaar"
+
+msgid "Service not defined"
+msgstr "Service niet gedefinieerd"
+
+msgid "Obsolete SNAC"
+msgstr "Verouderde SNAC"
+
+msgid "Not supported by host"
+msgstr "Niet ondersteund door computer"
+
+msgid "Not supported by client"
+msgstr "Niet ondersteund door cliënt"
+
+msgid "Refused by client"
+msgstr "Gewegerd door cliënt"
+
+msgid "Reply too big"
+msgstr "Antwoord te groot"
+
+msgid "Responses lost"
+msgstr "Reacties verloren"
+
+msgid "Request denied"
+msgstr "Aanvraag geweigerd"
+
+msgid "Busted SNAC payload"
+msgstr "SNAC bagage kapot"
+
+msgid "Insufficient rights"
+msgstr "Niet genoeg rechten"
+
+msgid "In local permit/deny"
+msgstr "In lokale toestaan/weigeren"
+
+msgid "Warning level too high (sender)"
+msgstr "Waarschuwingsniveau te hoog (verzender)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Waarschuwingsniveau te hoog (ontvanger)"
+
+msgid "User temporarily unavailable"
+msgstr "Gebruiker tijdelijk niet beschikbaar"
+
+msgid "No match"
+msgstr "Geen overeenkomstige resultaten"
+
+msgid "List overflow"
+msgstr "Te grote lijst"
+
+msgid "Request ambiguous"
+msgstr "Dubieuze aanvraag"
+
+msgid "Queue full"
+msgstr "Wachtrij vol"
+
+msgid "Not while on AOL"
+msgstr "Niet tijdens AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8677,14 +8687,14 @@
 msgid "Select Server"
 msgstr "Selecteer Server"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Verbinden via TCP"
@@ -12256,9 +12266,6 @@
 msgid "Fatal Error"
 msgstr "Fatale fout"
 
-msgid "bug master"
-msgstr "bug master"
-
 msgid "artist"
 msgstr "artiest"
 
@@ -12438,6 +12445,9 @@
 msgid "Maithili"
 msgstr "Maithili"
 
+msgid "Meadow Mari"
+msgstr "Meadow Mari"
+
 msgid "Macedonian"
 msgstr "Macedonisch"
 
@@ -15584,6 +15594,13 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "U mag dit programma niet verwijderen."
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr ""
+#~ "Automatisch verwerpen van gebruikers die niet in vriendenlijst staan"
+
+#~ msgid "bug master"
+#~ msgstr "bug master"
+
 #~ msgid "Error requesting %s"
 #~ msgstr "Fout opvragen  %s"
 
--- a/po/nn.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/nn.po	Sat Feb 12 23:54:14 2011 +0000
@@ -1,19 +1,19 @@
 #
-# Yngve Spjeld Landro <l10n@landro.net>, 2010.
+# Yngve Spjeld Landro <l10n@landro.net>, 2010, 2011.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: gtranslator\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:34-0500\n"
-"PO-Revision-Date: 2010-12-14 04:02+0100\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
+"PO-Revision-Date: 2011-01-20 05:01+0100\n"
 "Last-Translator: Yngve Spjeld Landro <l10n@landro.net>\n"
 "Language-Team: Norwegian Nynorsk <l10n@landro.net>\n"
 "Language: nn\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\\n\n"
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
@@ -2357,9 +2357,12 @@
 "Fillagringsbane\n"
 "(før opp heile filbana)"
 
-# var: Automatisk avvising frå brukarar utanfor vennelista
-msgid "Automatically reject from users not in buddy list"
-msgstr "Automatisk avvising av brukarar utanfor vennelista"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Når ein filoverføringsførespurnad kjem frå ein brukar som\n"
+"*ikkje* er i vennelista di:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2372,6 +2375,9 @@
 msgid "Create a new directory for each user"
 msgstr "Lag ein ny katalog for kvar brukar"
 
+msgid "Escape the filenames"
+msgstr "Vern filnamna (esc.-sekv.)"
+
 msgid "Notes"
 msgstr "Notat"
 
@@ -3822,7 +3828,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "Tenaren krev autentisering i klartekst over eit ukryptert samband"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Ugyldig svar frå tenaren"
 
@@ -6123,6 +6132,20 @@
 msgid "Retrieving User Information..."
 msgstr "Hentar brukaropplysningar…"
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "Du er blitt sparka ut frå denne MultiMX-en."
+
+msgid "was kicked"
+msgstr "blei sparka ut"
+
+msgid "_Room Name:"
+msgstr "Rom_namn:"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "Du har invitert "
+
 msgid "Loading menu..."
 msgstr "Lastar menyen…"
 
@@ -6151,20 +6174,6 @@
 msgid "Enable splash-screen popup"
 msgstr "Bruk oppstartsvindauge"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "Du er blitt sparka ut frå denne MultiMX-en."
-
-msgid "was kicked"
-msgstr "blei sparka ut"
-
-msgid "_Room Name:"
-msgstr "Rom_namn:"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "Du har invitert "
-
 msgid "Last Online"
 msgstr "Sist tilkopla"
 
@@ -7809,75 +7818,6 @@
 "for lynmeldingsbilete. Fordi IP-adressa vil bli avslørt, blir dette sett på "
 "som ein tryggleiksrisiko."
 
-msgid "Invalid SNAC"
-msgstr "Ugyldig SNAC"
-
-msgid "Server rate limit exceeded"
-msgstr "Overskriden tenargrense"
-
-msgid "Client rate limit exceeded"
-msgstr "Overskriden klientgrense"
-
-msgid "Service unavailable"
-msgstr "Tenesta er utilgjengeleg"
-
-msgid "Service not defined"
-msgstr "Tenesta er ikkje definert"
-
-msgid "Obsolete SNAC"
-msgstr "Forelda SNAC"
-
-msgid "Not supported by host"
-msgstr "Ikkje støtta av verten"
-
-msgid "Not supported by client"
-msgstr "Ikkje støtta av klienten"
-
-msgid "Refused by client"
-msgstr "Avvist av klienten"
-
-msgid "Reply too big"
-msgstr "Svaret er for stort"
-
-msgid "Responses lost"
-msgstr "Tapte svar"
-
-msgid "Request denied"
-msgstr "Førsepurnad avvist"
-
-msgid "Busted SNAC payload"
-msgstr "Ødelagt SNAC-pakkeinnhald"
-
-msgid "Insufficient rights"
-msgstr "Ikkje nok rettar"
-
-msgid "In local permit/deny"
-msgstr "I lokal tilgangs-/forbodsliste"
-
-msgid "Warning level too high (sender)"
-msgstr "For høgt åtvaringsnivå (sendar)"
-
-msgid "Warning level too high (receiver)"
-msgstr "For høgt åtvaringsnivå (mottakar)"
-
-msgid "User temporarily unavailable"
-msgstr "Brukaren er mellombels utilgjengeleg"
-
-msgid "No match"
-msgstr "Ikkje noko samsvar"
-
-msgid "List overflow"
-msgstr "Lista er full"
-
-msgid "Request ambiguous"
-msgstr "Uklar førespurnad"
-
-msgid "Queue full"
-msgstr "Køen er full"
-
-msgid "Not while on AOL"
-msgstr "Ikkje når pålogga AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "Venneikon"
@@ -7997,6 +7937,75 @@
 msgid "Capabilities"
 msgstr "Evner"
 
+msgid "Invalid SNAC"
+msgstr "Ugyldig SNAC"
+
+msgid "Server rate limit exceeded"
+msgstr "Overskriden tenargrense"
+
+msgid "Client rate limit exceeded"
+msgstr "Overskriden klientgrense"
+
+msgid "Service unavailable"
+msgstr "Tenesta er utilgjengeleg"
+
+msgid "Service not defined"
+msgstr "Tenesta er ikkje definert"
+
+msgid "Obsolete SNAC"
+msgstr "Forelda SNAC"
+
+msgid "Not supported by host"
+msgstr "Ikkje støtta av verten"
+
+msgid "Not supported by client"
+msgstr "Ikkje støtta av klienten"
+
+msgid "Refused by client"
+msgstr "Avvist av klienten"
+
+msgid "Reply too big"
+msgstr "Svaret er for stort"
+
+msgid "Responses lost"
+msgstr "Tapte svar"
+
+msgid "Request denied"
+msgstr "Førsepurnad avvist"
+
+msgid "Busted SNAC payload"
+msgstr "Ødelagt SNAC-pakkeinnhald"
+
+msgid "Insufficient rights"
+msgstr "Ikkje nok rettar"
+
+msgid "In local permit/deny"
+msgstr "I lokal tilgangs-/forbodsliste"
+
+msgid "Warning level too high (sender)"
+msgstr "For høgt åtvaringsnivå (sendar)"
+
+msgid "Warning level too high (receiver)"
+msgstr "For høgt åtvaringsnivå (mottakar)"
+
+msgid "User temporarily unavailable"
+msgstr "Brukaren er mellombels utilgjengeleg"
+
+msgid "No match"
+msgstr "Ikkje noko samsvar"
+
+msgid "List overflow"
+msgstr "Lista er full"
+
+msgid "Request ambiguous"
+msgstr "Uklar førespurnad"
+
+msgid "Queue full"
+msgstr "Køen er full"
+
+msgid "Not while on AOL"
+msgstr "Ikkje når pålogga AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8589,14 +8598,14 @@
 msgid "Select Server"
 msgstr "Vel tenar"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Kopla til med TCP"
@@ -11352,19 +11361,19 @@
 msgstr "Skjul når du er fråkopla"
 
 msgid "Show When Offline"
-msgstr "Vis når du er fråkopla"
+msgstr "Vis når du er fr_åkopla"
 
 msgid "_Alias..."
-msgstr "Ka_llenamn…"
+msgstr "_Kallenamn …"
 
 msgid "_Remove"
 msgstr "_Fjern"
 
 msgid "Set Custom Icon"
-msgstr "Tilpassa ikon"
+msgstr "_Tilpassa ikon"
 
 msgid "Remove Custom Icon"
-msgstr "Fjern eige ikon"
+msgstr "Fjern tilpa_ssa ikon"
 
 msgid "Add _Buddy..."
 msgstr "Legg til _venn…"
@@ -11383,16 +11392,16 @@
 msgstr "_Bli med"
 
 msgid "Auto-Join"
-msgstr "Automatisk pålogging"
+msgstr "Bli med auto_matisk"
 
 msgid "Persistent"
-msgstr "Varig"
+msgstr "_Varig"
 
 msgid "_Edit Settings..."
-msgstr "Endra _innstillingar…"
+msgstr "Endra _innstillingar …"
 
 msgid "_Collapse"
-msgstr "_Slå saman"
+msgstr "Sl_å saman"
 
 msgid "_Expand"
 msgstr "_Utvid"
@@ -12149,9 +12158,6 @@
 msgid "Fatal Error"
 msgstr "Alvorleg feil"
 
-msgid "bug master"
-msgstr "feilrettingsansvarleg"
-
 msgid "artist"
 msgstr "kunstnar"
 
@@ -12332,6 +12338,10 @@
 msgid "Maithili"
 msgstr "Maithili"
 
+#, fuzzy
+msgid "Meadow Mari"
+msgstr "Ny e-post"
+
 msgid "Macedonian"
 msgstr "Makedonsk"
 
@@ -12625,7 +12635,7 @@
 msgstr "Fjern venn"
 
 msgid "_Remove Buddy"
-msgstr "_Fjern venn"
+msgstr "Fje_rn venn"
 
 #, c-format
 msgid ""
@@ -13534,13 +13544,13 @@
 msgstr "Slå på automatisk port_vidaresending"
 
 msgid "_Manually specify range of ports to listen on:"
-msgstr "Før opp _portrekkje det skal lyttast til:"
+msgstr "Før opp portr_ekkje det skal lyttast til:"
 
 msgid "_Start:"
-msgstr "_Start:"
+msgstr "_start:"
 
 msgid "_End:"
-msgstr "_Slutt:"
+msgstr "s_lutt:"
 
 #. TURN server
 msgid "Relay Server (TURN)"
@@ -15441,6 +15451,13 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "Du har ikkje rettar til å avinstallera dette programmet."
 
+#~ msgid "bug master"
+#~ msgstr "feilrettingsansvarleg"
+
+# var: Automatisk avvising frå brukarar utanfor vennelista
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr "Automatisk avvising av brukarar utanfor vennelista"
+
 #~ msgid "An error occurred on the in-band bytestream transfer\n"
 #~ msgstr "Overføringa av samtidsdatastraumen feila\n"
 
--- a/po/oc.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/oc.po	Sat Feb 12 23:54:14 2011 +0000
@@ -12,13 +12,14 @@
 # D'autres documents utiles peuvent être consultés sur lo projet de
 # traduction de GNOME.
 # http://wiki.traduc.org/gnomefr/
+# Éric Boumaour <zongo_fr@users.sourceforge.net>, 2011.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:34-0500\n"
-"PO-Revision-Date: 2008-05-09 01:31+0200\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
+"PO-Revision-Date: 2011-01-09 00:11+0100\n"
 "Last-Translator: Éric Boumaour <zongo_fr@users.sourceforge.net>\n"
 "Language-Team: fr <fr@li.org>\n"
 "Language: \n"
@@ -63,7 +64,7 @@
 msgstr ""
 
 msgid "Account was not added"
-msgstr ""
+msgstr "Compte pas apondut"
 
 msgid "Username of an account must be non-empty."
 msgstr ""
@@ -89,17 +90,16 @@
 msgstr ""
 
 msgid "Modify Account"
-msgstr ""
+msgstr "Modificar lo compte"
 
 msgid "New Account"
-msgstr ""
+msgstr "Compte novèl"
 
 msgid "Protocol:"
 msgstr "Protocòl :"
 
-#, fuzzy
 msgid "Username:"
-msgstr "_Nom d'utilizaire :"
+msgstr "Nom d'utilizaire :"
 
 msgid "Password:"
 msgstr "Mot de pas :"
@@ -126,7 +126,7 @@
 msgstr ""
 
 msgid "Delete Account"
-msgstr ""
+msgstr "Suprimir lo compte"
 
 #. Delete button
 msgid "Delete"
@@ -207,7 +207,7 @@
 msgstr ""
 
 msgid "Add in group"
-msgstr ""
+msgstr "Apondre al grop"
 
 msgid "Account"
 msgstr "Compte"
@@ -219,7 +219,7 @@
 msgstr ""
 
 msgid "Chats"
-msgstr ""
+msgstr "Charradissas"
 
 #. Extract their Name and put it in
 msgid "Name"
@@ -259,7 +259,7 @@
 msgstr ""
 
 msgid "Edit"
-msgstr "Edicion"
+msgstr "Modificar"
 
 msgid "Edit Settings"
 msgstr ""
@@ -277,10 +277,10 @@
 msgstr ""
 
 msgid "Send File"
-msgstr "_Enviar un fichièr"
+msgstr "Mandar un fichièr"
 
 msgid "Blocked"
-msgstr ""
+msgstr "Blocat"
 
 msgid "Show when offline"
 msgstr ""
@@ -344,19 +344,19 @@
 msgstr "Novèl..."
 
 msgid "Saved..."
-msgstr ""
+msgstr "Enregistrats..."
 
 msgid "Plugins"
 msgstr "Ajustons"
 
 msgid "Block/Unblock"
-msgstr ""
+msgstr "Blocar/desblocar"
 
 msgid "Block"
-msgstr ""
+msgstr "Blocar"
 
 msgid "Unblock"
-msgstr ""
+msgstr "Desblocar"
 
 msgid ""
 "Please enter the username or alias of the person you would like to Block/"
@@ -385,7 +385,7 @@
 msgstr ""
 
 msgid "Join"
-msgstr ""
+msgstr "Jónher"
 
 msgid ""
 "Please enter the username or alias of the person whose log you would like to "
@@ -400,7 +400,7 @@
 msgstr ""
 
 msgid "Block/Unblock..."
-msgstr ""
+msgstr "Blocar/desblocar..."
 
 msgid "Join Chat..."
 msgstr ""
@@ -418,7 +418,7 @@
 msgstr ""
 
 msgid "Offline buddies"
-msgstr ""
+msgstr "Los contactes desconnectats"
 
 msgid "Sort"
 msgstr "Ordenar"
@@ -436,7 +436,7 @@
 msgstr ""
 
 msgid "Chat"
-msgstr "Chad"
+msgstr "Charradissa"
 
 msgid "Grouping"
 msgstr ""
@@ -590,7 +590,7 @@
 msgstr ""
 
 msgid "Conversation"
-msgstr ""
+msgstr "Charradissa"
 
 msgid "Clear Scrollback"
 msgstr ""
@@ -601,9 +601,8 @@
 msgid "Add Buddy Pounce..."
 msgstr ""
 
-#, fuzzy
 msgid "Invite..."
-msgstr "Convidar"
+msgstr "Convidar..."
 
 msgid "Enable Logging"
 msgstr ""
@@ -711,15 +710,15 @@
 msgid "Pause"
 msgstr "Pausa"
 
-#, fuzzy, c-format
+#, c-format
 msgid "File Transfers - %d%% of %d file"
 msgid_plural "File Transfers - %d%% of %d files"
-msgstr[0] "Transferriment de fichièrs"
-msgstr[1] "Transferriment de fichièrs"
+msgstr[0] ""
+msgstr[1] ""
 
 #. Create the window.
 msgid "File Transfers"
-msgstr "Transferriment de fichièrs"
+msgstr "Transferiment de fichièrs"
 
 msgid "Progress"
 msgstr "Avançament"
@@ -763,9 +762,8 @@
 msgid "%.2f KiB/s"
 msgstr "%.2f ko/s"
 
-#, fuzzy
 msgid "Sent"
-msgstr "Definir"
+msgstr "Mandat"
 
 msgid "Received"
 msgstr ""
@@ -777,9 +775,8 @@
 msgid "The file was saved as %s."
 msgstr ""
 
-#, fuzzy
 msgid "Sending"
-msgstr "Segondas"
+msgstr "A mandar"
 
 msgid "Receiving"
 msgstr ""
@@ -828,14 +825,13 @@
 msgstr ""
 
 msgid "All Conversations"
-msgstr ""
+msgstr "Totas las charradissas"
 
 msgid "System Log"
 msgstr ""
 
-#, fuzzy
 msgid "Calling..."
-msgstr "A calcular..."
+msgstr ""
 
 msgid "Hangup"
 msgstr ""
@@ -910,9 +906,8 @@
 #. XXX: The following expects that finch_notify_message gets called. This
 #. * may not always happen, e.g. when another plugin sets its own
 #. * notify_message. So tread carefully.
-#, fuzzy
 msgid "URI"
-msgstr "URL"
+msgstr "URI"
 
 msgid "ERROR"
 msgstr "ERROR"
@@ -1033,7 +1028,7 @@
 msgstr ""
 
 msgid "Send a message"
-msgstr ""
+msgstr "Mandar un messatge"
 
 msgid "Execute a command"
 msgstr ""
@@ -1167,7 +1162,7 @@
 msgstr ""
 
 msgid "Open File..."
-msgstr ""
+msgstr "Dobrir un fichièr..."
 
 msgid "Choose Location..."
 msgstr ""
@@ -1212,9 +1207,8 @@
 msgid "Someone says your username in chat"
 msgstr ""
 
-#, fuzzy
 msgid "Attention received"
-msgstr "L'autentificacion a abocat"
+msgstr ""
 
 msgid "GStreamer Failure"
 msgstr ""
@@ -1311,7 +1305,7 @@
 msgstr "Títol"
 
 msgid "Type"
-msgstr "Tipe"
+msgstr "Mena"
 
 #. Statuses are almost all the same. Define a macro to reduce code repetition.
 #. PurpleStatusPrimitive
@@ -1482,9 +1476,8 @@
 msgid "TinyURL (or other) address prefix"
 msgstr ""
 
-#, fuzzy
 msgid "TinyURL"
-msgstr "URL"
+msgstr "TinyURL"
 
 msgid "TinyURL plugin"
 msgstr ""
@@ -1503,7 +1496,7 @@
 msgstr ""
 
 msgid "Offline Buddies"
-msgstr ""
+msgstr "Contactes desconnectats"
 
 msgid "Online/Offline"
 msgstr ""
@@ -1598,7 +1591,7 @@
 msgstr "Desconegut"
 
 msgid "Buddies"
-msgstr ""
+msgstr "Contactes"
 
 msgid "buddy list"
 msgstr ""
@@ -1745,10 +1738,10 @@
 msgstr ""
 
 msgid "Send Message"
-msgstr "Enviar un messatge"
+msgstr "Mandar un messatge"
 
 msgid "_Send Message"
-msgstr "_Enviar un messatge"
+msgstr "_Mandar un messatge"
 
 #, c-format
 msgid "%s entered the room."
@@ -1774,9 +1767,8 @@
 msgid "%s left the room (%s)."
 msgstr ""
 
-#, fuzzy
 msgid "Invite to chat"
-msgstr "Convidar"
+msgstr "Convidar a una charradissa"
 
 #. Put our happy label in it.
 msgid ""
@@ -1837,7 +1829,7 @@
 msgstr ""
 
 msgid "Unknown reason"
-msgstr "Rason desconeguda"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -1926,9 +1918,9 @@
 msgid "File transfer cancelled"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s cancelled the transfer of %s"
-msgstr "%s a changé son état de %s en %s."
+msgstr ""
 
 #, c-format
 msgid "%s cancelled the file transfer"
@@ -2121,9 +2113,8 @@
 msgid "Error with your webcam"
 msgstr ""
 
-#, fuzzy
 msgid "Conference error"
-msgstr "Error de connexion"
+msgstr ""
 
 #, c-format
 msgid "Error creating session: %s"
@@ -2189,13 +2180,13 @@
 msgstr ""
 
 msgid "_Save"
-msgstr "_Enregistrar"
+msgstr "Enregi_strar"
 
 msgid "_Cancel"
 msgstr "_Anullar"
 
 msgid "Ask"
-msgstr ""
+msgstr "Demandar"
 
 msgid "Auto Accept"
 msgstr ""
@@ -2212,7 +2203,9 @@
 "(Please provide the full path)"
 msgstr ""
 
-msgid "Automatically reject from users not in buddy list"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
 msgstr ""
 
 msgid ""
@@ -2223,6 +2216,9 @@
 msgid "Create a new directory for each user"
 msgstr ""
 
+msgid "Escape the filenames"
+msgstr ""
+
 msgid "Notes"
 msgstr "Nòtas"
 
@@ -2462,7 +2458,7 @@
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
 msgid "QIP"
-msgstr ""
+msgstr "QIP"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
@@ -2474,13 +2470,13 @@
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
 msgid "Trillian"
-msgstr ""
+msgstr "Trillian"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
 msgid "aMSN"
-msgstr ""
+msgstr "aMSN"
 
 #. Add general preferences.
 msgid "General Log Reading Configuration"
@@ -2573,7 +2569,7 @@
 msgstr ""
 
 msgid "Offline Message"
-msgstr ""
+msgstr "Messatge desconnectat"
 
 msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
 msgstr ""
@@ -2590,9 +2586,8 @@
 msgid "Do not ask. Always save in pounce."
 msgstr ""
 
-#, fuzzy
 msgid "One Time Password"
-msgstr "Picatz lo mot de pas"
+msgstr ""
 
 #. *< type
 #. *< ui_requirement
@@ -2700,7 +2695,7 @@
 #. *< priority
 #. *< id
 msgid "GNUTLS"
-msgstr ""
+msgstr "GNUTLS"
 
 #. *< name
 #. *< version
@@ -2716,7 +2711,7 @@
 #. *< priority
 #. *< id
 msgid "NSS"
-msgstr ""
+msgstr "NSS"
 
 #. *< name
 #. *< version
@@ -2851,7 +2846,7 @@
 msgstr ""
 
 msgid "Bonjour"
-msgstr ""
+msgstr "Bonjour"
 
 #, c-format
 msgid "%s has closed the conversation."
@@ -2908,9 +2903,8 @@
 msgid "You must fill in all registration fields"
 msgstr ""
 
-#, fuzzy
 msgid "Passwords do not match"
-msgstr "Los mots de pas son pas los meteisses."
+msgstr "Los mots de pas son pas los meteisses"
 
 msgid "Unable to register new account.  An unknown error occurred."
 msgstr ""
@@ -2930,9 +2924,8 @@
 msgid "Enter captcha text"
 msgstr ""
 
-#, fuzzy
 msgid "Captcha"
-msgstr "Enregistrar l'imatge"
+msgstr "Captcha"
 
 msgid "Register New Gadu-Gadu Account"
 msgstr ""
@@ -3031,7 +3024,7 @@
 msgstr "Absent(a)"
 
 msgid "UIN"
-msgstr ""
+msgstr "UIN"
 
 #. first name
 #. purple_notify_user_info_add_pair( info, _( "Hidden Number" ), profile->hidden ? _( "Yes" ) : _( "No" ) );
@@ -3088,9 +3081,9 @@
 msgid "Chat _name:"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to resolve hostname '%s': %s"
-msgstr "Impossible de dobrir le fichièr '%s' : %s"
+msgstr ""
 
 #. 1. connect to server
 #. connect to the server
@@ -3103,9 +3096,8 @@
 msgid "This chat name is already in use"
 msgstr ""
 
-#, fuzzy
 msgid "Not connected to the server"
-msgstr "Connectat"
+msgstr "Sètz pas connectat al servidor"
 
 msgid "Find buddies..."
 msgstr ""
@@ -3146,9 +3138,8 @@
 msgid "Gadu-Gadu User"
 msgstr ""
 
-#, fuzzy
 msgid "GG server"
-msgstr "Connectat"
+msgstr "Servidor GG"
 
 #, c-format
 msgid "Unknown command: %s"
@@ -3187,9 +3178,9 @@
 #.
 #. TODO: what to do here - do we really have to disconnect?
 #. TODO: do we really want to disconnect on a failure to write?
-#, fuzzy, c-format
+#, c-format
 msgid "Lost connection with server: %s"
-msgstr "Connectat"
+msgstr ""
 
 msgid "View MOTD"
 msgstr ""
@@ -3270,9 +3261,9 @@
 msgid "Ban on %s by %s, set %s ago"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Ban on %s"
-msgstr "Rason : %s"
+msgstr ""
 
 msgid "End of ban list"
 msgstr ""
@@ -3289,10 +3280,10 @@
 msgstr ""
 
 msgid " <i>(ircop)</i>"
-msgstr ""
+msgstr " <i>(ircop)</i>"
 
 msgid " <i>(identified)</i>"
-msgstr ""
+msgstr " <i>(identificat)</i>"
 
 msgid "Nick"
 msgstr "Escais"
@@ -3400,9 +3391,8 @@
 msgid "The nickname \"%s\" is already being used."
 msgstr ""
 
-#, fuzzy
 msgid "Nickname in use"
-msgstr "Escais"
+msgstr ""
 
 msgid "Cannot change nick"
 msgstr ""
@@ -3585,7 +3575,7 @@
 msgstr ""
 
 msgid "PONG"
-msgstr ""
+msgstr "PONG"
 
 msgid "CTCP PING reply"
 msgstr ""
@@ -3605,7 +3595,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr ""
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr ""
 
@@ -3639,17 +3632,15 @@
 "Allow this and continue authentication?"
 msgstr ""
 
-#, fuzzy
 msgid "SASL authentication failed"
-msgstr "L'autentificacion a abocat"
+msgstr ""
 
 #, c-format
 msgid "SASL error: %s"
 msgstr ""
 
-#, fuzzy
 msgid "Invalid Encoding"
-msgstr "L'expression es pas valida"
+msgstr ""
 
 msgid "Unsupported Extension"
 msgstr ""
@@ -3673,16 +3664,14 @@
 msgid "User not found"
 msgstr "Utilizaire pas trobat"
 
-#, fuzzy
 msgid "Invalid Username Encoding"
-msgstr "L'expression es pas valida"
+msgstr ""
 
 msgid "Resource Constraint"
 msgstr ""
 
-#, fuzzy
 msgid "Unable to canonicalize username"
-msgstr "Activat"
+msgstr ""
 
 msgid "Unable to canonicalize password"
 msgstr ""
@@ -3705,9 +3694,9 @@
 msgid "Unable to establish a connection with the server"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to establish a connection with the server: %s"
-msgstr "Connectat"
+msgstr ""
 
 msgid "Unable to establish SSL connection"
 msgstr ""
@@ -3746,7 +3735,7 @@
 
 #. purple_notify_user_info_add_pair( info, _( "Email" ), profile->email );
 msgid "Country"
-msgstr "País"
+msgstr "Païs"
 
 #. lots of clients (including purple) do this, but it's
 #. * out of spec
@@ -3782,14 +3771,13 @@
 msgstr ""
 
 msgid "Client"
-msgstr ""
+msgstr "Client"
 
 msgid "Operating System"
 msgstr "Sistèma d'explotacion"
 
-#, fuzzy
 msgid "Local Time"
-msgstr "Fichièr local :"
+msgstr "Ora locala"
 
 msgid "Priority"
 msgstr "Prioritat"
@@ -3797,16 +3785,15 @@
 msgid "Resource"
 msgstr "Ressorga"
 
-#, fuzzy
 msgid "Uptime"
-msgstr "Data"
+msgstr ""
 
 msgid "Logged Off"
 msgstr ""
 
 #, c-format
 msgid "%s ago"
-msgstr ""
+msgstr "%s i a"
 
 msgid "Middle Name"
 msgstr ""
@@ -3850,7 +3837,7 @@
 msgstr ""
 
 msgid "Log In"
-msgstr ""
+msgstr "Connexion"
 
 msgid "Log Out"
 msgstr "Desconnectar"
@@ -3860,7 +3847,7 @@
 
 #. last name
 msgid "Last Name"
-msgstr "Nom"
+msgstr ""
 
 msgid "The following are the results of your search"
 msgstr ""
@@ -3971,17 +3958,14 @@
 msgid "Find Rooms"
 msgstr ""
 
-#, fuzzy
 msgid "Affiliations:"
-msgstr "Aliàs :"
-
-#, fuzzy
+msgstr ""
+
 msgid "No users found"
-msgstr "Utilizaire pas trobat"
-
-#, fuzzy
+msgstr ""
+
 msgid "Roles:"
-msgstr "Ròtle"
+msgstr "Ròtles :"
 
 msgid "Server requires TLS/SSL, but no TLS/SSL support was found."
 msgstr ""
@@ -3989,9 +3973,8 @@
 msgid "You require encryption, but no TLS/SSL support was found."
 msgstr ""
 
-#, fuzzy
 msgid "Ping timed out"
-msgstr "Connectat"
+msgstr ""
 
 msgid "Invalid XMPP ID"
 msgstr ""
@@ -4030,7 +4013,7 @@
 msgstr ""
 
 msgid "State"
-msgstr "Estat"
+msgstr ""
 
 msgid "Postal code"
 msgstr ""
@@ -4058,7 +4041,7 @@
 msgstr ""
 
 msgid "Register"
-msgstr "Enregistrar"
+msgstr "S'enregistrar"
 
 #, c-format
 msgid "Change Account Registration at %s"
@@ -4111,7 +4094,7 @@
 msgstr "De"
 
 msgid "To"
-msgstr "A"
+msgstr "Destinacion"
 
 msgid "None (To pending)"
 msgstr ""
@@ -4129,13 +4112,11 @@
 msgid "Allow Buzz"
 msgstr ""
 
-#, fuzzy
 msgid "Mood Name"
-msgstr "Nom de grop"
-
-#, fuzzy
+msgstr ""
+
 msgid "Mood Comment"
-msgstr "Entresenhas"
+msgstr ""
 
 #. primitive
 #. ID
@@ -4407,9 +4388,8 @@
 msgid "Unable to initiate media with %s: not subscribed to user presence"
 msgstr ""
 
-#, fuzzy
 msgid "Media Initiation Failed"
-msgstr "L'autentificacion a abocat"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -4505,9 +4485,8 @@
 msgid "Use old-style SSL"
 msgstr ""
 
-#, fuzzy
 msgid "Connection security"
-msgstr "Connexion perduda"
+msgstr ""
 
 msgid "Allow plaintext auth over unencrypted streams"
 msgstr ""
@@ -4525,7 +4504,7 @@
 msgstr ""
 
 msgid "BOSH URL"
-msgstr ""
+msgstr "URL BOSH"
 
 #. this should probably be part of global smiley theme settings later on,
 #. shared with MSN
@@ -4538,7 +4517,7 @@
 
 #, c-format
 msgid "Message from %s"
-msgstr "Messatge de %s"
+msgstr ""
 
 #, c-format
 msgid "%s has set the topic to: %s"
@@ -4596,9 +4575,8 @@
 msgid "_Accept Defaults"
 msgstr ""
 
-#, fuzzy
 msgid "No reason"
-msgstr "Rason desconeguda"
+msgstr "Pas de rason"
 
 #, c-format
 msgid "You have been kicked: (%s)"
@@ -4634,23 +4612,20 @@
 msgid "Please select the resource of %s to which you would like to send a file"
 msgstr ""
 
-#, fuzzy
 msgid "Afraid"
 msgstr "Arab"
 
-#, fuzzy
 msgid "Amazed"
-msgstr "Animar"
+msgstr ""
 
 msgid "Amorous"
 msgstr ""
 
 msgid "Angry"
-msgstr ""
-
-#, fuzzy
+msgstr "Encolerat"
+
 msgid "Annoyed"
-msgstr "Qual que siá"
+msgstr ""
 
 msgid "Anxious"
 msgstr ""
@@ -4664,73 +4639,59 @@
 msgid "Bored"
 msgstr ""
 
-#, fuzzy
 msgid "Brave"
-msgstr "Enregistrar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Calm"
-msgstr "Anullar"
+msgstr ""
 
 msgid "Cautious"
 msgstr ""
 
-#, fuzzy
 msgid "Cold"
-msgstr "Gras"
-
-#, fuzzy
+msgstr ""
+
 msgid "Confident"
-msgstr "Se connectar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Confused"
-msgstr "Contunhar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Contemplative"
-msgstr "Se connectar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Contented"
-msgstr "Connectat"
-
-#, fuzzy
+msgstr ""
+
 msgid "Cranky"
-msgstr "Entrepresa"
+msgstr ""
 
 msgid "Crazy"
 msgstr ""
 
-#, fuzzy
 msgid "Creative"
-msgstr "Crear"
+msgstr ""
 
 msgid "Curious"
 msgstr ""
 
-#, fuzzy
 msgid "Dejected"
-msgstr "executar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Depressed"
-msgstr "Suprimir"
-
-#, fuzzy
+msgstr ""
+
 msgid "Disappointed"
-msgstr "_Desactivar"
+msgstr ""
 
 msgid "Disgusted"
 msgstr ""
 
-#, fuzzy
 msgid "Dismayed"
-msgstr "_Desactivar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Distracted"
-msgstr "_Desactivar"
+msgstr ""
 
 msgid "Embarrassed"
 msgstr ""
@@ -4744,9 +4705,8 @@
 msgid "Flirtatious"
 msgstr ""
 
-#, fuzzy
 msgid "Frustrated"
-msgstr "Pichon nom"
+msgstr ""
 
 msgid "Grateful"
 msgstr ""
@@ -4754,13 +4714,11 @@
 msgid "Grieving"
 msgstr ""
 
-#, fuzzy
 msgid "Grumpy"
-msgstr "Grop"
-
-#, fuzzy
+msgstr ""
+
 msgid "Guilty"
-msgstr "Ciutat"
+msgstr ""
 
 msgid "Happy"
 msgstr ""
@@ -4768,9 +4726,8 @@
 msgid "Hopeful"
 msgstr ""
 
-#, fuzzy
 msgid "Hot"
-msgstr "_Òste :"
+msgstr "Caud"
 
 msgid "Humbled"
 msgstr ""
@@ -4778,9 +4735,8 @@
 msgid "Humiliated"
 msgstr ""
 
-#, fuzzy
 msgid "Hungry"
-msgstr "Ongrés"
+msgstr ""
 
 msgid "Hurt"
 msgstr ""
@@ -4794,17 +4750,14 @@
 msgid "In love"
 msgstr ""
 
-#, fuzzy
 msgid "Indignant"
-msgstr "Indonesian"
-
-#, fuzzy
+msgstr ""
+
 msgid "Interested"
-msgstr "Interfaç"
-
-#, fuzzy
+msgstr "Interessat"
+
 msgid "Intoxicated"
-msgstr "Convidar"
+msgstr ""
 
 msgid "Invincible"
 msgstr ""
@@ -4812,62 +4765,50 @@
 msgid "Jealous"
 msgstr ""
 
-#, fuzzy
 msgid "Lonely"
-msgstr "Pas cap"
-
-#, fuzzy
+msgstr "Sol"
+
 msgid "Lost"
-msgstr "_Òste :"
+msgstr "Ò_ste :"
 
 msgid "Lucky"
 msgstr ""
 
-#, fuzzy
 msgid "Mean"
-msgstr "Aleman"
-
-#, fuzzy
+msgstr ""
+
 msgid "Moody"
-msgstr "Modificar"
+msgstr ""
 
 msgid "Nervous"
 msgstr ""
 
-#, fuzzy
 msgid "Neutral"
-msgstr "Defaut"
-
-#, fuzzy
+msgstr "Neutre"
+
 msgid "Offended"
-msgstr "Desconnectat"
+msgstr ""
 
 msgid "Outraged"
 msgstr ""
 
-#, fuzzy
 msgid "Playful"
-msgstr "Legir"
-
-#, fuzzy
+msgstr ""
+
 msgid "Proud"
-msgstr "Grop"
-
-#, fuzzy
+msgstr ""
+
 msgid "Relaxed"
-msgstr "Renommar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Relieved"
-msgstr "Suprimir"
-
-#, fuzzy
+msgstr ""
+
 msgid "Remorseful"
-msgstr "Suprimir"
-
-#, fuzzy
+msgstr ""
+
 msgid "Restless"
-msgstr "Enregistrar"
+msgstr ""
 
 msgid "Sad"
 msgstr ""
@@ -4878,9 +4819,8 @@
 msgid "Satisfied"
 msgstr ""
 
-#, fuzzy
 msgid "Serious"
-msgstr "Sons"
+msgstr ""
 
 msgid "Shocked"
 msgstr ""
@@ -4888,9 +4828,8 @@
 msgid "Shy"
 msgstr ""
 
-#, fuzzy
 msgid "Sick"
-msgstr "Escais"
+msgstr "Malaut"
 
 #. Sleepy / Tired
 msgid "Sleepy"
@@ -4899,13 +4838,11 @@
 msgid "Spontaneous"
 msgstr ""
 
-#, fuzzy
 msgid "Stressed"
-msgstr "Velocitat :"
-
-#, fuzzy
+msgstr ""
+
 msgid "Strong"
-msgstr "Arrestar"
+msgstr ""
 
 msgid "Surprised"
 msgstr ""
@@ -4916,13 +4853,11 @@
 msgid "Thirsty"
 msgstr ""
 
-#, fuzzy
 msgid "Tired"
-msgstr "Firebird"
-
-#, fuzzy
+msgstr "Las"
+
 msgid "Undefined"
-msgstr "Soslinhat"
+msgstr ""
 
 msgid "Weak"
 msgstr ""
@@ -4984,9 +4919,8 @@
 msgid "Already logged in"
 msgstr ""
 
-#, fuzzy
 msgid "Invalid username"
-msgstr "L'expression es pas valida"
+msgstr ""
 
 msgid "Invalid friendly name"
 msgstr ""
@@ -5190,9 +5124,8 @@
 msgid "Nudging %s..."
 msgstr ""
 
-#, fuzzy
 msgid "Email Address..."
-msgstr "Adreça electronica"
+msgstr "Adreça electronica..."
 
 msgid "Your new MSN friendly name is too long."
 msgstr ""
@@ -5201,23 +5134,20 @@
 msgid "Set friendly name for %s."
 msgstr ""
 
-#, fuzzy
 msgid "Set Friendly Name"
-msgstr "Nom d'ostal"
+msgstr ""
 
 msgid "This is the name that other MSN buddies will see you as."
 msgstr ""
 
-#, fuzzy
 msgid "This Location"
-msgstr "Emplaçament"
+msgstr ""
 
 msgid "This is the name that identifies this location"
 msgstr ""
 
-#, fuzzy
 msgid "Other Locations"
-msgstr "Emplaçament"
+msgstr "Autres emplaçaments"
 
 msgid "You can sign out from other locations here"
 msgstr ""
@@ -5286,9 +5216,8 @@
 msgid "Playing a game"
 msgstr ""
 
-#, fuzzy
 msgid "Working"
-msgstr "Professional"
+msgstr ""
 
 msgid "Has you"
 msgstr ""
@@ -5314,9 +5243,8 @@
 msgid "Out to Lunch"
 msgstr ""
 
-#, fuzzy
 msgid "Game Title"
-msgstr "Títol"
+msgstr ""
 
 msgid "Office Title"
 msgstr ""
@@ -5324,9 +5252,8 @@
 msgid "Set Friendly Name..."
 msgstr ""
 
-#, fuzzy
 msgid "View Locations..."
-msgstr "Emplaçament"
+msgstr ""
 
 msgid "Set Home Phone Number..."
 msgstr ""
@@ -5364,9 +5291,8 @@
 "be valid email addresses."
 msgstr ""
 
-#, fuzzy
 msgid "Unable to Add"
-msgstr "Activat"
+msgstr ""
 
 msgid "Authorization Request Message:"
 msgstr ""
@@ -5435,7 +5361,7 @@
 msgstr ""
 
 msgid "Personal"
-msgstr "Terminal"
+msgstr "Personal"
 
 msgid "Significant Other"
 msgstr ""
@@ -5466,7 +5392,7 @@
 
 #. Business
 msgid "Work"
-msgstr "Professional"
+msgstr ""
 
 msgid "Company"
 msgstr "Entrepresa"
@@ -5569,9 +5495,9 @@
 msgid "The following users are missing from your addressbook"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unknown error (%d): %s"
-msgstr "Error desconeguda"
+msgstr ""
 
 msgid "Unable to add user"
 msgstr ""
@@ -5581,9 +5507,8 @@
 msgid "Unknown error (%d)"
 msgstr ""
 
-#, fuzzy
 msgid "Unable to remove user"
-msgstr "Activat"
+msgstr ""
 
 msgid "Mobile message was not sent because it was too long."
 msgstr ""
@@ -5735,9 +5660,8 @@
 msgid "The PIN is invalid. It should only consist of digits [0-9]."
 msgstr ""
 
-#, fuzzy
 msgid "The two PINs you entered do not match."
-msgstr "Los mots de pas son pas los meteisses."
+msgstr ""
 
 msgid "The Display Name you entered is invalid."
 msgstr ""
@@ -5771,16 +5695,14 @@
 
 #. display name
 #. nick name (required)
-#, fuzzy
 msgid "Display Name"
-msgstr "Nom d'ostal"
+msgstr ""
 
 #. hidden
 msgid "Hide my number"
 msgstr ""
 
 #. mobile number
-#, fuzzy
 msgid "Mobile Number"
 msgstr "Telefòn mobil"
 
@@ -5796,9 +5718,8 @@
 msgid "There is no splash-screen currently available"
 msgstr ""
 
-#, fuzzy
 msgid "About"
-msgstr "A prepaus de %s"
+msgstr "A prepaus"
 
 #. display / change profile
 msgid "Change Profile..."
@@ -5809,9 +5730,8 @@
 msgstr ""
 
 #. display plugin version
-#, fuzzy
 msgid "About..."
-msgstr "A prepaus de %s"
+msgstr "A prepaus..."
 
 #. the file is too big
 msgid "The file you are trying to send is too large!"
@@ -5828,9 +5748,8 @@
 "Unable to connect to the MXit server. Please check your server settings."
 msgstr ""
 
-#, fuzzy
 msgid "Connecting..."
-msgstr "Connexion"
+msgstr "Connexion..."
 
 msgid "The PIN you entered has an invalid length [7-10]."
 msgstr ""
@@ -5881,59 +5800,23 @@
 msgstr ""
 
 #. ask for input (required)
-#, fuzzy
 msgid "Enter Security Code"
-msgstr "Picatz lo mot de pas"
-
-#, fuzzy
+msgstr ""
+
 msgid "Your Country"
-msgstr "País"
+msgstr "Vòstre païs"
 
 msgid "Your Language"
 msgstr ""
 
 #. display the form to the user and wait for his/her input
-#, fuzzy
 msgid "MXit Authorization"
-msgstr "Autorizar"
+msgstr ""
 
 msgid "MXit account validation"
 msgstr ""
 
-#, fuzzy
 msgid "Retrieving User Information..."
-msgstr "Entresenhas sul servidor"
-
-msgid "Loading menu..."
-msgstr ""
-
-#, fuzzy
-msgid "Status Message"
-msgstr "Messatges enviats"
-
-#, fuzzy
-msgid "Rejection Message"
-msgstr "Enviar un messatge"
-
-#. hidden number
-#, fuzzy
-msgid "Hidden Number"
-msgstr "L'expression es pas valida"
-
-msgid "Your MXit ID..."
-msgstr ""
-
-#. Configuration options
-#. WAP server (reference: "libpurple/accountopt.h")
-#, fuzzy
-msgid "WAP Server"
-msgstr "Servidor"
-
-#, fuzzy
-msgid "Connect via HTTP"
-msgstr "Se connectar"
-
-msgid "Enable splash-screen popup"
 msgstr ""
 
 #. you were kicked
@@ -5943,7 +5826,6 @@
 msgid "was kicked"
 msgstr ""
 
-#, fuzzy
 msgid "_Room Name:"
 msgstr "_Sala :"
 
@@ -5951,18 +5833,43 @@
 msgid "You have invited"
 msgstr ""
 
-#, fuzzy
+msgid "Loading menu..."
+msgstr ""
+
+msgid "Status Message"
+msgstr ""
+
+msgid "Rejection Message"
+msgstr ""
+
+#. hidden number
+msgid "Hidden Number"
+msgstr ""
+
+msgid "Your MXit ID..."
+msgstr ""
+
+#. Configuration options
+#. WAP server (reference: "libpurple/accountopt.h")
+msgid "WAP Server"
+msgstr "Servidor WAP"
+
+msgid "Connect via HTTP"
+msgstr ""
+
+msgid "Enable splash-screen popup"
+msgstr ""
+
 msgid "Last Online"
-msgstr "En linha"
+msgstr ""
 
 #. 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 ""
 
 #. packet could not be queued for transmission
-#, fuzzy
 msgid "Message Send Error"
-msgstr "Messatge de %s"
+msgstr ""
 
 msgid "Unable to process your request at this time"
 msgstr ""
@@ -5970,18 +5877,16 @@
 msgid "Timeout while waiting for a response from the MXit server."
 msgstr ""
 
-#, fuzzy
 msgid "Successfully Logged In..."
-msgstr "Entresenhas sus l'utilizaire"
+msgstr ""
 
 #, c-format
 msgid ""
 "%s sent you an encrypted message, but it is not supported on this client."
 msgstr ""
 
-#, fuzzy
 msgid "Message Error"
-msgstr "Messatge de %s"
+msgstr ""
 
 msgid "Cannot perform redirect using the specified protocol"
 msgstr ""
@@ -5997,38 +5902,30 @@
 msgid "Logout error: %s (%i)"
 msgstr ""
 
-#, fuzzy
 msgid "Contact Error"
-msgstr "Error de connexion"
+msgstr ""
 
 msgid "Message Sending Error"
 msgstr ""
 
-#, fuzzy
 msgid "Status Error"
-msgstr "Estatut"
-
-#, fuzzy
+msgstr ""
+
 msgid "Mood Error"
-msgstr "Error"
-
-#, fuzzy
+msgstr ""
+
 msgid "Invitation Error"
-msgstr "Error de connexion"
-
-#, fuzzy
+msgstr ""
+
 msgid "Contact Removal Error"
-msgstr "Error de connexion"
-
-#, fuzzy
+msgstr ""
+
 msgid "Subscription Error"
-msgstr "Error de connexion"
-
-#, fuzzy
+msgstr ""
+
 msgid "Contact Update Error"
-msgstr "Error de connexion"
-
-#, fuzzy
+msgstr ""
+
 msgid "File Transfer Error"
 msgstr "Transferiment de fichièr"
 
@@ -6038,9 +5935,8 @@
 msgid "MultiMx Invitation Error"
 msgstr ""
 
-#, fuzzy
 msgid "Profile Error"
-msgstr "Perfil"
+msgstr "Error de perfil"
 
 #. bad packet
 msgid "Invalid packet received from MXit."
@@ -6072,28 +5968,23 @@
 msgid "In Love"
 msgstr ""
 
-#, fuzzy
 msgid "Pending"
-msgstr "Segondas"
-
-#, fuzzy
+msgstr ""
+
 msgid "Invited"
-msgstr "Convidar"
-
-#, fuzzy
+msgstr "Convidat"
+
 msgid "Rejected"
-msgstr "executar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Deleted"
-msgstr "Suprimir"
+msgstr "Suprimit"
 
 msgid "MXit Advertising"
 msgstr ""
 
-#, fuzzy
 msgid "More Information"
-msgstr "Entresenhas"
+msgstr ""
 
 #, c-format
 msgid "No such user: %s"
@@ -6120,9 +6011,8 @@
 msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
 msgstr ""
 
-#, fuzzy
 msgid "Lost connection with server"
-msgstr "Connectat"
+msgstr ""
 
 #. Can't write _()'d strings in array initializers. Workaround.
 #. khc: then use N_() in the array initializer and use _() when they are
@@ -6143,7 +6033,7 @@
 msgstr ""
 
 msgid "MySpace"
-msgstr ""
+msgstr "MySpace"
 
 msgid "IM Friends"
 msgstr ""
@@ -6254,7 +6144,7 @@
 msgstr ""
 
 msgid "Song"
-msgstr ""
+msgstr "Cançon"
 
 msgid "Total Friends"
 msgstr ""
@@ -6519,9 +6409,9 @@
 msgid "Unknown error: 0x%X"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to login: %s"
-msgstr "Activat"
+msgstr ""
 
 #, c-format
 msgid "Unable to send message. Could not get details for user (%s)."
@@ -6769,43 +6659,39 @@
 msgid "Bot account reached monthly IM limit"
 msgstr ""
 
-#, fuzzy
 msgid "Unable to receive offline messages"
-msgstr "Impossible de dobrir le fichièr '%s' : %s"
+msgstr ""
 
 msgid "Offline message store full"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to send message: %s (%s)"
-msgstr "Impossible de dobrir le fichièr '%s' : %s"
+msgstr ""
 
 #, c-format
 msgid "Unable to send message: %s"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to send message to %s: %s (%s)"
-msgstr "Impossible de dobrir le fichièr '%s' : %s"
-
-#, fuzzy, c-format
+msgstr ""
+
+#, c-format
 msgid "Unable to send message to %s: %s"
-msgstr "Impossible de dobrir le fichièr '%s' : %s"
+msgstr ""
 
 msgid "Thinking"
 msgstr ""
 
-#, fuzzy
 msgid "Shopping"
-msgstr "S'arrèsta de picar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Questioning"
-msgstr "Estonian"
-
-#, fuzzy
+msgstr ""
+
 msgid "Eating"
-msgstr "Alèrta"
+msgstr "A manjar"
 
 msgid "Watching a movie"
 msgstr ""
@@ -6825,9 +6711,8 @@
 msgid "Having fun"
 msgstr ""
 
-#, fuzzy
 msgid "Sleeping"
-msgstr "Segondas"
+msgstr "A dormir"
 
 msgid "Using a PDA"
 msgstr ""
@@ -6855,39 +6740,33 @@
 msgstr ""
 
 #. Playing video games
-#, fuzzy
 msgid "Gaming"
-msgstr "Alèrta"
+msgstr ""
 
 msgid "Browsing the web"
 msgstr ""
 
-#, fuzzy
 msgid "Smoking"
-msgstr "Professional"
-
-#, fuzzy
+msgstr ""
+
 msgid "Writing"
-msgstr "Professional"
+msgstr ""
 
 #. Drinking [Alcohol]
-#, fuzzy
 msgid "Drinking"
-msgstr "Professional"
+msgstr ""
 
 msgid "Listening to music"
 msgstr ""
 
-#, fuzzy
 msgid "Studying"
-msgstr "Segondas"
+msgstr "A estudiar"
 
 msgid "In the restroom"
 msgstr ""
 
-#, fuzzy
 msgid "Received invalid data on connection with server"
-msgstr "Connectat"
+msgstr ""
 
 #. *< type
 #. *< ui_requirement
@@ -6965,21 +6844,17 @@
 msgid "Invisible"
 msgstr "Invisible"
 
-#, fuzzy
 msgid "Evil"
-msgstr "Corrièl"
-
-#, fuzzy
+msgstr ""
+
 msgid "Depression"
-msgstr "Mèstier"
-
-#, fuzzy
+msgstr ""
+
 msgid "At home"
-msgstr "A prepaus de %s"
-
-#, fuzzy
+msgstr "A l'ostal"
+
 msgid "At work"
-msgstr "Ret"
+msgstr "Al trabalh"
 
 msgid "At lunch"
 msgstr ""
@@ -7307,7 +7182,7 @@
 msgstr ""
 
 msgid "(no name)"
-msgstr ""
+msgstr "(pas de nom)"
 
 #, c-format
 msgid "Unable to add the buddy %s for an unknown reason."
@@ -7350,9 +7225,8 @@
 msgid "iTunes Music Store Link"
 msgstr ""
 
-#, fuzzy
 msgid "Lunch"
-msgstr "Finch"
+msgstr ""
 
 #, c-format
 msgid "Buddy Comment for %s"
@@ -7383,9 +7257,8 @@
 msgid "Edit Buddy Comment"
 msgstr ""
 
-#, fuzzy
 msgid "Get X-Status Msg"
-msgstr "Messatges enviats"
+msgstr ""
 
 msgid "End Direct IM Session"
 msgstr ""
@@ -7451,17 +7324,15 @@
 msgid "Set Privacy Options..."
 msgstr ""
 
-#, fuzzy
 msgid "Show Visible List"
-msgstr "Tièra de contactes"
-
-#, fuzzy
+msgstr ""
+
 msgid "Show Invisible List"
-msgstr "Invisible"
+msgstr ""
 
 #. AIM actions
 msgid "Confirm Account"
-msgstr ""
+msgstr "Confirmar lo compte"
 
 msgid "Display Currently Registered Email Address"
 msgstr ""
@@ -7511,6 +7382,124 @@
 "considered a privacy risk."
 msgstr ""
 
+#. Label
+msgid "Buddy Icon"
+msgstr ""
+
+msgid "Voice"
+msgstr "Votz"
+
+msgid "AIM Direct IM"
+msgstr ""
+
+msgid "Get File"
+msgstr ""
+
+msgid "Games"
+msgstr "Jòcs"
+
+msgid "ICQ Xtraz"
+msgstr ""
+
+msgid "Add-Ins"
+msgstr ""
+
+msgid "Send Buddy List"
+msgstr ""
+
+msgid "ICQ Direct Connect"
+msgstr ""
+
+msgid "AP User"
+msgstr ""
+
+msgid "ICQ RTF"
+msgstr ""
+
+msgid "Nihilist"
+msgstr ""
+
+msgid "ICQ Server Relay"
+msgstr ""
+
+msgid "Old ICQ UTF8"
+msgstr ""
+
+msgid "Trillian Encryption"
+msgstr ""
+
+msgid "ICQ UTF8"
+msgstr ""
+
+msgid "Hiptop"
+msgstr ""
+
+msgid "Security Enabled"
+msgstr ""
+
+msgid "Video Chat"
+msgstr ""
+
+msgid "iChat AV"
+msgstr ""
+
+msgid "Live Video"
+msgstr ""
+
+msgid "Camera"
+msgstr "Aparelh de fotografiar"
+
+msgid "Screen Sharing"
+msgstr "Nom d'utilisateur"
+
+msgid "IP Address"
+msgstr "Adreça IP"
+
+msgid "Warning Level"
+msgstr ""
+
+msgid "Buddy Comment"
+msgstr ""
+
+#, c-format
+msgid "User information not available: %s"
+msgstr ""
+
+msgid "Mobile Phone"
+msgstr "Telefòn mobil"
+
+msgid "Personal Web Page"
+msgstr ""
+
+#. aim_userinfo_t
+#. use_html_status
+msgid "Additional Information"
+msgstr "Entresenhas suplementàrias"
+
+msgid "Zip Code"
+msgstr "Còdi postal"
+
+msgid "Work Information"
+msgstr ""
+
+msgid "Division"
+msgstr "Division"
+
+msgid "Position"
+msgstr "Posicion"
+
+msgid "Web Page"
+msgstr "Pagina web"
+
+msgid "Online Since"
+msgstr ""
+
+msgid "Member Since"
+msgstr ""
+
+msgid "Capabilities"
+msgstr ""
+
 msgid "Invalid SNAC"
 msgstr ""
 
@@ -7580,125 +7569,6 @@
 msgid "Not while on AOL"
 msgstr ""
 
-#. Label
-msgid "Buddy Icon"
-msgstr ""
-
-msgid "Voice"
-msgstr "Votz"
-
-msgid "AIM Direct IM"
-msgstr ""
-
-msgid "Get File"
-msgstr ""
-
-msgid "Games"
-msgstr "Jòcs"
-
-msgid "ICQ Xtraz"
-msgstr ""
-
-msgid "Add-Ins"
-msgstr ""
-
-msgid "Send Buddy List"
-msgstr ""
-
-msgid "ICQ Direct Connect"
-msgstr ""
-
-msgid "AP User"
-msgstr ""
-
-msgid "ICQ RTF"
-msgstr ""
-
-msgid "Nihilist"
-msgstr ""
-
-msgid "ICQ Server Relay"
-msgstr ""
-
-msgid "Old ICQ UTF8"
-msgstr ""
-
-msgid "Trillian Encryption"
-msgstr ""
-
-msgid "ICQ UTF8"
-msgstr ""
-
-msgid "Hiptop"
-msgstr ""
-
-msgid "Security Enabled"
-msgstr ""
-
-msgid "Video Chat"
-msgstr ""
-
-msgid "iChat AV"
-msgstr ""
-
-msgid "Live Video"
-msgstr ""
-
-msgid "Camera"
-msgstr "Aparelh de fotografiar"
-
-#, fuzzy
-msgid "Screen Sharing"
-msgstr "Nom d'utilisateur"
-
-msgid "IP Address"
-msgstr "Adreça IP"
-
-msgid "Warning Level"
-msgstr ""
-
-msgid "Buddy Comment"
-msgstr ""
-
-#, c-format
-msgid "User information not available: %s"
-msgstr ""
-
-msgid "Mobile Phone"
-msgstr "Telefòn mobil"
-
-msgid "Personal Web Page"
-msgstr ""
-
-#. aim_userinfo_t
-#. use_html_status
-msgid "Additional Information"
-msgstr "Entresenhas suplementàrias"
-
-msgid "Zip Code"
-msgstr "Còdi postal"
-
-msgid "Work Information"
-msgstr ""
-
-msgid "Division"
-msgstr "Division"
-
-msgid "Position"
-msgstr "Posicion"
-
-msgid "Web Page"
-msgstr "Pagina web"
-
-msgid "Online Since"
-msgstr ""
-
-msgid "Member Since"
-msgstr ""
-
-msgid "Capabilities"
-msgstr ""
-
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -7733,16 +7603,14 @@
 "\""
 msgstr ""
 
-#, fuzzy
 msgid "Visible List"
-msgstr "Invisible"
+msgstr "Tièra visibla"
 
 msgid "These buddies will see your status when you switch to \"Invisible\""
 msgstr ""
 
-#, fuzzy
 msgid "Invisible List"
-msgstr "Invisible"
+msgstr "Tièra invisibla"
 
 msgid "These buddies will always see you as offline"
 msgstr ""
@@ -7796,7 +7664,7 @@
 msgstr ""
 
 msgid "Dragon"
-msgstr ""
+msgstr "Dragon"
 
 msgid "Snake"
 msgstr ""
@@ -7805,36 +7673,34 @@
 msgstr ""
 
 msgid "Goat"
-msgstr ""
+msgstr "Cabra"
 
 msgid "Monkey"
-msgstr ""
+msgstr "Monin"
 
 msgid "Rooster"
 msgstr ""
 
 msgid "Dog"
-msgstr ""
+msgstr "Can"
 
 msgid "Pig"
-msgstr ""
+msgstr "Tesson"
 
 msgid "Other"
 msgstr "Autre"
 
-#, fuzzy
 msgid "Visible"
-msgstr "Invisible"
+msgstr "Visible"
 
 msgid "Friend Only"
 msgstr ""
 
-#, fuzzy
 msgid "Private"
-msgstr "Crear"
+msgstr "Privat"
 
 msgid "QQ Number"
-msgstr ""
+msgstr "Numèro QQ"
 
 msgid "Country/Region"
 msgstr ""
@@ -7848,9 +7714,8 @@
 msgid "Phone Number"
 msgstr ""
 
-#, fuzzy
 msgid "Authorize adding"
-msgstr "Autorizar"
+msgstr ""
 
 msgid "Cellphone Number"
 msgstr ""
@@ -7858,7 +7723,6 @@
 msgid "Personal Introduction"
 msgstr ""
 
-#, fuzzy
 msgid "City/Area"
 msgstr "Ciutat"
 
@@ -7874,67 +7738,54 @@
 msgid "Horoscope"
 msgstr ""
 
-#, fuzzy
 msgid "Zodiac"
 msgstr "Signe del zodiac"
 
-#, fuzzy
 msgid "Blood"
-msgstr "Gras"
+msgstr ""
 
 msgid "True"
-msgstr ""
-
-#, fuzzy
+msgstr "Verai"
+
 msgid "False"
-msgstr "Error"
-
-#, fuzzy
+msgstr "Fals"
+
 msgid "Modify Contact"
-msgstr "Entresenhas"
-
-#, fuzzy
+msgstr ""
+
 msgid "Modify Address"
-msgstr "Adreça personala"
-
-#, fuzzy
+msgstr "Modificar l'adreça"
+
 msgid "Modify Extended Information"
-msgstr "Entresenhas"
-
-#, fuzzy
+msgstr ""
+
 msgid "Modify Information"
-msgstr "Entresenhas"
-
-#, fuzzy
+msgstr ""
+
 msgid "Update"
-msgstr "Data"
-
-#, fuzzy
+msgstr ""
+
 msgid "Could not change buddy information."
-msgstr "Entresenhas sus l'utilizaire"
+msgstr ""
 
 msgid "Note"
 msgstr "Nòta"
 
 #. callback
-#, fuzzy
 msgid "Buddy Memo"
-msgstr "Tièra de contactes"
+msgstr ""
 
 msgid "Change his/her memo as you like"
 msgstr ""
 
-#, fuzzy
 msgid "_Modify"
-msgstr "Modificar"
-
-#, fuzzy
+msgstr "_Modificar"
+
 msgid "Memo Modify"
-msgstr "Modificar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Server says:"
-msgstr "_Servidor :"
+msgstr ""
 
 msgid "Your request was accepted."
 msgstr ""
@@ -7946,20 +7797,17 @@
 msgid "%u requires verification: %s"
 msgstr ""
 
-#, fuzzy
 msgid "Add buddy question"
-msgstr "Autorizar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Enter answer here"
-msgstr "Picatz lo mot de pas"
+msgstr ""
 
 msgid "Send"
-msgstr "Segondas"
-
-#, fuzzy
+msgstr "Mandar"
+
 msgid "Invalid answer."
-msgstr "L'expression es pas valida"
+msgstr ""
 
 msgid "Authorization denied message:"
 msgstr ""
@@ -7971,9 +7819,8 @@
 msgid "%u needs authorization"
 msgstr ""
 
-#, fuzzy
 msgid "Add buddy authorize"
-msgstr "Autorizar"
+msgstr ""
 
 msgid "Enter request here"
 msgstr ""
@@ -7981,17 +7828,14 @@
 msgid "Would you be my friend?"
 msgstr ""
 
-#, fuzzy
 msgid "QQ Buddy"
-msgstr "Apondre lo contacte"
-
-#, fuzzy
+msgstr ""
+
 msgid "Add buddy"
-msgstr "Apondre lo contacte"
-
-#, fuzzy
+msgstr "Apondre un contacte"
+
 msgid "Invalid QQ Number"
-msgstr "L'expression es pas valida"
+msgstr ""
 
 msgid "Failed sending authorize"
 msgstr ""
@@ -8021,7 +7865,7 @@
 
 #, c-format
 msgid "Message: %s"
-msgstr ""
+msgstr "Messatge : %s"
 
 msgid "ID: "
 msgstr ""
@@ -8030,7 +7874,7 @@
 msgstr ""
 
 msgid "QQ Qun"
-msgstr ""
+msgstr "QQ Qun"
 
 msgid "Please enter Qun number"
 msgstr ""
@@ -8054,28 +7898,23 @@
 msgstr ""
 
 #. XXX: Should this be "Topic"?
-#, fuzzy
 msgid "Room Title"
-msgstr "Títol"
-
-#, fuzzy
+msgstr ""
+
 msgid "Notice"
-msgstr "Nòta"
-
-#, fuzzy
+msgstr ""
+
 msgid "Detail"
-msgstr "Defaut"
+msgstr ""
 
 msgid "Creator"
 msgstr "Creator"
 
-#, fuzzy
 msgid "About me"
-msgstr "A prepaus de %s"
-
-#, fuzzy
+msgstr "A prepaus de ieu"
+
 msgid "Category"
-msgstr "Creator"
+msgstr "Categoria"
 
 msgid "The Qun does not allow others to join"
 msgstr ""
@@ -8086,9 +7925,9 @@
 msgid "Input request here"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Successfully joined Qun %s (%u)"
-msgstr "Entresenhas sus l'utilizaire"
+msgstr ""
 
 msgid "Successfully joined Qun"
 msgstr ""
@@ -8100,16 +7939,14 @@
 msgid "QQ Qun Operation"
 msgstr ""
 
-#, fuzzy
 msgid "Failed:"
-msgstr "Error"
+msgstr ""
 
 msgid "Join Qun, Unknown Reply"
 msgstr ""
 
-#, fuzzy
 msgid "Quit Qun"
-msgstr "Quitar"
+msgstr ""
 
 msgid ""
 "Note, if you are the creator, \n"
@@ -8119,13 +7956,11 @@
 msgid "Sorry, you are not our style"
 msgstr ""
 
-#, fuzzy
 msgid "Successfully changed Qun members"
-msgstr "Entresenhas sus l'utilizaire"
-
-#, fuzzy
+msgstr ""
+
 msgid "Successfully changed Qun information"
-msgstr "Entresenhas sus l'utilizaire"
+msgstr ""
 
 msgid "You have successfully created a Qun"
 msgstr ""
@@ -8152,13 +7987,13 @@
 msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "<b>Removed buddy %u.</b>"
-msgstr "Suprimir un contacte"
-
-#, fuzzy, c-format
+msgstr ""
+
+#, c-format
 msgid "<b>New buddy %u joined.</b>"
-msgstr "Suprimir un contacte"
+msgstr ""
 
 #, c-format
 msgid "Unknown-%d"
@@ -8168,7 +8003,7 @@
 msgstr "Nivèl"
 
 msgid " VIP"
-msgstr ""
+msgstr " VIP"
 
 msgid " TCP"
 msgstr ""
@@ -8180,9 +8015,8 @@
 msgstr ""
 
 msgid " Video"
-msgstr ""
-
-#, fuzzy
+msgstr " Vidèo"
+
 msgid " Zone"
 msgstr "Pas cap"
 
@@ -8193,11 +8027,10 @@
 msgstr ""
 
 msgid "Invalid name"
-msgstr "L'expression es pas valida"
-
-#, fuzzy
+msgstr ""
+
 msgid "Select icon..."
-msgstr "Seleccionar una poliça"
+msgstr ""
 
 #, c-format
 msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
@@ -8253,7 +8086,7 @@
 
 #, c-format
 msgid "<b>IP</b>: %s<br>\n"
-msgstr ""
+msgstr "<b>IP</b> : %s<br>\n"
 
 msgid "Login Information"
 msgstr ""
@@ -8282,31 +8115,27 @@
 msgid "<i>Feel free to join us!</i> :)"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "About OpenQ %s"
-msgstr "A prepaus de %s"
-
-#, fuzzy
+msgstr "A prepaus d'OpenQ %s"
+
 msgid "Change Icon"
-msgstr "Modificar lo mot de pas"
+msgstr ""
 
 msgid "Change Password"
 msgstr "Modificar lo mot de pas"
 
-#, fuzzy
 msgid "Account Information"
-msgstr "Entresenhas"
+msgstr "Entresenhas sul compte"
 
 msgid "Update all QQ Quns"
 msgstr ""
 
-#, fuzzy
 msgid "About OpenQ"
-msgstr "A prepaus de %s"
-
-#, fuzzy
+msgstr "A prepaus d'OpenQ"
+
 msgid "Modify Buddy Memo"
-msgstr "Adreça personala"
+msgstr ""
 
 #. *< type
 #. *< ui_requirement
@@ -8318,34 +8147,29 @@
 #. *< version
 #. *  summary
 #. *  description
-#, fuzzy
 msgid "QQ Protocol Plugin"
-msgstr "Protocòl"
-
-#, fuzzy
+msgstr ""
+
 msgid "Auto"
-msgstr "Autor"
-
-#, fuzzy
+msgstr "Auto"
+
 msgid "Select Server"
-msgstr "Seleccionar un utilizaire"
-
-msgid "QQ2005"
-msgstr ""
-
-msgid "QQ2007"
 msgstr ""
 
 msgid "QQ2008"
-msgstr ""
-
-#, fuzzy
+msgstr "QQ2008"
+
+msgid "QQ2007"
+msgstr "QQ2007"
+
+msgid "QQ2005"
+msgstr "QQ2005"
+
 msgid "Connect by TCP"
-msgstr "Se connectar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Show server notice"
-msgstr "Entresenhas sul servidor"
+msgstr ""
 
 msgid "Show server news"
 msgstr ""
@@ -8356,9 +8180,8 @@
 msgid "Keep alive interval (seconds)"
 msgstr ""
 
-#, fuzzy
 msgid "Update interval (seconds)"
-msgstr "Entresenhas sus l'utilizaire"
+msgstr ""
 
 msgid "Unable to decrypt server reply"
 msgstr ""
@@ -8367,9 +8190,9 @@
 msgid "Failed requesting token, 0x%02X"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Invalid token len, %d"
-msgstr "L'expression es pas valida"
+msgstr ""
 
 #. extend redirect used in QQ2006
 msgid "Redirect_EX is not currently supported"
@@ -8378,9 +8201,8 @@
 #. need activation
 #. need activation
 #. need activation
-#, fuzzy
 msgid "Activation required"
-msgstr "L'autentificacion a abocat"
+msgstr "L'activacion a abocat"
 
 #, c-format
 msgid "Unknown reply code when logging in (0x%02X)"
@@ -8395,13 +8217,11 @@
 msgid "Failed captcha verification"
 msgstr ""
 
-#, fuzzy
 msgid "Captcha Image"
-msgstr "Enregistrar l'imatge"
-
-#, fuzzy
+msgstr ""
+
 msgid "Enter code"
-msgstr "Picatz lo mot de pas"
+msgstr ""
 
 msgid "QQ Captcha Verification"
 msgstr ""
@@ -8422,9 +8242,8 @@
 msgid "Socket error"
 msgstr ""
 
-#, fuzzy
 msgid "Getting server"
-msgstr "Connectat"
+msgstr ""
 
 msgid "Requesting token"
 msgstr ""
@@ -8432,33 +8251,30 @@
 msgid "Unable to resolve hostname"
 msgstr ""
 
-#, fuzzy
 msgid "Invalid server or port"
-msgstr "L'expression es pas valida"
-
-#, fuzzy
+msgstr ""
+
 msgid "Connecting to server"
-msgstr "Connectat"
-
-#, fuzzy
+msgstr "Connexion al servidor"
+
 msgid "QQ Error"
-msgstr "Error"
-
-#, fuzzy, c-format
+msgstr "Error QQ"
+
+#, c-format
 msgid ""
 "Server News:\n"
 "%s\n"
 "%s\n"
 "%s"
-msgstr "Servidor"
-
-#, fuzzy, c-format
+msgstr ""
+
+#, c-format
 msgid "%s:%s"
-msgstr "%s (%s)"
-
-#, fuzzy, c-format
+msgstr "%s:%s"
+
+#, c-format
 msgid "From %s:"
-msgstr "De"
+msgstr "De %s :"
 
 #, c-format
 msgid ""
@@ -8466,9 +8282,8 @@
 "%s"
 msgstr ""
 
-#, fuzzy
 msgid "Unknown SERVER CMD"
-msgstr "Rason desconeguda"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -8476,20 +8291,17 @@
 "Room %u, reply 0x%02X"
 msgstr ""
 
-#, fuzzy
 msgid "QQ Qun Command"
-msgstr "Comanda"
+msgstr ""
 
 msgid "Unable to decrypt login reply"
 msgstr ""
 
-#, fuzzy
 msgid "Unknown LOGIN CMD"
-msgstr "Rason desconeguda"
-
-#, fuzzy
+msgstr ""
+
 msgid "Unknown CLIENT CMD"
-msgstr "Rason desconeguda"
+msgstr ""
 
 #, c-format
 msgid "%d has declined the file %s"
@@ -8674,7 +8486,7 @@
 msgstr ""
 
 msgid "Select User"
-msgstr "Seleccionar un utilizaire"
+msgstr "Causir l'utilizaire"
 
 msgid "Unable to add user: user not found"
 msgstr ""
@@ -9209,7 +9021,7 @@
 msgstr ""
 
 msgid "Personal Information"
-msgstr "Entresenhas personalas"
+msgstr ""
 
 msgid "Birth Day"
 msgstr ""
@@ -9308,7 +9120,7 @@
 msgstr ""
 
 msgid "Ping"
-msgstr "Ajuston"
+msgstr "Ping"
 
 msgid "Ping failed"
 msgstr ""
@@ -9367,9 +9179,8 @@
 msgid "Disconnected by server"
 msgstr ""
 
-#, fuzzy
 msgid "Error connecting to SILC Server"
-msgstr "Connectat"
+msgstr ""
 
 msgid "Key Exchange failed"
 msgstr ""
@@ -9417,7 +9228,7 @@
 msgstr "SMS"
 
 msgid "MMS"
-msgstr ""
+msgstr "MMS"
 
 msgid "Video conferencing"
 msgstr ""
@@ -9642,7 +9453,7 @@
 msgstr ""
 
 msgid "HMAC"
-msgstr ""
+msgstr "HMAC"
 
 msgid "Use Perfect Forward Secrecy"
 msgstr ""
@@ -9693,7 +9504,7 @@
 
 #, c-format
 msgid "Country: \t%s\n"
-msgstr ""
+msgstr "Païs : \t%s\n"
 
 #, c-format
 msgid "Algorithm: \t%s\n"
@@ -9705,7 +9516,7 @@
 
 #, c-format
 msgid "Version: \t%s\n"
-msgstr ""
+msgstr "Version : \t%s\n"
 
 #, c-format
 msgid ""
@@ -9810,9 +9621,8 @@
 msgid "Unable to create connection"
 msgstr ""
 
-#, fuzzy
 msgid "Unknown server response"
-msgstr "Rason desconeguda"
+msgstr ""
 
 msgid "Unable to create listen socket"
 msgstr ""
@@ -9820,9 +9630,8 @@
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr ""
 
-#, fuzzy
 msgid "SIP connect server not specified"
-msgstr "Entresenhas sul servidor"
+msgstr ""
 
 #. *< type
 #. *< ui_requirement
@@ -9879,9 +9688,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#, fuzzy
 msgid "Yahoo! Protocol Plugin"
-msgstr "Protocòl"
+msgstr ""
 
 msgid "Pager port"
 msgstr ""
@@ -9917,9 +9725,8 @@
 #. *< version
 #. *  summary
 #. *  description
-#, fuzzy
 msgid "Yahoo! JAPAN Protocol Plugin"
-msgstr "Protocòl"
+msgstr ""
 
 #, c-format
 msgid "%s has sent you a webcam invite, which is not yet supported."
@@ -9971,9 +9778,8 @@
 msgstr ""
 
 #. username or password missing
-#, fuzzy
 msgid "Username or password missing"
-msgstr "Picatz lo mot de pas"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -9994,9 +9800,8 @@
 msgid "Ignore buddy?"
 msgstr ""
 
-#, fuzzy
 msgid "Invalid username or password"
-msgstr "L'expression es pas valida"
+msgstr ""
 
 msgid ""
 "Your account has been locked due to too many failed login attempts.  Please "
@@ -10030,9 +9835,9 @@
 msgid "Received unexpected HTTP response from server"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "Lost connection with %s: %s"
-msgstr "Connectat"
+msgstr ""
 
 #, c-format
 msgid "Unable to establish a connection with %s: %s"
@@ -10238,9 +10043,8 @@
 msgid "User Rooms"
 msgstr ""
 
-#, fuzzy
 msgid "Connection problem with the YCHT server"
-msgstr "Connectat"
+msgstr ""
 
 msgid ""
 "(There was an error converting this message.\t Check the 'Encoding' option "
@@ -10259,7 +10063,7 @@
 msgstr ""
 
 msgid "Anyone"
-msgstr "Qual que siá"
+msgstr ""
 
 msgid "_Class:"
 msgstr ""
@@ -10389,7 +10193,7 @@
 #. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
 #.
 msgid "_Yes"
-msgstr "_Òc"
+msgstr "Ò_c"
 
 msgid "_No"
 msgstr "_Non"
@@ -10431,17 +10235,15 @@
 msgstr ""
 
 #. Shortcut
-#, fuzzy
 msgid "Shortcut"
-msgstr "Ordenar"
+msgstr "Acorchi"
 
 msgid "The text-shortcut for the smiley"
 msgstr ""
 
 #. Stored Image
-#, fuzzy
 msgid "Stored Image"
-msgstr "Enregistrar l'imatge"
+msgstr ""
 
 msgid "Stored Image. (that'll have to do for now)"
 msgstr ""
@@ -10506,7 +10308,7 @@
 #.
 #, c-format
 msgid "%x %X"
-msgstr ""
+msgstr "%x %X"
 
 msgid "Calculating..."
 msgstr "A calcular..."
@@ -10518,37 +10320,37 @@
 msgid "%d second"
 msgid_plural "%d seconds"
 msgstr[0] "%d segonda"
-msgstr[1] "%d secondes"
+msgstr[1] "%d segondas"
 
 #, c-format
 msgid "%d day"
 msgid_plural "%d days"
 msgstr[0] "%d jorn"
-msgstr[1] "%d jours"
+msgstr[1] "%d jorns"
 
 #, c-format
 msgid "%s, %d hour"
 msgid_plural "%s, %d hours"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%s, %d ora"
+msgstr[1] "%s, %d oras"
 
 #, c-format
 msgid "%d hour"
 msgid_plural "%d hours"
 msgstr[0] "%d ora"
-msgstr[1] "%d heures"
+msgstr[1] "%d oras"
 
 #, c-format
 msgid "%s, %d minute"
 msgid_plural "%s, %d minutes"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%s, %d minuta"
+msgstr[1] "%s, %d minutas"
 
 #, c-format
 msgid "%d minute"
 msgid_plural "%d minutes"
 msgstr[0] "%d minuta"
-msgstr[1] "%d minutes"
+msgstr[1] "%d minutas"
 
 #, c-format
 msgid "Could not open %s: Redirected too many times"
@@ -10582,11 +10384,11 @@
 
 #, c-format
 msgid " - %s"
-msgstr ""
+msgstr " - %s"
 
 #, c-format
 msgid " (%s)"
-msgstr ""
+msgstr " (%s)"
 
 #. 10053
 msgid "Connection interrupted by other software on your computer."
@@ -10598,11 +10400,11 @@
 
 #. 10060
 msgid "Connection timed out."
-msgstr "Connectat"
+msgstr ""
 
 #. 10061
 msgid "Connection refused."
-msgstr "Connectat"
+msgstr ""
 
 #. 10048
 msgid "Address already in use."
@@ -10636,7 +10438,7 @@
 msgstr ""
 
 msgid "_Username:"
-msgstr "_Nom d'utilizaire :"
+msgstr "Nom d'_utilizaire :"
 
 msgid "Remember pass_word"
 msgstr ""
@@ -10655,9 +10457,8 @@
 msgid "Use this buddy _icon for this account:"
 msgstr ""
 
-#, fuzzy
 msgid "Ad_vanced"
-msgstr "_Avançat"
+msgstr "A_vançat"
 
 msgid "Use GNOME Proxy Settings"
 msgstr ""
@@ -10672,10 +10473,10 @@
 msgstr "HTTP"
 
 msgid "SOCKS 4"
-msgstr ""
+msgstr "SOCKS 4"
 
 msgid "SOCKS 5"
-msgstr ""
+msgstr "SOCKS 5"
 
 msgid "Use Environmental Settings"
 msgstr ""
@@ -10696,7 +10497,7 @@
 msgstr ""
 
 msgid "_Host:"
-msgstr "_Òste :"
+msgstr "Ò_ste :"
 
 msgid "_Port:"
 msgstr "_Pòrt :"
@@ -10719,9 +10520,8 @@
 msgid "Create _this new account on the server"
 msgstr ""
 
-#, fuzzy
 msgid "P_roxy"
-msgstr "Proxy"
+msgstr "P_roxy"
 
 msgid "Enabled"
 msgstr "Activat"
@@ -10753,9 +10553,8 @@
 msgid "The background color for the buddy list"
 msgstr ""
 
-#, fuzzy
 msgid "Layout"
-msgstr "Laossian"
+msgstr ""
 
 msgid "The layout of icons, name, and status of the buddy list"
 msgstr ""
@@ -10763,9 +10562,8 @@
 #. Group
 #. Note to translators: These two strings refer to the background color
 #. of a buddy list group when in its expanded state
-#, fuzzy
 msgid "Expanded Background Color"
-msgstr "Color de fons"
+msgstr ""
 
 msgid "The background color of an expanded group"
 msgstr ""
@@ -10780,9 +10578,8 @@
 
 #. Note to translators: These two strings refer to the background color
 #. of a buddy list group when in its collapsed state
-#, fuzzy
 msgid "Collapsed Background Color"
-msgstr "Color de fons"
+msgstr "Col"
 
 msgid "The background color of a collapsed group"
 msgstr ""
@@ -10798,63 +10595,56 @@
 #. Buddy
 #. Note to translators: These two strings refer to the background color
 #. of a buddy list contact or chat room
-#, fuzzy
 msgid "Contact/Chat Background Color"
-msgstr "Color de fons"
+msgstr ""
 
 msgid "The background color of a contact or chat"
 msgstr ""
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list contact when in its expanded state
-#, fuzzy
 msgid "Contact Text"
-msgstr "Ordenar"
+msgstr ""
 
 msgid "The text information for when a contact is expanded"
 msgstr ""
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when it is online
-#, fuzzy
 msgid "Online Text"
-msgstr "En linha"
+msgstr ""
 
 msgid "The text information for when a buddy is online"
 msgstr ""
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when it is away
-#, fuzzy
 msgid "Away Text"
-msgstr "Absent(a)"
+msgstr "Tèxte dels contactes absents"
 
 msgid "The text information for when a buddy is away"
 msgstr ""
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when it is offline
-#, fuzzy
 msgid "Offline Text"
-msgstr "Desconnectat"
+msgstr ""
 
 msgid "The text information for when a buddy is offline"
 msgstr ""
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when it is idle
-#, fuzzy
 msgid "Idle Text"
-msgstr "Inactiu"
+msgstr ""
 
 msgid "The text information for when a buddy is idle"
 msgstr ""
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when they have sent you a new message
-#, fuzzy
 msgid "Message Text"
-msgstr "Messatge"
+msgstr ""
 
 msgid "The text information for when a buddy has an unread message"
 msgstr ""
@@ -10888,9 +10678,8 @@
 msgid "Please update the necessary fields."
 msgstr ""
 
-#, fuzzy
 msgid "A_ccount"
-msgstr "_Compte :"
+msgstr "_Compte"
 
 msgid ""
 "Please enter the appropriate information about the chat you would like to "
@@ -10901,10 +10690,10 @@
 msgstr ""
 
 msgid "_Block"
-msgstr ""
+msgstr "_Blocar"
 
 msgid "Un_block"
-msgstr ""
+msgstr "Des_blocar"
 
 msgid "Move to"
 msgstr ""
@@ -10925,7 +10714,7 @@
 msgstr ""
 
 msgid "_Send File..."
-msgstr "_Enviar lo fichièr..."
+msgstr "_Mandar un fichièr..."
 
 msgid "Add Buddy _Pounce..."
 msgstr ""
@@ -10940,7 +10729,7 @@
 msgstr ""
 
 msgid "_Alias..."
-msgstr ""
+msgstr "_Aliàs..."
 
 msgid "_Remove"
 msgstr "_Suprimir"
@@ -10998,9 +10787,8 @@
 msgid "Please select your mood from the list"
 msgstr ""
 
-#, fuzzy
 msgid "Message (optional)"
-msgstr "Messatge"
+msgstr ""
 
 msgid "Edit User Mood"
 msgstr ""
@@ -11009,7 +10797,7 @@
 #. gtk_blist_key_press_cb to "Get User Info" on the selected buddy.
 #. Buddies menu
 msgid "/_Buddies"
-msgstr ""
+msgstr "/_Contactes"
 
 msgid "/Buddies/New Instant _Message..."
 msgstr ""
@@ -11058,15 +10846,14 @@
 
 #. Accounts menu
 msgid "/_Accounts"
-msgstr "/_Comptse"
-
-#, fuzzy
+msgstr "/_Comptes"
+
 msgid "/Accounts/Manage Accounts"
-msgstr "/Comptes/Gerir"
+msgstr "/Comptes/Gerir los comptes"
 
 #. Tools
 msgid "/_Tools"
-msgstr ""
+msgstr "/_Espleches"
 
 msgid "/Tools/Buddy _Pounces"
 msgstr ""
@@ -11108,20 +10895,17 @@
 msgid "/Help/Online _Help"
 msgstr ""
 
-#, fuzzy
 msgid "/Help/_Build Information"
-msgstr "Entresenhas"
+msgstr ""
 
 msgid "/Help/_Debug Window"
 msgstr ""
 
-#, fuzzy
 msgid "/Help/De_veloper Information"
-msgstr "Entresenhas sul servidor"
-
-#, fuzzy
+msgstr ""
+
 msgid "/Help/_Translator Information"
-msgstr "Entresenhas personalas"
+msgstr ""
 
 msgid "/Help/_About"
 msgstr "/Ajuda/_A prepaus"
@@ -11251,7 +11035,7 @@
 msgstr "<b>Mot de pas :</b>"
 
 msgid "_Login"
-msgstr "Se _connectar"
+msgstr "_Connexion"
 
 msgid "/Accounts"
 msgstr "/Comptes"
@@ -11285,11 +11069,10 @@
 msgstr ""
 
 msgid "Add a buddy.\n"
-msgstr ""
-
-#, fuzzy
+msgstr "Apondre un contacte.\n"
+
 msgid "Buddy's _username:"
-msgstr "_Nom d'utilizaire :"
+msgstr ""
 
 msgid "(Optional) A_lias:"
 msgstr ""
@@ -11311,7 +11094,7 @@
 msgstr ""
 
 msgid "A_lias:"
-msgstr ""
+msgstr "A_liàs :"
 
 msgid "_Group:"
 msgstr "_Grop :"
@@ -11337,9 +11120,8 @@
 msgid "_Edit Account"
 msgstr ""
 
-#, fuzzy
 msgid "Set _Mood..."
-msgstr "Modificar lo mot de pas"
+msgstr ""
 
 msgid "No actions available"
 msgstr ""
@@ -11348,7 +11130,7 @@
 msgstr "_Desactivar"
 
 msgid "/Tools"
-msgstr ""
+msgstr "/Espleches"
 
 msgid "/Buddies/Sort Buddies"
 msgstr ""
@@ -11395,9 +11177,8 @@
 msgid "Get Away Message"
 msgstr ""
 
-#, fuzzy
 msgid "Last Said"
-msgstr "Nom"
+msgstr ""
 
 msgid "Unable to save icon file to disk."
 msgstr ""
@@ -11425,7 +11206,7 @@
 
 #. Conversation menu
 msgid "/_Conversation"
-msgstr ""
+msgstr "/_Charradissa"
 
 msgid "/Conversation/New Instant _Message..."
 msgstr ""
@@ -11460,9 +11241,8 @@
 msgid "/Conversation/Se_nd File..."
 msgstr ""
 
-#, fuzzy
 msgid "/Conversation/Get _Attention"
-msgstr "Connectat"
+msgstr ""
 
 msgid "/Conversation/Add Buddy _Pounce..."
 msgstr ""
@@ -11502,7 +11282,7 @@
 
 #. Options
 msgid "/_Options"
-msgstr ""
+msgstr "/_Opcions"
 
 msgid "/Options/Enable _Logging"
 msgstr ""
@@ -11520,7 +11300,7 @@
 msgstr ""
 
 msgid "/Options"
-msgstr ""
+msgstr "/Opcions"
 
 #. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
 #. * the 'Conversation' menu pops up.
@@ -11528,7 +11308,7 @@
 #. * the 'Conversation' menu pops up because the entries can change after the
 #. * conversation is created.
 msgid "/Conversation"
-msgstr ""
+msgstr "/Charradissa"
 
 msgid "/Conversation/View Log"
 msgstr ""
@@ -11545,9 +11325,8 @@
 msgid "/Conversation/Send File..."
 msgstr ""
 
-#, fuzzy
 msgid "/Conversation/Get Attention"
-msgstr "Connectat"
+msgstr ""
 
 msgid "/Conversation/Add Buddy Pounce..."
 msgstr ""
@@ -11605,19 +11384,17 @@
 msgstr ""
 
 msgid "_Send"
-msgstr "_Enviar"
+msgstr "_Mandar"
 
 #. Setup the label telling how many people are in the room.
 msgid "0 people in room"
 msgstr "0 persona dins la sala"
 
-#, fuzzy
 msgid "Close Find bar"
-msgstr "Tampar l'onglet"
-
-#, fuzzy
+msgstr ""
+
 msgid "Find:"
-msgstr "Recercar"
+msgstr "Recercar :"
 
 #, c-format
 msgid "%d person in room"
@@ -11650,7 +11427,7 @@
 msgstr ""
 
 msgid "Close all tabs"
-msgstr ""
+msgstr "Tampar totes los onglets"
 
 msgid "Detach this tab"
 msgstr ""
@@ -11659,7 +11436,7 @@
 msgstr "Tampar l'onglet"
 
 msgid "Close conversation"
-msgstr ""
+msgstr "Tampar la charradissa"
 
 msgid "Last created window"
 msgstr ""
@@ -11671,10 +11448,10 @@
 msgstr ""
 
 msgid "By group"
-msgstr ""
+msgstr "Per grop"
 
 msgid "By account"
-msgstr ""
+msgstr "Per compte"
 
 msgid "Find"
 msgstr "Recercar"
@@ -11707,13 +11484,13 @@
 msgstr ""
 
 msgid "Level "
-msgstr ""
+msgstr "Nivèl "
 
 msgid "Select the debug filter level."
 msgstr ""
 
 msgid "All"
-msgstr "Totes"
+msgstr "Tot"
 
 msgid "Misc"
 msgstr ""
@@ -11722,17 +11499,13 @@
 msgstr "Alèrta"
 
 msgid "Error "
-msgstr ""
+msgstr "Error "
 
 msgid "Fatal Error"
 msgstr ""
 
-msgid "bug master"
-msgstr ""
-
-#, fuzzy
 msgid "artist"
-msgstr "Artista"
+msgstr "artista"
 
 #. feel free to not translate this
 msgid "Ka-Hing Cheung"
@@ -11764,7 +11537,7 @@
 msgstr ""
 
 msgid "XMPP"
-msgstr ""
+msgstr "XMPP"
 
 msgid "original author"
 msgstr ""
@@ -11781,9 +11554,8 @@
 msgid "Arabic"
 msgstr "Arab"
 
-#, fuzzy
 msgid "Assamese"
-msgstr "Jòcs"
+msgstr ""
 
 msgid "Belarusian Latin"
 msgstr "Bielorus latin"
@@ -11794,9 +11566,8 @@
 msgid "Bengali"
 msgstr "Bengalí"
 
-#, fuzzy
 msgid "Bengali-India"
-msgstr "Bengalí"
+msgstr "Bengalí indian"
 
 msgid "Bosnian"
 msgstr "Bosniac"
@@ -11852,9 +11623,8 @@
 msgid "French"
 msgstr "Francés"
 
-#, fuzzy
 msgid "Irish"
-msgstr "Curd"
+msgstr "Irlandés"
 
 msgid "Galician"
 msgstr "Galician"
@@ -11874,9 +11644,8 @@
 msgid "Hungarian"
 msgstr "Ongrés"
 
-#, fuzzy
 msgid "Armenian"
-msgstr "Romanian"
+msgstr ""
 
 msgid "Indonesian"
 msgstr "Indonesian"
@@ -11893,9 +11662,8 @@
 msgid "Ubuntu Georgian Translators"
 msgstr ""
 
-#, fuzzy
 msgid "Khmer"
-msgstr "Autre"
+msgstr ""
 
 msgid "Kannada"
 msgstr "Kannadà"
@@ -11915,24 +11683,23 @@
 msgid "Maithili"
 msgstr ""
 
+msgid "Meadow Mari"
+msgstr ""
+
 msgid "Macedonian"
 msgstr "Macedonian"
 
-#, fuzzy
 msgid "Malayalam"
-msgstr "Òme"
-
-#, fuzzy
+msgstr ""
+
 msgid "Mongolian"
-msgstr "Macedonian"
-
-#, fuzzy
+msgstr ""
+
 msgid "Marathi"
-msgstr "Gujarati"
-
-#, fuzzy
+msgstr ""
+
 msgid "Malay"
-msgstr "Òme"
+msgstr ""
 
 msgid "Bokmål Norwegian"
 msgstr ""
@@ -11947,11 +11714,10 @@
 msgstr "Nòrvegian (Nynorsk)"
 
 msgid "Occitan"
-msgstr ""
-
-#, fuzzy
+msgstr "Occitan"
+
 msgid "Oriya"
-msgstr "Opcions"
+msgstr ""
 
 msgid "Punjabi"
 msgstr "Punjabi"
@@ -12007,7 +11773,6 @@
 msgid "Turkish"
 msgstr "Turc"
 
-#, fuzzy
 msgid "Ukranian"
 msgstr "Ukrainien"
 
@@ -12068,14 +11833,13 @@
 msgid "About %s"
 msgstr "A prepaus de %s"
 
-#, fuzzy
 msgid "Build Information"
-msgstr "Entresenhas"
+msgstr ""
 
 #. End of not to be translated section
-#, fuzzy, c-format
+#, c-format
 msgid "%s Build Information"
-msgstr "Entresenhas sus l'utilizaire"
+msgstr ""
 
 msgid "Current Developers"
 msgstr ""
@@ -12089,9 +11853,9 @@
 msgid "Retired Crazy Patch Writers"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Developer Information"
-msgstr "Entresenhas sul servidor"
+msgstr ""
 
 msgid "Current Translators"
 msgstr ""
@@ -12099,9 +11863,9 @@
 msgid "Past Translators"
 msgstr ""
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Translator Information"
-msgstr "Entresenhas"
+msgstr ""
 
 msgid "_Name"
 msgstr "_Nom"
@@ -12205,44 +11969,35 @@
 msgid "Right-click for more unread messages...\n"
 msgstr ""
 
-#, fuzzy
 msgid "_Change Status"
-msgstr "Modificar lo mot de pas"
-
-#, fuzzy
+msgstr ""
+
 msgid "Show Buddy _List"
-msgstr "Tièra de contactes"
-
-#, fuzzy
+msgstr ""
+
 msgid "_Unread Messages"
-msgstr "Messatges pas legits"
-
-#, fuzzy
+msgstr "Messatges _pas legits"
+
 msgid "New _Message..."
-msgstr "Enviar un messatge"
-
-#, fuzzy
+msgstr "_Messatge novèl..."
+
 msgid "_Accounts"
-msgstr "/_Comptse"
-
-#, fuzzy
+msgstr "/_Comptes"
+
 msgid "Plu_gins"
-msgstr "Ajustons"
-
-#, fuzzy
+msgstr "A_justons"
+
 msgid "Pr_eferences"
-msgstr "Preferéncias"
-
-#, fuzzy
+msgstr "Pr_eferéncias"
+
 msgid "Mute _Sounds"
-msgstr "Sons"
+msgstr ""
 
 msgid "_Blink on New Message"
 msgstr ""
 
-#, fuzzy
 msgid "_Quit"
-msgstr "Quitar"
+msgstr "_Quitar"
 
 msgid "Not started"
 msgstr ""
@@ -12403,7 +12158,7 @@
 msgstr ""
 
 msgid "Select Font"
-msgstr "Seleccionar una poliça"
+msgstr ""
 
 msgid "Select Text Color"
 msgstr ""
@@ -12412,7 +12167,7 @@
 msgstr ""
 
 msgid "_URL"
-msgstr ""
+msgstr "_URL"
 
 msgid "_Description"
 msgstr "_Descripcion"
@@ -12495,15 +12250,14 @@
 msgid "Insert Smiley"
 msgstr ""
 
-#, fuzzy
 msgid "Send Attention"
-msgstr "Attention !"
+msgstr ""
 
 msgid "<b>_Bold</b>"
 msgstr ""
 
 msgid "<i>_Italic</i>"
-msgstr ""
+msgstr "<i>_Italic</i>"
 
 msgid "<u>_Underline</u>"
 msgstr ""
@@ -12536,7 +12290,7 @@
 msgstr "_Imatge"
 
 msgid "_Link"
-msgstr ""
+msgstr "_Ligam"
 
 msgid "_Horizontal rule"
 msgstr ""
@@ -12544,9 +12298,8 @@
 msgid "_Smile!"
 msgstr ""
 
-#, fuzzy
 msgid "_Attention!"
-msgstr "Attention !"
+msgstr "_Atencion !"
 
 msgid "Log Deletion Failed"
 msgstr ""
@@ -12622,7 +12375,7 @@
 msgstr ""
 
 msgid "NAME"
-msgstr ""
+msgstr "NOM"
 
 msgid ""
 "enable specified account(s) (optional argument NAME\n"
@@ -12703,12 +12456,11 @@
 "The 'Manual' browser command has been chosen, but no command has been set."
 msgstr ""
 
-#, fuzzy
 msgid "No message"
-msgstr "Messatge"
+msgstr ""
 
 msgid "Open All Messages"
-msgstr ""
+msgstr "Dobrir totes los messatges"
 
 msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
 msgstr ""
@@ -12754,9 +12506,8 @@
 msgid "<b>Web site:</b>"
 msgstr ""
 
-#, fuzzy
 msgid "<b>Filename:</b>"
-msgstr "Nom de fichièr :"
+msgstr "<b>Nom de fichièr :</b>"
 
 msgid "Configure Pl_ugin"
 msgstr ""
@@ -12765,11 +12516,10 @@
 msgstr ""
 
 msgid "Select a file"
-msgstr "Seleccionar un fichièr"
-
-#, fuzzy
+msgstr ""
+
 msgid "Modify Buddy Pounce"
-msgstr "Entresenhas"
+msgstr ""
 
 #. Create the "Pounce on Whom" frame.
 msgid "Pounce on Whom"
@@ -12818,7 +12568,7 @@
 msgstr ""
 
 msgid "Send a _message"
-msgstr ""
+msgstr "Mandar un _messatge"
 
 msgid "E_xecute a command"
 msgstr ""
@@ -12844,13 +12594,11 @@
 msgid "Pounce Target"
 msgstr ""
 
-#, fuzzy
 msgid "Started typing"
-msgstr "Comença a picar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Paused while typing"
-msgstr "L'utilizaire es a picar..."
+msgstr ""
 
 msgid "Signed on"
 msgstr ""
@@ -12861,23 +12609,20 @@
 msgid "Returned from being away"
 msgstr ""
 
-#, fuzzy
 msgid "Stopped typing"
 msgstr "S'arrèsta de picar"
 
 msgid "Signed off"
 msgstr ""
 
-#, fuzzy
 msgid "Became idle"
-msgstr "Enregistrar lo fichièr"
+msgstr ""
 
 msgid "Went away"
 msgstr ""
 
-#, fuzzy
 msgid "Sent a message"
-msgstr "Messatges enviats"
+msgstr ""
 
 msgid "Unknown.... Please report this!"
 msgstr ""
@@ -12891,9 +12636,8 @@
 msgid "The default Pidgin sound theme"
 msgstr ""
 
-#, fuzzy
 msgid "The default Pidgin buddy list theme"
-msgstr "Tièra de contactes"
+msgstr ""
 
 msgid "The default Pidgin status icon theme"
 msgstr ""
@@ -12907,9 +12651,8 @@
 msgid "Theme failed to copy."
 msgstr ""
 
-#, fuzzy
 msgid "Theme Selections"
-msgstr "Seleccionar una poliça"
+msgstr ""
 
 #. Instructions
 msgid ""
@@ -12918,20 +12661,17 @@
 "list."
 msgstr ""
 
-#, fuzzy
 msgid "Buddy List Theme:"
-msgstr "Tièra de contactes"
-
-#, fuzzy
+msgstr ""
+
 msgid "Status Icon Theme:"
-msgstr "Estatut"
+msgstr ""
 
 msgid "Sound Theme:"
 msgstr ""
 
-#, fuzzy
 msgid "Smiley Theme:"
-msgstr "Enregistrar l'imatge"
+msgstr ""
 
 msgid "Keyboard Shortcuts"
 msgstr ""
@@ -12949,9 +12689,8 @@
 msgid "On unread messages"
 msgstr ""
 
-#, fuzzy
 msgid "Conversation Window"
-msgstr "Connectat"
+msgstr ""
 
 msgid "_Hide new IM conversations:"
 msgstr ""
@@ -12976,10 +12715,10 @@
 msgstr ""
 
 msgid "Top"
-msgstr "Superior"
+msgstr "Naut"
 
 msgid "Bottom"
-msgstr "Inferior"
+msgstr "Bais"
 
 msgid "Left"
 msgstr "Esquèrra"
@@ -13046,17 +12785,15 @@
 msgid "Cannot start browser configuration program."
 msgstr ""
 
-#, fuzzy
 msgid "Disabled"
-msgstr "_Desactivar"
+msgstr "Desactivat"
 
 #, c-format
 msgid "Use _automatically detected IP address: %s"
 msgstr ""
 
-#, fuzzy
 msgid "ST_UN server:"
-msgstr "_Servidor :"
+msgstr "Servidor ST_UN :"
 
 msgid "<span style=\"italic\">Example: stunserver.org</span>"
 msgstr ""
@@ -13073,42 +12810,36 @@
 msgid "_Manually specify range of ports to listen on:"
 msgstr ""
 
-#, fuzzy
 msgid "_Start:"
-msgstr "Estat :"
-
-#, fuzzy
+msgstr ""
+
 msgid "_End:"
-msgstr "_Enviar"
+msgstr "_Fin :"
 
 #. TURN server
 msgid "Relay Server (TURN)"
 msgstr ""
 
-#, fuzzy
 msgid "_TURN server:"
-msgstr "_Servidor :"
-
-#, fuzzy
+msgstr "Servidor _TURN :"
+
 msgid "_UDP Port:"
-msgstr "_Pòrt :"
-
-#, fuzzy
+msgstr "Pòrt _UDP :"
+
 msgid "Use_rname:"
-msgstr "_Nom d'utilizaire :"
-
-#, fuzzy
+msgstr "Nom d'utilizai_re :"
+
 msgid "Pass_word:"
-msgstr "Mot de pas :"
+msgstr "Mot de _pas :"
 
 msgid "Seamonkey"
-msgstr ""
+msgstr "Seamonkey"
 
 msgid "Opera"
-msgstr "Opcions"
+msgstr "Opera"
 
 msgid "Netscape"
-msgstr ""
+msgstr "Netscape"
 
 msgid "Mozilla"
 msgstr "Mozilla"
@@ -13117,7 +12848,7 @@
 msgstr "Konqueror"
 
 msgid "Google Chrome"
-msgstr ""
+msgstr "Google Chrome"
 
 #. Do not move the line below.  Code below expects gnome-open to be in
 #. * this list immediately after xdg-open!
@@ -13163,7 +12894,7 @@
 msgstr ""
 
 msgid "_Browser:"
-msgstr ""
+msgstr "_Navigador :"
 
 msgid "_Open link in:"
 msgstr ""
@@ -13206,11 +12937,9 @@
 msgid "No proxy"
 msgstr ""
 
-#, fuzzy
 msgid "P_ort:"
 msgstr "_Pòrt :"
 
-#, fuzzy
 msgid "User_name:"
 msgstr "_Nom d'utilizaire :"
 
@@ -13274,24 +13003,20 @@
 msgid "Sounds when conversation has _focus"
 msgstr ""
 
-#, fuzzy
 msgid "_Enable sounds:"
-msgstr "Activat"
-
-#, fuzzy
+msgstr "A_ctivar los sons :"
+
 msgid "V_olume:"
-msgstr "Volum :"
+msgstr "V_olum :"
 
 msgid "Play"
 msgstr "Legir"
 
-#, fuzzy
 msgid "_Browse..."
-msgstr "Navegador"
-
-#, fuzzy
+msgstr ""
+
 msgid "_Reset"
-msgstr "Reinicializar"
+msgstr "_Reinicializar"
 
 msgid "_Report idle time:"
 msgstr ""
@@ -13325,14 +13050,13 @@
 msgstr "Interfaç"
 
 msgid "Browser"
-msgstr "Navegador"
+msgstr "Navigador"
 
 msgid "Status / Idle"
 msgstr ""
 
-#, fuzzy
 msgid "Themes"
-msgstr "Tèst"
+msgstr "Tèmas"
 
 msgid "Allow all users to contact me"
 msgstr ""
@@ -13344,7 +13068,7 @@
 msgstr ""
 
 msgid "Block all users"
-msgstr ""
+msgstr "Blocar totes los utilizaires"
 
 msgid "Block only the users below"
 msgstr ""
@@ -13383,7 +13107,7 @@
 msgstr ""
 
 msgid "Block User"
-msgstr ""
+msgstr "Blocar un utilizaire"
 
 msgid "Type a user to block."
 msgstr ""
@@ -13393,7 +13117,7 @@
 
 #, c-format
 msgid "Block %s?"
-msgstr ""
+msgstr "Blocar %s ?"
 
 #, c-format
 msgid "Are you sure you want to block %s?"
@@ -13473,29 +13197,24 @@
 msgid "Add Smiley"
 msgstr ""
 
-#, fuzzy
 msgid "_Image:"
-msgstr "_Imatge"
+msgstr "_Imatge :"
 
 #. Shortcut text
-#, fuzzy
 msgid "S_hortcut text:"
-msgstr "Ordenar"
-
-#, fuzzy
+msgstr ""
+
 msgid "Smiley"
-msgstr "Talha"
-
-#, fuzzy
+msgstr ""
+
 msgid "Shortcut Text"
-msgstr "Ordenar"
+msgstr ""
 
 msgid "Custom Smiley Manager"
 msgstr ""
 
-#, fuzzy
 msgid "Select Buddy Icon"
-msgstr "Seleccionar una poliça"
+msgstr ""
 
 msgid "Click to change your buddyicon for this account."
 msgstr ""
@@ -13516,7 +13235,7 @@
 msgstr ""
 
 msgid "Google Talk"
-msgstr ""
+msgstr "Google Talk"
 
 msgid "Facebook (XMPP)"
 msgstr ""
@@ -13601,9 +13320,8 @@
 msgid "Could not set icon"
 msgstr ""
 
-#, fuzzy
 msgid "_Open Link"
-msgstr "_Dobrir lo ligam dins lo navegaire"
+msgstr "D_obrir lo ligam"
 
 msgid "_Copy Link Location"
 msgstr "_Copiar l'emplaçament del ligam"
@@ -13611,9 +13329,8 @@
 msgid "_Copy Email Address"
 msgstr ""
 
-#, fuzzy
 msgid "_Open File"
-msgstr "_Enviar un fichièr"
+msgstr "D_obrir lo fichièr"
 
 msgid "Open _Containing Directory"
 msgstr ""
@@ -13621,19 +13338,17 @@
 msgid "Save File"
 msgstr "Enregistrar lo fichièr"
 
-#, fuzzy
 msgid "_Play Sound"
-msgstr "Legir un son"
-
-#, fuzzy
+msgstr "_Legir un son"
+
 msgid "_Save File"
-msgstr "Enregistrar lo fichièr"
+msgstr "Enregi_strar lo fichièr"
 
 msgid "Do you really want to clear?"
 msgstr ""
 
 msgid "Select color"
-msgstr "Seleccionar una color"
+msgstr ""
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
@@ -13641,7 +13356,7 @@
 msgstr "Pidgin"
 
 msgid "_Alias"
-msgstr ""
+msgstr "_Aliàs"
 
 msgid "Close _tabs"
 msgstr ""
@@ -13650,22 +13365,19 @@
 msgstr ""
 
 msgid "_Invite"
-msgstr ""
-
-#, fuzzy
+msgstr "Conv_idar"
+
 msgid "_Modify..."
-msgstr "_Modificar"
-
-#, fuzzy
+msgstr "_Modificar..."
+
 msgid "_Add..."
-msgstr "_Apondre"
+msgstr "_Apondre..."
 
 msgid "_Open Mail"
 msgstr ""
 
-#, fuzzy
 msgid "_Edit"
-msgstr "Edicion"
+msgstr "_Edicion"
 
 msgid "Pidgin Tooltip"
 msgstr ""
@@ -13679,9 +13391,8 @@
 msgid "none"
 msgstr "pas cap"
 
-#, fuzzy
 msgid "Small"
-msgstr "Corrièl"
+msgstr "Pichons"
 
 msgid "Smaller versions of the default smileys"
 msgstr ""
@@ -13793,7 +13504,7 @@
 msgstr ""
 
 msgid "Sent Messages"
-msgstr "Messatges enviats"
+msgstr "Messatges mandats"
 
 msgid "Received Messages"
 msgstr ""
@@ -13813,13 +13524,11 @@
 
 #. Note to translators: The string "Enter an XMPP Server" is asking the
 #. user to type the name of an XMPP server which will then be queried
-#, fuzzy
 msgid "Server name request"
 msgstr "Nom d'utilisateur envoyé"
 
-#, fuzzy
 msgid "Enter an XMPP Server"
-msgstr "Picatz lo mot de pas"
+msgstr ""
 
 msgid "Select an XMPP server to query"
 msgstr ""
@@ -13827,16 +13536,14 @@
 msgid "Find Services"
 msgstr ""
 
-#, fuzzy
 msgid "Add to Buddy List"
-msgstr "Tièra de contactes"
+msgstr "Apondre a la tièra de contactes"
 
 msgid "Gateway"
 msgstr ""
 
-#, fuzzy
 msgid "Directory"
-msgstr "Creator"
+msgstr ""
 
 msgid "PubSub Collection"
 msgstr ""
@@ -13844,19 +13551,19 @@
 msgid "PubSub Leaf"
 msgstr ""
 
-#, fuzzy
 msgid ""
 "\n"
 "<b>Description:</b> "
-msgstr "Descripcion"
+msgstr ""
+"\n"
+"<b>Descripcion :</b> "
 
 #. Create the window.
 msgid "Service Discovery"
 msgstr ""
 
-#, fuzzy
 msgid "_Browse"
-msgstr "Navegador"
+msgstr ""
 
 msgid "Server does not exist"
 msgstr ""
@@ -14034,13 +13741,13 @@
 
 #. Optional Information section
 msgid "Optional information:"
-msgstr "Entresenhas opcionalas :"
+msgstr ""
 
 msgid "First name:"
 msgstr "Pichon nom :"
 
 msgid "Last name:"
-msgstr "Nom :"
+msgstr "Nom d'ostal :"
 
 msgid "Email:"
 msgstr ""
@@ -14281,9 +13988,8 @@
 msgid "Conversation Entry"
 msgstr ""
 
-#, fuzzy
 msgid "Conversation History"
-msgstr "Connectat"
+msgstr ""
 
 msgid "Request Dialog"
 msgstr ""
@@ -14292,7 +13998,7 @@
 msgstr ""
 
 msgid "Select Color"
-msgstr "Seleccionar una color"
+msgstr ""
 
 #, c-format
 msgid "Select Interface Font"
@@ -14314,9 +14020,8 @@
 msgid "GTK+ Theme Control Settings"
 msgstr ""
 
-#, fuzzy
 msgid "Colors"
-msgstr "Tampar"
+msgstr "Colors"
 
 msgid "Fonts"
 msgstr "Poliças"
@@ -14358,9 +14063,8 @@
 msgid "New Version Available"
 msgstr ""
 
-#, fuzzy
 msgid "Later"
-msgstr "Data"
+msgstr "Pus tard"
 
 msgid "Download Now"
 msgstr ""
@@ -14399,9 +14103,8 @@
 
 #. *< name
 #. *< version
-#, fuzzy
 msgid "Conversation Window Send Button."
-msgstr "Connectat"
+msgstr ""
 
 #. *< summary
 msgid ""
@@ -14472,34 +14175,29 @@
 msgid "Icon for Chat"
 msgstr ""
 
-#, fuzzy
 msgid "Ignored"
-msgstr "Ignorar"
-
-#, fuzzy
+msgstr "Ignorat"
+
 msgid "Founder"
-msgstr "Expeditor"
+msgstr ""
 
 #. A user in a chat room who has special privileges.
-#, fuzzy
 msgid "Operator"
-msgstr "Opcions"
+msgstr "Operador"
 
 #. A half operator is someone who has a subset of the privileges
 #. that an operator has.
 msgid "Half Operator"
 msgstr ""
 
-#, fuzzy
 msgid "Authorization dialog"
-msgstr "Autorizar"
+msgstr ""
 
 msgid "Error dialog"
 msgstr ""
 
-#, fuzzy
 msgid "Information dialog"
-msgstr "Entresenhas"
+msgstr ""
 
 msgid "Mail dialog"
 msgstr ""
@@ -14507,38 +14205,32 @@
 msgid "Question dialog"
 msgstr ""
 
-#, fuzzy
 msgid "Warning dialog"
-msgstr "Alèrta"
+msgstr ""
 
 msgid "What kind of dialog is this?"
 msgstr ""
 
-#, fuzzy
 msgid "Status Icons"
-msgstr "Estatut"
+msgstr ""
 
 msgid "Chatroom Emblems"
 msgstr ""
 
-#, fuzzy
 msgid "Dialog Icons"
-msgstr "Modificar lo mot de pas"
+msgstr ""
 
 msgid "Pidgin Icon Theme Editor"
 msgstr ""
 
-#, fuzzy
 msgid "Contact"
-msgstr "Se connectar"
-
-#, fuzzy
+msgstr "Contacte"
+
 msgid "Pidgin Buddylist Theme Editor"
-msgstr "Tièra de contactes"
-
-#, fuzzy
+msgstr ""
+
 msgid "Edit Buddylist Theme"
-msgstr "Tièra de contactes"
+msgstr ""
 
 msgid "Edit Icon Theme"
 msgstr ""
@@ -14608,10 +14300,10 @@
 msgstr ""
 
 msgid "12 hour time format"
-msgstr ""
+msgstr "Format 12 oras"
 
 msgid "24 hour time format"
-msgstr ""
+msgstr "Format 24 oras"
 
 msgid "Show dates in..."
 msgstr ""
@@ -14649,35 +14341,29 @@
 "timestamp formats."
 msgstr ""
 
-#, fuzzy
 msgid "Audio"
-msgstr "Autor"
-
-#, fuzzy
+msgstr ""
+
 msgid "Video"
-msgstr "Votz"
+msgstr "Vidèo"
 
 msgid "Output"
 msgstr ""
 
-#, fuzzy
 msgid "_Plugin"
-msgstr "Ajustons"
-
-#, fuzzy
+msgstr "A_juston"
+
 msgid "_Device"
-msgstr "Periferic"
+msgstr "_Periferic"
 
 msgid "Input"
 msgstr ""
 
-#, fuzzy
 msgid "P_lugin"
-msgstr "Ajustons"
-
-#, fuzzy
+msgstr "A_juston"
+
 msgid "D_evice"
-msgstr "Periferic"
+msgstr "P_eriferic"
 
 #. *< magic
 #. *< major version
@@ -14800,7 +14486,7 @@
 msgstr ""
 
 msgid "Account: "
-msgstr ""
+msgstr "Compte : "
 
 msgid "<font color='#777777'>Not connected to XMPP</font>"
 msgstr ""
@@ -14876,13 +14562,12 @@
 msgstr ""
 
 #. Installer Subsection Text
-#, fuzzy
 msgid "Localizations"
-msgstr "Emplaçament"
+msgstr "Traduccions"
 
 #. "Next >" appears on a button on the License Page of the Installer
 msgid "Next >"
-msgstr ""
+msgstr "Seguent >"
 
 #. Installer Subsection Text
 msgid "Pidgin Instant Messaging Client (required)"
@@ -14895,9 +14580,8 @@
 msgstr ""
 
 #. Installer Subsection Text
-#, fuzzy
 msgid "Shortcuts"
-msgstr "Ordenar"
+msgstr "Acorchis"
 
 #. Installer Subsection Detailed Description
 msgid "Shortcuts for starting Pidgin"
@@ -14908,9 +14592,8 @@
 msgstr ""
 
 #. Installer Subsection Text
-#, fuzzy
 msgid "Start Menu"
-msgstr "Data de debuta"
+msgstr ""
 
 #. Installer Subsection Detailed Description
 msgid ""
--- a/po/pl.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/pl.po	Sat Feb 12 23:54:14 2011 +0000
@@ -13,8 +13,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin Polish translation\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:34-0500\n"
-"PO-Revision-Date: 2010-12-14 13:40+0100\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
+"PO-Revision-Date: 2011-01-25 11:04+0100\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <pl@li.org>\n"
 "Language: pl\n"
@@ -2372,8 +2372,12 @@
 "Ścieżka do zapisywania plików w\n"
 "(proszę podać pełną ścieżkę)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "Automatyczne odrzucanie od użytkowników spoza listy znajomych"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Kiedy żądanie przesłania pliku zostaje odebrane od\n"
+"użytkownika, który *nie* jest na liście znajomych:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2385,6 +2389,9 @@
 msgid "Create a new directory for each user"
 msgstr "Utworzenie nowego katalogu dla każdego użytkownika"
 
+msgid "Escape the filenames"
+msgstr "Sekwencja sterująca przed nazwami plików"
+
 msgid "Notes"
 msgstr "Notatki"
 
@@ -3852,7 +3859,10 @@
 "Serwer wymaga uwierzytelnienia w zwykłym tekście za pośrednictwem "
 "niezaszyfrowanego strumienia"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Nieprawidłowa odpowiedź z serwera"
 
@@ -6181,6 +6191,20 @@
 msgid "Retrieving User Information..."
 msgstr "Pobieranie informacji o użytkowniku..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "Użytkownik został wyrzucony z tego MultiMX."
+
+msgid "was kicked"
+msgstr "został wyrzucony"
+
+msgid "_Room Name:"
+msgstr "_Nazwa pokoju:"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "Zaproszono"
+
 msgid "Loading menu..."
 msgstr "Wczytywanie menu..."
 
@@ -6208,20 +6232,6 @@
 msgid "Enable splash-screen popup"
 msgstr "Włączenie wyskakującego ekranu powitalnego"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "Użytkownik został wyrzucony z tego MultiMX."
-
-msgid "was kicked"
-msgstr "został wyrzucony"
-
-msgid "_Room Name:"
-msgstr "_Nazwa pokoju:"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "Zaproszono"
-
 msgid "Last Online"
 msgstr "Ostatnio online"
 
@@ -7910,75 +7920,6 @@
 "niezbędne dla obrazów komunikatora. Ponieważ adres IP zostanie ujawniony, "
 "może się to wiązać z zagrożeniem prywatności."
 
-msgid "Invalid SNAC"
-msgstr "Nieprawidłowe SNAC"
-
-msgid "Server rate limit exceeded"
-msgstr "Przekroczono ograniczenie prędkości serwera"
-
-msgid "Client rate limit exceeded"
-msgstr "Przekroczono ograniczenie prędkości klienta"
-
-msgid "Service unavailable"
-msgstr "Usługa jest niedostępna"
-
-msgid "Service not defined"
-msgstr "Nie określono usługi"
-
-msgid "Obsolete SNAC"
-msgstr "Przestarzałe SNAC"
-
-msgid "Not supported by host"
-msgstr "Nieobsługiwane przez serwer"
-
-msgid "Not supported by client"
-msgstr "Nieobsługiwane przez klienta"
-
-msgid "Refused by client"
-msgstr "Odmowa klienta"
-
-msgid "Reply too big"
-msgstr "Odpowiedź jest za duża"
-
-msgid "Responses lost"
-msgstr "Utracono odpowiedzi"
-
-msgid "Request denied"
-msgstr "Odrzucono prośby"
-
-msgid "Busted SNAC payload"
-msgstr "Uszkodzone dane SNAC"
-
-msgid "Insufficient rights"
-msgstr "Niewystarczające uprawnienia"
-
-msgid "In local permit/deny"
-msgstr "W lokalnym pozwoleniu/odmowie"
-
-msgid "Warning level too high (sender)"
-msgstr "Poziom ostrzeżenia jest za wysoki (nadawca)"
-
-msgid "Warning level too high (receiver)"
-msgstr "Poziom ostrzeżenia jest za wysoki (odbiorca)"
-
-msgid "User temporarily unavailable"
-msgstr "Użytkownik jest tymczasowo niedostępny"
-
-msgid "No match"
-msgstr "Brak wyników"
-
-msgid "List overflow"
-msgstr "Lista jest pełna"
-
-msgid "Request ambiguous"
-msgstr "Niejednoznaczna prośba"
-
-msgid "Queue full"
-msgstr "Kolejka jest pełna"
-
-msgid "Not while on AOL"
-msgstr "Nie podczas używania AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "Ikona znajomego"
@@ -8097,6 +8038,75 @@
 msgid "Capabilities"
 msgstr "Możliwości"
 
+msgid "Invalid SNAC"
+msgstr "Nieprawidłowe SNAC"
+
+msgid "Server rate limit exceeded"
+msgstr "Przekroczono ograniczenie prędkości serwera"
+
+msgid "Client rate limit exceeded"
+msgstr "Przekroczono ograniczenie prędkości klienta"
+
+msgid "Service unavailable"
+msgstr "Usługa jest niedostępna"
+
+msgid "Service not defined"
+msgstr "Nie określono usługi"
+
+msgid "Obsolete SNAC"
+msgstr "Przestarzałe SNAC"
+
+msgid "Not supported by host"
+msgstr "Nieobsługiwane przez serwer"
+
+msgid "Not supported by client"
+msgstr "Nieobsługiwane przez klienta"
+
+msgid "Refused by client"
+msgstr "Odmowa klienta"
+
+msgid "Reply too big"
+msgstr "Odpowiedź jest za duża"
+
+msgid "Responses lost"
+msgstr "Utracono odpowiedzi"
+
+msgid "Request denied"
+msgstr "Odrzucono prośby"
+
+msgid "Busted SNAC payload"
+msgstr "Uszkodzone dane SNAC"
+
+msgid "Insufficient rights"
+msgstr "Niewystarczające uprawnienia"
+
+msgid "In local permit/deny"
+msgstr "W lokalnym pozwoleniu/odmowie"
+
+msgid "Warning level too high (sender)"
+msgstr "Poziom ostrzeżenia jest za wysoki (nadawca)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Poziom ostrzeżenia jest za wysoki (odbiorca)"
+
+msgid "User temporarily unavailable"
+msgstr "Użytkownik jest tymczasowo niedostępny"
+
+msgid "No match"
+msgstr "Brak wyników"
+
+msgid "List overflow"
+msgstr "Lista jest pełna"
+
+msgid "Request ambiguous"
+msgstr "Niejednoznaczna prośba"
+
+msgid "Queue full"
+msgstr "Kolejka jest pełna"
+
+msgid "Not while on AOL"
+msgstr "Nie podczas używania AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8692,14 +8702,14 @@
 msgid "Select Server"
 msgstr "Wybór serwera"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Połączenie przez TCP"
@@ -12252,9 +12262,6 @@
 msgid "Fatal Error"
 msgstr "Błąd krytyczny"
 
-msgid "bug master"
-msgstr "władca błędów"
-
 msgid "artist"
 msgstr "artysta"
 
@@ -12434,6 +12441,9 @@
 msgid "Maithili"
 msgstr "maithili"
 
+msgid "Meadow Mari"
+msgstr "maryjski"
+
 msgid "Macedonian"
 msgstr "macedoński"
 
--- a/po/ro.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/ro.po	Sat Feb 12 23:54:14 2011 +0000
@@ -1,15 +1,16 @@
 # Pidgin Romanian translation
 # This file is distributed under the same license as the Pidgin package.
-# 2002-2010, Mișu Moldovan <dumol@gnome.org>
+# 2002-2011, Mișu Moldovan <dumol@gnome.org>
 # 2009, Andrei Popescu <andreimpopescu@gmail.com>
 # Contributions: 2007, Alexandru Szasz <alexxed@gmail.com>
-msgid ""
-msgstr ""
-"Project-Id-Version: pidgin-2.7.8\n"
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pidgin-2.7.9\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:34-0500\n"
-"PO-Revision-Date: 2010-12-17 18:47+0200\n"
-"Last-Translator: Mișu Moldovan <dumol@l10n.ro>\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
+"PO-Revision-Date: 2011-01-31 00:11+0200\n"
+"Last-Translator: Mișu Moldovan <dumol@gnome.org>\n"
 "Language-Team: Romanian <debian-l10n-romanian@lists.debian.org>\n"
 "Language: ro\n"
 "MIME-Version: 1.0\n"
@@ -96,7 +97,7 @@
 msgstr "(Probabil ați uitat să faceți „make install”.)"
 
 msgid "Modify Account"
-msgstr "Modificare cont"
+msgstr "Editare cont"
 
 msgid "New Account"
 msgstr "Cont nou"
@@ -105,7 +106,7 @@
 msgstr "Protocol:"
 
 msgid "Username:"
-msgstr "Nume utilizator:"
+msgstr "Nume de utilizator:"
 
 msgid "Password:"
 msgstr "Parolă:"
@@ -212,7 +213,7 @@
 msgstr "Eroare la adăugarea contactului"
 
 msgid "Username"
-msgstr "Nume utilizator"
+msgstr "Nume de utilizator"
 
 msgid "Alias (optional)"
 msgstr "Alias (opțional)"
@@ -285,7 +286,7 @@
 msgstr "Detalii"
 
 msgid "Add Buddy Pounce"
-msgstr "Adăugare întâmpinare"
+msgstr "Adăugați o întâmpinare"
 
 msgid "Send File"
 msgstr "Trimitere fișier"
@@ -637,7 +638,7 @@
 msgstr "Arată marcaje de timp"
 
 msgid "Add Buddy Pounce..."
-msgstr "Adăugare întâmpinare..."
+msgstr "Adăugați o întâmpinare..."
 
 msgid "Invite..."
 msgstr "Invită..."
@@ -1112,7 +1113,7 @@
 msgstr "Întâmpinare doar în starea de indisponibilitate"
 
 msgid "Recurring"
-msgstr "Recurentă"
+msgstr "Recurență"
 
 msgid "Cannot create pounce"
 msgstr "Nu se poate crea întâmpinarea"
@@ -1128,7 +1129,7 @@
 msgstr "Sigur doriți să ștergeți întâmpinarea la %s pentru %s?"
 
 msgid "Buddy Pounces"
-msgstr "Întâmpinări contacte"
+msgstr "Întâmpinări pentru contacte"
 
 #, c-format
 msgid "%s has started typing to you (%s)"
@@ -1247,7 +1248,7 @@
 
 #. Create the window.
 msgid "Room List"
-msgstr "Listă camere de chat"
+msgstr "Lista camerelor de chat"
 
 msgid "Buddy logs in"
 msgstr "Un contact se autentifică"
@@ -1551,10 +1552,10 @@
 
 #, c-format
 msgid "TinyURL for above: %s"
-msgstr "TinyURL pentru linkul de mai sus: %s"
+msgstr "TinyURL pentru adresa de mai sus: %s"
 
 msgid "Please wait while TinyURL fetches a shorter URL ..."
-msgstr "Aștepați până când TinyURL oferă un link mai scurt..."
+msgstr "Așteptați ca TinyURL să genereze o adresă mai scurtă..."
 
 msgid "Only create TinyURL for URLs of this length or greater"
 msgstr "Creează TinyURL doar pentru URL-uri de această lungime sau mai mari"
@@ -2322,9 +2323,7 @@
 msgstr "Auto-acceptare"
 
 msgid "Auto-accept file transfer requests from selected users."
-msgstr ""
-"Permite acceptarea automată a transferurilor de fișiere inițiate de anumiți "
-"utilizatori."
+msgstr "Acceptare automată pentru anumite transferuri de fișiere."
 
 #, c-format
 msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed."
@@ -2367,9 +2366,12 @@
 "Cale pentru salvarea fișierelor:\n"
 "(Precizați calea completă)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr ""
-"Refuză automat pentru utilizatorii ce nu fac parte din lista de contacte"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Când se primește o cerere de transfer de fișiere de la un\n"
+"utilizator ce NU e în lista de contacte:"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2381,6 +2383,9 @@
 msgid "Create a new directory for each user"
 msgstr "Creează un nou director pentru fiecare utilizator"
 
+msgid "Escape the filenames"
+msgstr "Evită interpretarea caracterelor speciale în nume"
+
 msgid "Notes"
 msgstr "Notițe"
 
@@ -2441,7 +2446,7 @@
 #. *  summary
 #. *  description
 msgid "DBus Plugin Example"
-msgstr "Exemplu de modul DBus"
+msgstr "Exemplu de modul DBus."
 
 #. *< type
 #. *< ui_requirement
@@ -2650,7 +2655,7 @@
 
 #. Add general preferences.
 msgid "General Log Reading Configuration"
-msgstr "Opțiuni de citire a înregistrărilor"
+msgstr "Opțiuni de import a înregistrărilor"
 
 msgid "Fast size calculations"
 msgstr "Calcul rapid mărime"
@@ -2669,7 +2674,7 @@
 #. *< priority
 #. *< id
 msgid "Log Reader"
-msgstr "Citire înregistrări"
+msgstr "Import de înregistrări"
 
 #. *< name
 #. *< version
@@ -2728,7 +2733,7 @@
 "apară dedesubtul numelui de utilizator în fereastra de discuții."
 
 msgid "Offline Message Emulation"
-msgstr "Emulare mesaje offline"
+msgstr "Emulare de mesaje offline"
 
 msgid "Save messages sent to an offline user as pounce."
 msgstr "Salvează ca întâmpinare mesajele trimise unui utilizator offline."
@@ -2738,7 +2743,7 @@
 "pounce from the `Buddy Pounce' dialog."
 msgstr ""
 "Restul de mesaje vor fi salvate ca întâmpinare. Puteți apoi edita sau șterge "
-"întâmpinarea din fereastra „Întâmpinări contacte”."
+"întâmpinarea din fereastra „Întâmpinări pentru contacte”."
 
 #, c-format
 msgid ""
@@ -2754,7 +2759,8 @@
 
 msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
 msgstr ""
-"Puteți edita ori șterge întâmpinarea din fereastra „Întâmpinări contacte"
+"Puteți edita ori șterge întâmpinarea din fereastra „Întâmpinări pentru "
+"contacte”"
 
 msgid "Yes"
 msgstr "Da"
@@ -2962,7 +2968,7 @@
 #. *< priority
 #. *< id
 msgid "Buddy State Notification"
-msgstr "Notificări stări contacte"
+msgstr "Notificări pentru stările contactelor"
 
 #. *< name
 #. *< version
@@ -3628,7 +3634,7 @@
 "away [message]:  Set an away message, or use no message to return from being "
 "away."
 msgstr ""
-"away [mesaj]:  Setați un mesaj în absență sau, dacă nu precizați un mesaj, "
+"away [mesaj]:  Definiți un mesaj în absență sau, dacă nu precizați un mesaj, "
 "reveniți din absență."
 
 msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
@@ -3700,8 +3706,8 @@
 "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel "
 "or user mode."
 msgstr ""
-"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;pseudonim|chat&gt;:  Setați sau resetați "
-"un chat sau un mod utilizator."
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;pseudonim|chat&gt;:  Inițializați sau "
+"reinițializați un chat sau un mod pentru utilizator."
 
 msgid ""
 "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
@@ -3782,7 +3788,8 @@
 
 msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;:  Set or unset a user mode."
 msgstr ""
-"umode &lt;+|-&gt;&lt;A-Za-z&gt;:  Setați sau resetați un mod utilizator."
+"umode &lt;+|-&gt;&lt;A-Za-z&gt;:  Inițializați sau reinițializați un mod "
+"pentru utilizator."
 
 msgid "version [nick]: send CTCP VERSION request to a user"
 msgstr ""
@@ -3835,7 +3842,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "Serverul necesită autentificare în clar printr-o conexiune necriptată"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Răspuns nevalid de la server."
 
@@ -4151,7 +4161,7 @@
 msgstr "Ca_meră:"
 
 msgid "_Server:"
-msgstr "_Server:"
+msgstr "Ser_ver:"
 
 msgid "_Handle:"
 msgstr "A_dministrare:"
@@ -4595,7 +4605,7 @@
 
 #, c-format
 msgid "Unable to set role \"%s\" for user: %s"
-msgstr "Nu se poate seta rolul „%s” pentru utilizatorul: %s"
+msgstr "Nu se poate defini rolul „%s” pentru utilizatorul: %s"
 
 #, c-format
 msgid "Unable to kick user %s"
@@ -4682,14 +4692,15 @@
 
 msgid "ban &lt;user&gt; [reason]:  Ban a user from the room."
 msgstr ""
-"ban &lt;nume utilizator&gt; [chat]:  Blocați accesul unui utilizator în chat."
+"ban &lt;nume de utilizator&gt; [chat]:  Blocați accesul unui utilizator în "
+"chat."
 
 msgid ""
 "affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
 "the users with an affiliation or set users' affiliation with the room."
 msgstr ""
 "affiliate &lt;deținător|administrator|membru|renegat|nimic&gt; [pseudonim1] "
-"[pseudonim2] ...: Aflați utilizatorii cu o afiliere sau setați afilierea "
+"[pseudonim2] ...: Aflați utilizatorii cu o afiliere sau definiți afilierea "
 "utilizatorilor față de camera de chat."
 
 msgid ""
@@ -5502,10 +5513,10 @@
 msgstr "Pagină"
 
 msgid "Playing a game"
-msgstr "Joacă ceva"
+msgstr "Mă joc"
 
 msgid "Working"
-msgstr "Lucrează"
+msgstr "Lucrez"
 
 msgid "Has you"
 msgstr "Vă are în listă"
@@ -6152,6 +6163,20 @@
 msgid "Retrieving User Information..."
 msgstr "Se obțin detaliile utilizatorului..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "Ați fost dat afară din acest MultiMX."
+
+msgid "was kicked"
+msgstr "a fost dat afară"
+
+msgid "_Room Name:"
+msgstr "Numele came_rei:"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "Ați fost invitat"
+
 msgid "Loading menu..."
 msgstr "Se încarcă meniul..."
 
@@ -6179,20 +6204,6 @@
 msgid "Enable splash-screen popup"
 msgstr "Activare popup pentru imaginea de pornire"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "Ați fost dat afară din acest MultiMX."
-
-msgid "was kicked"
-msgstr "a fost dat afară"
-
-msgid "_Room Name:"
-msgstr "Nume came_ră:"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "Ați fost invitat"
-
 msgid "Last Online"
 msgstr "Ultima oară online"
 
@@ -7063,16 +7074,16 @@
 msgstr "Nu se poate trimite mesajul către %s: %s"
 
 msgid "Thinking"
-msgstr "Mă gândesc"
+msgstr "Pe gânduri"
 
 msgid "Shopping"
 msgstr "La cumpărături"
 
 msgid "Questioning"
-msgstr "Pun întrebări"
+msgstr "În dubiu"
 
 msgid "Eating"
-msgstr "Mănânc"
+msgstr "La masă"
 
 msgid "Watching a movie"
 msgstr "Văd un film"
@@ -7096,7 +7107,7 @@
 msgstr "Dorm"
 
 msgid "Using a PDA"
-msgstr "Folosesc un PDA"
+msgstr "Sunt pe PDA"
 
 msgid "Meeting friends"
 msgstr "Cu prietenii"
@@ -7109,10 +7120,10 @@
 
 #. "I am mobile." / "John is mobile."
 msgid "Mobile"
-msgstr "Mobil"
+msgstr "Pe mobil"
 
 msgid "Searching the web"
-msgstr "Caut pe net"
+msgstr "Mă dau pe net"
 
 msgid "At a party"
 msgstr "La o petrecere"
@@ -7571,16 +7582,16 @@
 "posibilă trimiterea de imagini IM."
 
 msgid "Unable to set AIM profile."
-msgstr "Nu se poate seta profilul AIM."
+msgstr "Nu se poate inițializa profilul AIM."
 
 msgid ""
 "You have probably requested to set your profile before the login procedure "
 "completed.  Your profile remains unset; try setting it again when you are "
 "fully connected."
 msgstr ""
-"Se pare că ați cerut să setați profilul înainte de a vă autentifica. "
-"Profilul vă va rămâne la fel. Încercați să-l setați din nou după o conectare "
-"pe deplin reușită."
+"Se pare că ați cerut să vă inițializați profilul înainte de a vă "
+"autentifica. Profilul vă va rămâne neschimbat și încercați să-l "
+"reinițializați după o conectare pe deplin reușită."
 
 #, c-format
 msgid ""
@@ -7710,10 +7721,10 @@
 
 #, c-format
 msgid "Buddy Comment for %s"
-msgstr "Comentariu contact pentru %s"
+msgstr "Comentariu pentru contactul %s"
 
 msgid "Buddy Comment:"
-msgstr "Comentariu contact:"
+msgstr "Comentariu pentru contact:"
 
 #, c-format
 msgid "You have selected to open a Direct IM connection with %s."
@@ -7836,7 +7847,7 @@
 msgstr "Nu utiliza criptare"
 
 msgid "Use clientLogin"
-msgstr "Utilizați clientLogin"
+msgstr "Utilizează clientLogin"
 
 msgid ""
 "Always use AIM/ICQ proxy server for\n"
@@ -7875,75 +7886,6 @@
 "necesară pentru imaginile IM. Pentru că adresa IP vă va fi expusă, luați în "
 "considerare riscurile la care vă expuneți."
 
-msgid "Invalid SNAC"
-msgstr "SNAC nevalid"
-
-msgid "Server rate limit exceeded"
-msgstr "S-a depășit limitarea de server"
-
-msgid "Client rate limit exceeded"
-msgstr "S-a depășit limitarea de client"
-
-msgid "Service unavailable"
-msgstr "Serviciu indisponibil"
-
-msgid "Service not defined"
-msgstr "Serviciu nedefinit"
-
-msgid "Obsolete SNAC"
-msgstr "SNAC învechit"
-
-msgid "Not supported by host"
-msgstr "Nesuportat de către server"
-
-msgid "Not supported by client"
-msgstr "Nesuportat de către client"
-
-msgid "Refused by client"
-msgstr "Refuzat de către client"
-
-msgid "Reply too big"
-msgstr "Răspuns supradimensionat"
-
-msgid "Responses lost"
-msgstr "Răspunsuri pierdute"
-
-msgid "Request denied"
-msgstr "Cerere respinsă"
-
-msgid "Busted SNAC payload"
-msgstr "Încărcătură SNAC nevalidă"
-
-msgid "Insufficient rights"
-msgstr "Drepturi insuficiente"
-
-msgid "In local permit/deny"
-msgstr "În lista permiși/refuzați locală"
-
-msgid "Warning level too high (sender)"
-msgstr "Nivel de avertizare prea ridicat (pentru expeditor)"
-
-msgid "Warning level too high (receiver)"
-msgstr "Nivel de avertizare prea ridicat (pentru destinatar)"
-
-msgid "User temporarily unavailable"
-msgstr "Utilizatorul este temporar indisponibil."
-
-msgid "No match"
-msgstr "Nicio potrivire"
-
-msgid "List overflow"
-msgstr "Listă suprasaturată"
-
-msgid "Request ambiguous"
-msgstr "Cerere ambiguă"
-
-msgid "Queue full"
-msgstr "Coadă plină"
-
-msgid "Not while on AOL"
-msgstr "Nu (cât timp e pe AOL)"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "Avatar"
@@ -8021,7 +7963,7 @@
 msgstr "Nivel de avertizare"
 
 msgid "Buddy Comment"
-msgstr "Comentariu contact"
+msgstr "Comentariu pentru contact"
 
 #, c-format
 msgid "User information not available: %s"
@@ -8062,6 +8004,75 @@
 msgid "Capabilities"
 msgstr "Facilități"
 
+msgid "Invalid SNAC"
+msgstr "SNAC nevalid"
+
+msgid "Server rate limit exceeded"
+msgstr "S-a depășit limitarea de server"
+
+msgid "Client rate limit exceeded"
+msgstr "S-a depășit limitarea de client"
+
+msgid "Service unavailable"
+msgstr "Serviciu indisponibil"
+
+msgid "Service not defined"
+msgstr "Serviciu nedefinit"
+
+msgid "Obsolete SNAC"
+msgstr "SNAC învechit"
+
+msgid "Not supported by host"
+msgstr "Nesuportat de către server"
+
+msgid "Not supported by client"
+msgstr "Nesuportat de către client"
+
+msgid "Refused by client"
+msgstr "Refuzat de către client"
+
+msgid "Reply too big"
+msgstr "Răspuns supradimensionat"
+
+msgid "Responses lost"
+msgstr "Răspunsuri pierdute"
+
+msgid "Request denied"
+msgstr "Cerere respinsă"
+
+msgid "Busted SNAC payload"
+msgstr "Încărcătură SNAC nevalidă"
+
+msgid "Insufficient rights"
+msgstr "Drepturi insuficiente"
+
+msgid "In local permit/deny"
+msgstr "În lista permiși/refuzați locală"
+
+msgid "Warning level too high (sender)"
+msgstr "Nivel de avertizare prea ridicat (pentru expeditor)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Nivel de avertizare prea ridicat (pentru destinatar)"
+
+msgid "User temporarily unavailable"
+msgstr "Utilizatorul este temporar indisponibil."
+
+msgid "No match"
+msgstr "Nicio potrivire"
+
+msgid "List overflow"
+msgstr "Listă suprasaturată"
+
+msgid "Request ambiguous"
+msgstr "Cerere ambiguă"
+
+msgid "Queue full"
+msgstr "Coadă plină"
+
+msgid "Not while on AOL"
+msgstr "Nu (cât timp e pe AOL)"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8654,14 +8665,14 @@
 msgid "Select Server"
 msgstr "Selectați serverul"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Conectare folosind TCP"
@@ -8986,7 +8997,7 @@
 msgstr "Ultim client cunoscut"
 
 msgid "User Name"
-msgstr "Nume utilizator"
+msgstr "Nume de utilizator"
 
 msgid "Sametime ID"
 msgstr "ID Sametime"
@@ -9217,7 +9228,7 @@
 msgstr "IM parolat"
 
 msgid "Cannot set IM key"
-msgstr "Nu se poate seta cheia IM"
+msgstr "Nu se poate inițializa cheia IM"
 
 msgid "Set IM Password"
 msgstr "Introducere parolă IM"
@@ -9438,7 +9449,8 @@
 
 msgid "Set user limit on channel. Set to zero to reset user limit."
 msgstr ""
-"Setați numărul maxim de utilizatori în chat. Zero pentru număr nelimitat."
+"Definiți numărul maxim de utilizatori în chat. Zero pentru un număr "
+"nelimitat."
 
 msgid "Invite List"
 msgstr "Listă invitații"
@@ -9546,7 +9558,7 @@
 
 #, c-format
 msgid "<I>%s</I> set channel <I>%s</I> modes to: %s"
-msgstr "<I>%s</I> a setat modurile chat-ului <I>%s</I> astfel: %s"
+msgstr "<I>%s</I> a definit modurile chat-ului <I>%s</I> astfel: %s"
 
 #, c-format
 msgid "<I>%s</I> removed all channel <I>%s</I> modes"
@@ -9554,7 +9566,7 @@
 
 #, c-format
 msgid "<I>%s</I> set <I>%s's</I> modes to: %s"
-msgstr "<I>%s</I> a setat modurile pentru <I>%s</I> astfel: %s"
+msgstr "<I>%s</I> a definit modurile pentru <I>%s</I> astfel: %s"
 
 #, c-format
 msgid "<I>%s</I> removed all <I>%s's</I> modes"
@@ -9906,11 +9918,11 @@
 
 #, c-format
 msgid "no channel modes are set on %s"
-msgstr "chat-ul %s nu are setat niciun mod"
+msgstr "chat-ul %s nu are niciun mod definit"
 
 #, c-format
 msgid "Failed to set cmodes for %s"
-msgstr "Nu s-au putut seta modurile chat-ului %s"
+msgstr "Nu s-au putut defini modurile chat-ului %s"
 
 #, c-format
 msgid "Unknown command: %s, (may be a client bug)"
@@ -10091,7 +10103,7 @@
 
 #, c-format
 msgid "User Name: \t%s\n"
-msgstr "Nume utilizator: \t%s\n"
+msgstr "Nume de utilizator: \t%s\n"
 
 #, c-format
 msgid "Email: \t\t%s\n"
@@ -10324,7 +10336,7 @@
 msgstr "Utilizează proxy-ul contului pentru conexiuni HTTP și HTTPS"
 
 msgid "Chat room list URL"
-msgstr "Adresă listă camere de chat"
+msgstr "Adresa listei camerelor de chat"
 
 msgid "Yahoo JAPAN ID..."
 msgstr "Identitate Yahoo Japonia..."
@@ -10743,13 +10755,14 @@
 
 msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
 msgstr ""
-"instance &lt;instanță&gt;:  Setați instanța de utilizat în această clasă"
+"instance &lt;instanță&gt;:  Definiți instanța de utilizat în această clasă"
 
 msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
-msgstr "inst &lt;instanță&gt;:  Setați instanța de utilizat în această clasă"
+msgstr "inst &lt;instanță&gt;:  Definiți instanța de utilizat în această clasă"
 
 msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
-msgstr "topic &lt;instanță&gt;:  Setați instanța de utilizat în această clasă"
+msgstr ""
+"topic &lt;instanță&gt;:  Definiți instanța de utilizat în această clasă"
 
 msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
 msgstr ""
@@ -10932,7 +10945,7 @@
 msgstr "Eroare SSL necunoscută"
 
 msgid "Unset"
-msgstr "Nesetat"
+msgstr "Nedefinit"
 
 msgid "Do not disturb"
 msgstr "Nu deranjați"
@@ -11084,7 +11097,7 @@
 
 #. 10061
 msgid "Connection refused."
-msgstr "Conexiune resetată."
+msgstr "Conexiune refuzată."
 
 #. 10048
 msgid "Address already in use."
@@ -11124,14 +11137,14 @@
 msgstr "Nume _utilizator:"
 
 msgid "Remember pass_word"
-msgstr "_Salvare parolă"
+msgstr "Sal_vare parolă"
 
 #. Build the user options frame.
 msgid "User Options"
 msgstr "Opțiuni personale"
 
 msgid "_Local alias:"
-msgstr "_Alias local:"
+msgstr "Alias l_ocal:"
 
 msgid "New _mail notifications"
 msgstr "Notificare la _mail nou"
@@ -11186,7 +11199,7 @@
 msgstr "P_ort:"
 
 msgid "Pa_ssword:"
-msgstr "Pa_rolă:"
+msgstr "_Parolă:"
 
 msgid "Unable to save new account"
 msgstr "Nu se poate salva noul cont"
@@ -11232,8 +11245,8 @@
 "<b>Adaugă...</b> de câte ori doriți.\n"
 "\n"
 "Veți putea reveni la această fereastră pentru a adăuga, edita sau șterge "
-"conturi utilizând <b>Conturi->Administrare conturi</b> în fereastra listei "
-"de contacte."
+"conturi utilizând <b>Conturi->Administrare</b> în fereastra listei de "
+"contacte."
 
 #, c-format
 msgid "%s%s%s%s wants to add you (%s) to his or her buddy list%s%s"
@@ -11242,7 +11255,7 @@
 
 #. Buddy List
 msgid "Background Color"
-msgstr "Culoare fundal"
+msgstr "Culoarea fundalului"
 
 msgid "The background color for the buddy list"
 msgstr "Culoarea de fundal pentru lista de contacte"
@@ -11257,7 +11270,7 @@
 #. Note to translators: These two strings refer to the background color
 #. of a buddy list group when in its expanded state
 msgid "Expanded Background Color"
-msgstr "Culoare fundal la desfacere"
+msgstr "Culoarea fundalului la desfacere"
 
 msgid "The background color of an expanded group"
 msgstr "Culoarea de fundal a unui grup desfăcut"
@@ -11265,15 +11278,15 @@
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list group when in its expanded state
 msgid "Expanded Text"
-msgstr "Text text la desfacere"
+msgstr "Culoarea textului la desfacere"
 
 msgid "The text information for when a group is expanded"
-msgstr "Informația text pentru un grup desfăcut"
+msgstr "Detaliile textului pentru un grup desfăcut"
 
 #. Note to translators: These two strings refer to the background color
 #. of a buddy list group when in its collapsed state
 msgid "Collapsed Background Color"
-msgstr "Culoare fundal la strângere"
+msgstr "Culoarea fundalului la strângere"
 
 msgid "The background color of a collapsed group"
 msgstr "Culoarea de fundal a unui grup strâns"
@@ -11284,13 +11297,13 @@
 msgstr "Text la strângere"
 
 msgid "The text information for when a group is collapsed"
-msgstr "Informația text pentru un grup strâns"
+msgstr "Detaliile textului pentru un grup strâns"
 
 #. Buddy
 #. Note to translators: These two strings refer to the background color
 #. of a buddy list contact or chat room
 msgid "Contact/Chat Background Color"
-msgstr "Culoare fundal contact/chat"
+msgstr "Culoarea fundalului pentru contacte și chat-uri"
 
 msgid "The background color of a contact or chat"
 msgstr "Culoarea de fundal a unui contact sau chat"
@@ -11298,64 +11311,65 @@
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list contact when in its expanded state
 msgid "Contact Text"
-msgstr "Text contact"
+msgstr "Textul contactului"
 
 msgid "The text information for when a contact is expanded"
-msgstr "Informația text pentru un contact strâns"
+msgstr "Detaliile textului pentru un contact desfăcut"
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when it is online
 msgid "Online Text"
-msgstr "Text online"
+msgstr "Textul contactelor online"
 
 msgid "The text information for when a buddy is online"
-msgstr "Informația text pentru un contact online"
+msgstr "Detaliile textului pentru contacte online"
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when it is away
 msgid "Away Text"
-msgstr "Text absent"
+msgstr "Textul contactelor absente"
 
 msgid "The text information for when a buddy is away"
-msgstr "Informația text pentru un contact absent"
+msgstr "Detaliile textului pentru contacte absente"
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when it is offline
 msgid "Offline Text"
-msgstr "Text offline"
+msgstr "Textul contactelor offline"
 
 msgid "The text information for when a buddy is offline"
-msgstr "Informația text pentru un contact offline"
+msgstr "Detaliile textului pentru contacte offline"
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when it is idle
 msgid "Idle Text"
-msgstr "Text inactiv"
+msgstr "Textul contactelor inactive"
 
 msgid "The text information for when a buddy is idle"
-msgstr "Informația text pentru un contact inactiv"
+msgstr "Detaliile textului pentru contacte inactive"
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when they have sent you a new message
 msgid "Message Text"
-msgstr "Text mesaj"
+msgstr "Textul mesajelor necitite"
 
 msgid "The text information for when a buddy has an unread message"
-msgstr "Informația text pentru un contact cu un mesaj necitit"
+msgstr "Detaliile textului pentru contacte cu mesaje necitite"
 
 #. Note to translators: These two strings refer to the font and color
 #. of a buddy list buddy when they have sent you a new message
 msgid "Message (Nick Said) Text"
-msgstr "Textul mesajului (utilizatorul a spus)"
+msgstr "Textul mesajelor noi"
 
 msgid ""
 "The text information for when a chat has an unread message that mentions "
 "your nickname"
 msgstr ""
-"Informația text pentru un chat cu un mesaj necitit ce vă menționează numele"
+"Detaliile textului pentru un chat cu un mesaj necitit ce vă menționează "
+"numele"
 
 msgid "The text information for a buddy's status"
-msgstr "Informația text pentru starea unui contact"
+msgstr "Detaliile textului pentru statusul unui contact"
 
 #, c-format
 msgid "You have %d contact named %s. Would you like to merge them?"
@@ -11383,8 +11397,7 @@
 msgid ""
 "Please enter the appropriate information about the chat you would like to "
 "join.\n"
-msgstr ""
-"Introduceți informațiile despre chat-ul în care doriți să participați.\n"
+msgstr "Introduceți detaliile chat-ului în care doriți intrați.\n"
 
 msgid "Room _List"
 msgstr "_Listă de camere"
@@ -11493,7 +11506,7 @@
 msgstr "Mesaj (opțional)"
 
 msgid "Edit User Mood"
-msgstr "Schimbare a propriei dispoziții"
+msgstr "Schimbați-vă dispoziția"
 
 #. NOTE: Do not set any accelerator to Control+O. It is mapped by
 #. gtk_blist_key_press_cb to "Get User Info" on the selected buddy.
@@ -11551,14 +11564,14 @@
 msgstr "/_Conturi"
 
 msgid "/Accounts/Manage Accounts"
-msgstr "/Conturi/Administrare conturi"
+msgstr "/Conturi/Administrare"
 
 #. Tools
 msgid "/_Tools"
 msgstr "/_Unelte"
 
 msgid "/Tools/Buddy _Pounces"
-msgstr "/Unelte/Î_ntâmpinări contacte"
+msgstr "/Unelte/Î_ntâmpinări pentru contacte"
 
 msgid "/Tools/_Certificates"
 msgstr "/Unelte/_Certificate"
@@ -11582,7 +11595,7 @@
 msgstr "/Unelte/_Transfer de fișiere"
 
 msgid "/Tools/R_oom List"
-msgstr "/Unelte/_Listă camere de chat"
+msgstr "/Unelte/_Lista camerelor de chat"
 
 msgid "/Tools/System _Log"
 msgstr "/Unelte/În_registrări de sistem"
@@ -11690,7 +11703,7 @@
 msgstr "/Unelte/Securitate"
 
 msgid "/Tools/Room List"
-msgstr "/Unelte/Listă camere de chat"
+msgstr "/Unelte/Lista camerelor de chat"
 
 #, c-format
 msgid "%d unread message from %s\n"
@@ -11741,7 +11754,7 @@
 "parte:"
 
 msgid "<b>Username:</b>"
-msgstr "<b>Nume utilizator:</b>"
+msgstr "<b>Nume de utilizator:</b>"
 
 msgid "<b>Password:</b>"
 msgstr "<b>Parolă:</b>"
@@ -11764,8 +11777,8 @@
 "<span weight='bold' size='larger'>Bun venit în %s!</span>\n"
 "\n"
 "Nu aveți niciun cont activ. Activați-vă conturile de mesagerie instant în "
-"fereastra <b>Conturi</b>, accesibilă pe calea <b>Conturi->Administrare "
-"conturi</b>. Abia după activare veți putea utiliza conturile definite."
+"fereastra <b>Conturi</b>, accesibilă pe calea <b>Conturi->Administrare</b>. "
+"Abia după activare veți putea utiliza conturile definite."
 
 #. set the Show Offline Buddies option. must be done
 #. * after the treeview or faceprint gets mad. -Robot101
@@ -11786,16 +11799,16 @@
 msgstr "/Contacte/Arată/Iconițele de protocol"
 
 msgid "Add a buddy.\n"
-msgstr "Adaugă un contact.\n"
+msgstr "Adăugați un contact.\n"
 
 msgid "Buddy's _username:"
-msgstr "Nume de _utilizator:"
+msgstr "_Nume de utilizator:"
 
 msgid "(Optional) A_lias:"
-msgstr "A_lias (opțional):"
+msgstr "_Alias (opțional):"
 
 msgid "Add buddy to _group:"
-msgstr "Adaugă contactul în _grupul:"
+msgstr "_Grup:"
 
 msgid "This protocol does not support chat rooms."
 msgstr "Acest protocol nu suportă camere de chat."
@@ -11810,20 +11823,20 @@
 "Please enter an alias, and the appropriate information about the chat you "
 "would like to add to your buddy list.\n"
 msgstr ""
-"Introduceți un alias și informațiile necesare pentru acel chat pe care "
-"doriți să-l adăugați în lista de contacte.\n"
+"Introduceți un alias și informațiile necesare pentru chat-ul pe care doriți "
+"să-l adăugați în lista de contacte.\n"
 
 msgid "A_lias:"
-msgstr "A_lias:"
+msgstr "_Alias:"
 
 msgid "_Group:"
 msgstr "_Grup:"
 
 msgid "Auto_join when account connects."
-msgstr "Intră a_utomat la autentificarea contului."
+msgstr "I_ntră automat la autentificarea contului."
 
 msgid "_Remain in chat after window is closed."
-msgstr "_Rămâi în chat după închiderea ferestrei."
+msgstr "Rămâi în chat _după închiderea ferestrei."
 
 msgid "Please enter the name of the group to be added."
 msgstr "Introduceți numele grupului de adăugat."
@@ -11934,7 +11947,7 @@
 msgstr "/Discuție/_Mesaj nou..."
 
 msgid "/Conversation/Join a _Chat..."
-msgstr "/Discuție/Intrare într-un _chat..."
+msgstr "/Discuție/Intrare într-un c_hat..."
 
 msgid "/Conversation/_Find..."
 msgstr "/Discuție/C_aută..."
@@ -11961,10 +11974,10 @@
 msgstr "/Discuție/Media/Ap_el audio\\/video"
 
 msgid "/Conversation/Se_nd File..."
-msgstr "/Discuție/_Trimite un fișier..."
+msgstr "/Discuție/Trimite un _fișier..."
 
 msgid "/Conversation/Get _Attention"
-msgstr "/Discuție/Cere _atenție"
+msgstr "/Discuție/Cere a_tenție"
 
 msgid "/Conversation/Add Buddy _Pounce..."
 msgstr "/Discuție/Adaugă î_ntâmpinare..."
@@ -11979,7 +11992,7 @@
 msgstr "/Discuție/Mai m_ult"
 
 msgid "/Conversation/Al_ias..."
-msgstr "/Discuție/Al_ias..."
+msgstr "/Discuție/A_lias..."
 
 msgid "/Conversation/_Block..."
 msgstr "/Discuție/_Blochează..."
@@ -12170,7 +12183,7 @@
 msgstr "Nu în fereastra chat-urilor"
 
 msgid "New window"
-msgstr "În fereastră nouă"
+msgstr "În ferestre noi"
 
 msgid "By group"
 msgstr "După grup"
@@ -12229,9 +12242,6 @@
 msgid "Fatal Error"
 msgstr "Erori fatale"
 
-msgid "bug master"
-msgstr "admin al rapoartelor de erori"
-
 msgid "artist"
 msgstr "artist"
 
@@ -12411,6 +12421,9 @@
 msgid "Maithili"
 msgstr "Maithili"
 
+msgid "Meadow Mari"
+msgstr "Meadow Mari"
+
 msgid "Macedonian"
 msgstr "Macedoneană"
 
@@ -12826,64 +12839,64 @@
 msgstr "Fără iconițe în _selecție"
 
 msgid "Hyperlink color"
-msgstr "Culoare adresă"
+msgstr "Culoarea adreselor web"
 
 msgid "Color to draw hyperlinks."
-msgstr "Culoare pentru afișarea adreselor."
+msgstr "Culoarea pentru afișarea adreselor web."
 
 msgid "Hyperlink visited color"
-msgstr "Culoare adresă web"
+msgstr "Culoarea adreselor web vizitate"
 
 msgid "Color to draw hyperlink after it has been visited (or activated)."
-msgstr "Culoare pentru afișarea adreselor web vizitate (ori activate)."
+msgstr "Culoarea pentru afișarea adreselor web vizitate (ori activate)."
 
 msgid "Hyperlink prelight color"
-msgstr "Culoare evidențiere adresă"
+msgstr "Culoarea de evidențiere a adresei"
 
 msgid "Color to draw hyperlinks when mouse is over them."
-msgstr "Culoare pentru afișarea adreselor sub cursorul de maus."
+msgstr "Culoarea de afișare a adreselor web sub cursorul de maus."
 
 msgid "Sent Message Name Color"
-msgstr "Culoare pentru mesaje trimise"
+msgstr "Culoarea mesajelor trimise"
 
 msgid "Color to draw the name of a message you sent."
-msgstr "Culoare de utilizat pentru numele mesajelor pe care le trimiteți."
+msgstr "Culoarea de utilizat pentru numele mesajelor pe care le trimiteți."
 
 msgid "Received Message Name Color"
-msgstr "Culoare pentru mesaje primite"
+msgstr "Culoarea mesajelor primite"
 
 msgid "Color to draw the name of a message you received."
-msgstr "Culoare de utilizat pentru numele mesajelor pe care le primiți."
+msgstr "Culoarea de utilizat pentru numele mesajelor pe care le primiți."
 
 msgid "\"Attention\" Name Color"
-msgstr "Culoare de atenționare"
+msgstr "Culoarea de atenționare"
 
 msgid "Color to draw the name of a message you received containing your name."
-msgstr "Culoare de utilizat pentru numele mesajelor ce vă pomenesc numele."
+msgstr "Culoarea de utilizat pentru numele mesajelor ce vă pomenesc numele."
 
 msgid "Action Message Name Color"
-msgstr "Culoare pentru mesajele comenzi"
+msgstr "Culoarea pentru mesajele comenzi"
 
 msgid "Color to draw the name of an action message."
-msgstr "Culoare de utilizat pentru numele mesajelor de tip comandă."
+msgstr "Culoarea de utilizat pentru numele mesajelor de tip comandă."
 
 msgid "Action Message Name Color for Whispered Message"
-msgstr "Culoare pentru mesajele comenzi în mod discret"
+msgstr "Culoarea pentru mesajele comenzi în mod discret"
 
 msgid "Color to draw the name of a whispered action message."
-msgstr "Culoare de utilizat pentru numele mesajelor discrete de acțiune."
+msgstr "Culoarea de utilizat pentru numele mesajelor discrete de acțiune."
 
 msgid "Whisper Message Name Color"
-msgstr "Culoare pentru mesajele discrete"
+msgstr "Culoarea mesajelor discrete"
 
 msgid "Color to draw the name of a whispered message."
-msgstr "Culoare de utilizat pentru numele mesajelor discrete."
+msgstr "Culoarea de utilizat pentru numele mesajelor discrete."
 
 msgid "Typing notification color"
 msgstr "Culoarea mesajelor de notificare"
 
 msgid "The color to use for the typing notification"
-msgstr "Culoare de utilizat pentru notificarea tastării"
+msgstr "Culoarea de utilizat pentru notificările de tastare"
 
 msgid "Typing notification font"
 msgstr "Fontul mesajelor de notificare"
@@ -12951,7 +12964,7 @@
 msgstr "Inserare adresă"
 
 msgid "_Insert"
-msgstr "Inserea_ză"
+msgstr "Ins_erare"
 
 #, c-format
 msgid "Failed to store image: %s\n"
@@ -13009,7 +13022,7 @@
 msgstr "Nume font"
 
 msgid "Foreground Color"
-msgstr "Culoare text"
+msgstr "Culoarea textului"
 
 msgid "Reset Formatting"
 msgstr "Fără formatare"
@@ -13051,16 +13064,16 @@
 msgstr "_Nume font"
 
 msgid "Foreground _color"
-msgstr "Culoare te_xt"
+msgstr "Culoarea te_xtului"
 
 msgid "Bac_kground color"
-msgstr "Culoare f_undal"
+msgstr "Culoarea f_undalului"
 
 msgid "_Image"
 msgstr "_Imagine"
 
 msgid "_Link"
-msgstr "_Link"
+msgstr "_Adresă web"
 
 msgid "_Horizontal rule"
 msgstr "Linie _orizontală"
@@ -13360,13 +13373,13 @@
 msgstr "O_prirea din tastare"
 
 msgid "Sends a _message"
-msgstr "Trimiterea unui _mesaj"
+msgstr "Tr_imiterea unui mesaj"
 
 msgid "Ope_n an IM window"
 msgstr "Desc_hide o discuție"
 
 msgid "_Pop up a notification"
-msgstr "Deschide _o fereastră de notificare"
+msgstr "De_schide o fereastră de notificare"
 
 msgid "Send a _message"
 msgstr "Trimite un mesa_j"
@@ -13387,13 +13400,13 @@
 msgstr "_Testare"
 
 msgid "P_ounce only when my status is not Available"
-msgstr "Întâmpinare doar în starea de _indisponibilitate"
+msgstr "Întâmpinare doar în starea de indisponibi_litate"
 
 msgid "_Recurring"
 msgstr "Re_curentă"
 
 msgid "Pounce Target"
-msgstr "Țintă întâmpinare"
+msgstr "Ținta întâmpinării"
 
 msgid "Started typing"
 msgstr "A început să tasteze"
@@ -13493,7 +13506,7 @@
 msgstr "Pentru mesajele necitite"
 
 msgid "Conversation Window"
-msgstr "Fereastra de discuții"
+msgstr "Fereastră de discuții"
 
 msgid "_Hide new IM conversations:"
 msgstr "Ascunde discuțiile _noi:"
@@ -13515,7 +13528,7 @@
 msgstr "Arată _butoanele de închidere a taburilor"
 
 msgid "_Placement:"
-msgstr "_Plasament:"
+msgstr "_Plasare:"
 
 msgid "Top"
 msgstr "Sus"
@@ -13536,7 +13549,7 @@
 msgstr "Vertical in dreapta"
 
 msgid "N_ew conversations:"
-msgstr "D_iscuții noi:"
+msgstr "Di_scuții noi:"
 
 msgid "Show _formatting on incoming messages"
 msgstr "_Păstrează formatarea mesajelor primite"
@@ -13554,7 +13567,7 @@
 msgstr "Notifică contactele când le scri_u"
 
 msgid "Highlight _misspelled words"
-msgstr "_Evidențiază greșelile de ortografie"
+msgstr "E_vidențiază greșelile de ortografie"
 
 msgid "Use smooth-scrolling"
 msgstr "Derulare cu efect"
@@ -13598,7 +13611,7 @@
 msgstr "Utilizează adresa IP _autodetectată: %s"
 
 msgid "ST_UN server:"
-msgstr "Server ST_UN:"
+msgstr "Ser_ver STUN:"
 
 msgid "<span style=\"italic\">Example: stunserver.org</span>"
 msgstr "<span style=\"italic\">Exemplu: stunserver.org</span>"
@@ -13610,7 +13623,7 @@
 msgstr "Porturi"
 
 msgid "_Enable automatic router port forwarding"
-msgstr "Acti_vează automat „port forwarding” în ruter"
+msgstr "Activea_ză automat „port forwarding” în ruter"
 
 msgid "_Manually specify range of ports to listen on:"
 msgstr "_Specificați intervalul de porturi:"
@@ -13632,7 +13645,7 @@
 msgstr "Port _UDP:"
 
 msgid "Use_rname:"
-msgstr "_Nume utilizator:"
+msgstr "_Nume de utilizator:"
 
 msgid "Pass_word:"
 msgstr "_Parolă:"
@@ -13684,7 +13697,7 @@
 msgstr "Chromium (chrome)"
 
 msgid "Manual"
-msgstr "Manual"
+msgstr "Personalizat"
 
 msgid "Browser Selection"
 msgstr "Navigator preferat"
@@ -13702,23 +13715,23 @@
 msgstr "_Navigator:"
 
 msgid "_Open link in:"
-msgstr "_Deschide adresa:"
+msgstr "_Deschide adresele web:"
 
 msgid "Browser default"
-msgstr "După cum e setat navigatorul"
+msgstr "Respectând opțiunile navigatorului"
 
 msgid "Existing window"
-msgstr "Într-o fereastră existentă"
+msgstr "În ferestre existente"
 
 msgid "New tab"
-msgstr "Într-un tab nou"
+msgstr "În taburi noi"
 
 #, c-format
 msgid ""
 "_Manual:\n"
 "(%s for URL)"
 msgstr ""
-"_Manual:\n"
+"_Personalizat:\n"
 "(%s pentru adresă)"
 
 msgid "Proxy Server"
@@ -13748,7 +13761,7 @@
 msgstr "P_ort:"
 
 msgid "User_name:"
-msgstr "_Nume utilizator:"
+msgstr "_Nume de utilizator:"
 
 msgid "Log _format:"
 msgstr "_Formatul înregistrărilor:"
@@ -13803,7 +13816,7 @@
 "Sound c_ommand:\n"
 "(%s for filename)"
 msgstr ""
-"Comandă de _redare sunet\n"
+"Comandă de _redare audio\n"
 "(%s pentru numele fișierului)"
 
 msgid "M_ute sounds"
@@ -13853,7 +13866,7 @@
 msgstr "Utilizează _ultimul status"
 
 msgid "Status to a_pply at startup:"
-msgstr "Status de utilizat la _pornire:"
+msgstr "Status de utili_zat la pornire:"
 
 msgid "Interface"
 msgstr "Interfață"
@@ -14006,7 +14019,7 @@
 msgstr "Editare iconiță simbolică"
 
 msgid "Add Smiley"
-msgstr "Adăugare iconiță simbolică"
+msgstr "Adăugați o iconiță simbolică"
 
 msgid "_Image:"
 msgstr "_Imagine:"
@@ -14016,7 +14029,7 @@
 msgstr "_Textul combinației de semne"
 
 msgid "Smiley"
-msgstr "Iconiță simbolice"
+msgstr "Iconiță simbolică"
 
 msgid "Shortcut Text"
 msgstr "Textul combinației de semne"
@@ -14078,7 +14091,7 @@
 "use it as the buddy icon for this user."
 msgstr ""
 "Puteți trimite această imagine printr-un transfer de fișiere, o puteți "
-"insera în acest mesaj sau o puteți seta ca avatar pentru acest contact."
+"insera în acest mesaj sau o puteți utiliza ca avatar pentru acest contact."
 
 msgid "Set as buddy icon"
 msgstr "Utilizează ca avatar"
@@ -14090,20 +14103,20 @@
 msgstr "Inserează în mesaj"
 
 msgid "Would you like to set it as the buddy icon for this user?"
-msgstr "Doriți să o setați ca avatar pentru acest contact?"
+msgstr "Doriți să o utilizați ca avatar pentru acest contact?"
 
 msgid ""
 "You can send this image as a file transfer, or use it as the buddy icon for "
 "this user."
 msgstr ""
 "Puteți trimite această imagine printr-un transfer de fișiere sau o puteți "
-"seta ca avatar pentru acest contact."
+"utiliza ca avatar pentru acest contact."
 
 msgid ""
 "You can insert this image into this message, or use it as the buddy icon for "
 "this user"
 msgstr ""
-"Puteți insera imaginea în acest mesaj sau o puteți seta ca avatar pentru "
+"Puteți insera imaginea în acest mesaj sau o puteți utiliza ca avatar pentru "
 "acest contact."
 
 #. I don't know if we really want to do anything here.  Most of
@@ -14145,7 +14158,7 @@
 msgstr "Nu s-a putut utiliza iconița"
 
 msgid "_Open Link"
-msgstr "_Deschide linkul"
+msgstr "_Deschide adresa"
 
 msgid "_Copy Link Location"
 msgstr "_Copiază adresa"
@@ -14192,7 +14205,7 @@
 msgstr "_Invită"
 
 msgid "_Modify..."
-msgstr "_Modifică..."
+msgstr "E_ditare..."
 
 msgid "_Add..."
 msgstr "_Adaugă..."
@@ -14254,7 +14267,7 @@
 #. *< name
 #. *< version
 msgid "Contact Availability Prediction plugin."
-msgstr "Modul pentru disponibilitatea contactelor"
+msgstr "Modul pentru prevederea disponibilității contactelor."
 
 #. *  summary
 msgid "Displays statistical information about your buddies' availability"
@@ -14391,7 +14404,7 @@
 msgstr "Descoperire de servicii"
 
 msgid "_Browse"
-msgstr "_Navigare:"
+msgstr "_Navigare"
 
 msgid "Server does not exist"
 msgstr "Server inexistent"
@@ -14403,7 +14416,7 @@
 msgstr "Descoperire de servicii XMPP"
 
 msgid "Allows browsing and registering services."
-msgstr "Permite navigarea și înregistrarea serviciilor"
+msgstr "Permite navigarea și înregistrarea de servicii XMPP."
 
 msgid ""
 "This plugin is useful for registering with legacy transports or other XMPP "
@@ -14416,7 +14429,7 @@
 msgstr "După numărul discuțiilor"
 
 msgid "Conversation Placement"
-msgstr "Plasament discuții"
+msgstr "Plasarea discuțiilor"
 
 #. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
 msgid ""
@@ -14440,12 +14453,12 @@
 #. *< priority
 #. *< id
 msgid "ExtPlacement"
-msgstr "Ferestre extra"
+msgstr "Plasare extra"
 
 #. *< name
 #. *< version
 msgid "Extra conversation placement options."
-msgstr "Opțiuni de plasare a discuțiilor în plus."
+msgstr "Opțiuni suplimentare de plasare a discuțiilor."
 
 #. *< summary
 #. *  description
@@ -14651,7 +14664,7 @@
 msgstr "Adaugă o căsuță în lista de contacte care vă anunță mailurile noi."
 
 msgid "Markerline"
-msgstr "Marcaj mesaje noi"
+msgstr "Marcaj pentru mesaje noi"
 
 msgid "Draw a line to indicate new messages in a conversation."
 msgstr "Marchează cu o linie mesajele noi dintr-o discuție."
@@ -14790,7 +14803,7 @@
 #. *< priority
 #. *< id
 msgid "Message Notification"
-msgstr "Notificări mesaje"
+msgstr "Notificări pentru mesaje"
 
 #. *< name
 #. *< version
@@ -14827,10 +14840,10 @@
 "- Trimite un mesaj contactelor din listă atunci când se autentifică."
 
 msgid "Hyperlink Color"
-msgstr "Culoare adresă web"
+msgstr "Culoarea adresei web"
 
 msgid "Visited Hyperlink Color"
-msgstr "Culoare adresă web vizitată"
+msgstr "Culoarea adresei web vizitate"
 
 msgid "Highlighted Message Name Color"
 msgstr "Numele culorii pentru evidențierea mesajelor"
@@ -14845,13 +14858,13 @@
 msgstr "Introducere text"
 
 msgid "Conversation History"
-msgstr "Istoricul discuției"
+msgstr "Înregistrări de discuții"
 
 msgid "Request Dialog"
-msgstr "Dialog cerere"
+msgstr "Fereastră de dialog"
 
 msgid "Notify Dialog"
-msgstr "Dialog notificare"
+msgstr "Fereastră de notificare"
 
 msgid "Select Color"
 msgstr "Alegeți o culoare"
@@ -14865,10 +14878,10 @@
 msgstr "Alegeți un font pentru %s"
 
 msgid "GTK+ Interface Font"
-msgstr "Font interfață GTK+"
+msgstr "Fontul interfeței GTK+"
 
 msgid "GTK+ Text Shortcut Theme"
-msgstr "Temă combinații de taste GTK+ Text"
+msgstr "Tema de combinații de taste GTK+ Text"
 
 msgid "Disable Typing Notification Text"
 msgstr "Dezactivează textul notificării la tastare"
@@ -14896,7 +14909,7 @@
 msgstr "Recitește fișierele gtkrc"
 
 msgid "Pidgin GTK+ Theme Control"
-msgstr "Control temă GTK+ Pidgin"
+msgstr "Modificare a temei GTK+ în Pidgin"
 
 msgid "Provides access to commonly used gtkrc settings."
 msgstr "Permite accesul la cele mai uzuale opțiuni gtkrc."
@@ -14935,7 +14948,7 @@
 #. *< priority
 #. *< id
 msgid "Release Notification"
-msgstr "Notificări versiuni noi"
+msgstr "Notificări pentru versiuni noi"
 
 #. *< name
 #. *< version
@@ -14965,7 +14978,7 @@
 #. *< name
 #. *< version
 msgid "Conversation Window Send Button."
-msgstr "Buton de trimitere în fereastra de discuții"
+msgstr "Buton de trimitere în fereastra de discuții."
 
 #. *< summary
 msgid ""
@@ -15019,10 +15032,10 @@
 msgstr "Activează corectarea ultimului cuvânt la trimitere"
 
 msgid "Text replacement"
-msgstr "Corecturi text"
+msgstr "Corecturi de text"
 
 msgid "Replaces text in outgoing messages according to user-defined rules."
-msgstr "Schimbă mesajele trimise după reguli predefinite de utilizator."
+msgstr "Schimbă mesajele trimise după reguli predefinite."
 
 msgid "Just logged in"
 msgstr "Tocmai s-a autentificat"
@@ -15148,7 +15161,7 @@
 #. *< version
 #. *  summary
 msgid "Display iChat-style timestamps"
-msgstr "Marcaje de timp în stil iChat"
+msgstr "Marcaje de timp în stil iChat."
 
 #. *  description
 msgid "Display iChat-style timestamps every N minutes."
@@ -15192,7 +15205,7 @@
 #. *< priority
 #. *< id
 msgid "Message Timestamp Formats"
-msgstr "Formatare marcaje de timp"
+msgstr "Formatare pentru marcajele de timp"
 
 #. *< name
 #. *< version
@@ -15370,7 +15383,7 @@
 #. *< version
 #. *  summary
 msgid "Send and receive raw XMPP stanzas."
-msgstr "Trimitere și primire blocuri XMPP brute"
+msgstr "Trimitere și primire de blocuri XMPP brute"
 
 #. *  description
 msgid "This plugin is useful for debugging XMPP servers or clients."
@@ -15519,6 +15532,13 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "Nu aveţi drepturile de acces necesare dezinstalării acestei aplicaţii."
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr ""
+#~ "Refuză automat pentru utilizatorii ce nu fac parte din lista de contacte"
+
+#~ msgid "bug master"
+#~ msgstr "admin al rapoartelor de erori"
+
 #~ msgid "Error requesting %s"
 #~ msgstr "Eroare la cererea %s"
 
--- a/po/ru.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/ru.po	Sat Feb 12 23:54:14 2011 +0000
@@ -3,14 +3,14 @@
 # Sergey Volozhanin <svo@asplinux.ru>, 2001.
 # Alexandre Prokoudine <avp@altlinux.ru>, 2003, 2004.
 # Dmitry Beloglazov <dmaa@users.sf.net>, 2004-2008.
-# Антон Самохвалов <samant.ua@mail.ru>, 2008-2010.
+# Антон Самохвалов <samant.ua@mail.ru>, 2008-2011.
 #
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: ru\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:34-0500\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
 "PO-Revision-Date: 2008-05-14 15:00+0400\n"
 "Last-Translator: Антон Самохвалов <samant.ua@mail.ru>\n"
 "Language-Team: \n"
@@ -1277,9 +1277,8 @@
 msgid "Someone says your username in chat"
 msgstr "Кто-то произносит ваше имя пользователя в чате"
 
-#, fuzzy
 msgid "Attention received"
-msgstr "Требуется активация"
+msgstr "Получено внимание"
 
 msgid "GStreamer Failure"
 msgstr "Ошибка GStreamer"
@@ -1566,10 +1565,10 @@
 msgid "TinyURL plugin"
 msgstr "Модуль TinyURL"
 
-#, fuzzy
 msgid "When receiving a message with URL(s), use TinyURL for easier copying"
 msgstr ""
-"При получении сообщения с адресами URL, TinyURL для облегчённого копирования"
+"При получении сообщения с адресами URL, использовать TinyURL для облегчения "
+"копирования"
 
 msgid "Online"
 msgstr "В сети"
@@ -1667,13 +1666,11 @@
 msgid "Set User Info"
 msgstr "Установить пользовательскую информацию"
 
-#, fuzzy
 msgid "This protocol does not support setting a public alias."
-msgstr "Этот протокол не поддерживает чаты."
-
-#, fuzzy
+msgstr "Этот протокол не поддерживает установку общего доменного имени."
+
 msgid "This protocol does not support fetching the public alias."
-msgstr "Этот протокол не поддерживает чаты."
+msgstr "Этот протокол не поддерживает получение общего доменного имени."
 
 msgid "Unknown"
 msgstr "Неизвестно"
@@ -1702,13 +1699,12 @@
 "Сертификат ещё не подтверждён.  Проверьте правильность даты и времени на "
 "вашем компьютере."
 
-#, fuzzy
 msgid ""
 "The certificate has expired and should not be considered valid.  Check that "
 "your computer's date and time are accurate."
 msgstr ""
-"Сертификат ещё не подтверждён.  Проверьте правильность даты и времени на "
-"вашем компьютере."
+"Срок сертификата истёк и его больше нельзя считать действительным.  "
+"Проверьте правильность времени и даты на вашем компьютере."
 
 #. Translators: "domain" refers to a DNS domain (e.g. talk.google.com)
 msgid "The certificate presented is not issued to this domain."
@@ -2361,8 +2357,11 @@
 "Сохранять файлы в\n"
 "(укажите полный путь)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "Отвергать автоматически от пользователей не из списка собеседников"
+#, fuzzy
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr "При поступлении запроса передачи файлов от %s"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2375,6 +2374,10 @@
 msgid "Create a new directory for each user"
 msgstr "Создайте для каждого пользователя новую папку"
 
+#, fuzzy
+msgid "Escape the filenames"
+msgstr "%s отменил передачу файла"
+
 msgid "Notes"
 msgstr "Заметки"
 
@@ -3838,7 +3841,10 @@
 msgstr ""
 "Сервер требует аутентификацию простым текстом через нешифрованный поток"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Неверный отклик от сервера"
 
@@ -3900,21 +3906,20 @@
 "The server does support channel binding, but did not appear to advertise "
 "it.  This indicates a likely MITM attack"
 msgstr ""
-
-#, fuzzy
+"Этот сервер не поддерживает привязку канала, но не выглядит его рекламой. "
+"Это говорит о возможной MITM атаке"
+
 msgid "Server does not support channel binding"
-msgstr "Сервер не поддерживает блокировку"
-
-#, fuzzy
+msgstr "Сервер не поддерживает привязку канала"
+
 msgid "Unsupported channel binding method"
-msgstr "Неподдерживаемая кодировка"
+msgstr "Неподдерживаемый метод привязки канала"
 
 msgid "User not found"
 msgstr "Пользователь не найден"
 
-#, fuzzy
 msgid "Invalid Username Encoding"
-msgstr "Неверное имя пользователя"
+msgstr "Неверная кодировка имя пользователя"
 
 msgid "Resource Constraint"
 msgstr "Недостаток ресурсов"
@@ -4367,15 +4372,13 @@
 msgstr "Текст настроения"
 
 msgid "Allow Buzz"
-msgstr "Разрешить сплетни"
-
-#, fuzzy
+msgstr "Разрешить оклики"
+
 msgid "Mood Name"
-msgstr "Отчество"
-
-#, fuzzy
+msgstr "Имя настроения"
+
 msgid "Mood Comment"
-msgstr "Комментарий собеседника"
+msgstr "Комментарий настроения"
 
 #. primitive
 #. ID
@@ -4631,7 +4634,7 @@
 
 #, c-format
 msgid "%s has buzzed you!"
-msgstr "%s позвал вас!"
+msgstr "%s окликнул вас!"
 
 #, c-format
 msgid "Buzzing %s..."
@@ -4645,19 +4648,18 @@
 msgid "Unable to initiate media with %s: user is not online"
 msgstr "Обмен файлами с %s не удаётся: пользователь не в сети"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Unable to initiate media with %s: not subscribed to user presence"
-msgstr ""
-"Обмен файлами с %s не удаётся: нет подписки на присутствие пользователя"
+msgstr "Обмен файлами с %s не удался: нет подписки на присутствие пользователя"
 
 msgid "Media Initiation Failed"
 msgstr "Обмен файлами не удался"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Please select the resource of %s with which you would like to start a media "
 "session."
-msgstr "Выберите ресурс %s, которому вы хотели бы отправить файл"
+msgstr "Выберите ресурс %s, с которым вы хотели бы начать обмен файлами"
 
 msgid "Select a Resource"
 msgstr "Выбрать ресурс"
@@ -4723,11 +4725,10 @@
 msgstr "прозвон &lt;jid&gt;:\tПрозвонить пользователя/компонент/сервер."
 
 msgid "buzz: Buzz a user to get their attention"
-msgstr "трёп: окликнуть пользователя, чтобы привлечь его внимание"
-
-#, fuzzy
+msgstr "оклик: окликнуть пользователя, чтобы привлечь его внимание"
+
 msgid "mood: Set current user mood"
-msgstr "Выберите корректного пользователя"
+msgstr "настроение: Установите текущее настроение пользователя"
 
 msgid "Extended Away"
 msgstr "Расширенный \"Отошёл\""
@@ -4749,20 +4750,17 @@
 msgid "Domain"
 msgstr "Домен"
 
-#, fuzzy
 msgid "Require encryption"
-msgstr "Требовать авторизацию"
-
-#, fuzzy
+msgstr "Требовать шифрование"
+
 msgid "Use encryption if available"
-msgstr "Пользовательская информация для %s недоступна"
+msgstr "Если доступно, использовать шифрование"
 
 msgid "Use old-style SSL"
-msgstr ""
-
-#, fuzzy
+msgstr "Использовать SSL старого образца"
+
 msgid "Connection security"
-msgstr "Сброс соединения"
+msgstr "Безопасность соединения"
 
 msgid "Allow plaintext auth over unencrypted streams"
 msgstr "Разрешить идентификацию простым текстом через нешифрованные потоки"
@@ -4892,31 +4890,26 @@
 msgid "Please select the resource of %s to which you would like to send a file"
 msgstr "Выберите ресурс %s, которому вы хотели бы отправить файл"
 
-#, fuzzy
 msgid "Afraid"
-msgstr "Арабский"
-
-#, fuzzy
+msgstr "Боязливый"
+
 msgid "Amazed"
-msgstr "Стыдящийся"
-
-#, fuzzy
+msgstr "Изумлённый"
+
 msgid "Amorous"
-msgstr "Великолепный"
+msgstr "Влюбчивый"
 
 msgid "Angry"
 msgstr "Рассерженный"
 
-#, fuzzy
 msgid "Annoyed"
-msgstr "Изгнан"
+msgstr "Раздражённый"
 
 msgid "Anxious"
 msgstr "Озабоченный"
 
-#, fuzzy
 msgid "Aroused"
-msgstr "Вы отправляете"
+msgstr "Возбуждённый"
 
 msgid "Ashamed"
 msgstr "Стыдящийся"
@@ -4924,82 +4917,65 @@
 msgid "Bored"
 msgstr "Скучающий"
 
-#, fuzzy
 msgid "Brave"
-msgstr "Сохранить"
-
-#, fuzzy
+msgstr "Храбрый"
+
 msgid "Calm"
-msgstr "Сфера"
-
-#, fuzzy
+msgstr "Тихий"
+
 msgid "Cautious"
-msgstr "Чаты"
-
-#, fuzzy
+msgstr "Осторожный"
+
 msgid "Cold"
-msgstr "Жирный"
-
-#, fuzzy
+msgstr "Холодный"
+
 msgid "Confident"
-msgstr "Конфликт"
-
-#, fuzzy
+msgstr "Уверенный"
+
 msgid "Confused"
-msgstr "Продолжить"
-
-#, fuzzy
+msgstr "Обескураженный"
+
 msgid "Contemplative"
-msgstr "Контакт"
-
-#, fuzzy
+msgstr "Задумчивый"
+
 msgid "Contented"
-msgstr "Соединение установлено"
-
-#, fuzzy
+msgstr "Довольный"
+
 msgid "Cranky"
-msgstr "Компания"
+msgstr "Капризный"
 
 msgid "Crazy"
-msgstr ""
-
-#, fuzzy
+msgstr "Сумасшедший"
+
 msgid "Creative"
-msgstr "Создать"
-
-#, fuzzy
+msgstr "Творческий"
+
 msgid "Curious"
-msgstr "Великолепный"
-
-#, fuzzy
+msgstr "Любопытный"
+
 msgid "Dejected"
-msgstr "Отклонено"
-
-#, fuzzy
+msgstr "Удручённый"
+
 msgid "Depressed"
-msgstr "Удалено"
-
-#, fuzzy
+msgstr "Подавленный"
+
 msgid "Disappointed"
-msgstr "Соединение разорвано."
+msgstr "Разочарованный"
 
 msgid "Disgusted"
-msgstr ""
-
-#, fuzzy
+msgstr "Отвращающий"
+
 msgid "Dismayed"
-msgstr "Отключено"
-
-#, fuzzy
+msgstr "Встревоженный"
+
 msgid "Distracted"
-msgstr "Независимый"
+msgstr "Рассеянный"
 
 msgid "Embarrassed"
-msgstr ""
-
-#, fuzzy
+msgstr "Стеснительный"
+
 msgid "Envious"
-msgstr "Озабоченный"
+msgstr "Завистливый"
 
 msgid "Excited"
 msgstr "Возбуждённый"
@@ -5469,9 +5445,8 @@
 msgid "Other Locations"
 msgstr "Местоположение пользователя"
 
-#, fuzzy
 msgid "You can sign out from other locations here"
-msgstr "Вы уже откуда-то подключены"
+msgstr "Здесь Вы можете отключиться из других мест"
 
 #. TODO: Due to limitations in our current request field API, the
 #. following string will show up with a trailing colon.  This should
@@ -5479,18 +5454,16 @@
 #. a separate purple_request_field_label_new_without_colon function,
 #. or by never automatically adding the colon and requiring that
 #. callers add the colon themselves.
-#, fuzzy
 msgid "You are not signed in from any other locations."
-msgstr "Вы уже откуда-то подключены"
-
-#, fuzzy
+msgstr "Вы ниоткуда не вошли в сеть."
+
 msgid "Allow multiple logins?"
-msgstr "Разрешить одновременный вход с разных мест"
+msgstr "Разрешить одновременные входы с разных мест?"
 
 msgid ""
 "Do you want to allow or disallow connecting from multiple locations "
 "simultaneously?"
-msgstr ""
+msgstr "Вы разрешаете одновременный вход в сеть из разных мест или нет?"
 
 msgid "Allow"
 msgstr "Разрешить"
@@ -5812,12 +5785,11 @@
 msgid "Show custom smileys"
 msgstr "Показать свои смайлики"
 
-#, fuzzy
 msgid "Allow direct connections"
-msgstr "Не удаётся создать соединение"
+msgstr "Разрешить прямые соединения"
 
 msgid "Allow connecting from multiple locations"
-msgstr ""
+msgstr "Разрешить соединения из нескольких мест"
 
 msgid "nudge: nudge a user to get their attention"
 msgstr "подталкивание: подтолкнуть пользователя, чтобы привлечь его внимание"
@@ -5825,13 +5797,11 @@
 msgid "Windows Live ID authentication:Unable to connect"
 msgstr "Аутентификация Windows Live ID: не могу соединиться"
 
-#, fuzzy
 msgid "Windows Live ID authentication:Invalid response"
-msgstr "Аутентификация Windows Live ID: неверный ответ"
-
-#, fuzzy
+msgstr "Аутентификация Windows Live ID:некорректный ответ"
+
 msgid "The following users are missing from your addressbook"
-msgstr "Следующие пользователи отсутствуют в вашей адресной книге"
+msgstr "Следующие пользователи из вашей адресной книги отсутствуют"
 
 #, c-format
 msgid "Unknown error (%d): %s"
@@ -6043,9 +6013,8 @@
 msgid "The two PINs you entered do not match."
 msgstr "Два введённых PIN-кода не совпадают."
 
-#, fuzzy
 msgid "The Display Name you entered is invalid."
-msgstr "Введённое имя неправильное."
+msgstr "Введённое Вами имя отображения некорректно."
 
 msgid ""
 "The birthday you entered is invalid. The correct format is: 'YYYY-MM-DD'."
@@ -6065,7 +6034,7 @@
 "Информация о вашем профиле ещё не получена. Пожалуйста, попробуйте позже."
 
 msgid "Your UID"
-msgstr ""
+msgstr "Ваш UID"
 
 #. pin
 #. pin (required)
@@ -6128,26 +6097,23 @@
 msgid "Logging In..."
 msgstr "Входит в сеть..."
 
-#, fuzzy
 msgid ""
 "Unable to connect to the MXit server. Please check your server settings."
 msgstr ""
-"Не удаётся соединиться с сервером MXit. Пожалуйста, проверьте ваши настройки "
-"сервера."
+"Не удаётся соединиться с сервером MXit. Пожалуйста, проверьте настройки "
+"вашего сервера."
 
 msgid "Connecting..."
 msgstr "Соединение..."
 
-#, fuzzy
 msgid "The PIN you entered has an invalid length [7-10]."
-msgstr "Введённый ключ SecurID неверный."
+msgstr "Введённый Вами PIN-код неправильной длины [7-10]."
 
 #. mxit login name
 msgid "MXit ID"
-msgstr ""
+msgstr "MXit ID"
 
 #. show the form to the user to complete
-#, fuzzy
 msgid "Register New MXit Account"
 msgstr "Зарегистрировать новую учётную запись MXit"
 
@@ -6212,6 +6178,24 @@
 msgid "Retrieving User Information..."
 msgstr "Получение информации о пользователе..."
 
+#. you were kicked
+#, fuzzy
+msgid "You have been kicked from this MultiMX."
+msgstr "Вас выгнали: (%s)"
+
+#, fuzzy
+msgid "was kicked"
+msgstr "Неверный билет"
+
+#, fuzzy
+msgid "_Room Name:"
+msgstr "_Комната:"
+
+#. Display system message in chat window
+#, fuzzy
+msgid "You have invited"
+msgstr "Вам пришла почта!"
+
 msgid "Loading menu..."
 msgstr "Загрузка меню..."
 
@@ -6241,24 +6225,6 @@
 msgid "Enable splash-screen popup"
 msgstr "Включить контекстное меню экрана-заставки"
 
-#. you were kicked
-#, fuzzy
-msgid "You have been kicked from this MultiMX."
-msgstr "Вас выгнали: (%s)"
-
-#, fuzzy
-msgid "was kicked"
-msgstr "Неверный билет"
-
-#, fuzzy
-msgid "_Room Name:"
-msgstr "_Комната:"
-
-#. Display system message in chat window
-#, fuzzy
-msgid "You have invited"
-msgstr "Вам пришла почта!"
-
 #, fuzzy
 msgid "Last Online"
 msgstr "В сети"
@@ -7047,6 +7013,8 @@
 "You required encryption in your account settings, but one of the servers "
 "doesn't support it."
 msgstr ""
+"Вы запросили шифрование настройками учётной записи, но один из серверов его "
+"не поддерживает"
 
 #. Note to translators: The first %s is a URL, the second is an
 #. error message.
@@ -7054,9 +7022,8 @@
 msgid "Error requesting %s: %s"
 msgstr "Ошибка запроса %s: %s"
 
-#, fuzzy
 msgid "The server returned an empty response"
-msgstr "Не удаётся соединиться: сервер вернул пустой ответ."
+msgstr "Сервер ответил тишиной"
 
 msgid ""
 "Server requested that you fill out a CAPTCHA in order to sign in, but this "
@@ -7365,6 +7332,8 @@
 "You required encryption in your account settings, but encryption is not "
 "supported by your system."
 msgstr ""
+"Вы запросили шифрование настройками учётной записи, но ваша система не "
+"поддерживает его."
 
 #, c-format
 msgid "You may be disconnected shortly.  If so, check %s for updates."
@@ -7973,75 +7942,6 @@
 "Картинок IM. Поскольку ваш IP-адрес будет открыт, это может повлечь угрозу "
 "конфиденциальности."
 
-msgid "Invalid SNAC"
-msgstr "Неверный SNAC"
-
-msgid "Server rate limit exceeded"
-msgstr "Превышен предел скорости сервера"
-
-msgid "Client rate limit exceeded"
-msgstr "Превышен предел скорости клиента"
-
-msgid "Service unavailable"
-msgstr "Служба недоступна"
-
-msgid "Service not defined"
-msgstr "Служба не определена"
-
-msgid "Obsolete SNAC"
-msgstr "Устаревший SNAC"
-
-msgid "Not supported by host"
-msgstr "Не поддерживается узлом"
-
-msgid "Not supported by client"
-msgstr "Не поддерживается клиентом"
-
-msgid "Refused by client"
-msgstr "Отвергнуто клиентом"
-
-msgid "Reply too big"
-msgstr "Ответ слишком велик"
-
-msgid "Responses lost"
-msgstr "Отклики потеряны"
-
-msgid "Request denied"
-msgstr "Запрос отвергнут"
-
-msgid "Busted SNAC payload"
-msgstr "Сломана полезная нагрузка SNAC"
-
-msgid "Insufficient rights"
-msgstr "Недостаточные права"
-
-msgid "In local permit/deny"
-msgstr "В местном разрешении/запрете"
-
-msgid "Warning level too high (sender)"
-msgstr "Уровень предупреждения слишком высок (отправитель)"
-
-msgid "Warning level too high (receiver)"
-msgstr "Уровень предупреждения слишком высок (получатель)"
-
-msgid "User temporarily unavailable"
-msgstr "Пользователь временно недоступен"
-
-msgid "No match"
-msgstr "Нет совпадения"
-
-msgid "List overflow"
-msgstr "Переполнение списка"
-
-msgid "Request ambiguous"
-msgstr "Неясный запрос"
-
-msgid "Queue full"
-msgstr "Очередь полна"
-
-msgid "Not while on AOL"
-msgstr "Не в AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "Значок собеседника"
@@ -8160,58 +8060,122 @@
 msgid "Capabilities"
 msgstr "Возможности"
 
+msgid "Invalid SNAC"
+msgstr "Неверный SNAC"
+
+msgid "Server rate limit exceeded"
+msgstr "Превышен предел скорости сервера"
+
+msgid "Client rate limit exceeded"
+msgstr "Превышен предел скорости клиента"
+
+msgid "Service unavailable"
+msgstr "Служба недоступна"
+
+msgid "Service not defined"
+msgstr "Служба не определена"
+
+msgid "Obsolete SNAC"
+msgstr "Устаревший SNAC"
+
+msgid "Not supported by host"
+msgstr "Не поддерживается узлом"
+
+msgid "Not supported by client"
+msgstr "Не поддерживается клиентом"
+
+msgid "Refused by client"
+msgstr "Отвергнуто клиентом"
+
+msgid "Reply too big"
+msgstr "Ответ слишком велик"
+
+msgid "Responses lost"
+msgstr "Отклики потеряны"
+
+msgid "Request denied"
+msgstr "Запрос отвергнут"
+
+msgid "Busted SNAC payload"
+msgstr "Сломана полезная нагрузка SNAC"
+
+msgid "Insufficient rights"
+msgstr "Недостаточные права"
+
+msgid "In local permit/deny"
+msgstr "В местном разрешении/запрете"
+
+msgid "Warning level too high (sender)"
+msgstr "Уровень предупреждения слишком высок (отправитель)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Уровень предупреждения слишком высок (получатель)"
+
+msgid "User temporarily unavailable"
+msgstr "Пользователь временно недоступен"
+
+msgid "No match"
+msgstr "Нет совпадения"
+
+msgid "List overflow"
+msgstr "Переполнение списка"
+
+msgid "Request ambiguous"
+msgstr "Неясный запрос"
+
+msgid "Queue full"
+msgstr "Очередь полна"
+
+msgid "Not while on AOL"
+msgstr "Не в AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
 msgid "Appear Online"
-msgstr "Появляется в сети"
+msgstr "Видимый для всех"
 
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear offline to the chosen user when your status is set to
 #. Invisible (this is the default).
-#, fuzzy
 msgid "Don't Appear Online"
-msgstr "Появляется в сети"
+msgstr "Невидимый лишь для избранных"
 
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to always appear offline to the chosen user (even when your status
 #. isn't Invisible).
 msgid "Appear Offline"
-msgstr "Вероятно не в сети"
+msgstr "Невидимый для всех"
 
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear offline to the chosen user if you are invisible, and
 #. appear online to the chosen user if you are not invisible (this is the
 #. default).
-#, fuzzy
 msgid "Don't Appear Offline"
-msgstr "Вероятно не в сети"
-
-#, fuzzy
+msgstr "Невидимый для избранных"
+
 msgid "you have no buddies on this list"
-msgstr "Вас выгнали: (%s)"
-
-#, fuzzy, c-format
+msgstr "в этом списке у вас нет собеседников"
+
+#, c-format
 msgid ""
 "You can add a buddy to this list by right-clicking on them and selecting \"%s"
 "\""
 msgstr ""
-"Вы можете запросить авторизацию от этих собеседников повторно, щёлкнув на "
-"них правой кнопкой мыши и выбрав \"Повторный запрос авторизации\"."
-
-#, fuzzy
+"Вы можете добавить собеседника в этот список правым щелчком мыши, выбрав "
+"затем \"%s\""
+
 msgid "Visible List"
-msgstr "Видимый"
+msgstr "Список видимости"
 
 msgid "These buddies will see your status when you switch to \"Invisible\""
-msgstr ""
-
-#, fuzzy
+msgstr "Эти собеседники увидят ваш статус при переключении в \"Невидимый\""
+
 msgid "Invisible List"
-msgstr "Список приглашённых"
+msgstr "Список невидимости"
 
 msgid "These buddies will always see you as offline"
-msgstr ""
+msgstr "Эти собеседники никогда не увидят вас в сети"
 
 msgid "Aquarius"
 msgstr "Водолей"
@@ -8811,14 +8775,14 @@
 msgid "Select Server"
 msgstr "Выберите сервер"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "Соединение по TCP"
@@ -11768,9 +11732,8 @@
 msgid "/Tools/Pr_ivacy"
 msgstr "/Средства/К_онфиденциальность"
 
-#, fuzzy
 msgid "/Tools/Set _Mood"
-msgstr "/Средства/Системный _журнал"
+msgstr "/Средства/Установить н_астроение"
 
 msgid "/Tools/_File Transfers"
 msgstr "/Средства/Передача _файлов"
@@ -11791,20 +11754,17 @@
 msgid "/Help/Online _Help"
 msgstr "/Помощь/Помощь в _сети"
 
-#, fuzzy
 msgid "/Help/_Build Information"
-msgstr "Информация о собеседнике"
+msgstr "/Помощь/Информация о с_борке"
 
 msgid "/Help/_Debug Window"
 msgstr "/Помощь/Окно _отладки"
 
-#, fuzzy
 msgid "/Help/De_veloper Information"
-msgstr "Информация о сервере"
-
-#, fuzzy
+msgstr "/Помощь/Информация о разработ_чике"
+
 msgid "/Help/_Translator Information"
-msgstr "Персональная информация"
+msgstr "/Помощь/Информация о перево_дчике"
 
 msgid "/Help/_About"
 msgstr "/Помощь/О _программе"
@@ -12426,9 +12386,6 @@
 msgid "Fatal Error"
 msgstr "Неисправимая ошибка"
 
-msgid "bug master"
-msgstr "мастер глюков"
-
 msgid "artist"
 msgstr "исполнитель"
 
@@ -12611,6 +12568,10 @@
 msgid "Maithili"
 msgstr "Суахили"
 
+#, fuzzy
+msgid "Meadow Mari"
+msgstr "Новая почта"
+
 msgid "Macedonian"
 msgstr "Македонский"
 
@@ -12727,7 +12688,7 @@
 msgid "Lithuanian"
 msgstr "Литовский"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s is a messaging client based on libpurple which is capable of connecting "
 "to multiple messaging services at once.  %s is written in C using GTK+.  %s "
@@ -12736,15 +12697,12 @@
 "copyrighted by its contributors, a list of whom is also distributed with "
 "%s.  There is no warranty for %s.<BR><BR>"
 msgstr ""
-"%s - графический модульный клиент обмена сообщениями, основывающийся на "
-"библиотеке libpurple, позволяющей использовать AIM, MSN, Yahoo!, XMPP, ICQ, "
-"IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, "
-"MySpaceIM, Gadu-Gadu и QQ одновременно.  Написан с использованием GTK+."
-"<BR><BR>Вы можете изменять и распространять программу по условиям GPL "
-"(версии 2 или более поздней).  Копия GPL содержится в файле 'COPYING', "
-"распространяемом с %s.  Авторские права на %s принадлежат участникам "
-"проекта.  Полный список участников проекта смотрите в файле 'COPYRIGHT'.  Мы "
-"не предоставляем никаких гарантий на эту программу.<BR><BR>"
+"%s - клиент обмена сообщениями, основанный на библиотеке libpurple, которая "
+"позволяет одновременно подключаться по нескольким службам. %s написан на С с "
+"использованием GTK+. %s выпущен, и может быть изменён или перераспределён, "
+"по условиям GPL версии 2 (или поздней).  Копия GPL распространяется вместе с "
+"%s. Права на %s защищены его участниками, список которых также "
+"распространяется с %s.  Гарантия на %s не предоставляется. <BR><BR>"
 
 #, c-format
 msgid ""
@@ -12753,8 +12711,11 @@
 "Channel: #pidgin on irc.freenode.net<BR>\tXMPP MUC: devel@conference.pidgin."
 "im<BR><BR>"
 msgstr ""
-
-#, fuzzy, c-format
+"<FONT SIZE=\"4\"><B>Полезные ресурсы</B></FONT><BR>\t<A HREF=\"%s\">Веб-"
+"сайт</A><BR>\t<A HREF=\"%s\">Часто задаваемые вопросы</A><BR>\tIRC канал: "
+"#pidgin на irc.freenode.net<BR>\tXMPP MUC: devel@conference.pidgin.im<BR><BR>"
+
+#, c-format
 msgid ""
 "<font size=\"4\"><b>Help from other Pidgin users</b></font> is available by "
 "e-mailing <a href=\"mailto:support@pidgin.im\">support@pidgin.im</a><br/"
@@ -12764,25 +12725,25 @@
 "welcome to post in another language, but the responses may be less helpful."
 "<br/>"
 msgstr ""
-"<font size=\"4\">Помощь от других пользователей Pidgin:</font> <a href="
-"\"mailto:support@pidgin.im\">support@pidgin.im</a><br/>Это <b>публичная</b> "
-"почтовая рассылка! (<a href=\"http://pidgin.im/pipermail/support/\">архив</"
-"a>)<br/>Мы не можем помочь по сторонним протоколам или модулям!<br/>Основной "
-"язык этой рассылки - <b>английский</b>.  Вы, конечно, можете писать на "
-"другом языке, но ответы могут быть менее полезными.<br/><br/>"
+"<font size=\"4\"><b>Помощь от других пользователей Pidgin</b></font> "
+"доступна по эл.почте <a href=\"mailto:support@pidgin.im\">support@pidgin.im</"
+"a><br/>Это <b>публичная</b> почтовая рассылка! (<a href=\"http://pidgin.im/"
+"pipermail/support/\">архив</a>)<br/>Мы не можем помочь по протоколам или "
+"модулям третьих лиц!<br/>Основной язык этой рассылки - <b>английский</b>.  "
+"Вы, конечно, можете писать на другом языке, но ответы могут оказаться менее "
+"полезными.<br/>"
 
 #, c-format
 msgid "About %s"
 msgstr "О %s"
 
-#, fuzzy
 msgid "Build Information"
-msgstr "Информация о собеседнике"
+msgstr "Информация о сборке"
 
 #. End of not to be translated section
-#, fuzzy, c-format
+#, c-format
 msgid "%s Build Information"
-msgstr "Информация о собеседнике"
+msgstr "Информация о сборке %s"
 
 msgid "Current Developers"
 msgstr "Текущие разработчики"
@@ -13210,7 +13171,7 @@
 msgstr "Уменьшить размер шрифта"
 
 msgid "Font Face"
-msgstr "Облик шрифта"
+msgstr "Вид шрифта"
 
 msgid "Foreground Color"
 msgstr "Цвет текста"
@@ -13224,9 +13185,8 @@
 msgid "Insert Smiley"
 msgstr "Вставить смайлик"
 
-#, fuzzy
 msgid "Send Attention"
-msgstr "Кнопка отправки"
+msgstr "Обратить внимание"
 
 msgid "<b>_Bold</b>"
 msgstr "<b>_Жирный</b>"
@@ -13253,7 +13213,7 @@
 #. * need to update them when formatting changes. The above items don't need
 #. * no updating nor nothin'
 msgid "_Font face"
-msgstr "_Облик шрифта"
+msgstr "_Вид шрифта"
 
 msgid "Foreground _color"
 msgstr "Цвет _текста"
@@ -13405,13 +13365,11 @@
 msgid "Exiting because another libpurple client is already running.\n"
 msgstr "Выхожу, потому что уже запущен другой клиент libpurple.\n"
 
-#, fuzzy
 msgid "_Media"
 msgstr "/_Медиа"
 
-#, fuzzy
 msgid "_Hangup"
-msgstr "Приостановить разговор"
+msgstr "_Удержать звонок"
 
 #, c-format
 msgid "%s wishes to start an audio/video session with you."
@@ -13471,9 +13429,8 @@
 msgid "Dismiss"
 msgstr "Распустить"
 
-#, fuzzy
 msgid "<span weight=\"bold\" size=\"larger\">You have pounced!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Вам пришла почта!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">На вас набросились!</span>"
 
 msgid "The following plugins will be unloaded."
 msgstr "Следующие модули будут выгружены."
@@ -13660,14 +13617,13 @@
 msgstr "Выборы тем"
 
 #. Instructions
-#, fuzzy
 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 ""
-"Из списка ниже, выберите тему смайликов, которую вы бы хотели использовать.\n"
-" Новые темы можно установить перетаскиванием их в список тем."
+"Из списка ниже выберите тему, которую вы хотели бы использовать.\n"
+"Новые темы можно установить перетаскиванием их в список тем."
 
 msgid "Buddy List Theme:"
 msgstr "Тема Списка собеседников:"
@@ -13817,9 +13773,8 @@
 msgid "_Enable automatic router port forwarding"
 msgstr "_Разрешить автоматическую переадресацию портов маршрутизатора"
 
-#, fuzzy
 msgid "_Manually specify range of ports to listen on:"
-msgstr "Указать диапазон прослушиваемых портов _вручную"
+msgstr "Указать диапазон прослушивае_мых портов вручную:"
 
 msgid "_Start:"
 msgstr "_Начало:"
@@ -13834,9 +13789,8 @@
 msgid "_TURN server:"
 msgstr "_TURN сервер:"
 
-#, fuzzy
 msgid "_UDP Port:"
-msgstr "П_орт:"
+msgstr "_UDP порт:"
 
 msgid "Use_rname:"
 msgstr "Им_я пользователя:"
@@ -13860,7 +13814,7 @@
 msgstr "Konqueror"
 
 msgid "Google Chrome"
-msgstr ""
+msgstr "Google Chrome"
 
 #. Do not move the line below.  Code below expects gnome-open to be in
 #. * this list immediately after xdg-open!
@@ -13884,11 +13838,11 @@
 
 #. Translators: please do not translate "chromium-browser" here!
 msgid "Chromium (chromium-browser)"
-msgstr ""
+msgstr "Chromium (chromium-browser)"
 
 #. Translators: please do not translate "chrome" here!
 msgid "Chromium (chrome)"
-msgstr ""
+msgstr "Chromium (chrome)"
 
 msgid "Manual"
 msgstr "Другой"
@@ -13931,7 +13885,6 @@
 msgid "Proxy Server"
 msgstr "Прокси-сервер"
 
-#, fuzzy
 msgid "Proxy preferences are configured in GNOME preferences"
 msgstr "Настройки прокси выставляются в настройках GNOME"
 
@@ -14236,13 +14189,11 @@
 msgid "Select Buddy Icon"
 msgstr "Выбрать иконку собеседника"
 
-#, fuzzy
 msgid "Click to change your buddyicon for this account."
-msgstr "Щёлкните, чтобы изменить свою иконку для этой учётной записи."
-
-#, fuzzy
+msgstr "Щёлкните, чтобы изменить иконку для этой учётной записи."
+
 msgid "Click to change your buddyicon for all accounts."
-msgstr "Щёлкните, чтобы изменить свою иконку для всех учётных записей."
+msgstr "Щёлкните, чтобы изменить иконку для всех учётных записей."
 
 msgid "Waiting for network connection"
 msgstr "Ожидание сетевого соединения"
@@ -14260,7 +14211,7 @@
 msgstr "Google-общение"
 
 msgid "Facebook (XMPP)"
-msgstr ""
+msgstr "Facebook (XMPP)"
 
 #, c-format
 msgid "The following error has occurred loading %s: %s"
@@ -14328,13 +14279,12 @@
 msgid "Cannot send launcher"
 msgstr "Нельзя отправить ярлык"
 
-#, fuzzy
 msgid ""
 "You dragged a desktop launcher. Most likely you wanted to send the target of "
 "this launcher instead of this launcher itself."
 msgstr ""
-"Вы перетянули кнопку запуска рабочего стола. Скорее всего вы хотели "
-"отправить то, на что эта кнопка ссылается, а не саму её."
+"Вы перетянули значок запуска с рабочего стола. Скорее всего вы хотели "
+"отправить то, на что этот значок ссылается, а не его самого."
 
 #, c-format
 msgid ""
@@ -14357,7 +14307,6 @@
 msgid "Could not set icon"
 msgstr "Не удалось установить значок"
 
-#, fuzzy
 msgid "_Open Link"
 msgstr "_Открыть ссылку"
 
@@ -14367,28 +14316,23 @@
 msgid "_Copy Email Address"
 msgstr "_Скопировать адрес email"
 
-#, fuzzy
 msgid "_Open File"
-msgstr "Открыть файл..."
-
-#, fuzzy
+msgstr "_Открыть файл"
+
 msgid "Open _Containing Directory"
-msgstr "Открыть содержащий каталог"
+msgstr "Открыть _содержащую папку"
 
 msgid "Save File"
 msgstr "Сохранить файл"
 
-#, fuzzy
 msgid "_Play Sound"
-msgstr "Воспроизвести звук"
-
-#, fuzzy
+msgstr "_Воспроизводить звук"
+
 msgid "_Save File"
-msgstr "Сохранить файл"
-
-#, fuzzy
+msgstr "_Сохранить файл"
+
 msgid "Do you really want to clear?"
-msgstr "Вы действительно хотите удалить %s?"
+msgstr "Вы действительно хотите очистить?"
 
 msgid "Select color"
 msgstr "Выбрать цвет"
@@ -14413,7 +14357,6 @@
 msgid "_Modify..."
 msgstr "_Изменить..."
 
-#, fuzzy
 msgid "_Add..."
 msgstr "_Добавить..."
 
@@ -14438,9 +14381,8 @@
 msgid "Small"
 msgstr "Маленький"
 
-#, fuzzy
 msgid "Smaller versions of the default smileys"
-msgstr "Меньшие версии смайликов по умолчанию"
+msgstr "Уменьшенные версии смайликов по умолчанию"
 
 msgid "Response Probability:"
 msgstr "Вероятность отклика:"
@@ -14628,11 +14570,12 @@
 msgid "Allows browsing and registering services."
 msgstr "Позволяет просматривать и регистрировать службы."
 
-#, fuzzy
 msgid ""
 "This plugin is useful for registering with legacy transports or other XMPP "
 "services."
-msgstr "Этот модуль полезен для отладки XMPP серверов или клиентов."
+msgstr ""
+"Этот модуль полезен для регистрации с базовыми транспортными или другими "
+"XMPP службами."
 
 msgid "By conversation count"
 msgstr "По количеству бесед"
@@ -14934,14 +14877,13 @@
 msgstr "Модуль музыкальной переписки для совместного сочинения"
 
 #. *  summary
-#, fuzzy
 msgid ""
 "The Music Messaging Plugin allows a number of users to simultaneously work "
 "on a piece of music by editing a common score in real-time."
 msgstr ""
-"Модуль музыкальной переписки позволяет нескольким пользователям совместно "
-"работать над кусочком мелодии путём редактирования общих результатов в "
-"реальном времени."
+"Модуль музыкальной переписки позволяет нескольким пользователям одновременно "
+"работать над кусочком мелодии путём редактирования общих данных в реальном "
+"времени."
 
 #. ---------- "Notify For" ----------
 msgid "Notify For"
@@ -14972,7 +14914,6 @@
 msgid "Set window manager \"_URGENT\" hint"
 msgstr "Установить подсказку \"С_РОЧНО\" оконного менеджера"
 
-#, fuzzy
 msgid "_Flash window"
 msgstr "_Мигающее окно"
 
@@ -14981,9 +14922,8 @@
 msgstr "_Поднимать окно беседы"
 
 #. Present conversation method button
-#, fuzzy
 msgid "_Present conversation window"
-msgstr "_Поднимать окно беседы"
+msgstr "_Показать окно беседы"
 
 #. ---------- "Notification Removals" ----------
 msgid "Notification Removal"
@@ -15058,17 +14998,14 @@
 msgid "Hyperlink Color"
 msgstr "Цвет гиперссылки"
 
-#, fuzzy
 msgid "Visited Hyperlink Color"
 msgstr "Цвет посещённой гиперссылки"
 
-#, fuzzy
 msgid "Highlighted Message Name Color"
-msgstr "Цвет надписи подсвеченного сообщения"
-
-#, fuzzy
+msgstr "Цвет имени подсвеченного сообщения"
+
 msgid "Typing Notification Color"
-msgstr "Цвет набора уведомления"
+msgstr "Цвет уведомления о печатании"
 
 msgid "GtkTreeView Horizontal Separation"
 msgstr "Горизонтальное разделение GtkTreeView"
@@ -15076,7 +15013,6 @@
 msgid "Conversation Entry"
 msgstr "Область ввода окна беседы"
 
-#, fuzzy
 msgid "Conversation History"
 msgstr "История общения"
 
@@ -15203,7 +15139,6 @@
 msgstr "Кнопка отправки окна беседы."
 
 #. *< summary
-#, fuzzy
 msgid ""
 "Adds a Send button to the entry area of the conversation window. Intended "
 "for use when no physical keyboard is present."
@@ -15395,21 +15330,19 @@
 msgid "Timestamp Format Options"
 msgstr "Параметры формата времени"
 
-#, fuzzy, c-format
+#, c-format
 msgid "_Force timestamp format:"
-msgstr "_Принудительно использовать 24-часовой формат времени"
-
-#, fuzzy
+msgstr "_Принудительно использовать формат времени:"
+
 msgid "Use system default"
-msgstr "Используемый по умолчанию"
-
-#, fuzzy
+msgstr "Использовать системный по умолчанию"
+
 msgid "12 hour time format"
-msgstr "_Принудительно использовать 24-часовой формат времени"
+msgstr "12-часовой формат времени"
 
 #, fuzzy
 msgid "24 hour time format"
-msgstr "_Принудительно использовать 24-часовой формат времени"
+msgstr "24-часовой формат времени"
 
 msgid "Show dates in..."
 msgstr "Показывать дату..."
@@ -15485,9 +15418,8 @@
 msgid "Voice/Video Settings"
 msgstr "Голосовые/Видео настройки"
 
-#, fuzzy
 msgid "Voice and Video Settings"
-msgstr "Голосовые/Видео настройки"
+msgstr "Голосовые и видео настройки"
 
 #. *< name
 #. *< version
@@ -15757,6 +15689,12 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "У Вас нет прав на удаление этого приложения."
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr "Отвергать автоматически от пользователей не из списка собеседников"
+
+#~ msgid "bug master"
+#~ msgstr "мастер глюков"
+
 #, fuzzy
 #~ msgid "An error occurred on the in-band bytestream transfer\n"
 #~ msgstr "Произошла ошибка при передаче внутриполосного потока байт\n"
@@ -15879,12 +15817,11 @@
 #~ msgid "Unable to listen on socket: %s"
 #~ msgstr "Не удаётся прослушивать сокет: %s"
 
-#, fuzzy
 #~ msgid "%s just sent you a Nudge!"
 #~ msgstr "%s просто подтолкнул вас!"
 
 #~ msgid "Friendly name changes too rapidly"
-#~ msgstr "Дружественные изменения именни слишком быстры"
+#~ msgstr "Дружественное имя изменяется слишком быстро"
 
 #~ msgid "This Hotmail account may not be active."
 #~ msgstr "Эта учётная запись горячей почты может быть неактивна."
@@ -15934,13 +15871,12 @@
 #~ msgid "%s has removed you from his or her buddy list."
 #~ msgstr "%s удалил вас из своего списка собеседников."
 
-#, 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 ""
 #~ "Последнее предпринятое вами действие не может быть выполнено, так как вы "
-#~ "превысили предел. Подождите 10 секунд и попытайтесь снова."
+#~ "превысили предел частоты. Пожалуйста, попробуйте снова через 10 секунд."
 
 #~ msgid ""
 #~ "<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
@@ -15949,13 +15885,11 @@
 #~ "<FONT SIZE=\"4\">ЧаВо:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/"
 #~ "FAQ\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
 
-#, fuzzy
 #~ msgid ""
 #~ "<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
 #~ msgstr ""
 #~ "<FONT SIZE=\"4\">IRC канал:</FONT> #pidgin на irc.freenode.net<BR><BR>"
 
-#, fuzzy
 #~ msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
 #~ msgstr ""
 #~ "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
--- a/po/ta.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/ta.po	Sat Feb 12 23:54:14 2011 +0000
@@ -19,7 +19,7 @@
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Poedit-Country: INDIA\n"
 "X-Generator: Lokalize 1.0\n"
 "X-Poedit-Bookmarks: -1,470,-1,-1,-1,-1,-1,-1,-1,1715\n"
--- a/po/uk.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/uk.po	Sat Feb 12 23:54:14 2011 +0000
@@ -3,14 +3,14 @@
 # This file is distributed under the same license as the Pidgin package.
 #
 # Maxim V. Dziumanenko <mvd@mylinux.com.ua>, 2004-2005.
-# Oleksandr Kovalenko <alx.kovalenko@gmail.com>, 2009-2010.
+# Oleksandr Kovalenko <alx.kovalenko@gmail.com>, 2009-2011.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-26 22:11-0500\n"
-"PO-Revision-Date: 2010-12-19 22:07+0300\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
+"PO-Revision-Date: 2011-01-30 21:27+0300\n"
 "Last-Translator: Oleksandr Kovalenko <alx.kovalenko@gmail.com>\n"
 "Language-Team: Ukrainian <uk@li.org>\n"
 "Language: uk\n"
@@ -2360,8 +2360,12 @@
 "Шлях де зберігати файли\n"
 "(Будь ласка, вкажіть повний шлях)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "Автоматично відхилити від користувачів, які не в переліку контактів"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr ""
+"Коли запит на передавання файлу надходить від користувача,\n"
+"який *не* в вашому переліку контактів"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2374,6 +2378,9 @@
 msgid "Create a new directory for each user"
 msgstr "Створити нову теку для кожного користувача"
 
+msgid "Escape the filenames"
+msgstr "Екранувати назви файлів"
+
 msgid "Notes"
 msgstr "Примітки"
 
@@ -3832,7 +3839,10 @@
 msgstr ""
 "Сервер вимагає автентифікацію звичайним текстом через нешифрований потік"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "Неправильна відповідь від сервера"
 
@@ -6141,6 +6151,20 @@
 msgid "Retrieving User Information..."
 msgstr "Отримання відомостей про користувача..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "Вас викинули з цього MultiMX."
+
+msgid "was kicked"
+msgstr "був викинутий"
+
+msgid "_Room Name:"
+msgstr "_Назва кімнати:"
+
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "Вас запросили"
+
 msgid "Loading menu..."
 msgstr "Завантаження меню..."
 
@@ -6168,20 +6192,6 @@
 msgid "Enable splash-screen popup"
 msgstr "Увімкнути виринаючу екранну заставку"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "Вас викинули з цього MultiMX."
-
-msgid "was kicked"
-msgstr "був викинутий"
-
-msgid "_Room Name:"
-msgstr "_Назва кімнати:"
-
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "Вас запросили"
-
 msgid "Last Online"
 msgstr "Востаннє в мережі"
 
@@ -7870,75 +7880,6 @@
 "та є необхідним для передавання зображень. Так як ваша ІР адреса буде "
 "розкрита, це може вважатись загрозою безпеці."
 
-msgid "Invalid SNAC"
-msgstr "Неправильний SNAC"
-
-msgid "Server rate limit exceeded"
-msgstr "Досягнуто обмеження швидкості сервера"
-
-msgid "Client rate limit exceeded"
-msgstr "Досягнуто обмеження швидкості клієнта"
-
-msgid "Service unavailable"
-msgstr "Послуга недоступна"
-
-msgid "Service not defined"
-msgstr "Послуга не визначена"
-
-msgid "Obsolete SNAC"
-msgstr "Застарілий SNAC"
-
-msgid "Not supported by host"
-msgstr "Не підтримується вузлом"
-
-msgid "Not supported by client"
-msgstr "Не підтримується клієнтом"
-
-msgid "Refused by client"
-msgstr "Відкинута клієнтом"
-
-msgid "Reply too big"
-msgstr "Відповідь завелика"
-
-msgid "Responses lost"
-msgstr "Відповіді втрачені"
-
-msgid "Request denied"
-msgstr "Запит відхилений"
-
-msgid "Busted SNAC payload"
-msgstr "Зіпсовані дані SNAC"
-
-msgid "Insufficient rights"
-msgstr "Недостатньо прав"
-
-msgid "In local permit/deny"
-msgstr "В місцевому переліку дозволених/заборонених"
-
-msgid "Warning level too high (sender)"
-msgstr "Рівень попередження дуже високий (відправник)"
-
-msgid "Warning level too high (receiver)"
-msgstr "Рівень попередження дуже високий (отримувач)"
-
-msgid "User temporarily unavailable"
-msgstr "Користувач тимчасово недоступний"
-
-msgid "No match"
-msgstr "Немає збігів"
-
-msgid "List overflow"
-msgstr "Перелік переповнений"
-
-msgid "Request ambiguous"
-msgstr "Запит незрозумілий"
-
-msgid "Queue full"
-msgstr "Черга переповнена"
-
-msgid "Not while on AOL"
-msgstr "Не тоді, коли у AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "Значок користувача"
@@ -8057,6 +7998,75 @@
 msgid "Capabilities"
 msgstr "Можливості"
 
+msgid "Invalid SNAC"
+msgstr "Неправильний SNAC"
+
+msgid "Server rate limit exceeded"
+msgstr "Досягнуто обмеження швидкості сервера"
+
+msgid "Client rate limit exceeded"
+msgstr "Досягнуто обмеження швидкості клієнта"
+
+msgid "Service unavailable"
+msgstr "Послуга недоступна"
+
+msgid "Service not defined"
+msgstr "Послуга не визначена"
+
+msgid "Obsolete SNAC"
+msgstr "Застарілий SNAC"
+
+msgid "Not supported by host"
+msgstr "Не підтримується вузлом"
+
+msgid "Not supported by client"
+msgstr "Не підтримується клієнтом"
+
+msgid "Refused by client"
+msgstr "Відкинута клієнтом"
+
+msgid "Reply too big"
+msgstr "Відповідь завелика"
+
+msgid "Responses lost"
+msgstr "Відповіді втрачені"
+
+msgid "Request denied"
+msgstr "Запит відхилений"
+
+msgid "Busted SNAC payload"
+msgstr "Зіпсовані дані SNAC"
+
+msgid "Insufficient rights"
+msgstr "Недостатньо прав"
+
+msgid "In local permit/deny"
+msgstr "В місцевому переліку дозволених/заборонених"
+
+msgid "Warning level too high (sender)"
+msgstr "Рівень попередження дуже високий (відправник)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Рівень попередження дуже високий (отримувач)"
+
+msgid "User temporarily unavailable"
+msgstr "Користувач тимчасово недоступний"
+
+msgid "No match"
+msgstr "Немає збігів"
+
+msgid "List overflow"
+msgstr "Перелік переповнений"
+
+msgid "Request ambiguous"
+msgstr "Запит незрозумілий"
+
+msgid "Queue full"
+msgstr "Черга переповнена"
+
+msgid "Not while on AOL"
+msgstr "Не тоді, коли у AOL"
+
 #. Translators: This string is a menu option that, if selected, will cause
 #. you to appear online to the chosen user even when your status is set to
 #. Invisible.
@@ -8648,14 +8658,14 @@
 msgid "Select Server"
 msgstr "Виберіть сервер"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "З'єднання по TCP"
@@ -12222,9 +12232,6 @@
 msgid "Fatal Error"
 msgstr "Фатальна помилка"
 
-msgid "bug master"
-msgstr "спеціаліст з вад"
-
 msgid "artist"
 msgstr "виконавець"
 
@@ -12404,6 +12411,9 @@
 msgid "Maithili"
 msgstr "Майтхілі"
 
+msgid "Meadow Mari"
+msgstr "Луговомарійська"
+
 msgid "Macedonian"
 msgstr "Македонська"
 
@@ -15504,5 +15514,11 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "Ви не маєте права на видалення цієї програми."
 
+#~ msgid "bug master"
+#~ msgstr "спеціаліст з вад"
+
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr "Автоматично відхилити від користувачів, які не в переліку контактів"
+
 #~ msgid "Error requesting %s"
 #~ msgstr "Помилка запиту %s"
--- a/po/zh_HK.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/zh_HK.po	Sat Feb 12 23:54:14 2011 +0000
@@ -1,14 +1,14 @@
 # NOTE: This file is generated from zh_TW.po by mkzhhk.pl,v 1.27 2010/12/17 01:08:13 acli Exp
 # ---
 # Pidgin's Traditional Chinese translation
-# Copyright (C) 2002-2010, Paladin R. Liu <paladin@ms1.hinet.net>
-# Copyright (C) 2003-2010, Ambrose C. Li <ambrose.li@gmail.com>
+# Copyright (C) 2002-2011, Paladin R. Liu <paladin@ms1.hinet.net>
+# Copyright (C) 2003-2011, Ambrose C. Li <ambrose.li@gmail.com>
 #
 # PLEASE DO NOT ATTEMPT TO UPDATE THIS FILE IF THERE ARE NO
 # LINE NUMBERS (LINES BEGINNING WITH #:) IN THIS FILE.
 #
 # This file is distributed under the same license as the "Pidgin" package.
-# $InternalId: zh_TW.po,v 1.659 2010/12/17 03:16:38 acli Exp $
+# $InternalId: zh_TW.po,v 1.661 2011/02/01 04:45:39 acli Exp $
 #
 # ----------------------------------------------------------
 # For internal use only:
@@ -60,9 +60,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Pidgin 2.7.8\n"
+"Project-Id-Version: Pidgin 2.7.9\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:34-0500\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
 "PO-Revision-Date: 2010-12-16 19:32-0500\n"
 "Last-Translator: Ambrose Li <ambrose.li@gmail.com>\n"
 "Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
@@ -2439,8 +2439,10 @@
 "檔案儲存路徑\n"
 "(請提供完整路徑)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "自動拒絕非來自好友清單中的使用者"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr "當一個不在你好友清單內的使用者要求檔案傳輸時"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2453,6 +2455,9 @@
 msgid "Create a new directory for each user"
 msgstr "給每個使用者建立該使用者專用的目綠"
 
+msgid "Escape the filenames"
+msgstr "逸出檔案名稱中的特別字符"
+
 msgid "Notes"
 msgstr "備註"
 
@@ -3920,7 +3925,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "伺服器需要經由未經加密的串流進行明文認證"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "伺服器送來了無效的回應"
 
@@ -6434,6 +6442,21 @@
 msgid "Retrieving User Information..."
 msgstr "讀取使用者資訊中..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "你已經從MultiMX中被踢出。"
+
+msgid "was kicked"
+msgstr "被踢出"
+
+msgid "_Room Name:"
+msgstr "聊天室名稱(_R):"
+
+# NOTE 很差的原文,其實整合上下文後是「You have invited: %s」(%s 是被邀請者)
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "你邀請了"
+
 msgid "Loading menu..."
 msgstr "載入清單中..."
 
@@ -6462,21 +6485,6 @@
 msgid "Enable splash-screen popup"
 msgstr "啟用啟動畫面彈出視窗"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "你已經從MultiMX中被踢出。"
-
-msgid "was kicked"
-msgstr "被踢出"
-
-msgid "_Room Name:"
-msgstr "聊天室名稱(_R):"
-
-# NOTE 很差的原文,其實整合上下文後是「You have invited: %s」(%s 是被邀請者)
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "你邀請了"
-
 msgid "Last Online"
 msgstr "最近上線"
 
@@ -8126,90 +8134,6 @@
 "這個要求將會在兩部電腦間建立起直接連線,而這是在傳送即時訊息圖像時所必須的。"
 "這樣將會曝露你的 IP 位址,因此可能會有私隱方面的風險。"
 
-msgid "Invalid SNAC"
-msgstr "無效的 SNAC"
-
-msgid "Server rate limit exceeded"
-msgstr "超出了伺服器端的速率上限"
-
-msgid "Client rate limit exceeded"
-msgstr "超出了用戶端的速率上限"
-
-# NOTE SNAC 錯誤代碼5,見 http://iserverd.khstu.ru/oscar/errorlist.html
-# NOTE 應係指給定了一個已定義的服務 (Service, Family),但因某種原因,伺服器暫時無法提供該服務
-msgid "Service unavailable"
-msgstr "服務不存在"
-
-msgid "Service not defined"
-msgstr "服務未定義"
-
-# XXX 譯文有待改進 - acli 20100809
-msgid "Obsolete SNAC"
-msgstr "已作廢的舊式 SNAC"
-
-msgid "Not supported by host"
-msgstr "伺服器不支援"
-
-msgid "Not supported by client"
-msgstr "用戶端不支援"
-
-msgid "Refused by client"
-msgstr "被用戶端拒絕"
-
-# XXX 譯文有待改進 - acli 20100809
-msgid "Reply too big"
-msgstr "回應太大"
-
-msgid "Responses lost"
-msgstr "遺失回應"
-
-msgid "Request denied"
-msgstr "請求被拒"
-
-# NOTE SNAC 錯誤代碼14 (0x0e),見 http://iserverd.khstu.ru/oscar/errorlist.html,指 SNAC 負載內出現了格式上的錯誤
-# XXX 譯文有待改進 - acli 20100809
-msgid "Busted SNAC payload"
-msgstr "畸型的 SNAC 負載"
-
-msgid "Insufficient rights"
-msgstr "權限不夠"
-
-# NOTE SNAC 錯誤代碼16 (0x10),見 http://iserverd.khstu.ru/oscar/errorlist.html
-# XXX 譯文有待改進 - acli 20100809
-msgid "In local permit/deny"
-msgstr "在本地端的允許/拒絕清單內"
-
-# NOTE SNAC 錯誤代碼17 (0x11),見 http://iserverd.khstu.ru/oscar/errorlist.html,參見其他涉及「warning level」的譯文
-msgid "Warning level too high (sender)"
-msgstr "(發送者)警告等級過高"
-
-# NOTE SNAC 錯誤代碼18 (0x12),見 http://iserverd.khstu.ru/oscar/errorlist.html,參見其他涉及「warning level」的譯文
-msgid "Warning level too high (receiver)"
-msgstr "(接收者)警告等級過高"
-
-msgid "User temporarily unavailable"
-msgstr "使用者暫時不在線上"
-
-msgid "No match"
-msgstr "沒有相符的記錄"
-
-# NOTE SNAC 錯誤代碼21 (0x15),見 http://iserverd.khstu.ru/oscar/errorlist.html
-# NOTE OSCAR 協定至少有三種「List」,譯成「好友清單」可能不對
-msgid "List overflow"
-msgstr "清單已滿"
-
-msgid "Request ambiguous"
-msgstr "不明確的請求"
-
-msgid "Queue full"
-msgstr "佇列已滿"
-
-# NOTE SNAC 錯誤代碼24 (0x18),見 http://iserverd.khstu.ru/oscar/errorlist.html
-# NOTE 可能是指在 AOL 裏要求了一種 ICQ 的服務
-# XXX 譯文有待改進 - acli 20100809
-msgid "Not while on AOL"
-msgstr "不適合於 AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "好友圖示"
@@ -8344,6 +8268,90 @@
 msgid "Capabilities"
 msgstr "兼容性"
 
+msgid "Invalid SNAC"
+msgstr "無效的 SNAC"
+
+msgid "Server rate limit exceeded"
+msgstr "超出了伺服器端的速率上限"
+
+msgid "Client rate limit exceeded"
+msgstr "超出了用戶端的速率上限"
+
+# NOTE SNAC 錯誤代碼5,見 http://iserverd.khstu.ru/oscar/errorlist.html
+# NOTE 應係指給定了一個已定義的服務 (Service, Family),但因某種原因,伺服器暫時無法提供該服務
+msgid "Service unavailable"
+msgstr "服務不存在"
+
+msgid "Service not defined"
+msgstr "服務未定義"
+
+# XXX 譯文有待改進 - acli 20100809
+msgid "Obsolete SNAC"
+msgstr "已作廢的舊式 SNAC"
+
+msgid "Not supported by host"
+msgstr "伺服器不支援"
+
+msgid "Not supported by client"
+msgstr "用戶端不支援"
+
+msgid "Refused by client"
+msgstr "被用戶端拒絕"
+
+# XXX 譯文有待改進 - acli 20100809
+msgid "Reply too big"
+msgstr "回應太大"
+
+msgid "Responses lost"
+msgstr "遺失回應"
+
+msgid "Request denied"
+msgstr "請求被拒"
+
+# NOTE SNAC 錯誤代碼14 (0x0e),見 http://iserverd.khstu.ru/oscar/errorlist.html,指 SNAC 負載內出現了格式上的錯誤
+# XXX 譯文有待改進 - acli 20100809
+msgid "Busted SNAC payload"
+msgstr "畸型的 SNAC 負載"
+
+msgid "Insufficient rights"
+msgstr "權限不夠"
+
+# NOTE SNAC 錯誤代碼16 (0x10),見 http://iserverd.khstu.ru/oscar/errorlist.html
+# XXX 譯文有待改進 - acli 20100809
+msgid "In local permit/deny"
+msgstr "在本地端的允許/拒絕清單內"
+
+# NOTE SNAC 錯誤代碼17 (0x11),見 http://iserverd.khstu.ru/oscar/errorlist.html,參見其他涉及「warning level」的譯文
+msgid "Warning level too high (sender)"
+msgstr "(發送者)警告等級過高"
+
+# NOTE SNAC 錯誤代碼18 (0x12),見 http://iserverd.khstu.ru/oscar/errorlist.html,參見其他涉及「warning level」的譯文
+msgid "Warning level too high (receiver)"
+msgstr "(接收者)警告等級過高"
+
+msgid "User temporarily unavailable"
+msgstr "使用者暫時不在線上"
+
+msgid "No match"
+msgstr "沒有相符的記錄"
+
+# NOTE SNAC 錯誤代碼21 (0x15),見 http://iserverd.khstu.ru/oscar/errorlist.html
+# NOTE OSCAR 協定至少有三種「List」,譯成「好友清單」可能不對
+msgid "List overflow"
+msgstr "清單已滿"
+
+msgid "Request ambiguous"
+msgstr "不明確的請求"
+
+msgid "Queue full"
+msgstr "佇列已滿"
+
+# NOTE SNAC 錯誤代碼24 (0x18),見 http://iserverd.khstu.ru/oscar/errorlist.html
+# NOTE 可能是指在 AOL 裏要求了一種 ICQ 的服務
+# XXX 譯文有待改進 - acli 20100809
+msgid "Not while on AOL"
+msgstr "不適合於 AOL"
+
 #  NOTE 這四個字串在 Oscar (ICQ) 的解釋在此:http://pidgin.im/pipermail/translators/2010-November/000554.html
 #  NOTE Oscar: 把好友新增到 Visible List 內
 #  NOTE Yahoo: 狀態為「隱身」時,對某指定的好友報稱上線
@@ -8988,14 +8996,14 @@
 msgid "Select Server"
 msgstr "選擇伺服器"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "使用 TCP 連線"
@@ -12626,10 +12634,6 @@
 msgid "Fatal Error"
 msgstr "嚴重錯誤訊息"
 
-# XXX 暫譯 - 20090226 acli
-msgid "bug master"
-msgstr "除錯主管"
-
 # NOTE 這個「artist」(有別於其他的「Artist」字串)係指設計pidgin圖示的「graphic designer」,絕對不可譯成「藝人」
 msgid "artist"
 msgstr "平面設計"
@@ -12835,6 +12839,11 @@
 msgid "Maithili"
 msgstr "邁蒂利文"
 
+#  NOTE 代碼 mhr,一種芬蘭語系的東歐語文,維基百科譯「平地馬里語」
+#  XXX 找不到正式的台灣譯文,參閱 http://zh.wikipedia.org/zh/马里语
+msgid "Meadow Mari"
+msgstr "平地馬里文"
+
 #  NOTE「馬其頓文」是一種東歐語文,跟希臘的馬其頓並無關係
 msgid "Macedonian"
 msgstr "馬其頓文"
@@ -16027,6 +16036,13 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "你沒有權限移除程式。"
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr "自動拒絕非來自好友清單中的使用者"
+
+# XXX 暫譯 - 20090226 acli
+#~ msgid "bug master"
+#~ msgstr "除錯主管"
+
 #~ msgid "An error occurred on the in-band bytestream transfer\n"
 #~ msgstr "帶內位元組流傳輸途中發生錯誤\n"
 
--- a/po/zh_TW.po	Sun Jan 09 23:32:10 2011 +0000
+++ b/po/zh_TW.po	Sat Feb 12 23:54:14 2011 +0000
@@ -1,12 +1,12 @@
 # Pidgin's Traditional Chinese translation
-# Copyright (C) 2002-2010, Paladin R. Liu <paladin@ms1.hinet.net>
-# Copyright (C) 2003-2010, Ambrose C. Li <ambrose.li@gmail.com>
+# Copyright (C) 2002-2011, Paladin R. Liu <paladin@ms1.hinet.net>
+# Copyright (C) 2003-2011, Ambrose C. Li <ambrose.li@gmail.com>
 #
 # PLEASE DO NOT ATTEMPT TO UPDATE THIS FILE IF THERE ARE NO
 # LINE NUMBERS (LINES BEGINNING WITH #:) IN THIS FILE.
 #
 # This file is distributed under the same license as the "Pidgin" package.
-# $InternalId: zh_TW.po,v 1.659 2010/12/17 03:16:38 acli Exp $
+# $InternalId: zh_TW.po,v 1.661 2011/02/01 04:45:39 acli Exp $
 #
 # ----------------------------------------------------------
 # For internal use only:
@@ -58,9 +58,9 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Pidgin 2.7.8\n"
+"Project-Id-Version: Pidgin 2.7.9\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-19 13:34-0500\n"
+"POT-Creation-Date: 2011-02-02 23:34-0500\n"
 "PO-Revision-Date: 2010-12-16 19:32-0500\n"
 "Last-Translator: Ambrose Li <ambrose.li@gmail.com>\n"
 "Language-Team: Chinese (Traditional) <zh-l10n@linux.org.tw>\n"
@@ -2437,8 +2437,10 @@
 "檔案儲存路徑\n"
 "(請提供完整路徑)"
 
-msgid "Automatically reject from users not in buddy list"
-msgstr "自動拒絕非來自好友清單中的使用者"
+msgid ""
+"When a file-transfer request arrives from a user who is\n"
+"*not* on your buddy list:"
+msgstr "當一個不在您好友清單內的使用者要求檔案傳輸時"
 
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
@@ -2451,6 +2453,9 @@
 msgid "Create a new directory for each user"
 msgstr "給每個使用者建立該使用者專用的目綠"
 
+msgid "Escape the filenames"
+msgstr "逸出檔案名稱中的特別字元"
+
 msgid "Notes"
 msgstr "備註"
 
@@ -3918,7 +3923,10 @@
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "伺服器需要經由未經加密的串流進行明文認證"
 
-#. This should never happen!
+#. This happens when the server sends back jibberish
+#. * in the "additional data with success" case.
+#. * Seen with Wildfire 3.0.1.
+#.
 msgid "Invalid response from server"
 msgstr "伺服器送來了無效的回應"
 
@@ -6432,6 +6440,21 @@
 msgid "Retrieving User Information..."
 msgstr "讀取使用者資訊中..."
 
+#. you were kicked
+msgid "You have been kicked from this MultiMX."
+msgstr "您已經從MultiMX中被踢出。"
+
+msgid "was kicked"
+msgstr "被踢出"
+
+msgid "_Room Name:"
+msgstr "聊天室名稱(_R):"
+
+# NOTE 很差的原文,其實整合上下文後是「You have invited: %s」(%s 是被邀請者)
+#. Display system message in chat window
+msgid "You have invited"
+msgstr "您邀請了"
+
 msgid "Loading menu..."
 msgstr "載入清單中..."
 
@@ -6460,21 +6483,6 @@
 msgid "Enable splash-screen popup"
 msgstr "啟用啟動畫面彈出視窗"
 
-#. you were kicked
-msgid "You have been kicked from this MultiMX."
-msgstr "您已經從MultiMX中被踢出。"
-
-msgid "was kicked"
-msgstr "被踢出"
-
-msgid "_Room Name:"
-msgstr "聊天室名稱(_R):"
-
-# NOTE 很差的原文,其實整合上下文後是「You have invited: %s」(%s 是被邀請者)
-#. Display system message in chat window
-msgid "You have invited"
-msgstr "您邀請了"
-
 msgid "Last Online"
 msgstr "最後上線"
 
@@ -8124,90 +8132,6 @@
 "這個要求將會在兩部電腦間建立起直接連線,而這是在傳送即時訊息影像時所必須的。"
 "這樣將會曝露您的 IP 位址,因此可能會有隱私方面的風險。"
 
-msgid "Invalid SNAC"
-msgstr "無效的 SNAC"
-
-msgid "Server rate limit exceeded"
-msgstr "超出了伺服器端的速率上限"
-
-msgid "Client rate limit exceeded"
-msgstr "超出了用戶端的速率上限"
-
-# NOTE SNAC 錯誤代碼5,見 http://iserverd.khstu.ru/oscar/errorlist.html
-# NOTE 應係指給定了一個已定義的服務 (Service, Family),但因某種原因,伺服器暫時無法提供該服務
-msgid "Service unavailable"
-msgstr "服務不存在"
-
-msgid "Service not defined"
-msgstr "服務未定義"
-
-# XXX 譯文有待改進 - acli 20100809
-msgid "Obsolete SNAC"
-msgstr "已作廢的舊式 SNAC"
-
-msgid "Not supported by host"
-msgstr "伺服器不支援"
-
-msgid "Not supported by client"
-msgstr "用戶端不支援"
-
-msgid "Refused by client"
-msgstr "被用戶端拒絕"
-
-# XXX 譯文有待改進 - acli 20100809
-msgid "Reply too big"
-msgstr "回應太大"
-
-msgid "Responses lost"
-msgstr "遺失回應"
-
-msgid "Request denied"
-msgstr "請求被拒"
-
-# NOTE SNAC 錯誤代碼14 (0x0e),見 http://iserverd.khstu.ru/oscar/errorlist.html,指 SNAC 負載內出現了格式上的錯誤
-# XXX 譯文有待改進 - acli 20100809
-msgid "Busted SNAC payload"
-msgstr "畸型的 SNAC 負載"
-
-msgid "Insufficient rights"
-msgstr "權限不夠"
-
-# NOTE SNAC 錯誤代碼16 (0x10),見 http://iserverd.khstu.ru/oscar/errorlist.html
-# XXX 譯文有待改進 - acli 20100809
-msgid "In local permit/deny"
-msgstr "在本地端的允許/拒絕清單內"
-
-# NOTE SNAC 錯誤代碼17 (0x11),見 http://iserverd.khstu.ru/oscar/errorlist.html,參見其他涉及「warning level」的譯文
-msgid "Warning level too high (sender)"
-msgstr "(發送者)警告等級過高"
-
-# NOTE SNAC 錯誤代碼18 (0x12),見 http://iserverd.khstu.ru/oscar/errorlist.html,參見其他涉及「warning level」的譯文
-msgid "Warning level too high (receiver)"
-msgstr "(接收者)警告等級過高"
-
-msgid "User temporarily unavailable"
-msgstr "使用者暫時不在線上"
-
-msgid "No match"
-msgstr "沒有相符的記錄"
-
-# NOTE SNAC 錯誤代碼21 (0x15),見 http://iserverd.khstu.ru/oscar/errorlist.html
-# NOTE OSCAR 協定至少有三種「List」,譯成「好友清單」可能不對
-msgid "List overflow"
-msgstr "清單已滿"
-
-msgid "Request ambiguous"
-msgstr "不明確的請求"
-
-msgid "Queue full"
-msgstr "佇列已滿"
-
-# NOTE SNAC 錯誤代碼24 (0x18),見 http://iserverd.khstu.ru/oscar/errorlist.html
-# NOTE 可能是指在 AOL 裏要求了一種 ICQ 的服務
-# XXX 譯文有待改進 - acli 20100809
-msgid "Not while on AOL"
-msgstr "不適合於 AOL"
-
 #. Label
 msgid "Buddy Icon"
 msgstr "好友圖示"
@@ -8342,6 +8266,90 @@
 msgid "Capabilities"
 msgstr "相容性"
 
+msgid "Invalid SNAC"
+msgstr "無效的 SNAC"
+
+msgid "Server rate limit exceeded"
+msgstr "超出了伺服器端的速率上限"
+
+msgid "Client rate limit exceeded"
+msgstr "超出了用戶端的速率上限"
+
+# NOTE SNAC 錯誤代碼5,見 http://iserverd.khstu.ru/oscar/errorlist.html
+# NOTE 應係指給定了一個已定義的服務 (Service, Family),但因某種原因,伺服器暫時無法提供該服務
+msgid "Service unavailable"
+msgstr "服務不存在"
+
+msgid "Service not defined"
+msgstr "服務未定義"
+
+# XXX 譯文有待改進 - acli 20100809
+msgid "Obsolete SNAC"
+msgstr "已作廢的舊式 SNAC"
+
+msgid "Not supported by host"
+msgstr "伺服器不支援"
+
+msgid "Not supported by client"
+msgstr "用戶端不支援"
+
+msgid "Refused by client"
+msgstr "被用戶端拒絕"
+
+# XXX 譯文有待改進 - acli 20100809
+msgid "Reply too big"
+msgstr "回應太大"
+
+msgid "Responses lost"
+msgstr "遺失回應"
+
+msgid "Request denied"
+msgstr "請求被拒"
+
+# NOTE SNAC 錯誤代碼14 (0x0e),見 http://iserverd.khstu.ru/oscar/errorlist.html,指 SNAC 負載內出現了格式上的錯誤
+# XXX 譯文有待改進 - acli 20100809
+msgid "Busted SNAC payload"
+msgstr "畸型的 SNAC 負載"
+
+msgid "Insufficient rights"
+msgstr "權限不夠"
+
+# NOTE SNAC 錯誤代碼16 (0x10),見 http://iserverd.khstu.ru/oscar/errorlist.html
+# XXX 譯文有待改進 - acli 20100809
+msgid "In local permit/deny"
+msgstr "在本地端的允許/拒絕清單內"
+
+# NOTE SNAC 錯誤代碼17 (0x11),見 http://iserverd.khstu.ru/oscar/errorlist.html,參見其他涉及「warning level」的譯文
+msgid "Warning level too high (sender)"
+msgstr "(發送者)警告等級過高"
+
+# NOTE SNAC 錯誤代碼18 (0x12),見 http://iserverd.khstu.ru/oscar/errorlist.html,參見其他涉及「warning level」的譯文
+msgid "Warning level too high (receiver)"
+msgstr "(接收者)警告等級過高"
+
+msgid "User temporarily unavailable"
+msgstr "使用者暫時不在線上"
+
+msgid "No match"
+msgstr "沒有相符的記錄"
+
+# NOTE SNAC 錯誤代碼21 (0x15),見 http://iserverd.khstu.ru/oscar/errorlist.html
+# NOTE OSCAR 協定至少有三種「List」,譯成「好友清單」可能不對
+msgid "List overflow"
+msgstr "清單已滿"
+
+msgid "Request ambiguous"
+msgstr "不明確的請求"
+
+msgid "Queue full"
+msgstr "佇列已滿"
+
+# NOTE SNAC 錯誤代碼24 (0x18),見 http://iserverd.khstu.ru/oscar/errorlist.html
+# NOTE 可能是指在 AOL 裏要求了一種 ICQ 的服務
+# XXX 譯文有待改進 - acli 20100809
+msgid "Not while on AOL"
+msgstr "不適合於 AOL"
+
 #  NOTE 這四個字串在 Oscar (ICQ) 的解釋在此:http://pidgin.im/pipermail/translators/2010-November/000554.html
 #  NOTE Oscar: 把好友新增到 Visible List 內
 #  NOTE Yahoo: 狀態為「隱身」時,對某指定的好友報稱上線
@@ -8986,14 +8994,14 @@
 msgid "Select Server"
 msgstr "選擇伺服器"
 
-msgid "QQ2005"
-msgstr "QQ2005"
+msgid "QQ2008"
+msgstr "QQ2008"
 
 msgid "QQ2007"
 msgstr "QQ2007"
 
-msgid "QQ2008"
-msgstr "QQ2008"
+msgid "QQ2005"
+msgstr "QQ2005"
 
 msgid "Connect by TCP"
 msgstr "使用 TCP 連線"
@@ -12620,10 +12628,6 @@
 msgid "Fatal Error"
 msgstr "嚴重錯誤訊息"
 
-# XXX 暫譯 - 20090226 acli
-msgid "bug master"
-msgstr "除錯主管"
-
 # NOTE 這個「artist」(有別於其他的「Artist」字串)係指設計pidgin圖示的「graphic designer」,絕對不可譯成「藝人」
 msgid "artist"
 msgstr "平面設計"
@@ -12829,6 +12833,11 @@
 msgid "Maithili"
 msgstr "邁蒂利文"
 
+#  NOTE 代碼 mhr,一種芬蘭語系的東歐語文,維基百科譯「平地馬里語」
+#  XXX 找不到正式的台灣譯文,參閱 http://zh.wikipedia.org/zh/马里语
+msgid "Meadow Mari"
+msgstr "平地馬里文"
+
 #  NOTE「馬其頓文」是一種東歐語文,跟希臘的馬其頓並無關係
 msgid "Macedonian"
 msgstr "馬其頓文"
@@ -16021,6 +16030,13 @@
 msgid "You do not have permission to uninstall this application."
 msgstr "您沒有權限移除程式。"
 
+#~ msgid "Automatically reject from users not in buddy list"
+#~ msgstr "自動拒絕非來自好友清單中的使用者"
+
+# XXX 暫譯 - 20090226 acli
+#~ msgid "bug master"
+#~ msgstr "除錯主管"
+
 #~ msgid "An error occurred on the in-band bytestream transfer\n"
 #~ msgstr "帶內位元組流傳輸途中發生錯誤\n"
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/ca-certs/AddTrust_External_Root.pem	Sat Feb 12 23:54:14 2011 +0000
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
+MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
+IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
+MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
+FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
+bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
+dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
+H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
+uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
+mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
+a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
+E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
+WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
+VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
+Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
+cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
+IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
+AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
+YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
+6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
+Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
+c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
+mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
+-----END CERTIFICATE-----
--- a/share/ca-certs/Makefile.am	Sun Jan 09 23:32:10 2011 +0000
+++ b/share/ca-certs/Makefile.am	Sat Feb 12 23:54:14 2011 +0000
@@ -1,4 +1,5 @@
 CERTIFICATES = \
+		AddTrust_External_Root.pem \
 		America_Online_Root_Certification_Authority_1.pem \
 		CAcert_Root.pem \
 		CAcert_Class3.pem \