changeset 31168:f8ec889c5bce

propagate from branch 'im.pidgin.pidgin' (head f6cdf8776559775f9a4a72563e69741e139518bd) to branch 'im.pidgin.cpw.qulogic.msnp16' (head ee6655c65ffae7f61734aa5a05267a3f5a4fc0de)
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Mon, 10 May 2010 23:21:44 +0000
parents edb7c80bf930 (current diff) ec89b1d8571a (diff)
children 02dc01aa8c07 66e7fe9f7810
files libpurple/protocols/msn/dialog.c libpurple/protocols/msn/dialog.h libpurple/protocols/msn/msg.c libpurple/protocols/msn/msn.c libpurple/protocols/msn/msn.h libpurple/protocols/msn/notification.c libpurple/protocols/msn/session.c libpurple/protocols/msn/slp.c libpurple/protocols/msn/slplink.c libpurple/protocols/msn/sync.c libpurple/protocols/msn/sync.h
diffstat 64 files changed, 2638 insertions(+), 1855 deletions(-) [+]
line wrap: on
line diff
--- a/COPYRIGHT	Fri Apr 23 16:58:03 2010 +0000
+++ b/COPYRIGHT	Mon May 10 23:21:44 2010 +0000
@@ -295,6 +295,7 @@
 Paolo Maggi
 Sulabh Mahajan
 Willian T. Mahan
+Jonathan Maltz
 Tobias Markmann
 Kris Marsh
 Fidel Martinez
@@ -329,6 +330,7 @@
 Andrei Mozzhuhin
 Christian Muise
 MXit Lifestyle (Pty) Ltd.
+Alexander Nartov
 Richard Nelson
 Dennis Nezic
 Matthew A. Nicholson
--- a/ChangeLog	Fri Apr 23 16:58:03 2010 +0000
+++ b/ChangeLog	Mon May 10 23:21:44 2010 +0000
@@ -4,8 +4,8 @@
 	General:
 	* Changed GTK+ minimum version requirement to 2.10.0.
 	* Changed GLib minimum version requirement to 2.12.0.
-	* Using the --disable-nls argument to configre now works properly. You
-	  will no longer be forced to have intltool to configure and build.
+	* Using the --disable-nls argument to configure now works properly.
+	  You will no longer be forced to have intltool to configure and build.
 	* Fix two related crashes in the GnuTLS and NSS plugins when they
 	  suffer internal errors immediately upon attempting to establish
 	  an SSL connection.
@@ -47,8 +47,12 @@
 	  buddy icons.
 	* The 'Message Timestamp Formats' plugin allows changing the timestamp
 	  format from the timestamps' context menu in conversation log.
+	* The 'Message Timestamp Formats' plugin allows forcing 12-hour
+	  timestamps.  (Jonathan Maltz)
 	* Fix pastes from Chrome (rich-text pastes and probably URLs
-	  having garbage appended to them)
+	  having garbage appended to them).
+	* Show file transfer thumbnails for images on supporting protocols
+	  (currently only supported on MSN).
 
 	Bonjour:
 	* Added support for IPv6. (Thanks to T_X for testing)
@@ -70,10 +74,13 @@
 	  authentication fails due to an incorrect password.  (This is the same
 	  behavior as the legacy authentication method)
 	* Support sending and receiving HTML-formatted messages for ICQ.
+	* Use the proper URL for "View web profile" link for ICQ buddies.
+	  (Alexander Nartov)
 
 	MSN:
 	* Support for version 9 of the MSN protocol has been removed.  This
 	  version is no longer supported on the servers.
+	* Support file transfer thumbnails (previews) for images.
 
 	XMPP:
 	* Direct messages to a specific resource only upon receipt of a message
@@ -91,6 +98,11 @@
 	  minutes).  This fixes an issue with Openfire disconnecting a
 	  libpurple-baesd client that has just been quiet for about 6
 	  minutes.
+	* Only support Google Talk's JID Domain Discovery extension
+	  (allowing a user to log in with "@gmail.com" or "@googlemail.com"
+	  interchangeably) for those two domains.  This change was made
+	  due to interoperability issues with some BOSH Connection Managers
+	  and namespaced attributes.
 
 	Yahoo/Yahoo JAPAN:
 	* Attempt to better handle transparent proxies interfering with
--- a/ChangeLog.API	Fri Apr 23 16:58:03 2010 +0000
+++ b/ChangeLog.API	Mon May 10 23:21:44 2010 +0000
@@ -9,14 +9,26 @@
 		   * account-connection-error
 		* purple_account_get_name_for_display
 		* purple_account_get_privacy_type
+		* purple_account_get_public_alias
 		* purple_account_set_privacy_type
+		* purple_account_set_public_alias
+		* buddy-caps-changed blist signal
+		* Added media_caps to the PurpleBuddy struct
 		* purple_buddy_get_media_caps
 		* purple_buddy_set_media_caps
+		* purple_certificates_import for importing multiple
+		  certificates from a single file (and corresponding
+		  import_certificates member of PurpleCertificateScheme struct)
+		* autojoin connection signal
 		* purple_contact_get_group
+		* sent-attention conversation signal
+		* got-attention conversation signal
+		* ui-caps-changed media manager signal
 		* purple_media_candidate_copy
 		* purple_media_codec_copy
 		* purple_media_manager_get_backend_type
 		* purple_media_manager_set_backend_type
+		* PurpleMood struct in status.h
 		* purple_network_get_all_local_system_ips, which returns all
 		  local IPs on the system.  On systems with the getifaddrs()
 		  function, this will return both IPv4 and IPv6 addresses
@@ -29,20 +41,16 @@
 		  only supported if the getaddrinfo() function is available
 		  at build-time (not the case on Windows, currently).
 		* purple_prpl_got_media_caps
+		* purple_request_action_with_icon
+		* purple_request_action_with_icon_varg
 		* purple_socket_get_family
 		* purple_socket_speaks_ipv4
 		* purple_unescape_text
 		* purple_uuid_random
-		* media_caps to the PurpleBuddy struct
-		* buddy-caps-changed blist signal
-		* ui-caps-changed media manager signal
-		* sent-attention conversation signal
-		* got-attention conversation signal
-		* PurpleMood struct in status.h
-		* purple_certificates_import for importing multiple
-		  certificates from a single file (and corresponding
-		  import_certificates member of PurpleCertificateScheme struct)
-		* autojoin connection signal 
+		* purple_xfer_get_thumbnail
+		* purple_xfer_get_thumbnail_mimetype
+		* purple_xfer_set_thumbnail
+		* purple_xfer_prepare_thumbnail
 
 	Pidgin:
 		Added:
--- a/finch/gntblist.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/finch/gntblist.c	Mon May 10 23:21:44 2010 +0000
@@ -1117,6 +1117,8 @@
 			list = g_list_delete_link(list, list))
 	{
 		PurpleMenuAction *act = (PurpleMenuAction *) list->data;
+		if (!act)
+			continue;
 		act->data = node;
 		gnt_append_menu_action(menu, act, NULL);
 		g_signal_connect_swapped(G_OBJECT(menu), "destroy",
--- a/libpurple/account.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/account.c	Mon May 10 23:21:44 2010 +0000
@@ -1782,6 +1782,92 @@
 	schedule_accounts_save();
 }
 
+struct public_alias_closure
+{
+	PurpleAccount *account;
+	gpointer failure_cb;
+};
+
+static gboolean
+set_public_alias_unsupported(gpointer data)
+{
+	struct public_alias_closure *closure = data;
+	PurpleSetPublicAliasFailureCallback failure_cb = closure->failure_cb;
+
+	failure_cb(closure->account,
+	           _("This protocol does not support setting a public alias."));
+	g_free(closure);
+
+	return FALSE;
+}
+
+void
+purple_account_set_public_alias(PurpleAccount *account,
+		const char *alias, PurpleSetPublicAliasSuccessCallback success_cb,
+		PurpleSetPublicAliasFailureCallback failure_cb)
+{
+	PurpleConnection *gc;
+	PurplePlugin *prpl = NULL;
+	PurplePluginProtocolInfo *prpl_info = NULL;
+
+	g_return_if_fail(account != NULL);
+	g_return_if_fail(purple_account_is_connected(account));
+
+	gc = purple_account_get_connection(account);
+	prpl = purple_connection_get_prpl(gc);
+	prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+
+	if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, set_public_alias))
+		prpl_info->set_public_alias(gc, alias, success_cb, failure_cb);
+	else {
+		struct public_alias_closure *closure =
+				g_new0(struct public_alias_closure, 1);
+		closure->account = account;
+		closure->failure_cb = failure_cb;
+		purple_timeout_add(0, set_public_alias_unsupported, closure);
+	}
+}
+
+static gboolean
+get_public_alias_unsupported(gpointer data)
+{
+	struct public_alias_closure *closure = data;
+	PurpleGetPublicAliasFailureCallback failure_cb = closure->failure_cb;
+
+	failure_cb(closure->account,
+	           _("This protocol does not support fetching the public alias."));
+	g_free(closure);
+
+	return FALSE;
+}
+
+void
+purple_account_get_public_alias(PurpleAccount *account,
+		PurpleGetPublicAliasSuccessCallback success_cb,
+		PurpleGetPublicAliasFailureCallback failure_cb)
+{
+	PurpleConnection *gc;
+	PurplePlugin *prpl = NULL;
+	PurplePluginProtocolInfo *prpl_info = NULL;
+
+	g_return_if_fail(account != NULL);
+	g_return_if_fail(purple_account_is_connected(account));
+
+	gc = purple_account_get_connection(account);
+	prpl = purple_connection_get_prpl(gc);
+	prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+
+	if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_public_alias))
+		prpl_info->get_public_alias(gc, success_cb, failure_cb);
+	else {
+		struct public_alias_closure *closure =
+				g_new0(struct public_alias_closure, 1);
+		closure->account = account;
+		closure->failure_cb = failure_cb;
+		purple_timeout_add(0, get_public_alias_unsupported, closure);
+	}
+}
+
 void
 purple_account_clear_settings(PurpleAccount *account)
 {
--- a/libpurple/account.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/account.h	Mon May 10 23:21:44 2010 +0000
@@ -39,6 +39,10 @@
 typedef void (*PurpleAccountRequestAuthorizationCb)(void *);
 typedef void (*PurpleAccountRegistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
 typedef void (*PurpleAccountUnregistrationCb)(PurpleAccount *account, gboolean succeeded, void *user_data);
+typedef void (*PurpleSetPublicAliasSuccessCallback)(PurpleAccount *account, const char *new_alias);
+typedef void (*PurpleSetPublicAliasFailureCallback)(PurpleAccount *account, const char *error);
+typedef void (*PurpleGetPublicAliasSuccessCallback)(PurpleAccount *account, const char *alias);
+typedef void (*PurpleGetPublicAliasFailureCallback)(PurpleAccount *account, const char *error);
 
 #include "connection.h"
 #include "log.h"
@@ -462,6 +466,42 @@
 	const char *status_id, gboolean active, GList *attrs);
 
 /**
+ * Set a server-side (public) alias for this account.  The account
+ * must already be connected.
+ *
+ * Currently, the public alias is not stored locally, although this
+ * may change in a later version.
+ *
+ * @param account    The account
+ * @param alias      The new public alias for this account or NULL
+ *                   to unset the alias/nickname (or return it to
+ *                   a protocol-specific "default", like the username)
+ * @param success_cb A callback which will be called if the alias
+ *                   is successfully set on the server (or NULL).
+ * @param failure_cb A callback which will be called if the alias
+ *                   is not successfully set on the server (or NULL).
+ *
+ * @since 2.7.0
+ */
+void purple_account_set_public_alias(PurpleAccount *account,
+	const char *alias, PurpleSetPublicAliasSuccessCallback success_cb,
+	PurpleSetPublicAliasFailureCallback failure_cb);
+
+/**
+ * Fetch the server-side (public) alias for this account.  The account
+ * must already be connected.
+ *
+ * @param account    The account
+ * @param success_cb A callback which will be called with the alias
+ * @param failure_cb A callback which will be called if the prpl is
+ *                   unable to retrieve the server-side alias.
+ * @since 2.7.0
+ */
+void purple_account_get_public_alias(PurpleAccount *account,
+	PurpleGetPublicAliasSuccessCallback success_cb,
+	PurpleGetPublicAliasFailureCallback failure_cb);
+
+/**
  * Clears all protocol-specific settings on an account.
  *
  * @param account The account.
--- a/libpurple/ft.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/ft.c	Mon May 10 23:21:44 2010 +0000
@@ -60,6 +60,10 @@
 
 	/* TODO: Should really use a PurpleCircBuffer for this. */
 	GByteArray *buffer;
+
+	gpointer thumbnail_data;		/**< thumbnail image */
+	gsize thumbnail_size;
+	gchar *thumbnail_mimetype;
 } PurpleXferPrivData;
 
 static int purple_xfer_choose_file(PurpleXfer *xfer);
@@ -72,6 +76,10 @@
 	if (priv->buffer)
 		g_byte_array_free(priv->buffer, TRUE);
 
+	g_free(priv->thumbnail_data);
+
+	g_free(priv->thumbnail_mimetype);
+
 	g_free(priv);
 }
 
@@ -266,15 +274,21 @@
 	}
 }
 
-void purple_xfer_conversation_write(PurpleXfer *xfer, char *message, gboolean is_error)
+static void 
+purple_xfer_conversation_write_internal(PurpleXfer *xfer,
+	const char *message, gboolean is_error, gboolean print_thumbnail)
 {
 	PurpleConversation *conv = NULL;
 	PurpleMessageFlags flags = PURPLE_MESSAGE_SYSTEM;
 	char *escaped;
+	gconstpointer thumbnail_data;
+	gsize size;
 
 	g_return_if_fail(xfer != NULL);
 	g_return_if_fail(message != NULL);
 
+	thumbnail_data = purple_xfer_get_thumbnail(xfer, &size);
+
 	conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, xfer->who,
 											   purple_xfer_get_account(xfer));
 
@@ -286,10 +300,39 @@
 	if (is_error)
 		flags |= PURPLE_MESSAGE_ERROR;
 
-	purple_conversation_write(conv, NULL, escaped, flags, time(NULL));
+	if (print_thumbnail && thumbnail_data) {
+		gchar *message_with_img;
+		gpointer data = g_memdup(thumbnail_data, size); 
+		int id = purple_imgstore_add_with_id(data, size, NULL);
+
+		message_with_img = 
+			g_strdup_printf("<img id='%d'> %s", id, escaped);
+		purple_conversation_write(conv, NULL, message_with_img, flags, 
+			time(NULL));
+		purple_imgstore_unref_by_id(id);
+		g_free(message_with_img);
+	} else {
+		purple_conversation_write(conv, NULL, escaped, flags, time(NULL));
+	}
 	g_free(escaped);
 }
 
+void
+purple_xfer_conversation_write(PurpleXfer *xfer, gchar *message,
+	gboolean is_error)
+{
+	purple_xfer_conversation_write_internal(xfer, message, is_error, FALSE);
+}
+
+/* maybe this one should be exported publically? */
+static void
+purple_xfer_conversation_write_with_thumbnail(PurpleXfer *xfer,
+	const gchar *message)
+{
+	purple_xfer_conversation_write_internal(xfer, message, FALSE, TRUE);
+}
+
+
 static void purple_xfer_show_file_error(PurpleXfer *xfer, const char *filename)
 {
 	int err = errno;
@@ -448,6 +491,8 @@
 {
 	char *buf, *size_buf;
 	size_t size;
+	gconstpointer thumb;
+	gsize thumb_size;
 
 	/* If we have already accepted the request, ask the destination file
 	   name directly */
@@ -473,13 +518,19 @@
 			serv_got_im(purple_account_get_connection(xfer->account),
 								 xfer->who, xfer->message, 0, time(NULL));
 
-		purple_request_accept_cancel(xfer, NULL, buf, NULL,
-								  PURPLE_DEFAULT_ACTION_NONE,
-								  xfer->account, xfer->who, NULL,
-								  xfer,
-								  G_CALLBACK(purple_xfer_choose_file),
-								  G_CALLBACK(cancel_recv_cb));
-
+		if ((thumb = purple_xfer_get_thumbnail(xfer, &thumb_size))) {
+			purple_request_accept_cancel_with_icon(xfer, NULL, buf, NULL,
+				PURPLE_DEFAULT_ACTION_NONE, xfer->account, xfer->who, NULL,
+				thumb, thumb_size, xfer,
+				G_CALLBACK(purple_xfer_choose_file),
+				G_CALLBACK(cancel_recv_cb));
+		} else {
+			purple_request_accept_cancel(xfer, NULL, buf, NULL,
+				PURPLE_DEFAULT_ACTION_NONE, xfer->account, xfer->who, NULL,
+				xfer, G_CALLBACK(purple_xfer_choose_file),
+				G_CALLBACK(cancel_recv_cb));
+		}
+			
 		g_free(buf);
 	} else
 		purple_xfer_choose_file(xfer);
@@ -547,10 +598,12 @@
 		{
 			gchar* message = NULL;
 			PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who);
+
 			message = g_strdup_printf(_("%s is offering to send file %s"),
 				buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer));
-			purple_xfer_conversation_write(xfer, message, FALSE);
+			purple_xfer_conversation_write_with_thumbnail(xfer, message);
 			g_free(message);
+
 			/* Ask for a filename to save to if it's not already given by a plugin */
 			if (xfer->local_filename == NULL)
 				purple_xfer_ask_recv(xfer);
@@ -1580,6 +1633,52 @@
 		ui_ops->update_progress(xfer, purple_xfer_get_progress(xfer));
 }
 
+gconstpointer
+purple_xfer_get_thumbnail(const PurpleXfer *xfer, gsize *len)
+{
+	PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
+
+	if (len)
+		*len = priv->thumbnail_size;
+
+	return priv->thumbnail_data;
+}
+
+const gchar *
+purple_xfer_get_thumbnail_mimetype(const PurpleXfer *xfer)
+{
+	PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
+
+	return priv->thumbnail_mimetype;
+}
+
+void
+purple_xfer_set_thumbnail(PurpleXfer *xfer, gconstpointer thumbnail,
+	gsize size, const gchar *mimetype)
+{
+	PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
+
+	g_free(priv->thumbnail_data);
+	g_free(priv->thumbnail_mimetype);
+
+	if (thumbnail && size > 0) {
+		priv->thumbnail_data = g_memdup(thumbnail, size);
+		priv->thumbnail_size = size;
+		priv->thumbnail_mimetype = g_strdup(mimetype);
+	} else {
+		priv->thumbnail_data = NULL;
+		priv->thumbnail_size = 0;
+		priv->thumbnail_mimetype = NULL;
+	}
+}
+
+void
+purple_xfer_prepare_thumbnail(PurpleXfer *xfer, const gchar *formats)
+{
+	if (xfer->ui_ops->add_thumbnail) {
+		xfer->ui_ops->add_thumbnail(xfer, formats);
+	}
+}
 
 /**************************************************************************
  * File Transfer Subsystem API
--- a/libpurple/ft.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/ft.h	Mon May 10 23:21:44 2010 +0000
@@ -120,7 +120,12 @@
 	 */
 	void (*data_not_sent)(PurpleXfer *xfer, const guchar *buffer, gsize size);
 
-	void (*_purple_reserved1)(void);
+	/**
+	 * Op to create a thumbnail image for a file transfer
+	 *
+	 * @param xfer   The file transfer structure
+	 */
+	void (*add_thumbnail)(PurpleXfer *xfer, const gchar *formats);
 } PurpleXferUiOps;
 
 /**
@@ -687,6 +692,51 @@
  */
 void purple_xfer_prpl_ready(PurpleXfer *xfer);
 
+/**
+ * Gets the thumbnail data for a transfer
+ *
+ * @param xfer The file transfer to get the thumbnail for
+ * @param len  If not @c NULL, the length of the thumbnail data returned
+ *             will be set in the location pointed to by this.
+ * @return The thumbnail data, or NULL if there is no thumbnail
+ * @since 2.7.0
+ */
+gconstpointer purple_xfer_get_thumbnail(const PurpleXfer *xfer, gsize *len);
+
+/**
+ * Gets the mimetype of the thumbnail preview for a transfer
+ *
+ * @param xfer The file transfer to get the mimetype for
+ * @return The mimetype of the thumbnail, or @c NULL if not thumbnail is set
+ * @since 2.7.0
+ */
+const gchar *purple_xfer_get_thumbnail_mimetype(const PurpleXfer *xfer);
+	
+	
+/**
+ * Sets the thumbnail data for a transfer
+ *
+ * @param xfer The file transfer to set the data for
+ * @param thumbnail A pointer to the thumbnail data, this will be copied
+ * @param size The size in bytes of the passed in thumbnail data
+ * @param mimetype The mimetype of the generated thumbnail
+ * @since 2.7.0
+ */
+void purple_xfer_set_thumbnail(PurpleXfer *xfer, gconstpointer thumbnail,
+	gsize size, const gchar *mimetype);
+
+/**
+ * Prepare a thumbnail for a transfer (if the UI supports it)
+ * will be no-op in case the UI doesn't implement thumbnail creation
+ *
+ * @param xfer The file transfer to create a thumbnail for
+ * @param formats A comma-separated list of mimetypes for image formats
+ *	 	  the protocols can use for thumbnails.
+ * @since 2.7.0
+ */
+void purple_xfer_prepare_thumbnail(PurpleXfer *xfer, const gchar *formats);
+
+
 /*@}*/
 
 /**************************************************************************/
--- a/libpurple/network.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/network.h	Mon May 10 23:21:44 2010 +0000
@@ -90,8 +90,8 @@
 /**
  * Returns all IP addresses of the local system.
  *
- * @note The caller must free this list, this function currently only
- *       handles IPv4 addresses
+ * @note The caller must free this list.  If libpurple was built with
+ *       support for it, this function also enumerates IPv6 addresses.
  * @since 2.7.0
  *
  * @return A list of local IP addresses.
--- a/libpurple/protocols/bonjour/bonjour.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/bonjour/bonjour.c	Mon May 10 23:21:44 2010 +0000
@@ -528,7 +528,9 @@
 	NULL,                                                    /* get_account_text_table */
 	NULL,                                                    /* initiate_media */
 	NULL,                                                    /* get_media_caps */
-	NULL                                                     /* get_moods */
+	NULL,                                                    /* get_moods */
+	NULL,                                                    /* set_public_alias */
+	NULL                                                     /* get_public_alias */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/gg/gg.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/gg/gg.c	Mon May 10 23:21:44 2010 +0000
@@ -1601,12 +1601,6 @@
 			}
 			break;
 		case GG_EVENT_NOTIFY60:
-			purple_debug_info("gg",
-				"notify60_pre: (%d) status=%d; version=%d; descr=%s\n",
-				ev->event.notify60->uin, GG_S(ev->event.notify60->status),
-				ev->event.notify60->version,
-				ev->event.notify60->descr ? ev->event.notify60->descr : "(null)");
-
 			for (i = 0; ev->event.notify60[i].uin; i++) {
 				purple_debug_info("gg",
 					"notify60: (%d) status=%d; version=%d; descr=%s\n",
@@ -1737,7 +1731,7 @@
 							  ggp_callback_recv, gc);
 				
 				ggp_buddylist_send(gc);
-				purple_connection_update_progress(gc, _("Connected"), 2, 2);
+				purple_connection_update_progress(gc, _("Connected"), 1, 2);
 				purple_connection_set_state(gc, PURPLE_CONNECTED);
 			}
 			break;
@@ -1990,7 +1984,7 @@
 		purple_debug_info("gg", "Trying to retrieve address from gg appmsg service\n");
 
 	info->session = gg_login(glp);
-	purple_connection_update_progress(gc, _("Connecting"), 1, 2); 			
+	purple_connection_update_progress(gc, _("Connecting"), 0, 2); 			
 	if (info->session == NULL) {
 		purple_connection_error_reason (gc,
 			PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
@@ -2512,7 +2506,9 @@
 	NULL,                           /* get_account_text_table */
 	NULL,                           /* initiate_media */
 	NULL,                            /* can_do_media */
-	NULL 				/* get_moods */
+	NULL,				/* get_moods */
+	NULL,				/* set_public_alias */
+	NULL				/* get_public_alias */
 };
 
 static PurplePluginInfo info = {
--- a/libpurple/protocols/gg/search.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/gg/search.c	Mon May 10 23:21:44 2010 +0000
@@ -207,7 +207,7 @@
 {
 	char *tmp;
 
-	tmp = charset_convert(gg_pubdir50_get(res, num, field), "CP1250", "UTF-8");
+	tmp = g_strdup(gg_pubdir50_get(res, num, field));
 
 	return (tmp == NULL) ? g_strdup("") : tmp;
 }
--- a/libpurple/protocols/irc/irc.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/irc/irc.c	Mon May 10 23:21:44 2010 +0000
@@ -945,7 +945,9 @@
 	NULL,                    /* get_account_text_table */
 	NULL,                    /* initiate_media */
 	NULL,					 /* get_media_caps */
-	NULL					 /* get_moods */
+	NULL,					 /* get_moods */
+	NULL,					 /* set_public_alias */
+	NULL					 /* get_public_alias */
 };
 
 static gboolean load_plugin (PurplePlugin *plugin) {
--- a/libpurple/protocols/jabber/auth.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/auth.c	Mon May 10 23:21:44 2010 +0000
@@ -45,35 +45,6 @@
                                JabberIqType type, const char *id,
                                xmlnode *packet, gpointer data);
 
-gboolean
-jabber_process_starttls(JabberStream *js, xmlnode *packet)
-{
-	PurpleAccount *account;
-	xmlnode *starttls;
-
-	account = purple_connection_get_account(js->gc);
-
-	if((starttls = xmlnode_get_child(packet, "starttls"))) {
-		if(purple_ssl_is_supported()) {
-			jabber_send_raw(js,
-					"<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1);
-			return TRUE;
-		} else if(xmlnode_get_child(starttls, "required")) {
-			purple_connection_error_reason(js->gc,
-				PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
-				_("Server requires TLS/SSL, but no TLS/SSL support was found."));
-			return TRUE;
-		} else if(purple_account_get_bool(account, "require_tls", JABBER_DEFAULT_REQUIRE_TLS)) {
-			purple_connection_error_reason(js->gc,
-				 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
-				_("You require encryption, but no TLS/SSL support was found."));
-			return TRUE;
-		}
-	}
-
-	return FALSE;
-}
-
 static void finish_plaintext_authentication(JabberStream *js)
 {
 	JabberIq *iq;
--- a/libpurple/protocols/jabber/auth.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/auth.h	Mon May 10 23:21:44 2010 +0000
@@ -45,7 +45,6 @@
 	void (*dispose)(JabberStream *js);
 };
 
-gboolean jabber_process_starttls(JabberStream *js, xmlnode *packet);
 void jabber_auth_start(JabberStream *js, xmlnode *packet);
 void jabber_auth_start_old(JabberStream *js);
 void jabber_auth_handle_challenge(JabberStream *js, xmlnode *packet);
--- a/libpurple/protocols/jabber/auth_cyrus.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/auth_cyrus.c	Mon May 10 23:21:44 2010 +0000
@@ -252,29 +252,14 @@
 					g_free(msg);
 					return JABBER_SASL_STATE_CONTINUE;
 
-				} else {
-					/* We have no mechs which can work.
-					 * Try falling back on the old jabber:iq:auth method. We get here if the server supports
-					 * one or more sasl mechs, we are compiled with cyrus-sasl support, but we support or can connect with none of
-					 * the offerred mechs. jabberd 2.0 w/ SASL and Apple's iChat Server 10.5 both handle and expect
-					 * jabber:iq:auth in this situation.  iChat Server in particular offers SASL GSSAPI by default, which is often
-					 * not configured on the client side, and expects a fallback to jabber:iq:auth when it (predictably) fails.
-					 *
-					 * Note: xep-0078 points out that using jabber:iq:auth after a sasl failure is wrong. However,
-					 * I believe this refers to actual authentication failure, not a simple lack of concordant mechanisms.
-					 * Doing otherwise means that simply compiling with SASL support renders the client unable to connect to servers
-					 * which would connect without issue otherwise. -evands
-					 */
-					js->auth_mech = NULL;
-					jabber_auth_start_old(js);
-					return JABBER_SASL_STATE_CONTINUE;
 				}
-				/* not reached */
+
 				break;
 
 				/* Fatal errors. Give up and go home */
 			case SASL_BADPARAM:
 			case SASL_NOMEM:
+				*error = g_strdup(_("SASL authentication failed"));
 				break;
 
 				/* For everything else, fail the mechanism and try again */
@@ -314,8 +299,11 @@
 		xmlnode_set_namespace(auth, NS_XMPP_SASL);
 		xmlnode_set_attrib(auth, "mechanism", js->current_mech);
 
-		xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
-		xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
+		if (g_str_equal(js->user->domain, "gmail.com") ||
+				g_str_equal(js->user->domain, "googlemail.com")) {
+			xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
+			xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
+		}
 
 		if (clientout) {
 			if (coutlen == 0) {
@@ -330,7 +318,6 @@
 		*reply = auth;
 		return JABBER_SASL_STATE_CONTINUE;
 	} else {
-		*error = g_strdup(_("SASL authentication failed"));
 		return JABBER_SASL_STATE_FAIL;
 	}
 }
@@ -404,17 +391,6 @@
 			continue;
 		}
 
-		/* Don't include Google Talk's X-GOOGLE-TOKEN mechanism
-		 * or Facebook Chat's X-FACEBOOK-PLATFORM mechansim,
-		 * as we will not support them and including them gives a false fall-back
-		 * to other mechs offerred, leading to incorrect error handling.
-		 */
-		if (g_str_equal(mech_name, "X-GOOGLE-TOKEN")
-				|| g_str_equal(mech_name, "X-FACEBOOK-PLATFORM") ) {
-			g_free(mech_name);
-			continue;
-		}
-
 		g_string_append(js->sasl_mechs, mech_name);
 		g_string_append_c(js->sasl_mechs, ' ');
 		g_free(mech_name);
@@ -542,6 +518,25 @@
 			sasl_dispose(&js->sasl);
 
 			return jabber_auth_start_cyrus(js, reply, error);
+
+		} else if ((js->auth_fail_count == 1) && 
+				   (js->current_mech && g_str_equal(js->current_mech, "GSSAPI"))) {
+			/* If we tried GSSAPI first, it failed, and it was the only method we had to try, try jabber:iq:auth
+			 * for compatibility with iChat 10.5 Server.
+			 *
+			 * iChat Server 10.5  offers SASL GSSAPI by default, which is often
+			 * not configured on the client side, and expects a fallback to jabber:iq:auth when it (predictably) fails.
+			 *
+			 * Note: xep-0078 points out that using jabber:iq:auth after a sasl failure is wrong. However,
+			 * I believe this refers to actual authentication failure, not a simple lack of concordant mechanisms.
+			 * Doing otherwise means that simply compiling with SASL support renders the client unable to connect to servers
+			 * which would connect without issue otherwise. -evands
+			 */
+			sasl_dispose(&js->sasl);
+			js->sasl = NULL;
+			js->auth_mech = NULL;
+			jabber_auth_start_old(js);
+			return JABBER_SASL_STATE_CONTINUE;
 		}
 	}
 
--- a/libpurple/protocols/jabber/auth_digest_md5.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/auth_digest_md5.c	Mon May 10 23:21:44 2010 +0000
@@ -188,16 +188,17 @@
 
 	if (g_hash_table_lookup(parts, "rspauth")) {
 		char *rspauth = g_hash_table_lookup(parts, "rspauth");
+		char *expected_rspauth = js->auth_mech_data;
 
-		if (rspauth && purple_strequal(rspauth, js->expected_rspauth)) {
+		if (rspauth && purple_strequal(rspauth, expected_rspauth)) {
 			reply = xmlnode_new("response");
 			xmlnode_set_namespace(reply, NS_XMPP_SASL);
 		} else {
 			*msg = g_strdup(_("Invalid challenge from server"));
 			state = JABBER_SASL_STATE_FAIL;
 		}
-		g_free(js->expected_rspauth);
-		js->expected_rspauth = NULL;
+		g_free(js->auth_mech_data);
+		js->auth_mech_data = NULL;
 	} else {
 		/* assemble a response, and send it */
 		/* see RFC 2831 */
@@ -235,7 +236,7 @@
 			g_free(a2);
 
 			a2 = g_strdup_printf(":xmpp/%s", realm);
-			js->expected_rspauth = generate_response_value(js->user,
+			js->auth_mech_data = generate_response_value(js->user,
 					purple_connection_get_password(js->gc), nonce, cnonce, a2, realm);
 			g_free(a2);
 
@@ -276,6 +277,13 @@
 	return state;
 }
 
+static void
+digest_md5_dispose(JabberStream *js)
+{
+	g_free(js->auth_mech_data);
+	js->auth_mech_data = NULL;
+}
+
 static JabberSaslMech digest_md5_mech = {
 	10, /* priority */
 	"DIGEST-MD5", /* name */
@@ -283,7 +291,7 @@
 	digest_md5_handle_challenge,
 	NULL, /* handle_success */
 	NULL, /* handle_failure */
-	NULL  /* handle_dispose */
+	digest_md5_dispose,
 };
 
 JabberSaslMech *jabber_auth_get_digest_md5_mech(void)
--- a/libpurple/protocols/jabber/auth_plain.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/auth_plain.c	Mon May 10 23:21:44 2010 +0000
@@ -40,13 +40,16 @@
 	auth = xmlnode_new("auth");
 	xmlnode_set_namespace(auth, NS_XMPP_SASL);
 
-	xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
-	xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
+	if (g_str_equal(js->user->domain, "gmail.com") ||
+			g_str_equal(js->user->domain, "googlemail.com")) {
+		xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
+		xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
+	}
 
 	response = g_string_new("");
-	response = g_string_append_len(response, "\0", 1);
+	response = g_string_append_c(response, '\0');
 	response = g_string_append(response, js->user->node);
-	response = g_string_append_len(response, "\0", 1);
+	response = g_string_append_c(response, '\0');
 	response = g_string_append(response,
 			purple_connection_get_password(js->gc));
 
--- a/libpurple/protocols/jabber/auth_scram.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/auth_scram.c	Mon May 10 23:21:44 2010 +0000
@@ -47,6 +47,32 @@
 	g_return_val_if_reached(NULL);
 }
 
+static const struct {
+	const char *error;
+	const char *meaning;
+} server_errors[] = {
+	{ "invalid-encoding",
+		N_("Invalid Encoding")},
+	{ "extensions-not-supported",
+		N_("Unsupported Extension") },
+	{ "channel-bindings-dont-match",
+		N_("Unexpected response from the server.  This may indicate a possible MITM attack") },
+	{ "server-does-support-channel-binding",
+		N_("The server does support channel binding, but did not appear to advertise it.  This indicates a likely MITM attack") },
+	{ "channel-binding-not-supported",
+		N_("Server does not support channel binding") },
+	{ "unsupported-channel-binding-type",
+		N_("Unsupported channel binding method") },
+	{ "unknown-user",
+		N_("User not found") },
+	{ "invalid-username-encoding",
+		N_("Invalid Username Encoding") },
+	{ "no-resources",
+		N_("Resource Constraint") },
+	{ "other-error",
+		N_("Unknown Error") }
+};
+
 guchar *jabber_scram_hi(const JabberScramHash *hash, const GString *str,
                         GString *salt, guint iterations)
 {
--- a/libpurple/protocols/jabber/data.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/data.c	Mon May 10 23:21:44 2010 +0000
@@ -1,4 +1,6 @@
 /*
+ * purple - Jabber Service Discovery
+ *
  * 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.
@@ -11,11 +13,12 @@
  * 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 Library General Public License for more details.
+ * 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
+ *
  */
 
 #include "internal.h"
@@ -36,7 +39,7 @@
 
 JabberData *
 jabber_data_create_from_data(gconstpointer rawdata, gsize size, const char *type,
-	JabberStream *js)
+	gboolean ephemeral, JabberStream *js)
 {
 	JabberData *data = g_new0(JabberData, 1);
 	gchar *checksum = jabber_calculate_data_hash(rawdata, size, "sha1");
@@ -48,6 +51,7 @@
 	data->cid = g_strdup(cid);
 	data->type = g_strdup(type);
 	data->size = size;
+	data->ephemeral = ephemeral;
 
 	data->data = g_memdup(rawdata, size);
 
@@ -110,6 +114,12 @@
 	return data;
 }
 
+void
+jabber_data_destroy(JabberData *data)
+{
+	jabber_data_delete(data);
+}
+
 const char *
 jabber_data_get_cid(const JabberData *data)
 {
@@ -289,14 +299,14 @@
 const JabberData *
 jabber_data_find_local_by_alt(const gchar *alt)
 {
-	purple_debug_info("jabber", "looking up local smiley with alt = %s\n", alt);
+	purple_debug_info("jabber", "looking up local data object with alt = %s\n", alt);
 	return g_hash_table_lookup(local_data_by_alt, alt);
 }
 
 const JabberData *
 jabber_data_find_local_by_cid(const gchar *cid)
 {
-	purple_debug_info("jabber", "lookup local smiley with cid = %s\n", cid);
+	purple_debug_info("jabber", "lookup local data object with cid = %s\n", cid);
 	return g_hash_table_lookup(local_data_by_cid, cid);
 }
 
@@ -305,7 +315,7 @@
     const gchar *cid)
 {
 	const JabberData *data = g_hash_table_lookup(remote_data_by_cid, cid);
-	purple_debug_info("jabber", "lookup remote smiley with cid = %s\n", cid);
+	purple_debug_info("jabber", "lookup remote data object with cid = %s\n", cid);
 
 	if (data == NULL) {
 		gchar *jid_cid =
@@ -323,9 +333,10 @@
 void
 jabber_data_associate_local(JabberData *data, const gchar *alt)
 {
-	purple_debug_info("jabber", "associating local smiley\n alt = %s, cid = %s\n",
-		alt, jabber_data_get_cid(data));
-	g_hash_table_insert(local_data_by_alt, g_strdup(alt), data);
+	purple_debug_info("jabber", "associating local data object\n alt = %s, cid = %s\n",
+		alt , jabber_data_get_cid(data));
+	if (alt)
+		g_hash_table_insert(local_data_by_alt, g_strdup(alt), data);
 	g_hash_table_insert(local_data_by_cid, g_strdup(jabber_data_get_cid(data)),
 		data);
 }
@@ -371,6 +382,11 @@
 		xmlnode_set_attrib(result->node, "id", id);
 		xmlnode_insert_child(result->node,
 							 jabber_data_get_xml_definition(data));
+		/* if the data object is temporary, destroy it and remove the references
+		 to it */
+		if (data->ephemeral) {
+			g_hash_table_remove(local_data_by_cid, cid);
+		}
 	}
 	jabber_iq_send(result);
 }
--- a/libpurple/protocols/jabber/data.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/data.h	Mon May 10 23:21:44 2010 +0000
@@ -1,4 +1,6 @@
 /*
+ * purple - Jabber Service Discovery
+ *
  * 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.
@@ -11,11 +13,12 @@
  * 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 Library General Public License for more details.
+ * 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_DATA_H
@@ -34,6 +37,7 @@
 	char *type;
 	gsize size;
 	gpointer data;
+	gboolean ephemeral;
 } JabberData;
 
 typedef void (JabberDataRequestCallback)(JabberData *data, gchar *alt,
@@ -42,12 +46,16 @@
 
 /* creates a JabberData instance from raw data */
 JabberData *jabber_data_create_from_data(gconstpointer data, gsize size,
-										 const char *type, JabberStream *js);
+	const char *type, gboolean ephemeral, JabberStream *js);
 
 /* create a JabberData instance from an XML "data" element (as defined by
   XEP 0231 */
 JabberData *jabber_data_create_from_xml(xmlnode *tag);
 
+/* destroy a JabberData instance, NOT to be used on data that has been
+	associated, since they get "owned" */
+void jabber_data_destroy(JabberData *data);
+
 const char *jabber_data_get_cid(const JabberData *data);
 const char *jabber_data_get_type(const JabberData *data);
 
--- a/libpurple/protocols/jabber/ibb.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/ibb.c	Mon May 10 23:21:44 2010 +0000
@@ -1,4 +1,6 @@
 /*
+ * purple - Jabber Service Discovery
+ *
  * 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.
@@ -11,11 +13,12 @@
  * 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 Library General Public License for more details.
+ * 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
+ *
  */
 
 #include "internal.h"
--- a/libpurple/protocols/jabber/ibb.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/ibb.h	Mon May 10 23:21:44 2010 +0000
@@ -1,4 +1,6 @@
 /*
+ * purple - Jabber Service Discovery
+ *
  * 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.
@@ -11,11 +13,12 @@
  * 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 Library General Public License for more details.
+ * 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_IBB_H_
--- a/libpurple/protocols/jabber/jabber.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Mon May 10 23:21:44 2010 +0000
@@ -210,6 +210,35 @@
 	return purple_strreplace(input, "__HOSTNAME__", hostname);
 }
 
+static gboolean
+jabber_process_starttls(JabberStream *js, xmlnode *packet)
+{
+	PurpleAccount *account;
+	xmlnode *starttls;
+
+	account = purple_connection_get_account(js->gc);
+
+	if((starttls = xmlnode_get_child(packet, "starttls"))) {
+		if(purple_ssl_is_supported()) {
+			jabber_send_raw(js,
+					"<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1);
+			return TRUE;
+		} else if(xmlnode_get_child(starttls, "required")) {
+			purple_connection_error_reason(js->gc,
+				PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
+				_("Server requires TLS/SSL, but no TLS/SSL support was found."));
+			return TRUE;
+		} else if(purple_account_get_bool(account, "require_tls", JABBER_DEFAULT_REQUIRE_TLS)) {
+			purple_connection_error_reason(js->gc,
+				 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
+				_("You require encryption, but no TLS/SSL support was found."));
+			return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
 void jabber_stream_features_parse(JabberStream *js, xmlnode *packet)
 {
 	if(xmlnode_get_child(packet, "starttls")) {
@@ -364,8 +393,7 @@
 	int ret;
 	gboolean success = TRUE;
 
-	if (len == -1)
-		len = strlen(data);
+	g_return_val_if_fail(len > 0, FALSE);
 
 	if (js->state == JABBER_STREAM_CONNECTED)
 		jabber_stream_restart_inactivity_timer(js);
@@ -409,6 +437,12 @@
 
 void jabber_send_raw(JabberStream *js, const char *data, int len)
 {
+	PurpleConnection *gc;
+	PurpleAccount *account;
+
+	gc = js->gc;
+	account = purple_connection_get_account(gc);
+
 	/* because printing a tab to debug every minute gets old */
 	if(strcmp(data, "\t")) {
 		const char *username;
@@ -436,9 +470,9 @@
 			*data_start = '\0';
 		}
 
-		username = purple_connection_get_display_name(js->gc);
+		username = purple_connection_get_display_name(gc);
 		if (!username)
-			username = purple_account_get_username(purple_connection_get_account(js->gc));
+			username = purple_account_get_username(account);
 
 		purple_debug_misc("jabber", "Sending%s (%s): %s%s%s\n",
 				jabber_stream_is_ssl(js) ? " (ssl)" : "", username,
@@ -449,10 +483,13 @@
 		g_free(text);
 	}
 
-	purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-sending-text", js->gc, &data);
+	purple_signal_emit(purple_connection_get_prpl(gc), "jabber-sending-text", gc, &data);
 	if (data == NULL)
 		return;
 
+	if (len == -1)
+		len = strlen(data);
+
 	/* If we've got a security layer, we need to encode the data,
 	 * splitting it on the maximum buffer length negotiated */
 #ifdef HAVE_CYRUS_SASL
@@ -460,21 +497,36 @@
 		int pos = 0;
 
 		if (!js->gsc && js->fd<0)
-			return;
-
-		if (len == -1)
-			len = strlen(data);
+			g_return_if_reached();
 
 		while (pos < len) {
 			int towrite;
 			const char *out;
 			unsigned olen;
+			int rc;
 
 			towrite = MIN((len - pos), js->sasl_maxbuf);
 
-			sasl_encode(js->sasl, &data[pos], towrite, &out, &olen);
+			rc = sasl_encode(js->sasl, &data[pos], towrite,
+			                 &out, &olen);
+			if (rc != SASL_OK) {
+				gchar *error =
+					g_strdup_printf(_("SASL error: %s"),
+						sasl_errdetail(js->sasl));
+				purple_debug_error("jabber",
+					"sasl_encode error %d: %s\n", rc,
+					sasl_errdetail(js->sasl));
+				purple_connection_error_reason(gc,
+					PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+					error);
+				g_free(error);
+				return;
+			}
 			pos += towrite;
 
+			/* do_jabber_send_raw returns FALSE when it throws a
+			 * connection error.
+			 */
 			if (!do_jabber_send_raw(js, out, olen))
 				break;
 		}
@@ -482,9 +534,6 @@
 	}
 #endif
 
-	if (len == -1)
-		len = strlen(data);
-
 	if (js->bosh)
 		jabber_bosh_connection_send_raw(js->bosh, data);
 	else
@@ -493,7 +542,7 @@
 
 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
 {
-	JabberStream *js = (JabberStream*)gc->proto_data;
+	JabberStream *js = purple_connection_get_protocol_data(gc);
 	jabber_send_raw(js, buf, len);
 	return len;
 }
@@ -597,7 +646,7 @@
 jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition)
 {
 	PurpleConnection *gc = data;
-	JabberStream *js = gc->proto_data;
+	JabberStream *js = purple_connection_get_protocol_data(gc);
 	int len;
 	static char buf[4096];
 
@@ -607,14 +656,26 @@
 	if((len = read(js->fd, buf, sizeof(buf) - 1)) > 0) {
 		gc->last_received = time(NULL);
 #ifdef HAVE_CYRUS_SASL
-		if (js->sasl_maxbuf>0) {
+		if (js->sasl_maxbuf > 0) {
 			const char *out;
 			unsigned int olen;
-			sasl_decode(js->sasl, buf, len, &out, &olen);
-			if (olen>0) {
+			int rc;
+
+			rc = sasl_decode(js->sasl, buf, len, &out, &olen);
+			if (rc != SASL_OK) {
+				gchar *error =
+					g_strdup_printf(_("SASL error: %s"),
+						sasl_errdetail(js->sasl));
+				purple_debug_error("jabber",
+					"sasl_decode_error %d: %s\n", rc,
+					sasl_errdetail(js->sasl));
+				purple_connection_error_reason(gc,
+					PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+					error);
+			} else if (olen > 0) {
 				purple_debug_info("jabber", "RecvSASL (%u): %s\n", olen, out);
-				jabber_parser_process(js,out,olen);
-				if(js->reinit)
+				jabber_parser_process(js, out, olen);
+				if (js->reinit)
 					jabber_stream_init(js);
 			}
 			return;
@@ -1584,7 +1645,6 @@
 	g_free(js->old_source);
 	g_free(js->old_uri);
 	g_free(js->old_track);
-	g_free(js->expected_rspauth);
 
 	if (js->vcard_timer != 0)
 		purple_timeout_remove(js->vcard_timer);
--- a/libpurple/protocols/jabber/jabber.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/jabber.h	Mon May 10 23:21:44 2010 +0000
@@ -112,7 +112,7 @@
 
 	JabberSaslMech *auth_mech;
 	gpointer auth_mech_data;
-	
+
 	/**
 	 * The header from the opening <stream/> tag.  This being NULL is treated
 	 * as a special condition in the parsing code (signifying the next
@@ -122,9 +122,6 @@
 	char *stream_id;
 	JabberStreamState state;
 
-	/* SASL authentication */
-	char *expected_rspauth;
-
 	GHashTable *buddies;
 
 	/*
--- a/libpurple/protocols/jabber/libxmpp.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/libxmpp.c	Mon May 10 23:21:44 2010 +0000
@@ -127,7 +127,9 @@
 	NULL, /* get_account_text_table */
 	jabber_initiate_media,          /* initiate_media */
 	jabber_get_media_caps,                  /* get_media_caps */
-	jabber_get_moods  							/* get_moods */
+	jabber_get_moods,  							/* get_moods */
+	NULL, /* set_public_alias */
+	NULL  /* get_public_alias */
 };
 
 static gboolean load_plugin(PurplePlugin *plugin)
--- a/libpurple/protocols/jabber/message.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/message.c	Mon May 10 23:21:44 2010 +0000
@@ -963,7 +963,7 @@
 						JabberData *new_data =
 							jabber_data_create_from_data(purple_imgstore_get_data(image),
 								purple_imgstore_get_size(image),
-								jabber_message_get_mimetype_from_ext(ext), js);
+								jabber_message_get_mimetype_from_ext(ext), FALSE, js);
 						purple_debug_info("jabber",
 							"cache local smiley alt = %s, cid = %s\n",
 							shortcut, jabber_data_get_cid(new_data));
--- a/libpurple/protocols/jabber/namespaces.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/namespaces.h	Mon May 10 23:21:44 2010 +0000
@@ -89,6 +89,9 @@
 /* XEP-0237 Roster Versioning */
 #define NS_ROSTER_VERSIONING "urn:xmpp:features:rosterver"
 
+/* XEP-0264 File Transfer Thumbnails (Thumbs) */
+#define NS_THUMBS "urn:xmpp:thumbs:0"
+
 /* Google extensions */
 #define NS_GOOGLE_CAMERA "http://www.google.com/xmpp/protocol/camera/v1"
 #define NS_GOOGLE_VIDEO "http://www.google.com/xmpp/protocol/video/v1"
--- a/libpurple/protocols/jabber/presence.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/presence.c	Mon May 10 23:21:44 2010 +0000
@@ -924,8 +924,9 @@
 		goto out;
 	}
 
-	presence.chat = jabber_chat_find(js, presence.jid_from->node,
-	                                 presence.jid_from->domain);
+	if (presence.jid_from->node)
+		presence.chat = jabber_chat_find(js, presence.jid_from->node,
+		                                 presence.jid_from->domain);
 	if(presence.jb->error_msg) {
 		g_free(presence.jb->error_msg);
 		presence.jb->error_msg = NULL;
--- a/libpurple/protocols/jabber/si.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/jabber/si.c	Mon May 10 23:21:44 2010 +0000
@@ -32,6 +32,7 @@
 #include "notify.h"
 
 #include "buddy.h"
+#include "data.h"
 #include "disco.h"
 #include "jabber.h"
 #include "ibb.h"
@@ -39,6 +40,7 @@
 #include "si.h"
 
 #define STREAMHOST_CONNECT_TIMEOUT 15
+#define ENABLE_FT_THUMBNAILS 0
 
 typedef struct _JabberSIXfer {
 	JabberStream *js;
@@ -1246,9 +1248,14 @@
 	JabberIq *iq;
 	xmlnode *si, *file, *feature, *x, *field, *option, *value;
 	char buf[32];
+#if ENABLE_FT_THUMBNAILS
+	gconstpointer thumb;
+	gsize thumb_size;
 
+	purple_xfer_prepare_thumbnail(xfer, "jpeg,png");
+#endif
 	xfer->filename = g_path_get_basename(xfer->local_filename);
-
+	
 	iq = jabber_iq_new(jsx->js, JABBER_IQ_SET);
 	xmlnode_set_attrib(iq->node, "to", xfer->who);
 	si = xmlnode_new_child(iq->node, "si");
@@ -1266,6 +1273,23 @@
 	xmlnode_set_attrib(file, "size", buf);
 	/* maybe later we'll do hash and date attribs */
 
+#if ENABLE_FT_THUMBNAILS
+	/* add thumbnail, if appropriate */
+	if ((thumb = purple_xfer_get_thumbnail(xfer, &thumb_size))) {
+		const gchar *mimetype = purple_xfer_get_thumbnail_mimetype(xfer);
+		JabberData *thumbnail_data =
+			jabber_data_create_from_data(thumb, thumb_size,
+				mimetype, TRUE, jsx->js);
+		xmlnode *thumbnail = xmlnode_new_child(file, "thumbnail");
+		xmlnode_set_namespace(thumbnail, NS_THUMBS);
+		xmlnode_set_attrib(thumbnail, "cid", 
+			jabber_data_get_cid(thumbnail_data));
+		xmlnode_set_attrib(thumbnail, "mime-type", mimetype);
+		/* cache data */
+		jabber_data_associate_local(thumbnail_data, NULL);
+	}
+#endif
+						  
 	feature = xmlnode_new_child(si, "feature");
 	xmlnode_set_namespace(feature, "http://jabber.org/protocol/feature-neg");
 	x = xmlnode_new_child(feature, "x");
@@ -1644,12 +1668,29 @@
 		purple_xfer_request(xfer);
 }
 
+#if ENABLE_FT_THUMBNAILS
+static void
+jabber_si_thumbnail_cb(JabberData *data, gchar *alt, gpointer userdata)
+{
+	PurpleXfer *xfer = (PurpleXfer *) userdata;
+
+	if (data) {
+		purple_xfer_set_thumbnail(xfer, jabber_data_get_data(data),
+			jabber_data_get_size(data), jabber_data_get_type(data));
+		/* data is ephemeral, get rid of now (the xfer re-owned the thumbnail */
+		jabber_data_destroy(data);
+	}
+
+	purple_xfer_request(xfer);
+}
+#endif
+
 void jabber_si_parse(JabberStream *js, const char *from, JabberIqType type,
                      const char *id, xmlnode *si)
 {
 	JabberSIXfer *jsx;
 	PurpleXfer *xfer;
-	xmlnode *file, *feature, *x, *field, *option, *value;
+	xmlnode *file, *feature, *x, *field, *option, *value, *thumbnail;
 	const char *stream_id, *filename, *filesize_c, *profile;
 	size_t filesize = 0;
 
@@ -1731,10 +1772,27 @@
 	purple_xfer_set_request_denied_fnc(xfer, jabber_si_xfer_request_denied);
 	purple_xfer_set_cancel_recv_fnc(xfer, jabber_si_xfer_cancel_recv);
 	purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end);
-
+				   
 	js->file_transfers = g_list_append(js->file_transfers, xfer);
 
+#if ENABLE_FT_THUMBNAILS
+	/* if there is a thumbnail, we should request it... */
+	if ((thumbnail = xmlnode_get_child_with_namespace(file, "thumbnail",
+		NS_THUMBS))) {
+		const char *cid = xmlnode_get_attrib(thumbnail, "cid");
+		if (cid) {
+			jabber_data_request(js, cid, purple_xfer_get_remote_user(xfer),
+			    NULL, TRUE, jabber_si_thumbnail_cb, xfer);
+		} else {
+			purple_xfer_request(xfer);
+		}
+	} else {
+		purple_xfer_request(xfer);
+	}
+#else
+	thumbnail = NULL; /* Silence warning */
 	purple_xfer_request(xfer);
+#endif
 }
 
 void
--- a/libpurple/protocols/msn/msg.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/msn/msg.c	Mon May 10 23:21:44 2010 +0000
@@ -966,14 +966,13 @@
 static void 
 got_wink_cb(MsnSlpCall *slpcall, const guchar *data, gsize size)
 {
-	FILE *f;
+	FILE *f = NULL;
 	char *path = NULL;
 	const char *who = slpcall->slplink->remote_user;
 	purple_debug_info("msn", "Received wink from %s\n", who);
 
-	if ((f = purple_mkstemp(&path, TRUE))) {
-		fwrite(data, size, 1, f);
-		fclose(f);
+	if ((f = purple_mkstemp(&path, TRUE)) &&
+	    (fwrite(data, 1, size, f) == size)) {
 		datacast_inform_user(slpcall->slplink->swboard,
 		                     who,
 		                     _("%s sent a wink. <a href='msn-wink://%s'>Click here to play it</a>"),
@@ -984,21 +983,22 @@
 		                     who,
 		                     _("%s sent a wink, but it could not be saved"),
 		                     NULL);
-	} 
+	}
+	if (f)
+		fclose(f);
 	g_free(path);
 }
 
 static void 
 got_voiceclip_cb(MsnSlpCall *slpcall, const guchar *data, gsize size)
 {
-	FILE *f;
+	FILE *f = NULL;
 	char *path = NULL;
 	const char *who = slpcall->slplink->remote_user;
 	purple_debug_info("msn", "Received voice clip from %s\n", who);
 
-	if ((f = purple_mkstemp(&path, TRUE))) {
-		fwrite(data, size, 1, f);
-		fclose(f);
+	if ((f = purple_mkstemp(&path, TRUE)) &&
+	    (fwrite(data, 1, size, f) == size)) {
 		datacast_inform_user(slpcall->slplink->swboard,
 		                     who,
 		                     _("%s sent a voice clip. <a href='audio://%s'>Click here to play it</a>"),
@@ -1009,7 +1009,9 @@
 		                     who,
 		                     _("%s sent a voice clip, but it could not be saved"),
 		                     NULL);
-	} 
+	}
+	if (f)
+		fclose(f);
 	g_free(path);
 }
 
--- a/libpurple/protocols/msn/msn.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/msn/msn.c	Mon May 10 23:21:44 2010 +0000
@@ -194,44 +194,166 @@
 	return PURPLE_CMD_RET_OK;
 }
 
+struct public_alias_closure
+{
+	PurpleAccount *account;
+	gpointer success_cb;
+	gpointer failure_cb;
+};
+
+static gboolean
+set_public_alias_length_error(gpointer data)
+{
+	struct public_alias_closure *closure = data;
+	PurpleSetPublicAliasFailureCallback failure_cb = closure->failure_cb;
+
+	failure_cb(closure->account, _("Your new MSN friendly name is too long."));
+	g_free(closure);
+
+	return FALSE;
+}
+
+static void
+prp_success_cb(MsnCmdProc *cmdproc, MsnCommand *cmd)
+{
+	const char *type, *friendlyname;
+	struct public_alias_closure *closure;
+	
+	g_return_if_fail(cmd->param_count >= 3);
+	type = cmd->params[1];
+	g_return_if_fail(!strcmp(type, "MFN"));
+
+	closure = cmd->trans->data;
+	friendlyname = purple_url_decode(cmd->params[2]);
+
+	msn_update_contact(cmdproc->session, "Me", MSN_UPDATE_DISPLAY, friendlyname);
+
+	purple_connection_set_display_name(
+		purple_account_get_connection(closure->account),
+		friendlyname);
+	purple_account_set_string(closure->account, "display-name", friendlyname);
+
+	if (closure->success_cb) {
+		PurpleSetPublicAliasSuccessCallback success_cb = closure->success_cb;
+		success_cb(closure->account, friendlyname);
+	}
+}
+
+static void
+prp_error_cb(MsnCmdProc *cmdproc, MsnTransaction *trans, int error)
+{
+	struct public_alias_closure *closure = trans->data;
+	PurpleSetPublicAliasFailureCallback failure_cb = closure->failure_cb;
+	gboolean debug;
+	const char *error_text;
+
+	error_text = msn_error_get_text(error, &debug);
+	failure_cb(closure->account, error_text);
+}
+
+static void
+prp_timeout_cb(MsnCmdProc *cmdproc, MsnTransaction *trans)
+{
+	struct public_alias_closure *closure = trans->data;
+	PurpleSetPublicAliasFailureCallback failure_cb = closure->failure_cb;
+	failure_cb(closure->account, _("Connection Timeout"));
+}
+
 void
-msn_act_id(PurpleConnection *gc, const char *entry)
+msn_set_public_alias(PurpleConnection *pc, const char *alias,
+                     PurpleSetPublicAliasSuccessCallback success_cb,
+                     PurpleSetPublicAliasFailureCallback failure_cb)
 {
 	MsnCmdProc *cmdproc;
 	MsnSession *session;
 	MsnTransaction *trans;
 	PurpleAccount *account;
-	const char *alias;
-
-	session = gc->proto_data;
+	const char *real_alias;
+	struct public_alias_closure *closure;
+
+	session = purple_connection_get_protocol_data(pc);
 	cmdproc = session->notification->cmdproc;
-	account = purple_connection_get_account(gc);
-
-	if (entry && *entry)
+	account = purple_connection_get_account(pc);
+
+	if (alias && *alias)
 	{
-		char *tmp = g_strdup(entry);
-		alias = purple_url_encode(g_strstrip(tmp));
+		char *tmp = g_strdup(alias);
+		real_alias = purple_url_encode(g_strstrip(tmp));
 		g_free(tmp);
 	}
 	else
-		alias = "";
-
-	if (strlen(alias) > BUDDY_ALIAS_MAXLEN)
+		real_alias = "";
+
+	if (strlen(real_alias) > BUDDY_ALIAS_MAXLEN)
 	{
-		purple_notify_error(gc, NULL,
-						  _("Your new MSN friendly name is too long."), NULL);
+		if (failure_cb) {
+			struct public_alias_closure *closure =
+				g_new0(struct public_alias_closure, 1);
+			closure->account = account;
+			closure->failure_cb = failure_cb;
+			purple_timeout_add(0, set_public_alias_length_error, closure);
+		} else {
+			purple_notify_error(pc, NULL,
+			                    _("Your new MSN friendly name is too long."),
+			                    NULL);
+		}
 		return;
 	}
 
-	if (*alias == '\0') {
-		alias = purple_url_encode(purple_account_get_username(account));
+	if (*real_alias == '\0') {
+		real_alias = purple_url_encode(purple_account_get_username(account));
+	}
+
+	closure = g_new0(struct public_alias_closure, 1);
+	closure->account = account;
+	closure->success_cb = success_cb;
+	closure->failure_cb = failure_cb;
+
+	trans = msn_transaction_new(cmdproc, "PRP", "MFN %s", real_alias);
+	msn_transaction_set_data(trans, closure);
+	msn_transaction_set_data_free(trans, g_free);
+	msn_transaction_add_cb(trans, "PRP", prp_success_cb);
+	if (failure_cb) {
+		msn_transaction_set_error_cb(trans, prp_error_cb);
+		msn_transaction_set_timeout_cb(trans, prp_timeout_cb);
 	}
-
-	trans = msn_transaction_new(cmdproc, "PRP", "MFN %s", alias);
-
 	msn_cmdproc_send_trans(cmdproc, trans);
 }
 
+static gboolean
+get_public_alias_cb(gpointer data)
+{
+	struct public_alias_closure *closure = data;
+	PurpleGetPublicAliasSuccessCallback success_cb = closure->success_cb;
+	const char *alias;
+
+	alias = purple_account_get_string(closure->account, "display-name",
+	                                  purple_account_get_username(closure->account));
+	success_cb(closure->account, alias);
+	g_free(closure);
+
+	return FALSE;
+}
+
+static void
+msn_get_public_alias(PurpleConnection *pc,
+                     PurpleGetPublicAliasSuccessCallback success_cb,
+                     PurpleGetPublicAliasFailureCallback failure_cb)
+{
+	struct public_alias_closure *closure = g_new0(struct public_alias_closure, 1);
+	PurpleAccount *account = purple_connection_get_account(pc);
+
+	closure->account = account;
+	closure->success_cb = success_cb;
+	purple_timeout_add(0, get_public_alias_cb, closure);
+}
+
+static void
+msn_act_id(PurpleConnection *gc, const char *entry)
+{
+	msn_set_public_alias(gc, entry, NULL, NULL);
+}
+
 static void
 msn_set_prp(PurpleConnection *gc, const char *type, const char *entry)
 {
@@ -2799,75 +2921,77 @@
 static PurplePluginProtocolInfo prpl_info =
 {
 	OPT_PROTO_MAIL_CHECK,
-	NULL,					/* user_splits */
-	NULL,					/* protocol_options */
-	{"png,gif", 0, 0, 96, 96, 0, PURPLE_ICON_SCALE_SEND},	/* icon_spec */
-	msn_list_icon,			/* list_icon */
-	msn_list_emblems,		/* list_emblems */
-	msn_status_text,		/* status_text */
-	msn_tooltip_text,		/* tooltip_text */
-	msn_status_types,		/* away_states */
-	msn_blist_node_menu,		/* blist_node_menu */
-	NULL,					/* chat_info */
-	NULL,					/* chat_info_defaults */
-	msn_login,			/* login */
-	msn_close,			/* close */
-	msn_send_im,			/* send_im */
-	NULL,					/* set_info */
-	msn_send_typing,		/* send_typing */
-	msn_get_info,			/* get_info */
-	msn_set_status,			/* set_away */
-	msn_set_idle,			/* set_idle */
-	NULL,					/* change_passwd */
-	msn_add_buddy,			/* add_buddy */
-	NULL,					/* add_buddies */
-	msn_rem_buddy,			/* remove_buddy */
-	NULL,					/* remove_buddies */
-	msn_add_permit,			/* add_permit */
-	msn_add_deny,			/* add_deny */
-	msn_rem_permit,			/* rem_permit */
-	msn_rem_deny,			/* rem_deny */
-	msn_set_permit_deny,	/* set_permit_deny */
-	NULL,					/* join_chat */
-	NULL,					/* reject chat invite */
-	NULL,					/* get_chat_name */
-	msn_chat_invite,		/* chat_invite */
-	msn_chat_leave,			/* chat_leave */
-	NULL,					/* chat_whisper */
-	msn_chat_send,			/* chat_send */
-	msn_keepalive,			/* keepalive */
-	NULL,					/* register_user */
-	NULL,					/* get_cb_info */
-	NULL,					/* get_cb_away */
-	msn_alias_buddy,		/* alias_buddy */
-	msn_group_buddy,		/* group_buddy */
-	msn_rename_group,		/* rename_group */
-	NULL,					/* buddy_free */
-	msn_convo_closed,		/* convo_closed */
-	msn_normalize,			/* normalize */
-	msn_set_buddy_icon,		/* set_buddy_icon */
-	msn_remove_group,		/* remove_group */
-	NULL,					/* get_cb_real_name */
-	NULL,					/* set_chat_topic */
-	NULL,					/* find_blist_chat */
-	NULL,					/* roomlist_get_list */
-	NULL,					/* roomlist_cancel */
-	NULL,					/* roomlist_expand_category */
-	msn_can_receive_file,	/* can_receive_file */
-	msn_send_file,			/* send_file */
-	msn_new_xfer,			/* new_xfer */
-	msn_offline_message,			/* offline_message */
-	NULL,					/* whiteboard_prpl_ops */
-	NULL,					/* send_raw */
-	NULL,					/* roomlist_room_serialize */
-	NULL,					/* unregister_user */
-	msn_send_attention,                     /* send_attention */
-	msn_attention_types,                    /* attention_types */
-	sizeof(PurplePluginProtocolInfo),       /* struct_size */
-	msn_get_account_text_table,             /* get_account_text_table */
-	NULL,                                   /* initiate_media */
-	NULL,                                   /* get_media_caps */
-	NULL                                    /* get_moods */
+	NULL,                               /* user_splits */
+	NULL,                               /* protocol_options */
+	{"png,gif", 0, 0, 96, 96, 0, PURPLE_ICON_SCALE_SEND},   /* icon_spec */
+	msn_list_icon,                      /* list_icon */
+	msn_list_emblems,                   /* list_emblems */
+	msn_status_text,                    /* status_text */
+	msn_tooltip_text,                   /* tooltip_text */
+	msn_status_types,                   /* away_states */
+	msn_blist_node_menu,                /* blist_node_menu */
+	NULL,                               /* chat_info */
+	NULL,                               /* chat_info_defaults */
+	msn_login,                          /* login */
+	msn_close,                          /* close */
+	msn_send_im,                        /* send_im */
+	NULL,                               /* set_info */
+	msn_send_typing,                    /* send_typing */
+	msn_get_info,                       /* get_info */
+	msn_set_status,                     /* set_away */
+	msn_set_idle,                       /* set_idle */
+	NULL,                               /* change_passwd */
+	msn_add_buddy,                      /* add_buddy */
+	NULL,                               /* add_buddies */
+	msn_rem_buddy,                      /* remove_buddy */
+	NULL,                               /* remove_buddies */
+	msn_add_permit,                     /* add_permit */
+	msn_add_deny,                       /* add_deny */
+	msn_rem_permit,                     /* rem_permit */
+	msn_rem_deny,                       /* rem_deny */
+	msn_set_permit_deny,                /* set_permit_deny */
+	NULL,                               /* join_chat */
+	NULL,                               /* reject chat invite */
+	NULL,                               /* get_chat_name */
+	msn_chat_invite,                    /* chat_invite */
+	msn_chat_leave,                     /* chat_leave */
+	NULL,                               /* chat_whisper */
+	msn_chat_send,                      /* chat_send */
+	msn_keepalive,                      /* keepalive */
+	NULL,                               /* register_user */
+	NULL,                               /* get_cb_info */
+	NULL,                               /* get_cb_away */
+	msn_alias_buddy,                    /* alias_buddy */
+	msn_group_buddy,                    /* group_buddy */
+	msn_rename_group,                   /* rename_group */
+	NULL,                               /* buddy_free */
+	msn_convo_closed,                   /* convo_closed */
+	msn_normalize,                      /* normalize */
+	msn_set_buddy_icon,                 /* set_buddy_icon */
+	msn_remove_group,                   /* remove_group */
+	NULL,                               /* get_cb_real_name */
+	NULL,                               /* set_chat_topic */
+	NULL,                               /* find_blist_chat */
+	NULL,                               /* roomlist_get_list */
+	NULL,                               /* roomlist_cancel */
+	NULL,                               /* roomlist_expand_category */
+	msn_can_receive_file,               /* can_receive_file */
+	msn_send_file,                      /* send_file */
+	msn_new_xfer,                       /* new_xfer */
+	msn_offline_message,                /* offline_message */
+	NULL,                               /* whiteboard_prpl_ops */
+	NULL,                               /* send_raw */
+	NULL,                               /* roomlist_room_serialize */
+	NULL,                               /* unregister_user */
+	msn_send_attention,                 /* send_attention */
+	msn_attention_types,                /* attention_types */
+	sizeof(PurplePluginProtocolInfo),	/* struct_size */
+	msn_get_account_text_table,         /* get_account_text_table */
+	NULL,                               /* initiate_media */
+	NULL,                               /* get_media_caps */
+	NULL,                               /* get_moods */
+	msn_set_public_alias,               /* set_public_alias */
+	msn_get_public_alias                /* get_public_alias */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/msn/msn.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/msn/msn.h	Mon May 10 23:21:44 2010 +0000
@@ -143,7 +143,10 @@
 	 (MSN_CLIENT_ID_CAPABILITIES))
 
 gboolean msn_email_is_valid(const char *passport);
-void msn_act_id(PurpleConnection *gc, const char *entry);
+void
+msn_set_public_alias(PurpleConnection *gc, const char *alias,
+                     PurpleSetPublicAliasSuccessCallback success_cb,
+                     PurpleSetPublicAliasFailureCallback failure_cb);
 void msn_send_privacy(PurpleConnection *gc);
 void msn_send_im_message(MsnSession *session, MsnMessage *msg);
 
--- a/libpurple/protocols/msn/notification.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/msn/notification.c	Mon May 10 23:21:44 2010 +0000
@@ -587,6 +587,7 @@
 	int payload_len;
 	int adl_count = 0;
 	int fqy_count = 0;
+	PurpleConnection *pc;
 	const char *display_name;
 
 	adl_node = xmlnode_new("ml");
@@ -693,11 +694,12 @@
 	xmlnode_free(adl_node);
 	xmlnode_free(fqy_node);
 
-	display_name = purple_connection_get_display_name(session->account->gc);
+	pc = purple_account_get_connection(session->account);
+	display_name = purple_connection_get_display_name(pc);
 	if (display_name
 	    && strcmp(display_name,
 		      purple_account_get_username(session->account))) {
-		msn_act_id(session->account->gc, display_name);
+		msn_set_public_alias(pc, display_name, NULL, NULL);
 	}
 
 }
@@ -1344,11 +1346,11 @@
 prp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
 	MsnSession *session = cmdproc->session;
-	const char *type, *value, *friendlyname;
+	const char *type, *value;
 
 	g_return_if_fail(cmd->param_count >= 3);
 
-	type  = cmd->params[2];
+	type = cmd->params[2];
 
 	if (cmd->param_count == 4)
 	{
@@ -1368,19 +1370,6 @@
 			msn_user_set_work_phone(session->user, NULL);
 		else if (!strcmp(type, "PHM"))
 			msn_user_set_mobile_phone(session->user, NULL);
-		else {
-			type = cmd->params[1];
-			if (!strcmp(type, "MFN")) {
-				friendlyname = purple_url_decode(cmd->params[2]);
-
-				msn_update_contact(session, "Me", MSN_UPDATE_DISPLAY, friendlyname);
-
-				purple_connection_set_display_name(
-					purple_account_get_connection(session->account),
-					friendlyname);
-				purple_account_set_string(session->account, "display-name", friendlyname);
-			}
-		}
 	}
 }
 
--- a/libpurple/protocols/msn/session.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/msn/session.c	Mon May 10 23:21:44 2010 +0000
@@ -407,7 +407,7 @@
 
 	/* Prevent the connection progress going backwards, eg. if we get
 	 * transferred several times during login */
-	if (session->login_step > step)
+	if (session->login_step >= step)
 		return;
 
 	/* If we're already logged in, we're probably here because of a
--- a/libpurple/protocols/msn/slp.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/msn/slp.c	Mon May 10 23:21:44 2010 +0000
@@ -422,6 +422,12 @@
 
 			xfer->data = slpcall;
 
+			if (header->type == 0 && bin_len >= sizeof(MsnFileContext)) {
+				purple_xfer_set_thumbnail(xfer, &header->preview,
+				                          bin_len - sizeof(MsnFileContext),
+				    					  "image/png");
+			}
+
 			purple_xfer_request(xfer);
 		}
 		g_free(header);
--- a/libpurple/protocols/msn/slplink.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/msn/slplink.c	Mon May 10 23:21:44 2010 +0000
@@ -691,15 +691,19 @@
 gen_context(PurpleXfer *xfer, const char *file_name, const char *file_path)
 {
 	gsize size = 0;
-	MsnFileContext header;
+	MsnFileContext *header;
 	gchar *u8 = NULL;
 	gchar *ret;
 	gunichar2 *uni = NULL;
 	glong currentChar = 0;
 	glong len = 0;
+	const char *preview;
+	gsize preview_len;
 
 	size = purple_xfer_get_size(xfer);
 
+	purple_xfer_prepare_thumbnail(xfer, "png");
+
 	if (!file_name) {
 		gchar *basename = g_path_get_basename(file_path);
 		u8 = purple_utf8_try_convert(basename);
@@ -715,23 +719,33 @@
 		u8 = NULL;
 	}
 
-	header.length = GUINT32_TO_LE(sizeof(MsnFileContext) - 1);
-	header.version = GUINT32_TO_LE(2); /* V.3 contains additional unnecessary data */
-	header.file_size = GUINT64_TO_LE(size);
-	header.type = GUINT32_TO_LE(1);    /* No file preview */
+	preview = purple_xfer_get_thumbnail(xfer, &preview_len);
+	header = g_malloc(sizeof(MsnFileContext) + preview_len);
+
+	header->length = GUINT32_TO_LE(sizeof(MsnFileContext) - 1);
+	header->version = GUINT32_TO_LE(2); /* V.3 contains additional unnecessary data */
+	header->file_size = GUINT64_TO_LE(size);
+	if (preview)
+		header->type = GUINT32_TO_LE(0);
+	else
+		header->type = GUINT32_TO_LE(1);
 
 	len = MIN(len, MAX_FILE_NAME_LEN);
 	for (currentChar = 0; currentChar < len; currentChar++) {
-		header.file_name[currentChar] = GUINT16_TO_LE(uni[currentChar]);
+		header->file_name[currentChar] = GUINT16_TO_LE(uni[currentChar]);
 	}
-	memset(&header.file_name[currentChar], 0x00, (MAX_FILE_NAME_LEN - currentChar) * 2);
+	memset(&header->file_name[currentChar], 0x00, (MAX_FILE_NAME_LEN - currentChar) * 2);
 
-	memset(&header.unknown1, 0, sizeof(header.unknown1));
-	header.unknown2 = GUINT32_TO_LE(0xffffffff);
-	header.preview[0] = '\0';
+	memset(&header->unknown1, 0, sizeof(header->unknown1));
+	header->unknown2 = GUINT32_TO_LE(0xffffffff);
+	if (preview) {
+		memcpy(&header->preview, preview, preview_len);
+	}
+	header->preview[preview_len] = '\0';
 
 	g_free(uni);
-	ret = purple_base64_encode((const guchar *)&header, sizeof(MsnFileContext));
+	ret = purple_base64_encode((const guchar *)header, sizeof(MsnFileContext) + preview_len);
+	g_free(header);
 	return ret;
 }
 
--- a/libpurple/protocols/mxit/mxit.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/mxit/mxit.c	Mon May 10 23:21:44 2010 +0000
@@ -635,7 +635,9 @@
 	mxit_get_text_table,	/* get_account_text_table */
 	NULL,					/* initiate_media */
 	NULL,					/* get_media_caps */
-	NULL					/* get_moods */
+	NULL,					/* get_moods */
+	NULL,					/* set_public_alias */
+	NULL					/* get_public_alias */
 };
 
 
--- a/libpurple/protocols/mxit/protocol.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/mxit/protocol.c	Mon May 10 23:21:44 2010 +0000
@@ -1266,6 +1266,15 @@
 	purple_connection_update_progress( session->con, _( "Successfully Logged In..." ), 3, 4 );
 	purple_connection_set_state( session->con, PURPLE_CONNECTED );
 
+	/* save extra info if this is a HTTP connection */
+	if ( session->http ) {
+		/* save the http server to use for this session */
+		g_strlcpy( session->http_server, records[1]->fields[3]->data, sizeof( session->http_server ) );
+
+		/* save the session id */
+		session->http_sesid = atoi( records[0]->fields[0]->data );
+	}
+
 	/* display the current splash-screen */
 	if ( splash_popup_enabled( session ) )
 		splash_display( session );
@@ -1290,15 +1299,6 @@
 		g_free( statusmsg2 );
 	}
 
-	/* save extra info if this is a HTTP connection */
-	if ( session->http ) {
-		/* save the http server to use for this session */
-		g_strlcpy( session->http_server, records[1]->fields[3]->data, sizeof( session->http_server ) );
-
-		/* save the session id */
-		session->http_sesid = atoi( records[0]->fields[0]->data );
-	}
-
 	/* retrieve our MXit profile */
 	mxit_send_extprofile_request( session, NULL, ARRAY_SIZE( profilelist ), profilelist );
 }
--- a/libpurple/protocols/myspace/myspace.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/myspace/myspace.c	Mon May 10 23:21:44 2010 +0000
@@ -3094,7 +3094,9 @@
 	msim_get_account_text_table,              /* get_account_text_table */
 	NULL,                   /* initiate_media */
 	NULL,                   /* get_media_caps */
-	NULL                    /* get_moods */
+	NULL,                   /* get_moods */
+	NULL,                   /* set_public_alias */
+	NULL                    /* get_public_alias */
 };
 
 /**
--- a/libpurple/protocols/novell/novell.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/novell/novell.c	Mon May 10 23:21:44 2010 +0000
@@ -3530,7 +3530,9 @@
 	NULL,						/* get_account_text_table */
 	NULL,						/* initiate_media */
 	NULL,						/* get_media_caps */
-	NULL						/* get_moods */
+	NULL,						/* get_moods */
+	NULL,						/* set_public_alias */
+	NULL						/* get_public_alias */
 };
 
 static PurplePluginInfo info = {
--- a/libpurple/protocols/null/nullprpl.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/null/nullprpl.c	Mon May 10 23:21:44 2010 +0000
@@ -1120,6 +1120,8 @@
   NULL,                                /* get_account_text_table */
   NULL,                                /* initiate_media */
   NULL,                                /* get_media_caps */
+  NULL,                                /* set_public_alias */
+  NULL,                                /* get_public_alias */
   NULL                                 /* get_moods */
 };
 
--- a/libpurple/protocols/oscar/libaim.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/oscar/libaim.c	Mon May 10 23:21:44 2010 +0000
@@ -97,7 +97,9 @@
 	NULL,					/* get_account_text_table */
 	NULL,					/* initiate_media */
 	NULL,					/* get_media_caps */
-	NULL					/* get_moods */
+	NULL,					/* get_moods */
+	NULL,					/* set_public_alias */
+	NULL					/* get_public_alias */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/oscar/libicq.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/oscar/libicq.c	Mon May 10 23:21:44 2010 +0000
@@ -109,6 +109,8 @@
 	NULL,					/* initiate_media */
 	NULL,					/* can_do_media */
 	oscar_get_purple_moods, /* get_moods */
+	NULL,					/* set_public_alias */
+	NULL					/* get_public_alias */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/oscar/oscar.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Mon May 10 23:21:44 2010 +0000
@@ -3534,7 +3534,7 @@
 	PurpleConnection *gc = od->gc;
 	PurpleAccount *account = purple_connection_get_account(gc);
 	PurpleNotifyUserInfo *user_info;
-	gchar *tmp = NULL, *info_utf8 = NULL;
+	gchar *tmp = NULL, *info_utf8 = NULL, *base_profile_url = NULL;
 	va_list ap;
 	aim_userinfo_t *userinfo;
 
@@ -3587,8 +3587,9 @@
 	}
 
 	purple_notify_user_info_add_section_break(user_info);
-	tmp = g_strdup_printf("<a href=\"http://profiles.aim.com/%s\">%s</a>",
-			purple_normalize(account, userinfo->bn), _("View web profile"));
+	base_profile_url = oscar_util_valid_name_icq(userinfo->bn) ? "http://www.icq.com/people" : "http://profiles.aim.com";
+	tmp = g_strdup_printf("<a href=\"%s/%s\">%s</a>",
+			base_profile_url, purple_normalize(account, userinfo->bn), _("View web profile"));
 	purple_notify_user_info_add_pair(user_info, NULL, tmp);
 	g_free(tmp);
 
--- a/libpurple/protocols/qq/qq.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/qq/qq.c	Mon May 10 23:21:44 2010 +0000
@@ -1041,7 +1041,9 @@
 	NULL,							/* get_account_text_table */
 	NULL,							/* initiate_media */
 	NULL,							/* get_media_caps */
-	NULL							/* get_moods */
+	NULL,							/* get_moods */
+	NULL,							/* set_public_alias */
+	NULL							/* get_public_alias */
 };
 
 static PurplePluginInfo info = {
--- a/libpurple/protocols/silc/silc.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/silc/silc.c	Mon May 10 23:21:44 2010 +0000
@@ -2117,7 +2117,9 @@
 	NULL,				        /* get_account_text_table */
 	NULL,				        /* initiate_media */
 	NULL,				        /* get_media_caps */
-	NULL				        /* get_moods */
+	NULL,				        /* get_moods */
+	NULL,				        /* set_public_alias */
+	NULL				        /* get_public_alias */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/silc10/silc.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/silc10/silc.c	Mon May 10 23:21:44 2010 +0000
@@ -1842,7 +1842,10 @@
 	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL,                       /* get_account_text_table */
 	NULL,                       /* initiate_media */
-	NULL                       /* can_do_media */
+	NULL,                       /* get_media_caps */
+	NULL,                       /* get_moods */
+	NULL,                       /* set_public_alias */
+	NULL                        /* get_public_alias */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/simple/simple.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/simple/simple.c	Mon May 10 23:21:44 2010 +0000
@@ -2110,7 +2110,9 @@
 	NULL,					/* get_account_text_table */
 	NULL,					/* initiate_media */
 	NULL,					/* get_media_caps */
-	NULL					/* get_moods */
+	NULL,					/* get_moods */
+	NULL,					/* set_public_alias */
+	NULL					/* get_public_alias */
 };
 
 
--- a/libpurple/protocols/yahoo/libyahoo.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/yahoo/libyahoo.c	Mon May 10 23:21:44 2010 +0000
@@ -265,7 +265,9 @@
 	yahoo_get_account_text_table,    /* get_account_text_table */
 	NULL, /* initiate_media */
 	NULL,  /* get_media_caps */
-	NULL   /* get_moods */
+	NULL,  /* get_moods */
+	NULL,  /* set_public_alias */
+	NULL   /* get_public_alias */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/yahoo/libyahoojp.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/yahoo/libyahoojp.c	Mon May 10 23:21:44 2010 +0000
@@ -161,7 +161,9 @@
 	yahoojp_get_account_text_table,    /* get_account_text_table */
 	NULL, /* initiate_media */
 	NULL, /* get_media_caps */
-	NULL  /* get_moods */
+	NULL, /* get_moods */
+	NULL, /* set_public_alias */
+	NULL  /* get_public_alias */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/zephyr/zephyr.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/protocols/zephyr/zephyr.c	Mon May 10 23:21:44 2010 +0000
@@ -2909,7 +2909,9 @@
 	NULL,					/* get_account_text_table */
 	NULL,					/* initate_media */
 	NULL,					/* get_media_caps */
-	NULL					/* get_moods */
+	NULL,					/* get_moods */
+	NULL,					/* set_public_alias */
+	NULL					/* get_public_alias */
 };
 
 static PurplePluginInfo info = {
--- a/libpurple/prpl.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/prpl.h	Mon May 10 23:21:44 2010 +0000
@@ -52,6 +52,13 @@
 typedef struct _PurpleBuddyIconSpec PurpleBuddyIconSpec;
 
 /**
+ * A description of a file transfer thumbnail specification.
+ * This tells the UI if and what image formats the prpl support for file
+ * transfer thumbnails.
+ */
+typedef struct _PurpleThumbnailSpec PurpleThumbnailSpec;
+
+/**
  * This \#define exists just to make it easier to fill out the buddy icon
  * field in the prpl info struct for protocols that couldn't care less.
  */
@@ -573,8 +580,48 @@
 	/**
 	 * Returns an array of "PurpleMood"s, with the last one having
 	 * "mood" set to @c NULL.
+	 * @since 2.7.0
 	 */
 	PurpleMood *(*get_moods)(PurpleAccount *account);
+
+	/**
+	 * Set the user's "friendly name" (or alias or nickname or
+	 * whatever term you want to call it) on the server.  The
+	 * protocol plugin should call success_cb or failure_cb
+	 * *asynchronously* (if it knows immediately that the set will fail,
+	 * call one of the callbacks from an idle/0-second timeout) depending
+	 * on if the nickname is set successfully.
+	 *
+	 * @param gc    The connection for which to set an alias
+	 * @param alias The new server-side alias/nickname for this account,
+	 *              or NULL to unset the alias/nickname (or return it to
+	 *              a protocol-specific "default").
+	 * @param success_cb Callback to be called if the public alias is set
+	 * @param failure_cb Callback to be called if setting the public alias
+	 *                   fails
+	 * @see purple_account_set_public_alias
+	 * @since 2.7.0
+	 */
+	void (*set_public_alias)(PurpleConnection *gc, const char *alias,
+	                         PurpleSetPublicAliasSuccessCallback success_cb,
+	                         PurpleSetPublicAliasFailureCallback failure_cb);
+	/**
+	 * Retrieve the user's "friendly name" as set on the server.
+	 * The protocol plugin should call success_cb or failure_cb
+	 * *asynchronously* (even if it knows immediately that the get will fail,
+	 * call one of the callbacks from an idle/0-second timeout) depending
+	 * on if the nickname is retrieved.
+	 *
+	 * @param gc    The connection for which to retireve the alias
+	 * @param success_cb Callback to be called with the retrieved alias
+	 * @param failure_cb Callback to be called if the prpl is unable to
+	 *                   retrieve the alias
+	 * @see purple_account_get_public_alias
+	 * @since 2.7.0
+	 */
+	void (*get_public_alias)(PurpleConnection *gc,
+	                         PurpleGetPublicAliasSuccessCallback success_cb,
+	                         PurpleGetPublicAliasFailureCallback failure_cb);
 };
 
 #define PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, member) \
--- a/libpurple/request.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/request.c	Mon May 10 23:21:44 2010 +0000
@@ -1317,6 +1317,29 @@
 }
 
 void *
+purple_request_action_with_icon(void *handle, const char *title, 
+					const char *primary,
+					const char *secondary, int default_action,
+					PurpleAccount *account, const char *who, 
+					PurpleConversation *conv, gconstpointer icon_data,
+					gsize icon_size, void *user_data, size_t action_count, ...)
+{
+	void *ui_handle;
+	va_list args;
+
+	g_return_val_if_fail(action_count > 0, NULL);
+
+	va_start(args, action_count);
+	ui_handle = purple_request_action_with_icon_varg(handle, title, primary, 
+		secondary, default_action, account, who, conv, icon_data, icon_size,
+		user_data, action_count, args);
+	va_end(args);
+
+	return ui_handle;
+}
+
+
+void *
 purple_request_action_varg(void *handle, const char *title,
 						 const char *primary, const char *secondary,
 						 int default_action,
@@ -1348,6 +1371,41 @@
 }
 
 void *
+purple_request_action_with_icon_varg(void *handle, const char *title,
+						 const char *primary, const char *secondary,
+						 int default_action,
+						 PurpleAccount *account, const char *who, 
+						 PurpleConversation *conv, gconstpointer icon_data,
+						 gsize icon_size,
+						 void *user_data, size_t action_count, va_list actions)
+{
+	PurpleRequestUiOps *ops;
+
+	g_return_val_if_fail(action_count > 0, NULL);
+
+	ops = purple_request_get_ui_ops();
+
+	if (ops != NULL && ops->request_action_with_icon != NULL) {
+		PurpleRequestInfo *info;
+
+		info            = g_new0(PurpleRequestInfo, 1);
+		info->type      = PURPLE_REQUEST_ACTION;
+		info->handle    = handle;
+		info->ui_handle = ops->request_action_with_icon(title, primary, secondary,
+											  default_action, account, who, conv,
+											  icon_data, icon_size,
+											  user_data, action_count, actions);
+
+		handles = g_list_append(handles, info);
+
+		return info->ui_handle;
+	}
+
+	return NULL;
+}
+
+
+void *
 purple_request_fields(void *handle, const char *title, const char *primary,
 					const char *secondary, PurpleRequestFields *fields,
 					const char *ok_text, GCallback ok_cb,
--- a/libpurple/request.h	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/request.h	Mon May 10 23:21:44 2010 +0000
@@ -237,10 +237,18 @@
 	                        PurpleAccount *account, const char *who,
 	                        PurpleConversation *conv, void *user_data);
 
+	/** @see purple_request_action_with_icon_varg(). */
+	void *(*request_action_with_icon)(const char *title, const char *primary,
+	                        const char *secondary, int default_action,
+	                        PurpleAccount *account, const char *who,
+	                        PurpleConversation *conv, 
+	                        gconstpointer icon_data, gsize icon_size,
+	                        void *user_data,
+	                        size_t action_count, va_list actions);
+
 	void (*_purple_reserved1)(void);
 	void (*_purple_reserved2)(void);
 	void (*_purple_reserved3)(void);
-	void (*_purple_reserved4)(void);
 } PurpleRequestUiOps;
 
 typedef void (*PurpleRequestInputCb)(void *, const char *);
@@ -1393,6 +1401,29 @@
 	void *user_data, size_t action_count, va_list actions);
 
 /**
+ * Version of purple_request_action() supplying an image for the UI to 
+ * optionally display as an icon in the dialog; see its documentation
+ * @since 2.7.0
+ */
+void *purple_request_action_with_icon(void *handle, const char *title, 
+	const char *primary, const char *secondary, int default_action, 
+	PurpleAccount *account, const char *who, PurpleConversation *conv, 
+	gconstpointer icon_data, gsize icon_size, void *user_data, 
+	size_t action_count, ...);
+
+/**
+ * <tt>va_list</tt> version of purple_request_action_with_icon(); 
+ * see its documentation.
+ * @since 2.7.0
+ */
+void *purple_request_action_with_icon_varg(void *handle, const char *title,
+	const char *primary, const char *secondary, int default_action,
+	PurpleAccount *account, const char *who, PurpleConversation *conv,
+	gconstpointer icon_data, gsize icon_size,
+	void *user_data, size_t action_count, va_list actions);
+
+
+/**
  * Displays groups of fields for the user to fill in.
  *
  * @param handle      The plugin or connection handle.  For some things this
@@ -1477,6 +1508,19 @@
 						_("_Accept"), (accept_cb), _("_Cancel"), (cancel_cb))
 
 /**
+ * A wrapper for purple_request_action_with_icon() that uses Accept and Cancel 
+ * buttons.
+ */
+#define purple_request_accept_cancel_with_icon(handle, title, primary, secondary, \
+								   default_action, account, who, conv, \
+								   icon_data, icon_size, \
+								   user_data, accept_cb, cancel_cb) \
+	purple_request_action_with_icon((handle), (title), (primary), (secondary), \
+						(default_action), account, who, conv, icon_data, icon_size, \
+						(user_data), 2, \
+						_("_Accept"), (accept_cb), _("_Cancel"), (cancel_cb))
+
+/**
  * Displays a file selector request dialog.  Returns the selected filename to
  * the callback.  Can be used for either opening a file or saving a file.
  *
--- a/libpurple/tests/test_util.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/tests/test_util.c	Mon May 10 23:21:44 2010 +0000
@@ -121,6 +121,37 @@
 }
 END_TEST
 
+START_TEST(test_utf8_strip_unprintables)
+{
+	fail_unless(NULL == purple_utf8_strip_unprintables(NULL));
+	/* invalid UTF-8 */
+#if 0
+	/* disabled because make check fails on an assertion */
+	fail_unless(NULL == purple_utf8_strip_unprintables("abc\x80\x7f"));
+#endif
+	/* \t, \n, \r, space */
+	assert_string_equal_free("ab \tcd\nef\r   ", purple_utf8_strip_unprintables("ab \tcd\nef\r   "));
+	/* ASCII control characters (stripped) */
+	assert_string_equal_free(" aaaa ", purple_utf8_strip_unprintables(
+				"\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0E\x0F\x10 aaaa "
+				"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F"));
+	/* Basic ASCII */
+	assert_string_equal_free("Foobar", purple_utf8_strip_unprintables("Foobar"));
+	/* 0xE000 - 0xFFFD (UTF-8 encoded) */
+	/* U+F1F7 */
+	assert_string_equal_free("aaaa\xef\x87\xb7", purple_utf8_strip_unprintables("aaaa\xef\x87\xb7"));
+#if 0
+	/* disabled because make check fails on an assertion */
+	/* U+DB80 (Private Use High Surrogate, First) -- should be stripped */
+	assert_string_equal_free("aaaa", purple_utf8_strip_unprintables("aaaa\xed\xa0\x80"));
+	/* U+FFFE (should be stripped) */
+	assert_string_equal_free("aaaa", purple_utf8_strip_unprintables("aaaa\xef\xbf\xbe"));
+#endif
+	/* U+FEFF (should not be stripped) */
+	assert_string_equal_free("aaaa\xef\xbb\xbf", purple_utf8_strip_unprintables("aaaa\xef\xbb\xbf"));
+}
+END_TEST
+
 START_TEST(test_mime_decode_field)
 {
 	gchar *result = purple_mime_decode_field("=?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?=");
@@ -168,6 +199,10 @@
 	tcase_add_test(tc, test_markup_html_to_xhtml);
 	suite_add_tcase(s, tc);
 
+	tc = tcase_create("Stripping Unparseables");
+	tcase_add_test(tc, test_utf8_strip_unprintables);
+	suite_add_tcase(s, tc);
+
 	tc = tcase_create("MIME");
 	tcase_add_test(tc, test_mime_decode_field);
 	suite_add_tcase(s, tc);
--- a/libpurple/util.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/libpurple/util.c	Mon May 10 23:21:44 2010 +0000
@@ -4593,12 +4593,22 @@
 	}
 
 	workstr = iter = g_new(gchar, strlen(str) + 1);
-	for ( ; *str; ++str) {
-		guchar c = *str;
-		if (c >= 0x20 || c == '\t' || c == '\n' || c == '\r') {
-			*iter = c;
-			++iter;
+	while (*str) {
+		gunichar ch = g_utf8_get_char(str);
+		gchar *next = g_utf8_next_char(str);
+		/*
+		 * Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |
+		 *          [#x10000-#x10FFFF]
+		 */
+		if ((ch == '\t' || ch == '\n' || ch == '\r') ||
+				(ch >= 0x20 && ch <= 0xD7FF) ||
+				(ch >= 0xE000 && ch <= 0xFFFD) ||
+				(ch >= 0x10000 && ch <= 0x10FFFF)) {
+			memcpy(iter, str, next - str);
+			iter += (next - str);
 		}
+
+		str = next;
 	}
 
 	/* nul-terminate the new string */
--- a/pidgin/gtkft.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/pidgin/gtkft.c	Mon May 10 23:21:44 2010 +0000
@@ -40,6 +40,9 @@
 #define PIDGINXFER(xfer) \
 	(PidginXferUiData *)(xfer)->ui_data
 
+/* the maximum size of files we will try to make a thumbnail for */
+#define PIDGIN_XFER_MAX_SIZE_IMAGE_THUMBNAIL 10 * 1024 * 1024
+
 struct _PidginXferDialog
 {
 	gboolean keep_open;
@@ -1157,6 +1160,67 @@
 		pidgin_xfer_dialog_cancel_xfer(xfer_dialog, xfer);
 }
 
+static void
+pidgin_xfer_add_thumbnail(PurpleXfer *xfer, const gchar *formats)
+{	
+	purple_debug_info("ft", "creating thumbnail for transfer\n");
+
+	if (purple_xfer_get_size(xfer) <= PIDGIN_XFER_MAX_SIZE_IMAGE_THUMBNAIL) {
+		GdkPixbuf *thumbnail = 
+			gdk_pixbuf_new_from_file_at_size(
+				purple_xfer_get_local_filename(xfer), 128, 128, NULL);
+
+		if (thumbnail) {
+			gchar **formats_split = g_strsplit(formats, ",", 0);
+			gchar *buffer = NULL;
+			gsize size;
+			char *option_keys[2] = {NULL, NULL};
+			char *option_values[2] = {NULL, NULL};
+			int i;
+			gchar *format = NULL;
+			
+			for (i = 0; formats_split[i]; i++) {
+				if (purple_strequal(formats_split[i], "jpeg")) {
+					purple_debug_info("ft", "creating JPEG thumbnail\n");
+					option_keys[0] = "quality";
+					option_values[0] = "90";
+					format = "jpeg";
+					break;
+				} else if (purple_strequal(formats_split[i], "png")) {
+					purple_debug_info("ft", "creating PNG thumbnail\n");
+					option_keys[0] = "compression";
+					option_values[0] = "9";
+					format = "png";
+					break;
+				}
+			}
+
+			/* Try the first format given by the PRPL without options */
+			if (format == NULL) {
+				purple_debug_info("ft",
+				    "creating thumbnail of format %s as demanded by PRPL\n",
+				    formats_split[0]);
+				format = formats_split[0];
+			}
+
+			gdk_pixbuf_save_to_bufferv(thumbnail, &buffer, &size, format, 
+				option_keys, option_values, NULL);
+
+			if (buffer) {
+				gchar *mimetype = g_strdup_printf("image/%s", format);				
+				purple_debug_info("ft",
+				                  "created thumbnail of %" G_GSIZE_FORMAT " bytes\n",
+					size);
+				purple_xfer_set_thumbnail(xfer, buffer, size, mimetype);
+				g_free(buffer);
+				g_free(mimetype);
+			}
+			g_object_unref(thumbnail);
+			g_strfreev(formats_split);
+		}
+	}
+}
+
 static PurpleXferUiOps ops =
 {
 	pidgin_xfer_new_xfer,
@@ -1168,7 +1232,7 @@
 	NULL,
 	NULL,
 	NULL,
-	NULL
+	pidgin_xfer_add_thumbnail
 };
 
 /**************************************************************************
--- a/pidgin/gtkrequest.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/pidgin/gtkrequest.c	Mon May 10 23:21:44 2010 +0000
@@ -26,6 +26,7 @@
 #include "internal.h"
 #include "pidgin.h"
 
+#include "debug.h"
 #include "prefs.h"
 #include "util.h"
 
@@ -592,9 +593,11 @@
 }
 
 static void *
-pidgin_request_action(const char *title, const char *primary,
+pidgin_request_action_with_icon(const char *title, const char *primary,
 						const char *secondary, int default_action,
-					    PurpleAccount *account, const char *who, PurpleConversation *conv,
+					    PurpleAccount *account, const char *who, 
+						PurpleConversation *conv, gconstpointer icon_data,
+						gsize icon_size,
 						void *user_data, size_t action_count, va_list actions)
 {
 	PidginRequestData *data;
@@ -602,7 +605,7 @@
 	GtkWidget *vbox;
 	GtkWidget *hbox;
 	GtkWidget *label;
-	GtkWidget *img;
+	GtkWidget *img = NULL;
 	void **buttons;
 	char *label_text;
 	char *primary_esc, *secondary_esc;
@@ -659,8 +662,42 @@
 	gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox);
 
 	/* Dialog icon. */
-	img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
+	if (icon_data) {
+		GdkPixbufLoader *loader = gdk_pixbuf_loader_new();
+		GdkPixbuf *pixbuf = NULL;
+		if (gdk_pixbuf_loader_write(loader, icon_data, icon_size, NULL)) {
+			pixbuf = gdk_pixbuf_loader_get_pixbuf(loader);
+			if (pixbuf) {
+				/* scale the image if it is too large */
+				int width = gdk_pixbuf_get_width(pixbuf);
+				int height = gdk_pixbuf_get_height(pixbuf);
+				if (width > 128 || height > 128) {
+					int scaled_width = width > height ? 128 : (128 * width) / height;
+					int scaled_height = height > width ? 128 : (128 * height) / width;
+					GdkPixbuf *scaled =
+							gdk_pixbuf_scale_simple(pixbuf, scaled_width, scaled_height,
+							    GDK_INTERP_BILINEAR);
+
+					purple_debug_info("pidgin",
+					    "dialog icon was too large, scale it down\n");
+					if (scaled) {
+						g_object_unref(pixbuf);
+						pixbuf = scaled;
+					}
+				}
+				img = gtk_image_new_from_pixbuf(pixbuf);
+			}
+		} else {
+			purple_debug_info("pidgin", "failed to parse dialog icon\n");
+		}
+		gdk_pixbuf_loader_close(loader, NULL);
+		g_object_unref(loader);
+	}
+	
+	if (!img) {
+		img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
 				       gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
+	}
 	gtk_misc_set_alignment(GTK_MISC(img), 0, 0);
 	gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
 
@@ -712,6 +749,17 @@
 	return data;
 }
 
+static void *
+pidgin_request_action(const char *title, const char *primary,
+						const char *secondary, int default_action,
+					    PurpleAccount *account, const char *who, PurpleConversation *conv,
+						void *user_data, size_t action_count, va_list actions)
+{
+	return pidgin_request_action_with_icon(title, primary, secondary,
+		default_action, account, who, conv, NULL, 0, user_data, action_count,
+		actions);
+}
+
 static void
 req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field)
 {
@@ -1699,7 +1747,7 @@
 	pidgin_request_file,
 	pidgin_close_request,
 	pidgin_request_folder,
-	NULL,
+	pidgin_request_action_with_icon,
 	NULL,
 	NULL,
 	NULL
--- a/pidgin/plugins/timestamp_format.c	Fri Apr 23 16:58:03 2010 +0000
+++ b/pidgin/plugins/timestamp_format.c	Mon May 10 23:21:44 2010 +0000
@@ -12,6 +12,17 @@
 
 #include <time.h>
 
+static const char *format_12hour_hour(const struct tm *tm)
+{
+	static char hr[3];
+	int hour = tm->tm_hour % 12;
+	if (hour == 0)
+		hour = 12;
+
+	g_snprintf(hr, sizeof(hr), "%d", hour);
+	return hr;
+}
+
 static PurplePluginPrefFrame *
 get_plugin_pref_frame(PurplePlugin *plugin)
 {
@@ -24,10 +35,14 @@
 	ppref = purple_plugin_pref_new_with_label(_("Timestamp Format Options"));
 	purple_plugin_pref_frame_add(frame, ppref);
 
-	tmp = g_strdup_printf(_("_Force 24-hour time format"));
+	tmp = g_strdup_printf(_("_Force timestamp format:"));
 	ppref = purple_plugin_pref_new_with_name_and_label(
-			"/plugins/gtk/timestamp_format/force_24hr",
+			"/plugins/gtk/timestamp_format/force",
 			tmp);
+	purple_plugin_pref_set_type(ppref, PURPLE_PLUGIN_PREF_CHOICE);
+	purple_plugin_pref_add_choice(ppref, _("Use system default"), "default");
+	purple_plugin_pref_add_choice(ppref, _("12 hour time format"), "force12");
+	purple_plugin_pref_add_choice(ppref, _("24 hour time format"), "force24");
 	purple_plugin_pref_frame_add(frame, ppref);
 	g_free(tmp);
 
@@ -58,27 +73,50 @@
 static char *timestamp_cb_common(PurpleConversation *conv,
                                  time_t t,
                                  gboolean show_date,
-                                 gboolean force,
+                                 const char *force,
                                  const char *dates,
 								 gboolean parens)
 {
+	struct tm *tm;
+
 	g_return_val_if_fail(dates != NULL, NULL);
 
+	tm = localtime(&t);
+
 	if (show_date ||
 	    !strcmp(dates, "always") ||
 	    (conv != NULL && purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT && !strcmp(dates, "chats")))
 	{
-		struct tm *tm = localtime(&t);
-		if (force)
+		if (g_str_equal(force, "force24"))
 			return g_strdup_printf("%s%s%s", parens ? "(" : "", purple_utf8_strftime("%Y-%m-%d %H:%M:%S", tm), parens ? ")" : "");
-		else
+		else if (g_str_equal(force, "force12")) {
+			char *date = g_strdup_printf("%s", purple_utf8_strftime("%Y-%m-%d ", tm));
+			char *remtime = g_strdup_printf("%s", purple_utf8_strftime(":%M:%S %p", tm));
+			const char *hour = format_12hour_hour(tm);
+			char *output;
+
+			output = g_strdup_printf("%s%s%s%s%s",
+			                         parens ? "(" : "", date,
+									 hour, remtime, parens ? ")" : "");
+
+			g_free(date);
+			g_free(remtime);
+
+			return output;
+		} else
 			return g_strdup_printf("%s%s%s", parens ? "(" : "", purple_date_format_long(tm), parens ? ")" : "");
 	}
 
-	if (force)
-	{
-		struct tm *tm = localtime(&t);
+	if (g_str_equal(force, "force24"))
 		return g_strdup_printf("%s%s%s", parens ? "(" : "", purple_utf8_strftime("%H:%M:%S", tm), parens ? ")" : "");
+	else if (g_str_equal(force, "force12")) {
+		const char *hour = format_12hour_hour(tm);
+		char *remtime = g_strdup_printf("%s", purple_utf8_strftime(":%M:%S %p", tm));
+		char *output = g_strdup_printf("%s%s%s%s", parens ? "(" : "", hour, remtime, parens ? ")" : "");
+
+		g_free(remtime);
+
+		return output;
 	}
 
 	return NULL;
@@ -87,8 +125,8 @@
 static char *conversation_timestamp_cb(PurpleConversation *conv,
                                        time_t t, gboolean show_date, gpointer data)
 {
-	gboolean force = purple_prefs_get_bool(
-				"/plugins/gtk/timestamp_format/force_24hr");
+	const char *force = purple_prefs_get_string(
+				"/plugins/gtk/timestamp_format/force");
 	const char *dates = purple_prefs_get_string(
 				"/plugins/gtk/timestamp_format/use_dates/conversation");
 
@@ -99,8 +137,8 @@
 
 static char *log_timestamp_cb(PurpleLog *log, time_t t, gboolean show_date, gpointer data)
 {
-	gboolean force = purple_prefs_get_bool(
-				"/plugins/gtk/timestamp_format/force_24hr");
+	const char *force = purple_prefs_get_string(
+				"/plugins/gtk/timestamp_format/force");
 	const char *dates = purple_prefs_get_string(
 				"/plugins/gtk/timestamp_format/use_dates/log");
 
@@ -264,7 +302,17 @@
 	purple_prefs_add_none("/plugins/gtk");
 	purple_prefs_add_none("/plugins/gtk/timestamp_format");
 
-	purple_prefs_add_bool("/plugins/gtk/timestamp_format/force_24hr", TRUE);
+	if (!purple_prefs_exists("/plugins/gtk/timestamp_format/force") &&
+	    purple_prefs_exists("/plugins/gtk/timestamp_format/force_24hr"))
+	{
+		if (purple_prefs_get_bool(
+		   "/plugins/gtk/timestamp_format/force_24hr"))
+			purple_prefs_add_string("/plugins/gtk/timestamp_format/force", "force24");
+		else
+			purple_prefs_add_string("/plugins/gtk/timestamp_format/force", "default");
+	}
+	else
+		purple_prefs_add_string("/plugins/gtk/timestamp_format/force", "default");
 
 	purple_prefs_add_none("/plugins/gtk/timestamp_format/use_dates");
 	purple_prefs_add_string("/plugins/gtk/timestamp_format/use_dates/conversation", "automatic");
--- a/po/ca.po	Fri Apr 23 16:58:03 2010 +0000
+++ b/po/ca.po	Mon May 10 23:21:44 2010 +0000
@@ -33,8 +33,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-04-07 21:58+0200\n"
-"PO-Revision-Date: 2010-04-09 09:06+0200\n"
+"POT-Creation-Date: 2010-05-06 07:36+0200\n"
+"PO-Revision-Date: 2010-05-08 16:11+0200\n"
 "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
 "Language-Team: Catalan <tradgnome@softcatala.net>\n"
 "MIME-Version: 1.0\n"
@@ -643,7 +643,6 @@
 msgid "Conversation"
 msgstr "Conversa"
 
-# FIXME ?
 msgid "Clear Scrollback"
 msgstr "Neteja la finestra"
 
@@ -1060,7 +1059,6 @@
 msgid "Edit Buddy Pounce"
 msgstr "Edita l'avís per a l'amic"
 
-# FIXME
 msgid "Pounce Who"
 msgstr "Avisa dels Who"
 
@@ -1512,7 +1510,6 @@
 msgid "Beep too!"
 msgstr "Fes pip també!"
 
-# FIXME
 msgid "Set URGENT for the terminal window."
 msgstr "Estableix URGENT per a la finestra del terminal."
 
@@ -1681,6 +1678,12 @@
 msgid "Set User Info"
 msgstr "Estableix les dades d'usuari"
 
+msgid "This protocol does not support setting a public alias."
+msgstr "Aquest protocol no permet establir un àlies pulic."
+
+msgid "This protocol does not support fetching the public alias."
+msgstr "Aquest protocol no permet aconseguir l'àlies públic."
+
 msgid "Unknown"
 msgstr "Desconegut"
 
@@ -2764,7 +2767,6 @@
 msgid "One Time Password"
 msgstr "Contrasenya d'un sol ús"
 
-# FIXME ?
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -3827,15 +3829,6 @@
 msgid "execute"
 msgstr "executa"
 
-msgid "Server requires TLS/SSL, but no TLS/SSL support was found."
-msgstr ""
-"El servidor requereix TLS/SSL per entrar, però no s'ha trobat cap "
-"implementació de TLS/SSL."
-
-msgid "You require encryption, but no TLS/SSL support was found."
-msgstr ""
-"Heu requerit que es xifri, però no s'ha trobat cap implementació de TLS/SSL."
-
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "El servidor requereix autenticació de text sobre un flux no xifrat"
 
@@ -3873,6 +3866,43 @@
 msgid "SASL error: %s"
 msgstr "Error SASL: %s"
 
+msgid "Invalid Encoding"
+msgstr "La condició no és vàlida"
+
+msgid "Unsupported Extension"
+msgstr "Aquesta extensió no està implementada"
+
+# MitM: Man-in-the-middle... segons wiki: intermediari
+msgid ""
+"Unexpected response from the server.  This may indicate a possible MITM "
+"attack"
+msgstr ""
+"S'ha rebut una resposta inesperada del servidor. Això podria indicar un "
+"possible atac informàtic \"man-in-the-middle\""
+
+msgid ""
+"The server does support channel binding, but did not appear to advertise "
+"it.  This indicates a likely MITM attack"
+msgstr ""
+"Aquest servidor permet vincular canals, tot i que no ho havia anunciat. Això "
+"podria ser indicatiu d'un atac informàtic \"man-in-the-middle\""
+
+msgid "Server does not support channel binding"
+msgstr "El servidor no permet vincular canals"
+
+msgid "Unsupported channel binding method"
+msgstr "Aquest mètode de vinculació de canals no està implementat"
+
+msgid "User not found"
+msgstr "No s'ha trobat l'usuari"
+
+msgid "Invalid Username Encoding"
+msgstr "La codificació del nom d'usuari no és vàlida"
+
+# Mirar com es traduïa 'Constraint variables'
+msgid "Resource Constraint"
+msgstr "Restriccions del recurs"
+
 # FIXME: canonicalize -> normalitzar (josep)
 msgid "Unable to canonicalize username"
 msgstr "No s'ha pogut normalitzar el nom d'usuari"
@@ -4178,16 +4208,28 @@
 msgid "Roles:"
 msgstr "Rols:"
 
+msgid "Server requires TLS/SSL, but no TLS/SSL support was found."
+msgstr ""
+"El servidor requereix TLS/SSL per entrar, però no s'ha trobat cap "
+"implementació de TLS/SSL."
+
+msgid "You require encryption, but no TLS/SSL support was found."
+msgstr ""
+"Heu requerit que es xifri, però no s'ha trobat cap implementació de TLS/SSL."
+
 msgid "Ping timed out"
 msgstr "S'ha esgitat el temps d'espera (ping)"
 
 msgid "Invalid XMPP ID"
 msgstr "ID de l'XMPP invàlid"
 
+msgid "Invalid XMPP ID. Username portion must be set."
+msgstr "L'ID de l'XMPP no és vàlid. Cal especificar el nom d'usuari."
+
 msgid "Invalid XMPP ID. Domain must be set."
 msgstr "L'ID de l'XMPP no és vàlid. Cal especificar un domini."
 
-# FIX
+# FIXME
 msgid "Malformed BOSH URL"
 msgstr "L'URL BOSH està malmès"
 
@@ -4319,10 +4361,10 @@
 msgstr "Permet les botzines"
 
 msgid "Mood Name"
-msgstr ""
+msgstr "Nom de l'estat d'ànim"
 
 msgid "Mood Comment"
-msgstr ""
+msgstr "Comentari sobre l'estat d'ànim"
 
 #. primitive
 #. ID
@@ -4501,10 +4543,6 @@
 msgid "Remote Connection Failed"
 msgstr "Ha fallat la connexió remota"
 
-# Mirar com es traduïa 'Constraint variables'
-msgid "Resource Constraint"
-msgstr "Restriccions del recurs"
-
 msgid "Restricted XML"
 msgstr "XML restringit"
 
@@ -4813,7 +4851,7 @@
 msgstr "Error desconegut en la presència"
 
 msgid "An error occurred on the in-band bytestream transfer\n"
-msgstr "S'ha produit un error en el fluxe de transferència de dades en banda\n"
+msgstr "S'ha produït un error en el flux de transferència de dades en banda\n"
 
 msgid "Transfer was closed."
 msgstr "La transferència s'ha tancat."
@@ -4868,9 +4906,8 @@
 msgid "Anxious"
 msgstr "Ansiós"
 
-#, fuzzy
 msgid "Aroused"
-msgstr "S'enviarà"
+msgstr "Animat"
 
 msgid "Ashamed"
 msgstr "Avergonyit"
@@ -4884,32 +4921,26 @@
 msgid "Calm"
 msgstr "Calmat"
 
-#, fuzzy
 msgid "Cautious"
-msgstr "Xats"
+msgstr "Prudent"
 
 msgid "Cold"
 msgstr "Fred"
 
-#, fuzzy
 msgid "Confident"
-msgstr "Conflicte"
-
-#, fuzzy
+msgstr "Amb confiança"
+
 msgid "Confused"
-msgstr "_Configura"
-
-#, fuzzy
+msgstr "Confós"
+
 msgid "Contemplative"
-msgstr "Contacte"
-
-#, fuzzy
+msgstr "Contemplatiu"
+
 msgid "Contented"
-msgstr "Connectat"
-
-#, fuzzy
+msgstr "Acontentat"
+
 msgid "Cranky"
-msgstr "Empresa"
+msgstr "Empipat"
 
 msgid "Crazy"
 msgstr "Boig"
@@ -4920,9 +4951,8 @@
 msgid "Curious"
 msgstr "Curiós"
 
-#, fuzzy
 msgid "Dejected"
-msgstr "Rebutjat"
+msgstr "Enfonsat"
 
 msgid "Depressed"
 msgstr "Deprimit"
@@ -4931,11 +4961,10 @@
 msgstr "Decebut"
 
 msgid "Disgusted"
-msgstr ""
-
-#, fuzzy
+msgstr "Repugnat"
+
 msgid "Dismayed"
-msgstr "Inhabilitat"
+msgstr "Descoratjat"
 
 msgid "Distracted"
 msgstr "Distret"
@@ -4943,17 +4972,15 @@
 msgid "Embarrassed"
 msgstr "Avergonyit"
 
-#, fuzzy
 msgid "Envious"
-msgstr "Ansiós"
+msgstr "Envejós"
 
 #. 2
 msgid "Excited"
 msgstr "Excitat"
 
-#, fuzzy
 msgid "Flirtatious"
-msgstr "Gloriós"
+msgstr "Amb ganes de flirtar"
 
 msgid "Frustrated"
 msgstr "Frustrat"
@@ -4961,9 +4988,8 @@
 msgid "Grateful"
 msgstr "Agraït"
 
-#, fuzzy
 msgid "Grieving"
-msgstr "S'està recuperant..."
+msgstr "De dol"
 
 #. 3
 msgid "Grumpy"
@@ -4984,7 +5010,7 @@
 msgstr "Calent"
 
 msgid "Humbled"
-msgstr ""
+msgstr "Avergonyit"
 
 msgid "Humiliated"
 msgstr "Humiliat"
@@ -4998,9 +5024,8 @@
 msgid "Impressed"
 msgstr "Impressionat"
 
-#, fuzzy
 msgid "In awe"
-msgstr "Enamorat"
+msgstr "Reverent"
 
 msgid "In love"
 msgstr "Enamorat"
@@ -5034,7 +5059,7 @@
 msgstr "Malèvol"
 
 msgid "Moody"
-msgstr "Animat"
+msgstr "Llunàtic"
 
 msgid "Nervous"
 msgstr "Nerviós"
@@ -5079,9 +5104,8 @@
 msgid "Serious"
 msgstr "Seriós"
 
-#, fuzzy
 msgid "Shocked"
-msgstr "Blocat"
+msgstr "En estat de xoc"
 
 msgid "Shy"
 msgstr "Vergonyós"
@@ -6662,9 +6686,6 @@
 msgid "Incorrect password"
 msgstr "La contrasenya no és correcta"
 
-msgid "User not found"
-msgstr "No s'ha trobat l'usuari"
-
 msgid "Account has been disabled"
 msgstr "S'ha inhabilitat el compte"
 
@@ -6933,6 +6954,10 @@
 msgid "AOL does not allow your screen name to authenticate here"
 msgstr "AOL no permet que us autentiqueu amb aquest nom d'usuari aquí"
 
+#, c-format
+msgid "Error requesting %s"
+msgstr "S'ha produït un error en sol·licitar %s"
+
 msgid "Could not join chat room"
 msgstr "No s'ha pogut entrar a la sala de xat"
 
@@ -6961,7 +6986,7 @@
 msgstr "A l'oficina"
 
 msgid "Taking a bath"
-msgstr ""
+msgstr "Prenent un bany"
 
 msgid "Watching TV"
 msgstr "Mirant la tele"
@@ -7021,9 +7046,8 @@
 msgid "Studying"
 msgstr "Estudiant"
 
-#, fuzzy
 msgid "In the restroom"
-msgstr "Interessos"
+msgstr "Al lavabo"
 
 msgid "Received invalid data on connection with server"
 msgstr "S'han rebut dades invàlides a la connexió amb el servidor"
@@ -7308,25 +7332,20 @@
 msgid "Invisible"
 msgstr "Invisible"
 
-#, fuzzy
 msgid "Evil"
-msgstr "Correu electrònic"
-
-#, fuzzy
+msgstr "Maliciós"
+
 msgid "Depression"
-msgstr "Professió"
-
-#, fuzzy
+msgstr "Depressió"
+
 msgid "At home"
-msgstr "Quant a mi"
-
-#, fuzzy
+msgstr "A casa"
+
 msgid "At work"
-msgstr "Xarxa"
-
-#, fuzzy
+msgstr "A la feina"
+
 msgid "At lunch"
-msgstr "A fora dinant"
+msgstr "Dinant"
 
 msgid "IP Address"
 msgstr "Adreça IP"
@@ -7841,9 +7860,8 @@
 msgid "iTunes Music Store Link"
 msgstr "Enllaç al magatzem de música iTunes"
 
-#, fuzzy
 msgid "Lunch"
-msgstr "Finch"
+msgstr "Dinar"
 
 #, c-format
 msgid "Buddy Comment for %s"
@@ -7876,9 +7894,8 @@
 msgid "Edit Buddy Comment"
 msgstr "Edita el comentari sobre l'amic"
 
-#, fuzzy
 msgid "Get X-Status Msg"
-msgstr "Aconsegueix el missatge d'estat"
+msgstr "Aconsegueix el missatge d'estat X"
 
 msgid "End Direct IM Session"
 msgstr "Finalitzar la sessió de MI directa"
@@ -8293,10 +8310,10 @@
 msgid "Admin"
 msgstr "Administrador"
 
+# FIXME
 #. XXX: Should this be "Topic"?
-#, fuzzy
 msgid "Room Title"
-msgstr "Llista de sales"
+msgstr "Nom de la sala"
 
 msgid "Notice"
 msgstr "Avís"
@@ -9964,8 +9981,9 @@
 msgid "HMAC"
 msgstr "HMAC"
 
+# FIXME: Calc de la versió castellana
 msgid "Use Perfect Forward Secrecy"
-msgstr ""
+msgstr "Empra «confidencialitat directa perfecta»"
 
 msgid "Public key authentication"
 msgstr "Autenticació per clau pública"
@@ -9974,7 +9992,7 @@
 msgstr "Bloca la MI sense intercanvi de claus"
 
 msgid "Block messages to whiteboard"
-msgstr "Bloca els misstges a la pissarra"
+msgstr "Bloca els missatges a la pissarra"
 
 msgid "Automatically open whiteboard"
 msgstr "Obre la pissarra automàticament"
@@ -10228,7 +10246,7 @@
 msgstr "Bloca invitacions a conferències i sales de xat"
 
 msgid "Use account proxy for SSL connections"
-msgstr "Empra un compte per al servidor intermediàri per a connexions SSL"
+msgstr "Empra un compte per al servidor intermediari per a connexions SSL"
 
 msgid "Chat room list URL"
 msgstr "URL de la llista de sales de xat"
@@ -10303,13 +10321,13 @@
 "entrant al web de Yahoo!"
 
 #. indicates a lock due to logging in too frequently
-#, fuzzy
 msgid ""
 "Account locked: You have been logging in too frequently.  Wait a few minutes "
 "before trying to connect again.  Logging into the Yahoo! website may help."
 msgstr ""
-"El compte està blocat perquè s'ha intentat entrar massa cops. Això es pot "
-"solucionar entrant al web de Yahoo!"
+"El compte està blocat perquè s'ha intentat entrar massa cops. Espereu uns "
+"minuts abans de tornar-ho a intentar. Potser també es pot solucionar entrant "
+"al web de Yahoo!"
 
 #. username or password missing
 msgid "Username or password missing"
@@ -10790,6 +10808,10 @@
 #. *
 #. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
 #.
+#. *
+#. * A wrapper for purple_request_action_with_icon() that uses Accept and Cancel
+#. * buttons.
+#.
 msgid "_Accept"
 msgstr "_Accepta"
 
@@ -10856,9 +10878,8 @@
 msgid "Extended away"
 msgstr "Absent durant una bona estona"
 
-#, fuzzy
 msgid "Feeling"
-msgstr "S'està rebent"
+msgstr "Estat d'ànim"
 
 #, c-format
 msgid "%s (%s) changed status from %s to %s"
@@ -11031,12 +11052,6 @@
 msgid "Pidgin Internet Messenger"
 msgstr "Missatger d'Internet Pidgin"
 
-msgid "Orientation"
-msgstr "Orientació"
-
-msgid "The orientation of the tray."
-msgstr "Orientació de l'àrea de notificació."
-
 #. Build the login options frame.
 msgid "Login Options"
 msgstr "Opcions d'entrada"
@@ -11406,13 +11421,11 @@
 msgid "Unknown node type"
 msgstr "Codi d'error desconegut"
 
-#, fuzzy
 msgid "Please select your mood from the list"
-msgstr "Seleccioneu l'estat d'ànim de la llista."
-
-#, fuzzy
+msgstr "Seleccioneu l'estat d'ànim de la llista"
+
 msgid "Message (optional)"
-msgstr "Àlies (opcional)"
+msgstr "Missatge (opcional)"
 
 msgid "Edit User Mood"
 msgstr "Edita l'estat d'ànim"
@@ -11496,9 +11509,8 @@
 msgid "/Tools/Pr_ivacy"
 msgstr "/Eines/_Privadesa"
 
-#, fuzzy
 msgid "/Tools/Set _Mood"
-msgstr "/Eines/_Registre del sistema"
+msgstr "/Eines/Esta_bleix l'estat d'ànim"
 
 msgid "/Tools/_File Transfers"
 msgstr "/Eines/_Transferència de fitxers"
@@ -11519,20 +11531,17 @@
 msgid "/Help/Online _Help"
 msgstr "/Ajuda/A_juda en línia"
 
-#, fuzzy
 msgid "/Help/_Build Information"
-msgstr "Informació sobre l'amic"
+msgstr "/Ajuda/Informació sobre el _muntatge"
 
 msgid "/Help/_Debug Window"
 msgstr "/Ajuda/Finestra de _depuració"
 
-#, fuzzy
 msgid "/Help/De_veloper Information"
-msgstr "Informació del servidor"
-
-#, fuzzy
+msgstr "/Ajuda/Informació sobre els d_esenvolupadors"
+
 msgid "/Help/_Translator Information"
-msgstr "Informació personal"
+msgstr "/Ajuda/Informació sobre els _traductors"
 
 msgid "/Help/_About"
 msgstr "/Ajuda/_Quant a"
@@ -11761,9 +11770,8 @@
 msgid "_Edit Account"
 msgstr "_Edita el compte"
 
-#, fuzzy
 msgid "Set _Mood..."
-msgstr "Estableix l'estat d'ànim..."
+msgstr "Estableix l'_estat d'ànim..."
 
 msgid "No actions available"
 msgstr "No hi ha accions disponibles"
@@ -11884,15 +11892,14 @@
 msgid "/Conversation/Se_nd File..."
 msgstr "/Conversa/Envia un _fitxer..."
 
-#, fuzzy
 msgid "/Conversation/Get _Attention"
-msgstr "/Conversa/Aconsegueix informació"
+msgstr "/Conversa/Aconseg_ueix atenció"
 
 msgid "/Conversation/Add Buddy _Pounce..."
-msgstr "/Conversa/Afegeix un a_vís per a l'amic..."
+msgstr "/Conversa/Afe_geix un avís per a l'amic..."
 
 msgid "/Conversation/_Get Info"
-msgstr "/Conversa/_Aconsegueix informació"
+msgstr "/Conversa/Aconsegueix inf_ormació"
 
 msgid "/Conversation/In_vite..."
 msgstr "/Conversa/Con_vida..."
@@ -11907,16 +11914,16 @@
 msgstr "/Conversa/_Bloca..."
 
 msgid "/Conversation/_Unblock..."
-msgstr "/Conversa/_Desbloca..."
+msgstr "/Conversa/Desb_loca..."
 
 msgid "/Conversation/_Add..."
 msgstr "/Conversa/_Afegeix..."
 
 msgid "/Conversation/_Remove..."
-msgstr "/Conversa/Sup_rimeix..."
+msgstr "/Conversa/_Suprimeix..."
 
 msgid "/Conversation/Insert Lin_k..."
-msgstr "/Conversa/Insereix un _enllaç..."
+msgstr "/Conversa/Insereix _un enllaç..."
 
 msgid "/Conversation/Insert Imag_e..."
 msgstr "/Conversa/Insereix una _imatge..."
@@ -11969,9 +11976,8 @@
 msgid "/Conversation/Send File..."
 msgstr "/Conversa/Envia un fitxer..."
 
-#, fuzzy
 msgid "/Conversation/Get Attention"
-msgstr "/Conversa/Aconsegueix informació"
+msgstr "/Conversa/Aconsegueix atenció"
 
 msgid "/Conversation/Add Buddy Pounce..."
 msgstr "/Conversa/Afegeix avís per a l'amic..."
@@ -12037,13 +12043,11 @@
 msgid "0 people in room"
 msgstr "No hi ha ningú a la sala"
 
-#, fuzzy
 msgid "Close Find bar"
-msgstr "Tanca aquesta pestanya"
-
-#, fuzzy
+msgstr "Tanca la barra de cerca"
+
 msgid "Find:"
-msgstr "Cerca"
+msgstr "Cerca:"
 
 #, c-format
 msgid "%d person in room"
@@ -12449,7 +12453,7 @@
 msgid "Lithuanian"
 msgstr "Lituà"
 
-#, 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 "
@@ -12458,16 +12462,14 @@
 "copyrighted by its contributors, a list of whom is also distributed with %"
 "s.  There is no warranty for %s.<BR><BR>"
 msgstr ""
-"El %s és un client de missatgeria instantània modular basat en libpurple, "
-"que permet utilitzar els protocols AIM, MSN, Yahoo!, Jabber, ICQ, IRC, SILC, "
-"SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, "
-"Gadu-Gadu, i QQ, tots alhora. Utilitza la biblioteca de programació GTK+."
-"<BR><BR>Podeu modificar i redistribuir el programa sota els termes de la GPL "
-"(versió 2 o posterior). Hi ha una còpia de la GPL dins del fitxer «COPYING» "
-"que es distribueix amb el %s. Els drets d'autor del %s pertanyen als seus "
-"col·laboradors. El fitxer «COPYRIGHT» conté una llista completa de tots els "
-"contribuïdors. No us proporcionem cap mena de garantia amb aquest programa."
-"<BR><BR>"
+"El %s és un client de missatgeria basat en libpurple que permet connectar-"
+"vos a diferents serveis de missatgeria instantània al mateix temps. El %s "
+"està escrit en C i la biblioteca de programació GTK+. El %s es distribueix "
+"sota llicència GPL 2 (o posterior), i per tant podeu modificar-lo i "
+"redistribuir-lo d'acord amb aquesta llicència. Amb el %s es distribueix una "
+"còpia de la GPL. El %s és copyright de tothom que hi ha contribuït, la "
+"llista de col·laboradors també es distribueix amb el %s. No es proporciona "
+"cap mena de garantia amb el %s.<BR><BR>"
 
 #, c-format
 msgid ""
@@ -12480,7 +12482,7 @@
 "A><BR>\t<A HREF=\"%s\">Preguntes més freqüents</A><BR>\tCanal d'IRC: #pidgin "
 "a irc.freenode.net<BR>\tXMPP MUC: devel@conference.pidgin.im<BR><BR>"
 
-#, fuzzy, c-format
+#, 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/"
@@ -12490,26 +12492,25 @@
 "welcome to post in another language, but the responses may be less helpful."
 "<br/>"
 msgstr ""
-"<font size=\"4\">Ajuda d'altres usuaris del Pidgin:</font> <a href=\"mailto:"
-"support@pidgin.im\">support@pidgin.im</a><br/>Aquesta és una llista de "
-"correu <b>pública</b>. (<a href=\"http://pidgin.im/pipermail/support/"
+"<font size=\"4\"><b>Ajuda d'altres usuaris del Pidgin</b>:</font> <a href="
+"\"mailto:support@pidgin.im\">support@pidgin.im</a><br/>Aquesta és una llista "
+"de correu <b>pública</b>. (<a href=\"http://pidgin.im/pipermail/support/"
 "\">arxiu</a>)<br/>No us podem ajudar amb connectors d'altres proveïdors.<br/"
-">En aquesta llista s'hi empra principalment l'<b>anglès</b>.  Podeu escriure-"
+">En aquesta llista s'hi empra principalment l'<b>anglès</b>. Podeu escriure-"
 "hi en un altre idioma, però és possible que les respostes no siguin de gaire "
-"ajuda.<br/><br/>"
+"ajuda.<br/>"
 
 #, c-format
 msgid "About %s"
 msgstr "Quant al %s"
 
-#, fuzzy
 msgid "Build Information"
-msgstr "Informació sobre l'amic"
+msgstr "Informació sobre el muntatge"
 
 #. End of not to be translated section
-#, fuzzy, c-format
+#, c-format
 msgid "%s Build Information"
-msgstr "Informació sobre l'amic"
+msgstr "Informació sobre el muntatge del %s"
 
 msgid "Current Developers"
 msgstr "Desenvolupadors actuals"
@@ -12523,9 +12524,9 @@
 msgid "Retired Crazy Patch Writers"
 msgstr "Escriptors de pedaços retirats"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Developer Information"
-msgstr "Informació del servidor"
+msgstr "Informació sobre els desenvolupadors del %s"
 
 msgid "Current Translators"
 msgstr "Traductors actuals"
@@ -12533,9 +12534,9 @@
 msgid "Past Translators"
 msgstr "Antics traductors"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Translator Information"
-msgstr "Més informació"
+msgstr "Informació sobre els traductors del %s"
 
 msgid "_Name"
 msgstr "_Nom"
@@ -12954,9 +12955,8 @@
 msgid "Insert Smiley"
 msgstr "Insereix una emoticona"
 
-#, fuzzy
 msgid "Send Attention"
-msgstr "Alerta!"
+msgstr "Envia atenció"
 
 msgid "<b>_Bold</b>"
 msgstr "<b>_Negreta</b>"
@@ -13004,9 +13004,8 @@
 msgid "_Smile!"
 msgstr "_Somrieu!"
 
-#, fuzzy
 msgid "_Attention!"
-msgstr "Alerta!"
+msgstr "_Atenció!"
 
 msgid "Log Deletion Failed"
 msgstr "No s'ha pogut suprimir el registre"
@@ -13083,7 +13082,6 @@
 msgid "display this help and exit"
 msgstr "mostra aquesta ajuda i surt"
 
-# FIXME: entrades/registres?
 msgid "allow multiple instances"
 msgstr "permet diverses instàncies"
 
@@ -13262,7 +13260,6 @@
 msgid "Modify Buddy Pounce"
 msgstr "Modifica l'avís per a l'amic"
 
-# FIXME
 #. Create the "Pounce on Whom" frame.
 msgid "Pounce on Whom"
 msgstr "Avisa dels Whom"
@@ -13672,7 +13669,7 @@
 #. This is a global option that affects SOCKS4 usage even with
 #. * account-specific proxy settings
 msgid "Use remote _DNS with SOCKS4 proxies"
-msgstr "Empra _DNS remot amb servidors intermediàris SOCKS4"
+msgstr "Empra _DNS remot amb servidors intermediaris SOCKS4"
 
 msgid "Proxy t_ype:"
 msgstr "_Tipus de servidor intermediari:"
@@ -13960,9 +13957,8 @@
 msgid "Custom Smiley Manager"
 msgstr "Gestor d'emoticones personalitzades"
 
-#, fuzzy
 msgid "Attention received"
-msgstr "Cal activació"
+msgstr "S'ha rebut una alerta"
 
 msgid "Select Buddy Icon"
 msgstr "Seleccioneu una icona per a l'amic"
@@ -15113,8 +15109,17 @@
 msgstr "Opcions del format de les marques horàries"
 
 #, c-format
-msgid "_Force 24-hour time format"
-msgstr "_Força el format de 24 hores"
+msgid "_Force timestamp format:"
+msgstr "_Format de les marques horàries:"
+
+msgid "Use system default"
+msgstr "Predeterminat del sistema"
+
+msgid "12 hour time format"
+msgstr "12 hores"
+
+msgid "24 hour time format"
+msgstr "24 hores"
 
 msgid "Show dates in..."
 msgstr "Mostra dates a..."
@@ -15318,9 +15323,14 @@
 msgstr "Envia i rep blocs XMPP en brut."
 
 #. *  description
-#, fuzzy
 msgid "This plugin is useful for debugging XMPP servers or clients."
-msgstr "Aquest connector és útil per a depurar servidors i clients XMPP."
+msgstr "Aquest connector és útil per a depurar servidors o clients XMPP."
+
+#~ msgid "Orientation"
+#~ msgstr "Orientació"
+
+#~ msgid "The orientation of the tray."
+#~ msgstr "Orientació de l'àrea de notificació."
 
 #~ msgid "Artist"
 #~ msgstr "Artista"
@@ -16921,9 +16931,6 @@
 #~ msgid "_Deny"
 #~ msgstr "_Denega"
 
-#~ msgid "Invalid Username"
-#~ msgstr "El nom d'usuari no és vàlid"
-
 #~ msgid "<b>Alias:</b> %s<br>"
 #~ msgstr "<b>Àlies:</b> %s<br>"
 
--- a/po/ca@valencia.po	Fri Apr 23 16:58:03 2010 +0000
+++ b/po/ca@valencia.po	Mon May 10 23:21:44 2010 +0000
@@ -33,8 +33,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-29 00:12-0700\n"
-"PO-Revision-Date: 2010-02-16 23:08+0100\n"
+"POT-Creation-Date: 2010-05-04 22:47+0200\n"
+"PO-Revision-Date: 2010-05-04 23:17+0200\n"
 "Last-Translator: Josep Puigdemont i Casamajó <josep.puigdemont@gmail.com>\n"
 "Language-Team: Catalan <tradgnome@softcatala.net>\n"
 "MIME-Version: 1.0\n"
@@ -322,7 +322,8 @@
 "En suprimir este contacte, també se suprimiran tots els amics que hi haja"
 
 msgid "Removing this group will also remove all the buddies in the group"
-msgstr "En suprimir este grup, també se suprimiran tots els amics que hi haja"
+msgstr ""
+"En suprimir este grup, també se suprimiran tots els amics que hi haja"
 
 #, c-format
 msgid "Are you sure you want to remove %s?"
@@ -581,7 +582,8 @@
 
 msgid "Syntax Error:  You typed the wrong number of arguments to that command."
 msgstr ""
-"Error de sintaxi: heu escrit un nombre d'arguments equivocat per a esta orde."
+"Error de sintaxi: heu escrit un nombre d'arguments equivocat per a esta "
+"orde."
 
 msgid "Your command failed for an unknown reason."
 msgstr "L'orde ha fallat per motius desconeguts."
@@ -754,8 +756,8 @@
 "de les diferents classes de missatge en les finestres de conversa.<br>    "
 "&lt;classe&gt;: receive (rep), send (envia), highlight (ressalta), action "
 "(acció), timestamp (marca de temps)<br>    &lt;primer pla/fons&gt;: black "
-"(negre), red (roig), green (verd), blue (blau), white (blanc), gray (gris), "
-"darkgray (gris fosc), magenta, cyan (cian), default (per defecte)"
+"(negre), red (roig), green (verd), blue (blau), white (blanc), gray "
+"(gris), darkgray (gris fosc), magenta, cyan (cian), default (per defecte)"
 "<br><br>EXEMPLE:<br>    msgcolor send cyan default"
 
 msgid "Unable to open file."
@@ -1385,8 +1387,6 @@
 msgid "Saved Statuses"
 msgstr "Estats alçats"
 
-#. title
-#. optional information
 msgid "Title"
 msgstr "Títol"
 
@@ -1527,7 +1527,7 @@
 msgstr "<b>Converses amb %s a %s:</b><br>"
 
 msgid "History Plugin Requires Logging"
-msgstr "El connector per a l'historial requereix que s'habiliti el registre"
+msgstr "El connector per a l'historial requereix que s'habilite el registre"
 
 msgid ""
 "Logging can be enabled from Tools -> Preferences -> Logging.\n"
@@ -1681,6 +1681,12 @@
 msgid "Set User Info"
 msgstr "Estableix les dades d'usuari"
 
+msgid "This protocol does not support setting a public alias."
+msgstr "Este protocol no permet establir un àlies pulic."
+
+msgid "This protocol does not support fetching the public alias."
+msgstr "Este protocol no permet aconseguir l'àlies públic."
+
 msgid "Unknown"
 msgstr "Desconegut"
 
@@ -2164,7 +2170,8 @@
 "True if the command used to handle this type of URL should be run in a "
 "terminal."
 msgstr ""
-"Cert si l'orde emprada per este tipus d'URL s'ha d'executar en un terminal."
+"Cert si l'orde emprada per este tipus d'URL s'ha d'executar en un "
+"terminal."
 
 msgid "Whether the specified command should handle \"aim\" URLs"
 msgstr "Si l'orde especificada ha de gestionar URL «aim»"
@@ -2717,8 +2724,8 @@
 "Prepends a newline to messages so that the rest of the message appears below "
 "the username in the conversation window."
 msgstr ""
-"Afig una línia nova abans de cada missatge de manera que, en les finestres "
-"de conversa, els missatges apareixen sota el nom d'usuari."
+"Afig una línia nova abans de cada missatge de manera que, en les "
+"finestres de conversa, els missatges apareixen sota el nom d'usuari."
 
 msgid "Offline Message Emulation"
 msgstr "Emulació de missatge de fora de línia"
@@ -2787,7 +2794,8 @@
 msgstr ""
 "Vos permet forçar que les contrasenyes siguen d'un sol ús per a comptes dels "
 "quals no s'alcen les contrasenyes.\n"
-"Nota: per poder fer servir això, cal que no s'alce la contrasenya del compte."
+"Nota: per poder fer servir això, cal que no s'alce la contrasenya del "
+"compte."
 
 #. *< type
 #. *< ui_requirement
@@ -2814,8 +2822,8 @@
 "Causes conversation windows to appear as other users begin to message you.  "
 "This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
 msgstr ""
-"Fa que apareguen finestres de conversa així que altres usuaris vos comencen "
-"a enviar missatges. Funciona per a AIM, ICQ, XMPP, Sametime, i Yahoo!"
+"Fa que apareguen finestres de conversa així que altres usuaris vos comencen a "
+"enviar missatges. Funciona per a AIM, ICQ, XMPP, Sametime, i Yahoo!"
 
 msgid "You feel a disturbance in the force..."
 msgstr "Sentireu un certa pertorbació en la força..."
@@ -3648,8 +3656,8 @@
 "must be a channel operator to do this."
 msgstr ""
 "devoice &lt;sobrenom1&gt; [sobrenom2] ...:  treu l'estat de veu a algú, "
-"prevenint que parlin al canal si este està moderat (+m). Heu de ser operador "
-"del canal per poder fer això."
+"prevenint que parlin al canal si este està moderat (+m). Heu de ser "
+"operador del canal per poder fer això."
 
 msgid ""
 "invite &lt;nick&gt; [room]:  Invite someone to join you in the specified "
@@ -3825,15 +3833,6 @@
 msgid "execute"
 msgstr "executa"
 
-msgid "Server requires TLS/SSL, but no TLS/SSL support was found."
-msgstr ""
-"El servidor requereix TLS/SSL per entrar, però no s'ha trobat cap "
-"implementació de TLS/SSL."
-
-msgid "You require encryption, but no TLS/SSL support was found."
-msgstr ""
-"Heu requerit que es xifri, però no s'ha trobat cap implementació de TLS/SSL."
-
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "El servidor requereix autenticació de text sobre un flux no xifrat"
 
@@ -3871,6 +3870,43 @@
 msgid "SASL error: %s"
 msgstr "Error SASL: %s"
 
+msgid "Invalid Encoding"
+msgstr "La condició no és vàlida"
+
+msgid "Unsupported Extension"
+msgstr "Esta extensió no està implementada"
+
+# MitM: Man-in-the-middle... segons wiki: intermediari
+msgid ""
+"Unexpected response from the server.  This may indicate a possible MITM "
+"attack"
+msgstr ""
+"S'ha rebut una resposta inesperada del servidor. Això podria indicar un "
+"possible atac informàtic \"man-in-the-middle\""
+
+msgid ""
+"The server does support channel binding, but did not appear to advertise "
+"it.  This indicates a likely MITM attack"
+msgstr ""
+"Aques servidor permet vincular canals, tot i que no ho havia anunciat. Això "
+"podria ser indicatiu d'un atac informàtic \"man-in-the-middle\""
+
+msgid "Server does not support channel binding"
+msgstr "El servidor no permet vincular canals"
+
+msgid "Unsupported channel binding method"
+msgstr "Este mètode de vinculació de canals no està implementat"
+
+msgid "User not found"
+msgstr "No s'ha trobat l'usuari"
+
+msgid "Invalid Username Encoding"
+msgstr "La codificació del nom d'usuari no és vàlida"
+
+# Mirar com es traduïa 'Constraint variables'
+msgid "Resource Constraint"
+msgstr "Restriccions del recurs"
+
 # FIXME: canonicalize -> normalitzar (josep)
 msgid "Unable to canonicalize username"
 msgstr "No s'ha pogut normalitzar el nom d'usuari"
@@ -3949,6 +3985,11 @@
 msgid "Organization Unit"
 msgstr "Secció de l'organització"
 
+#. title
+#. optional information
+msgid "Job Title"
+msgstr "Títol de la faena"
+
 msgid "Role"
 msgstr "Rol"
 
@@ -4171,16 +4212,28 @@
 msgid "Roles:"
 msgstr "Rols:"
 
+msgid "Server requires TLS/SSL, but no TLS/SSL support was found."
+msgstr ""
+"El servidor requereix TLS/SSL per entrar, però no s'ha trobat cap "
+"implementació de TLS/SSL."
+
+msgid "You require encryption, but no TLS/SSL support was found."
+msgstr ""
+"Heu requerit que es xifri, però no s'ha trobat cap implementació de TLS/SSL."
+
 msgid "Ping timed out"
 msgstr "S'ha esgitat el temps d'espera (ping)"
 
 msgid "Invalid XMPP ID"
 msgstr "ID de l'XMPP invàlid"
 
+msgid "Invalid XMPP ID. Username portion must be set."
+msgstr "L'ID de l'XMPP no és vàlid. Cal especificar el nom d'usuari."
+
 msgid "Invalid XMPP ID. Domain must be set."
 msgstr "L'ID de l'XMPP no és vàlid. Cal especificar un domini."
 
-# FIX
+# FIXME
 msgid "Malformed BOSH URL"
 msgstr "L'URL BOSH està malmés"
 
@@ -4311,15 +4364,18 @@
 msgid "Allow Buzz"
 msgstr "Permet les botzines"
 
-# Segons la viquipèdia
-#, fuzzy
 msgid "Mood Name"
-msgstr "Nom del mig"
-
-#, fuzzy
+msgstr "Nom de l'estat d'ànim"
+
 msgid "Mood Comment"
-msgstr "Comentari de l'amic"
-
+msgstr "Comentari sobre l'estat d'ànim"
+
+#. primitive
+#. ID
+#. name - use default
+#. saveable
+#. should be user_settable some day
+#. independent
 msgid "Tune Artist"
 msgstr "Artista de la melodia"
 
@@ -4491,10 +4547,6 @@
 msgid "Remote Connection Failed"
 msgstr "Ha fallat la connexió remota"
 
-# Mirar com es traduïa 'Constraint variables'
-msgid "Resource Constraint"
-msgstr "Restriccions del recurs"
-
 msgid "Restricted XML"
 msgstr "XML restringit"
 
@@ -4612,9 +4664,8 @@
 msgid "Initiate Media"
 msgstr "Inicia el medi"
 
-#, fuzzy
 msgid "Account does not support PEP, can't set mood"
-msgstr "Este protocol no implementa sales de xat."
+msgstr "Este protocol no implementa PEP, no es pot establir l'estat d'ànim."
 
 msgid "config:  Configure a chat room."
 msgstr "config:  configura la sala de xat."
@@ -4669,9 +4720,8 @@
 msgid "buzz: Buzz a user to get their attention"
 msgstr "buzz: fa sonar una botzina a un usuari per tal de que vos pare atenció"
 
-#, fuzzy
 msgid "mood: Set current user mood"
-msgstr "Seleccioneu l'usuari correcte"
+msgstr "modd: estableix l'estat d'ànim de l'usuari"
 
 msgid "Extended Away"
 msgstr "Absent des de fa una bona estona"
@@ -4755,13 +4805,13 @@
 "és massa llarga."
 
 msgid "XMPP stream header missing"
-msgstr ""
+msgstr "Falta la capçalera del flux XMPP"
 
 msgid "XMPP Version Mismatch"
-msgstr ""
+msgstr "Les versions del XMPP no coincideixen"
 
 msgid "XMPP stream missing ID"
-msgstr ""
+msgstr "Manca l'ID del fluxe XMPP"
 
 msgid "XML Parse error"
 msgstr "Error en l'anàlisi de l'XML"
@@ -4841,32 +4891,27 @@
 msgid "Please select the resource of %s to which you would like to send a file"
 msgstr "Escolliu a quin recurs de %s voleu enviar un fitxer"
 
-#, fuzzy
 msgid "Afraid"
-msgstr "Àrab"
-
-#, fuzzy
+msgstr "Espantat"
+
 msgid "Amazed"
-msgstr "Avergonyit"
-
-#, fuzzy
+msgstr "Al·lucinant"
+
 msgid "Amorous"
-msgstr "Gloriós"
+msgstr "Amorós"
 
 #. 1
 msgid "Angry"
 msgstr "Enfadat"
 
-#, fuzzy
 msgid "Annoyed"
-msgstr "Bandejat"
+msgstr "Emprenyat"
 
 msgid "Anxious"
 msgstr "Ansiós"
 
-#, fuzzy
 msgid "Aroused"
-msgstr "S'enviarà"
+msgstr ""
 
 msgid "Ashamed"
 msgstr "Avergonyit"
@@ -4874,117 +4919,95 @@
 msgid "Bored"
 msgstr "Avorrit"
 
-#, fuzzy
 msgid "Brave"
-msgstr "Alça"
-
-#, fuzzy
+msgstr "Brau"
+
 msgid "Calm"
-msgstr "Regne"
-
-#, fuzzy
+msgstr "Calmat"
+
 msgid "Cautious"
-msgstr "Xats"
-
-#, fuzzy
+msgstr "Prudent"
+
 msgid "Cold"
-msgstr "Negreta"
-
-#, fuzzy
+msgstr "Fred"
+
 msgid "Confident"
-msgstr "Conflicte"
-
-#, fuzzy
+msgstr "Amb confiança"
+
 msgid "Confused"
-msgstr "_Configura"
-
-#, fuzzy
+msgstr "Confós"
+
 msgid "Contemplative"
-msgstr "Contacte"
-
-#, fuzzy
+msgstr "Contemplatiu"
+
 msgid "Contented"
-msgstr "Connectat"
-
-#, fuzzy
+msgstr "Acontentat"
+
 msgid "Cranky"
-msgstr "Empresa"
-
-#, fuzzy
+msgstr ""
+
 msgid "Crazy"
-msgstr "Crazychat"
-
-#, fuzzy
+msgstr "Boig"
+
 msgid "Creative"
-msgstr "Crea"
-
-#, fuzzy
+msgstr "Creatiu"
+
 msgid "Curious"
-msgstr "Gloriós"
-
-#, fuzzy
+msgstr "Curiós"
+
 msgid "Dejected"
-msgstr "Rebutjat"
-
-#, fuzzy
+msgstr "Enfonsat"
+
 msgid "Depressed"
-msgstr "Suprimit"
-
-#, fuzzy
+msgstr "Deprimit"
+
 msgid "Disappointed"
-msgstr "Desconnectat."
+msgstr "Decebut"
 
 msgid "Disgusted"
-msgstr ""
-
-#, fuzzy
+msgstr "Repugnat"
+
 msgid "Dismayed"
-msgstr "Inhabilitat"
-
-#, fuzzy
+msgstr "Descoratjat"
+
 msgid "Distracted"
-msgstr "Separat"
+msgstr "Distret"
 
 msgid "Embarrassed"
-msgstr ""
-
-#, fuzzy
+msgstr "Avergonyit"
+
 msgid "Envious"
-msgstr "Ansiós"
+msgstr "Envejós"
 
 #. 2
 msgid "Excited"
 msgstr "Excitat"
 
-#, fuzzy
 msgid "Flirtatious"
-msgstr "Gloriós"
-
-#, fuzzy
+msgstr "Amb ganes de flirtar"
+
 msgid "Frustrated"
-msgstr "Nom"
+msgstr "Frustrat"
 
 msgid "Grateful"
-msgstr ""
-
-#, fuzzy
+msgstr "Agraït"
+
 msgid "Grieving"
-msgstr "S'està recuperant..."
+msgstr "De dol"
 
 #. 3
 msgid "Grumpy"
 msgstr "Rondinaire"
 
-#, fuzzy
 msgid "Guilty"
-msgstr "Ciutat"
+msgstr "Culpable"
 
 #. 4
 msgid "Happy"
 msgstr "Content"
 
 msgid "Hopeful"
-msgstr ""
+msgstr "Esperançat"
 
 #. 8
 msgid "Hot"
@@ -4994,37 +5017,31 @@
 msgstr ""
 
 msgid "Humiliated"
-msgstr ""
-
-#, fuzzy
+msgstr "Humiliat"
+
 msgid "Hungry"
-msgstr "Enfadat"
-
-#, fuzzy
+msgstr "Afamat"
+
 msgid "Hurt"
-msgstr "Humor"
+msgstr "Ferit"
 
 msgid "Impressed"
-msgstr ""
-
-#, fuzzy
+msgstr "Impressionat"
+
 msgid "In awe"
-msgstr "Enamorat"
+msgstr ""
 
 msgid "In love"
 msgstr "Enamorat"
 
-#, fuzzy
 msgid "Indignant"
-msgstr "Indonesi"
-
-#, fuzzy
+msgstr "Indignant"
+
 msgid "Interested"
-msgstr "Interessos"
-
-#, fuzzy
+msgstr "Interessat"
+
 msgid "Intoxicated"
-msgstr "Convidat"
+msgstr "Intoxicat"
 
 #. 6
 msgid "Invincible"
@@ -5033,84 +5050,69 @@
 msgid "Jealous"
 msgstr "Gelós"
 
-#, fuzzy
 msgid "Lonely"
-msgstr "Mico"
-
-#, fuzzy
+msgstr "Sol"
+
 msgid "Lost"
-msgstr "El més alt"
+msgstr "Perdut"
 
 msgid "Lucky"
-msgstr ""
-
-#, fuzzy
+msgstr "Sortós"
+
 msgid "Mean"
-msgstr "Alemany"
-
-#, fuzzy
+msgstr "Malèvol"
+
 msgid "Moody"
-msgstr "Estat d'ànim"
+msgstr "Animat"
 
 msgid "Nervous"
-msgstr ""
-
-#, fuzzy
+msgstr "Nerviós"
+
 msgid "Neutral"
-msgstr "Detalls"
-
-#, fuzzy
+msgstr "Neutral"
+
 msgid "Offended"
-msgstr "Fora de línia"
+msgstr "Ofès"
 
 msgid "Outraged"
-msgstr ""
-
-#, fuzzy
+msgstr "Enrabiat"
+
 msgid "Playful"
-msgstr "Reprodueix"
-
-#, fuzzy
+msgstr "Juganer"
+
 msgid "Proud"
-msgstr "Alt"
-
-#, fuzzy
+msgstr "Orgullós"
+
 msgid "Relaxed"
-msgstr "Nom real"
-
-#, fuzzy
+msgstr "Relaxat"
+
 msgid "Relieved"
-msgstr "Rebuts"
-
-#, fuzzy
+msgstr "Alleujat"
+
 msgid "Remorseful"
-msgstr "Suprimeix"
-
-#, fuzzy
+msgstr "Amb remordiments"
+
 msgid "Restless"
-msgstr "Registra"
+msgstr "Neguitós"
 
 #. 7
 msgid "Sad"
 msgstr "Trist"
 
-#, fuzzy
 msgid "Sarcastic"
-msgstr "Marathi"
+msgstr "Sarcàstic"
 
 msgid "Satisfied"
-msgstr ""
-
-#, fuzzy
+msgstr "Satisfet"
+
 msgid "Serious"
-msgstr "Gloriós"
-
-#, fuzzy
+msgstr "Seriós"
+
 msgid "Shocked"
-msgstr "Blocat"
+msgstr "En estat de xoc"
 
 msgid "Shy"
-msgstr ""
+msgstr "Vergonyós"
 
 #. 9
 msgid "Sick"
@@ -5122,41 +5124,34 @@
 msgstr "Endormiscat"
 
 msgid "Spontaneous"
-msgstr ""
-
-#, fuzzy
+msgstr "Espontani"
+
 msgid "Stressed"
-msgstr "Velocitat"
-
-#, fuzzy
+msgstr "Estressat"
+
 msgid "Strong"
-msgstr "Cançó"
-
-#, fuzzy
+msgstr "Fort"
+
 msgid "Surprised"
-msgstr "morrejat"
+msgstr "Sorprés"
 
 msgid "Thankful"
-msgstr ""
+msgstr "Agraït"
 
 msgid "Thirsty"
-msgstr ""
-
-#, fuzzy
+msgstr "Assedegat"
+
 msgid "Tired"
-msgstr "Fire"
-
-#, fuzzy
+msgstr "Cansat"
+
 msgid "Undefined"
-msgstr "Subratllat"
-
-#, fuzzy
+msgstr "Indefinit"
+
 msgid "Weak"
-msgstr "Bufetejar"
-
-#, fuzzy
+msgstr "Decandit"
+
 msgid "Worried"
-msgstr "Avorrit"
+msgstr "Preocupat"
 
 msgid "Set User Nickname"
 msgstr "Estableix el sobrenom de l'usuari"
@@ -5479,7 +5474,8 @@
 #, c-format
 msgid ""
 "MSN servers are currently blocking the following regular expressions:<br/>%s"
-msgstr "Actualment, servidors MSN bloquen estes expressions regulars:<br/>%s"
+msgstr ""
+"Actualment, servidors MSN bloquen estes expressions regulars:<br/>%s"
 
 msgid "This account does not have email enabled."
 msgstr "Este compte no té el correu habilitat."
@@ -5520,18 +5516,6 @@
 msgid "Out to Lunch"
 msgstr "A fora dinant"
 
-#. primitive
-#. ID
-#. name - use default
-#. saveable
-#. should be user_settable some day
-#. independent
-msgid "Artist"
-msgstr "Artista"
-
-msgid "Album"
-msgstr "Àlbum"
-
 msgid "Game Title"
 msgstr "Títol del joc"
 
@@ -5679,9 +5663,6 @@
 msgid "Work"
 msgstr "Faena"
 
-msgid "Job Title"
-msgstr "Títol de la faena"
-
 msgid "Company"
 msgstr "Empresa"
 
@@ -6468,8 +6449,8 @@
 
 msgid "No suitable MySpaceIM account could be found to open this myim URL."
 msgstr ""
-"No s'ha pogut trobar cap compte adequat a MySpaceIM per poder obrir este URL "
-"myim."
+"No s'ha pogut trobar cap compte adequat a MySpaceIM per poder obrir este "
+"URL myim."
 
 msgid "Enable the proper MySpaceIM account and try again."
 msgstr "Habiliteu el compte MySpaceIM adequat i proveu-ho de nou."
@@ -6709,9 +6690,6 @@
 msgid "Incorrect password"
 msgstr "La contrasenya no és correcta"
 
-msgid "User not found"
-msgstr "No s'ha trobat l'usuari"
-
 msgid "Account has been disabled"
 msgstr "S'ha inhabilitat el compte"
 
@@ -6725,7 +6703,7 @@
 msgstr "El servidor no està disponible, proveu-ho més tard"
 
 msgid "Cannot add a contact to the same folder twice"
-msgstr "No es pot afegir un contacte a la mateixa carpeta dues vegades"
+msgstr "No es pot afegir un contacte a la mateixa carpeta dos vegades"
 
 msgid "Cannot add yourself"
 msgstr "No es pot afegir a un mateix"
@@ -6745,7 +6723,7 @@
 "incorrectes"
 
 msgid "You cannot add the same person twice to a conversation"
-msgstr "No podeu afegir la mateixa persona a una conversa dues vegades"
+msgstr "No podeu afegir la mateixa persona a una conversa dos vegades"
 
 msgid "You have reached your limit for the number of contacts allowed"
 msgstr "Heu introduït el màxim nombre de contactes permesos"
@@ -6766,7 +6744,8 @@
 "This evaluation version does not allow more than ten users to log in at one "
 "time"
 msgstr ""
-"Esta versió d'avaluació no permet que entrin més de deu usuaris a la vegada"
+"Esta versió d'avaluació no permet que entren més de deu usuaris a la "
+"vegada"
 
 msgid "The user is either offline or you are blocked"
 msgstr "L'usuari està fora de línia o bé esteu blocat"
@@ -6782,8 +6761,8 @@
 #, c-format
 msgid "Unable to send message. Could not get details for user (%s)."
 msgstr ""
-"No s'ha pogut enviar el missatge. No s'han pogut obtindre detalls de "
-"l'usuari (%s)."
+"No s'ha pogut enviar el missatge. No s'han pogut obtindre detalls de l'usuari "
+"(%s)."
 
 #, c-format
 msgid "Unable to add %s to your buddy list (%s)."
@@ -6979,6 +6958,10 @@
 msgid "AOL does not allow your screen name to authenticate here"
 msgstr "AOL no permet que vos autentiqueu amb este nom d'usuari ací"
 
+#, c-format
+msgid "Error requesting %s"
+msgstr "S'ha produït un error en sol·licitar %s"
+
 msgid "Could not join chat room"
 msgstr "No s'ha pogut entrar a la sala de xat"
 
@@ -6986,107 +6969,89 @@
 msgstr "El nom de sala de xat no és vàlid"
 
 msgid "Thinking"
-msgstr ""
-
-#, fuzzy
+msgstr "Pensant"
+
 msgid "Shopping"
-msgstr "Pare d'escriure"
-
-#, fuzzy
+msgstr "Comprant"
+
 msgid "Questioning"
-msgstr "Diàleg de pregunta"
-
-#, fuzzy
+msgstr "Preguntant"
+
 msgid "Eating"
-msgstr "Radiomissatgeria"
-
-#, fuzzy
+msgstr "Menjant"
+
 msgid "Watching a movie"
-msgstr "Jugant a un joc"
+msgstr "Mirant una pel·lícula"
 
 msgid "Typing"
 msgstr "Teclejant"
 
-#, fuzzy
 msgid "At the office"
-msgstr "Fora de l'oficina"
+msgstr "A l'oficina"
 
 msgid "Taking a bath"
-msgstr ""
+msgstr "Prenent un bany"
 
 msgid "Watching TV"
-msgstr ""
-
-#, fuzzy
+msgstr "Mirant la tele"
+
 msgid "Having fun"
-msgstr "Penja"
-
-#, fuzzy
+msgstr "Passant-ho bé"
+
 msgid "Sleeping"
-msgstr "Endormiscat"
+msgstr "Dormint"
 
 msgid "Using a PDA"
-msgstr ""
-
-#, fuzzy
+msgstr "Emprant el PDA"
+
 msgid "Meeting friends"
-msgstr "Amics de MI"
-
-#, fuzzy
+msgstr "Amb amics"
+
 msgid "On the phone"
 msgstr "Al telèfon"
 
-#, fuzzy
 msgid "Surfing"
-msgstr "Recurrent"
+msgstr "Navegant"
 
 #. "I am mobile." / "John is mobile."
 msgid "Mobile"
 msgstr "Mòbil"
 
-#, fuzzy
 msgid "Searching the web"
-msgstr "Avisa l'usuari"
-
-#, fuzzy
+msgstr "Cercant a la web"
+
 msgid "At a party"
-msgstr "Port d'autorització"
+msgstr "En una festa"
 
 msgid "Having Coffee"
-msgstr ""
+msgstr "Prenent un cafè"
 
 #. Playing video games
-#, fuzzy
 msgid "Gaming"
-msgstr "Jocs d'usuari"
+msgstr "Jugant"
 
 msgid "Browsing the web"
-msgstr ""
-
-#, fuzzy
+msgstr "Navegant la web"
+
 msgid "Smoking"
-msgstr "Cançó"
-
-#, fuzzy
+msgstr "Fumant"
+
 msgid "Writing"
-msgstr "Treballant"
+msgstr "Escrivint"
 
 #. Drinking [Alcohol]
-#, fuzzy
 msgid "Drinking"
-msgstr "Treballant"
+msgstr "Bevent"
 
 # És un estat, com "fora de línia", etc. (josep)
 msgid "Listening to music"
 msgstr "Escoltant música"
 
-#, fuzzy
 msgid "Studying"
-msgstr "S'està enviant"
-
-#, fuzzy
+msgstr "Estudiant"
+
 msgid "In the restroom"
-msgstr "Interessos"
+msgstr "Al lavabo"
 
 msgid "Received invalid data on connection with server"
 msgstr "S'han rebut dades invàlides a la connexió amb el servidor"
@@ -7147,8 +7112,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 vos ha intentat enviar un fitxer %s, però ara mateix només permetem "
-"enviar fitxers de fins a %s a través de MI directa. Proveu-ho fent servir la "
+"%s vos ha intentat enviar un fitxer %s, però ara mateix només permetem enviar "
+"fitxers de fins a %s a través de MI directa. Proveu-ho fent servir la "
 "transferència de fitxers.\n"
 
 # FIXME
@@ -7282,8 +7247,9 @@
 "(There was an error receiving this message.  Either you and %s have "
 "different encodings selected, or %s has a buggy client.)"
 msgstr ""
-"(S'ha produït un error en rebre este missatge. És molt possible que %s empri "
-"una codificació diferent a la vostra, o que %s tinga un client defectuós)"
+"(S'ha produït un error en rebre este missatge. És molt possible que %s "
+"empri una codificació diferent a la vostra, o que %s tinga un client "
+"defectuós)"
 
 #. Label
 msgid "Buddy Icon"
@@ -7302,7 +7268,7 @@
 msgstr "Jocs"
 
 msgid "ICQ Xtraz"
-msgstr ""
+msgstr "ICQ Xtraz"
 
 msgid "Add-Ins"
 msgstr "Afegits"
@@ -7370,25 +7336,20 @@
 msgid "Invisible"
 msgstr "Invisible"
 
-#, fuzzy
 msgid "Evil"
-msgstr "Correu electrònic"
-
-#, fuzzy
+msgstr "Maliciós"
+
 msgid "Depression"
-msgstr "Professió"
-
-#, fuzzy
+msgstr "Depressió"
+
 msgid "At home"
-msgstr "Quant a mi"
-
-#, fuzzy
+msgstr "A casa"
+
 msgid "At work"
-msgstr "Xarxa"
-
-#, fuzzy
+msgstr "A la faena"
+
 msgid "At lunch"
-msgstr "A fora dinant"
+msgstr "Dinant"
 
 msgid "IP Address"
 msgstr "Adreça IP"
@@ -7423,9 +7384,9 @@
 "a valid email address, or start with a letter and contain only letters, "
 "numbers and spaces, or contain only numbers."
 msgstr ""
-"No s'ha pogut entrar com a %s perquè este nom d'usuari no és vàlid. Els noms "
-"d'usuari han de ser adreces de correu vàlides, o començar amb una lletra i "
-"contindre només lletres, nombres o espais, o només nombres."
+"No s'ha pogut entrar com a %s perquè este nom d'usuari no és vàlid. Els "
+"noms d'usuari han de ser adreces de correu vàlides, o començar amb una "
+"lletra i contindre només lletres, nombres o espais, o només nombres."
 
 #, c-format
 msgid "You may be disconnected shortly.  If so, check %s for updates."
@@ -7903,9 +7864,8 @@
 msgid "iTunes Music Store Link"
 msgstr "Enllaç al magatzem de música iTunes"
 
-#, fuzzy
 msgid "Lunch"
-msgstr "Finch"
+msgstr "Dinar"
 
 #, c-format
 msgid "Buddy Comment for %s"
@@ -7938,9 +7898,8 @@
 msgid "Edit Buddy Comment"
 msgstr "Edita el comentari sobre l'amic"
 
-#, fuzzy
 msgid "Get X-Status Msg"
-msgstr "Aconsegueix el missatge d'estat"
+msgstr "Aconsegueix el missatge d'estat X"
 
 msgid "End Direct IM Session"
 msgstr "Finalitzar la sessió de MI directa"
@@ -7981,8 +7940,8 @@
 "You can re-request authorization from these buddies by right-clicking on "
 "them and selecting \"Re-request Authorization.\""
 msgstr ""
-"Podeu tornar a demanar l'autorització d'estos amics fent-hi clic a sobre amb "
-"el botó dret del ratolí, i seleccionant «Torna a demanar l'autorització»."
+"Podeu tornar a demanar l'autorització d'estos amics fent-hi clic a sobre "
+"amb el botó dret del ratolí, i seleccionant «Torna a demanar l'autorització»."
 
 msgid "Find Buddy by Email"
 msgstr "Troba un amic per l'adreça de correu"
@@ -8355,6 +8314,11 @@
 msgid "Admin"
 msgstr "Administrador"
 
+# FIXME
+#. XXX: Should this be "Topic"?
+msgid "Room Title"
+msgstr "Nom de la sala"
+
 msgid "Notice"
 msgstr "Avís"
 
@@ -8429,11 +8393,11 @@
 
 #, c-format
 msgid "%u requested to join Qun %u for %s"
-msgstr "%u ha sol·licitat unir-se al Qun %u per %s"
+msgstr "%u ha sol·licitat unir-s'al Qun %u per %s"
 
 #, c-format
 msgid "%u request to join Qun %u"
-msgstr "%u ha sol·licitat unir-se al Qun %u"
+msgstr "%u ha sol·licitat unir-s'al Qun %u"
 
 #, c-format
 msgid "Failed to join Qun %u, operated by admin %u"
@@ -8441,8 +8405,7 @@
 
 #, c-format
 msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
-msgstr ""
-"<b>L'administrador %2$u vos ha permés unir-vos al Qun %1$u per %3$s</b>"
+msgstr "<b>L'administrador %2$u vos ha permés unir-vos al Qun %1$u per %3$s</b>"
 
 #, c-format
 msgid "<b>Removed buddy %u.</b>"
@@ -8572,8 +8535,7 @@
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr "<p><i>I tothom que ho ha fet possible...<i><br>\n"
 
-#, fuzzy
-msgid "<i>Feel free to join us!</i> :)"
+msgid "<i>Feel free to join vos!</i> :)"
 msgstr "<i>No dubteu a col·laborar amb nosaltres!</i> :)"
 
 #, c-format
@@ -8909,8 +8871,8 @@
 "\"Create New Conference\" if you'd like to create a new conference to invite "
 "this user to."
 msgstr ""
-"Seleccioneu a quina conferència, de les d'ací sota, voleu convidar l'usuari %"
-"s. Seleccioneu «Crea una nova conferència» si voleu crear-ne una de nova on "
+"Seleccioneu a quina conferència, de les d'ací sota, voleu convidar l'usuari "
+"%s. Seleccioneu «Crea una nova conferència» si voleu crear-ne una de nova on "
 "convidar-hi l'usuari."
 
 msgid "Invite to Conference"
@@ -9040,7 +9002,7 @@
 "Book groups. Please select the correct group from the list below to add it "
 "to your buddy list."
 msgstr ""
-"L'identificador «%s» pot referir-se a qualsevol dels grups de llibretes "
+"L'identificador «%s» pot referir-s'a qualsevol dels grups de llibretes "
 "d'adreces Notes següents. Seleccioneu el grup correcte de la llista d'ací "
 "sota, a afegir a la llista d'amics."
 
@@ -9893,7 +9855,8 @@
 msgstr "topic [&lt;tema nou&gt;]: mostra o canvia el tema"
 
 msgid "join &lt;channel&gt; [&lt;password&gt;]:  Join a chat on this network"
-msgstr "join &lt;canal&gt; [&lt;contrasenya&gt;]: entra en un xat d'esta xarxa"
+msgstr ""
+"join &lt;canal&gt; [&lt;contrasenya&gt;]: entra en un xat d'esta xarxa"
 
 msgid "list:  List channels on this network"
 msgstr "list:  llista els canals en esta xarxa"
@@ -10268,9 +10231,6 @@
 msgid "Yahoo! Protocol Plugin"
 msgstr "Connector per al protocol Yahoo!"
 
-msgid "Pager server"
-msgstr "Servidor de cercapersones"
-
 msgid "Pager port"
 msgstr "Port per al cercapersones"
 
@@ -10294,12 +10254,6 @@
 msgid "Chat room list URL"
 msgstr "URL de la llista de sales de xat"
 
-msgid "Yahoo Chat server"
-msgstr "Servidor de xat de Yahoo"
-
-msgid "Yahoo Chat port"
-msgstr "Port del xat de Yahoo"
-
 msgid "Yahoo JAPAN ID..."
 msgstr "ID de Yahoo del Japó..."
 
@@ -10319,8 +10273,8 @@
 #, c-format
 msgid "%s has sent you a webcam invite, which is not yet supported."
 msgstr ""
-"%s vos ha enviat una invitació a la seua càmera web, però això encara no "
-"està implementat."
+"%s vos ha enviat una invitació a la seua càmera web, però això encara no està "
+"implementat."
 
 msgid "Your SMS was not delivered"
 msgstr "No s'ha enviat l'SMS"
@@ -10337,15 +10291,14 @@
 "%s has (retroactively) denied your request to add them to your list for the "
 "following reason: %s."
 msgstr ""
-"%s vos ha denegat (retroactivament) la petició d'afegir-lo a la vostra "
-"llista pel següent motiu:\n"
+"%s vos ha denegat (retroactivament) la petició d'afegir-lo a la vostra llista "
+"pel següent motiu:\n"
 "%s"
 
 #, c-format
 msgid "%s has (retroactively) denied your request to add them to your list."
 msgstr ""
-"%s vos ha denegat (retroactivament) la petició d'afegir-lo a la vostra "
-"llista."
+"%s vos ha denegat (retroactivament) la petició d'afegir-lo a la vostra llista."
 
 msgid "Add buddy rejected"
 msgstr "S'ha rebutjat afegir l'amic"
@@ -10370,6 +10323,15 @@
 "El compte està blocat, però no se'n coneix el motiu. Això es pot solucionar "
 "entrant al web de Yahoo!"
 
+#. indicates a lock due to logging in too frequently
+msgid ""
+"Account locked: You have been logging in too frequently.  Wait a few minutes "
+"before trying to connect again.  Logging into the Yahoo! website may help."
+msgstr ""
+"El compte està blocat perquè s'ha intentat entrar massa cops. Espereu uns "
+"minuts abans de tornar-ho a intentar. Potser també es pot solucionar entrant "
+"al web de Yahoo!"
+
 #. username or password missing
 msgid "Username or password missing"
 msgstr "Manquen el nom d'uruari o la contrasenya"
@@ -10449,6 +10411,16 @@
 msgid "Unable to establish a connection with %s: %s"
 msgstr "No s'ha pogut establir una connexió amb %s: %s"
 
+msgid "Unable to connect: The server returned an empty response."
+msgstr "No s'ha pogut connectar: el servidor ha retornat una resposta buida."
+
+msgid ""
+"Unable to connect: The server's response did not contain the necessary "
+"information"
+msgstr ""
+"No s'ha pogut connectar: el servidor ha retornat una resposta que no conté "
+"la informació necessària"
+
 msgid "Not at Home"
 msgstr "Fora de casa"
 
@@ -10555,7 +10527,8 @@
 "If you wish to view this profile, you will need to visit this link in your "
 "web browser:"
 msgstr ""
-"Si voleu veure este perfil, haureu de visitar este enllaç amb el navegador:"
+"Si voleu veure este perfil, haureu de visitar este enllaç amb el "
+"navegador:"
 
 msgid "Yahoo! ID"
 msgstr "ID de Yahoo!"
@@ -10597,9 +10570,9 @@
 "does not exist; however, Yahoo! sometimes does fail to find a user's "
 "profile. If you know that the user exists, please try again later."
 msgstr ""
-"No s'ha pogut obtindre el perfil de l'usuari. El més segur és que l'usuari "
-"no existisca, tot i que a vegades Yahoo! no pot trobar els perfils d'usuari. "
-"Si sabeu del cert que l'usuari existeix, torneu-ho a intentar més tard."
+"No s'ha pogut obtindre el perfil de l'usuari. El més segur és que l'usuari no "
+"existisca, tot i que a vegades Yahoo! no pot trobar els perfils d'usuari. Si "
+"sabeu del cert que l'usuari existeix, torneu-ho a intentar més tard."
 
 msgid "The user's profile is empty."
 msgstr "El perfil d'usuari està buit."
@@ -10627,8 +10600,8 @@
 "Unknown error. You may need to logout and wait five minutes before being "
 "able to rejoin a chatroom"
 msgstr ""
-"S'ha produït un error desconegut. Potser caldrà que eixiu i espereu uns cinc "
-"minuts abans d'intentar tornar a entrar a la sala de xat"
+"S'ha produït un error desconegut. Potser caldrà que eixiu i espereu uns "
+"cinc minuts abans d'intentar tornar a entrar a la sala de xat"
 
 #, c-format
 msgid "You are now chatting in %s."
@@ -10708,11 +10681,13 @@
 
 msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
 msgstr ""
-"inst &lt;instància&gt;: especifica la instància a fer servir en esta classe"
+"inst &lt;instància&gt;: especifica la instància a fer servir en esta "
+"classe"
 
 msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
 msgstr ""
-"topic &lt;instància&gt;: especifica la instància a fer servir en esta classe"
+"topic &lt;instància&gt;: especifica la instància a fer servir en esta "
+"classe"
 
 msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
 msgstr ""
@@ -10836,6 +10811,10 @@
 #. *
 #. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
 #.
+#. *
+#. * A wrapper for purple_request_action_with_icon() that uses Accept and Cancel
+#. * buttons.
+#.
 msgid "_Accept"
 msgstr "_Accepta"
 
@@ -10902,9 +10881,8 @@
 msgid "Extended away"
 msgstr "Absent durant una bona estona"
 
-#, fuzzy
 msgid "Feeling"
-msgstr "S'està rebent"
+msgstr "Estat d'ànim"
 
 #, c-format
 msgid "%s (%s) changed status from %s to %s"
@@ -11077,12 +11055,6 @@
 msgid "Pidgin Internet Messenger"
 msgstr "Missatger d'Internet Pidgin"
 
-msgid "Orientation"
-msgstr "Orientació"
-
-msgid "The orientation of the tray."
-msgstr "Orientació de l'àrea de notificació."
-
 #. Build the login options frame.
 msgid "Login Options"
 msgstr "Opcions d'entrada"
@@ -11201,8 +11173,8 @@
 "voleu que el %s es connecte amb més comptes de missatgeria instantània (MI), "
 "torneu a prémer <b>Afig</b> fins a configurar-los tots.\n"
 "\n"
-"Podeu tornar a esta finestra per afegir, editar o suprimir comptes, a partir "
-"del menú <b>Comptes->Gestiona els comptes</b> a finestra de la llista "
+"Podeu tornar a esta finestra per afegir, editar o suprimir comptes, a "
+"partir del menú <b>Comptes->Gestiona els comptes</b> a finestra de la llista "
 "d'amics."
 
 #. Buddy List
@@ -11338,8 +11310,8 @@
 "choosing 'Expand' from the contact's context menu"
 msgstr ""
 "En fusionar estos contactes fareu que compartisquen una mateixa entrada en "
-"la llista d'amics i en la finestra de conversa. Més avant els podreu separar "
-"amb l'opció 'Expandeix' del menú contextual del contacte."
+"la llista d'amics i en la finestra de conversa. Més avant els podreu "
+"separar amb l'opció 'Expandeix' del menú contextual del contacte."
 
 msgid "Please update the necessary fields."
 msgstr "Actualitzeu els camps necessaris."
@@ -11452,13 +11424,11 @@
 msgid "Unknown node type"
 msgstr "Codi d'error desconegut"
 
-#, fuzzy
 msgid "Please select your mood from the list"
-msgstr "Seleccioneu l'estat d'ànim de la llista."
-
-#, fuzzy
+msgstr "Seleccioneu l'estat d'ànim de la llista"
+
 msgid "Message (optional)"
-msgstr "Àlies (opcional)"
+msgstr "Missatge (opcional)"
 
 msgid "Edit User Mood"
 msgstr "Edita l'estat d'ànim"
@@ -11542,9 +11512,8 @@
 msgid "/Tools/Pr_ivacy"
 msgstr "/Eines/_Privadesa"
 
-#, fuzzy
 msgid "/Tools/Set _Mood"
-msgstr "/Eines/_Registre del sistema"
+msgstr "/Eines/Esta_bleix l'estat d'ànim"
 
 msgid "/Tools/_File Transfers"
 msgstr "/Eines/_Transferència de fitxers"
@@ -11565,20 +11534,17 @@
 msgid "/Help/Online _Help"
 msgstr "/Ajuda/A_juda en línia"
 
-#, fuzzy
 msgid "/Help/_Build Information"
-msgstr "Informació sobre l'amic"
+msgstr "/Ajuda/Informació sobre el _muntatge"
 
 msgid "/Help/_Debug Window"
 msgstr "/Ajuda/Finestra de _depuració"
 
-#, fuzzy
 msgid "/Help/De_veloper Information"
-msgstr "Informació del servidor"
-
-#, fuzzy
+msgstr "/Ajuda/Informació sobre els d_esenvolupadors"
+
 msgid "/Help/_Translator Information"
-msgstr "Informació personal"
+msgstr "/Ajuda/Informació sobre els _traductors"
 
 msgid "/Help/_About"
 msgstr "/Ajuda/_Quant a"
@@ -11807,9 +11773,8 @@
 msgid "_Edit Account"
 msgstr "_Edita el compte"
 
-#, fuzzy
 msgid "Set _Mood..."
-msgstr "Estableix l'estat d'ànim..."
+msgstr "Estableix l'_estat d'ànim..."
 
 msgid "No actions available"
 msgstr "No hi ha accions disponibles"
@@ -11930,15 +11895,14 @@
 msgid "/Conversation/Se_nd File..."
 msgstr "/Conversa/Envia un _fitxer..."
 
-#, fuzzy
 msgid "/Conversation/Get _Attention"
-msgstr "/Conversa/Aconsegueix informació"
+msgstr "/Conversa/Aconseg_ueix atenció"
 
 msgid "/Conversation/Add Buddy _Pounce..."
-msgstr "/Conversa/Afig un a_vís per a l'amic..."
+msgstr "/Conversa/Afe_geix un avís per a l'amic..."
 
 msgid "/Conversation/_Get Info"
-msgstr "/Conversa/_Aconsegueix informació"
+msgstr "/Conversa/Aconsegueix inf_ormació"
 
 msgid "/Conversation/In_vite..."
 msgstr "/Conversa/Con_vida..."
@@ -11953,16 +11917,16 @@
 msgstr "/Conversa/_Bloca..."
 
 msgid "/Conversation/_Unblock..."
-msgstr "/Conversa/_Desbloca..."
+msgstr "/Conversa/Desb_loca..."
 
 msgid "/Conversation/_Add..."
 msgstr "/Conversa/_Afig..."
 
 msgid "/Conversation/_Remove..."
-msgstr "/Conversa/Sup_rimeix..."
+msgstr "/Conversa/_Suprimeix..."
 
 msgid "/Conversation/Insert Lin_k..."
-msgstr "/Conversa/Insereix un _enllaç..."
+msgstr "/Conversa/Insereix _un enllaç..."
 
 msgid "/Conversation/Insert Imag_e..."
 msgstr "/Conversa/Insereix una _imatge..."
@@ -12015,9 +11979,8 @@
 msgid "/Conversation/Send File..."
 msgstr "/Conversa/Envia un fitxer..."
 
-#, fuzzy
 msgid "/Conversation/Get Attention"
-msgstr "/Conversa/Aconsegueix informació"
+msgstr "/Conversa/Aconsegueix atenció"
 
 msgid "/Conversation/Add Buddy Pounce..."
 msgstr "/Conversa/Afig avís per a l'amic..."
@@ -12083,13 +12046,11 @@
 msgid "0 people in room"
 msgstr "No hi ha ningú a la sala"
 
-#, fuzzy
 msgid "Close Find bar"
-msgstr "Tanca esta pestanya"
-
-#, fuzzy
+msgstr "Tanca la barra de cerca"
+
 msgid "Find:"
-msgstr "Cerca"
+msgstr "Cerca:"
 
 #, c-format
 msgid "%d person in room"
@@ -12266,6 +12227,9 @@
 msgid "Bengali"
 msgstr "Bengalí"
 
+msgid "Bengali-India"
+msgstr "Bengalí (Ìndia)"
+
 msgid "Bosnian"
 msgstr "Bosnià"
 
@@ -12492,7 +12456,7 @@
 msgid "Lithuanian"
 msgstr "Lituà"
 
-#, 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 "
@@ -12501,16 +12465,14 @@
 "copyrighted by its contributors, a list of whom is also distributed with %"
 "s.  There is no warranty for %s.<BR><BR>"
 msgstr ""
-"El %s és un client de missatgeria instantània modular basat en libpurple, "
-"que permet utilitzar els protocols AIM, MSN, Yahoo!, Jabber, ICQ, IRC, SILC, "
-"SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, "
-"Gadu-Gadu, i QQ, tots alhora. Utilitza la biblioteca de programació GTK+."
-"<BR><BR>Podeu modificar i redistribuir el programa sota els termes de la GPL "
-"(versió 2 o posterior). Hi ha una còpia de la GPL dins del fitxer «COPYING» "
-"que es distribueix amb el %s. Els drets d'autor del %s pertanyen als seus "
-"col·laboradors. El fitxer «COPYRIGHT» conté una llista completa de tots els "
-"contribuïdors. No vos proporcionem cap mena de garantia amb este programa."
-"<BR><BR>"
+"El %s és un client de missatgeria basat en libpurple que permet connectar-"
+"vos a diferents serveis de missatgeria instantània al mateix temps. El %s "
+"està escrit en C i la biblioteca de programació GTK+. El %s es distribueix "
+"sota llicència GPL 2 (o posterior), i per tant podeu modificar-lo i "
+"redistribuir-lo d'acord amb esta llicència. Amb el %s es distribueix una "
+"còpia de la GPL. El %s és copyright de tothom que hi ha contribuït, la "
+"llista de col·laboradors també es distribueix amb el %s. No es proporciona "
+"cap mena de garantia amb el %s.<BR><BR>"
 
 #, c-format
 msgid ""
@@ -12519,8 +12481,11 @@
 "Channel: #pidgin on irc.freenode.net<BR>\tXMPP MUC: devel@conference.pidgin."
 "im<BR><BR>"
 msgstr ""
-
-#, fuzzy, c-format
+"<FONT SIZE=\"4\"><B>Recursos útils</B></FONT><BR>\t<A HREF=\"%s\">Lloc web</"
+"A><BR>\t<A HREF=\"%s\">Preguntes més freqüents</A><BR>\tCanal d'IRC: #pidgin "
+"a 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/"
@@ -12530,26 +12495,25 @@
 "welcome to post in another language, but the responses may be less helpful."
 "<br/>"
 msgstr ""
-"<font size=\"4\">Ajuda d'altres usuaris del Pidgin:</font> <a href=\"mailto:"
-"support@pidgin.im\">support@pidgin.im</a><br/>Esta és una llista de correu "
-"<b>pública</b>. (<a href=\"http://pidgin.im/pipermail/support/\">arxiu</a>)"
-"<br/>No vos podem ajudar amb connectors d'altres proveïdors.<br/>En esta "
-"llista s'hi empra principalment l'<b>anglés</b>.  Podeu escriure-hi en un "
-"altre idioma, però és possible que les respostes no siguen de gaire ajuda."
-"<br/><br/>"
+"<font size=\"4\"><b>Ajuda d'altres usuaris del Pidgin</b>:</font> <a href="
+"\"mailto:support@pidgin.im\">support@pidgin.im</a><br/>Esta és una llista "
+"de correu <b>pública</b>. (<a href=\"http://pidgin.im/pipermail/support/"
+"\">arxiu</a>)<br/>No vos podem ajudar amb connectors d'altres proveïdors.<br/"
+">En esta llista s'hi empra principalment l'<b>anglés</b>. Podeu escriure-"
+"hi en un altre idioma, però és possible que les respostes no siguen de gaire "
+"ajuda.<br/>"
 
 #, c-format
 msgid "About %s"
 msgstr "Quant al %s"
 
-#, fuzzy
 msgid "Build Information"
-msgstr "Informació sobre l'amic"
+msgstr "Informació sobre el muntatge"
 
 #. End of not to be translated section
-#, fuzzy, c-format
+#, c-format
 msgid "%s Build Information"
-msgstr "Informació sobre l'amic"
+msgstr "Informació sobre el muntatge del %s"
 
 msgid "Current Developers"
 msgstr "Desenvolupadors actuals"
@@ -12563,9 +12527,9 @@
 msgid "Retired Crazy Patch Writers"
 msgstr "Escriptors de pedaços retirats"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Developer Information"
-msgstr "Informació del servidor"
+msgstr "Informació sobre els desenvolupadors del %s"
 
 msgid "Current Translators"
 msgstr "Traductors actuals"
@@ -12573,9 +12537,9 @@
 msgid "Past Translators"
 msgstr "Antics traductors"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Translator Information"
-msgstr "Més informació"
+msgstr "Informació sobre els traductors del %s"
 
 msgid "_Name"
 msgstr "_Nom"
@@ -12938,8 +12902,8 @@
 "This smiley is disabled because a custom smiley exists for this shortcut:\n"
 " %s"
 msgstr ""
-"Esta emoticona està inhabilitada perquè hi ha una emoticona personalitzada "
-"per esta drecera:\n"
+"Esta emoticona està inhabilitada perquè hi ha una emoticona "
+"personalitzada per esta drecera:\n"
 " %s"
 
 msgid "Smile!"
@@ -12994,9 +12958,8 @@
 msgid "Insert Smiley"
 msgstr "Insereix una emoticona"
 
-#, fuzzy
 msgid "Send Attention"
-msgstr "Alerta!"
+msgstr "Envia atenció"
 
 msgid "<b>_Bold</b>"
 msgstr "<b>_Negreta</b>"
@@ -13044,9 +13007,8 @@
 msgid "_Smile!"
 msgstr "_Somrieu!"
 
-#, fuzzy
 msgid "_Attention!"
-msgstr "Alerta!"
+msgstr "_Atenció!"
 
 msgid "Log Deletion Failed"
 msgstr "No s'ha pogut suprimir el registre"
@@ -13180,7 +13142,8 @@
 #, c-format
 msgid "Exiting because another libpurple client is already running.\n"
 msgstr ""
-"Ara se eixirà atès que ja hi ha un altre client del libpurple executant-se.\n"
+"Ara s'eixirà atès que ja hi ha un altre client del libpurple executant-"
+"se.\n"
 
 msgid "/_Media"
 msgstr "/_Medi"
@@ -13999,9 +13962,8 @@
 msgid "Custom Smiley Manager"
 msgstr "Gestor d'emoticones personalitzades"
 
-#, fuzzy
 msgid "Attention received"
-msgstr "Cal activació"
+msgstr "S'ha rebut una alerta"
 
 msgid "Select Buddy Icon"
 msgstr "Seleccioneu una icona per a l'amic"
@@ -14053,8 +14015,8 @@
 "You can send this image as a file transfer, embed it into this message, or "
 "use it as the buddy icon for this user."
 msgstr ""
-"Podeu enviar esta imatge com una transferència de fitxer, incrustar-la en el "
-"missatge, o emprar-la com a icona d'amic per a este usuari."
+"Podeu enviar esta imatge com una transferència de fitxer, incrustar-la en "
+"el missatge, o emprar-la com a icona d'amic per a este usuari."
 
 msgid "Set as buddy icon"
 msgstr "Estableix com a icona de l'amic"
@@ -14072,15 +14034,15 @@
 "You can send this image as a file transfer, or use it as the buddy icon for "
 "this user."
 msgstr ""
-"Podeu enviar esta imatge com una transferència de fitxer, o emprar-la com a "
-"icona d'amic per a este usuari."
+"Podeu enviar esta imatge com una transferència de fitxer, o emprar-la com "
+"a icona d'amic per a este usuari."
 
 msgid ""
 "You can insert this image into this message, or use it as the buddy icon for "
 "this user"
 msgstr ""
-"Podeu incrustar esta imatge en el missatge o utilitzar-la com a icona per a "
-"este usuari."
+"Podeu incrustar esta imatge en el missatge o utilitzar-la com a icona per "
+"a este usuari."
 
 #. I don't know if we really want to do anything here.  Most of
 #. * the desktop item types are crap like "MIME Type" (I have no
@@ -14387,7 +14349,7 @@
 msgstr "Servei de descoberta XMPP"
 
 msgid "Allows browsing and registering services."
-msgstr "Permet navegar i registrar-se a serveis."
+msgstr "Permet navegar i registrar-s'a serveis."
 
 msgid ""
 "This plugin is useful for registering with legacy transports or other XMPP "
@@ -15152,8 +15114,17 @@
 msgstr "Opcions del format de les marques horàries"
 
 #, c-format
-msgid "_Force 24-hour time format"
-msgstr "_Força el format de 24 hores"
+msgid "_Force timestamp format:"
+msgstr "_Format de les marques horàries:"
+
+msgid "Use system default"
+msgstr "Predeterminat del sistema"
+
+msgid "12 hour time format"
+msgstr "12 hores"
+
+msgid "24 hour time format"
+msgstr "24 hores"
 
 msgid "Show dates in..."
 msgstr "Mostra dates a..."
@@ -15268,8 +15239,7 @@
 
 msgid "Remove Buddy List window transparency on focus"
 msgstr ""
-"Treu la transparència de la finestra de la llista d'amics en obtindre el "
-"focus"
+"Treu la transparència de la finestra de la llista d'amics en obtindre el focus"
 
 #. *< type
 #. *< ui_requirement
@@ -15293,8 +15263,8 @@
 "\n"
 "* Note: This plugin requires Win2000 or greater."
 msgstr ""
-"Este connector habilita la transparència variables en finestres de conversa, "
-"i la llista d'amics.\n"
+"Este connector habilita la transparència variables en finestres de "
+"conversa, i la llista d'amics.\n"
 "\n"
 "* Nota: este connector requereix Windows 2000 o superior."
 
@@ -15358,9 +15328,29 @@
 msgstr "Envia i rep blocs XMPP en brut."
 
 #. *  description
-#, fuzzy
 msgid "This plugin is useful for debugging XMPP servers or clients."
-msgstr "Este connector és útil per a depurar servidors i clients XMPP."
+msgstr "Este connector és útil per a depurar servidors o clients XMPP."
+
+#~ msgid "Orientation"
+#~ msgstr "Orientació"
+
+#~ msgid "The orientation of the tray."
+#~ msgstr "Orientació de l'àrea de notificació."
+
+#~ msgid "Artist"
+#~ msgstr "Artista"
+
+#~ msgid "Album"
+#~ msgstr "Àlbum"
+
+#~ msgid "Pager server"
+#~ msgstr "Servidor de cercapersones"
+
+#~ msgid "Yahoo Chat server"
+#~ msgstr "Servidor de xat de Yahoo"
+
+#~ msgid "Yahoo Chat port"
+#~ msgstr "Port del xat de Yahoo"
 
 #~ msgid "Error creating conference."
 #~ msgstr "S'ha produït un error en crear la conferència."
@@ -15372,13 +15362,13 @@
 #~ msgstr "No s'ha pogut crear el sòcol: %s"
 
 #~ msgid "%s just sent you a Nudge!"
-#~ msgstr "%s vos ha donat un cop de colze!"
+#~ msgstr "%s us ha donat un cop de colze!"
 
 #~ msgid "Friendly name changes too rapidly"
 #~ msgstr "El nom amistós canvia massa de pressa"
 
 #~ msgid "This Hotmail account may not be active."
-#~ msgstr "Pot ser que este compte Hotmail no siga actiu."
+#~ msgstr "Pot ser que aquest compte Hotmail no sigui actiu."
 
 #~ msgid "Profile URL"
 #~ msgstr "URL del perfil"
@@ -15420,10 +15410,10 @@
 #~ msgstr "No s'ha pogut suprimir el grup"
 
 #~ msgid "%s has added you to his or her buddy list."
-#~ msgstr "%s vos ha afegit a la seua llista d'amics."
+#~ msgstr "%s us ha afegit a la seva llista d'amics."
 
 #~ msgid "%s has removed you from his or her buddy list."
-#~ msgstr "%s vos ha suprimit de la seua llista d'amics."
+#~ msgstr "%s us ha suprimit de la seva llista d'amics."
 
 #~ msgid ""
 #~ "<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
@@ -15458,7 +15448,7 @@
 #~ "\n"
 #~ "%s"
 #~ msgstr ""
-#~ "S'ha produït un error en alçar la imatge\n"
+#~ "S'ha produït un error en desar la imatge\n"
 #~ "\n"
 #~ "%s"
 
@@ -15469,7 +15459,7 @@
 #~ "Failed to load image '%s': reason not known, probably a corrupt image file"
 #~ msgstr ""
 #~ "No s'ha pogut carregar la imatge «%s»: no se'n coneix el motiu, "
-#~ "possiblement la imatge estiga corrompuda"
+#~ "possiblement la imatge estigui corrompuda"
 
 # FIXME: stanza -> estrofa (literal) (Josep)
 #~ msgid "Insert an <iq/> stanza."
@@ -16946,9 +16936,6 @@
 #~ msgid "_Deny"
 #~ msgstr "_Denega"
 
-#~ msgid "Invalid Username"
-#~ msgstr "El nom d'usuari no és vàlid"
-
 #~ msgid "<b>Alias:</b> %s<br>"
 #~ msgstr "<b>Àlies:</b> %s<br>"
 
--- a/po/de.po	Fri Apr 23 16:58:03 2010 +0000
+++ b/po/de.po	Mon May 10 23:21:44 2010 +0000
@@ -11,8 +11,8 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-29 00:12-0700\n"
-"PO-Revision-Date: 2010-02-11 21:02+0100\n"
+"POT-Creation-Date: 2010-05-09 16:11+0200\n"
+"PO-Revision-Date: 2010-05-09 16:05+0200\n"
 "Last-Translator: Björn Voigt <bjoern@cs.tu-berlin.de>\n"
 "Language-Team: Deutsch <de@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -1360,8 +1360,6 @@
 msgid "Saved Statuses"
 msgstr "Gespeicherter Status"
 
-#. title
-#. optional information
 msgid "Title"
 msgstr "Titel"
 
@@ -1657,6 +1655,14 @@
 msgid "Set User Info"
 msgstr "Benutzer-Info setzen"
 
+msgid "This protocol does not support setting a public alias."
+msgstr ""
+"Dieses Protokoll unterstützt das Setzen eines öffentlichen Alias nicht."
+
+msgid "This protocol does not support fetching the public alias."
+msgstr ""
+"Dieses Protokoll unterstützt nicht das Abrufen von öffentlichen Aliasen."
+
 msgid "Unknown"
 msgstr "Unbekannt"
 
@@ -3811,15 +3817,6 @@
 msgid "execute"
 msgstr "Ausführen"
 
-msgid "Server requires TLS/SSL, but no TLS/SSL support was found."
-msgstr ""
-"Der Server benötigt TLS/SSL, es wurde aber kein TLS/SSL-Support gefunden."
-
-msgid "You require encryption, but no TLS/SSL support was found."
-msgstr ""
-"Sie fordern Verschlüsselung, aber es wurde keine TLS/SSL-Unterstützung "
-"gefunden."
-
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr ""
 "Der Server erfordert eine Klartext-Authentifizierung über einen "
@@ -3863,6 +3860,41 @@
 msgid "SASL error: %s"
 msgstr "SASL-Fehler: %s"
 
+msgid "Invalid Encoding"
+msgstr "Ungültige Kodierung"
+
+msgid "Unsupported Extension"
+msgstr "Nicht-unterstützte Erweiterung"
+
+msgid ""
+"Unexpected response from the server.  This may indicate a possible MITM "
+"attack"
+msgstr ""
+"Unerwartete Antwort vom Server.  Das kann auf eine mögliche MITM-Attacke "
+"hindeuten"
+
+msgid ""
+"The server does support channel binding, but did not appear to advertise "
+"it.  This indicates a likely MITM attack"
+msgstr ""
+"Der Server unterstützt Kanalbindung, aber er macht das nicht bekannt.  Das "
+"deuted auf eine wahrscheinliche MITM-Attacke hin"
+
+msgid "Server does not support channel binding"
+msgstr "Server unterstützt keine Kanalbindung"
+
+msgid "Unsupported channel binding method"
+msgstr "Nicht-unterstützte Kanalbindungsmethode"
+
+msgid "User not found"
+msgstr "Benutzer nicht gefunden"
+
+msgid "Invalid Username Encoding"
+msgstr "Ungültig Kodierung des Benutzernamens"
+
+msgid "Resource Constraint"
+msgstr "Ressourcen-Einschränkung"
+
 msgid "Unable to canonicalize username"
 msgstr "Benutzername konnte nicht in Normalform gebracht werden"
 
@@ -3940,6 +3972,11 @@
 msgid "Organization Unit"
 msgstr "Organisationseinheit"
 
+#. title
+#. optional information
+msgid "Job Title"
+msgstr "Beruf"
+
 msgid "Role"
 msgstr "Funktion"
 
@@ -4163,12 +4200,24 @@
 msgid "Roles:"
 msgstr "Rollen:"
 
+msgid "Server requires TLS/SSL, but no TLS/SSL support was found."
+msgstr ""
+"Der Server benötigt TLS/SSL, es wurde aber kein TLS/SSL-Support gefunden."
+
+msgid "You require encryption, but no TLS/SSL support was found."
+msgstr ""
+"Sie fordern Verschlüsselung, aber es wurde keine TLS/SSL-Unterstützung "
+"gefunden."
+
 msgid "Ping timed out"
 msgstr "Ping-Zeitüberschreitung"
 
 msgid "Invalid XMPP ID"
 msgstr "Ungültige XMPP-ID"
 
+msgid "Invalid XMPP ID. Username portion must be set."
+msgstr "Falsche XMPP-ID. Der Benutzername muss gesetzt werden."
+
 msgid "Invalid XMPP ID. Domain must be set."
 msgstr "Falsche XMPP-ID. Die Domain muss gesetzt werden."
 
@@ -4289,11 +4338,11 @@
 msgstr "Ausstehend"
 
 msgid "None (To pending)"
-msgstr "Nein (ausgehend unbestätigt)"
+msgstr "Keine (ausgehend unbestätigt)"
 
 #. 0
 msgid "None"
-msgstr "Nein"
+msgstr "Keine"
 
 #. subscription type
 msgid "Subscription"
@@ -4305,14 +4354,18 @@
 msgid "Allow Buzz"
 msgstr "Anklopfen erlauben"
 
-#, fuzzy
 msgid "Mood Name"
-msgstr "Zweiter Name"
-
-#, fuzzy
+msgstr "Name der Stimmung"
+
 msgid "Mood Comment"
-msgstr "Buddy-Kommentar"
-
+msgstr "Stimmungskommentar"
+
+#. primitive
+#. ID
+#. name - use default
+#. saveable
+#. should be user_settable some day
+#. independent
 msgid "Tune Artist"
 msgstr "Künstler anpassen"
 
@@ -4483,9 +4536,6 @@
 msgid "Remote Connection Failed"
 msgstr "Entfernte Verbindung fehlgeschlagen"
 
-msgid "Resource Constraint"
-msgstr "Eingeschränkte Ressourcen"
-
 msgid "Restricted XML"
 msgstr "Eingeschränktes XML"
 
@@ -4603,9 +4653,8 @@
 msgid "Initiate Media"
 msgstr "Initiiere Medien"
 
-#, fuzzy
 msgid "Account does not support PEP, can't set mood"
-msgstr "Dieses Protokoll unterstützt keine Chaträume."
+msgstr "Konto unterstützt kein PEP, kann die Stimmung nicht setzen"
 
 msgid "config:  Configure a chat room."
 msgstr "config:  Konfiguriere einen Chatraum."
@@ -4663,9 +4712,8 @@
 msgid "buzz: Buzz a user to get their attention"
 msgstr "buzz: Einen Kontakt anrufen, um seine Aufmerksamkeit zu erhalten"
 
-#, fuzzy
 msgid "mood: Set current user mood"
-msgstr "Wählen Sie den richtigen Benutzer"
+msgstr "mood: Setze die aktuelle Benutzerstimmung"
 
 msgid "Extended Away"
 msgstr "Abwesend (erweitert)"
@@ -4749,13 +4797,13 @@
 "werden."
 
 msgid "XMPP stream header missing"
-msgstr ""
+msgstr "Der XMPP-Datenstromkopf fehlt"
 
 msgid "XMPP Version Mismatch"
-msgstr ""
+msgstr "XMPP-Versionskonflikt"
 
 msgid "XMPP stream missing ID"
-msgstr ""
+msgstr "Fehlende ID im XMPP-Datenstrom"
 
 msgid "XML Parse error"
 msgstr "Fehler beim Einlesen von XML-Daten"
@@ -4834,32 +4882,27 @@
 msgstr ""
 "Bitte wählen Sie die Ressource von %s, an die Sie eine Datei schicken möchten"
 
-#, fuzzy
 msgid "Afraid"
-msgstr "Arabisch"
-
-#, fuzzy
+msgstr "Ängstlich, besorgt"
+
 msgid "Amazed"
-msgstr "Beschämt"
-
-#, fuzzy
+msgstr "Verblüfft"
+
 msgid "Amorous"
-msgstr "Glorreich"
+msgstr "Sinnlich"
 
 #. 1
 msgid "Angry"
 msgstr "Verärgert"
 
-#, fuzzy
 msgid "Annoyed"
-msgstr "Verbannt"
+msgstr "Ärgerlich"
 
 msgid "Anxious"
-msgstr "Besorgt"
-
-#, fuzzy
+msgstr "Ängstlich, unruhig"
+
 msgid "Aroused"
-msgstr "Sie senden"
+msgstr "Aufgerüttelt"
 
 msgid "Ashamed"
 msgstr "Beschämt"
@@ -4867,243 +4910,201 @@
 msgid "Bored"
 msgstr "Gelangweilt"
 
-#, fuzzy
 msgid "Brave"
-msgstr "Speichern"
-
-#, fuzzy
+msgstr "Tapfer"
+
 msgid "Calm"
-msgstr "Realm"
-
-#, fuzzy
+msgstr "Beruhigt"
+
 msgid "Cautious"
-msgstr "Chats"
-
-#, fuzzy
+msgstr "Zurückhaltend"
+
 msgid "Cold"
-msgstr "Fett"
-
-#, fuzzy
+msgstr "Unterkühlt"
+
 msgid "Confident"
-msgstr "Konflikt"
-
-#, fuzzy
+msgstr "Zuversichtlich"
+
 msgid "Confused"
-msgstr "Fortfahren"
-
-#, fuzzy
+msgstr "Verwirrt"
+
 msgid "Contemplative"
-msgstr "Kontakt"
-
-#, fuzzy
+msgstr "Nachdenklich"
+
 msgid "Contented"
-msgstr "Verbunden"
-
-#, fuzzy
+msgstr "Zufrieden"
+
 msgid "Cranky"
-msgstr "Firma"
+msgstr "Schrullig"
 
 msgid "Crazy"
-msgstr ""
-
-#, fuzzy
+msgstr "Verrückt"
+
 msgid "Creative"
-msgstr "Erzeugen"
-
-#, fuzzy
+msgstr "Kreativ"
+
 msgid "Curious"
-msgstr "Glorreich"
-
-#, fuzzy
+msgstr "Neugierig"
+
 msgid "Dejected"
-msgstr "Abgelehnt"
-
-#, fuzzy
+msgstr "Niedergeschlagen"
+
 msgid "Depressed"
-msgstr "Gelöscht"
-
-#, fuzzy
+msgstr "Deprimiert"
+
 msgid "Disappointed"
-msgstr "Verbindung unterbrochen."
+msgstr "Enttäuscht"
 
 msgid "Disgusted"
-msgstr ""
-
-#, fuzzy
+msgstr "Empört"
+
 msgid "Dismayed"
-msgstr "Deaktiviert"
-
-#, fuzzy
+msgstr "Bestürzt"
+
 msgid "Distracted"
-msgstr "Unbeteiligt"
+msgstr "Abgelenkt"
 
 msgid "Embarrassed"
-msgstr ""
-
-#, fuzzy
+msgstr "Verlegen"
+
 msgid "Envious"
-msgstr "Besorgt"
+msgstr "Neidisch"
 
 #. 2
 msgid "Excited"
 msgstr "Aufgeregt"
 
-#, fuzzy
 msgid "Flirtatious"
-msgstr "Glorreich"
+msgstr "Verführerisch"
 
 # old strings
-#, fuzzy
 msgid "Frustrated"
-msgstr "Vorname"
+msgstr "Frustriert"
 
 msgid "Grateful"
-msgstr ""
-
-#, fuzzy
+msgstr "Dankbar, erkenntlich"
+
 msgid "Grieving"
-msgstr "Empfange..."
+msgstr "Trauernd"
 
 #. 3
 msgid "Grumpy"
-msgstr "Mürrisch"
-
-#, fuzzy
+msgstr "Brummig"
+
 msgid "Guilty"
-msgstr "Stadt"
+msgstr "Schuldig"
 
 #. 4
 msgid "Happy"
-msgstr "Glücklich"
+msgstr "Erfreut"
 
 msgid "Hopeful"
-msgstr ""
+msgstr "Hoffnungsvoll"
 
 #. 8
 msgid "Hot"
 msgstr "Heiß"
 
 msgid "Humbled"
-msgstr ""
+msgstr "Gedemütigt"
 
 msgid "Humiliated"
-msgstr ""
-
-#, fuzzy
+msgstr "Erniedrigt"
+
 msgid "Hungry"
-msgstr "Verärgert"
-
-#, fuzzy
+msgstr "Hungrig"
+
 msgid "Hurt"
-msgstr "Humor"
+msgstr "Verletzt"
 
 msgid "Impressed"
-msgstr ""
-
-#, fuzzy
+msgstr "Beeindruckt"
+
 msgid "In awe"
-msgstr "Verliebt"
+msgstr "Ehrfurchtsvoll"
 
 msgid "In love"
 msgstr "Verliebt"
 
-#, fuzzy
 msgid "Indignant"
-msgstr "Indonesisch"
-
-#, fuzzy
+msgstr "Entrüstet"
+
 msgid "Interested"
-msgstr "Interessen"
-
-#, fuzzy
+msgstr "Interessiert"
+
 msgid "Intoxicated"
-msgstr "Eingeladen"
+msgstr "Betrunken"
 
 #. 6
 msgid "Invincible"
-msgstr "Unerschütterlich"
+msgstr "Unbesiegbar"
 
 msgid "Jealous"
 msgstr "Eifersüchtig"
 
-#, fuzzy
 msgid "Lonely"
-msgstr "Affe"
-
-#, fuzzy
+msgstr "Einsam"
+
 msgid "Lost"
-msgstr "Am lautesten"
+msgstr "Verloren"
 
 msgid "Lucky"
-msgstr ""
-
-#, fuzzy
+msgstr "Glücklich"
+
 msgid "Mean"
-msgstr "Deutsch"
-
-#, fuzzy
+msgstr "Gemein"
+
 msgid "Moody"
-msgstr "Stimmung"
+msgstr "Launisch"
 
 msgid "Nervous"
-msgstr ""
-
-#, fuzzy
+msgstr "Reizbar"
+
 msgid "Neutral"
-msgstr "Detail"
-
-#, fuzzy
+msgstr "Gleichgültig"
+
 msgid "Offended"
-msgstr "Offline"
+msgstr "Beleidigt"
 
 msgid "Outraged"
-msgstr ""
-
-#, fuzzy
+msgstr "Empört"
+
 msgid "Playful"
-msgstr "Abspielen"
-
-#, fuzzy
+msgstr "Verspielt"
+
 msgid "Proud"
-msgstr "Laut"
-
-#, fuzzy
+msgstr "Stolz"
+
 msgid "Relaxed"
-msgstr "Echter Name"
-
-#, fuzzy
+msgstr "Entspannt"
+
 msgid "Relieved"
-msgstr "Empfangen"
-
-#, fuzzy
+msgstr "Erleichtert"
+
 msgid "Remorseful"
-msgstr "Entfernen"
-
-#, fuzzy
+msgstr "Reumütig"
+
 msgid "Restless"
-msgstr "Registrieren"
+msgstr "Ruhelos"
 
 #. 7
 msgid "Sad"
 msgstr "Traurig"
 
-#, fuzzy
 msgid "Sarcastic"
-msgstr "Marathi"
+msgstr "Sarkastisch"
 
 msgid "Satisfied"
-msgstr ""
-
-#, fuzzy
+msgstr "Befriedigt"
+
 msgid "Serious"
-msgstr "Glorreich"
-
-#, fuzzy
+msgstr "Ernsthaft"
+
 msgid "Shocked"
-msgstr "Blockiert"
+msgstr "Schockiert"
 
 msgid "Shy"
-msgstr ""
+msgstr "Schüchtern"
 
 #. 9
 msgid "Sick"
@@ -5112,43 +5113,37 @@
 #. 10
 #. Sleepy / Tired
 msgid "Sleepy"
-msgstr "Müde"
+msgstr "Schläfrig"
 
 msgid "Spontaneous"
-msgstr ""
-
-#, fuzzy
+msgstr "Spontan"
+
 msgid "Stressed"
-msgstr "Geschwindigkeit"
-
-#, fuzzy
+msgstr "Gestresst"
+
 msgid "Strong"
-msgstr "Lied"
+msgstr "Stark"
 
 msgid "Surprised"
-msgstr ""
+msgstr "Überrascht"
 
 msgid "Thankful"
-msgstr ""
+msgstr "Dankbar, froh"
 
 msgid "Thirsty"
-msgstr ""
-
-#, fuzzy
+msgstr "Durstig"
+
 msgid "Tired"
-msgstr "Fire"
-
-#, fuzzy
+msgstr "Müde"
+
 msgid "Undefined"
-msgstr "Unterstrichen"
-
-#, fuzzy
+msgstr "Undefiniert"
+
 msgid "Weak"
-msgstr "Schlag"
-
-#, fuzzy
+msgstr "Schwach"
+
 msgid "Worried"
-msgstr "Gelangweilt"
+msgstr "Besorgt, beunruhigt"
 
 msgid "Set User Nickname"
 msgstr "Setze Benutzer-Spitzname"
@@ -5516,18 +5511,6 @@
 msgid "Out to Lunch"
 msgstr "Zur Mittagspause"
 
-#. primitive
-#. ID
-#. name - use default
-#. saveable
-#. should be user_settable some day
-#. independent
-msgid "Artist"
-msgstr "Interpret"
-
-msgid "Album"
-msgstr "Album"
-
 msgid "Game Title"
 msgstr "Spieltitel"
 
@@ -5677,9 +5660,6 @@
 msgid "Work"
 msgstr "Geschäftlich"
 
-msgid "Job Title"
-msgstr "Beruf"
-
 msgid "Company"
 msgstr "Firma"
 
@@ -6719,9 +6699,6 @@
 msgid "Incorrect password"
 msgstr "Falsches Passwort"
 
-msgid "User not found"
-msgstr "Benutzer nicht gefunden"
-
 msgid "Account has been disabled"
 msgstr "Konto wurde deaktiviert"
 
@@ -6988,6 +6965,10 @@
 msgid "AOL does not allow your screen name to authenticate here"
 msgstr "AOL erlaubt Ihnen nicht, sich hier mit Ihrem Benutzernamen anzumelden"
 
+#, c-format
+msgid "Error requesting %s"
+msgstr "Fehler beim Anfordern von %s"
+
 msgid "Could not join chat room"
 msgstr "Konnte Chatraum nicht betreten"
 
@@ -6995,104 +6976,88 @@
 msgstr "Ungültiger Chatraumname"
 
 msgid "Thinking"
-msgstr ""
-
-#, fuzzy
+msgstr "Denkt nach"
+
 msgid "Shopping"
-msgstr "aufhört zu tippen"
-
-#, fuzzy
+msgstr "Kauft ein"
+
 msgid "Questioning"
-msgstr "Frage-Dialog"
-
-#, fuzzy
+msgstr "Fragt etwas"
+
 msgid "Eating"
-msgstr "Funkruf"
-
-#, fuzzy
+msgstr "Beim Essen"
+
 msgid "Watching a movie"
-msgstr "Spielt ein Spiel"
+msgstr "Schaut einen Film an"
 
 msgid "Typing"
 msgstr "Tippt gerade"
 
-#, fuzzy
 msgid "At the office"
-msgstr "Nicht im Büro"
+msgstr "Im Büro"
 
 msgid "Taking a bath"
-msgstr ""
+msgstr "Nimmt ein Bad"
 
 msgid "Watching TV"
-msgstr ""
-
-#, fuzzy
+msgstr "Schaut Fernsehen"
+
 msgid "Having fun"
-msgstr "Auflegen"
-
-#, fuzzy
+msgstr "Hat Spaß"
+
 msgid "Sleeping"
-msgstr "Müde"
+msgstr "Schläft"
 
 msgid "Using a PDA"
-msgstr ""
-
-#, fuzzy
+msgstr "Benutzt einen PDA"
+
 msgid "Meeting friends"
-msgstr "IM-Freunde"
-
-#, fuzzy
+msgstr "Freunde treffen"
+
 msgid "On the phone"
 msgstr "Am Telefon"
 
-#, fuzzy
 msgid "Surfing"
-msgstr "Wiederkehrend"
+msgstr "Surft"
 
 #. "I am mobile." / "John is mobile."
 msgid "Mobile"
-msgstr "Mobil"
+msgstr "Ist mobil"
 
 msgid "Searching the web"
-msgstr ""
+msgstr "Sucht etwas im Web"
 
 msgid "At a party"
-msgstr ""
+msgstr "Auf einer Party"
 
 msgid "Having Coffee"
-msgstr ""
+msgstr "Trinkt Kaffee"
 
 #. Playing video games
-#, fuzzy
 msgid "Gaming"
-msgstr "Zwillinge"
+msgstr "Spielt am PC"
 
 msgid "Browsing the web"
-msgstr ""
-
-#, fuzzy
+msgstr "Surft im Web"
+
 msgid "Smoking"
-msgstr "Lied"
-
-#, fuzzy
+msgstr "Raucht"
+
 msgid "Writing"
-msgstr "Arbeitet"
+msgstr "Schreibt"
 
 #. Drinking [Alcohol]
-#, fuzzy
 msgid "Drinking"
-msgstr "Arbeitet"
+msgstr "Trinkt"
 
 msgid "Listening to music"
 msgstr "Musik hören"
 
-#, fuzzy
 msgid "Studying"
-msgstr "Sende"
-
-#, fuzzy
+msgstr "Lernt"
+
 msgid "In the restroom"
-msgstr "Interessen"
+msgstr "Auf der Toilette"
 
 msgid "Received invalid data on connection with server"
 msgstr "Ungültige Daten in der Verbindung mit dem Server empfangen"
@@ -7311,7 +7276,7 @@
 msgstr "Spiele"
 
 msgid "ICQ Xtraz"
-msgstr ""
+msgstr "ICQ Xtraz"
 
 msgid "Add-Ins"
 msgstr "Zusätze"
@@ -7379,23 +7344,18 @@
 msgid "Invisible"
 msgstr "Unsichtbar"
 
-#, fuzzy
 msgid "Evil"
-msgstr "E-Mail"
-
-#, fuzzy
+msgstr "Böse"
+
 msgid "Depression"
-msgstr "Beruf"
-
-#, fuzzy
+msgstr "Depression"
+
 msgid "At home"
-msgstr "Über mich"
-
-#, fuzzy
+msgstr "Zu Hause"
+
 msgid "At work"
-msgstr "Netzwerk"
-
-#, fuzzy
+msgstr "Bei der Arbeit"
+
 msgid "At lunch"
 msgstr "Zur Mittagspause"
 
@@ -7936,9 +7896,8 @@
 msgid "iTunes Music Store Link"
 msgstr "iTunes Music Store Link"
 
-#, fuzzy
 msgid "Lunch"
-msgstr "Finch"
+msgstr "Mittagspause"
 
 #, c-format
 msgid "Buddy Comment for %s"
@@ -7971,9 +7930,8 @@
 msgid "Edit Buddy Comment"
 msgstr "Buddy-Kommentar bearbeiten"
 
-#, fuzzy
 msgid "Get X-Status Msg"
-msgstr "Abwesenheitsmitteilung abrufen"
+msgstr "X-Status-Nachricht abrufen"
 
 msgid "End Direct IM Session"
 msgstr "Direkt-IM-Sitzung beenden"
@@ -8384,6 +8342,10 @@
 msgid "Admin"
 msgstr "Admin"
 
+#. XXX: Should this be "Topic"?
+msgid "Room Title"
+msgstr "Raumtitel"
+
 msgid "Notice"
 msgstr "Bemerkung"
 
@@ -10311,9 +10273,6 @@
 msgid "Yahoo! Protocol Plugin"
 msgstr "Yahoo!-Protokoll-Plugin"
 
-msgid "Pager server"
-msgstr "Pager-Server"
-
 msgid "Pager port"
 msgstr "Pager-Port"
 
@@ -10335,12 +10294,6 @@
 msgid "Chat room list URL"
 msgstr "Chatraumliste (URL)"
 
-msgid "Yahoo Chat server"
-msgstr "Yahoo-Chat-Server"
-
-msgid "Yahoo Chat port"
-msgstr "Yahoo-Chat-Port"
-
 msgid "Yahoo JAPAN ID..."
 msgstr "Yahoo-JAPAN-ID..."
 
@@ -10409,6 +10362,15 @@
 "Konto gesperrt: Unbekannter Grund. Eventuell können Sie dies beheben, wenn "
 "Sie sich auf der Yahoo!-Webseite anmelden."
 
+#. indicates a lock due to logging in too frequently
+msgid ""
+"Account locked: You have been logging in too frequently.  Wait a few minutes "
+"before trying to connect again.  Logging into the Yahoo! website may help."
+msgstr ""
+"Konto gesperrt: Zu viele fehlgeschlagene Login-Versuche. Warten Sie einige "
+"Minuten bevor Sie erneut versuchen sich zu verbinden. Eventuell können Sie "
+"dies beheben, wenn Sie sich auf der Yahoo!-Webseite anmelden."
+
 #. username or password missing
 msgid "Username or password missing"
 msgstr "Benutzername oder Passwort fehlt"
@@ -10489,6 +10451,16 @@
 msgid "Unable to establish a connection with %s: %s"
 msgstr "Die Verbindung mit %s konnte nicht hergestellt werden: %s"
 
+msgid "Unable to connect: The server returned an empty response."
+msgstr "Verbindung fehlgeschlagen: Der Server lieferte eine leere Antwort."
+
+msgid ""
+"Unable to connect: The server's response did not contain the necessary "
+"information"
+msgstr ""
+"Verbindung fehlgeschlagen: Die Antwort des Servers enthielt nicht die "
+"nötigen Informationen"
+
 msgid "Not at Home"
 msgstr "Nicht zu Hause"
 
@@ -10879,6 +10851,10 @@
 #. *
 #. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
 #.
+#. *
+#. * A wrapper for purple_request_action_with_icon() that uses Accept and Cancel
+#. * buttons.
+#.
 msgid "_Accept"
 msgstr "_Akzeptieren"
 
@@ -10945,9 +10921,8 @@
 msgid "Extended away"
 msgstr "Länger abwesend"
 
-#, fuzzy
 msgid "Feeling"
-msgstr "Empfange"
+msgstr "Befinden"
 
 #, c-format
 msgid "%s (%s) changed status from %s to %s"
@@ -11120,12 +11095,6 @@
 msgid "Pidgin Internet Messenger"
 msgstr "Pidgin Internet-Sofortnachrichtendienst"
 
-msgid "Orientation"
-msgstr "Ausrichtung"
-
-msgid "The orientation of the tray."
-msgstr "Die Ausrichtung der Kontrollleiste."
-
 #. Build the login options frame.
 msgid "Login Options"
 msgstr "Anmeldeoptionen"
@@ -11499,13 +11468,11 @@
 msgid "Unknown node type"
 msgstr "Unbekannter Knotentyp"
 
-#, fuzzy
 msgid "Please select your mood from the list"
-msgstr "Bitte setzen Sie eine Stimmung aus der Liste."
-
-#, fuzzy
+msgstr "Bitte wählen Sie Ihre Stimmung aus der Liste"
+
 msgid "Message (optional)"
-msgstr "Alias (optional)"
+msgstr "Nachricht (optional)"
 
 msgid "Edit User Mood"
 msgstr "Benutzerstimmung ändern"
@@ -11588,9 +11555,8 @@
 msgid "/Tools/Pr_ivacy"
 msgstr "/Werkzeuge/Pri_vatsphäre"
 
-#, fuzzy
 msgid "/Tools/Set _Mood"
-msgstr "/Werkzeuge/_System-Mitschnitt"
+msgstr "/Werkzeuge/Setze _Stimmung"
 
 msgid "/Tools/_File Transfers"
 msgstr "/Werkzeuge/_Dateiübertragungen"
@@ -11611,20 +11577,17 @@
 msgid "/Help/Online _Help"
 msgstr "/Hilfe/Online-_Hilfe"
 
-#, fuzzy
 msgid "/Help/_Build Information"
-msgstr "Buddy-Information"
+msgstr "/Hilfe/_Build-Informationen"
 
 msgid "/Help/_Debug Window"
 msgstr "/Hilfe/_Debug-Fenster"
 
-#, fuzzy
 msgid "/Help/De_veloper Information"
-msgstr "Serverinformation"
-
-#, fuzzy
+msgstr "/Hilfe/_Entwickler-Informationen"
+
 msgid "/Help/_Translator Information"
-msgstr "Persönliche Informationen"
+msgstr "/Hilfe/Ü_bersetzer-Informationen"
 
 msgid "/Help/_About"
 msgstr "/Hilfe/Ü_ber"
@@ -11855,9 +11818,8 @@
 msgid "_Edit Account"
 msgstr "Konto _bearbeiten"
 
-#, fuzzy
 msgid "Set _Mood..."
-msgstr "Setze Stimmung..."
+msgstr "Setze _Stimmung..."
 
 msgid "No actions available"
 msgstr "Keine Aktionen verfügbar"
@@ -11979,9 +11941,8 @@
 msgid "/Conversation/Se_nd File..."
 msgstr "/Unterhaltung/Datei _senden..."
 
-#, fuzzy
 msgid "/Conversation/Get _Attention"
-msgstr "/Unterhaltung/Info abrufen"
+msgstr "/Unterhaltung/_Aufmerksamkeit erregen"
 
 msgid "/Conversation/Add Buddy _Pounce..."
 msgstr "/Unterhaltung/_Buddy-Alarm hinzufügen..."
@@ -12064,9 +12025,8 @@
 msgid "/Conversation/Send File..."
 msgstr "/Unterhaltung/Datei senden ..."
 
-#, fuzzy
 msgid "/Conversation/Get Attention"
-msgstr "/Unterhaltung/Info abrufen"
+msgstr "/Unterhaltung/Aufmerksamkeit erregen"
 
 msgid "/Conversation/Add Buddy Pounce..."
 msgstr "/Unterhaltung/Buddy-Alarm hinzufügen..."
@@ -12132,13 +12092,11 @@
 msgid "0 people in room"
 msgstr "0 Personen im Raum"
 
-#, fuzzy
 msgid "Close Find bar"
-msgstr "Diesen Reiter schließen"
-
-#, fuzzy
+msgstr "Suchleiste schließen"
+
 msgid "Find:"
-msgstr "Suchen"
+msgstr "Suchen:"
 
 #, c-format
 msgid "%d person in room"
@@ -12311,6 +12269,9 @@
 msgid "Bengali"
 msgstr "Bengalisch"
 
+msgid "Bengali-India"
+msgstr "Bengalisch"
+
 msgid "Bosnian"
 msgstr "Bosnisch"
 
@@ -12533,7 +12494,7 @@
 msgid "Lithuanian"
 msgstr "Litauisch"
 
-#, 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 "
@@ -12542,15 +12503,14 @@
 "copyrighted by its contributors, a list of whom is also distributed with %"
 "s.  There is no warranty for %s.<BR><BR>"
 msgstr ""
-"%s ist ein grafischer modularer Nachrichtendienst, basierend auf libpurple, "
-"der AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, "
-"Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu und QQ gleichzeitig "
-"unterstützt.  Er wird mit GTK+ entwickelt.<BR><BR>Sie können das Programm "
-"nach den Bedingungen der GPL (Version 2 oder später) modifizieren und "
-"weitergeben.  Eine Kopie der GPL ist in der Datei 'COPYING' enthalten, die "
-"mit %s ausgeliefert wird.  %s wird von seinen Mitwirkenden urheberrechtlich "
-"geschützt.  Die Datei 'COPYRIGHT' enthält die komplette Liste der "
-"Mitwirkenden.  Wir übernehmen keine Haftung für dieses Programm.<BR><BR>"
+"%s ist ein Nachrichtendienst, basierend auf libpurple, der die Verbindung zu "
+"mehreren Nachrichtendiensten gleichzeitig unterstützt.  %s wird in C "
+"programmiert und nutzt GTK+.  %s ist nach den Bedingungen der GPL (Version 2 "
+"oder später) freigegeben und darf gemäß dieser bearbeitet und weiter "
+"verbreitet werden.  Eine Kopie der GPL wird mit %s ausgeliefert.  %s wird "
+"von seinen Mitwirkenden urheberrechtlich geschützt.  Eine komplette Liste "
+"der Mitwirkenden wird mit %s ausgeliefert.  Wir übernehmen keine Haftung für "
+"%s.<BR><BR>"
 
 #, c-format
 msgid ""
@@ -12559,8 +12519,12 @@
 "Channel: #pidgin on irc.freenode.net<BR>\tXMPP MUC: devel@conference.pidgin."
 "im<BR><BR>"
 msgstr ""
-
-#, fuzzy, c-format
+"<FONT SIZE=\"4\"><B>Hilfreiche Quellen</B></FONT><BR>\t<A HREF=\"%s"
+"\">Webseite</A><BR>\t<A HREF=\"%s\">Häufig gestellte Fragen (FAQ)</A><BR>"
+"\tIRC-Channel: #pidgin auf 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/"
@@ -12570,31 +12534,31 @@
 "welcome to post in another language, but the responses may be less helpful."
 "<br/>"
 msgstr ""
-"<font size=\"4\">Hilfe von anderen Pidgin-Benutzern:</font> <a href=\"mailto:"
-"support@pidgin.im\">support@pidgin.im</a><br/>Dies ist eine <b>öffentliche</"
-"b> Mailing-Liste! (<a href=\"http://pidgin.im/pipermail/support/\">Archiv</"
-"a>)<br/>Wir können nicht bei Problemen mit Drittanbieter-Protokollen oder "
-"Plugins helfen!<br/>Die Hauptsprache dieser Liste ist <b>Englisch</b>.  Sie "
-"können gern in einer anderen Sprache schreiben, aber die Antworten könnten "
-"weniger hilfreich sein.<br/>Deutschsprachige Benutzer können auch das Portal "
-"<a href=\"http://www.pidgin-im.de/\">Pidgin-IM.de</a> nutzen.  Dort finden "
-"Sie aktuelle Informationen zu Pidgin, können mit anderen Benutzern im <a "
-"href=\"http://forum.pidgin-im.de/\">Forum</a> diskutieren und Hilfe zu "
-"Problemen finden.  Beachten Sie, dass dieses Portal unabhängig vom "
-"offiziellen Pidgin-Projekt ist.<br/><br/>"
+"<font size=\"4\"><b>Hilfe von anderen Pidgin-Benutzern</b></font> erhält man "
+"per E-Mail an <a href=\"mailto:support@pidgin.im\">support@pidgin.im</a><br/"
+">Dies ist eine <b>öffentliche</b> Mailing-Liste! (<a href=\"http://pidgin.im/"
+"pipermail/support/\">Archiv</a>)<br/>Wir können nicht bei Problemen mit "
+"Drittanbieter-Protokollen oder Plugins helfen!<br/>Die Hauptsprache dieser "
+"Liste ist <b>Englisch</b>.  Sie können gern in einer anderen Sprache "
+"schreiben, aber die Antworten könnten weniger hilfreich sein.<br/"
+">Deutschsprachige Benutzer können auch das Portal <a href=\"http://www."
+"pidgin-im.de/\">Pidgin-IM.de</a> nutzen.  Dort finden Sie aktuelle "
+"Informationen zu Pidgin, können mit anderen Benutzern im <a href=\"http://"
+"forum.pidgin-im.de/\">Forum</a> diskutieren und Hilfe zu Problemen finden.  "
+"Beachten Sie, dass dieses Portal unabhängig vom offiziellen Pidgin-Projekt "
+"ist.<br/><br/>"
 
 #, c-format
 msgid "About %s"
 msgstr "Über %s"
 
-#, fuzzy
 msgid "Build Information"
-msgstr "Buddy-Information"
+msgstr "Build-Informationen"
 
 #. End of not to be translated section
-#, fuzzy, c-format
+#, c-format
 msgid "%s Build Information"
-msgstr "Buddy-Information"
+msgstr "%s-Build-Informationen"
 
 msgid "Current Developers"
 msgstr "Aktuelle Entwickler"
@@ -12608,9 +12572,9 @@
 msgid "Retired Crazy Patch Writers"
 msgstr "Zurückgetretene verrückte Patchschreiber"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Developer Information"
-msgstr "Serverinformation"
+msgstr "%s-Entwickler-Informationen"
 
 msgid "Current Translators"
 msgstr "Aktuelle Übersetzer"
@@ -12618,9 +12582,9 @@
 msgid "Past Translators"
 msgstr "Frühere Übersetzer"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Translator Information"
-msgstr "Mehr Informationen"
+msgstr "%s-Übersetzer-Informationen"
 
 msgid "_Name"
 msgstr "_Name"
@@ -12871,7 +12835,7 @@
 "Farbe, mit der der Name in einer empfangenen Nachricht dargestellt wird."
 
 msgid "\"Attention\" Name Color"
-msgstr "Farbe des Absendernamens für „Achtung“-Nachrichten"
+msgstr "Farbe des Absendernamens für „Aufmerksamkeits“-Nachrichten"
 
 msgid "Color to draw the name of a message you received containing your name."
 msgstr ""
@@ -13042,9 +13006,8 @@
 msgid "Insert Smiley"
 msgstr "Smiley einfügen"
 
-#, fuzzy
 msgid "Send Attention"
-msgstr "Senden-Knopf"
+msgstr "Aufmerksamkeitsgesuch senden"
 
 msgid "<b>_Bold</b>"
 msgstr "<b>_Fett</b>"
@@ -13092,7 +13055,7 @@
 msgstr "_Lächeln!"
 
 msgid "_Attention!"
-msgstr ""
+msgstr "_Aufmerksamkeit!"
 
 msgid "Log Deletion Failed"
 msgstr "Löschen des Mitschnitts fehlgeschlagen"
@@ -14040,9 +14003,8 @@
 msgid "Custom Smiley Manager"
 msgstr "Verwaltung für benutzerdefinierte Smileys"
 
-#, fuzzy
 msgid "Attention received"
-msgstr "Aktivierung erforderlich"
+msgstr "Aufmerksamkeitsgesuch erhalten"
 
 msgid "Select Buddy Icon"
 msgstr "Buddy-Icon auswählen"
@@ -14404,7 +14366,7 @@
 "<b>Description:</b> "
 msgstr ""
 "\n"
-"<b>Beschreibung:</b>"
+"<b>Beschreibung:</b> "
 
 #. Create the window.
 msgid "Service Discovery"
@@ -15189,8 +15151,17 @@
 msgstr "Zeitstempelformat-Optionen"
 
 #, c-format
-msgid "_Force 24-hour time format"
-msgstr "_Erzwinge 24-Stunden Zeitformat"
+msgid "_Force timestamp format:"
+msgstr "_Erzwinge Zeitformat:"
+
+msgid "Use system default"
+msgstr "System-Vorgabe verwenden"
+
+msgid "12 hour time format"
+msgstr "12-Stunden-Zeitformat"
+
+msgid "24 hour time format"
+msgstr "24-Stunden-Zeitformat"
 
 msgid "Show dates in..."
 msgstr "Zeige Datumsangaben in..."
@@ -15391,11 +15362,31 @@
 msgstr "Sendet und empfängt RAW-XMPP-Blöcke."
 
 #. *  description
-#, fuzzy
 msgid "This plugin is useful for debugging XMPP servers or clients."
 msgstr ""
 "Dieses Plugin ist nützlich zur Fehlersuche in XMPP-Servern oder -Clients."
 
+#~ msgid "Artist"
+#~ msgstr "Interpret"
+
+#~ msgid "Album"
+#~ msgstr "Album"
+
+#~ msgid "Pager server"
+#~ msgstr "Pager-Server"
+
+#~ msgid "Yahoo Chat server"
+#~ msgstr "Yahoo-Chat-Server"
+
+#~ msgid "Yahoo Chat port"
+#~ msgstr "Yahoo-Chat-Port"
+
+#~ msgid "Orientation"
+#~ msgstr "Ausrichtung"
+
+#~ msgid "The orientation of the tray."
+#~ msgstr "Die Ausrichtung der Kontrollleiste."
+
 #~ msgid "Error creating conference."
 #~ msgstr "Fehler beim Erstellen der Konferenz."
 
--- a/po/hu.po	Fri Apr 23 16:58:03 2010 +0000
+++ b/po/hu.po	Mon May 10 23:21:44 2010 +0000
@@ -1,17 +1,17 @@
 # Hungarian translation of pidgin.
-# Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010 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@gnome.hu>, 2005, 2006, 2007, 2008, 2009.
-# Gabor Kelemen <kelemeng at gnome dot hu>, 2009.
+# Gabor Kelemen <kelemeng at gnome dot hu>, 2009, 2010.
 msgid ""
 msgstr ""
 "Project-Id-Version: pidgin 2.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-03-29 00:17-0700\n"
-"PO-Revision-Date: 2009-11-26 13:06+0100\n"
+"POT-Creation-Date: 2010-05-08 00:53+0200\n"
+"PO-Revision-Date: 2010-05-08 00:52+0200\n"
 "Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
 "Language-Team: Hungarian <gnome at fsf dot hu>\n"
 "MIME-Version: 1.0\n"
@@ -1351,8 +1351,6 @@
 msgid "Saved Statuses"
 msgstr "Mentett állapotok"
 
-#. title
-#. optional information
 msgid "Title"
 msgstr "Beosztás"
 
@@ -1646,6 +1644,12 @@
 msgid "Set User Info"
 msgstr "Felhasználói adatok beállítása"
 
+msgid "This protocol does not support setting a public alias."
+msgstr "Ez a protokoll nem támogatja a nyilvános álnév beállítását."
+
+msgid "This protocol does not support fetching the public alias."
+msgstr "Ez a protokoll nem támogatja a nyilvános álnév lekérését."
+
 msgid "Unknown"
 msgstr "Ismeretlen"
 
@@ -1944,9 +1948,8 @@
 msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
 msgstr "%s nem szabályos fájl. A felülírása gyáva módon visszautasítva.\n"
 
-#, fuzzy
 msgid "File is not readable."
-msgstr "A könyvtár nem írható."
+msgstr "A fájl nem olvasható."
 
 #, c-format
 msgid "%s wants to send you %s (%s)"
@@ -3794,14 +3797,6 @@
 msgid "execute"
 msgstr "végrehajtás"
 
-msgid "Server requires TLS/SSL, but no TLS/SSL support was found."
-msgstr ""
-"A kiszolgáló megköveteli a TLS/SSL használatát, de ezek támogatása nem "
-"található."
-
-msgid "You require encryption, but no TLS/SSL support was found."
-msgstr "Megköveteli a titkosítást, de a TLS/SSL támogatás nem található."
-
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr ""
 "A kiszolgáló szöveges hitelesítést követel meg egy nem titkosított csatornán"
@@ -3831,7 +3826,7 @@
 msgstr "Érvénytelen hívás a kiszolgálótól"
 
 msgid "Server thinks authentication is complete, but client does not"
-msgstr ""
+msgstr "A kiszolgáló szerint a hitelesítés kész, a kliens szerint nem"
 
 msgid "SASL authentication failed"
 msgstr "A SASL hitelesítés meghiúsult"
@@ -3840,21 +3835,51 @@
 msgid "SASL error: %s"
 msgstr "SASL hiba: %s"
 
-#, fuzzy
+msgid "Invalid Encoding"
+msgstr "Érvénytelen kódolás"
+
+msgid "Unsupported Extension"
+msgstr "Nem támogatott kiterjesztés"
+
+msgid ""
+"Unexpected response from the server.  This may indicate a possible MITM "
+"attack"
+msgstr ""
+"Váratlan válasz a kiszolgálótól. Ez közbeékelődéses (MITM) támadást jelezhet."
+
+msgid ""
+"The server does support channel binding, but did not appear to advertise "
+"it.  This indicates a likely MITM attack"
+msgstr ""
+"A kiszolgáló támogatja a csatornakapcsolást, de nem hirdeti ezt. Ez "
+"közbeékelődéses (MITM) támadást jelezhet."
+
+msgid "Server does not support channel binding"
+msgstr "A kiszolgáló nem támogatja a csatornakapcsolást"
+
+msgid "Unsupported channel binding method"
+msgstr "Nem támogatott csatornakapcsolási módszer"
+
+msgid "User not found"
+msgstr "A felhasználó nem található"
+
+msgid "Invalid Username Encoding"
+msgstr "Érvénytelen felhasználónév-kódolás"
+
+msgid "Resource Constraint"
+msgstr "Erőforrás-megszorítás"
+
 msgid "Unable to canonicalize username"
-msgstr "A beállítás sikertelen"
-
-#, fuzzy
+msgstr "A felhasználónév kanonizálása sikertelen"
+
 msgid "Unable to canonicalize password"
-msgstr "Nem nyitható meg figyelőport."
-
-#, fuzzy
+msgstr "A jelszó kanonizálása sikertelen"
+
 msgid "Malicious challenge from server"
-msgstr "Érvénytelen hívás a kiszolgálótól"
-
-#, fuzzy
+msgstr "Rosszindulatú hívás a kiszolgálótól"
+
 msgid "Unexpected response from server"
-msgstr "Váratlan HTTP válasz érkezett a kiszolgálótól"
+msgstr "Váratlan válasz a kiszolgálótól"
 
 msgid "The BOSH connection manager terminated your session."
 msgstr "A BOSH kapcsolatkezelő megszakította a munkamenetét."
@@ -3921,6 +3946,11 @@
 msgid "Organization Unit"
 msgstr "Szervezeti egység"
 
+#. title
+#. optional information
+msgid "Job Title"
+msgstr "Beosztás"
+
 msgid "Role"
 msgstr "Funkció"
 
@@ -3956,9 +3986,8 @@
 msgid "Resource"
 msgstr "Erőforrás"
 
-#, fuzzy
 msgid "Uptime"
-msgstr "Frissítés"
+msgstr "Működési idő"
 
 msgid "Logged Off"
 msgstr "Kijelentkezett"
@@ -4142,12 +4171,23 @@
 msgid "Roles:"
 msgstr "Szerepek:"
 
+msgid "Server requires TLS/SSL, but no TLS/SSL support was found."
+msgstr ""
+"A kiszolgáló megköveteli a TLS/SSL használatát, de ezek támogatása nem "
+"található."
+
+msgid "You require encryption, but no TLS/SSL support was found."
+msgstr "Megköveteli a titkosítást, de a TLS/SSL támogatás nem található."
+
 msgid "Ping timed out"
 msgstr "A ping túllépte az időkorlátot"
 
 msgid "Invalid XMPP ID"
 msgstr "Érvénytelen XMPP azonosító"
 
+msgid "Invalid XMPP ID. Username portion must be set."
+msgstr "Érvénytelen XMPP azonosító. A felhasználónév részt be kell állítani."
+
 msgid "Invalid XMPP ID. Domain must be set."
 msgstr "Érvénytelen XMPP azonosító. A tartományt be kell állítani."
 
@@ -4280,14 +4320,18 @@
 msgid "Allow Buzz"
 msgstr "Csörgetés engedélyezése"
 
-#, fuzzy
 msgid "Mood Name"
-msgstr "Középső név"
-
-#, fuzzy
+msgstr "Hangulatnév"
+
 msgid "Mood Comment"
-msgstr "Partnermegjegyzés"
-
+msgstr "Hangulatmegjegyzés"
+
+#. primitive
+#. ID
+#. name - use default
+#. saveable
+#. should be user_settable some day
+#. independent
 msgid "Tune Artist"
 msgstr "Dal előadója"
 
@@ -4458,9 +4502,6 @@
 msgid "Remote Connection Failed"
 msgstr "Távoli kapcsolat sikertelen"
 
-msgid "Resource Constraint"
-msgstr "Erőforrás-megszorítás"
-
 msgid "Restricted XML"
 msgstr "Korlátozott XML"
 
@@ -4579,9 +4620,8 @@
 msgid "Initiate Media"
 msgstr "Multimédiás kapcsolat indítása"
 
-#, fuzzy
 msgid "Account does not support PEP, can't set mood"
-msgstr "Ez a protokoll nem támogatja a csevegőszobákat."
+msgstr "A fiók nem támogatja a PEP-t, nem állítható be a hangulat"
 
 msgid "config:  Configure a chat room."
 msgstr "config:   Csevegőszoba beállítása."
@@ -4638,9 +4678,8 @@
 msgid "buzz: Buzz a user to get their attention"
 msgstr "buzz: Felhasználó megcsörgetése figyelemfelhívási céllal"
 
-#, fuzzy
 msgid "mood: Set current user mood"
-msgstr "Megfelelő felhasználó kiválasztása"
+msgstr "mood: Felhasználó aktuális hangulatának beállítása"
 
 msgid "Extended Away"
 msgstr "Nem vagyok a gépnél"
@@ -4718,18 +4757,17 @@
 msgid "(Code %s)"
 msgstr "(%s kód)"
 
-#, fuzzy
 msgid "A custom smiley in the message is too large to send."
-msgstr "Nem küldhető üzenet: az üzenet túl nagy."
+msgstr "Az üzenetben lévő egyéni hangulatjel túl nagy az elküldéshez."
 
 msgid "XMPP stream header missing"
-msgstr ""
+msgstr "Az XMPP adatfolyamfejléc hiányzik"
 
 msgid "XMPP Version Mismatch"
-msgstr ""
+msgstr "XMPP verzióeltérés"
 
 msgid "XMPP stream missing ID"
-msgstr ""
+msgstr "Az XMPP adatfolyam-azonosító hiányzik"
 
 msgid "XML Parse error"
 msgstr "XML elemzési hiba"
@@ -4808,32 +4846,27 @@
 msgid "Please select the resource of %s to which you would like to send a file"
 msgstr "Válassza ki %s azon erőforrását, ahová fájlt kíván küldeni"
 
-#, fuzzy
 msgid "Afraid"
-msgstr "arab"
-
-#, fuzzy
+msgstr "Félő"
+
 msgid "Amazed"
-msgstr "Megszégyenült"
-
-#, fuzzy
+msgstr "Lenyűgözött"
+
 msgid "Amorous"
-msgstr "Ragyogó"
+msgstr "Szerelmes"
 
 #. 1
 msgid "Angry"
 msgstr "Dühös"
 
-#, fuzzy
 msgid "Annoyed"
-msgstr "Kitiltva"
+msgstr "Ideges"
 
 msgid "Anxious"
 msgstr "Nyugtalan"
 
-#, fuzzy
 msgid "Aroused"
-msgstr "Ezt küldi"
+msgstr "Izgatott"
 
 msgid "Ashamed"
 msgstr "Megszégyenült"
@@ -4841,156 +4874,129 @@
 msgid "Bored"
 msgstr "Unott"
 
-#, fuzzy
 msgid "Brave"
-msgstr "Mentés"
-
-#, fuzzy
+msgstr "Bátor"
+
 msgid "Calm"
-msgstr "Tartomány"
-
-#, fuzzy
+msgstr "Nyugodt"
+
 msgid "Cautious"
-msgstr "Csevegések"
-
-#, fuzzy
+msgstr "Óvatos"
+
 msgid "Cold"
-msgstr "Félkövér"
-
-#, fuzzy
+msgstr "Higgadt"
+
 msgid "Confident"
-msgstr "Ütközés"
-
-#, fuzzy
+msgstr "Magabiztos"
+
 msgid "Confused"
-msgstr "Folytatás"
-
-#, fuzzy
+msgstr "Zavart"
+
 msgid "Contemplative"
-msgstr "Partner"
-
-#, fuzzy
+msgstr "Elmélkedő"
+
 msgid "Contented"
-msgstr "Kapcsolódva"
-
-#, fuzzy
+msgstr "Elégedett"
+
 msgid "Cranky"
-msgstr "Cég"
+msgstr "Bizonytalan"
 
 msgid "Crazy"
-msgstr ""
-
-#, fuzzy
+msgstr "Őrült"
+
 msgid "Creative"
-msgstr "Létrehozás"
-
-#, fuzzy
+msgstr "Kreatív"
+
 msgid "Curious"
-msgstr "Ragyogó"
-
-#, fuzzy
+msgstr "Kíváncsi"
+
 msgid "Dejected"
-msgstr "Visszautasítva"
-
-#, fuzzy
+msgstr "Lehangolt"
+
 msgid "Depressed"
-msgstr "Törölve"
-
-#, fuzzy
+msgstr "Depis"
+
 msgid "Disappointed"
-msgstr "Kapcsolat bontva."
+msgstr "Kiábrándult"
 
 msgid "Disgusted"
-msgstr ""
-
-#, fuzzy
+msgstr "Undorodó"
+
 msgid "Dismayed"
-msgstr "Tiltva"
-
-#, fuzzy
+msgstr "Rémült"
+
 msgid "Distracted"
-msgstr "Leválasztott"
+msgstr "Megzavart"
 
 msgid "Embarrassed"
-msgstr ""
-
-#, fuzzy
+msgstr "Feszélyezett"
+
 msgid "Envious"
-msgstr "Nyugtalan"
+msgstr "Irigy"
 
 #. 2
 msgid "Excited"
 msgstr "Érdeklődő"
 
-#, fuzzy
 msgid "Flirtatious"
-msgstr "Ragyogó"
-
-#, fuzzy
+msgstr "Flörtölős"
+
 msgid "Frustrated"
-msgstr "Utónév"
+msgstr "Frusztrált"
 
 msgid "Grateful"
-msgstr ""
-
-#, fuzzy
+msgstr "Hálás"
+
 msgid "Grieving"
-msgstr "Lekérés…"
+msgstr "Szomorkodó"
 
 #. 3
 msgid "Grumpy"
 msgstr "Rosszkedvű"
 
-#, fuzzy
 msgid "Guilty"
-msgstr "Város"
+msgstr "Bűnös"
 
 #. 4
 msgid "Happy"
 msgstr "Boldog"
 
 msgid "Hopeful"
-msgstr ""
+msgstr "Reménykedő"
 
 #. 8
 msgid "Hot"
 msgstr "Forró"
 
 msgid "Humbled"
-msgstr ""
+msgstr "Megalázkodó"
 
 msgid "Humiliated"
-msgstr ""
-
-#, fuzzy
+msgstr "Megszégyenült"
+
 msgid "Hungry"
-msgstr "Dühös"
-
-#, fuzzy
+msgstr "Éhes"
+
 msgid "Hurt"
-msgstr "Humor"
+msgstr "Megbántott"
 
 msgid "Impressed"
-msgstr ""
-
-#, fuzzy
+msgstr "Elbűvölt"
+
 msgid "In awe"
-msgstr "Szerelmes"
+msgstr "Megijedt"
 
 msgid "In love"
 msgstr "Szerelmes"
 
-#, fuzzy
 msgid "Indignant"
-msgstr "indonéz"
-
-#, fuzzy
+msgstr "Ingerült"
+
 msgid "Interested"
-msgstr "Érdeklődési kör"
-
-#, fuzzy
+msgstr "Érdeklődő"
+
 msgid "Intoxicated"
-msgstr "Meghívva"
+msgstr "Részeg"
 
 #. 6
 msgid "Invincible"
@@ -4999,83 +5005,69 @@
 msgid "Jealous"
 msgstr "Féltékeny"
 
-#, fuzzy
 msgid "Lonely"
-msgstr "Majom"
-
-#, fuzzy
+msgstr "Magányos"
+
 msgid "Lost"
-msgstr "Leghangosabb"
+msgstr "Elveszett"
 
 msgid "Lucky"
-msgstr ""
-
-#, fuzzy
+msgstr "Szerencsés"
+
 msgid "Mean"
-msgstr "német"
-
-#, fuzzy
+msgstr "Aljas"
+
 msgid "Moody"
-msgstr "Hangulat"
+msgstr "Kedvetlen"
 
 msgid "Nervous"
-msgstr ""
-
-#, fuzzy
+msgstr "Ideges"
+
 msgid "Neutral"
-msgstr "Részletek"
-
-#, fuzzy
+msgstr "Semleges"
+
 msgid "Offended"
-msgstr "Kilépett"
+msgstr "Megsértődött"
 
 msgid "Outraged"
-msgstr ""
-
-#, fuzzy
+msgstr "Felháborodott"
+
 msgid "Playful"
-msgstr "Lejátszás"
-
-#, fuzzy
+msgstr "Játékos"
+
 msgid "Proud"
-msgstr "Hangos"
-
-#, fuzzy
+msgstr "Büszke"
+
 msgid "Relaxed"
-msgstr "Valódi név"
-
-#, fuzzy
+msgstr "Nyugodt"
+
 msgid "Relieved"
-msgstr "Fogadott"
-
-#, fuzzy
+msgstr "Megkönnyebbült"
+
 msgid "Remorseful"
-msgstr "Eltávolítás"
-
-#, fuzzy
+msgstr "Bűnbánó"
+
 msgid "Restless"
-msgstr "Regisztráció"
+msgstr "Nyugtalan"
 
 #. 7
 msgid "Sad"
 msgstr "Szomorú"
 
 msgid "Sarcastic"
-msgstr ""
+msgstr "Szarkasztikus"
 
 msgid "Satisfied"
-msgstr ""
-
-#, fuzzy
+msgstr "Elégedett"
+
 msgid "Serious"
-msgstr "Ragyogó"
-
-#, fuzzy
+msgstr "Komoly"
+
 msgid "Shocked"
-msgstr "Tiltott"
+msgstr "Megdöbbent"
 
 msgid "Shy"
-msgstr ""
+msgstr "Félénk"
 
 #. 9
 msgid "Sick"
@@ -5087,41 +5079,35 @@
 msgstr "Álmos"
 
 msgid "Spontaneous"
-msgstr ""
-
-#, fuzzy
+msgstr "Spontán"
+
 msgid "Stressed"
-msgstr "Sebesség"
-
-#, fuzzy
+msgstr "Feszült"
+
 msgid "Strong"
-msgstr "Dal"
+msgstr "Erős"
 
 msgid "Surprised"
-msgstr ""
+msgstr "Meglepett"
 
 msgid "Thankful"
-msgstr ""
+msgstr "Hálás"
 
 msgid "Thirsty"
-msgstr ""
-
-#, fuzzy
+msgstr "Szomjas"
+
 msgid "Tired"
-msgstr "Tűz"
-
-#, fuzzy
+msgstr "Fáradt"
+
 msgid "Undefined"
-msgstr "Aláhúzott"
+msgstr "Nem definiált"
 
 # fixme: valami ilyesmi...
-#, fuzzy
 msgid "Weak"
-msgstr "Lecsapás"
-
-#, fuzzy
+msgstr "Gyenge"
+
 msgid "Worried"
-msgstr "Unott"
+msgstr "Aggódó"
 
 msgid "Set User Nickname"
 msgstr "Felhasználói becenév beállítása"
@@ -5398,9 +5384,9 @@
 msgid "Your new MSN friendly name is too long."
 msgstr "Az új MSN beceneve túl hosszú."
 
-#, fuzzy, c-format
+#, c-format
 msgid "Set friendly name for %s."
-msgstr "Becenév beállítása."
+msgstr "Becenév beállítása %s számára."
 
 msgid "Set your friendly name."
 msgstr "Becenév beállítása."
@@ -5486,18 +5472,6 @@
 msgid "Out to Lunch"
 msgstr "Ebédelni mentem"
 
-#. primitive
-#. ID
-#. name - use default
-#. saveable
-#. should be user_settable some day
-#. independent
-msgid "Artist"
-msgstr "Előadó"
-
-msgid "Album"
-msgstr "Album"
-
 msgid "Game Title"
 msgstr "Játék neve"
 
@@ -5648,9 +5622,6 @@
 msgid "Work"
 msgstr "Munka"
 
-msgid "Job Title"
-msgstr "Beosztás"
-
 msgid "Company"
 msgstr "Cég"
 
@@ -6651,9 +6622,6 @@
 msgid "Incorrect password"
 msgstr "Hibás jelszó"
 
-msgid "User not found"
-msgstr "A felhasználó nem található"
-
 msgid "Account has been disabled"
 msgstr "A fiók le lett tiltva"
 
@@ -6881,13 +6849,13 @@
 msgid "Server port"
 msgstr "Kiszolgáló portja"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Received unexpected response from %s: %s"
-msgstr "Váratlan válasz érkezett innen: %s"
+msgstr "Váratlan válasz érkezett a következőtől: %s: %s"
 
 #, c-format
 msgid "Received unexpected response from %s"
-msgstr "Váratlan válasz érkezett innen: %s"
+msgstr "Váratlan válasz érkezett a következőtől: %s"
 
 msgid ""
 "You have been connecting and disconnecting too frequently. Wait ten minutes "
@@ -6906,10 +6874,16 @@
 "Server requested that you fill out a CAPTCHA in order to sign in, but this "
 "client does not currently support CAPTCHAs."
 msgstr ""
+"A kiszolgáló a bejelentkezéshez CAPTCHA kitöltését kérte, de ez a kliens "
+"jelenleg nem támogatja ezt."
 
 msgid "AOL does not allow your screen name to authenticate here"
 msgstr "Az AOL nem engedélyezi ezen megjelenő név hitelesítését"
 
+#, c-format
+msgid "Error requesting %s"
+msgstr "Hiba %s lekérésekor"
+
 msgid "Could not join chat room"
 msgstr "Nem sikerült kapcsolódni a csevegőszobához"
 
@@ -6917,104 +6891,88 @@
 msgstr "Érvénytelen csevegőszobanév"
 
 msgid "Thinking"
-msgstr ""
-
-#, fuzzy
+msgstr "Gondolkozik"
+
 msgid "Shopping"
-msgstr "Abbahagyja a gépelést"
-
-#, fuzzy
+msgstr "Vásárol"
+
 msgid "Questioning"
-msgstr "Kérdező ablak"
-
-#, fuzzy
+msgstr "Kérdez"
+
 msgid "Eating"
-msgstr "Lapozás"
-
-#, fuzzy
+msgstr "Eszik"
+
 msgid "Watching a movie"
-msgstr "Játszik"
+msgstr "Filmet néz"
 
 msgid "Typing"
 msgstr "Gépel"
 
-#, fuzzy
 msgid "At the office"
-msgstr "Nem vagyok a munkahelyemen"
+msgstr "Munkában"
 
 msgid "Taking a bath"
-msgstr ""
+msgstr "Fürdik"
 
 msgid "Watching TV"
-msgstr ""
-
-#, fuzzy
+msgstr "TV-t néz"
+
 msgid "Having fun"
-msgstr "Lerakás"
-
-#, fuzzy
+msgstr "Szórakozik"
+
 msgid "Sleeping"
-msgstr "Álmos"
+msgstr "Alszik"
 
 msgid "Using a PDA"
-msgstr ""
-
-#, fuzzy
+msgstr "PDA-t használ"
+
 msgid "Meeting friends"
-msgstr "IM barátok"
-
-#, fuzzy
+msgstr "Barátokkal találkozik"
+
 msgid "On the phone"
-msgstr "Telefonálok"
-
-#, fuzzy
+msgstr "Telefonál"
+
 msgid "Surfing"
-msgstr "Ismétlődő"
+msgstr "Szörfözik"
 
 #. "I am mobile." / "John is mobile."
 msgid "Mobile"
 msgstr "Mobil"
 
 msgid "Searching the web"
-msgstr ""
+msgstr "Keres a weben"
 
 msgid "At a party"
-msgstr ""
+msgstr "Bulin"
 
 msgid "Having Coffee"
-msgstr ""
+msgstr "Kávézik"
 
 #. Playing video games
-#, fuzzy
 msgid "Gaming"
-msgstr "Ikrek"
+msgstr "Játszik"
 
 msgid "Browsing the web"
-msgstr ""
-
-#, fuzzy
+msgstr "Webet böngész"
+
 msgid "Smoking"
-msgstr "Dal"
-
-#, fuzzy
+msgstr "Dohányzik"
+
 msgid "Writing"
-msgstr "Dolgozik"
+msgstr "Ír"
 
 #. Drinking [Alcohol]
-#, fuzzy
 msgid "Drinking"
-msgstr "Dolgozik"
+msgstr "Iszik"
 
 msgid "Listening to music"
 msgstr "Zenét hallgat"
 
-#, fuzzy
 msgid "Studying"
-msgstr "Küldés"
-
-#, fuzzy
+msgstr "Tanul"
+
 msgid "In the restroom"
-msgstr "Érdeklődési kör"
+msgstr "Mellékhelyiségben"
 
 msgid "Received invalid data on connection with server"
 msgstr "Érvénytelen adatok érkeztek a kapcsolaton a kiszolgálótól"
@@ -7228,7 +7186,7 @@
 msgstr "Játékok"
 
 msgid "ICQ Xtraz"
-msgstr ""
+msgstr "ICQ Xtraz"
 
 msgid "Add-Ins"
 msgstr "Kiegészítők"
@@ -7296,25 +7254,20 @@
 msgid "Invisible"
 msgstr "Láthatatlan"
 
-#, fuzzy
 msgid "Evil"
-msgstr "E-mail"
-
-#, fuzzy
+msgstr "Gonosz"
+
 msgid "Depression"
-msgstr "Foglalkozás"
-
-#, fuzzy
+msgstr "Depresszió"
+
 msgid "At home"
-msgstr "A névjegyem"
-
-#, fuzzy
+msgstr "Otthon"
+
 msgid "At work"
-msgstr "Hálózat"
-
-#, fuzzy
+msgstr "Munkában"
+
 msgid "At lunch"
-msgstr "Ebédelni mentem"
+msgstr "Ebédel"
 
 msgid "IP Address"
 msgstr "IP cím"
@@ -7846,9 +7799,8 @@
 msgid "iTunes Music Store Link"
 msgstr "iTunes zenebolt hivatkozás"
 
-#, fuzzy
 msgid "Lunch"
-msgstr "Finch"
+msgstr "Ebéd"
 
 #, c-format
 msgid "Buddy Comment for %s"
@@ -7881,9 +7833,8 @@
 msgid "Edit Buddy Comment"
 msgstr "Partnermegjegyzés szerkesztése"
 
-#, fuzzy
 msgid "Get X-Status Msg"
-msgstr "Állapotüzenet lekérése"
+msgstr "X-állapotüzenet lekérése"
 
 msgid "End Direct IM Session"
 msgstr "A közvetlen kapcsolat befejezése"
@@ -8294,6 +8245,10 @@
 msgid "Admin"
 msgstr "Rendszergazda"
 
+#. XXX: Should this be "Topic"?
+msgid "Room Title"
+msgstr "Szobanév"
+
 msgid "Notice"
 msgstr "Megjegyzés"
 
@@ -10216,9 +10171,6 @@
 msgid "Yahoo! Protocol Plugin"
 msgstr "Yahoo! protokollbővítmény"
 
-msgid "Pager server"
-msgstr "Személyhívó kiszolgáló"
-
 msgid "Pager port"
 msgstr "Személyhívó Port"
 
@@ -10240,12 +10192,6 @@
 msgid "Chat room list URL"
 msgstr "Csevegőszobák listájának URL címe"
 
-msgid "Yahoo Chat server"
-msgstr "Yahoo csevegőkiszolgáló"
-
-msgid "Yahoo Chat port"
-msgstr "Yahoo csevegőport"
-
 msgid "Yahoo JAPAN ID..."
 msgstr "Yahoo Japán azonosító…"
 
@@ -10313,6 +10259,15 @@
 "A fiók zárolva: Ismeretlen ok. A Yahoo! weboldalára bejelentkezés talán "
 "megoldhatja ezt a problémát."
 
+#. indicates a lock due to logging in too frequently
+msgid ""
+"Account locked: You have been logging in too frequently.  Wait a few minutes "
+"before trying to connect again.  Logging into the Yahoo! website may help."
+msgstr ""
+"A fiók zárolva: túl gyakran jelentkezett be. Várjon pár percet az "
+"újracsatlakozás előtt. A Yahoo! weboldalára bejelentkezés talán megoldhatja "
+"ezt a problémát."
+
 #. username or password missing
 msgid "Username or password missing"
 msgstr "A felhasználónév vagy jelszó hiányzik"
@@ -10393,6 +10348,16 @@
 msgid "Unable to establish a connection with %s: %s"
 msgstr "Nem hozható létre kapcsolat a következővel: %s: %s"
 
+msgid "Unable to connect: The server returned an empty response."
+msgstr "Nem lehet kapcsolódni: a kiszolgáló üres választ adott vissza."
+
+msgid ""
+"Unable to connect: The server's response did not contain the necessary "
+"information"
+msgstr ""
+"Nem lehet kapcsolódni: a kiszolgáló válasza nem tartalmazta a szükséges "
+"információkat"
+
 msgid "Not at Home"
 msgstr "Nem vagyok itthon"
 
@@ -10777,6 +10742,10 @@
 #. *
 #. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
 #.
+#. *
+#. * A wrapper for purple_request_action_with_icon() that uses Accept and Cancel
+#. * buttons.
+#.
 msgid "_Accept"
 msgstr "Elfog_adás"
 
@@ -10843,9 +10812,8 @@
 msgid "Extended away"
 msgstr "Bővített távollét"
 
-#, fuzzy
 msgid "Feeling"
-msgstr "Fogadás"
+msgstr "Hangulat"
 
 #, c-format
 msgid "%s (%s) changed status from %s to %s"
@@ -11016,12 +10984,6 @@
 msgid "Pidgin Internet Messenger"
 msgstr "Pidgin üzenetküldő"
 
-msgid "Orientation"
-msgstr "Tájolás"
-
-msgid "The orientation of the tray."
-msgstr "A tálca tájolása."
-
 #. Build the login options frame.
 msgid "Login Options"
 msgstr "Bejelentkezés beállításai"
@@ -11392,13 +11354,11 @@
 msgid "Unknown node type"
 msgstr "Ismeretlen csomóponttípus"
 
-#, fuzzy
 msgid "Please select your mood from the list"
-msgstr "Válassza ki a hangulatát a listából."
-
-#, fuzzy
+msgstr "Válassza ki a hangulatát a listából"
+
 msgid "Message (optional)"
-msgstr "Álnév (elhagyható)"
+msgstr "Üzenet (elhagyható)"
 
 msgid "Edit User Mood"
 msgstr "Felhasználói hangulat szerkesztése"
@@ -11481,9 +11441,8 @@
 msgid "/Tools/Pr_ivacy"
 msgstr "/Eszközök/Ma_gánszféra"
 
-#, fuzzy
 msgid "/Tools/Set _Mood"
-msgstr "/Eszközök/_Rendszernapló"
+msgstr "/Eszközök/Ha_ngulat beállítása"
 
 msgid "/Tools/_File Transfers"
 msgstr "/Eszközök/_Fájlátvitelek"
@@ -11504,20 +11463,17 @@
 msgid "/Help/Online _Help"
 msgstr "/Súgó/Online _súgó"
 
-#, fuzzy
 msgid "/Help/_Build Information"
-msgstr "Partnerinformáció"
+msgstr "/Súgó/Build _információk"
 
 msgid "/Help/_Debug Window"
 msgstr "/Súgó/_Hibakereső ablak"
 
-#, fuzzy
 msgid "/Help/De_veloper Information"
-msgstr "Kiszolgálóinformációk"
-
-#, fuzzy
+msgstr "/Súgó/_Fejlesztői információk"
+
 msgid "/Help/_Translator Information"
-msgstr "Személyes információk"
+msgstr "/Súgó/F_ordítóinformációk"
 
 msgid "/Help/_About"
 msgstr "/Súgó/_Névjegy"
@@ -11746,9 +11702,8 @@
 msgid "_Edit Account"
 msgstr "_Fiók szerkesztése"
 
-#, fuzzy
 msgid "Set _Mood..."
-msgstr "Hangulat beállítása…"
+msgstr "Ha_ngulat beállítása…"
 
 msgid "No actions available"
 msgstr "Nem állnak rendelkezésre műveletek"
@@ -11870,9 +11825,8 @@
 msgid "/Conversation/Se_nd File..."
 msgstr "/Társalgás/Fájl kül_dése…"
 
-#, fuzzy
 msgid "/Conversation/Get _Attention"
-msgstr "/Társalgás/Információ lekérése"
+msgstr "/Társalgás/_Figyelem kérése"
 
 msgid "/Conversation/Add Buddy _Pounce..."
 msgstr "/Társalgás/_Partnerfigyelmeztetés felvétele…"
@@ -11955,9 +11909,8 @@
 msgid "/Conversation/Send File..."
 msgstr "/Társalgás/Fájl küldése…"
 
-#, fuzzy
 msgid "/Conversation/Get Attention"
-msgstr "/Társalgás/Információ lekérése"
+msgstr "/Társalgás/Figyelem kérése"
 
 msgid "/Conversation/Add Buddy Pounce..."
 msgstr "/Társalgás/Partnerfigyelmeztetés felvétele…"
@@ -12023,13 +11976,11 @@
 msgid "0 people in room"
 msgstr "0 személy tartózkodik a szobában"
 
-#, fuzzy
 msgid "Close Find bar"
-msgstr "Ezen lap bezárása"
-
-#, fuzzy
+msgstr "Keresősáv bezárása"
+
 msgid "Find:"
-msgstr "Keresés"
+msgstr "Keresés:"
 
 #, c-format
 msgid "%d person in room"
@@ -12202,6 +12153,9 @@
 msgid "Bengali"
 msgstr "bengáli"
 
+msgid "Bengali-India"
+msgstr "Indiai bengáli"
+
 msgid "Bosnian"
 msgstr "bosnyák"
 
@@ -12319,9 +12273,8 @@
 msgid "Mongolian"
 msgstr "Mongol"
 
-#, fuzzy
 msgid "Marathi"
-msgstr "gudzsaráti"
+msgstr "Maráthi"
 
 msgid "Malay"
 msgstr "Maláj"
@@ -12341,9 +12294,8 @@
 msgid "Occitan"
 msgstr "Okcitán"
 
-#, fuzzy
 msgid "Oriya"
-msgstr "Opera"
+msgstr "Orija"
 
 msgid "Punjabi"
 msgstr "Pandzsábi"
@@ -12426,7 +12378,7 @@
 msgid "Lithuanian"
 msgstr "litván"
 
-#, 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 "
@@ -12435,15 +12387,13 @@
 "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 AIM, MSN, Yahoo!, "
-"XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, "
-"Zephyr, MySpaceIM, Gadu-Gadu és QQ protokollok egyidejű használatának "
-"lehetőségével. A Gtk+ használatával készül és GPL licenc alatt terjeszthető."
-"<BR><BR>A programot terjesztheti és/vagy módosíthatja a GPL második (vagy "
-"későbbi) változatában foglaltak alapján. A GPL egy példánya megtalálható a %"
-"s programmal terjesztett „COPYING” fájlban. A %s szerzői jogait a "
-"közreműködők birtokolják, ezek teljes listája megtalálható a COPYRIGHT "
-"fájlban. A programra nem biztosítunk garanciát.<BR><BR>"
+"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 "
+"nyelven készül. A %s programot terjesztheti és/vagy módosíthatja a GPL "
+"második (vagy későbbi) változatában foglaltak alapján. A a %s program "
+"tartalmazza GPL egy példányát. A %s szerzői jogait a közreműködők "
+"birtokolják, teljes listájukat a %s forrása tartalmazza. A %s programra nem "
+"biztosítunk garanciát.<BR><BR>"
 
 #, c-format
 msgid ""
@@ -12452,8 +12402,12 @@
 "Channel: #pidgin on irc.freenode.net<BR>\tXMPP MUC: devel@conference.pidgin."
 "im<BR><BR>"
 msgstr ""
-
-#, fuzzy, c-format
+"<FONT SIZE=\"4\"><B>Hasznos erőforrások</B></FONT><BR>\t<A HREF=\"%s"
+"\">Weboldal</A><BR>\t<A HREF=\"%s\">Gyakran feltett kérdések</A><BR>\tIRC-"
+"csatorna: #pidgin az irc.freenode.net hálózaton<BR>\tXMPP konferenciaszoba: "
+"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/"
@@ -12463,25 +12417,25 @@
 "welcome to post in another language, but the responses may be less helpful."
 "<br/>"
 msgstr ""
-"<font size=\"4\">Segítség más Pidgin felhasználóktól:</font> <a href="
-"\"mailto:support@pidgin.im\">support@pidgin.im</a><br/>Ez egy <b>nyilvános</"
-"b> levelezőlista! (<a href=\"http://pidgin.im/pipermail/support/\">archívum</"
-"a>)<br/>Nem tudunk segíteni külső protokollokkal vagy bővítményekkel "
-"kapcsolatban!<br/>Ez a lista <b>angol</b> nyelvű. Írhat más nyelven is, de a "
-"válaszok nem biztos, hogy túl hasznosak lesznek.<br/><br/>"
+"<font size=\"4\"><b>Elérhető más Pidgin felhasználók segítsége</b></font> a "
+"<a href=\"mailto:support@pidgin.im\">support@pidgin.im</a> levelezőlistán<br/"
+">Ez egy <b>nyilvános</b> levelezőlista! (<a href=\"http://pidgin.im/"
+"pipermail/support/\">archívum</a>)<br/>Nem tudunk segíteni külső "
+"protokollokkal vagy bővítményekkel kapcsolatban!<br/>Ez a lista <b>angol</b> "
+"nyelvű. Írhat más nyelven is, de a válaszok nem biztos, hogy túl hasznosak "
+"lesznek.<br/>"
 
 #, c-format
 msgid "About %s"
 msgstr "A %s névjegye"
 
-#, fuzzy
 msgid "Build Information"
-msgstr "Partnerinformáció"
+msgstr "Build információk"
 
 #. End of not to be translated section
-#, fuzzy, c-format
+#, c-format
 msgid "%s Build Information"
-msgstr "Partnerinformáció"
+msgstr "%s build információi"
 
 msgid "Current Developers"
 msgstr "Jelenlegi fejlesztők"
@@ -12495,9 +12449,9 @@
 msgid "Retired Crazy Patch Writers"
 msgstr "Visszavonult őrült patch szerzők"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Developer Information"
-msgstr "Kiszolgálóinformációk"
+msgstr "%s fejlesztői információi"
 
 msgid "Current Translators"
 msgstr "Jelenlegi fordítók"
@@ -12505,9 +12459,9 @@
 msgid "Past Translators"
 msgstr "Korábbi fordítók"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Translator Information"
-msgstr "További információk"
+msgstr "%s fordítóinformációi"
 
 msgid "_Name"
 msgstr "_Név"
@@ -12914,9 +12868,8 @@
 msgid "Insert Smiley"
 msgstr "Hangulatjel beszúrása"
 
-#, fuzzy
 msgid "Send Attention"
-msgstr "Küldés gomb"
+msgstr "Figyelemkérés küldése"
 
 msgid "<b>_Bold</b>"
 msgstr "<b>_Félkövér</b>"
@@ -12964,7 +12917,7 @@
 msgstr "M_osolyt!"
 
 msgid "_Attention!"
-msgstr ""
+msgstr "_Figyelem!"
 
 msgid "Log Deletion Failed"
 msgstr "Napló törlése meghiúsult"
@@ -13541,7 +13494,7 @@
 msgstr "Konqueror"
 
 msgid "Desktop Default"
-msgstr "Munkaasztal alapértelmezése"
+msgstr "Asztali környezet alapértelmezése"
 
 msgid "GNOME Default"
 msgstr "GNOME alapértelmezés"
@@ -13901,9 +13854,8 @@
 msgid "Custom Smiley Manager"
 msgstr "Egyénihangulatjel-kezelő"
 
-#, fuzzy
 msgid "Attention received"
-msgstr "Aktiválás szükséges"
+msgstr "Figyelemkérés érkezett"
 
 msgid "Select Buddy Icon"
 msgstr "Válasszon partnerikont"
@@ -14047,9 +13999,8 @@
 msgid "_Save File"
 msgstr "Fájl m_entése"
 
-#, fuzzy
 msgid "Do you really want to clear?"
-msgstr "Biztos, hogy törölni akarja %s fiókot?"
+msgstr "Biztos, hogy törölni akarja?"
 
 msgid "Select color"
 msgstr "Szín kiválasztása"
@@ -15048,8 +14999,17 @@
 msgstr "Időpecsét formátumbeállításai"
 
 #, c-format
-msgid "_Force 24-hour time format"
-msgstr "24 órás i_dőformátum kényszerítése"
+msgid "_Force timestamp format:"
+msgstr "I_dőbélyeg-formátum kényszerítése:"
+
+msgid "Use system default"
+msgstr "Rendszer alapértelmezésének használata"
+
+msgid "12 hour time format"
+msgstr "12 órás időformátum"
+
+msgid "24 hour time format"
+msgstr "24 órás időformátum"
 
 msgid "Show dates in..."
 msgstr "Dátumok megjelenítése…"
@@ -15249,141 +15209,7 @@
 msgstr "Nyers XMPP mondatok küldése és fogadása."
 
 #. *  description
-#, fuzzy
 msgid "This plugin is useful for debugging XMPP servers or clients."
 msgstr ""
 "Ez a bővítmény XMPP kiszolgálókban vagy kliensekben végzett hibakereséshez "
 "hasznos."
-
-#~ msgid "Error creating conference."
-#~ msgstr "Hiba a konferencia létrehozásakor."
-
-#~ msgid "Unable to bind socket to port: %s"
-#~ msgstr "Nem köthető a foglalat a porthoz: %s"
-
-#~ msgid "Unable to listen on socket: %s"
-#~ msgstr "Nem lehet figyelni a foglalaton: %s"
-
-#~ msgid ""
-#~ "Unable to find alternative XMPP connection methods after failing to "
-#~ "connect directly."
-#~ msgstr ""
-#~ "Nem található alternatív XMPP kapcsolódási módszer, miután a közvetlen "
-#~ "kapcsolódás meghiúsult."
-
-#~ msgid "%s just sent you a Nudge!"
-#~ msgstr "%s megbökte!"
-
-#~ msgid "Friendly name changes too rapidly"
-#~ msgstr "A felhasználónév túl gyorsan változik"
-
-#~ msgid "This Hotmail account may not be active."
-#~ msgstr "Lehetséges, hogy ez a Hotmail fiók nem aktív."
-
-#~ msgid "Profile URL"
-#~ msgstr "Profil URL-je"
-
-#~ msgid "MSN Protocol Plugin"
-#~ msgstr "MSN protokollbővítmény"
-
-#~ msgid "%s is not a valid group."
-#~ msgstr "%s érvénytelen csoport."
-
-#~ msgid "Unknown error."
-#~ msgstr "Ismeretlen hiba."
-
-#~ msgid "%s on %s (%s)"
-#~ msgstr "%s ezen: %s (%s)"
-
-#~ msgid "Unable to add user on %s (%s)"
-#~ msgstr "Nem lehet felhasználót felvenni ehhez: %s (%s)"
-
-#~ msgid "Unable to block user on %s (%s)"
-#~ msgstr "Nem lehet letiltani a felhasználót ezen: %s (%s)"
-
-#~ msgid "Unable to permit user on %s (%s)"
-#~ msgstr "Nem lehet engedélyezni a felhasználót ezen: %s (%s)"
-
-#~ msgid "%s could not be added because your buddy list is full."
-#~ msgstr "%s nem adható hozzá, mert a partnerlista tele van."
-
-#~ msgid "%s is not a valid passport account."
-#~ msgstr "%s érvénytelen passport fiók."
-
-#~ msgid "Service Temporarily Unavailable."
-#~ msgstr "A szolgáltatás átmenetileg nem érhető el."
-
-#~ msgid "Unable to rename group"
-#~ msgstr "Nem lehet átnevezni a csoportot"
-
-#~ msgid "Unable to delete group"
-#~ msgstr "Nem lehet törölni a csoportot"
-
-#~ msgid "%s has added you to his or her buddy list."
-#~ msgstr "%s felvette Önt a partnerlistájára."
-
-#~ msgid "%s has removed you from his or her buddy list."
-#~ msgstr "%s eltávolította Önt a partnerlistájáról."
-
-#~ 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 ""
-#~ "Az utolsó művelet nem hajtható végre, mert túllépte a sebességkorlátot. "
-#~ "Kérem várjon 10 másodpercet és próbálja meg újra.\n"
-
-#~ msgid ""
-#~ "<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
-#~ "\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
-#~ msgstr ""
-#~ "<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
-#~ "\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
-
-#~ msgid ""
-#~ "<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-#~ msgstr ""
-#~ "<FONT SIZE=\"4\">IRC csatorna:</FONT> #pidgin az irc.freenode.net "
-#~ "hálózaton<BR><BR>"
-
-#~ msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
-#~ msgstr ""
-#~ "<FONT SIZE=\"4\">XMPP szoba:</FONT> devel@conference.pidgin.im<BR><BR>"
-
-#~ msgid "Debugging Information"
-#~ msgstr "Hibakeresési információk"
-
-#~ msgid ""
-#~ "Unrecognized file type\n"
-#~ "\n"
-#~ "Defaulting to PNG."
-#~ msgstr ""
-#~ "Ismeretlen fájltípus\n"
-#~ "\n"
-#~ "Alapértelmezett PNG használata."
-
-#~ msgid ""
-#~ "Error saving image\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr ""
-#~ "Hiba a kép mentése közben\n"
-#~ "\n"
-#~ "%s"
-
-#~ msgid "Failed to open file '%s': %s"
-#~ msgstr "Nem sikerült megnyitni a(z) „%s” fájlt: %s"
-
-#~ msgid ""
-#~ "Failed to load image '%s': reason not known, probably a corrupt image file"
-#~ msgstr ""
-#~ "A(z) „%s” kép betöltése sikertelen: az ok nem ismert, valószínűleg sérült "
-#~ "a képfájl"
-
-#~ msgid "Insert an <iq/> stanza."
-#~ msgstr "<iq/> mondat beszúrása."
-
-#~ msgid "Insert a <presence/> stanza."
-#~ msgstr "<presence/> mondat beszúrása."
-
-#~ msgid "Insert a <message/> stanza."
-#~ msgstr "<message/> mondat beszúrása."