changeset 32614:47fc498fc34b

propagate from branch 'im.pidgin.pidgin' (head 07d0765c444a097af45c2650f54323afb900a07b) to branch 'im.pidgin.cpw.qulogic.gtk3' (head 2467f64b9a1f8eefa825f2a81646d45aa59ff942)
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Tue, 20 Jul 2010 02:48:15 +0000
parents e874875a74a7 (diff) 99127edb4cc6 (current diff)
children fdc865966b01
files pidgin/gtkblist.c pidgin/gtkimhtmltoolbar.c pidgin/gtkmedia.c pidgin/gtkprefs.c
diffstat 72 files changed, 2102 insertions(+), 2661 deletions(-) [+]
line wrap: on
line diff
--- a/COPYRIGHT	Sat Jun 05 22:30:51 2010 +0000
+++ b/COPYRIGHT	Tue Jul 20 02:48:15 2010 +0000
@@ -512,6 +512,7 @@
 Kyle Turman
 Jon Turney
 Junichi Uekawa
+Max Ulidtko
 Igor Vlasenko
 István Váradi
 Martijn van Beers
--- a/ChangeLog	Sat Jun 05 22:30:51 2010 +0000
+++ b/ChangeLog	Tue Jul 20 02:48:15 2010 +0000
@@ -1,6 +1,50 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
 version 2.7.2 (??/??/????):
+	General:
+	* Use silent build rules for automake >1.11. You can enable verbose
+	  builds with the --disable-silent-rules configure option, or using
+	  make V=1.
+
+	libpurple:
+	* Fix the TURN server settings (broken in 2.7.0).
+
+	Pidgin:
+	* Re-focus the input area after clicking the attention toolbar button.
+	* Re-arrange media window to make it more netbook-friendly.
+
+	Finch:
+	* Rebindable 'suggest-next-page' and 'suggest-prev-page' actions for
+	  textboxes (GntEntry) to scroll through list of suggestions.
+	* Rebindable 'dropdown' action for comboboxes (GntComboBox) to show the
+	  dropdown list of options.
+
+	IRC:
+	* Fix non-ASCII arguments to /mode et al.  (thanks to Max Ulidtko)
+
+	XMPP:
+	* Allow connecting to servers that only advertise GSSAPI and expect
+	  a fallback to legacy IQ authentication (broken in 2.7.0).
+	* Fix a crash when receiving custom emoticons that don't adhere to
+	  the specification.
+	* When initiating a file transfer, don't show resources that are certain
+	  to not support file transfers in the resource selection dialog.
+	* Fix connecting to servers using BOSH and authenticating with
+	  DIGEST-MD5 when libpurple was built with Cyrus SASL support.
+
+	Yahoo/Yahoo JAPAN:
+	* Renamed "Use account proxy for SSL connections" to "Use account proxy
+	  for HTTP and HTTPS requests" and tied the option to HTTP requests too.
+	* Properly detect HTTP proxy server use when the HTTP proxy is the
+	  global proxy server, an account-level non-HTTP proxy server is
+	  configured, and the "Use account proxy for HTTP and HTTPS requests"
+	  account option is turned off.  This fixes connecting for some HTTP
+	  proxy servers.
+	* Fall back to connecting to scsa.msg.yahoo.com (not configurable) if
+	  the HTTP-based connect server lookup fails.  This does not work for
+	  Yahoo JAPAN accounts.
+	* Fix file transfers that get stuck with "Waiting for transfer to
+	  begin".
 
 version 2.7.1 (05/29/2010):
 	General:
--- a/ChangeLog.API	Sat Jun 05 22:30:51 2010 +0000
+++ b/ChangeLog.API	Tue Jul 20 02:48:15 2010 +0000
@@ -1,6 +1,28 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
 version 2.7.2 (??/??/????):
+	libpurple:
+		Fixed:
+		* purple_account_[gs]et_public_alias no longer crash when
+		  called for a protocol that doesn't support the underlying
+		  calls and the caller does not specify a failure callback.
+
+	Perl:
+		Added:
+		* Exposed log-subsystem signals.
+
+	Pidgin:
+		Changed:
+		* Changing the visibility (gtk_widget_hide/show) of
+		  the widgets in the GtkIMHtmlToolbar should now affect
+		  the visibility of the entries in the 'lean' view
+		  (the default toolbar view).
+
+	libgnt:
+		Added:
+		* gnt_tree_row_get_key, gnt_tree_row_get_next,
+		  gnt_tree_row_get_prev, gnt_tree_row_get_child and
+		  gnt_tree_row_get_parent.
 
 version 2.7.1 (05/29/2010):
 	* No changes
--- a/Makefile.am	Sat Jun 05 22:30:51 2010 +0000
+++ b/Makefile.am	Tue Jul 20 02:48:15 2010 +0000
@@ -100,18 +100,18 @@
 # creates, and also make sure that the shell command exits
 # successfully; the rm -f ensures both
 package_revision_raw.txt:
-	REAL_BLDDIR=$$PWD/$(top_builddir); \
+	$(AM_V_GEN)REAL_BLDDIR=$$PWD/$(top_builddir); \
 	(cd $(srcdir) && $$REAL_BLDDIR/mtn --root=. automate get_base_revision_id) 2>/dev/null >$@ \
 	|| (cd $(srcdir) && mtn --root=. automate get_base_revision_id) 2>/dev/null >$@ \
 	|| rm -f $@
 package_revision.h: package_revision_raw.txt
-	if test -f $<; then \
+	$(AM_V_GEN)if test -f $<; then \
 	  echo "#define REVISION \"`cat $<`\"" > $@; \
 	fi
-	if test ! -f $@ -a -f $(srcdir)/$@; then \
+	$(AM_V_at)if test ! -f $@ -a -f $(srcdir)/$@; then \
 	  cp $(srcdir)/$@ $@; \
 	fi
-	test -f $@ || echo "#define REVISION \"unknown\"" > $@
+	$(AM_V_at)test -f $@ || echo "#define REVISION \"unknown\"" > $@
 
 # This is a magic directive copy-and-pasted, then modified, from the
 # automake 1.9 manual, section 13.4, "Checking the distribution".
--- a/configure.ac	Sat Jun 05 22:30:51 2010 +0000
+++ b/configure.ac	Tue Jul 20 02:48:15 2010 +0000
@@ -52,10 +52,10 @@
           [purple_major_version.purple_minor_version.purple_micro_version])
 m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix]))
 
-m4_define([gnt_lt_current], [7])
+m4_define([gnt_lt_current], [8])
 m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [7])
-m4_define([gnt_micro_version], [2])
+m4_define([gnt_minor_version], [8])
+m4_define([gnt_micro_version], [0])
 m4_define([gnt_version_suffix], [devel])
 m4_define([gnt_version],
           [gnt_major_version.gnt_minor_version.gnt_micro_version])
@@ -75,6 +75,8 @@
 AC_CANONICAL_HOST
 AC_CONFIG_HEADERS([config.h])
 AM_INIT_AUTOMAKE([1.9 -Wno-portability dist-bzip2])
+dnl TODO: Always use AM_SILENT_RULES when we depend on automake >= 1.11
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
 PURPLE_MAJOR_VERSION=purple_major_version
 PURPLE_MINOR_VERSION=purple_minor_version
@@ -660,6 +662,10 @@
 		for location in $ac_ncurses_includes $NCURSES_HEADERS /usr/include/ncursesw /usr/include
 		do
 			f="$location/ncurses.h"
+			orig_CFLAGS="$CFLAGS"
+			orig_CPPFLAGS="$CPPFLAGS"
+			CFLAGS="$CFLAGS -I$location"
+			CPPFLAGS="$CPPFLAGS -I$location"
 			AC_CHECK_HEADER($f,[
 				AC_MSG_CHECKING([if $f supports wide characters])
 				AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
@@ -678,9 +684,13 @@
 					fi
 
 					found_ncurses_h=yes
+					CFLAGS="$orig_CFLAGS"
+					CPPFLAGS="$orig_CPPFLAGS"
 					AC_MSG_RESULT([yes])
 					break
 				], [
+					CFLAGS="$orig_CFLAGS"
+					CPPFLAGS="$orig_CPPFLAGS"
 					AC_MSG_RESULT([no])
 				])
 			])
--- a/doc/finch.1.in	Sat Jun 05 22:30:51 2010 +0000
+++ b/doc/finch.1.in	Tue Jul 20 02:48:15 2010 +0000
@@ -59,7 +59,7 @@
 Display the version information window.
 
 .SH GNT Shortcuts
-You can use the following shortcuts (see the "\*QWidget Actions\*U" section for a more complete list):
+You can use the following shortcuts (see the "Widget Actions" section for a more complete list):
 .TP
 .B Alt \+ a
 Bring up a list of available actions. You can use this list to access the
@@ -305,6 +305,13 @@
 left = focus-prev
 
 .br
+[GntComboBox::binding]
+.br
+down = dropdown
+.br
+up = dropdown
+
+.br
 [GntEntry::binding]
 .br
 c-a = cursor-home
@@ -339,6 +346,10 @@
 .br
 up = suggest-prev
 .br
+page-down = suggest-next-page
+.br
+page-up = suggest-prev-page
+.br
 c-w = delete-prev-word
 .br
 a-b = cursor-prev-word
@@ -496,6 +507,10 @@
 .br
 a-/ = help-for-widget
 .br
+a-c-j = window-scroll-down
+.br
+a-c-k = window-scroll-up
+.br
 # The following action is still incomplete, and doesn't have a default binding
 .br
 # switch-window-n
--- a/finch/finch.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/finch.c	Tue Jul 20 02:48:15 2010 +0000
@@ -252,6 +252,7 @@
 	gboolean opt_version = FALSE;
 	char *opt_config_dir_arg = NULL;
 	gboolean debug_enabled = FALSE;
+	struct stat st;
 
 	struct option long_options[] = {
 		{"config",   required_argument, NULL, 'c'},
@@ -361,6 +362,8 @@
 	purple_idle_set_ui_ops(finch_idle_get_ui_ops());
 
 	path = g_build_filename(purple_user_dir(), "plugins", NULL);
+	if (!g_stat(path, &st))
+		g_mkdir(path, S_IRUSR | S_IWUSR | S_IXUSR);
 	purple_plugins_add_search_path(path);
 	g_free(path);
 
--- a/finch/gntaccount.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/gntaccount.c	Tue Jul 20 02:48:15 2010 +0000
@@ -125,7 +125,8 @@
 
 	if (value == NULL || *value == '\0')
 	{
-		purple_notify_error(NULL, _("Error"), _("Account was not added"),
+		purple_notify_error(NULL, _("Error"),
+				dialog->account ? _("Account was not modified") : _("Account was not added"),
 				_("Username of an account must be non-empty."));
 		return;
 	}
@@ -160,8 +161,28 @@
 		account = dialog->account;
 
 		/* Protocol */
-		purple_account_set_protocol_id(account, purple_plugin_get_id(plugin));
-		purple_account_set_username(account, username->str);
+		if (purple_account_is_disconnected(account)) {
+			purple_account_set_protocol_id(account, purple_plugin_get_id(plugin));
+			purple_account_set_username(account, username->str);
+		} else {
+			const char *old = purple_account_get_protocol_id(account);
+			char *oldprpl;
+			if (strcmp(old, purple_plugin_get_id(plugin))) {
+				purple_notify_error(NULL, _("Error"), _("Account was not modified"),
+						_("The account's protocol cannot be changed while it is connected to the server."));
+				return;
+			}
+
+			oldprpl = g_strdup(purple_normalize(account, purple_account_get_username(account)));
+			if (g_utf8_collate(oldprpl, purple_normalize(account, username->str))) {
+				purple_notify_error(NULL, _("Error"), _("Account was not modified"),
+						_("The account's username cannot be changed while it is connected to the server."));
+				g_free(oldprpl);
+				return;
+			}
+			g_free(oldprpl);
+			purple_account_set_username(account, username->str);
+		}
 	}
 	g_string_free(username, TRUE);
 
@@ -245,6 +266,17 @@
 		}
 	}
 
+	/* In case of a new account, the 'Accounts' window is updated from the account-added
+	 * callback. In case of changes in an existing account, we need to explicitly do it
+	 * here.
+	 */
+	if (dialog->account != NULL && accounts.window) {
+		gnt_tree_change_text(GNT_TREE(accounts.tree), dialog->account,
+				0, purple_account_get_username(dialog->account));
+		gnt_tree_change_text(GNT_TREE(accounts.tree), dialog->account,
+				1, purple_account_get_protocol_name(dialog->account));
+	}
+
 	gnt_widget_destroy(dialog->window);
 }
 
@@ -603,7 +635,7 @@
 	button = gnt_button_new(_("Cancel"));
 	gnt_box_add_widget(GNT_BOX(hbox), button);
 	g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(gnt_widget_destroy), window);
-	
+
 	button = gnt_button_new(_("Save"));
 	gnt_box_add_widget(GNT_BOX(hbox), button);
 	g_signal_connect_swapped(G_OBJECT(button), "activate", G_CALLBACK(save_account_cb), dialog);
--- a/finch/gntdebug.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/gntdebug.c	Tue Jul 20 02:48:15 2010 +0000
@@ -77,7 +77,10 @@
 		}
 		return;
 	}
-	pipe(pipes);
+	if (pipe(pipes)) {
+		readhandle = -1;
+		return;
+	};
 	dup2(pipes[1], STDERR_FILENO);
 
 	stderrch = g_io_channel_unix_new(pipes[0]);
--- a/finch/gntrequest.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/gntrequest.c	Tue Jul 20 02:48:15 2010 +0000
@@ -349,10 +349,9 @@
 			}
 			else if (type == PURPLE_REQUEST_FIELD_LIST)
 			{
-				GList *list = NULL;
+				GList *list = NULL, *iter;
 				if (purple_request_field_list_get_multi_select(field))
 				{
-					GList *iter;
 					GntWidget *tree = FINCH_GET_DATA(field);
 
 					iter = purple_request_field_list_get_items(field);
@@ -361,14 +360,23 @@
 						const char *text = iter->data;
 						gpointer key = purple_request_field_list_get_data(field, text);
 						if (gnt_tree_get_choice(GNT_TREE(tree), key))
-							list = g_list_prepend(list, key);
+							list = g_list_prepend(list, (gpointer)text);
 					}
 				}
 				else
 				{
 					GntWidget *combo = FINCH_GET_DATA(field);
 					gpointer data = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo));
-					list = g_list_append(list, data);
+
+					iter = purple_request_field_list_get_items(field);
+					for (; iter; iter = iter->next) {
+						const char *text = iter->data;
+						gpointer key = purple_request_field_list_get_data(field, text);
+						if (key == data) {
+							list = g_list_prepend(list, (gpointer)text);
+							break;
+						}
+					}
 				}
 
 				purple_request_field_list_set_selected(field, list);
@@ -815,7 +823,7 @@
 	for (list = purple_request_fields_get_groups(allfields); list; list = list->next) {
 		PurpleRequestFieldGroup *group = list->data;
 		GList *fields = purple_request_field_group_get_fields(group);
-		
+
 		for (; fields ; fields = fields->next) {
 			PurpleRequestField *field = fields->data;
 			PurpleRequestFieldType type = purple_request_field_get_type(field);
@@ -826,6 +834,7 @@
 			switch (type) {
 				case PURPLE_REQUEST_FIELD_LIST:
 					val = purple_request_field_list_get_selected(field)->data;
+					val = purple_request_field_list_get_data(field, val);
 					break;
 				case PURPLE_REQUEST_FIELD_BOOLEAN:
 					val = GINT_TO_POINTER(purple_request_field_bool_get_value(field));
--- a/finch/gntsound.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/gntsound.c	Tue Jul 20 02:48:15 2010 +0000
@@ -104,7 +104,8 @@
 	{PURPLE_SOUND_CHAT_YOU_SAY, N_("You talk in chat"), "send_chat_msg", "send.wav", NULL},
 	{PURPLE_SOUND_CHAT_SAY,     N_("Others talk in chat"), "chat_msg_recv", "receive.wav", NULL},
 	{PURPLE_SOUND_POUNCE_DEFAULT, NULL, "pounce_default", "alert.wav", NULL},
-	{PURPLE_SOUND_CHAT_NICK,    N_("Someone says your username in chat"), "nick_said", "alert.wav", NULL}
+	{PURPLE_SOUND_CHAT_NICK,    N_("Someone says your username in chat"), "nick_said", "alert.wav", NULL},
+	{PURPLE_SOUND_GOT_ATTENTION, N_("Attention received"), "got_attention", "alert.wav", NULL}
 };
 
 const char *
@@ -273,6 +274,14 @@
 		play_conv_event(conv, event);
 }
 
+static void
+got_attention_cb(PurpleAccount *account, const char *who,
+	PurpleConversation *conv, guint type, PurpleSoundEventID event)
+{
+	play_conv_event(conv, event);
+}
+
+
 /*
  * We mute sounds for the 10 seconds after you log in so that
  * you don't get flooded with sounds when the blist shows all
@@ -300,34 +309,22 @@
 static void
 initialize_profile(const char *name, PurplePrefType type, gconstpointer val, gpointer null)
 {
+	FinchSoundEvent *event;
 	if (purple_prefs_exists(make_pref("")))
 		return;
 
 	purple_prefs_add_none(make_pref(""));
 	purple_prefs_add_none(make_pref("/enabled"));
 	purple_prefs_add_none(make_pref("/file"));
-	purple_prefs_add_bool(make_pref("/enabled/login"), FALSE);
-	purple_prefs_add_path(make_pref("/file/login"), "");
-	purple_prefs_add_bool(make_pref("/enabled/logout"), FALSE);
-	purple_prefs_add_path(make_pref("/file/logout"), "");
-	purple_prefs_add_bool(make_pref("/enabled/im_recv"), FALSE);
-	purple_prefs_add_path(make_pref("/file/im_recv"), "");
-	purple_prefs_add_bool(make_pref("/enabled/first_im_recv"), FALSE);
-	purple_prefs_add_path(make_pref("/file/first_im_recv"), "");
-	purple_prefs_add_bool(make_pref("/enabled/send_im"), FALSE);
-	purple_prefs_add_path(make_pref("/file/send_im"), "");
-	purple_prefs_add_bool(make_pref("/enabled/join_chat"), FALSE);
-	purple_prefs_add_path(make_pref("/file/join_chat"), "");
-	purple_prefs_add_bool(make_pref("/enabled/left_chat"), FALSE);
-	purple_prefs_add_path(make_pref("/file/left_chat"), "");
-	purple_prefs_add_bool(make_pref("/enabled/send_chat_msg"), FALSE);
-	purple_prefs_add_path(make_pref("/file/send_chat_msg"), "");
-	purple_prefs_add_bool(make_pref("/enabled/chat_msg_recv"), FALSE);
-	purple_prefs_add_path(make_pref("/file/chat_msg_recv"), "");
-	purple_prefs_add_bool(make_pref("/enabled/nick_said"), FALSE);
-	purple_prefs_add_path(make_pref("/file/nick_said"), "");
-	purple_prefs_add_bool(make_pref("/enabled/pounce_default"), FALSE);
-	purple_prefs_add_path(make_pref("/file/pounce_default"), "");
+
+	for (event = sounds; event - sounds < PURPLE_NUM_SOUNDS; event++) {
+		char pref[512];
+		g_snprintf(pref, sizeof(pref), "/enabled/%s", event->pref);
+		purple_prefs_add_bool(make_pref(pref), FALSE);
+		g_snprintf(pref, sizeof(pref), "/file/%s", event->pref);
+		purple_prefs_add_path(make_pref(pref), "");
+	}
+
 	purple_prefs_add_bool(make_pref("/conv_focus"), FALSE);
 	purple_prefs_add_bool(make_pref("/mute"), FALSE);
 	purple_prefs_add_path(make_pref("/command"), "");
@@ -336,6 +333,25 @@
 }
 
 static void
+update_profiles(void)
+{
+	GList *list = finch_sound_get_profiles();
+	for (; list; list = g_list_delete_link(list, list)) {
+		char pname[512];
+
+		/* got_attention was added in libpurple 2.7.0 */
+		g_snprintf(pname, sizeof(pname), FINCH_PREFS_ROOT "/sound/profiles/%s%s",
+				(char *)list->data, "/enabled/got_attention");
+		purple_prefs_add_bool(pname, FALSE);
+		g_snprintf(pname, sizeof(pname), FINCH_PREFS_ROOT "/sound/profiles/%s%s",
+				(char *)list->data, "/file/got_attention");
+		purple_prefs_add_path(pname, "");
+
+		g_free(list->data);
+	}
+}
+
+static void
 finch_sound_init(void)
 {
 	void *gnt_sound_handle = finch_sound_get_handle();
@@ -356,7 +372,7 @@
 	purple_prefs_connect_callback(gnt_sound_handle, FINCH_PREFS_ROOT "/sound/actprofile", initialize_profile, NULL);
 	purple_prefs_trigger_callback(FINCH_PREFS_ROOT "/sound/actprofile");
 
-	
+
 #ifdef USE_GSTREAMER
 	purple_debug_info("sound", "Initializing sound output drivers.\n");
 #if (GST_VERSION_MAJOR > 0 || \
@@ -399,6 +415,11 @@
 	purple_signal_connect(conv_handle, "received-chat-msg",
 						gnt_sound_handle, PURPLE_CALLBACK(chat_msg_received_cb),
 						GINT_TO_POINTER(PURPLE_SOUND_CHAT_SAY));
+	purple_signal_connect(conv_handle, "got-attention",
+						gnt_sound_handle, PURPLE_CALLBACK(got_attention_cb),
+						GINT_TO_POINTER(PURPLE_SOUND_GOT_ATTENTION));
+
+	update_profiles();
 }
 
 static void
@@ -577,7 +598,8 @@
 	if ((event == PURPLE_SOUND_BUDDY_ARRIVE) && mute_login_sounds)
 		return;
 
-	if (event >= PURPLE_NUM_SOUNDS) {
+	if (event >= PURPLE_NUM_SOUNDS ||
+			event >= G_N_ELEMENTS(sounds)) {
 		purple_debug_error("sound", "got request for unknown sound: %d\n", event);
 		return;
 	}
--- a/finch/libgnt/configure.ac	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/libgnt/configure.ac	Tue Jul 20 02:48:15 2010 +0000
@@ -24,9 +24,9 @@
 # Make sure to update ../../configure.ac with libgnt version changes.
 #
 
-m4_define([gnt_lt_current], [7])
+m4_define([gnt_lt_current], [8])
 m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [7])
+m4_define([gnt_minor_version], [8])
 m4_define([gnt_micro_version], [0])
 m4_define([gnt_version_suffix], [devel])
 m4_define([gnt_version],
@@ -265,6 +265,10 @@
 	for location in $ac_ncurses_includes /usr/include/ncursesw /usr/include
 	do
 		f="$location/ncurses.h"
+		orig_CFLAGS="$CFLAGS"
+		orig_CPPFLAGS="$CPPFLAGS"
+		CFLAGS="$CFLAGS -I$location"
+		CPPFLAGS="$CPPFLAGS -I$location"
 		AC_CHECK_HEADER($f,[
 			AC_MSG_CHECKING([if $f supports wide characters])
 			AC_TRY_COMPILE([
@@ -283,9 +287,13 @@
 				fi
 
 				found_ncurses_h=yes
+				CFLAGS="$orig_CFLAGS"
+				CPPFLAGS="$orig_CPPFLAGS"
 				AC_MSG_RESULT([yes])
 				break
 			], [
+				CFLAGS="$orig_CFLAGS"
+				CPPFLAGS="$orig_CPPFLAGS"
 				AC_MSG_RESULT([no])
 			])
 		])
--- a/finch/libgnt/gntbox.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/libgnt/gntbox.c	Tue Jul 20 02:48:15 2010 +0000
@@ -422,7 +422,9 @@
 
 		gnt_widget_get_size(wid, &w, &h);
 
-		if (wid != last && !child && w > 0 && h > 0 && gnt_widget_confirm_size(wid, w - wchange, h - hchange)) {
+		if (wid != last && !child && w > 0 && h > 0 &&
+				!GNT_WIDGET_IS_FLAG_SET(wid, GNT_WIDGET_INVISIBLE) &&
+				gnt_widget_confirm_size(wid, w - wchange, h - hchange)) {
 			child = wid;
 			break;
 		}
--- a/finch/libgnt/gntcombobox.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/libgnt/gntcombobox.c	Tue Jul 20 02:48:15 2010 +0000
@@ -25,6 +25,7 @@
 #include "gntcombobox.h"
 #include "gnttree.h"
 #include "gntmarshal.h"
+#include "gntstyle.h"
 #include "gntutils.h"
 
 #include <string.h>
@@ -149,12 +150,11 @@
 gnt_combo_box_key_pressed(GntWidget *widget, const char *text)
 {
 	GntComboBox *box = GNT_COMBO_BOX(widget);
-	if (GNT_WIDGET_IS_FLAG_SET(box->dropdown->parent, GNT_WIDGET_MAPPED))
-	{
-		if (text[1] == 0)
-		{
-			switch (text[0])
-			{
+	gboolean showing = !!GNT_WIDGET_IS_FLAG_SET(box->dropdown->parent, GNT_WIDGET_MAPPED);
+
+	if (showing) {
+		if (text[1] == 0) {
+			switch (text[0]) {
 				case '\r':
 				case '\t':
 				case '\n':
@@ -165,20 +165,42 @@
 					return TRUE;
 			}
 		}
-		if (gnt_widget_key_pressed(box->dropdown, text))
-			return TRUE;
 	}
-	else
+
+	if (gnt_widget_key_pressed(box->dropdown, text)) {
+		if (!showing)
+			popup_dropdown(box);
+		return TRUE;
+	}
+
 	{
-		if (text[0] == 27)
-		{
-			if (strcmp(text, GNT_KEY_UP) == 0 ||
-					strcmp(text, GNT_KEY_DOWN) == 0)
-			{
-				popup_dropdown(box);
-				return TRUE;
-			}
-		}
+#define SEARCH_IN_RANGE(start, end) do { \
+		GntTreeRow *row; \
+		for (row = start; row != end; \
+				row = gnt_tree_row_get_next(tree, row)) { \
+			gpointer key = gnt_tree_row_get_key(tree, row); \
+			GList *list = gnt_tree_get_row_text_list(tree, key); \
+			gboolean found = FALSE; \
+			found = (list->data && g_ascii_strncasecmp(text, list->data, len) == 0); \
+			g_list_foreach(list, (GFunc)g_free, NULL); \
+			g_list_free(list); \
+			if (found) { \
+				if (!showing) \
+					popup_dropdown(box); \
+				gnt_tree_set_selected(tree, key); \
+				return TRUE; \
+			} \
+		} \
+} while (0)
+
+		int len = strlen(text);
+		GntTree *tree = GNT_TREE(box->dropdown);
+		GntTreeRow *current = tree->current;
+
+		SEARCH_IN_RANGE(gnt_tree_row_get_next(tree, current), NULL);
+		SEARCH_IN_RANGE(tree->top, current);
+
+#undef SEARCH_IN_RANGE
 	}
 
 	return FALSE;
@@ -229,9 +251,20 @@
 	gnt_widget_set_size(box->dropdown, widget->priv.width - 1, box->dropdown->priv.height);
 }
 
+static gboolean
+dropdown_menu(GntBindable *b, GList *null)
+{
+	if (GNT_WIDGET_IS_FLAG_SET(GNT_COMBO_BOX(b)->dropdown->parent, GNT_WIDGET_MAPPED))
+		return FALSE;
+	popup_dropdown(GNT_COMBO_BOX(b));
+	return TRUE;
+}
+
 static void
 gnt_combo_box_class_init(GntComboBoxClass *klass)
 {
+	GntBindableClass *bindable = GNT_BINDABLE_CLASS(klass);
+
 	parent_class = GNT_WIDGET_CLASS(klass);
 
 	parent_class->destroy = gnt_combo_box_destroy;
@@ -245,7 +278,7 @@
 	widget_lost_focus = parent_class->lost_focus;
 	parent_class->lost_focus = gnt_combo_box_lost_focus;
 
-	signals[SIG_SELECTION_CHANGED] = 
+	signals[SIG_SELECTION_CHANGED] =
 		g_signal_new("selection-changed",
 					 G_TYPE_FROM_CLASS(klass),
 					 G_SIGNAL_RUN_LAST,
@@ -254,6 +287,12 @@
 					 gnt_closure_marshal_VOID__POINTER_POINTER,
 					 G_TYPE_NONE, 2, G_TYPE_POINTER, G_TYPE_POINTER);
 
+	gnt_bindable_class_register_action(bindable, "dropdown", dropdown_menu,
+			GNT_KEY_DOWN, NULL);
+	gnt_bindable_register_binding(bindable, "dropdown", GNT_KEY_UP, NULL);
+
+	gnt_style_read_actions(G_OBJECT_CLASS_TYPE(klass), bindable);
+
 	GNTDEBUG;
 }
 
@@ -272,7 +311,7 @@
 	GNT_WIDGET_SET_FLAGS(box, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER | GNT_WIDGET_TRANSIENT);
 	gnt_box_set_pad(GNT_BOX(box), 0);
 	gnt_box_add_widget(GNT_BOX(box), combo->dropdown);
-	
+
 	widget->priv.minw = 4;
 	widget->priv.minh = 3;
 	GNTDEBUG;
--- a/finch/libgnt/gntentry.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/libgnt/gntentry.c	Tue Jul 20 02:48:15 2010 +0000
@@ -579,6 +579,28 @@
 }
 
 static gboolean
+suggest_next_page(GntBindable *bind, GList *null)
+{
+	GntEntry *entry = GNT_ENTRY(bind);
+	if (entry->ddown) {
+		gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "page-down", NULL);
+		return TRUE;
+	}
+	return FALSE;
+}
+
+static gboolean
+suggest_prev_page(GntBindable *bind, GList *null)
+{
+	GntEntry *entry = GNT_ENTRY(bind);
+	if (entry->ddown) {
+		gnt_bindable_perform_action_named(GNT_BINDABLE(entry->ddown), "page-up", NULL);
+		return TRUE;
+	}
+	return FALSE;
+}
+
+static gboolean
 del_to_home(GntBindable *bind, GList *null)
 {
 	GntEntry *entry = GNT_ENTRY(bind);
@@ -986,6 +1008,10 @@
 				GNT_KEY_DOWN, NULL);
 	gnt_bindable_class_register_action(bindable, "suggest-prev", suggest_prev,
 				GNT_KEY_UP, NULL);
+	gnt_bindable_class_register_action(bindable, "suggest-next-page", suggest_next_page,
+				GNT_KEY_PGDOWN, NULL);
+	gnt_bindable_class_register_action(bindable, "suggest-prev-page", suggest_prev_page,
+				GNT_KEY_PGUP, NULL);
 	gnt_bindable_class_register_action(bindable, "history-next", history_next,
 				GNT_KEY_CTRL_DOWN, NULL);
 	gnt_bindable_class_register_action(bindable, "history-prev", history_prev,
--- a/finch/libgnt/gnttree.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/libgnt/gnttree.c	Tue Jul 20 02:48:15 2010 +0000
@@ -1926,3 +1926,33 @@
 	return (row && row->parent) ? row->parent->key : NULL;
 }
 
+gpointer gnt_tree_row_get_key(GntTree *tree, GntTreeRow *row)
+{
+	g_return_val_if_fail(row && row->tree == tree, NULL);
+	return row->key;
+}
+
+GntTreeRow * gnt_tree_row_get_next(GntTree *tree, GntTreeRow *row)
+{
+	g_return_val_if_fail(row && row->tree == tree, NULL);
+	return row->next;
+}
+
+GntTreeRow * gnt_tree_row_get_prev(GntTree *tree, GntTreeRow *row)
+{
+	g_return_val_if_fail(row && row->tree == tree, NULL);
+	return row->prev;
+}
+
+GntTreeRow * gnt_tree_row_get_child(GntTree *tree, GntTreeRow *row)
+{
+	g_return_val_if_fail(row && row->tree == tree, NULL);
+	return row->child;
+}
+
+GntTreeRow * gnt_tree_row_get_parent(GntTree *tree, GntTreeRow *row)
+{
+	g_return_val_if_fail(row && row->tree == tree, NULL);
+	return row->parent;
+}
+
--- a/finch/libgnt/gnttree.h	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/libgnt/gnttree.h	Tue Jul 20 02:48:15 2010 +0000
@@ -222,6 +222,61 @@
 GList * gnt_tree_get_row_text_list(GntTree *tree, gpointer key);
 
 /**
+ * Get the key of a row.
+ *
+ * @param tree   The tree
+ * @param row    The GntTreeRow object
+ *
+ * @return The key of the row.
+ * @since 2.8.0 (gnt), 2.7.2 (pidgin)
+ */
+gpointer gnt_tree_row_get_key(GntTree *tree, GntTreeRow *row);
+
+/**
+ * Get the next row.
+ *
+ * @param tree The tree
+ * @param row  The GntTreeRow object
+ *
+ * @return The next row.
+ * @since 2.8.0 (gnt), 2.7.2 (pidgin)
+ */
+GntTreeRow * gnt_tree_row_get_next(GntTree *tree, GntTreeRow *row);
+
+/**
+ * Get the previous row.
+ *
+ * @param tree The tree
+ * @param row  The GntTreeRow object
+ *
+ * @return The previous row.
+ * @since 2.8.0 (gnt), 2.7.2 (pidgin)
+ */
+GntTreeRow * gnt_tree_row_get_prev(GntTree *tree, GntTreeRow *row);
+
+/**
+ * Get the child row.
+ *
+ * @param tree The tree
+ * @param row  The GntTreeRow object
+ *
+ * @return The child row.
+ * @since 2.8.0 (gnt), 2.7.2 (pidgin)
+ */
+GntTreeRow * gnt_tree_row_get_child(GntTree *tree, GntTreeRow *row);
+
+/**
+ * Get the parent row.
+ *
+ * @param tree The tree
+ * @param row  The GntTreeRow object
+ *
+ * @return The parent row.
+ * @since 2.8.0 (gnt), 2.7.2 (pidgin)
+ */
+GntTreeRow * gnt_tree_row_get_parent(GntTree *tree, GntTreeRow *row);
+
+/**
  * Get a list of text of the current row.
  *
  * @param tree  The tree
--- a/finch/libgnt/gntutils.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/finch/libgnt/gntutils.c	Tue Jul 20 02:48:15 2010 +0000
@@ -385,7 +385,6 @@
 	const char *name;
 	char *content;
 	xmlNode *ch;
-	gboolean processed = FALSE;
 	char *url = NULL;
 	gboolean insert_nl_s = FALSE, insert_nl_e = FALSE;
 
@@ -426,17 +425,14 @@
 
 	for (ch = node->children; ch; ch = ch->next) {
 		if (ch->type == XML_ELEMENT_NODE) {
-			processed = TRUE;
 			util_parse_html_to_tv(ch, tv, flag);
+		} else if (ch->type == XML_TEXT_NODE) {
+			content = (char*)xmlNodeGetContent(ch);
+			gnt_text_view_append_text_with_flags(tv, content, flag);
+			xmlFree(content);
 		}
 	}
 
-	if (!processed) {
-		content = (char*)xmlNodeGetContent(node);
-		gnt_text_view_append_text_with_flags(tv, content, flag);
-		xmlFree(content);
-	}
-
 	if (url) {
 		char *href = g_strdup_printf(" (%s)", url);
 		gnt_text_view_append_text_with_flags(tv, href, flag);
--- a/libpurple/Makefile.am	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/Makefile.am	Tue Jul 20 02:48:15 2010 +0000
@@ -170,13 +170,11 @@
 purple_builtheaders = purple.h version.h marshallers.h
 
 marshallers.h: marshallers.list
-	@echo "Generating marshallers.h"
-	$(GLIB_GENMARSHAL) --prefix=purple_smarshal $(srcdir)/marshallers.list --header > marshallers.h
+	$(AM_V_GEN)$(GLIB_GENMARSHAL) --prefix=purple_smarshal $(srcdir)/marshallers.list --header > marshallers.h
 
 marshallers.c: marshallers.list marshallers.h
-	@echo "Generating marshallers.c"
-	echo "#include \"marshallers.h\"" > marshallers.c
-	$(GLIB_GENMARSHAL) --prefix=purple_smarshal $(srcdir)/marshallers.list --body >> marshallers.c
+	$(AM_V_GEN)echo "#include \"marshallers.h\"" > marshallers.c
+	$(AM_V_at)$(GLIB_GENMARSHAL) --prefix=purple_smarshal $(srcdir)/marshallers.list --body >> marshallers.c
 
 if ENABLE_DBUS
 
@@ -212,16 +210,16 @@
 	$(srcdir)/protocols/jabber/libxmpp.c
 
 dbus-types.c: dbus-analyze-types.py $(purple_build_coreheaders)
-	cat $(purple_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DEFINE_TYPE\(%s\) > $@
+	$(AM_V_GEN)cat $(purple_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DEFINE_TYPE\(%s\) > $@
 
 dbus-types.h: dbus-analyze-types.py $(purple_build_coreheaders)
-	cat $(purple_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DECLARE_TYPE\(%s\) > $@
+	$(AM_V_GEN)cat $(purple_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --pattern=PURPLE_DBUS_DECLARE_TYPE\(%s\) > $@
 
 dbus-bindings.c: dbus-analyze-functions.py $(dbus_exported)
-	cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py > $@
+	$(AM_V_GEN)cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py > $@
 
 dbus-signals.c: dbus-analyze-signals.py $(dbus_signals)
-	cat $(dbus_signals) | $(PYTHON) $(srcdir)/dbus-analyze-signals.py > $@
+	$(AM_V_GEN)cat $(dbus_signals) | $(PYTHON) $(srcdir)/dbus-analyze-signals.py > $@
 
 dbus-server.$(OBJEXT): dbus-bindings.c dbus-signals.c dbus-types.c dbus-types.h
 dbus-server.lo: dbus-bindings.c dbus-signals.c dbus-types.c dbus-types.h
@@ -236,11 +234,11 @@
 libpurple_client_la_LIBADD = $(DBUS_LIBS)
 
 purple-client-bindings.c: dbus-analyze-functions.py $(dbus_exported)
-	cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py --client > $@
+	$(AM_V_GEN)cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py --client > $@
 
 purple-client-bindings.h: dbus-analyze-types.py dbus-analyze-functions.py $(purple_coreheaders) $(addprefix media/, $(purple_mediaheaders)) $(purple_builtheaders) $(dbus_exported)
-	cat $(purple_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --keyword=enum --verbatim > $@
-	cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py --client --headers >> $@
+	$(AM_V_GEN)cat $(purple_build_coreheaders) | $(PYTHON) $(srcdir)/dbus-analyze-types.py --keyword=enum --verbatim > $@
+	$(AM_V_at)cat $(dbus_build_exported) | $(PYTHON) $(srcdir)/dbus-analyze-functions.py --client --headers >> $@
 
 $(libpurple_client_la_OBJECTS): purple-client-bindings.h purple-client-bindings.c
 
--- a/libpurple/account.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/account.c	Tue Jul 20 02:48:15 2010 +0000
@@ -1819,7 +1819,7 @@
 
 	if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, set_public_alias))
 		prpl_info->set_public_alias(gc, alias, success_cb, failure_cb);
-	else {
+	else if (failure_cb) {
 		struct public_alias_closure *closure =
 				g_new0(struct public_alias_closure, 1);
 		closure->account = account;
@@ -1859,7 +1859,7 @@
 
 	if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_public_alias))
 		prpl_info->get_public_alias(gc, success_cb, failure_cb);
-	else {
+	else if (failure_cb) {
 		struct public_alias_closure *closure =
 				g_new0(struct public_alias_closure, 1);
 		closure->account = account;
--- a/libpurple/certificate.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/certificate.c	Tue Jul 20 02:48:15 2010 +0000
@@ -99,7 +99,8 @@
 			         "that can verify it is currently trusted.");
 			break;
 		case PURPLE_CERTIFICATE_NOT_ACTIVATED:
-			return _("The certificate is not valid yet.");
+			return _("The certificate is not valid yet.  Check that your "
+			         "computer's date and time are accurate.");
 			break;
 		case PURPLE_CERTIFICATE_EXPIRED:
 			return _("The certificate has expired and should not be "
--- a/libpurple/connection.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/connection.c	Tue Jul 20 02:48:15 2010 +0000
@@ -516,7 +516,8 @@
 	account = data;
 	gc = purple_account_get_connection(account);
 
-	gc->disconnect_timeout = 0;
+	if (gc != NULL)
+		gc->disconnect_timeout = 0;
 
 	password = g_strdup(purple_account_get_password(account));
 	purple_account_disconnect(account);
--- a/libpurple/media/backend-fs2.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/media/backend-fs2.c	Tue Jul 20 02:48:15 2010 +0000
@@ -1639,6 +1639,7 @@
 		g_value_set_boxed(&_params[_num_params].value,
 			relay_info);
 		g_value_array_free(relay_info);
+		_num_params++;
 	}
 
 	session = get_session(self, sess_id);
--- a/libpurple/plugins/Makefile.mingw	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/plugins/Makefile.mingw	Tue Jul 20 02:48:15 2010 +0000
@@ -55,7 +55,7 @@
 	$(MAKE) -C $(SSL_PLUGIN) -f $(MINGW_MAKEFILE) install
 	cp *.dll $(PURPLE_INSTALL_PLUGINS_DIR)
 
-.c.dll:
+%.dll: %.c $(PURPLE_CONFIG_H) $(PURPLE_VERSION_H)
 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@.o -c $<
 	$(CC) -shared $@.o $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $@
 
--- a/libpurple/plugins/perl/common/Log.xs	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/plugins/perl/common/Log.xs	Tue Jul 20 02:48:15 2010 +0000
@@ -27,6 +27,9 @@
 		newCONSTSUB(flags_stash, (char *)civ->name, newSViv(civ->iv));
 }
 
+Purple::Handle
+purple_log_get_handle()
+
 int
 purple_log_common_sizer(log)
 	Purple::Log log
--- a/libpurple/protocols/gg/lib/resolver.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/gg/lib/resolver.c	Tue Jul 20 02:48:15 2010 +0000
@@ -551,9 +551,9 @@
 		}
 
 		if (write(pipes[1], &addr, sizeof(addr)) != sizeof(addr))
-			exit(1);
+			_exit(1);
 
-		exit(0);
+		_exit(0);
 	}
 
 	close(pipes[1]);
--- a/libpurple/protocols/irc/cmds.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/irc/cmds.c	Tue Jul 20 02:48:15 2010 +0000
@@ -238,16 +238,16 @@
 		if (!args[0] && irc_ischannel(target))
 			buf = irc_format(irc, "vc", "MODE", target);
 		else if (args[0] && (*args[0] == '+' || *args[0] == '-'))
-			buf = irc_format(irc, "vcv", "MODE", target, args[0]);
+			buf = irc_format(irc, "vcn", "MODE", target, args[0]);
 		else if (args[0])
-			buf = irc_format(irc, "vv", "MODE", args[0]);
+			buf = irc_format(irc, "vn", "MODE", args[0]);
 		else
 			return 0;
 	} else if (!strcmp(cmd, "umode")) {
 		if (!args[0])
 			return 0;
 		gc = purple_account_get_connection(irc->account);
-		buf = irc_format(irc, "vnv", "MODE", purple_connection_get_display_name(gc), args[0]);
+		buf = irc_format(irc, "vnc", "MODE", purple_connection_get_display_name(gc), args[0]);
 	} else {
 		return 0;
 	}
@@ -437,7 +437,7 @@
 	if (!args || !args[0])
 		return 0;
 
-	buf = irc_format(irc, "v", args[0]);
+	buf = irc_format(irc, "n", args[0]);
 	irc_send(irc, buf);
 	g_free(buf);
 
--- a/libpurple/protocols/jabber/auth_cyrus.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/auth_cyrus.c	Tue Jul 20 02:48:15 2010 +0000
@@ -36,7 +36,7 @@
 {
 	purple_connection_error_reason(purple_account_get_connection(account),
 		PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
-		_("Server requires plaintext authentication over an unencrypted stream"));
+		_("Server may require plaintext authentication over an unencrypted stream"));
 }
 
 static void start_cyrus_wrapper(JabberStream *js)
@@ -240,8 +240,9 @@
 				 * it in plaintext, see if we can turn on
 				 * plaintext auth
 				 */
+				/* XXX Should we just check for PLAIN/LOGIN being offered mechanisms? */
 				} else if (!plaintext) {
-					char *msg = g_strdup_printf(_("%s requires plaintext authentication over an unencrypted connection.  Allow this and continue authentication?"),
+					char *msg = g_strdup_printf(_("%s may require plaintext authentication over an unencrypted connection.  Allow this and continue authentication?"),
 							purple_account_get_username(account));
 					purple_request_yes_no(js->gc, _("Plaintext Authentication"),
 							_("Plaintext Authentication"),
@@ -408,6 +409,12 @@
 	{
 		char *mech_name = xmlnode_get_data(mechnode);
 
+		/* Ignore blank mechanisms and EXTERNAL.  External isn't
+		 * supported, and Cyrus SASL's mechanism returns
+		 * SASL_NOMECH when the caller (us) doesn't configure it.
+		 * Except SASL_NOMECH is supposed to mean "no concordant
+		 * mechanisms"...  Easiest just to blacklist it (for now).
+		 */
 		if (!mech_name || !*mech_name ||
 				g_str_equal(mech_name, "EXTERNAL")) {
 			g_free(mech_name);
@@ -419,6 +426,10 @@
 		g_free(mech_name);
 	}
 
+	/* Strip off the trailing ' ' */
+	if (js->sasl_mechs->len > 1)
+		g_string_truncate(js->sasl_mechs, js->sasl_mechs->len - 1);
+
 	jabber_sasl_build_callbacks(js);
 	ret = jabber_auth_start_cyrus(js, reply, error);
 
--- a/libpurple/protocols/jabber/bosh.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/bosh.c	Tue Jul 20 02:48:15 2010 +0000
@@ -195,6 +195,11 @@
 	g_free(path);
 	conn->pipelining = TRUE;
 
+	if (purple_ip_address_is_valid(host))
+		js->serverFQDN = g_strdup(js->user->domain);
+	else
+		js->serverFQDN = g_strdup(host);
+
 	if ((user && user[0] != '\0') || (passwd && passwd[0] != '\0')) {
 		purple_debug_info("jabber", "Ignoring unexpected username and password "
 		                            "in BOSH URL.\n");
--- a/libpurple/protocols/jabber/caps.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/caps.c	Tue Jul 20 02:48:15 2010 +0000
@@ -29,6 +29,7 @@
 #include "iq.h"
 #include "presence.h"
 #include "util.h"
+#include "xdata.h"
 
 #define JABBER_CAPS_FILENAME "xmpp-caps.xml"
 
@@ -41,20 +42,14 @@
 static GHashTable *nodetable = NULL; /* char *node -> JabberCapsNodeExts */
 static guint       save_timer = 0;
 
-/**
- *	Processes a query-node and returns a JabberCapsClientInfo object with all relevant info.
- *
- *	@param 	query 	A query object.
- *	@return 		A JabberCapsClientInfo object.
- */
-static JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query);
-
 /* Free a GList of allocated char* */
 static void
 free_string_glist(GList *list)
 {
-	g_list_foreach(list, (GFunc)g_free, NULL);
-	g_list_free(list);
+	while (list) {
+		g_free(list->data);
+		list = g_list_delete_link(list, list);
+	}
 }
 
 static JabberCapsNodeExts*
@@ -238,15 +233,15 @@
 	if(!capsdata)
 		return;
 
-	if (strcmp(capsdata->name, "capabilities") != 0) {
+	if (!g_str_equal(capsdata->name, "capabilities")) {
 		xmlnode_free(capsdata);
 		return;
 	}
 
-	for(client = capsdata->child; client; client = client->next) {
-		if(client->type != XMLNODE_TYPE_TAG)
+	for (client = capsdata->child; client; client = client->next) {
+		if (client->type != XMLNODE_TYPE_TAG)
 			continue;
-		if(!strcmp(client->name, "client")) {
+		if (g_str_equal(client->name, "client")) {
 			JabberCapsClientInfo *value = g_new0(JabberCapsClientInfo, 1);
 			JabberCapsTuple *key = (JabberCapsTuple*)&value->tuple;
 			xmlnode *child;
@@ -259,15 +254,15 @@
 			if (key->hash == NULL)
 				exts = jabber_caps_find_exts_by_node(key->node);
 
-			for(child = client->child; child; child = child->next) {
-				if(child->type != XMLNODE_TYPE_TAG)
+			for (child = client->child; child; child = child->next) {
+				if (child->type != XMLNODE_TYPE_TAG)
 					continue;
-				if(!strcmp(child->name,"feature")) {
+				if (g_str_equal(child->name, "feature")) {
 					const char *var = xmlnode_get_attrib(child, "var");
 					if(!var)
 						continue;
 					value->features = g_list_append(value->features,g_strdup(var));
-				} else if(!strcmp(child->name,"identity")) {
+				} else if (g_str_equal(child->name, "identity")) {
 					const char *category = xmlnode_get_attrib(child, "category");
 					const char *type = xmlnode_get_attrib(child, "type");
 					const char *name = xmlnode_get_attrib(child, "name");
@@ -284,15 +279,15 @@
 					id->lang = g_strdup(lang);
 
 					value->identities = g_list_append(value->identities,id);
-				} else if(!strcmp(child->name,"x")) {
+				} else if (g_str_equal(child->name, "x")) {
 					/* TODO: See #7814 -- this might cause problems if anyone
 					 * ever actually specifies forms. In fact, for this to
 					 * work properly, that bug needs to be fixed in
 					 * xmlnode_from_str, not the output version... */
 					value->forms = g_list_append(value->forms, xmlnode_copy(child));
-				} else if (!strcmp(child->name, "ext") && key->hash != NULL) {
+				} else if (g_str_equal(child->name, "ext") && key->hash != NULL) {
 					purple_debug_warning("jabber", "Ignoring exts when reading new-style caps\n");
-				} else if (!strcmp(child->name, "ext")) {
+				} else if (g_str_equal(child->name, "ext")) {
 					/* TODO: Do we care about reading in the identities listed here? */
 					const char *identifier = xmlnode_get_attrib(child, "identifier");
 					xmlnode *node;
@@ -304,7 +299,7 @@
 					for (node = child->child; node; node = node->next) {
 						if (node->type != XMLNODE_TYPE_TAG)
 							continue;
-						if (!strcmp(node->name, "feature")) {
+						if (g_str_equal(node->name, "feature")) {
 							const char *var = xmlnode_get_attrib(node, "var");
 							if (!var)
 								continue;
@@ -463,13 +458,13 @@
 		 * size in jabber_caps_calculate_hash is large enough. The cipher API
 		 * doesn't seem to offer a "Get the hash size" function(?).
 		 */
-		if (!strcmp(userdata->hash, "sha-1")) {
+		if (g_str_equal(userdata->hash, "sha-1")) {
 			hash = jabber_caps_calculate_hash(info, "sha1");
-		} else if (!strcmp(userdata->hash, "md5")) {
+		} else if (g_str_equal(userdata->hash, "md5")) {
 			hash = jabber_caps_calculate_hash(info, "md5");
 		}
 
-		if (!hash || strcmp(hash, userdata->ver)) {
+		if (!hash || !g_str_equal(hash, userdata->ver)) {
 			purple_debug_warning("jabber", "Could not validate caps info from "
 			                     "%s. Expected %s, got %s\n",
 			                     xmlnode_get_attrib(packet, "from"),
@@ -709,44 +704,6 @@
 }
 
 static gint
-jabber_identity_compare(gconstpointer a, gconstpointer b)
-{
-	const JabberIdentity *ac;
-	const JabberIdentity *bc;
-	gint cat_cmp;
-	gint typ_cmp;
-
-	ac = a;
-	bc = b;
-
-	if ((cat_cmp = strcmp(ac->category, bc->category)) == 0) {
-		if ((typ_cmp = strcmp(ac->type, bc->type)) == 0) {
-			if (!ac->lang && !bc->lang) {
-				return 0;
-			} else if (ac->lang && !bc->lang) {
-				return 1;
-			} else if (!ac->lang && bc->lang) {
-				return -1;
-			} else {
-				return strcmp(ac->lang, bc->lang);
-			}
-		} else {
-			return typ_cmp;
-		}
-	} else {
-		return cat_cmp;
-	}
-}
-
-static gchar *jabber_caps_get_formtype(const xmlnode *x) {
-	xmlnode *formtypefield;
-	formtypefield = xmlnode_get_child(x, "field");
-	while (formtypefield && strcmp(xmlnode_get_attrib(formtypefield, "var"), "FORM_TYPE")) formtypefield = xmlnode_get_next_twin(formtypefield);
-	formtypefield = xmlnode_get_child(formtypefield, "value");
-	return xmlnode_get_data(formtypefield);;
-}
-
-static gint
 jabber_xdata_compare(gconstpointer a, gconstpointer b)
 {
 	const xmlnode *aformtypefield = a;
@@ -755,8 +712,8 @@
 	char *bformtype;
 	int result;
 
-	aformtype = jabber_caps_get_formtype(aformtypefield);
-	bformtype = jabber_caps_get_formtype(bformtypefield);
+	aformtype = jabber_x_data_get_formtype(aformtypefield);
+	bformtype = jabber_x_data_get_formtype(bformtypefield);
 
 	result = strcmp(aformtype, bformtype);
 	g_free(aformtype);
@@ -764,20 +721,21 @@
 	return result;
 }
 
-static JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query)
+JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query)
 {
 	xmlnode *child;
 	JabberCapsClientInfo *info;
 
-	if (!query || strcmp(query->xmlns, NS_DISCO_INFO))
-		return 0;
+	if (!query || !g_str_equal(query->name, "query") ||
+			!purple_strequal(query->xmlns, NS_DISCO_INFO))
+		return NULL;
 
 	info = g_new0(JabberCapsClientInfo, 1);
 
 	for(child = query->child; child; child = child->next) {
 		if (child->type != XMLNODE_TYPE_TAG)
 			continue;
-		if (!strcmp(child->name,"identity")) {
+		if (g_str_equal(child->name, "identity")) {
 			/* parse identity */
 			const char *category = xmlnode_get_attrib(child, "category");
 			const char *type = xmlnode_get_attrib(child, "type");
@@ -795,13 +753,13 @@
 			id->lang = g_strdup(lang);
 
 			info->identities = g_list_append(info->identities, id);
-		} else if (!strcmp(child->name, "feature")) {
+		} else if (g_str_equal(child->name, "feature")) {
 			/* parse feature */
 			const char *var = xmlnode_get_attrib(child, "var");
 			if (var)
 				info->features = g_list_prepend(info->features, g_strdup(var));
-		} else if (!strcmp(child->name, "x")) {
-			if (child->xmlns && !strcmp(child->xmlns, "jabber:x:data")) {
+		} else if (g_str_equal(child->name, "x")) {
+			if (purple_strequal(child->xmlns, "jabber:x:data")) {
 				/* x-data form */
 				xmlnode *dataform = xmlnode_copy(child);
 				info->forms = g_list_append(info->forms, dataform);
@@ -848,9 +806,12 @@
 static void 
 append_escaped_string(PurpleCipherContext *context, const gchar *str)
 {
-	char *tmp = g_markup_escape_text(str, -1);
-	purple_cipher_context_append(context, (const guchar *)tmp, strlen(tmp));
-	g_free(tmp);
+	if (str && *str) {
+		char *tmp = g_markup_escape_text(str, -1);
+		purple_cipher_context_append(context, (const guchar *)tmp, strlen(tmp));
+		g_free(tmp);
+	}
+
 	purple_cipher_context_append(context, (const guchar *)"<", 1);
 }
 
@@ -904,7 +865,7 @@
 	/* concat x-data forms to the verification string */
 	for(node = info->forms; node; node = node->next) {
 		xmlnode *data = (xmlnode *)node->data;
-		gchar *formtype = jabber_caps_get_formtype(data);
+		gchar *formtype = jabber_x_data_get_formtype(data);
 		GList *fields = jabber_caps_xdata_get_fields(data);
 
 		/* append FORM_TYPE's field value to the verification string */
@@ -965,6 +926,10 @@
 	}
 
 	info.features = features;
+	/* TODO: This copy can go away, I think, since jabber_identities
+	 * is pre-sorted, so the sort in calculate_hash should be idempotent.
+	 * However, I want to test that. --darkrain
+	 */
 	info.identities = g_list_copy(jabber_identities);
 	info.forms = NULL;
 
@@ -989,7 +954,7 @@
 	for (node = accounts; node; node = node->next) {
 		PurpleAccount *account = node->data;
 		const char *prpl_id = purple_account_get_protocol_id(account);
-		if (!strcmp("prpl-jabber", prpl_id) && purple_account_is_connected(account)) {
+		if (g_str_equal("prpl-jabber", prpl_id) && purple_account_is_connected(account)) {
 			PurpleConnection *gc = purple_account_get_connection(account);
 			jabber_presence_send(gc->proto_data, TRUE);
 		}
--- a/libpurple/protocols/jabber/caps.h	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/caps.h	Tue Jul 20 02:48:15 2010 +0000
@@ -115,4 +115,15 @@
  */
 void jabber_caps_broadcast_change(void);
 
+/**
+ * Parse the <query/> element from an IQ stanza into a JabberCapsClientInfo
+ * struct.
+ *
+ * Exposed for tests
+ *
+ * @param query The 'query' element from an IQ reply stanza.
+ * @returns A JabberCapsClientInfo struct, or NULL on error
+ */
+JabberCapsClientInfo *jabber_caps_parse_client_info(xmlnode *query);
+
 #endif /* PURPLE_JABBER_CAPS_H_ */
--- a/libpurple/protocols/jabber/data.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/data.c	Tue Jul 20 02:48:15 2010 +0000
@@ -41,9 +41,16 @@
 jabber_data_create_from_data(gconstpointer rawdata, gsize size, const char *type,
 	gboolean ephemeral, JabberStream *js)
 {
-	JabberData *data = g_new0(JabberData, 1);
-	gchar *checksum = jabber_calculate_data_hash(rawdata, size, "sha1");
-	gchar cid[256];
+	JabberData *data;
+	gchar *checksum;
+	gchar cid[256]; /* "Big enough" for a SHA1 hex hash value */
+
+	g_return_val_if_fail(rawdata != NULL, NULL);
+	g_return_val_if_fail(size > 0, NULL);
+	g_return_val_if_fail(type != NULL, NULL);
+
+	data = g_new0(JabberData, 1);
+	checksum = jabber_calculate_data_hash(rawdata, size, "sha1");
 
 	g_snprintf(cid, sizeof(cid), "sha1+%s@bob.xmpp.org", checksum);
 	g_free(checksum);
@@ -62,6 +69,7 @@
 jabber_data_delete(gpointer cbdata)
 {
 	JabberData *data = cbdata;
+
 	g_free(data->cid);
 	g_free(data->type);
 	g_free(data->data);
@@ -76,6 +84,8 @@
 	gchar *raw_data = NULL;
 	const gchar *cid, *type;
 
+	g_return_val_if_fail(tag != NULL, NULL);
+
 	/* check if this is a "data" tag */
 	if (strcmp(tag->name, "data") != 0) {
 		purple_debug_error("jabber", "Invalid data element\n");
@@ -117,12 +127,16 @@
 void
 jabber_data_destroy(JabberData *data)
 {
+	g_return_if_fail(data != NULL);
+
 	jabber_data_delete(data);
 }
 
 const char *
 jabber_data_get_cid(const JabberData *data)
 {
+	g_return_val_if_fail(data != NULL, NULL);
+
 	return data->cid;
 }
 
@@ -130,26 +144,37 @@
 const char *
 jabber_data_get_type(const JabberData *data)
 {
+	g_return_val_if_fail(data != NULL, NULL);
+
 	return data->type;
 }
 
 gsize
 jabber_data_get_size(const JabberData *data)
 {
+	g_return_val_if_fail(data != NULL, 0);
+
 	return data->size;
 }
 
 gpointer
 jabber_data_get_data(const JabberData *data)
 {
+	g_return_val_if_fail(data != NULL, NULL);
+
 	return data->data;
 }
 
 xmlnode *
 jabber_data_get_xml_definition(const JabberData *data)
 {
-	xmlnode *tag = xmlnode_new("data");
-	char *base64data = purple_base64_encode(data->data, data->size);
+	xmlnode *tag;
+	char *base64data;
+
+	g_return_val_if_fail(data != NULL, NULL);
+
+	tag = xmlnode_new("data");
+	base64data = purple_base64_encode(data->data, data->size);
 
 	xmlnode_set_namespace(tag, NS_BOB);
 	xmlnode_set_attrib(tag, "cid", data->cid);
@@ -165,12 +190,18 @@
 xmlnode *
 jabber_data_get_xhtml_im(const JabberData *data, const gchar *alt)
 {
-	xmlnode *img = xmlnode_new("img");
-	char src[128];
+	xmlnode *img;
+	char *src;
+
+	g_return_val_if_fail(data != NULL, NULL);
+	g_return_val_if_fail(alt != NULL, NULL);
 
+	img = xmlnode_new("img");
 	xmlnode_set_attrib(img, "alt", alt);
-	g_snprintf(src, sizeof(src), "cid:%s", data->cid);
+
+	src = g_strconcat("cid:", data->cid, NULL);
 	xmlnode_set_attrib(img, "src", src);
+	g_free(src);
 
 	return img;
 }
@@ -260,7 +291,7 @@
 	if (data_element && type == JABBER_IQ_RESULT) {
 		JabberData *data = jabber_data_create_from_xml(data_element);
 
-		if (!ephemeral) {
+		if (data && !ephemeral) {
 			jabber_data_associate_remote(js, from, data);
 		}
 		cb(data, alt, userdata);
@@ -269,7 +300,7 @@
 			"Responder didn't recognize requested data\n");
 		cb(NULL, alt, userdata);
 	} else {
-		purple_debug_error("jabber", "Unknown response to data request\n");
+		purple_debug_warning("jabber", "Unknown response to data request\n");
 		cb(NULL, alt, userdata);
 	}
 
@@ -281,9 +312,17 @@
     gchar *alt, gboolean ephemeral, JabberDataRequestCallback cb,
     gpointer userdata)
 {
-	JabberIq *request = jabber_iq_new(js, JABBER_IQ_GET);
-	xmlnode *data_request = jabber_data_get_xml_request(cid);
-	JabberDataRequestData *data = g_new0(JabberDataRequestData, 1);
+	JabberIq *request;
+	xmlnode *data_request;
+	JabberDataRequestData *data;
+
+	g_return_if_fail(cid != NULL);
+	g_return_if_fail(who != NULL);
+	g_return_if_fail(alt != NULL);
+
+	request = jabber_iq_new(js, JABBER_IQ_GET);
+	data_request = jabber_data_get_xml_request(cid);
+	data = g_new0(JabberDataRequestData, 1);
 
 	data->userdata = userdata;
 	data->alt = alt;
@@ -333,6 +372,8 @@
 void
 jabber_data_associate_local(JabberData *data, const gchar *alt)
 {
+	g_return_if_fail(data != NULL);
+
 	purple_debug_info("jabber", "associating local data object\n alt = %s, cid = %s\n",
 		alt , jabber_data_get_cid(data));
 	if (alt)
@@ -345,7 +386,9 @@
 jabber_data_associate_remote(JabberStream *js, const gchar *who, JabberData *data)
 {
 	gchar *cid;
-	
+
+	g_return_if_fail(data != NULL);
+
 	if (jabber_data_has_valid_hash(data)) {
 		cid = g_strdup(jabber_data_get_cid(data));
 	} else {
--- a/libpurple/protocols/jabber/jabber.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Tue Jul 20 02:48:15 2010 +0000
@@ -218,22 +218,25 @@
 
 	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,
+	if(purple_ssl_is_supported()) {
+		jabber_send_raw(js,
+				"<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1);
+		return TRUE;
+	}
+
+	starttls = xmlnode_get_child(packet, "starttls");
+	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,
+		return TRUE;
+	}
+
+	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 TRUE;
 	}
 
 	return FALSE;
@@ -543,6 +546,13 @@
 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
 {
 	JabberStream *js = purple_connection_get_protocol_data(gc);
+
+	g_return_val_if_fail(js != NULL, -1);
+	/* TODO: It's probably worthwhile to restrict this to when the account
+	 * state is CONNECTED, but I can /almost/ envision reasons for wanting
+	 * to do things during the connection process.
+	 */
+
 	jabber_send_raw(js, buf, len);
 	return len;
 }
@@ -1952,20 +1962,53 @@
 	}
 }
 
-void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name) {
+gint
+jabber_identity_compare(gconstpointer a, gconstpointer b)
+{
+	const JabberIdentity *ac;
+	const JabberIdentity *bc;
+	gint cat_cmp;
+	gint typ_cmp;
+
+	ac = a;
+	bc = b;
+
+	if ((cat_cmp = strcmp(ac->category, bc->category)) == 0) {
+		if ((typ_cmp = strcmp(ac->type, bc->type)) == 0) {
+			if (!ac->lang && !bc->lang) {
+				return 0;
+			} else if (ac->lang && !bc->lang) {
+				return 1;
+			} else if (!ac->lang && bc->lang) {
+				return -1;
+			} else {
+				return strcmp(ac->lang, bc->lang);
+			}
+		} else {
+			return typ_cmp;
+		}
+	} else {
+		return cat_cmp;
+	}
+}
+
+void jabber_add_identity(const gchar *category, const gchar *type,
+                         const gchar *lang, const gchar *name)
+{
 	GList *identity;
 	JabberIdentity *ident;
+
 	/* both required according to XEP-0030 */
 	g_return_if_fail(category != NULL);
 	g_return_if_fail(type != NULL);
 
-	for(identity = jabber_identities; identity; identity = identity->next) {
-		JabberIdentity *ident = (JabberIdentity*)identity->data;
-		if (!strcmp(ident->category, category) &&
-		    !strcmp(ident->type, type) &&
-		    ((!ident->lang && !lang) || (ident->lang && lang && !strcmp(ident->lang, lang)))) {
+	/* Check if this identity is already there... */
+	for (identity = jabber_identities; identity; identity = identity->next) {
+		JabberIdentity *id = identity->data;
+		if (g_str_equal(id->category, category) &&
+			g_str_equal(id->type, type) &&
+			purple_strequal(id->lang, lang))
 			return;
-		}
 	}
 
 	ident = g_new0(JabberIdentity, 1);
@@ -1973,7 +2016,8 @@
 	ident->type = g_strdup(type);
 	ident->lang = g_strdup(lang);
 	ident->name = g_strdup(name);
-	jabber_identities = g_list_prepend(jabber_identities, ident);
+	jabber_identities = g_list_insert_sorted(jabber_identities, ident,
+	                                         jabber_identity_compare);
 }
 
 static void jabber_identities_destroy(void)
@@ -3430,8 +3474,7 @@
 			for (iter = jb->resources; iter ; iter = g_list_next(iter)) {
 				JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data;
 
-				if (jabber_resource_has_capability(jbr,
-						"http://jabber.org/protocol/si/profile/file-transfer")
+				if (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER)
 			    	&& (jabber_resource_has_capability(jbr,
 			    			NS_BYTESTREAMS)
 			        	|| jabber_resource_has_capability(jbr, NS_IBB))) {
@@ -3733,7 +3776,7 @@
 	jabber_add_feature("http://jabber.org/protocol/muc", 0);
 	jabber_add_feature("http://jabber.org/protocol/muc#user", 0);
 	jabber_add_feature("http://jabber.org/protocol/si", 0);
-	jabber_add_feature("http://jabber.org/protocol/si/profile/file-transfer", 0);
+	jabber_add_feature(NS_SI_FILE_TRANSFER, 0);
 	jabber_add_feature(NS_XHTML_IM, 0);
 	jabber_add_feature(NS_PING, 0);
 
--- a/libpurple/protocols/jabber/jabber.h	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/jabber.h	Tue Jul 20 02:48:15 2010 +0000
@@ -303,6 +303,9 @@
 
 /* what kind of additional features as returned from disco#info are supported? */
 extern GList *jabber_features;
+/* A sorted list of identities advertised.  Use jabber_add_identity to add
+ * so it remains sorted.
+ */
 extern GList *jabber_identities;
 
 void jabber_stream_features_parse(JabberStream *js, xmlnode *packet);
@@ -342,6 +345,11 @@
 void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name);
 
 /**
+ * GCompareFunc for JabberIdentity structs.
+ */
+gint jabber_identity_compare(gconstpointer a, gconstpointer b);
+
+/**
  * Returns true if this connection is over a secure (SSL) stream. Use this
  * instead of checking js->gsc because BOSH stores its PurpleSslConnection
  * members in its own data structure.
--- a/libpurple/protocols/jabber/jutil.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/jutil.c	Tue Jul 20 02:48:15 2010 +0000
@@ -303,8 +303,10 @@
 
 	c = (const guchar *)in;
 	for ( ; *c; ++c) {
-		if (*c > 0x7f ||
+		if (*c > 0x7f || /* Non-ASCII characters */
+				*c == 0x7f || /* ASCII Delete character */
 				(*c < 0x20 && *c != '\t' && *c != '\n' && *c != '\r'))
+					/* ASCII control characters */
 			return NULL;
 	}
 
--- a/libpurple/protocols/jabber/message.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/message.c	Tue Jul 20 02:48:15 2010 +0000
@@ -1239,14 +1239,19 @@
 
 unsigned int jabber_send_typing(PurpleConnection *gc, const char *who, PurpleTypingState state)
 {
+	JabberStream *js;
 	JabberMessage *jm;
 	JabberBuddy *jb;
 	JabberBuddyResource *jbr;
-	char *resource = jabber_get_resource(who);
+	char *resource;	
 
-	jb = jabber_buddy_find(gc->proto_data, who, TRUE);
+	js = purple_connection_get_protocol_data(gc);
+	jb = jabber_buddy_find(js, who, TRUE);
+	if (!jb)
+		return 0;
+
+	resource = jabber_get_resource(who);
 	jbr = jabber_buddy_find_resource(jb, resource);
-
 	g_free(resource);
 
 	/* We know this entity doesn't support chat states */
@@ -1261,7 +1266,7 @@
 
 	/* TODO: figure out threading */
 	jm = g_new0(JabberMessage, 1);
-	jm->js = gc->proto_data;
+	jm->js = js;
 	jm->type = JABBER_MESSAGE_CHAT;
 	jm->to = g_strdup(who);
 	jm->id = jabber_get_next_id(jm->js);
--- a/libpurple/protocols/jabber/namespaces.h	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/namespaces.h	Tue Jul 20 02:48:15 2010 +0000
@@ -61,6 +61,9 @@
 #define NS_AVATAR_1_1_DATA      "urn:xmpp:avatar:data"
 #define NS_AVATAR_1_1_METADATA  "urn:xmpp:avatar:metadata"
 
+/* XEP-0096 SI File Transfer */
+#define NS_SI_FILE_TRANSFER 	"http://jabber.org/protocol/si/profile/file-transfer"
+
 /* XEP-0124 Bidirectional-streams Over Synchronous HTTP (BOSH) */
 #define NS_BOSH "http://jabber.org/protocol/httpbind"
 
--- a/libpurple/protocols/jabber/si.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/si.c	Tue Jul 20 02:48:15 2010 +0000
@@ -1262,12 +1262,10 @@
 	xmlnode_set_namespace(si, "http://jabber.org/protocol/si");
 	jsx->stream_id = jabber_get_next_id(jsx->js);
 	xmlnode_set_attrib(si, "id", jsx->stream_id);
-	xmlnode_set_attrib(si, "profile",
-			"http://jabber.org/protocol/si/profile/file-transfer");
+	xmlnode_set_attrib(si, "profile", NS_SI_FILE_TRANSFER);
 
 	file = xmlnode_new_child(si, "file");
-	xmlnode_set_namespace(file,
-			"http://jabber.org/protocol/si/profile/file-transfer");
+	xmlnode_set_namespace(file, NS_SI_FILE_TRANSFER);
 	xmlnode_set_attrib(file, "name", xfer->filename);
 	g_snprintf(buf, sizeof(buf), "%" G_GSIZE_FORMAT, xfer->size);
 	xmlnode_set_attrib(file, "size", buf);
@@ -1488,7 +1486,7 @@
 
 		if (jabber_resource_has_capability(jbr, NS_IBB))
 			jsx->stream_method |= STREAM_METHOD_IBB;
-		if (jabber_resource_has_capability(jbr, "http://jabber.org/protocol/si/profile/file-transfer")) {
+		if (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER)) {
 			jabber_si_xfer_send_request(xfer);
 			return;
 		}
@@ -1523,7 +1521,8 @@
 		JabberBuddy *jb;
 		JabberBuddyResource *jbr = NULL;
 		char *resource;
-
+		GList *resources = NULL;
+		
 		if(NULL != (resource = jabber_get_resource(xfer->who))) {
 			/* they've specified a resource, no need to ask or
 			 * default or anything, just do it */
@@ -1535,7 +1534,22 @@
 
 		jb = jabber_buddy_find(jsx->js, xfer->who, TRUE);
 
-		if(!jb || !jb->resources) {
+		if (jb) {
+			GList *l;
+
+			for (l = jb->resources ; l ; l = g_list_next(l)) {
+				jbr = l->data;
+
+				if (!jabber_resource_know_capabilities(jbr) ||
+				    (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER)
+				     && (jabber_resource_has_capability(jbr, NS_BYTESTREAMS)
+				         || jabber_resource_has_capability(jbr, NS_IBB)))) {
+					resources = g_list_append(resources, jbr);
+				}
+			}
+		}
+		
+		if (!resources) {
 			/* no resources online, we're trying to send to someone
 			 * whose presence we're not subscribed to, or
 			 * someone who is offline.  Let's inform the user */
@@ -1551,13 +1565,11 @@
 
 			purple_notify_error(jsx->js->gc, _("File Send Failed"), _("File Send Failed"), msg);
 			g_free(msg);
-		} else if(!jb->resources->next) {
+		} else if (g_list_length(resources) == 1) {
 			/* only 1 resource online (probably our most common case)
 			 * so no need to ask who to send to */
-			jbr = jb->resources->data;
-
+			jbr = resources->data;
 			do_transfer_send(xfer, jbr->name);
-
 		} else {
 			/* we've got multiple resources, we need to pick one to send to */
 			GList *l;
@@ -1565,11 +1577,9 @@
 			PurpleRequestFields *fields = purple_request_fields_new();
 			PurpleRequestField *field = purple_request_field_choice_new("resource", _("Resource"), 0);
 			PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL);
-
-			for(l = jb->resources; l; l = l->next)
-			{
+			
+			for(l = resources; l; l = l->next) {
 				jbr = l->data;
-
 				purple_request_field_choice_add(field, jbr->name);
 			}
 
@@ -1583,6 +1593,8 @@
 
 			g_free(msg);
 		}
+
+		g_list_free(resources);
 	} else {
 		xmlnode *si, *feature, *x, *field, *value;
 
@@ -1695,7 +1707,7 @@
 	size_t filesize = 0;
 
 	if(!(profile = xmlnode_get_attrib(si, "profile")) ||
-			strcmp(profile, "http://jabber.org/protocol/si/profile/file-transfer"))
+			strcmp(profile, NS_SI_FILE_TRANSFER))
 		return;
 
 	if(!(stream_id = xmlnode_get_attrib(si, "id")))
--- a/libpurple/protocols/jabber/xdata.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/xdata.c	Tue Jul 20 02:48:15 2010 +0000
@@ -411,4 +411,30 @@
 	return handle;
 }
 
+gchar *
+jabber_x_data_get_formtype(const xmlnode *form)
+{
+	xmlnode *field;
 
+	g_return_val_if_fail(form != NULL, NULL);
+
+	for (field = xmlnode_get_child((xmlnode *)form, "field"); field;
+			field = xmlnode_get_next_twin(field)) {
+		const char *var = xmlnode_get_attrib(field, "var");
+		if (purple_strequal(var, "FORM_TYPE")) {
+			xmlnode *value = xmlnode_get_child(field, "value");
+			if (value)
+				return xmlnode_get_data(value);
+			else
+				/* An interesting corner case... Looking for a second
+				 * FORM_TYPE would be more considerate, but I'm in favor
+				 * of not helping broken clients.
+				 */
+				return NULL;
+		}
+	}
+
+	/* Erm, none found :( */
+	return NULL;
+}
+
--- a/libpurple/protocols/jabber/xdata.h	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/jabber/xdata.h	Tue Jul 20 02:48:15 2010 +0000
@@ -37,4 +37,19 @@
 void *jabber_x_data_request(JabberStream *js, xmlnode *packet, jabber_x_data_cb cb, gpointer user_data);
 void *jabber_x_data_request_with_actions(JabberStream *js, xmlnode *packet, GList *actions, int defaultaction, jabber_x_data_action_cb cb, gpointer user_data);
 
+/*
+ * Return the form type (the CDATA of the value child of the FORM_TYPE
+ * field entry.
+ * E.g., for the following, "http://jabber.org/protocol/muc#roominfo".
+ * <x xmlns='jabber:x:data' type='result'>
+ *  <field var='FORM_TYPE' type='hidden'>
+ *    <value>http://jabber.org/protocol/muc#roominfo</value>
+ *  </field>
+ * </x>
+ *
+ * @param form The xmlnode for the form (the 'x' element)
+ * @returns The FORM_TYPE.  Must be freed by caller.
+ */
+gchar *jabber_x_data_get_formtype(const xmlnode *form);
+
 #endif /* PURPLE_JABBER_XDATA_H_ */
--- a/libpurple/protocols/msn/notification.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/msn/notification.c	Tue Jul 20 02:48:15 2010 +0000
@@ -409,7 +409,7 @@
 
 /* add contact to xmlnode */
 static void
-msn_add_contact_xml(MsnSession *session, xmlnode *mlNode,const char *passport, MsnListOp list_op, MsnNetwork networkId)
+msn_add_contact_xml(xmlnode *mlNode, const char *passport, MsnListOp list_op, MsnNetwork networkId)
 {
 	xmlnode *d_node,*c_node;
 	char **tokens;
@@ -543,8 +543,8 @@
 
 		adl_node = xmlnode_new("ml");
 		xmlnode_set_attrib(adl_node, "l", "1");
-		msn_add_contact_xml(session, adl_node, passport,
-				user->list_op & MSN_LIST_OP_MASK, network);
+		msn_add_contact_xml(adl_node, passport,
+		                    user->list_op & MSN_LIST_OP_MASK, network);
 		payload = xmlnode_to_str(adl_node, &payload_len);
 		msn_notification_post_adl(session->notification->cmdproc, payload, payload_len);
 		g_free(payload);
@@ -600,8 +600,9 @@
 		}
 
 		if (user->networkid != MSN_NETWORK_UNKNOWN) {
-			msn_add_contact_xml(session, adl_node, user->passport,
-				user->list_op & MSN_LIST_OP_MASK, user->networkid);
+			msn_add_contact_xml(adl_node, user->passport,
+			                    user->list_op & MSN_LIST_OP_MASK,
+			                    user->networkid);
 
 			/* each ADL command may contain up to 150 contacts */
 			if (++adl_count % 150 == 0) {
@@ -630,8 +631,7 @@
 				purple_debug_info("msn", "Adding FQY address, count is %d\n",
 				                  session->adl_fqy);
 
-			msn_add_contact_xml(session, fqy_node, user->passport,
-				0, user->networkid);
+			msn_add_contact_xml(fqy_node, user->passport, 0, user->networkid);
 
 			/* each FQY command may contain up to 150 contacts, probably */
 			if (++fqy_count % 150 == 0) {
@@ -674,6 +674,8 @@
 	xmlnode_free(adl_node);
 	xmlnode_free(fqy_node);
 
+	msn_session_activate_login_timeout(session);
+
 	pc = purple_account_get_connection(session->account);
 	display_name = purple_connection_get_display_name(pc);
 	if (display_name
@@ -1956,8 +1958,7 @@
 	node = xmlnode_new("ml");
 	node->child = NULL;
 
-	msn_add_contact_xml(session, node, passport,
-	                    addrem->list_op, network);
+	msn_add_contact_xml(node, passport, addrem->list_op, network);
 
 	payload = xmlnode_to_str(node, &payload_len);
 	xmlnode_free(node);
@@ -1987,8 +1988,7 @@
 	adl_node = xmlnode_new("ml");
 	adl_node->child = NULL;
 
-	msn_add_contact_xml(notification->session, adl_node, user->passport,
-	                    list_op, user->networkid);
+	msn_add_contact_xml(adl_node, user->passport, list_op, user->networkid);
 
 	payload = xmlnode_to_str(adl_node, &payload_len);
 	xmlnode_free(adl_node);
@@ -2026,8 +2026,7 @@
 	rml_node = xmlnode_new("ml");
 	rml_node->child = NULL;
 
-	msn_add_contact_xml(notification->session, rml_node, user->passport,
-	                    list_op, user->networkid);
+	msn_add_contact_xml(rml_node, user->passport, list_op, user->networkid);
 
 	payload = xmlnode_to_str(rml_node, &payload_len);
 	xmlnode_free(rml_node);
--- a/libpurple/protocols/msn/session.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/msn/session.c	Tue Jul 20 02:48:15 2010 +0000
@@ -131,6 +131,11 @@
 	if (!session->connected)
 		return;
 
+	if (session->login_timeout) {
+		purple_timeout_remove(session->login_timeout);
+		session->login_timeout = 0;
+	}
+
 	session->connected = FALSE;
 
 	while (session->switches != NULL)
@@ -258,6 +263,28 @@
 	return swboard;
 }
 
+static gboolean
+msn_login_timeout_cb(gpointer data)
+{
+	MsnSession *session = data;
+	/* This forces the login process to finish, even though we haven't heard
+	   a response for our FQY requests yet. We'll at least end up online to the
+	   people we've already added. The rest will follow later. */
+	msn_session_finish_login(session);
+	session->login_timeout = 0;
+	return FALSE;
+}
+
+void
+msn_session_activate_login_timeout(MsnSession *session)
+{
+	if (!session->logged_in) {
+		session->login_timeout =
+			purple_timeout_add_seconds(MSN_LOGIN_FQY_TIMEOUT,
+			                           msn_login_timeout_cb, session);
+	}
+}
+
 static void
 msn_session_sync_users(MsnSession *session)
 {
@@ -362,6 +389,9 @@
 			msg = g_strdup_printf(_("Unable to authenticate: %s"),
 								  (info == NULL ) ?
 								  _("Unknown error") : info);
+			/* Clear the password if it isn't being saved */
+			if (!purple_account_get_remember_password(session->account))
+				purple_account_set_password(session->account, NULL);
 			break;
 		case MSN_ERROR_BAD_BLIST:
 			reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
--- a/libpurple/protocols/msn/session.h	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/msn/session.h	Tue Jul 20 02:48:15 2010 +0000
@@ -59,6 +59,8 @@
 
 #define MSN_LOGIN_STEPS MSN_LOGIN_STEP_END
 
+#define MSN_LOGIN_FQY_TIMEOUT 30
+
 #include "group.h"
 #include "httpconn.h"
 #include "nexus.h"
@@ -83,6 +85,7 @@
 	gboolean connected;
 	gboolean logged_in; /**< A temporal flag to ignore local buddy list adds. */
 	int      adl_fqy; /**< A count of ADL/FQY so status is only changed once. */
+	guint    login_timeout; /**< Timeout to force status change if ADL/FQY fail. */
 	gboolean destroying; /**< A flag that states if the session is being destroyed. */
 	gboolean http_method;
 
@@ -213,7 +216,16 @@
 						   const char *info);
 
 /**
- * Sets the current step in the login proccess.
+ * Starts a timeout to initiate finishing login. Sometimes the server ignores
+ * our FQY requests, so this forces ourselves online eventually.
+ *
+ * @param session The MSN session.
+ */
+void
+msn_session_activate_login_timeout(MsnSession *session);
+
+/**
+ * Sets the current step in the login process.
  *
  * @param session The MSN session.
  * @param step The current step.
--- a/libpurple/protocols/msn/slplink.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/msn/slplink.c	Tue Jul 20 02:48:15 2010 +0000
@@ -214,11 +214,16 @@
 		slplink->swboard = NULL;
 	}
 
-	/* The slplink has no slpcalls in it, release it from the DC. */
-	if (slplink->slp_calls == NULL && slplink->dc != NULL) {
-		slplink->dc->slplink = NULL;
-		msn_dc_destroy(slplink->dc);
-		slplink->dc = NULL;
+	if (slplink->dc != NULL) {
+		if ((slplink->dc->state != DC_STATE_ESTABLISHED && slplink->dc->slpcall == slpcall)
+		 || (slplink->slp_calls == NULL)) {
+			/* The DC is not established and its corresponding slpcall is dead,
+			 * or the slplink has no slpcalls in it and no longer needs the DC.
+			 */
+			slplink->dc->slplink = NULL;
+			msn_dc_destroy(slplink->dc);
+			slplink->dc = NULL;
+		}
 	}
 }
 
--- a/libpurple/protocols/msn/switchboard.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Tue Jul 20 02:48:15 2010 +0000
@@ -740,8 +740,13 @@
 	else if ((swboard->current_users > 1) ||
 			 (purple_conversation_get_type(swboard->conv) == PURPLE_CONV_TYPE_CHAT))
 	{
+		GList *passport;
 		/* This is a switchboard used for a chat */
 		purple_conv_chat_remove_user(PURPLE_CONV_CHAT(swboard->conv), user, NULL);
+
+		passport = g_list_find_custom(swboard->users, user, (GCompareFunc)strcmp);
+		g_free(passport->data);
+		swboard->users = g_list_delete_link(swboard->users, passport);
 		swboard->current_users--;
 		if (swboard->current_users == 0)
 			msn_switchboard_destroy(swboard);
--- a/libpurple/protocols/oscar/family_icbm.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/oscar/family_icbm.c	Tue Jul 20 02:48:15 2010 +0000
@@ -2684,9 +2684,9 @@
 	guchar *cookie;
 	guint8 bnlen;
 	char *xml = NULL;
-	int hdrlen;
+	guint16 hdrlen;
 	int curpos;
-	int num1,num2;
+	guint16 num1, num2;
 	char *desc, *title, *temp;
 	PurpleAccount *account;
 	PurpleBuddy *buddy;
@@ -2701,54 +2701,56 @@
 
 	if (channel == 0x0002)
 	{
-	 	hdrlen = byte_stream_getle16(bs);
-	 	if ( ((hdrlen == 27 ) && (bs->len > (27 + 51)))) {
-	 		byte_stream_advance(bs, 51);
-	 		num1 = byte_stream_getle16(bs); 
-	 		num2 = byte_stream_getle16(bs);
-	 		purple_debug_misc("oscar", "X-Status: Num1 %i, num2 %i\n",num1, num2);
-	 		
-	 		if(((num1 == 0x4f00)&&(num2 == 0x3b00))) {
-		 		byte_stream_advance(bs, 86);	
-		 		curpos = byte_stream_curpos(bs);
-		 		xml = byte_stream_getstr(bs, bs->len - curpos);
-		 		purple_debug_misc("oscar", "X-Status: Received XML reply\n");
-		 		if(xml) {
- 				/* purple_debug_misc("oscar", "X-Status: XML reply: %s\n", (const char*) xml); */
- 					if ((desc=strstr(xml,"&lt;desc&gt;")) != NULL) {
- 						temp=strstr(xml,"&lt;/desc&gt;");
- 						temp[0]=0;
- 						desc=desc+12;
- 					}
- 					if ((title=strstr(xml,"&lt;title&gt;")) != NULL) {
- 						temp=strstr(xml,"&lt;/title&gt;");
- 						temp[0]=0;
- 						title=title+13;
- 					} else {
- 						title="";
- 					}
- 					strcpy(xml,title);
+		hdrlen = byte_stream_getle16(bs);
+		if (hdrlen == 27 && bs->len > (27 + 51)) {
+			byte_stream_advance(bs, 51);
+			num1 = byte_stream_getle16(bs);
+			num2 = byte_stream_getle16(bs);
+			purple_debug_misc("oscar", "X-Status: num1 %hu, num2 %hu\n", num1, num2);
+
+			if (num1 == 0x4f00 && num2 == 0x3b00) {
+				byte_stream_advance(bs, 86);
+				curpos = byte_stream_curpos(bs);
+				xml = byte_stream_getstr(bs, bs->len - curpos);
+				purple_debug_misc("oscar", "X-Status: Received XML reply\n");
+				if (xml) {
+				/* purple_debug_misc("oscar", "X-Status: XML reply: %s\n", xml); */
+					desc = strstr(xml, "&lt;desc&gt;");
+					if (desc != NULL) {
+						temp = strstr(xml, "&lt;/desc&gt;");
+						temp[0] = 0;
+						desc = desc + 12;
+					}
+					title = strstr(xml, "&lt;title&gt;");
+					if (title != NULL) {
+						temp = strstr(xml, "&lt;/title&gt;");
+						temp[0] = 0;
+						title = title + 13;
+					} else {
+						title = "";
+					}
+					strcpy(xml,title);
 					if (desc) {
- 						strcat(xml, " - ");
- 						strcat(xml, desc);
+						strcat(xml, " - ");
+						strcat(xml, desc);
 					}
- 					purple_debug_misc("oscar", "X-Status reply: %s\n", (const char*)xml);
- 					account = purple_connection_get_account(od->gc);
- 					buddy = purple_find_buddy(account, bn);
- 					presence = purple_buddy_get_presence(buddy);
- 					status = purple_presence_get_active_status(presence);
- 					purple_prpl_got_user_status(account, bn,
-  					    purple_status_get_id(status), "message", xml, NULL);
-		   		} else {
-			 		purple_debug_misc("oscar", "X-Status: Can't get XML reply string\n");
+					purple_debug_misc("oscar", "X-Status reply: %s\n", xml);
+					account = purple_connection_get_account(od->gc);
+					buddy = purple_find_buddy(account, bn);
+					presence = purple_buddy_get_presence(buddy);
+					status = purple_presence_get_active_status(presence);
+					purple_prpl_got_user_status(account, bn,
+							purple_status_get_id(status), "message", xml, NULL);
+				} else {
+					purple_debug_misc("oscar", "X-Status: Can't get XML reply string\n");
 				}
-	 		} else {
-		 		purple_debug_misc("oscar", "X-Status: 0x0004, 0x000b not an xstatus reply\n" );
-		 /*		if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-		 		ret = userfunc(od, conn, frame, channel, sn, reason); */
+			} else {
+				purple_debug_misc("oscar", "X-Status: 0x0004, 0x000b not an xstatus reply\n");
+				/* if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
+					ret = userfunc(od, conn, frame, channel, sn, reason); */
 			}
-		
-	 	}
+
+		}
 
 	} else if (channel == 0x0004) { /* ICQ message */
 		switch (reason) {
@@ -2884,7 +2886,7 @@
 	if (!bn)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 11+strlen(bn)+2);
+	byte_stream_new(&bs, 11 + strlen(bn) + 2);
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0014, 0x0000, NULL, 0);
 
@@ -2930,38 +2932,36 @@
 	char *statxml;
 	int xmllen;
 
-	static const guint8 pluginid[] = 
-	{
-	0x09, 0x46, 0x13, 0x49, 0x4C, 0x7F, 0x11, 0xD1, 
-	0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
+	static const guint8 pluginid[] = {
+		0x09, 0x46, 0x13, 0x49, 0x4C, 0x7F, 0x11, 0xD1,
+		0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00
 	};
-	
-	static const guint8 c_plugindata[] =
-	{
-	0x1B, 0x00, 0x0A,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xD1, 0x0E, 0x00, 0xF9, 0xD1, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x01, 0x00,
-	0x01, 0x00, 0x00, 0x4F, 0x00, 0x3B, 0x60, 0xB3, 0xEF, 0xD8, 0x2A, 0x6C, 0x45, 0xA4, 0xE0, 0x9C,
-	0x5A, 0x5E, 0x67, 0xE8, 0x65, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x53, 0x63, 0x72, 0x69, 0x70,
-	0x74, 0x20, 0x50, 0x6C, 0x75, 0x67, 0x2D, 0x69, 0x6E, 0x3A, 0x20, 0x52, 0x65, 0x6D, 0x6F, 0x74,
-	0x65, 0x20, 0x4E, 0x6F, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41,
-	0x72, 0x72, 0x69, 0x76, 0x65, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00
+
+	static const guint8 c_plugindata[] = {
+		0x1B, 0x00, 0x0A,
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xD1, 0x0E, 0x00, 0xF9, 0xD1, 0x00, 0x00,
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x01, 0x00,
+		0x01, 0x00, 0x00, 0x4F, 0x00, 0x3B, 0x60, 0xB3, 0xEF, 0xD8, 0x2A, 0x6C, 0x45, 0xA4, 0xE0, 0x9C,
+		0x5A, 0x5E, 0x67, 0xE8, 0x65, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x53, 0x63, 0x72, 0x69, 0x70,
+		0x74, 0x20, 0x50, 0x6C, 0x75, 0x67, 0x2D, 0x69, 0x6E, 0x3A, 0x20, 0x52, 0x65, 0x6D, 0x6F, 0x74,
+		0x65, 0x20, 0x4E, 0x6F, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x41,
+		0x72, 0x72, 0x69, 0x76, 0x65, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00
 	};
-	
+
 	if (!od || !(conn = flap_connection_findbygroup(od, 0x0004)))
 		return -EINVAL;
 
 	if (!sn)
 		return -EINVAL;
 
-	fmt =  "<N><QUERY>&lt;Q&gt;&lt;PluginID&gt;srvMng&lt;/PluginID&gt;&lt;/Q&gt;</QUERY><NOTIFY>&lt;srv&gt;&lt;id&gt;cAwaySrv&lt;/id&gt;&lt;req&gt;&lt;id&gt;AwayStat&lt;/id&gt;&lt;trans&gt;2&lt;/trans&gt;&lt;senderId&gt;%s&lt;/senderId&gt;&lt;/req&gt;&lt;/srv&gt;</NOTIFY></N>\r\n";	
+	fmt = "<N><QUERY>&lt;Q&gt;&lt;PluginID&gt;srvMng&lt;/PluginID&gt;&lt;/Q&gt;</QUERY><NOTIFY>&lt;srv&gt;&lt;id&gt;cAwaySrv&lt;/id&gt;&lt;req&gt;&lt;id&gt;AwayStat&lt;/id&gt;&lt;trans&gt;2&lt;/trans&gt;&lt;senderId&gt;%s&lt;/senderId&gt;&lt;/req&gt;&lt;/srv&gt;</NOTIFY></N>\r\n";
 
 	account = purple_connection_get_account(od->gc);
 	xmllen = strlen(fmt) - 2 + strlen(account->username);
 
-	statxml = (char*) g_malloc(xmllen);
+	statxml = g_malloc(xmllen);
 	snprintf(statxml, xmllen, fmt, account->username);
 
 	aim_icbm_makecookie(cookie);
@@ -2970,38 +2970,36 @@
 					  + 2 + 2 + 8 + 16 + 2 + 2 + 2 + 2 + 2
 					  + 2 + 2 + sizeof(c_plugindata) + xmllen
 					  + 2 + 2);
- 
+
 	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
 	aim_im_puticbm(&bs, cookie, 0x0002, sn);
 
 	byte_stream_new(&header, (7*2) + 16 + 8 + 2 + sizeof(c_plugindata) + xmllen); /* TLV 0x0005 Stream + Size */
-	byte_stream_new(&plugindata, (sizeof(c_plugindata) + xmllen));
-
 	byte_stream_put16(&header, 0x0000); /* Message Type: Request */
 	byte_stream_putraw(&header, cookie, sizeof(cookie)); /* Message ID */
 	byte_stream_putraw(&header, pluginid, sizeof(pluginid)); /* Plugin ID */
-	
+
 	aim_tlvlist_add_16(&inner_tlvlist, 0x000a, 0x0001);
 	aim_tlvlist_add_noval(&inner_tlvlist, 0x000f);
-	
+
 	/* Add Plugin Specific Data */
+	byte_stream_new(&plugindata, (sizeof(c_plugindata) + xmllen));
 	byte_stream_putraw(&plugindata, c_plugindata, sizeof(c_plugindata)); /* Content of TLV 0x2711 */
 	byte_stream_putstr(&plugindata, statxml);
 
 	aim_tlvlist_add_raw(&inner_tlvlist, 0x2711, (sizeof(c_plugindata) + xmllen), plugindata.data);
-	
+
 	aim_tlvlist_write(&header, &inner_tlvlist);
-	
-	
+	aim_tlvlist_free(inner_tlvlist);
+
 	aim_tlvlist_add_raw(&outer_tlvlist, 0x0005, byte_stream_curpos(&header), header.data);
-	aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);		/* Empty TLV 0x0003 */
-	
+	aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); /* Empty TLV 0x0003 */
+
 	aim_tlvlist_write(&bs, &outer_tlvlist);
-	
+
 	purple_debug_misc("oscar", "X-Status Request\n");
 	flap_connection_send_snac_with_priority(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs, TRUE);
 
-	aim_tlvlist_free(inner_tlvlist);
 	aim_tlvlist_free(outer_tlvlist);
 	byte_stream_destroy(&header);
 	byte_stream_destroy(&plugindata);
@@ -3018,58 +3016,65 @@
 	aim_snacid_t snacid;
 	PurpleAccount *account;
 	PurpleStatus *status;
-   const char *fmt;
-   const char *formatted_msg;
-   char *msg;
-   char *statxml;
+	const char *fmt;
+	const char *formatted_msg;
+	char *msg;
+	char *statxml;
 	const char *title;
 	int len;
-	
+
 	static const guint8 plugindata[] = {
-	0x1B, 0x00,
-	0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
-	0x01, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xD1, 0x0E, 0x00, 0xF9, 0xD1,
-	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4F, 
-	0x00, 0x3B, 0x60, 0xB3, 0xEF, 0xD8, 0x2A, 0x6C, 0x45, 0xA4, 0xE0, 
-	0x9C, 0x5A, 0x5E, 0x67, 0xE8, 0x65, 0x08, 0x00, 0x2A, 0x00, 0x00, 
-	0x00, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x50, 0x6C, 0x75, 
-	0x67, 0x2D, 0x69, 0x6E, 0x3A, 0x20, 0x52, 0x65, 0x6D, 0x6F, 0x74, 
-	0x65, 0x20, 0x4E, 0x6F, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
-	0x69, 0x6F, 0x6E, 0x20, 0x41, 0x72, 0x72, 0x69, 0x76, 0x65, 0x00,
-	0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-	0x00, 0x00, 0x00, 0xF3, 0x01, 0x00, 0x00, 0xEF, 0x01, 0x00, 0x00
-	};	
+		0x1B, 0x00,
+		0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x01, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xD1, 0x0E, 0x00, 0xF9, 0xD1,
+		0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x4F,
+		0x00, 0x3B, 0x60, 0xB3, 0xEF, 0xD8, 0x2A, 0x6C, 0x45, 0xA4, 0xE0,
+		0x9C, 0x5A, 0x5E, 0x67, 0xE8, 0x65, 0x08, 0x00, 0x2A, 0x00, 0x00,
+		0x00, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x50, 0x6C, 0x75,
+		0x67, 0x2D, 0x69, 0x6E, 0x3A, 0x20, 0x52, 0x65, 0x6D, 0x6F, 0x74,
+		0x65, 0x20, 0x4E, 0x6F, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
+		0x69, 0x6F, 0x6E, 0x20, 0x41, 0x72, 0x72, 0x69, 0x76, 0x65, 0x00,
+		0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+		0x00, 0x00, 0x00, 0xF3, 0x01, 0x00, 0x00, 0xEF, 0x01, 0x00, 0x00
+	};
 
 	fmt = "<NR><RES>&lt;ret event='OnRemoteNotification'&gt;&lt;srv&gt;&lt;id&gt;cAwaySrv&lt;/id&gt;&lt;val srv_id='cAwaySrv'&gt;&lt;Root&gt;&lt;CASXtraSetAwayMessage&gt;&lt;/CASXtraSetAwayMessage&gt;&l t;uin&gt;%s&lt;/uin&gt;&lt;index&gt;1&lt;/index&gt;&lt;title&gt;%s&lt;/title&gt;&lt;desc&gt;%s&lt;/desc&gt;&lt;/Root&gt;&lt;/val&gt;&lt;/srv&gt;&lt;srv&gt;&lt;id&gt;cRandomizerSrv&lt;/id&gt;&lt;val srv_id='cRandomizerSrv'&gt;undefined&lt;/val&gt;&lt;/srv&gt;&lt;/ret&gt;</RES></NR>\r\n";
-	
-	
+
 	if (!od || !(conn = flap_connection_findbygroup(od, 0x0002)))
 		return -EINVAL;
 
 	if (!sn)
 		return -EINVAL;
-		
+
 	account = purple_connection_get_account(od->gc);
-	if(!account) return -EINVAL;
-	
-/*	if (!strcmp(account->username, sn))
+	if (!account)
+		return -EINVAL;
+
+	/* if (!strcmp(account->username, sn))
 		icq_im_xstatus_request(od, sn); */
-	
-	status  = purple_presence_get_active_status(account->presence);
-	if (!status) return -EINVAL;
-   title = purple_status_get_name(status);
-   if (!title) return -EINVAL;
+
+	status = purple_presence_get_active_status(account->presence);
+	if (!status)
+		return -EINVAL;
+
+	title = purple_status_get_name(status);
+	if (!title)
+		return -EINVAL;
+
 	formatted_msg = purple_status_get_attr_string(status, "message");
-	if (!formatted_msg) return -EINVAL;
-   msg = purple_markup_strip_html(formatted_msg);
-	if (!msg) return -EINVAL;
-	len = strlen(fmt)-6+strlen(account->username)+strlen(title)+strlen(msg);
-	statxml = (char*) g_malloc(len);
-
-	snprintf(statxml, len, fmt, 
-		account->username, title, msg);
+	if (!formatted_msg)
+		return -EINVAL;
+
+	msg = purple_markup_strip_html(formatted_msg);
+	if (!msg)
+		return -EINVAL;
+
+	len = strlen(fmt) - 6 + strlen(account->username) + strlen(title) + strlen(msg);
+	statxml = g_malloc(len);
+
+	snprintf(statxml, len, fmt, account->username, title, msg);
 
 	purple_debug_misc("oscar", "X-Status AutoReply: %s, %s\n", formatted_msg, msg);
 
@@ -3079,8 +3084,8 @@
 	aim_im_puticbm(&bs, cookie, 0x0002, sn);
 	byte_stream_put16(&bs, 0x0003);
 	byte_stream_putraw(&bs, plugindata, sizeof(plugindata));
-	byte_stream_putraw(&bs, (const guint8*)statxml, strlen(statxml));
-	
+	byte_stream_putraw(&bs, (const guint8 *)statxml, strlen(statxml));
+
 	flap_connection_send_snac_with_priority(od, conn, 0x0004, 0x000b, 0x0000, snacid, &bs, TRUE);
 
 	g_free(statxml);
--- a/libpurple/protocols/oscar/oscar.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Tue Jul 20 02:48:15 2010 +0000
@@ -2667,10 +2667,10 @@
 					g_free(rtfmsg);
 				}
 			}
-		} else if (args->info.rtfmsg.msgtype == 26)
+		} else if (args->info.rtfmsg.msgtype == 26) {
 			purple_debug_info("oscar", "Sending X-Status Reply\n");
 			icq_relay_xstatus(od, userinfo->bn, args->cookie);
-
+		}
 	}
 	else
 	{
--- a/libpurple/protocols/oscar/util.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/oscar/util.c	Tue Jul 20 02:48:15 2010 +0000
@@ -38,8 +38,8 @@
 static const char * const msgerrreason[] = {
 	N_("Invalid error"),
 	N_("Invalid SNAC"),
-	N_("Rate to host"),
-	N_("Rate to client"),
+	N_("Server rate limit exceeded"),
+	N_("Client rate limit exceeded"),
 	N_("Not logged in"),
 	N_("Service unavailable"),
 	N_("Service not defined"),
--- a/libpurple/protocols/yahoo/libyahoo.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/yahoo/libyahoo.c	Tue Jul 20 02:48:15 2010 +0000
@@ -327,7 +327,7 @@
 	option = purple_account_option_bool_new(_("Ignore conference and chatroom invitations"), "ignore_invites", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
-	option = purple_account_option_bool_new(_("Use account proxy for SSL connections"), "proxy_ssl", FALSE);
+	option = purple_account_option_bool_new(_("Use account proxy for HTTP and HTTPS connections"), "proxy_ssl", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
 #if 0
--- a/libpurple/protocols/yahoo/libyahoojp.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/yahoo/libyahoojp.c	Tue Jul 20 02:48:15 2010 +0000
@@ -223,7 +223,7 @@
 	option = purple_account_option_bool_new(_("Ignore conference and chatroom invitations"), "ignore_invites", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
-	option = purple_account_option_bool_new(_("Use account proxy for SSL connections"), "proxy_ssl", FALSE);
+	option = purple_account_option_bool_new(_("Use account proxy for HTTP and HTTPS connections"), "proxy_ssl", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
 #if 0
--- a/libpurple/protocols/yahoo/libymsg.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/yahoo/libymsg.c	Tue Jul 20 02:48:15 2010 +0000
@@ -401,15 +401,13 @@
 	PurpleBuddy *b;
 	PurpleGroup *g;
 	GSList *list, *i;
-	gboolean onlist = 0;
+	gboolean onlist = FALSE;
 	char *oname = NULL;
-	char **oname_p = &oname;
-	GSList **list_p = &list;
-
-	if (!g_hash_table_lookup_extended(ht, purple_normalize(account, name), (gpointer *) oname_p, (gpointer *) list_p))
+
+	if (g_hash_table_lookup_extended(ht, name, (gpointer *)&oname, (gpointer *)&list))
+		g_hash_table_steal(ht, oname);
+	else
 		list = purple_find_buddies(account, name);
-	else
-		g_hash_table_steal(ht, name);
 
 	for (i = list; i; i = i->next) {
 		b = i->data;
@@ -418,7 +416,7 @@
 			purple_debug_misc("yahoo",
 				"Oh good, %s is in the right group (%s).\n", name, group);
 			list = g_slist_delete_link(list, i);
-			onlist = 1;
+			onlist = TRUE;
 			break;
 		}
 	}
@@ -436,9 +434,9 @@
 
 	if (list) {
 		if (!oname)
-			oname = g_strdup(purple_normalize(account, name));
+			oname = g_strdup(name);
 		g_hash_table_insert(ht, oname, list);
-	} else if (oname)
+	} else
 		g_free(oname);
 }
 
@@ -843,12 +841,12 @@
 			default:
 				break;
 		}
-	
+
 		if (*stat == '1')
 			serv_got_typing(gc, fed_from, 0, PURPLE_TYPING);
 		else
 			serv_got_typing_stopped(gc, fed_from);
-		
+
 		if (fed_from != from)
 			g_free(fed_from);
 	
@@ -3594,7 +3592,8 @@
 	PurpleConnection *gc = yd->gc;
 	PurpleAccount *a = purple_connection_get_account(gc);
 	gchar **strings = NULL, *cs_server = NULL;
-	int port = 0, stringslen = 0;
+	int port = purple_account_get_int(a, "port", YAHOO_PAGER_PORT);
+	int stringslen = 0;
 
 	yd->url_datas = g_slist_remove(yd->url_datas, url_data);
 
@@ -3602,8 +3601,17 @@
 		purple_debug_error("yahoo", "Unable to retrieve server info. %"
 				G_GSIZE_FORMAT " bytes retrieved with error message: %s\n", len,
 				error_message ? error_message : "(null)");
-		purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-				_("Unable to connect: The server returned an empty response."));
+
+		if(yahoo_is_japan(a)) { /* We don't know fallback hosts for Yahoo Japan :( */
+			purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+					_("Unable to connect: The server returned an empty response."));
+		} else {
+				if(purple_proxy_connect(gc, a, YAHOO_PAGER_HOST_FALLBACK, port,
+							yahoo_got_connected, gc) == NULL) {
+					purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+							_("Unable to connect"));
+				}
+		}
 	} else {
 		strings = g_strsplit(url_text, "\r\n", -1);
 
@@ -3621,17 +3629,23 @@
 		}
 
 		if(cs_server) { /* got an address; get on with connecting */
-			port = purple_account_get_int(a, "port", YAHOO_PAGER_PORT);
-
 			if(purple_proxy_connect(gc, a, cs_server, port, yahoo_got_connected, gc) == NULL)
 				purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
 								_("Unable to connect"));
 		} else {
 			purple_debug_error("yahoo", "No CS address retrieved!  Server "
 					"response:\n%s\n", url_text ? url_text : "(null)");
-			purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-					_("Unable to connect: The server's response did not contain "
-						"the necessary information"));
+
+			if(yahoo_is_japan(a)) { /* We don't know fallback hosts for Yahoo Japan :( */
+				purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+						_("Unable to connect: The server's response did not contain "
+							"the necessary information"));
+			} else
+				if(purple_proxy_connect(gc, a, YAHOO_PAGER_HOST_FALLBACK, port,
+							yahoo_got_connected, gc) == NULL) {
+					purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+							_("Unable to connect"));
+				}
 		}
 	}
 
@@ -3644,6 +3658,7 @@
 	YahooData *yd = gc->proto_data = g_new0(YahooData, 1);
 	PurpleStatus *status = purple_account_get_active_status(account);
 	gboolean use_whole_url = yahoo_account_use_http_proxy(gc);
+	gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE);
 	PurpleUtilFetchUrlData *url_data;
 
 	gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_URLDESC;
@@ -3678,10 +3693,10 @@
 	/* Get the pager server.  Actually start connecting in the callback since we
 	 * must have the contents of the HTTP response to proceed. */
 	url_data = purple_util_fetch_url_request_len_with_account(
-			purple_connection_get_account(gc),
+			proxy_ssl ? purple_connection_get_account(gc) : NULL,
 			yd->jp ? YAHOOJP_PAGER_HOST_REQ_URL : YAHOO_PAGER_HOST_REQ_URL,
 			use_whole_url ? TRUE : FALSE,
-			YAHOO_CLIENT_USERAGENT, TRUE, NULL, FALSE, -1,
+			YAHOO_CLIENT_USERAGENT, FALSE, NULL, FALSE, -1,
 			yahoo_got_pager_server, yd);
 	if (url_data)
 		yd->url_datas = g_slist_prepend(yd->url_datas, url_data);
--- a/libpurple/protocols/yahoo/libymsg.h	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/yahoo/libymsg.h	Tue Jul 20 02:48:15 2010 +0000
@@ -30,6 +30,7 @@
 #include "prpl.h"
 
 #define YAHOO_PAGER_HOST_REQ_URL "http://vcs1.msg.yahoo.com/capacity"
+#define YAHOO_PAGER_HOST_FALLBACK "scsa.msg.yahoo.com"
 #define YAHOO_PAGER_PORT 5050
 #define YAHOO_PAGER_PORT_P2P 5101
 #define YAHOO_LOGIN_URL "https://login.yahoo.com/config/pwtoken_login?src=ymsgr&ts=&token=%s"
--- a/libpurple/protocols/yahoo/util.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/yahoo/util.c	Tue Jul 20 02:48:15 2010 +0000
@@ -33,10 +33,21 @@
 #include <string.h>
 
 gboolean
-yahoo_account_use_http_proxy(PurpleConnection *conn)
+yahoo_account_use_http_proxy(PurpleConnection *pc)
 {
-	PurpleProxyInfo *ppi = purple_proxy_get_setup(conn->account);
-	return (ppi->type == PURPLE_PROXY_HTTP || ppi->type == PURPLE_PROXY_USE_ENVVAR);
+	PurpleAccount *account = purple_connection_get_account(pc);
+	PurpleProxyInfo *ppi = NULL;
+	PurpleProxyType type = PURPLE_PROXY_NONE;
+	gboolean proxy_ssl = purple_account_get_bool(account, "proxy_ssl", FALSE);
+	
+	if(proxy_ssl)
+		ppi = purple_proxy_get_setup(account);
+	else
+		ppi = purple_global_proxy_get_info();
+
+	type = purple_proxy_info_get_type(ppi);
+
+	return (type == PURPLE_PROXY_HTTP || type == PURPLE_PROXY_USE_ENVVAR);
 }
 
 /*
--- a/libpurple/protocols/yahoo/yahoo_filexfer.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/protocols/yahoo/yahoo_filexfer.c	Tue Jul 20 02:48:15 2010 +0000
@@ -983,8 +983,8 @@
 	struct yahoo_xfer_data *xd;
 	struct sockaddr_in *addr;
 	struct yahoo_packet *pkt;
-	long actaddr;
-	long a,b,c,d;
+	unsigned long actaddr;
+	unsigned char a,b,c,d;
 	PurpleConnection *gc;
 	PurpleAccount *account;
 	YahooData *yd;
@@ -1018,19 +1018,19 @@
 	/* TODO:actually, u must try with addr no.1 , if its not working addr no.2 ..... */
 	addr = hosts->data;
 	actaddr = addr->sin_addr.s_addr;
-	d = actaddr % 256;
-	actaddr = (actaddr - d) / 256;
-	c = actaddr % 256;
-	actaddr = (actaddr - c) / 256;
-	b = actaddr % 256;
-	actaddr = (actaddr - b) / 256;
-	a = actaddr;
+	d = actaddr & 0xff;
+	actaddr >>= 8;
+	c = actaddr & 0xff;
+	actaddr >>= 8;
+	b = actaddr & 0xff;
+	actaddr >>= 8;
+	a = actaddr & 0xff;
 	if(yd->jp)
 		xd->port = YAHOOJP_XFER_RELAY_PORT;
 	else
 		xd->port = YAHOO_XFER_RELAY_PORT;
 
-	url = g_strdup_printf("%ld.%ld.%ld.%ld", d, c, b, a);
+	url = g_strdup_printf("%u.%u.%u.%u", d, c, b, a);
 
 	/* Free the address... */
 	g_free(hosts->data);
--- a/libpurple/tests/Makefile.am	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/tests/Makefile.am	Tue Jul 20 02:48:15 2010 +0000
@@ -10,6 +10,7 @@
         check_libpurple.c \
 	    tests.h \
 		test_cipher.c \
+		test_jabber_caps.c \
 		test_jabber_jutil.c \
 		test_jabber_scram.c \
 		test_qq.c \
--- a/libpurple/tests/check_libpurple.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/tests/check_libpurple.c	Tue Jul 20 02:48:15 2010 +0000
@@ -84,6 +84,7 @@
 	sr = srunner_create (master_suite());
 
 	srunner_add_suite(sr, cipher_suite());
+	srunner_add_suite(sr, jabber_caps_suite());
 	srunner_add_suite(sr, jabber_jutil_suite());
 	srunner_add_suite(sr, jabber_scram_suite());
 	srunner_add_suite(sr, qq_suite());
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/tests/test_jabber_caps.c	Tue Jul 20 02:48:15 2010 +0000
@@ -0,0 +1,54 @@
+#include <string.h>
+
+#include "tests.h"
+#include "../xmlnode.h"
+#include "../protocols/jabber/caps.h"
+
+START_TEST(test_parse_invalid)
+{
+	xmlnode *query;
+
+	fail_unless(NULL == jabber_caps_parse_client_info(NULL));
+
+	/* Something other than a disco#info query */
+	query = xmlnode_new("foo");
+	fail_unless(NULL == jabber_caps_parse_client_info(query));
+	xmlnode_free(query);
+
+	query = xmlnode_new("query");
+	fail_unless(NULL == jabber_caps_parse_client_info(query));
+	xmlnode_set_namespace(query, "jabber:iq:last");
+	fail_unless(NULL == jabber_caps_parse_client_info(query));
+	xmlnode_free(query);
+}
+END_TEST
+
+#define assert_caps_calculate_match(hash_func, hash, str) { \
+	xmlnode *query = xmlnode_from_str((str), -1); \
+	JabberCapsClientInfo *info = jabber_caps_parse_client_info(query); \
+	gchar *got_hash = jabber_caps_calculate_hash(info, (hash_func)); \
+	assert_string_equal_free((hash), got_hash); \
+}
+
+START_TEST(test_calculate_caps)
+{
+	assert_caps_calculate_match("sha1", "GNjxthSckUNvAIoCCJFttjl6VL8=",
+	"<query xmlns='http://jabber.org/protocol/disco#info' node='http://tkabber.jabber.ru/#GNjxthSckUNvAIoCCJFttjl6VL8='><identity category='client' type='pc' name='Tkabber'/><x xmlns='jabber:x:data' type='result'><field var='FORM_TYPE' type='hidden'><value>urn:xmpp:dataforms:softwareinfo</value></field><field var='software'><value>Tkabber</value></field><field var='software_version'><value> ( 8.5.5 )</value></field><field var='os'><value>ATmega640-16AU</value></field><field var='os_version'><value/></field></x><feature var='games:board'/><feature var='google:mail:notify'/><feature var='http://jabber.org/protocol/activity'/><feature var='http://jabber.org/protocol/bytestreams'/><feature var='http://jabber.org/protocol/chatstates'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/disco#info'/><feature var='http://jabber.org/protocol/disco#items'/><feature var='http://jabber.org/protocol/feature-neg'/><feature var='http://jabber.org/protocol/geoloc'/><feature var='http://jabber.org/protocol/ibb'/><feature var='http://jabber.org/protocol/iqibb'/><feature var='http://jabber.org/protocol/mood'/><feature var='http://jabber.org/protocol/muc'/><feature var='http://jabber.org/protocol/mute#ancestor'/><feature var='http://jabber.org/protocol/mute#editor'/><feature var='http://jabber.org/protocol/rosterx'/><feature var='http://jabber.org/protocol/si'/><feature var='http://jabber.org/protocol/si/profile/file-transfer'/><feature var='http://jabber.org/protocol/tune'/><feature var='jabber:iq:avatar'/><feature var='jabber:iq:browse'/><feature var='jabber:iq:dtcp'/><feature var='jabber:iq:filexfer'/><feature var='jabber:iq:ibb'/><feature var='jabber:iq:inband'/><feature var='jabber:iq:jidlink'/><feature var='jabber:iq:last'/><feature var='jabber:iq:oob'/><feature var='jabber:iq:privacy'/><feature var='jabber:iq:time'/><feature var='jabber:iq:version'/><feature var='jabber:x:data'/><feature var='jabber:x:event'/><feature var='jabber:x:oob'/><feature var='urn:xmpp:ping'/><feature var='urn:xmpp:receipts'/><feature var='urn:xmpp:time'/></query>");
+}
+END_TEST
+
+Suite *
+jabber_caps_suite(void)
+{
+	Suite *s = suite_create("Jabber Caps Functions");
+
+	TCase *tc = tcase_create("Parsing invalid ndoes");
+	tcase_add_test(tc, test_parse_invalid);
+	suite_add_tcase(s, tc);
+
+	tc = tcase_create("Calculating from XMLnode");
+	tcase_add_test(tc, test_calculate_caps);
+	suite_add_tcase(s, tc);
+
+	return s;
+}
--- a/libpurple/tests/test_jabber_scram.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/tests/test_jabber_scram.c	Tue Jul 20 02:48:15 2010 +0000
@@ -89,11 +89,13 @@
 			"c=biws,r=H7yDYKAWBCrM2Fa5SxGa4iezFPVDPpDUcGxPkH3RzP,p=pXkak78EuwwOEwk2/h/OzD7NkEI=",
 			"v=ldX4EBNnOgDnNTOCmbSfBHAUCOs=");
 
+#ifdef USE_IDN
 	assert_successful_exchange("pass½word", "GNb2HsNI7VnTv8ABsE5AnY8W",
 			"n=paul,r=GNb2HsNI7VnTv8ABsE5AnY8W",
 			"r=GNb2HsNI7VnTv8ABsE5AnY8W/w/I3eRKM0I7jxFWOH,s=ysAriUjPzFqOXnMQ,i=4096",
 			"c=biws,r=GNb2HsNI7VnTv8ABsE5AnY8W/w/I3eRKM0I7jxFWOH,p=n/CtgdWjOYnLQ4m9Na+wPn9D2uY=",
 			"v=4TkZwKWy6JHNmrUbU2+IdAaXtos=");
+#endif
 }
 END_TEST
 
--- a/libpurple/tests/test_util.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/tests/test_util.c	Tue Jul 20 02:48:15 2010 +0000
@@ -66,17 +66,70 @@
 }
 END_TEST
 
+/*
+ * Many of the valid and invalid email addresses lised below are from
+ * http://fightingforalostcause.net/misc/2006/compare-email-regex.php
+ */
+const char *valid_emails[] = {
+	"purple-devel@lists.sf.net",
+	"l3tt3rsAndNumb3rs@domain.com",
+	"has-dash@domain.com",
+	"hasApostrophe.o'leary@domain.org",
+	"uncommonTLD@domain.museum",
+	"uncommonTLD@domain.travel",
+	"uncommonTLD@domain.mobi",
+	"countryCodeTLD@domain.uk",
+	"countryCodeTLD@domain.rw",
+	"lettersInDomain@911.com",
+	"underscore_inLocal@domain.net",
+	"IPInsteadOfDomain@127.0.0.1",
+	/* "IPAndPort@127.0.0.1:25", */
+	"subdomain@sub.domain.com",
+	"local@dash-inDomain.com",
+	"dot.inLocal@foo.com",
+	"a@singleLetterLocal.org",
+	"singleLetterDomain@x.org",
+	"&*=?^+{}'~@validCharsInLocal.net",
+	"foor@bar.newTLD"
+};
+
+const char *invalid_emails[] = {
+	"purple-devel@@lists.sf.net",
+	"purple@devel@lists.sf.net",
+	"purple-devel@list..sf.net",
+	"purple-devel",
+	"purple-devel@",
+	"@lists.sf.net",
+	"totally bogus",
+	"missingDomain@.com",
+	"@missingLocal.org",
+	"missingatSign.net",
+	"missingDot@com",
+	"two@@signs.com",
+	"colonButNoPort@127.0.0.1:",
+	""
+	/* "someone-else@127.0.0.1.26", */
+	".localStartsWithDot@domain.com",
+	/* "localEndsWithDot.@domain.com", */ /* I don't think this is invalid -- Stu */
+	/* "two..consecutiveDots@domain.com", */ /* I don't think this is invalid -- Stu */
+	"domainStartsWithDash@-domain.com",
+	"domainEndsWithDash@domain-.com",
+	/* "numbersInTLD@domain.c0m", */
+	/* "missingTLD@domain.", */ /* This certainly isn't invalid -- Stu */
+	"! \"#$%(),/;<>[]`|@invalidCharsInLocal.org",
+	"invalidCharsInDomain@! \"#$%(),/;<>_[]`|.org",
+	/* "local@SecondLevelDomainNamesAreInvalidIfTheyAreLongerThan64Charactersss.org" */
+};
+
 START_TEST(test_util_email_is_valid)
 {
-	fail_unless(purple_email_is_valid("purple-devel@lists.sf.net"));
-	fail_if(purple_email_is_valid("purple-devel@@lists.sf.net"));
-	fail_if(purple_email_is_valid("purple@devel@lists.sf.net"));
-	fail_if(purple_email_is_valid("purple-devel@list..sf.net"));
-	fail_if(purple_email_is_valid("purple-devel"));
-	fail_if(purple_email_is_valid("purple-devel@"));
-	fail_if(purple_email_is_valid("@lists.sf.net"));
-	fail_if(purple_email_is_valid(""));
-	fail_if(purple_email_is_valid("totally bogus"));
+	size_t i;
+
+	for (i = 0; i < G_N_ELEMENTS(valid_emails); i++)
+		fail_unless(purple_email_is_valid(valid_emails[i]), "Email address was: %s", valid_emails[i]);
+
+	for (i = 0; i < G_N_ELEMENTS(invalid_emails); i++)
+		fail_if(purple_email_is_valid(invalid_emails[i]), "Email address was: %s", invalid_emails[i]);
 }
 END_TEST
 
--- a/libpurple/tests/tests.h	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/tests/tests.h	Tue Jul 20 02:48:15 2010 +0000
@@ -9,6 +9,7 @@
 /* remember to add the suite to the runner in check_libpurple.c */
 Suite * master_suite(void);
 Suite * cipher_suite(void);
+Suite * jabber_caps_suite(void);
 Suite * jabber_jutil_suite(void);
 Suite * jabber_scram_suite(void);
 Suite * qq_suite(void);
--- a/libpurple/upnp.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/upnp.c	Tue Jul 20 02:48:15 2010 +0000
@@ -403,6 +403,11 @@
 		lookup_internal_ip();
 	}
 
+	if (dd->inpa > 0)
+		purple_input_remove(dd->inpa);
+	if (dd->tima > 0)
+		purple_timeout_remove(dd->tima);
+
 	g_free(dd);
 }
 
@@ -506,6 +511,8 @@
 
 	if (dd->inpa)
 		purple_input_remove(dd->inpa);
+	if (dd->tima > 0)
+		purple_timeout_remove(dd->tima);
 	dd->inpa = 0;
 	dd->tima = 0;
 
@@ -610,7 +617,7 @@
 
 	/* We have already done all our retries. Make sure that the callback
 	 * doesn't get called before the original function returns */
-	purple_timeout_add(10, purple_upnp_discover_timeout, dd);
+	dd->tima = purple_timeout_add(10, purple_upnp_discover_timeout, dd);
 }
 
 void
@@ -647,7 +654,7 @@
 			"purple_upnp_discover(): Failed In sock creation\n");
 		/* Short circuit the retry attempts */
 		dd->retry_count = NUM_UDP_ATTEMPTS;
-		purple_timeout_add(10, purple_upnp_discover_timeout, dd);
+		dd->tima = purple_timeout_add(10, purple_upnp_discover_timeout, dd);
 		return;
 	}
 
@@ -659,7 +666,7 @@
 			"purple_upnp_discover(): Failed In gethostbyname\n");
 		/* Short circuit the retry attempts */
 		dd->retry_count = NUM_UDP_ATTEMPTS;
-		purple_timeout_add(10, purple_upnp_discover_timeout, dd);
+		dd->tima = purple_timeout_add(10, purple_upnp_discover_timeout, dd);
 		return;
 	}
 
--- a/libpurple/util.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/util.c	Tue Jul 20 02:48:15 2010 +0000
@@ -28,6 +28,7 @@
 #include "core.h"
 #include "debug.h"
 #include "notify.h"
+#include "ntlm.h"
 #include "prpl.h"
 #include "prefs.h"
 #include "util.h"
@@ -69,6 +70,7 @@
 	unsigned long data_len;
 	gssize max_len;
 	gboolean chunked;
+	PurpleAccount *account;
 };
 
 static char *custom_user_dir = NULL;
@@ -3421,7 +3423,7 @@
 			   char **ret_path, char **ret_user, char **ret_passwd)
 {
 	gboolean is_https = FALSE;
-	char scan_info[255];
+	const char * scan_info;
 	char port_str[6];
 	int f;
 	const char *at, *slash;
@@ -3429,11 +3431,12 @@
 	char host[256], path[256], user[256], passwd[256];
 	int port = 0;
 	/* hyphen at end includes it in control set */
-	static const char addr_ctrl[] = "A-Za-z0-9.-";
-	static const char port_ctrl[] = "0-9";
-	static const char page_ctrl[] = "A-Za-z0-9.~_/:*!@&%%?=+^-";
-	static const char user_ctrl[] = "A-Za-z0-9.~_/*!&%%?=+^-";
-	static const char passwd_ctrl[] = "A-Za-z0-9.~_/*!&%%?=+^-";
+
+#define ADDR_CTRL "A-Za-z0-9.-"
+#define PORT_CTRL "0-9"
+#define PAGE_CTRL "A-Za-z0-9.~_/:*!@&%%?=+^-"
+#define USER_CTRL "A-Za-z0-9.~_/*!&%%?=+^-"
+#define PASSWD_CTRL "A-Za-z0-9.~_/*!&%%?=+^-"
 
 	g_return_val_if_fail(url != NULL, FALSE);
 
@@ -3453,37 +3456,32 @@
 	/* Only care about @ char BEFORE the first / */
 	at = strchr(url, '@');
 	slash = strchr(url, '/');
-	if ((at != NULL) &&
-			(((slash != NULL) && (strlen(at) > strlen(slash))) ||
-			(slash == NULL))) {
-		g_snprintf(scan_info, sizeof(scan_info),
-					"%%255[%s]:%%255[%s]^@", user_ctrl, passwd_ctrl);
+	f = 0;
+	if (at && (!slash || at < slash)) {
+		scan_info = "%255[" USER_CTRL "]:%255[" PASSWD_CTRL "]^@";
 		f = sscanf(url, scan_info, user, passwd);
 
-		if (f ==1 ) {
+		if (f == 1) {
 			/* No passwd, possibly just username supplied */
-			g_snprintf(scan_info, sizeof(scan_info),
-						"%%255[%s]^@", user_ctrl);
+			scan_info = "%255[" USER_CTRL "]^@";
 			f = sscanf(url, scan_info, user);
-			*passwd = '\0';
 		}
 
 		url = at+1; /* move pointer after the @ char */
-	} else {
+	}
+
+	if (f < 1) {
 		*user = '\0';
 		*passwd = '\0';
-	}
-
-	g_snprintf(scan_info, sizeof(scan_info),
-			   "%%255[%s]:%%5[%s]/%%255[%s]", addr_ctrl, port_ctrl, page_ctrl);
-
+	} else if (f == 1)
+		*passwd = '\0';
+
+	scan_info = "%255[" ADDR_CTRL "]:%5[" PORT_CTRL "]/%255[" PAGE_CTRL "]";
 	f = sscanf(url, scan_info, host, port_str, path);
 
 	if (f == 1)
 	{
-		g_snprintf(scan_info, sizeof(scan_info),
-				   "%%255[%s]/%%255[%s]",
-				   addr_ctrl, page_ctrl);
+		scan_info = "%255[" ADDR_CTRL "]/%255[" PAGE_CTRL "]";
 		f = sscanf(url, scan_info, host, path);
 		/* Use the default port */
 		if (is_https)
@@ -3507,6 +3505,12 @@
 	if (ret_passwd != NULL) *ret_passwd = g_strdup(passwd);
 
 	return ((*host != '\0') ? TRUE : FALSE);
+
+#undef ADDR_CTRL
+#undef PORT_CTRL
+#undef PAGE_CTRL
+#undef USER_CTRL
+#undef PASSWD_CTRL
 }
 
 /**
@@ -3619,11 +3623,11 @@
 
 	if (purple_strcasestr(new_url, "https://") != NULL) {
 		gfud->is_ssl = TRUE;
-		gfud->ssl_connection = purple_ssl_connect(NULL,
+		gfud->ssl_connection = purple_ssl_connect(gfud->account,
 				gfud->website.address, gfud->website.port,
 				ssl_url_fetch_connect_cb, ssl_url_fetch_error_cb, gfud);
 	} else {
-		gfud->connect_data = purple_proxy_connect(NULL, NULL,
+		gfud->connect_data = purple_proxy_connect(NULL, gfud->account,
 				gfud->website.address, gfud->website.port,
 				url_fetch_connect_cb, gfud);
 	}
@@ -3915,36 +3919,68 @@
 
 	gfud = data;
 
-	if (gfud->request == NULL)
-	{
+	if (gfud->request == NULL) {
+
+		PurpleProxyInfo *gpi = purple_proxy_get_setup(gfud->account);
+		GString *request_str = g_string_new(NULL);
+
+		g_string_append_printf(request_str, "GET %s%s HTTP/%s\r\n"
+						    "Connection: close\r\n",
+			(gfud->full ? "" : "/"),
+			(gfud->full ? (gfud->url ? gfud->url : "") : (gfud->website.page ? gfud->website.page : "")),
+			(gfud->http11 ? "1.1" : "1.0"));
+
+		if (gfud->user_agent)
+			g_string_append_printf(request_str, "User-Agent: %s\r\n", gfud->user_agent);
+
 		/* Host header is not forbidden in HTTP/1.0 requests, and HTTP/1.1
 		 * clients must know how to handle the "chunked" transfer encoding.
 		 * Purple doesn't know how to handle "chunked", so should always send
 		 * the Host header regardless, to get around some observed problems
 		 */
-		if (gfud->user_agent) {
-			gfud->request = g_strdup_printf(
-				"GET %s%s HTTP/%s\r\n"
-				"Connection: close\r\n"
-				"User-Agent: %s\r\n"
-				"Accept: */*\r\n"
-				"Host: %s\r\n\r\n",
-				(gfud->full ? "" : "/"),
-				(gfud->full ? (gfud->url ? gfud->url : "") : (gfud->website.page ? gfud->website.page : "")),
-				(gfud->http11 ? "1.1" : "1.0"),
-				(gfud->user_agent ? gfud->user_agent : ""),
-				(gfud->website.address ? gfud->website.address : ""));
-		} else {
-			gfud->request = g_strdup_printf(
-				"GET %s%s HTTP/%s\r\n"
-				"Connection: close\r\n"
-				"Accept: */*\r\n"
-				"Host: %s\r\n\r\n",
-				(gfud->full ? "" : "/"),
-				(gfud->full ? (gfud->url ? gfud->url : "") : (gfud->website.page ? gfud->website.page : "")),
-				(gfud->http11 ? "1.1" : "1.0"),
-				(gfud->website.address ? gfud->website.address : ""));
+		g_string_append_printf(request_str, "Accept: */*\r\n"
+						    "Host: %s\r\n",
+			(gfud->website.address ? gfud->website.address : ""));
+
+		if (purple_proxy_info_get_username(gpi) != NULL
+				&& (purple_proxy_info_get_type(gpi) == PURPLE_PROXY_USE_ENVVAR
+					|| purple_proxy_info_get_type(gpi) == PURPLE_PROXY_HTTP)) {
+			/* This chunk of code was copied from proxy.c http_start_connect_tunneling()
+			 * This is really a temporary hack - we need a more complete proxy handling solution,
+			 * so I didn't think it was worthwhile to refactor for reuse
+			 */ 
+			char *t1, *t2, *ntlm_type1;
+			char hostname[256];
+			int ret;
+	
+			ret = gethostname(hostname, sizeof(hostname));
+			hostname[sizeof(hostname) - 1] = '\0';
+			if (ret < 0 || hostname[0] == '\0') {
+				purple_debug_warning("util", "proxy - gethostname() failed -- is your hostname set?");
+				strcpy(hostname, "localhost");
+			}
+	
+			t1 = g_strdup_printf("%s:%s",
+				purple_proxy_info_get_username(gpi),
+				purple_proxy_info_get_password(gpi) ?
+					purple_proxy_info_get_password(gpi) : "");
+			t2 = purple_base64_encode((const guchar *)t1, strlen(t1));
+			g_free(t1);
+	
+			ntlm_type1 = purple_ntlm_gen_type1(hostname, "");
+	
+			g_string_append_printf(request_str,
+				"Proxy-Authorization: Basic %s\r\n"
+				"Proxy-Authorization: NTLM %s\r\n"
+				"Proxy-Connection: Keep-Alive\r\n",
+				t2, ntlm_type1);
+			g_free(ntlm_type1);
+			g_free(t2);
 		}
+
+		g_string_append(request_str, "\r\n");
+
+		gfud->request = g_string_free(request_str, FALSE);
 	}
 
 	if(purple_debug_is_unsafe())
@@ -4083,6 +4119,7 @@
 	gfud->include_headers = include_headers;
 	gfud->fd = -1;
 	gfud->max_len = max_len;
+	gfud->account = account;
 
 	purple_url_parse(url, &gfud->website.address, &gfud->website.port,
 				   &gfud->website.page, &gfud->website.user, &gfud->website.passwd);
@@ -4236,6 +4273,8 @@
 
 	g_return_val_if_fail(address != NULL, FALSE);
 
+	if (*address == '.') return FALSE;
+
 	/* first we validate the name portion (name@domain) (rfc822)*/
 	for (c = address;  *c;  c++) {
 		if (*c == '\"' && (c == address || *(c - 1) == '.' || *(c - 1) == '\"')) {
@@ -4269,7 +4308,7 @@
 	do {
 		if (*c == '.' && (c == domain || *(c - 1) == '.' || *(c - 1) == '-'))
 			return FALSE;
-		if (*c == '-' && *(c - 1) == '.') return FALSE;
+		if (*c == '-' && (*(c - 1) == '.' || *(c - 1) == '@')) return FALSE;
 		if ((*c < '0' && *c != '-' && *c != '.') || (*c > '9' && *c < 'A') ||
 			(*c > 'Z' && *c < 'a') || (*c > 'z')) return FALSE;
 	} while (*++c);
--- a/libpurple/xmlnode.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/xmlnode.c	Tue Jul 20 02:48:15 2010 +0000
@@ -223,7 +223,7 @@
 
 
 const char *
-xmlnode_get_attrib(xmlnode *node, const char *attr)
+xmlnode_get_attrib(const xmlnode *node, const char *attr)
 {
 	xmlnode *x;
 
@@ -240,9 +240,9 @@
 }
 
 const char *
-xmlnode_get_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns)
+xmlnode_get_attrib_with_namespace(const xmlnode *node, const char *attr, const char *xmlns)
 {
-	xmlnode *x;
+	const xmlnode *x;
 
 	g_return_val_if_fail(node != NULL, NULL);
 	g_return_val_if_fail(attr != NULL, NULL);
--- a/libpurple/xmlnode.h	Sat Jun 05 22:30:51 2010 +0000
+++ b/libpurple/xmlnode.h	Tue Jul 20 02:48:15 2010 +0000
@@ -205,7 +205,7 @@
  *
  * @return The value of the attribute.
  */
-const char *xmlnode_get_attrib(xmlnode *node, const char *attr);
+const char *xmlnode_get_attrib(const xmlnode *node, const char *attr);
 
 /**
  * Gets a namespaced attribute from a node
@@ -216,7 +216,7 @@
  *
  * @return The value of the attribute/
  */
-const char *xmlnode_get_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns);
+const char *xmlnode_get_attrib_with_namespace(const xmlnode *node, const char *attr, const char *xmlns);
 
 /**
  * Removes an attribute from a node.
--- a/pidgin/gtkblist.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/pidgin/gtkblist.c	Tue Jul 20 02:48:15 2010 +0000
@@ -3686,11 +3686,12 @@
 		purple_request_field_list_add_selected(f, _("None"));
 
 	/* TODO: rlaager wants this sorted. */
-	/* The connection is checked for PURPLE_CONNECTION_SUPPORT_MOODS flag before
-	 * this function is called for a non-null account. So using
-	 * PURPLE_PROTOCOL_PLUGIN_HAS_FUNC isn't necessary here */
-	for (mood = account ? prpl_info->get_moods(account) : global_moods;
-	     mood->mood != NULL ; mood++) {
+	/* TODO: darkrain wants it sorted post-translation */
+	if (account && PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods))
+		mood = prpl_info->get_moods(account);
+	else
+		mood = global_moods;
+	for ( ; mood->mood != NULL ; mood++) {
 		char *path;
 
 		if (mood->mood == NULL || mood->description == NULL)
@@ -3886,7 +3887,7 @@
 	{ N_("/Tools/Plu_gins"), "<CTL>U", pidgin_plugin_dialog_show, 2, "<StockItem>", PIDGIN_STOCK_TOOLBAR_PLUGINS },
 	{ N_("/Tools/Pr_eferences"), "<CTL>P", pidgin_prefs_show, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
 	{ N_("/Tools/Pr_ivacy"), NULL, pidgin_privacy_dialog_show, 0, "<Item>", NULL },
-	{ N_("/Tools/Set _Mood"), "<CTL>M", set_mood_show, 0, "<Item>", NULL },
+	{ N_("/Tools/Set _Mood"), "<CTL>O", set_mood_show, 0, "<Item>", NULL },
 	{ "/Tools/sep2", NULL, NULL, 0, "<Separator>", NULL },
 	{ N_("/Tools/_File Transfers"), "<CTL>T", pidgin_xfer_dialog_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_TRANSFER },
 	{ N_("/Tools/R_oom List"), NULL, pidgin_roomlist_dialog_show, 0, "<Item>", NULL },
@@ -4824,7 +4825,7 @@
 }
 
 static void
-plugin_changed_cb(PurplePlugin *p, gpointer *data)
+plugin_changed_cb(PurplePlugin *p, gpointer data)
 {
 	pidgin_blist_update_plugin_actions();
 }
--- a/pidgin/gtkimhtml.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/pidgin/gtkimhtml.c	Tue Jul 20 02:48:15 2010 +0000
@@ -1353,6 +1353,9 @@
 static void
 imhtml_paste_cb(GtkIMHtml *imhtml, const char *str)
 {
+	if (!gtk_text_view_get_editable(GTK_TEXT_VIEW(imhtml)))
+		return;
+
 	if (!str || !*str || !strcmp(str, "html"))
 		g_signal_emit_by_name(imhtml, "paste_clipboard");
 	else if (!strcmp(str, "text"))
--- a/pidgin/gtkimhtmltoolbar.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/pidgin/gtkimhtmltoolbar.c	Tue Jul 20 02:48:15 2010 +0000
@@ -919,6 +919,7 @@
 
 	toggle_button_set_active_block(GTK_TOGGLE_BUTTON(attention), FALSE, toolbar);
 	purple_prpl_send_attention(gc, who, 0);
+	gtk_widget_grab_focus(toolbar->imhtml);
 }
 
 static void update_buttons_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, GtkIMHtmlToolbar *toolbar)
@@ -1253,8 +1254,6 @@
 		{PIDGIN_STOCK_TOOLBAR_INSERT_LINK, insert_link_cb, &toolbar->link, _("Insert Link")},
 		{"", NULL, NULL, NULL},
 		{PIDGIN_STOCK_TOOLBAR_SMILEY, insert_smiley_cb, &toolbar->smiley, _("Insert Smiley")},
-		/*{PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION, send_attention_cb, 
-			g_object_get_data(G_OBJECT(toolbar->imhtml), "attention"), _("Send Attention")},*/
 		{NULL, NULL, NULL, NULL}
 	};
 	int iter;
@@ -1291,6 +1290,15 @@
 }
 
 static void
+button_visibility_changed(GtkWidget *button, gpointer dontcare, GtkWidget *item)
+{
+	if (GTK_WIDGET_VISIBLE(button))
+		gtk_widget_hide(item);
+	else
+		gtk_widget_show(item);
+}
+
+static void
 button_sensitiveness_changed(GtkWidget *button, gpointer dontcare, GtkWidget *item)
 {
 	gtk_widget_set_sensitive(item, GTK_WIDGET_IS_SENSITIVE(button));
@@ -1338,6 +1346,7 @@
 	GtkWidget *insert_menu;
 	GtkWidget *menuitem;
 	GtkWidget *sep;
+	GObject *wide_attention_button;
 	int i;
 	struct {
 		const char *label;
@@ -1410,6 +1419,8 @@
 		gtk_menu_shell_append(GTK_MENU_SHELL(font_menu), menuitem);
 		g_signal_connect(G_OBJECT(old), "notify::sensitive",
 				G_CALLBACK(button_sensitiveness_changed), menuitem);
+		g_signal_connect(G_OBJECT(old), "notify::visible",
+				G_CALLBACK(button_visibility_changed), menuitem);
 		gtk_container_foreach(GTK_CONTAINER(menuitem), (GtkCallback)enable_markup, NULL);
 	}
 
@@ -1442,12 +1453,16 @@
 	gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
 	g_signal_connect(G_OBJECT(toolbar->image), "notify::sensitive",
 			G_CALLBACK(button_sensitiveness_changed), menuitem);
+	g_signal_connect(G_OBJECT(toolbar->image), "notify::visible",
+			G_CALLBACK(button_visibility_changed), menuitem);
 
 	menuitem = gtk_menu_item_new_with_mnemonic(_("_Link"));
 	g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->link);
 	gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
 	g_signal_connect(G_OBJECT(toolbar->link), "notify::sensitive",
 			G_CALLBACK(button_sensitiveness_changed), menuitem);
+	g_signal_connect(G_OBJECT(toolbar->link), "notify::visible",
+			G_CALLBACK(button_visibility_changed), menuitem);
 
 	menuitem = gtk_menu_item_new_with_mnemonic(_("_Horizontal rule"));
 	g_signal_connect(G_OBJECT(menuitem), "activate"	, G_CALLBACK(insert_hr_cb), toolbar);
@@ -1484,29 +1499,30 @@
 	gtk_widget_show_all(sep);
 
 	/* Attention */
+	wide_attention_button = g_object_get_data(G_OBJECT(toolbar), "attention");
+
 	attention_button = gtk_button_new();
 	gtk_button_set_relief(GTK_BUTTON(attention_button), GTK_RELIEF_NONE);
 	bbox = gtk_hbox_new(FALSE, 3);
 	gtk_container_add(GTK_CONTAINER(attention_button), bbox);
-	image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION, 
+	image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION,
 		gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
 	gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
 	label = gtk_label_new_with_mnemonic(_("_Attention!"));
 	gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(box), attention_button, FALSE, FALSE, 0);
-	g_signal_connect_swapped(G_OBJECT(attention_button), "clicked", 
-		G_CALLBACK(gtk_button_clicked),
-	    g_object_get_data(G_OBJECT(toolbar), "attention"));
+	g_signal_connect_swapped(G_OBJECT(attention_button), "clicked",
+		G_CALLBACK(gtk_button_clicked), wide_attention_button);
 	gtk_widget_show_all(attention_button);
-	
-	g_signal_connect(G_OBJECT(g_object_get_data(G_OBJECT(toolbar), "attention")),
-	        "notify::sensitive",
+
+	g_signal_connect(wide_attention_button, "notify::sensitive",
 			G_CALLBACK(button_sensitiveness_changed), attention_button);
+	g_signal_connect(wide_attention_button, "notify::visible",
+			G_CALLBACK(button_visibility_changed), attention_button);
 
 	/* set attention button to be greyed out until we get a conversation */
-	gtk_widget_set_sensitive(g_object_get_data(G_OBJECT(toolbar), "attention"),
-		FALSE);
-	
+	gtk_widget_set_sensitive(GTK_WIDGET(wide_attention_button), FALSE);
+
 	gtk_box_pack_start(GTK_BOX(hbox), box, FALSE, FALSE, 0);
 	g_object_set_data(G_OBJECT(hbox), "lean-view", box);
 	gtk_widget_show(box);
--- a/pidgin/gtkmain.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/pidgin/gtkmain.c	Tue Jul 20 02:48:15 2010 +0000
@@ -97,7 +97,6 @@
  */
 static const int catch_sig_list[] = {
 	SIGSEGV,
-	SIGHUP,
 	SIGINT,
 	SIGTERM,
 	SIGQUIT,
@@ -223,9 +222,6 @@
 	}
 
 	switch (sig) {
-	case SIGHUP:
-		purple_debug_warning("sighandler", "Caught signal %d\n", sig);
-		break;
 #if defined(USE_GSTREAMER) && !defined(GST_CAN_DISABLE_FORKING)
 /* By default, gstreamer forks when you initialize it, and waitpids for the
  * child.  But if libpurple reaps the child rather than leaving it to
@@ -550,6 +546,7 @@
 	gboolean debug_enabled;
 	gboolean migration_failed = FALSE;
 	GList *active_accounts;
+	struct stat st;
 
 	struct option long_options[] = {
 		{"config",       required_argument, NULL, 'c'},
@@ -853,6 +850,8 @@
 	 * in user's home directory.
 	 */
 	search_path = g_build_filename(purple_user_dir(), "plugins", NULL);
+	if (!g_stat(search_path, &st))
+		g_mkdir(search_path, S_IRUSR | S_IWUSR | S_IXUSR);
 	purple_plugins_add_search_path(search_path);
 	g_free(search_path);
 	purple_plugins_add_search_path(LIBDIR);
--- a/pidgin/gtkmedia.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/pidgin/gtkmedia.c	Tue Jul 20 02:48:15 2010 +0000
@@ -390,7 +390,7 @@
 	gtk_box_pack_start(GTK_BOX(vbox), media->priv->menubar,
 			FALSE, TRUE, 0);
 
-	media->priv->display = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+	media->priv->display = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
 	gtk_container_set_border_width(GTK_CONTAINER(media->priv->display),
 			PIDGIN_HIG_BOX_SPACE);
 	gtk_box_pack_start(GTK_BOX(vbox), media->priv->display,
@@ -693,29 +693,29 @@
 		gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display),
 				recv_widget, TRUE, TRUE, 0);
 		gtk_widget_show(recv_widget);
-	} else
+	} else {
 		recv_widget = gtkmedia->priv->recv_widget;
+	}
 	if (gtkmedia->priv->send_widget == NULL
 			&& type & (PURPLE_MEDIA_SEND_VIDEO |
 			PURPLE_MEDIA_SEND_AUDIO)) {
 		send_widget = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
 		gtk_box_pack_start(GTK_BOX(gtkmedia->priv->display),
-				send_widget, TRUE, TRUE, 0);
+				send_widget, FALSE, TRUE, 0);
 		button_widget = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
-		gtk_box_pack_end(GTK_BOX(send_widget), button_widget,
-				FALSE, FALSE, 0);
-		gtk_widget_show(GTK_WIDGET(button_widget));
+		gtk_box_pack_end(GTK_BOX(recv_widget), button_widget,
+				FALSE, TRUE, 0);
 		gtk_widget_show(send_widget);
 
 		/* Hold button */
 		gtkmedia->priv->hold =
 				gtk_toggle_button_new_with_mnemonic("_Hold");
+		gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->hold,
+				FALSE, FALSE, 0);
+		gtk_widget_show(gtkmedia->priv->hold);
 		g_signal_connect(gtkmedia->priv->hold, "toggled",
 				G_CALLBACK(pidgin_media_hold_toggled),
 				gtkmedia);
-		gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->hold,
-				FALSE, FALSE, 0);
-		gtk_widget_show(gtkmedia->priv->hold);
 	} else {
 		send_widget = gtkmedia->priv->send_widget;
 		button_widget = gtkmedia->priv->button_widget;
@@ -727,7 +727,7 @@
 		GtkWidget *remote_video;
 		GdkColor color = {0, 0, 0, 0};
 
-		aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE);
+		aspect = gtk_aspect_frame_new(NULL, 0, 0, 4.0/3.0, FALSE);
 		gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN);
 		gtk_box_pack_start(GTK_BOX(recv_widget), aspect, TRUE, TRUE, 0);
 
@@ -747,15 +747,16 @@
 
 		gtkmedia->priv->remote_video = remote_video;
 	}
+
 	if (type & PURPLE_MEDIA_SEND_VIDEO) {
 		PidginMediaRealizeData *data;
 		GtkWidget *aspect;
 		GtkWidget *local_video;
 		GdkColor color = {0, 0, 0, 0};
 
-		aspect = gtk_aspect_frame_new(NULL, 0.5, 0.5, 4.0/3.0, FALSE);
+		aspect = gtk_aspect_frame_new(NULL, 0, 0, 4.0/3.0, TRUE);
 		gtk_frame_set_shadow_type(GTK_FRAME(aspect), GTK_SHADOW_IN);
-		gtk_box_pack_start(GTK_BOX(send_widget), aspect, TRUE, TRUE, 0);
+		gtk_box_pack_start(GTK_BOX(send_widget), aspect, FALSE, TRUE, 0);
 
 		data = g_new0(PidginMediaRealizeData, 1);
 		data->gtkmedia = gtkmedia;
@@ -767,44 +768,43 @@
 		g_signal_connect(G_OBJECT(local_video), "realize",
 				G_CALLBACK(realize_cb), data);
 		gtk_container_add(GTK_CONTAINER(aspect), local_video);
-		gtk_widget_set_size_request (GTK_WIDGET(local_video), 160, 120);
+		gtk_widget_set_size_request (GTK_WIDGET(local_video), 80, 60);
 
 		gtk_widget_show(local_video);
 		gtk_widget_show(aspect);
 
 		gtkmedia->priv->pause =
 				gtk_toggle_button_new_with_mnemonic(_("_Pause"));
+		gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->pause,
+				FALSE, FALSE, 0);
+		gtk_widget_show(gtkmedia->priv->pause);
 		g_signal_connect(gtkmedia->priv->pause, "toggled",
 				G_CALLBACK(pidgin_media_pause_toggled),
 				gtkmedia);
-		gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->pause,
-				FALSE, FALSE, 0);
-		gtk_widget_show(gtkmedia->priv->pause);
 
 		gtkmedia->priv->local_video = local_video;
 	}
-
 	if (type & PURPLE_MEDIA_RECV_AUDIO) {
 		gtk_box_pack_end(GTK_BOX(recv_widget),
 				pidgin_media_add_audio_widget(gtkmedia,
 				PURPLE_MEDIA_RECV_AUDIO), FALSE, FALSE, 0);
 	}
+
 	if (type & PURPLE_MEDIA_SEND_AUDIO) {
 		gtkmedia->priv->mute =
 				gtk_toggle_button_new_with_mnemonic("_Mute");
+		gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->mute,
+				FALSE, FALSE, 0);
+		gtk_widget_show(gtkmedia->priv->mute);
 		g_signal_connect(gtkmedia->priv->mute, "toggled",
 				G_CALLBACK(pidgin_media_mute_toggled),
 				gtkmedia);
-		gtk_box_pack_end(GTK_BOX(button_widget), gtkmedia->priv->mute,
-				FALSE, FALSE, 0);
-		gtk_widget_show(gtkmedia->priv->mute);
 
-		gtk_box_pack_end(GTK_BOX(send_widget),
+		gtk_box_pack_end(GTK_BOX(recv_widget),
 				pidgin_media_add_audio_widget(gtkmedia,
 				PURPLE_MEDIA_SEND_AUDIO), FALSE, FALSE, 0);
 	}
 
-
 	if (type & PURPLE_MEDIA_AUDIO &&
 			gtkmedia->priv->level_handler_id == 0) {
 		gtkmedia->priv->level_handler_id = g_signal_connect(
@@ -816,8 +816,10 @@
 		gtkmedia->priv->send_widget = send_widget;
 	if (recv_widget != NULL)
 		gtkmedia->priv->recv_widget = recv_widget;
-	if (button_widget != NULL)
+	if (button_widget != NULL) {
 		gtkmedia->priv->button_widget = button_widget;
+		gtk_widget_show(GTK_WIDGET(button_widget));
+	}
 
 	if (purple_media_is_initiator(media, sid, NULL) == FALSE) {
 		if (gtkmedia->priv->timeout_id != 0)
--- a/pidgin/gtkprefs.c	Sat Jun 05 22:30:51 2010 +0000
+++ b/pidgin/gtkprefs.c	Tue Jul 20 02:48:15 2010 +0000
@@ -2260,6 +2260,7 @@
 
 	gtk_widget_set_sensitive(hbox,
 			!strcmp(method, "automatic") ||
+			!strcmp(method, "alsa") ||
 			!strcmp(method, "esd"));
 }
 #endif /* USE_GSTREAMER */
--- a/pidgin/plugins/Makefile.mingw	Sat Jun 05 22:30:51 2010 +0000
+++ b/pidgin/plugins/Makefile.mingw	Tue Jul 20 02:48:15 2010 +0000
@@ -73,7 +73,7 @@
 	$(MAKE) -C $(WINPREFS_PLUGIN) -f $(MINGW_MAKEFILE) install
 	cp *.dll $(PIDGIN_INSTALL_PLUGINS_DIR)
 
-.c.dll:
+%.dll: %.c $(PURPLE_CONFIG_H) $(PURPLE_VERSION_H)
 	$(CC) $(CFLAGS) $(DEFINES) $(INCLUDE_PATHS) -o $@.o -c $<
 	$(CC) -shared $@.o $(LIB_PATHS) $(LIBS) $(DLL_LD_FLAGS) -o $@
 
--- a/po/sv.po	Sat Jun 05 22:30:51 2010 +0000
+++ b/po/sv.po	Tue Jul 20 02:48:15 2010 +0000
@@ -9,8 +9,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-05-30 23:16-0400\n"
-"PO-Revision-Date: 2010-01-13 13:48+0100\n"
+"POT-Creation-Date: 2010-06-20 19:20+0200\n"
+"PO-Revision-Date: 2010-06-20 19:50+0100\n"
 "Last-Translator: Peter Hjalmarsson <xake@rymdraket.net>\n"
 "Language-Team: \n"
 "Language: \n"
@@ -49,14 +49,8 @@
 "  -v, --version       visa nuvarande version och avsluta\n"
 
 #, c-format
-msgid ""
-"%s encountered errors migrating your settings from %s to %s. Please "
-"investigate and complete the migration by hand. Please report this error at "
-"http://developer.pidgin.im"
-msgstr ""
-"%s stötte på problem då dina inställningar flyttades från %s till %s. Du kan "
-"undersöka och flytta inställningarna för han och rapportera felet på sidan "
-"http://developer.pidgin.im"
+msgid "%s encountered errors migrating your settings from %s to %s. Please investigate and complete the migration by hand. Please report this error at http://developer.pidgin.im"
+msgstr "%s stötte på problem då dina inställningar flyttades från %s till %s. Du kan undersöka och flytta inställningarna för han och rapportera felet på sidan http://developer.pidgin.im"
 
 #. the user did not fill in the captcha
 msgid "Error"
@@ -353,12 +347,8 @@
 msgid "Unblock"
 msgstr "Ta bort blockering"
 
-msgid ""
-"Please enter the username or alias of the person you would like to Block/"
-"Unblock."
-msgstr ""
-"Ange användarnamnet eller aliaset för den person som du vill blockera/"
-"avblockera."
+msgid "Please enter the username or alias of the person you would like to Block/Unblock."
+msgstr "Ange användarnamnet eller aliaset för den person som du vill blockera/avblockera."
 
 #. Not multiline
 #. Not masked?
@@ -370,9 +360,7 @@
 msgstr "Nytt snabbmeddelande"
 
 msgid "Please enter the username or alias of the person you would like to IM."
-msgstr ""
-"Ange användarnamnet eller aliaset för den person som du vill skicka "
-"snabbmeddelande till."
+msgstr "Ange användarnamnet eller aliaset för den person som du vill skicka snabbmeddelande till."
 
 msgid "Channel"
 msgstr "Kanal"
@@ -386,11 +374,8 @@
 msgid "Join"
 msgstr "Anslut"
 
-msgid ""
-"Please enter the username or alias of the person whose log you would like to "
-"view."
-msgstr ""
-"Ange användarnamnet eller aliaset för den person vars logg du vill visa."
+msgid "Please enter the username or alias of the person whose log you would like to view."
+msgstr "Ange användarnamnet eller aliaset för den person vars logg du vill visa."
 
 #. Create the "Options" frame.
 msgid "Options"
@@ -536,13 +521,11 @@
 msgid ""
 "%s\n"
 "\n"
-"Finch will not attempt to reconnect the account until you correct the error "
-"and re-enable the account."
+"Finch will not attempt to reconnect the account until you correct the error and re-enable the account."
 msgstr ""
 "%s\n"
 "\n"
-"Finch kommer inte försöka ansluta förrän du har rättat till felet och "
-"återaktiverat kontot."
+"Finch kommer inte försöka ansluta förrän du har rättat till felet och återaktiverat kontot."
 
 msgid "Re-enable Account"
 msgstr "Återaktivera konto"
@@ -587,23 +570,14 @@
 msgid "You have left this chat."
 msgstr "Du har lämnat denna chatt."
 
-msgid ""
-"The account has disconnected and you are no longer in this chat. You will be "
-"automatically rejoined in the chat when the account reconnects."
-msgstr ""
-"Kontot har inaktiverats och du är inte längre med i denna chatt. Du kommer "
-"automatiskt gå med i chatten när kontot återansluts."
+msgid "The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects."
+msgstr "Kontot har inaktiverats och du är inte längre med i denna chatt. Du kommer automatiskt gå med i chatten när kontot återansluts."
 
 msgid "Logging started. Future messages in this conversation will be logged."
-msgstr ""
-"Loggning startades. Framtida meddelanden i denna konversation kommer att "
-"loggas."
-
-msgid ""
-"Logging stopped. Future messages in this conversation will not be logged."
-msgstr ""
-"Loggning stoppades. Framtida meddelanden i denna konversation kommer inte "
-"att loggas."
+msgstr "Loggning startades. Framtida meddelanden i denna konversation kommer att loggas."
+
+msgid "Logging stopped. Future messages in this conversation will not be logged."
+msgstr "Loggning stoppades. Framtida meddelanden i denna konversation kommer inte att loggas."
 
 msgid "Send To"
 msgstr "Skicka till"
@@ -655,34 +629,21 @@
 "Följande kommandon är tillgängliga i sammanhanget:\n"
 
 #, c-format
-msgid ""
-"%s is not a valid message class. See '/help msgcolor' for valid message "
-"classes."
-msgstr ""
-"%s är inte en giltig meddelandeklass. Se '/help msgcolor' för giltiga "
-"meddelandeklasser."
+msgid "%s is not a valid message class. See '/help msgcolor' for valid message classes."
+msgstr "%s är inte en giltig meddelandeklass. Se '/help msgcolor' för giltiga meddelandeklasser."
 
 #, c-format
 msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
 msgstr "%s är inte en giltig färg. Se '/help msgcolor' för giltiga färger."
 
-msgid ""
-"say &lt;message&gt;:  Send a message normally as if you weren't using a "
-"command."
-msgstr ""
-"say &lt;meddelande&gt;:  Skickar ett meddelande normalt som om du inte "
-"använde ett kommando."
+msgid "say &lt;message&gt;:  Send a message normally as if you weren't using a command."
+msgstr "say &lt;meddelande&gt;:  Skickar ett meddelande normalt som om du inte använde ett kommando."
 
 msgid "me &lt;action&gt;:  Send an IRC style action to a buddy or chat."
-msgstr ""
-"me &lt;åtgärd&gt;:  Skickar en åtgärd i IRC-stil till en kompis eller chatt."
-
-msgid ""
-"debug &lt;option&gt;:  Send various debug information to the current "
-"conversation."
-msgstr ""
-"debug &lt;alternativ&gt;:  Skickar all möjlig felsökningsinformation till "
-"den nuvarande konversationen."
+msgstr "me &lt;åtgärd&gt;:  Skickar en åtgärd i IRC-stil till en kompis eller chatt."
+
+msgid "debug &lt;option&gt;:  Send various debug information to the current conversation."
+msgstr "debug &lt;alternativ&gt;:  Skickar all möjlig felsökningsinformation till den nuvarande konversationen."
 
 msgid "clear: Clears the conversation scrollback."
 msgstr "clear: Rensar konversationens tillbakablick."
@@ -711,18 +672,8 @@
 msgid "statuses: Show the savedstatuses window."
 msgstr "statuses: Visar statushanteraren."
 
-msgid ""
-"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color "
-"for different classes of messages in the conversation window.<br>    &lt;"
-"class&gt;: receive, send, highlight, action, timestamp<br>    &lt;foreground/"
-"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
-"cyan, default<br><br>EXAMPLE:<br>    msgcolor send cyan default"
-msgstr ""
-"msgcolor &lt;klass&gt; &lt;förgrund&gt; &lt;bakgrund&gt;: Anger färgerna för "
-"olika klasser av meddelanden in konversationsfönstret. <br>    &lt;"
-"klass&gt;: recieve, send, highlight, action, timestamp<br>    &lt;förgrund/"
-"bakgrund&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, "
-"default<br><br>EXEMPEL:<br>    msgcolor send cyan default"
+msgid "msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color for different classes of messages in the conversation window.<br>    &lt;class&gt;: receive, send, highlight, action, timestamp<br>    &lt;foreground/background&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, default<br><br>EXAMPLE:<br>    msgcolor send cyan default"
+msgstr "msgcolor &lt;klass&gt; &lt;förgrund&gt; &lt;bakgrund&gt;: Anger färgerna för olika klasser av meddelanden in konversationsfönstret. <br>    &lt;klass&gt;: recieve, send, highlight, action, timestamp<br>    &lt;förgrund/bakgrund&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, default<br><br>EXEMPEL:<br>    msgcolor send cyan default"
 
 msgid "Unable to open file."
 msgstr "Kan inte öppna filen."
@@ -825,25 +776,14 @@
 msgid "%B %Y"
 msgstr "%B %Y"
 
-msgid ""
-"System events will only be logged if the \"Log all status changes to system "
-"log\" preference is enabled."
-msgstr ""
-"Systemhändelser kommer endast att loggas om alternativet \"Logga alla "
-"statusförändringar till systemloggen\" är aktiverat i inställningarna."
-
-msgid ""
-"Instant messages will only be logged if the \"Log all instant messages\" "
-"preference is enabled."
-msgstr ""
-"Snabbmeddelanden kommer endast att loggas om alternativet \"Logga alla "
-"snabbmeddelanden\" är aktiverat i inställningarna."
-
-msgid ""
-"Chats will only be logged if the \"Log all chats\" preference is enabled."
-msgstr ""
-"Chattar kommer endast att loggas om alternativet \"Logga alla chattar\" är "
-"aktiverat i inställningarna."
+msgid "System events will only be logged if the \"Log all status changes to system log\" preference is enabled."
+msgstr "Systemhändelser kommer endast att loggas om alternativet \"Logga alla statusförändringar till systemloggen\" är aktiverat i inställningarna."
+
+msgid "Instant messages will only be logged if the \"Log all instant messages\" preference is enabled."
+msgstr "Snabbmeddelanden kommer endast att loggas om alternativet \"Logga alla snabbmeddelanden\" är aktiverat i inställningarna."
+
+msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr "Chattar kommer endast att loggas om alternativet \"Logga alla chattar\" är aktiverat i inställningarna."
 
 msgid "No logs were found"
 msgstr "Inga loggar hittades"
@@ -985,11 +925,8 @@
 msgid "The selected file is not a valid plugin."
 msgstr "Den valda filen är inte en giltig insticksmodul."
 
-msgid ""
-"Please open the debug window and try again to see the exact error message."
-msgstr ""
-"Öppna felsökningsfönstret och försök igen för att få det exakta "
-"felmeddelandet."
+msgid "Please open the debug window and try again to see the exact error message."
+msgstr "Öppna felsökningsfönstret och försök igen för att få det exakta felmeddelandet."
 
 msgid "Select plugin to install"
 msgstr "Välj en insticksmodul att installera"
@@ -1418,8 +1355,7 @@
 msgstr "Kunde inte hitta fönster"
 
 msgid "This plugin cannot be loaded because it was not built with X11 support."
-msgstr ""
-"Insticksmodulen kan inte laddas eftersom den inte är byggd med stöd för X11."
+msgstr "Insticksmodulen kan inte laddas eftersom den inte är byggd med stöd för X11."
 
 msgid "GntClipboard"
 msgstr "GntKlippbok"
@@ -1427,12 +1363,8 @@
 msgid "Clipboard plugin"
 msgstr "Klippbordsmodul"
 
-msgid ""
-"When the gnt clipboard contents change, the contents are made available to "
-"X, if possible."
-msgstr ""
-"När innehållet i gnt klippboken ändras görs innehållet tillgängligt för X, "
-"när det är möjligt."
+msgid "When the gnt clipboard contents change, the contents are made available to X, if possible."
+msgstr "När innehållet i gnt klippboken ändras görs innehållet tillgängligt för X, när det är möjligt."
 
 #, c-format
 msgid "%s just signed on"
@@ -1491,13 +1423,11 @@
 msgid ""
 "Logging can be enabled from Tools -> Preferences -> Logging.\n"
 "\n"
-"Enabling logs for instant messages and/or chats will activate history for "
-"the same conversation type(s)."
+"Enabling logs for instant messages and/or chats will activate history for the same conversation type(s)."
 msgstr ""
 "Loggning kan aktiveras från Verktyg -> Inställningar -> Loggning.\n"
 "\n"
-"Om loggning aktiveras för snabbmeddelanden och/eller chattar så aktiveras "
-"även historik för samma konversationstyper."
+"Om loggning aktiveras för snabbmeddelanden och/eller chattar så aktiveras även historik för samma konversationstyper."
 
 msgid "GntHistory"
 msgstr "GntHistorik"
@@ -1505,12 +1435,8 @@
 msgid "Shows recently logged conversations in new conversations."
 msgstr "Visar nyligen loggade konversationer i nya konversationsfönster."
 
-msgid ""
-"When a new conversation is opened this plugin will insert the last "
-"conversation into the current conversation."
-msgstr ""
-"När en ny konversation öppnas kommer denna insticksmodul att lägga till den "
-"föregående konversationen i den nuvarande."
+msgid "When a new conversation is opened this plugin will insert the last conversation into the current conversation."
+msgstr "När en ny konversation öppnas kommer denna insticksmodul att lägga till den föregående konversationen i den nuvarande."
 
 #, c-format
 msgid ""
@@ -1540,9 +1466,7 @@
 msgstr "TinyURL modul"
 
 msgid "When receiving a message with URL(s), use TinyURL for easier copying"
-msgstr ""
-"När du får meddelande med en/flera URL/URLer, använd TinyURL för att lättare "
-"hantering"
+msgstr "När du får meddelande med en/flera URL/URLer, använd TinyURL för att lättare hantering"
 
 msgid "Online"
 msgstr "Ansluten"
@@ -1640,13 +1564,11 @@
 msgid "Set User Info"
 msgstr "Ange användarinformation"
 
-#, fuzzy
 msgid "This protocol does not support setting a public alias."
-msgstr "Protokollet stödjer inte chattrum."
-
-#, fuzzy
+msgstr "Protokollet stödjer inte att ange ett publikt alias."
+
 msgid "This protocol does not support fetching the public alias."
-msgstr "Protokollet stödjer inte chattrum."
+msgstr "Protokollet stödjer inte att hämta publikt alias."
 
 msgid "Unknown"
 msgstr "Okänd"
@@ -1658,15 +1580,10 @@
 msgstr "kompislista"
 
 msgid "The certificate is self-signed and cannot be automatically checked."
-msgstr ""
-"Detta certifikatet är självsignerat och kan inte kontrolleras automatiskt."
-
-msgid ""
-"The certificate is not trusted because no certificate that can verify it is "
-"currently trusted."
-msgstr ""
-"Detta certifikat är inte betrott eftersom inget certifikat som kan verifiera "
-"det är betrott."
+msgstr "Detta certifikatet är självsignerat och kan inte kontrolleras automatiskt."
+
+msgid "The certificate is not trusted because no certificate that can verify it is currently trusted."
+msgstr "Detta certifikat är inte betrott eftersom inget certifikat som kan verifiera det är betrott."
 
 msgid "The certificate is not valid yet."
 msgstr "Certifikatet är inte giltigt än."
@@ -1678,12 +1595,8 @@
 msgid "The certificate presented is not issued to this domain."
 msgstr "Certifikatet är inte utfärdat för denna domän."
 
-msgid ""
-"You have no database of root certificates, so this certificate cannot be "
-"validated."
-msgstr ""
-"Du har ingen databas över rootcertifikat, så detta certifikat kan inte bli "
-"verifierat."
+msgid "You have no database of root certificates, so this certificate cannot be validated."
+msgstr "Du har ingen databas över rootcertifikat, så detta certifikat kan inte bli verifierat."
 
 msgid "The certificate chain presented is invalid."
 msgstr "Certifikatskedjan som uppvisades är ogiltig."
@@ -1750,12 +1663,8 @@
 msgstr "Kan inte validera certifikat."
 
 #, c-format
-msgid ""
-"The certificate claims to be from \"%s\" instead. This could mean that you "
-"are not connecting to the service you believe you are."
-msgstr ""
-"Certifikatet påstår sig vara för \"%s\" istället. Detta kan betyda att du "
-"inte ansluter till den tjänst du tror du ansluter till."
+msgid "The certificate claims to be from \"%s\" instead. This could mean that you are not connecting to the service you believe you are."
+msgstr "Certifikatet påstår sig vara för \"%s\" istället. Detta kan betyda att du inte ansluter till den tjänst du tror du ansluter till."
 
 #. Make messages
 #, c-format
@@ -1845,12 +1754,8 @@
 msgstr "Bjud in till chatt"
 
 #. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Ange namnet på den användare du vill bjuda in, samt ett "
-"inbjudningsmeddelande om du vill"
+msgid "Please enter the name of the user you wish to invite, along with an optional invite message."
+msgstr "Ange namnet på den användare du vill bjuda in, samt ett inbjudningsmeddelande om du vill"
 
 #, c-format
 msgid "Failed to get connection: %s"
@@ -1865,9 +1770,7 @@
 msgstr "Kunde inte få serv namn: %s"
 
 msgid "Purple's D-BUS server is not running for the reason listed below"
-msgstr ""
-"Purples D-BUS server körs inte på grund av någon av de nedan listade "
-"anledningarna"
+msgstr "Purples D-BUS server körs inte på grund av någon av de nedan listade anledningarna"
 
 msgid "No name"
 msgstr "Inget namn"
@@ -2076,52 +1979,32 @@
 msgid "The handler for \"ymsgr\" URLs"
 msgstr "Hanteraren för \"ymsgr\" URLer"
 
-msgid ""
-"True if the command specified in the \"command\" key should handle \"aim\" "
-"URLs."
+msgid "True if the command specified in the \"command\" key should handle \"aim\" URLs."
 msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"aim\" URLer"
 
-msgid ""
-"True if the command specified in the \"command\" key should handle \"gg\" "
-"URLs."
+msgid "True if the command specified in the \"command\" key should handle \"gg\" URLs."
 msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"gg\" URLer"
 
-msgid ""
-"True if the command specified in the \"command\" key should handle \"icq\" "
-"URLs."
+msgid "True if the command specified in the \"command\" key should handle \"icq\" URLs."
 msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"icq\" URLer"
 
-msgid ""
-"True if the command specified in the \"command\" key should handle \"irc\" "
-"URLs."
+msgid "True if the command specified in the \"command\" key should handle \"irc\" URLs."
 msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"irc\" URLer"
 
-msgid ""
-"True if the command specified in the \"command\" key should handle \"msnim\" "
-"URLs."
+msgid "True if the command specified in the \"command\" key should handle \"msnim\" URLs."
 msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"msnim\" URLer"
 
-msgid ""
-"True if the command specified in the \"command\" key should handle \"sip\" "
-"URLs."
+msgid "True if the command specified in the \"command\" key should handle \"sip\" URLs."
 msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"sip\" URLer"
 
-msgid ""
-"True if the command specified in the \"command\" key should handle \"xmpp\" "
-"URLs."
+msgid "True if the command specified in the \"command\" key should handle \"xmpp\" URLs."
 msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"xmpp\" URLer"
 
-msgid ""
-"True if the command specified in the \"command\" key should handle \"ymsgr\" "
-"URLs."
+msgid "True if the command specified in the \"command\" key should handle \"ymsgr\" URLs."
 msgstr "Sant om kommandot i nyckeln \"kommando\" ska hantera \"ymsgr\" URLer"
 
-msgid ""
-"True if the command used to handle this type of URL should be run in a "
-"terminal."
-msgstr ""
-"Sant om kommandot som används för att hantera denna sortens URLer ska köras "
-"i en terminal."
+msgid "True if the command used to handle this type of URL should be run in a terminal."
+msgstr "Sant om kommandot som används för att hantera denna sortens URLer ska köras i en terminal."
 
 msgid "Whether the specified command should handle \"aim\" URLs"
 msgstr "Om det specifika kommandot ska hantera \"aim\" URLer"
@@ -2166,20 +2049,12 @@
 msgstr "XML"
 
 #, c-format
-msgid ""
-"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
-"REPLY&gt;:</b></font> %s<br/>\n"
-msgstr ""
-"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:"
-"</b></font> %s<br/>\n"
-
-#, c-format
-msgid ""
-"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
-"REPLY&gt;:</b></font> %s<br/>\n"
-msgstr ""
-"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:"
-"</b></font> %s<br/>\n"
+msgid "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
+msgstr "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:</b></font> %s<br/>\n"
+
+#, c-format
+msgid "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
+msgstr "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:</b></font> %s<br/>\n"
 
 msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
 msgstr "<font color=\"red\"><b>Kunde inte hitta loggens sökväg!</b></font>"
@@ -2192,17 +2067,11 @@
 msgid "(%s) %s <AUTO-REPLY>: %s\n"
 msgstr "(%s) %s <AUTO-SVAR>: %s\n"
 
-msgid ""
-"No codecs found. Install some GStreamer codecs found in GStreamer plugins "
-"packages."
-msgstr ""
-"Hittade inga codecs. Installera några GStreamer codecs vilka finns i "
-"GStreamers pluginpaket."
-
-msgid ""
-"No codecs left. Your codec preferences in fs-codecs.conf are too strict."
-msgstr ""
-"Ingen codec kvar. Dina codec-inställningar i fs-codecs.conf är för strikta."
+msgid "No codecs found. Install some GStreamer codecs found in GStreamer plugins packages."
+msgstr "Hittade inga codecs. Installera några GStreamer codecs vilka finns i GStreamers pluginpaket."
+
+msgid "No codecs left. Your codec preferences in fs-codecs.conf are too strict."
+msgstr "Ingen codec kvar. Dina codec-inställningar i fs-codecs.conf är för strikta."
 
 msgid "A non-recoverable Farsight2 error has occurred."
 msgstr "Ett okänt Farsight2-fel har inträffat."
@@ -2235,19 +2104,12 @@
 msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
 msgstr "ABI versionen passar inte %d.%d.x (behöver %d.%d.x)"
 
-msgid ""
-"Plugin does not implement all required functions (list_icon, login and close)"
-msgstr ""
-"Insticksmodulen tillhandahåller inte alla nödvändiga funktioner (list_icon, "
-"login och close)"
-
-#, c-format
-msgid ""
-"The required plugin %s was not found. Please install this plugin and try "
-"again."
-msgstr ""
-"Den efterfrågade insticksmodulen %s kunde inte hittas. Installera "
-"insticksmodulen och försök igen."
+msgid "Plugin does not implement all required functions (list_icon, login and close)"
+msgstr "Insticksmodulen tillhandahåller inte alla nödvändiga funktioner (list_icon, login och close)"
+
+#, c-format
+msgid "The required plugin %s was not found. Please install this plugin and try again."
+msgstr "Den efterfrågade insticksmodulen %s kunde inte hittas. Installera insticksmodulen och försök igen."
 
 msgid "Unable to load the plugin"
 msgstr "Kunde inte ladda insticksmodulen"
@@ -2349,8 +2211,7 @@
 
 #. *< summary
 msgid "Adds the option to store notes for buddies on your buddy list."
-msgstr ""
-"Lägger till möjligheten att lagra noteringar för kompisar i din kompislista."
+msgstr "Lägger till möjligheten att lagra noteringar för kompisar i din kompislista."
 
 #. *< type
 #. *< ui_requirement
@@ -2448,12 +2309,8 @@
 msgstr "Testinsticksmodul för IPC-stöd, som en klient."
 
 #. *  description
-msgid ""
-"Test plugin IPC support, as a client. This locates the server plugin and "
-"calls the commands registered."
-msgstr ""
-"Testinsticksmodul för IPC-stöd. Denna lokaliserar serverinsticksmodulen och "
-"anropar de kommandon som krävs."
+msgid "Test plugin IPC support, as a client. This locates the server plugin and calls the commands registered."
+msgstr "Testinsticksmodul för IPC-stöd. Denna lokaliserar serverinsticksmodulen och anropar de kommandon som krävs."
 
 #. *< type
 #. *< ui_requirement
@@ -2472,9 +2329,7 @@
 
 #. *  description
 msgid "Test plugin IPC support, as a server. This registers the IPC commands."
-msgstr ""
-"Testinsticksmodul för IPC-stöd, som en server. Denna registrerar IPC-"
-"kommandona."
+msgstr "Testinsticksmodul för IPC-stöd, som en server. Denna registrerar IPC-kommandona."
 
 msgid "Hide Joins/Parts"
 msgstr "Göm gå med/lämna"
@@ -2505,12 +2360,8 @@
 msgstr "Gömmer extraaktiga kommer in/lämnar meddelanden."
 
 #. *  description
-msgid ""
-"This plugin hides join/part messages in large rooms, except for those users "
-"actively taking part in a conversation."
-msgstr ""
-"Denna modul gömmer kommer in/lämnar meddelanden i stora rum, förutom för de "
-"användare som är aktiva i konversationen."
+msgid "This plugin hides join/part messages in large rooms, except for those users actively taking part in a conversation."
+msgstr "Denna modul gömmer kommer in/lämnar meddelanden i stora rum, förutom för de användare som är aktiva i konversationen."
 
 #. This is used in the place of a timezone abbreviation if the
 #. * offset is way off.  The user should never really see it, but
@@ -2535,16 +2386,11 @@
 msgid "You were disconnected from the server."
 msgstr "Du har blivit frånkopplad från servern."
 
-msgid ""
-"You are currently disconnected. Messages will not be received unless you are "
-"logged in."
-msgstr ""
-"Du är just nu inte ansluten. Meddelanden kan inte tas emot om du inte är "
-"ansluten."
+msgid "You are currently disconnected. Messages will not be received unless you are logged in."
+msgstr "Du är just nu inte ansluten. Meddelanden kan inte tas emot om du inte är ansluten."
 
 msgid "Message could not be sent because the maximum length was exceeded."
-msgstr ""
-"Meddelandet kunde inte skickas eftersom den maximala längden överträddes."
+msgstr "Meddelandet kunde inte skickas eftersom den maximala längden överträddes."
 
 msgid "Message could not be sent."
 msgstr "Meddelande kunde inte skickas."
@@ -2622,18 +2468,13 @@
 
 #. * description
 msgid ""
-"When viewing logs, this plugin will include logs from other IM clients. "
-"Currently, this includes Adium, MSN Messenger, aMSN, and Trillian.\n"
-"\n"
-"WARNING: This plugin is still alpha code and may crash frequently.  Use it "
-"at your own risk!"
-msgstr ""
-"Vid visning av loggfiler kommer denna modul inkludera loggar från andra IM-"
-"klienter. För närvarande inkluderar detta Adium, MSN Messenger, aMSN, och "
-"Trillian.\n"
-"\n"
-"VARNING: Denna modul är fortfarande alpha-kod och kan krasha ofta. Använd på "
-"egen risk!"
+"When viewing logs, this plugin will include logs from other IM clients. Currently, this includes Adium, MSN Messenger, aMSN, and Trillian.\n"
+"\n"
+"WARNING: This plugin is still alpha code and may crash frequently.  Use it at your own risk!"
+msgstr ""
+"Vid visning av loggfiler kommer denna modul inkludera loggar från andra IM-klienter. För närvarande inkluderar detta Adium, MSN Messenger, aMSN, och Trillian.\n"
+"\n"
+"VARNING: Denna modul är fortfarande alpha-kod och kan krasha ofta. Använd på egen risk!"
 
 msgid "Mono Plugin Loader"
 msgstr "Läsare för Monomoduler"
@@ -2665,41 +2506,27 @@
 msgstr "Lägger en tom rad före det visade meddelandet."
 
 #. *< summary
-msgid ""
-"Prepends a newline to messages so that the rest of the message appears below "
-"the username in the conversation window."
-msgstr ""
-"Inleder med en tom linje i meddelandet så att resten av meddelandet "
-"uppträder nedanför användarnamnet i konversationsfönstret."
+msgid "Prepends a newline to messages so that the rest of the message appears below the username in the conversation window."
+msgstr "Inleder med en tom linje i meddelandet så att resten av meddelandet uppträder nedanför användarnamnet i konversationsfönstret."
 
 msgid "Offline Message Emulation"
 msgstr "Frånkopplad meddelandeemulering"
 
 msgid "Save messages sent to an offline user as pounce."
-msgstr ""
-"Spara meddelandet skickat till en frånkopplad användare som en notifiering"
-
-msgid ""
-"The rest of the messages will be saved as pounces. You can edit/delete the "
-"pounce from the `Buddy Pounce' dialog."
-msgstr ""
-"Resten av meddelanden kommer sparas som notifieringar. Du kan ändra/ta bort "
-"notifieringarna från `Kompisnotifieringar' dialogen."
-
-#, c-format
-msgid ""
-"\"%s\" is currently offline. Do you want to save the rest of the messages in "
-"a pounce and automatically send them when \"%s\" logs back in?"
-msgstr ""
-"\"%s\" är för närvarande frånkopplad. Vill du spara resten av meddelandena "
-"som en notifiering och skicka dem automatiskt när \"%s\" ansluter igen?"
+msgstr "Spara meddelandet skickat till en frånkopplad användare som en notifiering"
+
+msgid "The rest of the messages will be saved as pounces. You can edit/delete the pounce from the `Buddy Pounce' dialog."
+msgstr "Resten av meddelanden kommer sparas som notifieringar. Du kan ändra/ta bort notifieringarna från `Kompisnotifieringar' dialogen."
+
+#, c-format
+msgid "\"%s\" is currently offline. Do you want to save the rest of the messages in a pounce and automatically send them when \"%s\" logs back in?"
+msgstr "\"%s\" är för närvarande frånkopplad. Vill du spara resten av meddelandena som en notifiering och skicka dem automatiskt när \"%s\" ansluter igen?"
 
 msgid "Offline Message"
 msgstr "Frånkopplade meddelanden"
 
 msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
-msgstr ""
-"Du kan ändra/ta bort notifieringarna från `Kompisnotifieringar' dialogen"
+msgstr "Du kan ändra/ta bort notifieringarna från `Kompisnotifieringar' dialogen"
 
 msgid "Yes"
 msgstr "Ja"
@@ -2733,12 +2560,10 @@
 
 #. *  description
 msgid ""
-"Allows you to enforce on a per-account basis that passwords not being saved "
-"are only used in a single successful connection.\n"
+"Allows you to enforce on a per-account basis that passwords not being saved are only used in a single successful connection.\n"
 "Note: The account password must not be saved for this to work."
 msgstr ""
-"Tillåter dig att välja per konto om lösenorden som inte sparas bara ska "
-"användas till en lyckad anslutning.\n"
+"Tillåter dig att välja per konto om lösenorden som inte sparas bara ska användas till en lyckad anslutning.\n"
 "Notering: Kontolösenordet får inte sparas om dettta ska fungera."
 
 #. *< type
@@ -2762,12 +2587,8 @@
 msgid "Psychic mode for incoming conversation"
 msgstr "Siande läge för inkommande konversation"
 
-msgid ""
-"Causes conversation windows to appear as other users begin to message you.  "
-"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
-msgstr ""
-"Får konversationsfönster att dyka upp då andra användare börjar att skicka "
-"meddelande till dig. Detta fungerar för AIM, ICQ, XMPP, Sametime och Yahoo!"
+msgid "Causes conversation windows to appear as other users begin to message you.  This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr "Får konversationsfönster att dyka upp då andra användare börjar att skicka meddelande till dig. Detta fungerar för AIM, ICQ, XMPP, Sametime och Yahoo!"
 
 msgid "You feel a disturbance in the force..."
 msgstr "Du känner en störning i kraften..."
@@ -2915,12 +2736,8 @@
 #. *< version
 #. *  summary
 #. *  description
-msgid ""
-"Notifies in a conversation window when a buddy goes or returns from away or "
-"idle."
-msgstr ""
-"Rapporterar i konversationsfönstret när en kompis blir frånvarande/inaktiv "
-"eller kommer tillbaka."
+msgid "Notifies in a conversation window when a buddy goes or returns from away or idle."
+msgstr "Rapporterar i konversationsfönstret när en kompis blir frånvarande/inaktiv eller kommer tillbaka."
 
 msgid "Tcl Plugin Loader"
 msgstr "Tcl-insticksmodulladdare"
@@ -2928,25 +2745,16 @@
 msgid "Provides support for loading Tcl plugins"
 msgstr "Gör det möjligt att ladda Tcl-insticksmoduler"
 
-msgid ""
-"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
-"install ActiveTCL from http://www.activestate.com\n"
-msgstr ""
-"Kunde inte finna en installation av ActiveTCL. Om du tänker använda TCL-"
-"modulen måste du installera ActiveTCL från http://www.activestate.com\n"
-
-msgid ""
-"Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin."
-"im/BonjourWindows for more information."
-msgstr ""
-"Kunde inte hitta Apples \"Bonjour För Windows\", läs på http://d.pidgin.im/"
-"BonjourWindows för mer information"
+msgid "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n"
+msgstr "Kunde inte finna en installation av ActiveTCL. Om du tänker använda TCL-modulen måste du installera ActiveTCL från http://www.activestate.com\n"
+
+msgid "Unable to find Apple's \"Bonjour for Windows\" toolkit, see http://d.pidgin.im/BonjourWindows for more information."
+msgstr "Kunde inte hitta Apples \"Bonjour För Windows\", läs på http://d.pidgin.im/BonjourWindows för mer information"
 
 msgid "Unable to listen for incoming IM connections"
 msgstr "Kan inte lyssna efter inkommande IM anslutningar"
 
-msgid ""
-"Unable to establish connection with the local mDNS server.  Is it running?"
+msgid "Unable to establish connection with the local mDNS server.  Is it running?"
 msgstr "Kunde inte skapa en anslutning via den lokala mDNS-servern. Körs den?"
 
 msgid "First name"
@@ -3001,12 +2809,8 @@
 msgid "Invalid proxy settings"
 msgstr "Felaktiga proxyinställningar"
 
-msgid ""
-"Either the host name or port number specified for your given proxy type is "
-"invalid."
-msgstr ""
-"Antingen värdnamnet eller portnummret som är angivet för din proxytyp är "
-"ogiltigt."
+msgid "Either the host name or port number specified for your given proxy type is invalid."
+msgstr "Antingen värdnamnet eller portnummret som är angivet för din proxytyp är ogiltigt."
 
 msgid "Token Error"
 msgstr "Markörsfel"
@@ -3518,19 +3322,11 @@
 msgid "Invalid nickname"
 msgstr "Ogiltigt smeknamn"
 
-msgid ""
-"Your selected nickname was rejected by the server.  It probably contains "
-"invalid characters."
-msgstr ""
-"Ditt valda smeknamn vägrades av servern. Det innehåller antagligen otillåtna "
-"tecken."
-
-msgid ""
-"Your selected account name was rejected by the server.  It probably contains "
-"invalid characters."
-msgstr ""
-"Ditt valda kontonamn vägrades av servern. Det innehåller antagligen "
-"otillåtna tecken."
+msgid "Your selected nickname was rejected by the server.  It probably contains invalid characters."
+msgstr "Ditt valda smeknamn vägrades av servern. Det innehåller antagligen otillåtna tecken."
+
+msgid "Your selected account name was rejected by the server.  It probably contains invalid characters."
+msgstr "Ditt valda kontonamn vägrades av servern. Det innehåller antagligen otillåtna tecken."
 
 #. We only want to do the following dance if the connection
 #. has not been successfully completed.  If it has, just
@@ -3576,12 +3372,8 @@
 msgid "action &lt;action to perform&gt;:  Perform an action."
 msgstr "action &lt;action to perform&gt;:  Utför en åtgärd."
 
-msgid ""
-"away [message]:  Set an away message, or use no message to return from being "
-"away."
-msgstr ""
-"away [meddelande]:  Ange ett frånvaromeddelande eller ange utan meddelande "
-"för att återvända från frånvaro."
+msgid "away [message]:  Set an away message, or use no message to return from being away."
+msgstr "away [meddelande]:  Ange ett frånvaromeddelande eller ange utan meddelande för att återvända från frånvaro."
 
 msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
 msgstr "ctcp <alias> <meddelande>: skicka ett ctcp meddelande till alias"
@@ -3589,56 +3381,26 @@
 msgid "chanserv: Send a command to chanserv"
 msgstr "chanserv: Skicka ett kommando till chanserv"
 
-msgid ""
-"deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from "
-"someone. You must be a channel operator to do this."
-msgstr ""
-"deop &lt;smeknamn1&gt; [smeknamn2] ...:  Ta bort kanaloperatörsstatus från "
-"någon. Du måste vara en operatör själv för att kunna göra detta."
-
-msgid ""
-"devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from "
-"someone, preventing them from speaking if the channel is moderated (+m). You "
-"must be a channel operator to do this."
-msgstr ""
-"devoice &lt;smeknamn1&gt; [smeknamn2] ...:  Tar bort kanalröststatus från "
-"någon för att förhindra den från att tala då kanalen är modererad (+m). Du "
-"måste vara en operatör själv för att kunna göra detta."
-
-msgid ""
-"invite &lt;nick&gt; [room]:  Invite someone to join you in the specified "
-"channel, or the current channel."
-msgstr ""
-"invite &lt;smeknamn&gt; [rum]:  Bjud in någon till en specificerad kanal "
-"eller till den nuvarande."
-
-msgid ""
-"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
-"channels, optionally providing a channel key for each if needed."
-msgstr ""
-"j &lt;rum1&gt;[,rum2][,...] [nyckel1[,nyckel2][,...]]:  Anslut till en eller "
-"fler kanaler, möjligen med en kanalnyckel för varje om det behövs."
-
-msgid ""
-"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
-"channels, optionally providing a channel key for each if needed."
-msgstr ""
-"join &lt;rum1&gt;[,rum2][,...] [nyckel1[,nyckel2][,...]]:  Anslut till en "
-"eller fler kanaler, möjligen med en kanalnyckel för varje om det behövs."
-
-msgid ""
-"kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a "
-"channel operator to do this."
-msgstr ""
-"kick &lt;smeknamn&gt; [meddelande]:  Tar bort någon från en kanal. Du måste "
-"vara kanaloperatör för att kunna göra detta."
-
-msgid ""
-"list:  Display a list of chat rooms on the network. <i>Warning, some servers "
-"may disconnect you upon doing this.</i>"
-msgstr ""
-"list:  Visar en lista över alla chattrum på ett nätverk. <i>Varning: Några "
-"servrar kan koppla ifrån dig när du gör detta.</i>"
+msgid "deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from someone. You must be a channel operator to do this."
+msgstr "deop &lt;smeknamn1&gt; [smeknamn2] ...:  Ta bort kanaloperatörsstatus från någon. Du måste vara en operatör själv för att kunna göra detta."
+
+msgid "devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from someone, preventing them from speaking if the channel is moderated (+m). You must be a channel operator to do this."
+msgstr "devoice &lt;smeknamn1&gt; [smeknamn2] ...:  Tar bort kanalröststatus från någon för att förhindra den från att tala då kanalen är modererad (+m). Du måste vara en operatör själv för att kunna göra detta."
+
+msgid "invite &lt;nick&gt; [room]:  Invite someone to join you in the specified channel, or the current channel."
+msgstr "invite &lt;smeknamn&gt; [rum]:  Bjud in någon till en specificerad kanal eller till den nuvarande."
+
+msgid "j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more channels, optionally providing a channel key for each if needed."
+msgstr "j &lt;rum1&gt;[,rum2][,...] [nyckel1[,nyckel2][,...]]:  Anslut till en eller fler kanaler, möjligen med en kanalnyckel för varje om det behövs."
+
+msgid "join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more channels, optionally providing a channel key for each if needed."
+msgstr "join &lt;rum1&gt;[,rum2][,...] [nyckel1[,nyckel2][,...]]:  Anslut till en eller fler kanaler, möjligen med en kanalnyckel för varje om det behövs."
+
+msgid "kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a channel operator to do this."
+msgstr "kick &lt;smeknamn&gt; [meddelande]:  Tar bort någon från en kanal. Du måste vara kanaloperatör för att kunna göra detta."
+
+msgid "list:  Display a list of chat rooms on the network. <i>Warning, some servers may disconnect you upon doing this.</i>"
+msgstr "list:  Visar en lista över alla chattrum på ett nätverk. <i>Varning: Några servrar kan koppla ifrån dig när du gör detta.</i>"
 
 msgid "me &lt;action to perform&gt;:  Perform an action."
 msgstr "me &lt;åtgärd som ska utföras&gt;:  Utför en åtgärd."
@@ -3646,19 +3408,11 @@
 msgid "memoserv: Send a command to memoserv"
 msgstr "memoserv: Skicka ett kommando till memoserv"
 
-msgid ""
-"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel "
-"or user mode."
-msgstr ""
-"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;smeknamn|kanal&gt;:  Sätt eller ta bort "
-"kanal- eller användarläge."
-
-msgid ""
-"msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
-"opposed to a channel)."
-msgstr ""
-"msg &lt;smeknamn&gt; &lt;meddelande&gt;:  Skicka ett privat meddelande till "
-"en användare (i motsats till en kanal)."
+msgid "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel or user mode."
+msgstr "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;smeknamn|kanal&gt;:  Sätt eller ta bort kanal- eller användarläge."
+
+msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as opposed to a channel)."
+msgstr "msg &lt;smeknamn&gt; &lt;meddelande&gt;:  Skicka ett privat meddelande till en användare (i motsats till en kanal)."
 
 msgid "names [channel]:  List the users currently in a channel."
 msgstr "names [kanal]:  Lista användarna som är i kanalen just nu."
@@ -3670,60 +3424,34 @@
 msgstr "nickserv: Skicka ett kommando till nickserv"
 
 msgid "notice &lt;target&lt;:  Send a notice to a user or channel."
-msgstr ""
-"notice &lt;mål&gt;:  Skickar en notifiering till en användare eller en kanal."
-
-msgid ""
-"op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You "
-"must be a channel operator to do this."
-msgstr ""
-"op &lt;smeknamn1&gt; [smeknamn2] ...:  Ge kanaloperatörsstatus till någon. "
-"Du måste vara kanaloperatör för att kunna göra detta."
-
-msgid ""
-"operwall &lt;message&gt;:  If you don't know what this is, you probably "
-"can't use it."
-msgstr ""
-"operwall &lt;meddelande&gt;:  Om du inte vet vad detta gör kan du antagligen "
-"inte göra det."
+msgstr "notice &lt;mål&gt;:  Skickar en notifiering till en användare eller en kanal."
+
+msgid "op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You must be a channel operator to do this."
+msgstr "op &lt;smeknamn1&gt; [smeknamn2] ...:  Ge kanaloperatörsstatus till någon. Du måste vara kanaloperatör för att kunna göra detta."
+
+msgid "operwall &lt;message&gt;:  If you don't know what this is, you probably can't use it."
+msgstr "operwall &lt;meddelande&gt;:  Om du inte vet vad detta gör kan du antagligen inte göra det."
 
 msgid "operserv: Send a command to operserv"
 msgstr "operserv: Skicka ett kommando till operserv"
 
-msgid ""
-"part [room] [message]:  Leave the current channel, or a specified channel, "
-"with an optional message."
-msgstr ""
-"part [rum] [meddelande]:  Lämna det nuvarande rummet med ett möjligt "
-"meddelande."
-
-msgid ""
-"ping [nick]:  Asks how much lag a user (or the server if no user specified) "
-"has."
-msgstr ""
-"ping [smeknamn]:  Frågar hur mycket lagg en användaren (eller servern om  "
-"ingen användare är specificerad) har."
-
-msgid ""
-"query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
-"opposed to a channel)."
-msgstr ""
-"query &lt;smeknamn&gt; &lt;meddelande&gt;:  Skicka ett privat meddelande "
-"till en användare."
+msgid "part [room] [message]:  Leave the current channel, or a specified channel, with an optional message."
+msgstr "part [rum] [meddelande]:  Lämna det nuvarande rummet med ett möjligt meddelande."
+
+msgid "ping [nick]:  Asks how much lag a user (or the server if no user specified) has."
+msgstr "ping [smeknamn]:  Frågar hur mycket lagg en användaren (eller servern om  ingen användare är specificerad) har."
+
+msgid "query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as opposed to a channel)."
+msgstr "query &lt;smeknamn&gt; &lt;meddelande&gt;:  Skicka ett privat meddelande till en användare."
 
 msgid "quit [message]:  Disconnect from the server, with an optional message."
-msgstr ""
-"quit [meddelande]:  Koppla ifrån servern med ett frivilligt meddelande."
+msgstr "quit [meddelande]:  Koppla ifrån servern med ett frivilligt meddelande."
 
 msgid "quote [...]:  Send a raw command to the server."
 msgstr "quote [...]:  Skicka ett rått kommando till servern."
 
-msgid ""
-"remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a "
-"channel operator to do this."
-msgstr ""
-"remove &lt;smeknamn&gt; [meddelande]:  Ta bort någon från ett rum. Du måste "
-"vara kanaloperatör för att göra detta."
+msgid "remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a channel operator to do this."
+msgstr "remove &lt;smeknamn&gt; [meddelande]:  Ta bort någon från ett rum. Du måste vara kanaloperatör för att göra detta."
 
 msgid "time: Displays the current local time at the IRC server."
 msgstr "time: Visar IRC-serverns lokala tid."
@@ -3735,31 +3463,19 @@
 msgstr "umode &lt;+|-&gt;&lt;A-Za-z&gt;:  Ange eller ta bort ett användarläge."
 
 msgid "version [nick]: send CTCP VERSION request to a user"
-msgstr ""
-"version [smeknamn]: skickar en CTCP VERSION förfrågan till en användare"
-
-msgid ""
-"voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You "
-"must be a channel operator to do this."
-msgstr ""
-"voice &lt;smeknamn1&gt; [smeknamn2] ...:  Ge kanalröststatus till någon. Du "
-"måste vara kanaloperatör för att göra detta."
-
-msgid ""
-"wallops &lt;message&gt;:  If you don't know what this is, you probably can't "
-"use it."
-msgstr ""
-"wallops &lt;meddelande&gt;:  Om du inte vet vad detta är kan du antagligen "
-"inte använda det."
+msgstr "version [smeknamn]: skickar en CTCP VERSION förfrågan till en användare"
+
+msgid "voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You must be a channel operator to do this."
+msgstr "voice &lt;smeknamn1&gt; [smeknamn2] ...:  Ge kanalröststatus till någon. Du måste vara kanaloperatör för att göra detta."
+
+msgid "wallops &lt;message&gt;:  If you don't know what this is, you probably can't use it."
+msgstr "wallops &lt;meddelande&gt;:  Om du inte vet vad detta är kan du antagligen inte använda det."
 
 msgid "whois [server] &lt;nick&gt;:  Get information on a user."
-msgstr ""
-"whois [server] &lt;smeknamn&gt;:  Hämta informationen för en användare."
+msgstr "whois [server] &lt;smeknamn&gt;:  Hämta informationen för en användare."
 
 msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
-msgstr ""
-"whowas &lt;smeknamn&gt;: Hämta informationen för en användare som har "
-"kopplat ifrån."
+msgstr "whowas &lt;smeknamn&gt;: Hämta informationen för en användare som har kopplat ifrån."
 
 #, c-format
 msgid "Reply time from %s: %lu seconds"
@@ -3796,12 +3512,8 @@
 msgstr "Servern använder inga autentiseringsmetoder som stöds"
 
 #, c-format
-msgid ""
-"%s requires plaintext authentication over an unencrypted connection.  Allow "
-"this and continue authentication?"
-msgstr ""
-"%s kräver klartextautentisering över en okrypterad anslutning. Tillåt detta "
-"och fortsätt?"
+msgid "%s requires plaintext authentication over an unencrypted connection.  Allow this and continue authentication?"
+msgstr "%s kräver klartextautentisering över en okrypterad anslutning. Tillåt detta och fortsätt?"
 
 msgid "Plaintext Authentication"
 msgstr "Klartextautentisering"
@@ -3826,34 +3538,26 @@
 msgid "Invalid Encoding"
 msgstr "Ogiltigt inmatningsvillkor"
 
-#, fuzzy
 msgid "Unsupported Extension"
-msgstr "Ej stöd version"
-
-msgid ""
-"Unexpected response from the server.  This may indicate a possible MITM "
-"attack"
-msgstr ""
-
-msgid ""
-"The server does support channel binding, but did not appear to advertise "
-"it.  This indicates a likely MITM attack"
-msgstr ""
-
-#, fuzzy
+msgstr "Ej stödd utökning"
+
+msgid "Unexpected response from the server.  This may indicate a possible MITM attack"
+msgstr "Oväntat svar från server. Detta kan indikera en MITM attack"
+
+msgid "The server does support channel binding, but did not appear to advertise it.  This indicates a likely MITM attack"
+msgstr "Servern stödjer kanalbindningar, men verkar inte annonsera det.  Detta indikerar en trolig MITM attack"
+
 msgid "Server does not support channel binding"
-msgstr "Servern stödjer inte blockering"
-
-#, fuzzy
+msgstr "Servern stödjer inte kanalbindning"
+
 msgid "Unsupported channel binding method"
-msgstr "Stödjer ej kodningen"
+msgstr "Ej stödd kanalbindningsmetod"
 
 msgid "User not found"
 msgstr "Användaren hittades inte"
 
-#, fuzzy
 msgid "Invalid Username Encoding"
-msgstr "Ogiltigt användarnamn"
+msgstr "Ogiltigt format på användarnamn"
 
 msgid "Resource Constraint"
 msgstr "Resursbegränsning"
@@ -3956,12 +3660,8 @@
 msgid "Edit XMPP vCard"
 msgstr "Redigera XMPP visitkort"
 
-msgid ""
-"All items below are optional. Enter only the information with which you feel "
-"comfortable."
-msgstr ""
-"Alla poster nedan är frivilliga. Ange endast den information som du vill "
-"lämna ut."
+msgid "All items below are optional. Enter only the information with which you feel comfortable."
+msgstr "Alla poster nedan är frivilliga. Ange endast den information som du vill lämna ut."
 
 msgid "Client"
 msgstr "Klient"
@@ -4009,11 +3709,8 @@
 msgstr "Logotyp"
 
 #, c-format
-msgid ""
-"%s will no longer be able to see your status updates.  Do you want to "
-"continue?"
-msgstr ""
-"%s kommer inte längre kunna se dina statusuppdateringar. Vill du fortsätta?"
+msgid "%s will no longer be able to see your status updates.  Do you want to continue?"
+msgstr "%s kommer inte längre kunna se dina statusuppdateringar. Vill du fortsätta?"
 
 msgid "Cancel Presence Notification"
 msgstr "Avbryt närvarorapportering"
@@ -4052,12 +3749,8 @@
 msgstr "Din sökning gav följande resultat"
 
 #. current comment from Jabber User Directory users.jabber.org
-msgid ""
-"Find a contact by entering the search criteria in the given fields. Note: "
-"Each field supports wild card searches (%)"
-msgstr ""
-"Hitta en kontakt genom att ange sökkriteriet i de givna fälten. Notera: Alla "
-"fälten stödjer wild card-sökningar (%)"
+msgid "Find a contact by entering the search criteria in the given fields. Note: Each field supports wild card searches (%)"
+msgstr "Hitta en kontakt genom att ange sökkriteriet i de givna fälten. Notera: Alla fälten stödjer wild card-sökningar (%)"
 
 msgid "Directory Query Failed"
 msgstr "Katalogförfrågning misslyckades"
@@ -4072,8 +3765,7 @@
 msgstr "Serverinstruktioner: %s"
 
 msgid "Fill in one or more fields to search for any matching XMPP users."
-msgstr ""
-"Fyll i ett eller flera fält för att söka efter matchande XMPPanvändare."
+msgstr "Fyll i ett eller flera fält för att söka efter matchande XMPPanvändare."
 
 msgid "Email Address"
 msgstr "E-postadress"
@@ -4181,9 +3873,8 @@
 msgid "Invalid XMPP ID"
 msgstr "Ogiltigt XMPP ID"
 
-#, fuzzy
 msgid "Invalid XMPP ID. Username portion must be set."
-msgstr "Ogiltigt XMPP IP. Domän måste anges."
+msgstr "Ogiltigt XMPP ID. Användarnamnsdelen måste anges."
 
 msgid "Invalid XMPP ID. Domain must be set."
 msgstr "Ogiltigt XMPP IP. Domän måste anges."
@@ -4233,8 +3924,7 @@
 msgid "Unregister"
 msgstr "Avregistrera"
 
-msgid ""
-"Please fill out the information below to change your account registration."
+msgid "Please fill out the information below to change your account registration."
 msgstr "Fyll i informationen nedan för att ändra din kontoregistrering."
 
 msgid "Please fill out the information below to register your new account."
@@ -4315,13 +4005,11 @@
 msgid "Allow Buzz"
 msgstr "Tillåt Surr"
 
-#, fuzzy
 msgid "Mood Name"
-msgstr "Andranamn"
-
-#, fuzzy
+msgstr "Humörsnamn"
+
 msgid "Mood Comment"
-msgstr "Kompiskommentar"
+msgstr "Humörskommentar"
 
 #. primitive
 #. ID
@@ -4563,12 +4251,8 @@
 msgstr "Kunde inte surra eftersom %s kanske är frånkopplad."
 
 #, c-format
-msgid ""
-"Unable to buzz, because %s does not support it or does not wish to receive "
-"buzzes now."
-msgstr ""
-"Kan inte surra eftersom %s stödjer inte det eller önskar ta emot surr just "
-"nu."
+msgid "Unable to buzz, because %s does not support it or does not wish to receive buzzes now."
+msgstr "Kan inte surra eftersom %s stödjer inte det eller önskar ta emot surr just nu."
 
 #. Yahoo only supports one attention command: the 'buzz'.
 #. This is index number YAHOO_BUZZ.
@@ -4593,19 +4277,14 @@
 
 #, c-format
 msgid "Unable to initiate media with %s: not subscribed to user presence"
-msgstr ""
-"Kan inte påbörja media med %s: prenumererar inte på användartillgänglighet"
+msgstr "Kan inte påbörja media med %s: prenumererar inte på användartillgänglighet"
 
 msgid "Media Initiation Failed"
 msgstr "Initiering av media misslyckades"
 
 #, c-format
-msgid ""
-"Please select the resource of %s with which you would like to start a media "
-"session."
-msgstr ""
-"Var god välj vilken tillflykt för %s med vilken du vill påbörja en "
-"mediasession."
+msgid "Please select the resource of %s with which you would like to start a media session."
+msgstr "Var god välj vilken tillflykt för %s med vilken du vill påbörja en mediasession."
 
 msgid "Select a Resource"
 msgstr "Välj en tillflykt"
@@ -4613,9 +4292,8 @@
 msgid "Initiate Media"
 msgstr "Påbörja Media"
 
-#, fuzzy
 msgid "Account does not support PEP, can't set mood"
-msgstr "Protokollet stödjer inte chattrum."
+msgstr "Kontot stödjer inte PEP, kan inte ange ett humör"
 
 msgid "config:  Configure a chat room."
 msgstr "config: Konfigurera ett chattrum."
@@ -4635,37 +4313,23 @@
 msgid "ban &lt;user&gt; [reason]:  Ban a user from the room."
 msgstr "ban &lt;användare&gt; [anledning]:  Bannlys en användare från rummet."
 
-msgid ""
-"affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
-"the users with an affiliation or set users' affiliation with the room."
-msgstr ""
-"affiliate &lt;ägare|admin|medlem|utstött|ingen&gt;: [nick1] [nick2] ...: "
-"Hämta eller ange användarnas anknytning till rummet."
-
-msgid ""
-"role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
-"users with a role or set users' role with the room."
-msgstr ""
-"role &lt;moderator|participant|visitor|none&gt;: [nick1] [nick2] ...: Hämta "
-"eller ange användarnas roll i rummet."
+msgid "affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get the users with an affiliation or set users' affiliation with the room."
+msgstr "affiliate &lt;ägare|admin|medlem|utstött|ingen&gt;: [nick1] [nick2] ...: Hämta eller ange användarnas anknytning till rummet."
+
+msgid "role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the users with a role or set users' role with the room."
+msgstr "role &lt;moderator|participant|visitor|none&gt;: [nick1] [nick2] ...: Hämta eller ange användarnas roll i rummet."
 
 msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
-msgstr ""
-"invite &lt;användare&gt; [meddelande]:  Bjud in användaren till rummet."
+msgstr "invite &lt;användare&gt; [meddelande]:  Bjud in användaren till rummet."
 
 msgid "join: &lt;room&gt; [password]:  Join a chat on this server."
-msgstr ""
-"join: &lt;rum&gt; [&lt;lösenord&gt;]:  Anslut till en chatt på denna server."
+msgstr "join: &lt;rum&gt; [&lt;lösenord&gt;]:  Anslut till en chatt på denna server."
 
 msgid "kick &lt;user&gt; [reason]:  Kick a user from the room."
-msgstr ""
-"kick &lt;användare&gt; [anledning]:  Sparka ut en användare från rummet."
-
-msgid ""
-"msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
-msgstr ""
-"msg &lt;användare&gt; &lt;meddelande&gt;:  Skicka ett privat meddelande till "
-"en annan användare."
+msgstr "kick &lt;användare&gt; [anledning]:  Sparka ut en användare från rummet."
+
+msgid "msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
+msgstr "msg &lt;användare&gt; &lt;meddelande&gt;:  Skicka ett privat meddelande till en annan användare."
 
 msgid "ping &lt;jid&gt;:\tPing a user/component/server."
 msgstr "ping &lt;jid&gt;:\tPinga en användare/komponent/server."
@@ -4673,9 +4337,8 @@
 msgid "buzz: Buzz a user to get their attention"
 msgstr "buzz: Stör en användare för att få dennes uppmärksamhet"
 
-#, fuzzy
 msgid "mood: Set current user mood"
-msgstr "Välj rätt användare"
+msgstr "mood: anger användarens nuvarande humör"
 
 msgid "Extended Away"
 msgstr "Utökad frånvaro"
@@ -4753,18 +4416,17 @@
 msgid "(Code %s)"
 msgstr "(Kod %s)"
 
-#, fuzzy
 msgid "A custom smiley in the message is too large to send."
-msgstr "Kan inte skicka meddelandet: Det är för stort."
+msgstr "En egenvald smilie i meddelandet var för stor för att skickas."
 
 msgid "XMPP stream header missing"
-msgstr ""
+msgstr "XMPP-strömhuvud saknas"
 
 msgid "XMPP Version Mismatch"
-msgstr ""
+msgstr "XMPP-versioner matchar inte"
 
 msgid "XMPP stream missing ID"
-msgstr ""
+msgstr "XMPP-strömmen saknar ID"
 
 msgid "XML Parse error"
 msgstr "XML-tolkningsfel"
@@ -4780,12 +4442,8 @@
 msgid "Create New Room"
 msgstr "Skapa nytt rum"
 
-msgid ""
-"You are creating a new room.  Would you like to configure it, or accept the "
-"default settings?"
-msgstr ""
-"Du skapar ett nytt rum. Vill du konfigurera det eller nöjer du dig med "
-"förvalda inställningar?"
+msgid "You are creating a new room.  Would you like to configure it, or accept the default settings?"
+msgstr "Du skapar ett nytt rum. Vill du konfigurera det eller nöjer du dig med förvalda inställningar?"
 
 msgid "_Configure Room"
 msgstr "_Konfigurera rum"
@@ -4833,16 +4491,14 @@
 
 #, c-format
 msgid "Unable to send file to %s, not subscribed to user presence"
-msgstr ""
-"Kan inte skicka filen till %s, prenumererar inte på användartillgänglighet"
+msgstr "Kan inte skicka filen till %s, prenumererar inte på användartillgänglighet"
 
 #, c-format
 msgid "Please select the resource of %s to which you would like to send a file"
 msgstr "Var god välj vilken tillflykt för %s du vill sända filen till"
 
-#, fuzzy
 msgid "Afraid"
-msgstr "Arabiska"
+msgstr "Rädd"
 
 #, fuzzy
 msgid "Amazed"
@@ -4855,9 +4511,8 @@
 msgid "Angry"
 msgstr "Arg"
 
-#, fuzzy
 msgid "Annoyed"
-msgstr "Bannlyst"
+msgstr "Irriterad"
 
 msgid "Anxious"
 msgstr "Orolig"
@@ -4872,29 +4527,23 @@
 msgid "Bored"
 msgstr "Uttråkad"
 
-#, fuzzy
 msgid "Brave"
-msgstr "Spara"
-
-#, fuzzy
+msgstr "Modig"
+
 msgid "Calm"
-msgstr "Kungarike"
-
-#, fuzzy
+msgstr "Lugn"
+
 msgid "Cautious"
-msgstr "Chattar"
-
-#, fuzzy
+msgstr "Försiktig"
+
 msgid "Cold"
-msgstr "Fet"
-
-#, fuzzy
+msgstr "Kall"
+
 msgid "Confident"
-msgstr "Konflikt"
-
-#, fuzzy
+msgstr "Självsäker"
+
 msgid "Confused"
-msgstr "Fortsätt"
+msgstr "Förvirrad"
 
 #, fuzzy
 msgid "Contemplative"
@@ -4904,50 +4553,43 @@
 msgid "Contented"
 msgstr "Ansluten"
 
-#, fuzzy
 msgid "Cranky"
-msgstr "Företag"
+msgstr "Grinig"
 
 msgid "Crazy"
-msgstr ""
-
-#, fuzzy
+msgstr "Galen"
+
 msgid "Creative"
-msgstr "Skapa"
-
-#, fuzzy
+msgstr "Kreativ"
+
 msgid "Curious"
-msgstr "Strålande"
+msgstr "Nyfiken"
 
 #, fuzzy
 msgid "Dejected"
 msgstr "Avslagen"
 
-#, fuzzy
 msgid "Depressed"
-msgstr "Borttagen"
-
-#, fuzzy
+msgstr "Deprimerad"
+
 msgid "Disappointed"
-msgstr "Frånkopplad."
+msgstr "Besviken"
 
 msgid "Disgusted"
-msgstr ""
+msgstr "Äcklad"
 
 #, fuzzy
 msgid "Dismayed"
 msgstr "Avaktiverad"
 
-#, fuzzy
 msgid "Distracted"
-msgstr "Frånskild"
+msgstr "Distraherad"
 
 msgid "Embarrassed"
 msgstr ""
 
-#, fuzzy
 msgid "Envious"
-msgstr "Orolig"
+msgstr "Avundsjuk"
 
 msgid "Excited"
 msgstr "Upphetsad"
@@ -4956,29 +4598,26 @@
 msgid "Flirtatious"
 msgstr "Strålande"
 
-#, fuzzy
 msgid "Frustrated"
-msgstr "Förnamn"
+msgstr "Frustrerad"
 
 msgid "Grateful"
-msgstr ""
-
-#, fuzzy
+msgstr "Tacksam"
+
 msgid "Grieving"
-msgstr "Hämtar..."
+msgstr "Sörjer"
 
 msgid "Grumpy"
 msgstr "Tjurig"
 
-#, fuzzy
 msgid "Guilty"
-msgstr "Stad"
+msgstr "Skyldig"
 
 msgid "Happy"
 msgstr "Glad"
 
 msgid "Hopeful"
-msgstr ""
+msgstr "Hoppfull"
 
 msgid "Hot"
 msgstr "Het"
@@ -4987,18 +4626,16 @@
 msgstr ""
 
 msgid "Humiliated"
-msgstr ""
-
-#, fuzzy
+msgstr "Förnedrad"
+
 msgid "Hungry"
-msgstr "Arg"
-
-#, fuzzy
+msgstr "Hungrig"
+
 msgid "Hurt"
-msgstr "Humor"
+msgstr "Sårad"
 
 msgid "Impressed"
-msgstr ""
+msgstr "Imponerad"
 
 #, fuzzy
 msgid "In awe"
@@ -5011,13 +4648,11 @@
 msgid "Indignant"
 msgstr "Indonesiska"
 
-#, fuzzy
 msgid "Interested"
-msgstr "Intressen"
-
-#, fuzzy
+msgstr "Intresserad"
+
 msgid "Intoxicated"
-msgstr "Inbjuden"
+msgstr "Full"
 
 msgid "Invincible"
 msgstr "Osårbar"
@@ -5025,82 +4660,69 @@
 msgid "Jealous"
 msgstr "Avundsjuk"
 
-#, fuzzy
 msgid "Lonely"
-msgstr "Apa"
-
-#, fuzzy
+msgstr "Ensam"
+
 msgid "Lost"
-msgstr "Högst"
+msgstr "Förlorad"
 
 msgid "Lucky"
-msgstr ""
-
-#, fuzzy
+msgstr "Tursam"
+
 msgid "Mean"
-msgstr "Tyska"
+msgstr "Elak"
 
 #, fuzzy
 msgid "Moody"
 msgstr "Humör"
 
 msgid "Nervous"
-msgstr ""
-
-#, fuzzy
+msgstr "Nevös"
+
 msgid "Neutral"
-msgstr "Detaljer"
-
-#, fuzzy
+msgstr "Neutral"
+
 msgid "Offended"
-msgstr "Frånkopplad"
+msgstr "Stött"
 
 msgid "Outraged"
 msgstr ""
 
-#, fuzzy
 msgid "Playful"
-msgstr "Spela upp"
-
-#, fuzzy
+msgstr "Lekfull"
+
 msgid "Proud"
-msgstr "Högt"
-
-#, fuzzy
+msgstr "Stolt"
+
 msgid "Relaxed"
-msgstr "Fullständigt namn"
-
-#, fuzzy
+msgstr "Avslappnad"
+
 msgid "Relieved"
-msgstr "Mottaget"
-
-#, fuzzy
+msgstr "Lättad"
+
 msgid "Remorseful"
-msgstr "Ta bort"
-
-#, fuzzy
+msgstr "Ångerfull"
+
 msgid "Restless"
-msgstr "Registrera"
+msgstr "Rastlös"
 
 msgid "Sad"
 msgstr "Ledsen"
 
 msgid "Sarcastic"
-msgstr ""
+msgstr "Sarkastisk"
 
 msgid "Satisfied"
-msgstr ""
-
-#, fuzzy
+msgstr "Tillfreds"
+
 msgid "Serious"
-msgstr "Strålande"
-
-#, fuzzy
+msgstr "Seriös"
+
 msgid "Shocked"
-msgstr "Blockerad"
+msgstr "Shockad"
 
 msgid "Shy"
-msgstr ""
+msgstr "Blyg"
 
 msgid "Sick"
 msgstr "Sjuk"
@@ -5110,40 +4732,34 @@
 msgstr "Sömnig"
 
 msgid "Spontaneous"
-msgstr ""
-
-#, fuzzy
+msgstr "Spontan"
+
 msgid "Stressed"
-msgstr "Hastighet:"
-
-#, fuzzy
+msgstr "Stressad"
+
 msgid "Strong"
-msgstr "Sång"
+msgstr "Stark"
 
 msgid "Surprised"
-msgstr ""
+msgstr "Överraskad"
 
 msgid "Thankful"
-msgstr ""
+msgstr "Tacksam"
 
 msgid "Thirsty"
-msgstr ""
-
-#, fuzzy
+msgstr "Törstig"
+
 msgid "Tired"
-msgstr "Fire"
-
-#, fuzzy
+msgstr "Trött"
+
 msgid "Undefined"
-msgstr "Understruken"
-
-#, fuzzy
+msgstr "Odefenierad"
+
 msgid "Weak"
-msgstr "Banka på"
-
-#, fuzzy
+msgstr "Svag"
+
 msgid "Worried"
-msgstr "Uttråkad"
+msgstr "Oroad"
 
 msgid "Set User Nickname"
 msgstr "Sätt användarsmeknamn"
@@ -5151,12 +4767,8 @@
 msgid "Please specify a new nickname for you."
 msgstr "Ange det nya smeknamnet för dig."
 
-msgid ""
-"This information is visible to all contacts on your contact list, so choose "
-"something appropriate."
-msgstr ""
-"Denna information är synbar för alla på din kontaktlista, så välj något "
-"passande."
+msgid "This information is visible to all contacts on your contact list, so choose something appropriate."
+msgstr "Denna information är synbar för alla på din kontaktlista, så välj något passande."
 
 msgid "Set"
 msgstr "Ange"
@@ -5188,20 +4800,12 @@
 msgstr "Problem med synkroniseringen av kompislistan i %s (%s)"
 
 #, c-format
-msgid ""
-"%s on the local list is inside the group \"%s\" but not on the server list. "
-"Do you want this buddy to be added?"
-msgstr ""
-"%s på den lokala listan finns i gruppen \"%s\" men inte på serverns lista. "
-"Ska kompisen läggas till?"
-
-#, c-format
-msgid ""
-"%s is on the local list but not on the server list. Do you want this buddy "
-"to be added?"
-msgstr ""
-"%s finns på den lokala listan men inte på serverns lista. Ska kompisen "
-"läggas till?"
+msgid "%s on the local list is inside the group \"%s\" but not on the server list. Do you want this buddy to be added?"
+msgstr "%s på den lokala listan finns i gruppen \"%s\" men inte på serverns lista. Ska kompisen läggas till?"
+
+#, c-format
+msgid "%s is on the local list but not on the server list. Do you want this buddy to be added?"
+msgstr "%s finns på den lokala listan men inte på serverns lista. Ska kompisen läggas till?"
 
 msgid "Unable to parse message"
 msgstr "Kan inte avkoda meddelandet"
@@ -5384,9 +4988,7 @@
 
 #, c-format
 msgid "%s sent a wink. <a href='msn-wink://%s'>Click here to play it</a>"
-msgstr ""
-"%s skickade en vink. <a href='msn-wink://%s'>Klicka här för att spela upp "
-"den</a>"
+msgstr "%s skickade en vink. <a href='msn-wink://%s'>Klicka här för att spela upp den</a>"
 
 #, c-format
 msgid "%s sent a wink, but it could not be saved"
@@ -5394,9 +4996,7 @@
 
 #, c-format
 msgid "%s sent a voice clip. <a href='audio://%s'>Click here to play it</a>"
-msgstr ""
-"%s skickade ett röstmeddelande. <a href='audio://%s'>Klicka här för att "
-"spela upp det</a>"
+msgstr "%s skickade ett röstmeddelande. <a href='audio://%s'>Klicka här för att spela upp det</a>"
 
 #, c-format
 msgid "%s sent a voice clip, but it could not be saved"
@@ -5445,12 +5045,8 @@
 msgid "Allow MSN Mobile pages?"
 msgstr "Tillåt MSN-mobilsökning?"
 
-msgid ""
-"Do you want to allow or disallow people on your buddy list to send you MSN "
-"Mobile pages to your cell phone or other mobile device?"
-msgstr ""
-"Vill du tillåta kompisar i din kompislista att skicka MSN-mobilsökningar "
-"till din mobiltelefon eller annan mobil enhet?"
+msgid "Do you want to allow or disallow people on your buddy list to send you MSN Mobile pages to your cell phone or other mobile device?"
+msgstr "Vill du tillåta kompisar i din kompislista att skicka MSN-mobilsökningar till din mobiltelefon eller annan mobil enhet?"
 
 msgid "Allow"
 msgstr "Tillåt"
@@ -5466,10 +5062,8 @@
 msgstr "Ingen text är blockerad för detta kontot."
 
 #, c-format
-msgid ""
-"MSN servers are currently blocking the following regular expressions:<br/>%s"
-msgstr ""
-"MSN-servrarna blockerar för tillfället följande reguljära uttryck:<br/>%s"
+msgid "MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr "MSN-servrarna blockerar för tillfället följande reguljära uttryck:<br/>%s"
 
 msgid "This account does not have email enabled."
 msgstr "Detta kontot har inte mejl aktiverat."
@@ -5544,16 +5138,11 @@
 msgstr "Skicka till mobil"
 
 msgid "SSL support is needed for MSN. Please install a supported SSL library."
-msgstr ""
-"SSL-stöd krävs för att använda MSN. Installera ett SSL-bibliotek som stöds."
-
-#, c-format
-msgid ""
-"Unable to add the buddy %s because the username is invalid.  Usernames must "
-"be valid email addresses."
-msgstr ""
-"Kunde inte lägga till kompisen %s eftersom användarnamnet är ogiltigt. "
-"Användarnamnet måste vara en giltig epost-adress."
+msgstr "SSL-stöd krävs för att använda MSN. Installera ett SSL-bibliotek som stöds."
+
+#, c-format
+msgid "Unable to add the buddy %s because the username is invalid.  Usernames must be valid email addresses."
+msgstr "Kunde inte lägga till kompisen %s eftersom användarnamnet är ogiltigt. Användarnamnet måste vara en giltig epost-adress."
 
 msgid "Unable to Add"
 msgstr "Kunde inte lägga till"
@@ -5707,20 +5296,11 @@
 msgid "The user has not created a public profile."
 msgstr "Användaren har inte skapat en publik profil."
 
-msgid ""
-"MSN reported not being able to find the user's profile. This either means "
-"that the user does not exist, or that the user exists but has not created a "
-"public profile."
-msgstr ""
-"MSN rapporterar att det inte kan hitta användarens profil. Detta innebär att "
-"användaren inte finns eller att användaren inte skapat en publik profil."
-
-msgid ""
-"Could not find any information in the user's profile. The user most likely "
-"does not exist."
-msgstr ""
-"Kunde inte hitta någon information i användarens profil. Användaren "
-"existerar troligen inte."
+msgid "MSN reported not being able to find the user's profile. This either means that the user does not exist, or that the user exists but has not created a public profile."
+msgstr "MSN rapporterar att det inte kan hitta användarens profil. Detta innebär att användaren inte finns eller att användaren inte skapat en publik profil."
+
+msgid "Could not find any information in the user's profile. The user most likely does not exist."
+msgstr "Kunde inte hitta någon information i användarens profil. Användaren existerar troligen inte."
 
 msgid "View web profile"
 msgstr "Visa webbprofil"
@@ -5746,9 +5326,8 @@
 msgid "Show custom smileys"
 msgstr "Visa egna smileys"
 
-#, fuzzy
 msgid "Allow direct connections"
-msgstr "Kan inte skapa anslutning"
+msgstr "Tillåt direktanslutningar"
 
 msgid "nudge: nudge a user to get their attention"
 msgstr "nudge: Knuffa till en kontakt för att få dennes uppmärksamhet"
@@ -5782,50 +5361,33 @@
 
 #, c-format
 msgid ""
-"The MSN server will shut down for maintenance in %d minute. You will "
-"automatically be signed out at that time.  Please finish any conversations "
-"in progress.\n"
-"\n"
-"After the maintenance has been completed, you will be able to successfully "
-"sign in."
+"The MSN server will shut down for maintenance in %d minute. You will automatically be signed out at that time.  Please finish any conversations in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully sign in."
 msgid_plural ""
-"The MSN server will shut down for maintenance in %d minutes. You will "
-"automatically be signed out at that time.  Please finish any conversations "
-"in progress.\n"
-"\n"
-"After the maintenance has been completed, you will be able to successfully "
-"sign in."
+"The MSN server will shut down for maintenance in %d minutes. You will automatically be signed out at that time.  Please finish any conversations in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully sign in."
 msgstr[0] ""
-"MSN-servern kommer att stängas av för underhåll om %d minut, då kommer du "
-"automatiskt att loggas ut. Passa på att avsluta dina konversationer innan "
-"tiden löper ut.\n"
+"MSN-servern kommer att stängas av för underhåll om %d minut, då kommer du automatiskt att loggas ut. Passa på att avsluta dina konversationer innan tiden löper ut.\n"
 "\n"
 "Efter underhållet är slutfört kommer du kunna ansluta till MSN som vanligt."
 msgstr[1] ""
-"MSN-servern kommer att stängas av för underhåll om %d minuter, då kommer du "
-"automatiskt att loggas ut. Passa på att avsluta dina konversationer innan "
-"tiden löper ut.\n"
+"MSN-servern kommer att stängas av för underhåll om %d minuter, då kommer du automatiskt att loggas ut. Passa på att avsluta dina konversationer innan tiden löper ut.\n"
 "\n"
 "Efter underhållet är slutfört kommer du kunna ansluta till MSN som vanligt."
 
-msgid ""
-"Message was not sent because the system is unavailable. This normally "
-"happens when the user is blocked or does not exist."
-msgstr ""
-"Meddelandet skickades inte eftersom systemet ej var tillgängligt. Detta "
-"händer normalt när en användare är blockerad eller inte existerar."
+msgid "Message was not sent because the system is unavailable. This normally happens when the user is blocked or does not exist."
+msgstr "Meddelandet skickades inte eftersom systemet ej var tillgängligt. Detta händer normalt när en användare är blockerad eller inte existerar."
 
 msgid "Message was not sent because messages are being sent too quickly."
-msgstr ""
-"Meddelandet kunde inte skickas eftersom meddelandena skickades för snabbt."
+msgstr "Meddelandet kunde inte skickas eftersom meddelandena skickades för snabbt."
 
 msgid "Message was not sent because an unknown encoding error occurred."
-msgstr ""
-"Meddelandet skickades inte på grund av att ett okänt kodningsfel uppstod."
+msgstr "Meddelandet skickades inte på grund av att ett okänt kodningsfel uppstod."
 
 msgid "Message was not sent because an unknown error occurred."
-msgstr ""
-"Meddelandet kunde kanske inte skickas på grund av att ett okänt fel uppstod."
+msgstr "Meddelandet kunde kanske inte skickas på grund av att ett okänt fel uppstod."
 
 msgid "Writing error"
 msgstr "Skrivfel"
@@ -5860,10 +5422,8 @@
 msgid "Unable to authenticate: %s"
 msgstr "Kan inte autentisera: %s"
 
-msgid ""
-"Your MSN buddy list is temporarily unavailable. Please wait and try again."
-msgstr ""
-"Din MSN-kompislista är otillgänglig temporärt. Var god försök igen senare."
+msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr "Din MSN-kompislista är otillgänglig temporärt. Var god försök igen senare."
 
 msgid "Handshaking"
 msgstr "Handskakning"
@@ -5885,15 +5445,11 @@
 
 #, c-format
 msgid "%s requests to view your webcam, but this request is not yet supported."
-msgstr ""
-"%s har frågar efter att få se fin webbkamera, men denna förfrågan stöds inte "
-"än."
+msgstr "%s har frågar efter att få se fin webbkamera, men denna förfrågan stöds inte än."
 
 #, c-format
 msgid "%s invited you to view his/her webcam, but this is not yet supported."
-msgstr ""
-"%s har gett dig en inbjudan att se dennes webbkamera, men detta stöds inte "
-"än."
+msgstr "%s har gett dig en inbjudan att se dennes webbkamera, men detta stöds inte än."
 
 msgid "Away From Computer"
 msgstr "Inte vid datorn"
@@ -5919,21 +5475,14 @@
 msgid "Message could not be sent because we are sending too quickly:"
 msgstr "Meddelandet kunde inte skickas eftersom skickade för snabbt:"
 
-msgid ""
-"Message could not be sent because we were unable to establish a session with "
-"the server. This is likely a server problem, try again in a few minutes:"
-msgstr ""
-"Meddelandet kunde inte skickas eftersom vi inte kunda skapa en anslutning "
-"till servern. Detta är troligen ett serverfel, försök igen om några minuter:"
-
-msgid ""
-"Message could not be sent because an error with the switchboard occurred:"
-msgstr ""
-"Meddelandet kunde inte skickas eftersom ett fel med växlingsbordet uppstod:"
+msgid "Message could not be sent because we were unable to establish a session with the server. This is likely a server problem, try again in a few minutes:"
+msgstr "Meddelandet kunde inte skickas eftersom vi inte kunda skapa en anslutning till servern. Detta är troligen ett serverfel, försök igen om några minuter:"
+
+msgid "Message could not be sent because an error with the switchboard occurred:"
+msgstr "Meddelandet kunde inte skickas eftersom ett fel med växlingsbordet uppstod:"
 
 msgid "Message may have not been sent because an unknown error occurred:"
-msgstr ""
-"Meddelandet kunde kanske inte skickas på grund av att ett okänt fel uppstod:"
+msgstr "Meddelandet kunde kanske inte skickas på grund av att ett okänt fel uppstod:"
 
 msgid "Delete Buddy from Address Book?"
 msgstr "Ta bort kompisen från adressboken?"
@@ -5959,8 +5508,7 @@
 msgid "The name you entered is invalid."
 msgstr "Namnet är ogiltigt."
 
-msgid ""
-"The birthday you entered is invalid. The correct format is: 'YYYY-MM-DD'."
+msgid "The birthday you entered is invalid. The correct format is: 'YYYY-MM-DD'."
 msgstr "Du angav en ogiltig födelsedag. Korrekt format är: 'YY-MM-DD'."
 
 #. show error to user
@@ -5976,7 +5524,7 @@
 msgstr "Din profilinformation har inte hämtats än. Var god försök igen senare."
 
 msgid "Your MXitId"
-msgstr ""
+msgstr "Din MXitID"
 
 #. pin
 #. pin (required)
@@ -6029,20 +5577,14 @@
 msgid "The file you are trying to send is too large!"
 msgstr "Filen du försöker skicka är för stor!"
 
-msgid ""
-"Unable to connect to the MXit HTTP server. Please check your server settings."
-msgstr ""
-"Kunde inte ansluta till MXit HTTP-servern. Var god undersök dina "
-"serverinställningar."
+msgid "Unable to connect to the MXit HTTP server. Please check your server settings."
+msgstr "Kunde inte ansluta till MXit HTTP-servern. Var god undersök dina serverinställningar."
 
 msgid "Logging In..."
 msgstr "Loggar in..."
 
-msgid ""
-"Unable to connect to the MXit server. Please check your server settings."
-msgstr ""
-"Kunde inte ansluta till MXit-servern. Var god undersök dina "
-"serverinställningar."
+msgid "Unable to connect to the MXit server. Please check your server settings."
+msgstr "Kunde inte ansluta till MXit-servern. Var god undersök dina serverinställningar."
 
 msgid "Connecting..."
 msgstr "Ansluter..."
@@ -6074,10 +5616,8 @@
 
 #. wapserver error
 #. server could not find the user
-msgid ""
-"MXit is currently unable to process the request. Please try again later."
-msgstr ""
-"MXit kan för närvarande inte hantera din förfrågan. Försök igen senare."
+msgid "MXit is currently unable to process the request. Please try again later."
+msgstr "MXit kan för närvarande inte hantera din förfrågan. Försök igen senare."
 
 msgid "Wrong security code entered. Please try again later."
 msgstr "Fel säkerhetskod angiven. Försök igen."
@@ -6129,9 +5669,8 @@
 msgid "Status Message"
 msgstr "Statusmeddelande"
 
-#, fuzzy
 msgid "Rejection Message"
-msgstr "Mottagna meddelande"
+msgstr "Avslagsmeddelande"
 
 #. hidden number
 msgid "Hidden Number"
@@ -6152,17 +5691,14 @@
 msgstr "Tillåt Splash-skärm popup"
 
 #. you were kicked
-#, fuzzy
 msgid "You have been kicked from this MultiMX."
-msgstr "Du har sparkats ut: (%s)"
-
-#, fuzzy
+msgstr "Du har sparkats ut från denna MultiMX."
+
 msgid "was kicked"
-msgstr "Ogiltig biljett"
-
-#, fuzzy
+msgstr "kickades"
+
 msgid "_Room Name:"
-msgstr "_Rum:"
+msgstr "_Rumnamn:"
 
 #. we must have lost the connection, so terminate it so that we can reconnect
 msgid "We have lost the connection to MXit. Please reconnect."
@@ -6182,18 +5718,14 @@
 msgstr "Lyckades logga in..."
 
 #, c-format
-msgid ""
-"%s sent you an encrypted message, but it is not supported on this client."
-msgstr ""
-"%s har skickat dig ett krypterat meddelande, vilket inte stöds av denna "
-"klienten."
+msgid "%s sent you an encrypted message, but it is not supported on this client."
+msgstr "%s har skickat dig ett krypterat meddelande, vilket inte stöds av denna klienten."
 
 msgid "Message Error"
 msgstr "Felmeddelande"
 
 msgid "Cannot perform redirect using the specified protocol"
-msgstr ""
-"Kan inte använda det specificerade protokollet fö en en vidarebefodran "
+msgstr "Kan inte använda det specificerade protokollet fö en en vidarebefodran "
 
 msgid "An internal MXit server error occurred."
 msgstr "Ett internt MXit-serverfel inträffade."
@@ -6343,18 +5875,10 @@
 msgstr "Snabbmeddelandevänner"
 
 #, c-format
-msgid ""
-"%d buddy was added or updated from the server (including buddies already on "
-"the server-side list)"
-msgid_plural ""
-"%d buddies were added or updated from the server (including buddies already "
-"on the server-side list)"
-msgstr[0] ""
-"%d vän lades till eller uppdaterades av servern (inklusive vänner som redan "
-"fanns på serverns lista)"
-msgstr[1] ""
-"%d vänner lades till eller uppdaterades av servern (inklusive vänner som "
-"redan fanns på serverns lista)"
+msgid "%d buddy was added or updated from the server (including buddies already on the server-side list)"
+msgid_plural "%d buddies were added or updated from the server (including buddies already on the server-side list)"
+msgstr[0] "%d vän lades till eller uppdaterades av servern (inklusive vänner som redan fanns på serverns lista)"
+msgstr[1] "%d vänner lades till eller uppdaterades av servern (inklusive vänner som redan fanns på serverns lista)"
 
 msgid "Add contacts from server"
 msgstr "Lägg till kontakter från server"
@@ -6364,15 +5888,8 @@
 msgstr "Protokollfel, gav felkod %d: %s"
 
 #, c-format
-msgid ""
-"%s Your password is %zu characters, which is longer than the maximum length "
-"of %d.  Please shorten your password at http://profileedit.myspace.com/index."
-"cfm?fuseaction=accountSettings.changePassword and try again."
-msgstr ""
-"%s Ditt lösenord är %zu tecken vilket är längre än den förväntade max-"
-"gränsen på %d. Var vänlig förkorta ditt lösenord på följande adress http://"
-"profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword "
-"och försök sedan igen."
+msgid "%s Your password is %zu characters, which is longer than the maximum length of %d.  Please shorten your password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."
+msgstr "%s Ditt lösenord är %zu tecken vilket är längre än den förväntade max-gränsen på %d. Var vänlig förkorta ditt lösenord på följande adress http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword och försök sedan igen."
 
 msgid "Incorrect username or password"
 msgstr "Felaktigt användarnamn eller lösenord"
@@ -6409,12 +5926,8 @@
 msgid "The RC4 cipher could not be found"
 msgstr "RC4-chiffret kan inte hittas"
 
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Uppgradera till en version av libpurble med RC4-stöd (>= 2.0.1). MySpaceIM-"
-"insticksmodulen kommer inte läsas in."
+msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded."
+msgstr "Uppgradera till en version av libpurble med RC4-stöd (>= 2.0.1). MySpaceIM-insticksmodulen kommer inte läsas in."
 
 msgid "Add friends from MySpace.com"
 msgstr "Lägg till vänner från MySpace.com"
@@ -6433,8 +5946,7 @@
 msgstr "myim URL-hanterare"
 
 msgid "No suitable MySpaceIM account could be found to open this myim URL."
-msgstr ""
-"Inget passande MySpaceIM-konto kunde hittas för att öppna denna myim-URL."
+msgstr "Inget passande MySpaceIM-konto kunde hittas för att öppna denna myim-URL."
 
 msgid "Enable the proper MySpaceIM account and try again."
 msgstr "Aktivera det riktiga MySpaceIM-kontot och försök igen."
@@ -6470,14 +5982,8 @@
 msgid "Client Version"
 msgstr "Klientversion"
 
-msgid ""
-"An error occurred while trying to set the username.  Please try again, or "
-"visit http://editprofile.myspace.com/index.cfm?fuseaction=profile.username "
-"to set your username."
-msgstr ""
-"Ett fel uppstod vid försök att ange ditt användarnamn. Försök igen, eller gå "
-"till http://editprofile.myspace.com/index.cfm?fuseaction=profile.username "
-"för att ange ditt användarnamn."
+msgid "An error occurred while trying to set the username.  Please try again, or visit http://editprofile.myspace.com/index.cfm?fuseaction=profile.username to set your username."
+msgstr "Ett fel uppstod vid försök att ange ditt användarnamn. Försök igen, eller gå till http://editprofile.myspace.com/index.cfm?fuseaction=profile.username för att ange ditt användarnamn."
 
 msgid "MySpaceIM - Username Available"
 msgstr "MySpaceIM - Användarnamnet är tillgänglig"
@@ -6502,8 +6008,7 @@
 msgstr "Inget användarnamn angett"
 
 msgid "Please enter a username to check its availability:"
-msgstr ""
-"Var vänlig ange ett användarnamn för att undersöka dess tillgänglighet."
+msgstr "Var vänlig ange ett användarnamn för att undersöka dess tillgänglighet."
 
 #. TODO: icons for each zap
 #. Lots of comments for translators:
@@ -6696,12 +6201,8 @@
 msgid "Could not recognize the host of the username you entered"
 msgstr "Kan inte känna igen värden för användarnamnet du angav"
 
-msgid ""
-"Your account has been disabled because too many incorrect passwords were "
-"entered"
-msgstr ""
-"Ditt konto har blivit avstängt eftersom lösenordet var felaktigt inskrivet "
-"för många gånger"
+msgid "Your account has been disabled because too many incorrect passwords were entered"
+msgstr "Ditt konto har blivit avstängt eftersom lösenordet var felaktigt inskrivet för många gånger"
 
 msgid "You cannot add the same person twice to a conversation"
 msgstr "Du kan inte lägga till samma person flera gånger till en konversation"
@@ -6721,12 +6222,8 @@
 msgid "The user has blocked you"
 msgstr "Användaren har blockerat dig"
 
-msgid ""
-"This evaluation version does not allow more than ten users to log in at one "
-"time"
-msgstr ""
-"Denna utvärderingsversion tillåter inte mer än tio användare att vara "
-"inloggade samtidigt"
+msgid "This evaluation version does not allow more than ten users to log in at one time"
+msgstr "Denna utvärderingsversion tillåter inte mer än tio användare att vara inloggade samtidigt"
 
 msgid "The user is either offline or you are blocked"
 msgstr "Användaren är antingen frånkopplad eller så är du blockerad"
@@ -6741,8 +6238,7 @@
 
 #, c-format
 msgid "Unable to send message. Could not get details for user (%s)."
-msgstr ""
-"Kan inte skicka meddelandet. Kunde inte hämta detaljer för användaren (%s)."
+msgstr "Kan inte skicka meddelandet. Kunde inte hämta detaljer för användaren (%s)."
 
 #, c-format
 msgid "Unable to add %s to your buddy list (%s)."
@@ -6759,28 +6255,19 @@
 
 #, c-format
 msgid "Unable to send message to %s. Could not create the conference (%s)."
-msgstr ""
-"Kan inte skicka meddelandet till %s. Kunde inte skapa konferensen (%s)."
+msgstr "Kan inte skicka meddelandet till %s. Kunde inte skapa konferensen (%s)."
 
 #, c-format
 msgid "Unable to send message. Could not create the conference (%s)."
 msgstr "Kan inte skicka meddelandet. Kunde inte skapa konferensen (%s)."
 
 #, c-format
-msgid ""
-"Unable to move user %s to folder %s in the server side list. Error while "
-"creating folder (%s)."
-msgstr ""
-"Kunde inte flytta användare %s till mappen %s på serverns lista. Fel uppstod "
-"vid skapandet av mapp (%s)."
-
-#, c-format
-msgid ""
-"Unable to add %s to your buddy list. Error creating folder in server side "
-"list (%s)."
-msgstr ""
-"Kunde inte lägga till %s till din kompislista. Fel vid skapandet av mapp på "
-"serverlistan (%s)."
+msgid "Unable to move user %s to folder %s in the server side list. Error while creating folder (%s)."
+msgstr "Kunde inte flytta användare %s till mappen %s på serverns lista. Fel uppstod vid skapandet av mapp (%s)."
+
+#, c-format
+msgid "Unable to add %s to your buddy list. Error creating folder in server side list (%s)."
+msgstr "Kunde inte lägga till %s till din kompislista. Fel vid skapandet av mapp på serverlistan (%s)."
 
 #, c-format
 msgid "Could not get details for user %s (%s)."
@@ -6865,16 +6352,11 @@
 msgstr "Vill du går med i konversationen?"
 
 #, c-format
-msgid ""
-"%s appears to be offline and did not receive the message that you just sent."
+msgid "%s appears to be offline and did not receive the message that you just sent."
 msgstr "%s verkar vara frånkopplad och fick inte meddelandet du just skickade."
 
-msgid ""
-"Unable to connect to server. Please enter the address of the server to which "
-"you wish to connect."
-msgstr ""
-"Kunde inte ansluta till servern. Var god ange adressen till servern du vill "
-"ansluta till."
+msgid "Unable to connect to server. Please enter the address of the server to which you wish to connect."
+msgstr "Kunde inte ansluta till servern. Var god ange adressen till servern du vill ansluta till."
 
 msgid "This conference has been closed. No more messages can be sent."
 msgstr "Denna konferens har stängts. Inga fler meddelande kan bli skickade."
@@ -6898,20 +6380,16 @@
 msgid "Server port"
 msgstr "Serverport"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Received unexpected response from %s: %s"
-msgstr "Mottog oväntat svar från %s"
+msgstr "Mottog oväntat svar från %s; %s"
 
 #, c-format
 msgid "Received unexpected response from %s"
 msgstr "Mottog oväntat svar från %s"
 
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Du har anslutit och kopplat ifrån för många gånger. Vänta tio minuter och "
-"prova igen. Om du fortsätter att försöka kommer du att få vänta ännu längre."
+msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
+msgstr "Du har anslutit och kopplat ifrån för många gånger. Vänta tio minuter och prova igen. Om du fortsätter att försöka kommer du att få vänta ännu längre."
 
 #. Note to translators: The first %s is a URL, the second is an
 #. error message.
@@ -6919,17 +6397,15 @@
 msgid "Error requesting %s: %s"
 msgstr "Fel vid efterfrågan av %s: %s"
 
-msgid ""
-"Server requested that you fill out a CAPTCHA in order to sign in, but this "
-"client does not currently support CAPTCHAs."
-msgstr ""
+msgid "Server requested that you fill out a CAPTCHA in order to sign in, but this client does not currently support CAPTCHAs."
+msgstr "Servern kräver att du fyller i e CAPTCHA för att registrera dig, men denna klient stödjer inte CAPTCHAs."
 
 msgid "AOL does not allow your screen name to authenticate here"
 msgstr "AOL tillåter inte ditt skärmnamn att autentisera här"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error requesting %s"
-msgstr "Fel vid efterfrågan av %s: %s"
+msgstr "Fel vid efterfrågan av %s"
 
 msgid "Could not join chat room"
 msgstr "Kunde inte ansluta till chatrummet"
@@ -6995,104 +6471,88 @@
 msgstr "Kan inte skicka meddelandet till %s: %s"
 
 msgid "Thinking"
-msgstr ""
-
-#, fuzzy
+msgstr "Tänker"
+
 msgid "Shopping"
-msgstr "Slutar skriva"
-
-#, fuzzy
+msgstr "Handlar"
+
 msgid "Questioning"
-msgstr "Förfrågningsdialog"
-
-#, fuzzy
+msgstr "Ifrågasätter"
+
 msgid "Eating"
-msgstr "Sökare"
-
-#, fuzzy
+msgstr "Äter"
+
 msgid "Watching a movie"
-msgstr "Spelar ett spel"
+msgstr "Tittar på film"
 
 msgid "Typing"
 msgstr "Skriver"
 
-#, fuzzy
 msgid "At the office"
-msgstr "Inte på kontoret"
+msgstr "På kontoret"
 
 msgid "Taking a bath"
-msgstr ""
+msgstr "Tar ett bad"
 
 msgid "Watching TV"
-msgstr ""
-
-#, fuzzy
+msgstr "Tittar på TV"
+
 msgid "Having fun"
-msgstr "La på"
-
-#, fuzzy
+msgstr "Har roligt"
+
 msgid "Sleeping"
-msgstr "Sömnig"
+msgstr "Sover"
 
 msgid "Using a PDA"
-msgstr ""
-
-#, fuzzy
+msgstr "Använder en PDA"
+
 msgid "Meeting friends"
-msgstr "Snabbmeddelandevänner"
-
-#, fuzzy
+msgstr "Möter vänner"
+
 msgid "On the phone"
 msgstr "Pratar i telefon"
 
-#, fuzzy
 msgid "Surfing"
-msgstr "Återkommande"
+msgstr "Surfar"
 
 #. "I am mobile." / "John is mobile."
 msgid "Mobile"
 msgstr "Mobil"
 
 msgid "Searching the web"
-msgstr ""
+msgstr "Söker på webben"
 
 msgid "At a party"
-msgstr ""
+msgstr "På fest"
 
 msgid "Having Coffee"
-msgstr ""
+msgstr "Dricker kaffe"
 
 #. Playing video games
-#, fuzzy
 msgid "Gaming"
-msgstr "Användarspelning"
+msgstr "Spelar"
 
 msgid "Browsing the web"
-msgstr ""
-
-#, fuzzy
+msgstr "Surfar på webben"
+
 msgid "Smoking"
-msgstr "Sång"
-
-#, fuzzy
+msgstr "Röker"
+
 msgid "Writing"
-msgstr "Arbetar"
+msgstr "Skriver"
 
 #. Drinking [Alcohol]
-#, fuzzy
 msgid "Drinking"
-msgstr "Arbetar"
+msgstr "Dricker"
 
 msgid "Listening to music"
 msgstr "Lyssnar på musik"
 
-#, fuzzy
 msgid "Studying"
-msgstr "Skickar"
-
-#, fuzzy
+msgstr "Studerar"
+
 msgid "In the restroom"
-msgstr "Intressen"
+msgstr "På toa"
 
 msgid "Received invalid data on connection with server"
 msgstr "Tog emot felaktig data vid anslutning till server"
@@ -7150,35 +6610,19 @@
 msgstr "Direktmeddelande har etablerats"
 
 #, c-format
-msgid ""
-"%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 försöker sända dig en %s-fil, men vi tillåter bara filer upp till %s över "
-"Direktanslutning. Försök som filöverföring istället.\n"
+msgid "%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 försöker sända dig en %s-fil, men vi tillåter bara filer upp till %s över Direktanslutning. Försök som filöverföring istället.\n"
 
 #, c-format
 msgid "File %s is %s, which is larger than the maximum size of %s."
 msgstr "Filen %s är %s vilket är större än den maximala storleken på %s."
 
-msgid ""
-"(There was an error receiving this message.  The buddy you are speaking with "
-"is probably using a different encoding than expected.  If you know what "
-"encoding he is using, you can specify it in the advanced account options for "
-"your AIM/ICQ account.)"
-msgstr ""
-"(Det uppstod ett fel vid mottagandet av detta meddelandet. Kompisen du "
-"pratar med använder antagligen en annan teckenkod än den förväntade. Om du "
-"vet vilken teckenkod han använder kan du specificera den bland de avancerade "
-"inställningarna för ditt AIM/ICQ-konto.)"
-
-#, c-format
-msgid ""
-"(There was an error receiving this message.  Either you and %s have "
-"different encodings selected, or %s has a buggy client.)"
-msgstr ""
-"(Det uppstod ett fel vid mottagningen av detta meddelande. Antingen har du "
-"och %s olika teckenkodningar valda eller så har %s en buggig klient.)"
+msgid "(There was an error receiving this message.  The buddy you are speaking with is probably using a different encoding than expected.  If you know what encoding he is using, you can specify it in the advanced account options for your AIM/ICQ account.)"
+msgstr "(Det uppstod ett fel vid mottagandet av detta meddelandet. Kompisen du pratar med använder antagligen en annan teckenkod än den förväntade. Om du vet vilken teckenkod han använder kan du specificera den bland de avancerade inställningarna för ditt AIM/ICQ-konto.)"
+
+#, c-format
+msgid "(There was an error receiving this message.  Either you and %s have different encodings selected, or %s has a buggy client.)"
+msgstr "(Det uppstod ett fel vid mottagningen av detta meddelande. Antingen har du och %s olika teckenkodningar valda eller så har %s en buggig klient.)"
 
 #. Label
 msgid "Buddy Icon"
@@ -7197,7 +6641,7 @@
 msgstr "Spel"
 
 msgid "ICQ Xtraz"
-msgstr ""
+msgstr "ICQ Xtraz"
 
 msgid "Add-Ins"
 msgstr "Lägg till"
@@ -7265,23 +6709,18 @@
 msgid "Invisible"
 msgstr "Osynlig"
 
-#, fuzzy
 msgid "Evil"
-msgstr "E-post"
-
-#, fuzzy
+msgstr "Ond"
+
 msgid "Depression"
-msgstr "Yrke"
-
-#, fuzzy
+msgstr "Depression"
+
 msgid "At home"
-msgstr "Om mig"
-
-#, fuzzy
+msgstr "Hemma"
+
 msgid "At work"
-msgstr "Nätverk"
-
-#, fuzzy
+msgstr "På jobbet"
+
 msgid "At lunch"
 msgstr "På lunch"
 
@@ -7314,21 +6753,12 @@
 msgstr "Avsluta anslutning"
 
 #, c-format
-msgid ""
-"Unable to sign on as %s because the username is invalid.  Usernames must be "
-"a valid email address, or start with a letter and contain only letters, "
-"numbers and spaces, or contain only numbers."
-msgstr ""
-"Kan inte logga in som %s eftersom användarnamnet är ogiltigt.  "
-"Användarnamnet måste vara en giltig epost-adress eller starta med en bokstav "
-"och får endast innehålla bokstäver, nummer och mellanslag, eller enbart "
-"innehålla nummer."
+msgid "Unable to sign on as %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
+msgstr "Kan inte logga in som %s eftersom användarnamnet är ogiltigt.  Användarnamnet måste vara en giltig epost-adress eller starta med en bokstav och får endast innehålla bokstäver, nummer och mellanslag, eller enbart innehålla nummer."
 
 #, c-format
 msgid "You may be disconnected shortly.  If so, check %s for updates."
-msgstr ""
-"Du kanske snart blir frånkopplad.  I så fall kan du kolla på %s efter "
-"uppdateringar."
+msgstr "Du kanske snart blir frånkopplad.  I så fall kan du kolla på %s efter uppdateringar."
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "Kunde inte hämta en giltig AIM-inloggnings-hash."
@@ -7354,14 +6784,8 @@
 msgstr "Tjänsten är tillfälligt onåbar."
 
 #. username connecting too frequently
-msgid ""
-"Your username has been connecting and disconnecting too frequently. Wait ten "
-"minutes and try again. If you continue to try, you will need to wait even "
-"longer."
-msgstr ""
-"Ditt användarnamn har anslutit och kopplats ifrån för ofta. Vänta tio "
-"minuter och prova igen. Om du fortsätter att försöka kommer du att få vänta "
-"ännu längre."
+msgid "Your username has been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
+msgstr "Ditt användarnamn har anslutit och kopplats ifrån för ofta. Vänta tio minuter och prova igen. Om du fortsätter att försöka kommer du att få vänta ännu längre."
 
 #. client too old
 #, c-format
@@ -7369,14 +6793,8 @@
 msgstr "Versionen av klienten du använder är för gammal. Uppgradera på %s"
 
 #. IP address connecting too frequently
-msgid ""
-"Your IP address has been connecting and disconnecting too frequently. Wait a "
-"minute and try again. If you continue to try, you will need to wait even "
-"longer."
-msgstr ""
-"Din IP-adress har anslutit och kopplats ifrån för ofta. Vänta tio minuter "
-"och prova igen. Om du fortsätter att försöka kommer du att få vänta ännu "
-"längre."
+msgid "Your IP address has been connecting and disconnecting too frequently. Wait a minute and try again. If you continue to try, you will need to wait even longer."
+msgstr "Din IP-adress har anslutit och kopplats ifrån för ofta. Vänta tio minuter och prova igen. Om du fortsätter att försöka kommer du att få vänta ännu längre."
 
 msgid "The SecurID key entered is invalid"
 msgstr "SecurID-nyckeln som angavs är ogiltig"
@@ -7404,12 +6822,10 @@
 
 #, c-format
 msgid ""
-"The user %u has denied your request to add them to your buddy list for the "
-"following reason:\n"
+"The user %u has denied your request to add them to your buddy list for the following reason:\n"
 "%s"
 msgstr ""
-"Användaren %u har nekat dig att lägga till honom/henne i din kompislista av "
-"följande orsak:\n"
+"Användaren %u har nekat dig att lägga till honom/henne i din kompislista av följande orsak:\n"
 "%s"
 
 msgid "ICQ authorization denied."
@@ -7418,8 +6834,7 @@
 #. Someone has granted you authorization
 #, c-format
 msgid "The user %u has granted your request to add them to your buddy list."
-msgstr ""
-"Användaren %u har tillåtit dig att lägga till honom/henne i din kompislista."
+msgstr "Användaren %u har tillåtit dig att lägga till honom/henne i din kompislista."
 
 #, c-format
 msgid ""
@@ -7483,35 +6898,22 @@
 msgstr[1] "Du missade %hu meddelanden från %s eftersom de var för stora."
 
 #, c-format
-msgid ""
-"You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural ""
-"You missed %hu messages from %s because the rate limit has been exceeded."
-msgstr[0] ""
-"Du missade %hu meddelande från %s eftersom frekvensgränsen har överskridits."
-msgstr[1] ""
-"Du missade %hu meddelanden från %s eftersom frekvensgränsen har överskridits."
-
-#, c-format
-msgid ""
-"You missed %hu message from %s because his/her warning level is too high."
-msgid_plural ""
-"You missed %hu messages from %s because his/her warning level is too high."
-msgstr[0] ""
-"Du missade %hu meddelande från %s eftersom hennes/hans varningsnivå är för "
-"hög."
-msgstr[1] ""
-"Du missade %hu meddelanden från %s eftersom hennes/hans varningsnivå är för "
-"hög."
+msgid "You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded."
+msgstr[0] "Du missade %hu meddelande från %s eftersom frekvensgränsen har överskridits."
+msgstr[1] "Du missade %hu meddelanden från %s eftersom frekvensgränsen har överskridits."
+
+#, c-format
+msgid "You missed %hu message from %s because his/her warning level is too high."
+msgid_plural "You missed %hu messages from %s because his/her warning level is too high."
+msgstr[0] "Du missade %hu meddelande från %s eftersom hennes/hans varningsnivå är för hög."
+msgstr[1] "Du missade %hu meddelanden från %s eftersom hennes/hans varningsnivå är för hög."
 
 #, c-format
 msgid "You missed %hu message from %s because your warning level is too high."
-msgid_plural ""
-"You missed %hu messages from %s because your warning level is too high."
-msgstr[0] ""
-"Du missade %hu meddelande från %s eftersom din varningsnivå är för hög."
-msgstr[1] ""
-"Du missade %hu meddelanden från %s eftersom din varningsnivå är för hög."
+msgid_plural "You missed %hu messages from %s because your warning level is too high."
+msgstr[0] "Du missade %hu meddelande från %s eftersom din varningsnivå är för hög."
+msgstr[1] "Du missade %hu meddelanden från %s eftersom din varningsnivå är för hög."
 
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
@@ -7536,12 +6938,8 @@
 msgstr "Din anslutning kan vara borta."
 
 #. The conversion failed!
-msgid ""
-"[Unable to display a message from this user because it contained invalid "
-"characters.]"
-msgstr ""
-"[Kan inte visa meddelande från denna användare eftersom det innehöll "
-"felaktiga tecken.]"
+msgid "[Unable to display a message from this user because it contained invalid characters.]"
+msgstr "[Kan inte visa meddelande från denna användare eftersom det innehöll felaktiga tecken.]"
 
 #, c-format
 msgid "You have been disconnected from chat room %s."
@@ -7594,49 +6992,28 @@
 msgstr "Kontobekräftelsebegäran"
 
 #, c-format
-msgid ""
-"Error 0x%04x: Unable to format username because the requested name differs "
-"from the original."
-msgstr ""
-"Fel 0x%04x: Kan inte formatera användarnamnet eftersom det begärda namnet "
-"skiljer sig från originalet."
+msgid "Error 0x%04x: Unable to format username because the requested name differs from the original."
+msgstr "Fel 0x%04x: Kan inte formatera användarnamnet eftersom det begärda namnet skiljer sig från originalet."
 
 #, c-format
 msgid "Error 0x%04x: Unable to format username because it is invalid."
-msgstr ""
-"Fel 0x%04x: Kan inte formatera användarnamnet eftersom det är ogiltigt."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to format username because the requested name is too "
-"long."
-msgstr ""
-"Fel 0x%04x: Kan inte formatera användarnamnet eftersom det begärda "
-"användarnamnet är för långt."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because there is already a "
-"request pending for this username."
-msgstr ""
-"Fel 0x%04x: Kan inte ändra e-postadressen eftersom det redan finns en "
-"begäran om ändring som väntar för detta användarnamnet."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because the given address has "
-"too many usernames associated with it."
-msgstr ""
-"Fel 0x%04x: Kan inte ändra e-postadress eftersom den angivna adressen har "
-"för många användarnamn associerade med sig."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because the given address is "
-"invalid."
-msgstr ""
-"Fel 0x%04x: Kan inte ändra e-postadress eftersom den angivna adressen inte "
-"är giltig."
+msgstr "Fel 0x%04x: Kan inte formatera användarnamnet eftersom det är ogiltigt."
+
+#, c-format
+msgid "Error 0x%04x: Unable to format username because the requested name is too long."
+msgstr "Fel 0x%04x: Kan inte formatera användarnamnet eftersom det begärda användarnamnet är för långt."
+
+#, c-format
+msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this username."
+msgstr "Fel 0x%04x: Kan inte ändra e-postadressen eftersom det redan finns en begäran om ändring som väntar för detta användarnamnet."
+
+#, c-format
+msgid "Error 0x%04x: Unable to change email address because the given address has too many usernames associated with it."
+msgstr "Fel 0x%04x: Kan inte ändra e-postadress eftersom den angivna adressen har för många användarnamn associerade med sig."
+
+#, c-format
+msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
+msgstr "Fel 0x%04x: Kan inte ändra e-postadress eftersom den angivna adressen inte är giltig."
 
 #, c-format
 msgid "Error 0x%04x: Unknown error."
@@ -7652,90 +7029,49 @@
 msgid "Account Info"
 msgstr "Kontoinformation"
 
-msgid ""
-"Your IM Image was not sent. You must be Direct Connected to send IM Images."
-msgstr ""
-"Din IM-bild var inte skickad. Du måste vara direktansluten för att kunna "
-"skicka IM-bilder."
+msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr "Din IM-bild var inte skickad. Du måste vara direktansluten för att kunna skicka IM-bilder."
 
 msgid "Unable to set AIM profile."
 msgstr "Kan inte ändra i AIM-profil."
 
-msgid ""
-"You have probably requested to set your profile before the login procedure "
-"completed.  Your profile remains unset; try setting it again when you are "
-"fully connected."
-msgstr ""
-"Du har antagligen begärt att ändra i din profil innan inloggningsprocessen "
-"slutförts. Din profil är oförändrad, försök ändra den igen när du är helt "
-"ansluten."
-
-#, c-format
-msgid ""
-"The maximum profile length of %d byte has been exceeded.  It has been "
-"truncated for you."
-msgid_plural ""
-"The maximum profile length of %d bytes has been exceeded.  It has been "
-"truncated for you."
-msgstr[0] ""
-"Den maximala profillängden på %d byte har överskridits.  Den har blivit "
-"trunkerad åt dig."
-msgstr[1] ""
-"Den maximala profillängden på %d byte har överskridits.  Den har blivit "
-"trunkerad åt dig."
+msgid "You have probably requested to set your profile before the login procedure completed.  Your profile remains unset; try setting it again when you are fully connected."
+msgstr "Du har antagligen begärt att ändra i din profil innan inloggningsprocessen slutförts. Din profil är oförändrad, försök ändra den igen när du är helt ansluten."
+
+#, c-format
+msgid "The maximum profile length of %d byte has been exceeded.  It has been truncated for you."
+msgid_plural "The maximum profile length of %d bytes has been exceeded.  It has been truncated for you."
+msgstr[0] "Den maximala profillängden på %d byte har överskridits.  Den har blivit trunkerad åt dig."
+msgstr[1] "Den maximala profillängden på %d byte har överskridits.  Den har blivit trunkerad åt dig."
 
 msgid "Profile too long."
 msgstr "Profilen är för lång."
 
 #, c-format
-msgid ""
-"The maximum away message length of %d byte has been exceeded.  It has been "
-"truncated for you."
-msgid_plural ""
-"The maximum away message length of %d bytes has been exceeded.  It has been "
-"truncated for you."
-msgstr[0] ""
-"Den maximala längden på meddelande vid frånvaro som är %d byte har "
-"överskridits.  Den har blivit trunkerad åt dig."
-msgstr[1] ""
-"Den maximala längden på meddelande vid frånvaro som är %d byte har "
-"överskridits.  Den har blivit trunkerad åt dig."
+msgid "The maximum away message length of %d byte has been exceeded.  It has been truncated for you."
+msgid_plural "The maximum away message length of %d bytes has been exceeded.  It has been truncated for you."
+msgstr[0] "Den maximala längden på meddelande vid frånvaro som är %d byte har överskridits.  Den har blivit trunkerad åt dig."
+msgstr[1] "Den maximala längden på meddelande vid frånvaro som är %d byte har överskridits.  Den har blivit trunkerad åt dig."
 
 msgid "Away message too long."
 msgstr "Frånvaromeddelandet är för långt."
 
 #, c-format
-msgid ""
-"Unable to add the buddy %s because the username is invalid.  Usernames must "
-"be a valid email address, or start with a letter and contain only letters, "
-"numbers and spaces, or contain only numbers."
-msgstr ""
-"Kunde inte lägga till kompisen %s eftersom användarnamnet är ogiltigt.  "
-"Användarnamnet måste antingen vara en giltig epost-adress, börja med en "
-"bokstav och endast innehålla bokstäver, siffror och mellanslag eller bara "
-"innehålla siffror."
+msgid "Unable to add the buddy %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
+msgstr "Kunde inte lägga till kompisen %s eftersom användarnamnet är ogiltigt.  Användarnamnet måste antingen vara en giltig epost-adress, börja med en bokstav och endast innehålla bokstäver, siffror och mellanslag eller bara innehålla siffror."
 
 msgid "Unable to Retrieve Buddy List"
 msgstr "Kunde inte hämta kompislista"
 
-msgid ""
-"The AIM servers were temporarily unable to send your buddy list.  Your buddy "
-"list is not lost, and will probably become available in a few minutes."
-msgstr ""
-"AIM-servrarna kunde för tillfället inte skicka din kompislista. Din "
-"kompislista är inte försvunnen utan kommer antagligen vara tillgänglig om "
-"några timmar igen."
+msgid "The AIM servers were temporarily unable to send your buddy list.  Your buddy list is not lost, and will probably become available in a few minutes."
+msgstr "AIM-servrarna kunde för tillfället inte skicka din kompislista. Din kompislista är inte försvunnen utan kommer antagligen vara tillgänglig om några timmar igen."
 
 msgid "Orphans"
 msgstr "Föräldralösa"
 
 #, c-format
-msgid ""
-"Unable to add the buddy %s because you have too many buddies in your buddy "
-"list.  Please remove one and try again."
-msgstr ""
-"Kunde inte lägga till kompisen %s eftersom du har för många kompisar i din "
-"kompislista. Ta bort en och försök igen."
+msgid "Unable to add the buddy %s because you have too many buddies in your buddy list.  Please remove one and try again."
+msgstr "Kunde inte lägga till kompisen %s eftersom du har för många kompisar i din kompislista. Ta bort en och försök igen."
 
 msgid "(no name)"
 msgstr "(inget namn)"
@@ -7745,12 +7081,8 @@
 msgstr "Kunde inte lägga till kompisen %s av okänd anledning."
 
 #, c-format
-msgid ""
-"The user %s has given you permission to add him or her to your buddy list.  "
-"Do you want to add this user?"
-msgstr ""
-"Användaren %s har givit dig tillåtelse att lägga till den till din "
-"kompislista. Vill du göra det?"
+msgid "The user %s has given you permission to add him or her to your buddy list.  Do you want to add this user?"
+msgstr "Användaren %s har givit dig tillåtelse att lägga till den till din kompislista. Vill du göra det?"
 
 msgid "Authorization Given"
 msgstr "Auktorisering given"
@@ -7758,9 +7090,7 @@
 #. Granted
 #, c-format
 msgid "The user %s has granted your request to add them to your buddy list."
-msgstr ""
-"Användaren %s har tillåtit dig att lägga till henne/honom till din "
-"kompislista."
+msgstr "Användaren %s har tillåtit dig att lägga till henne/honom till din kompislista."
 
 msgid "Authorization Granted"
 msgstr "Auktorisering beviljades"
@@ -7768,12 +7098,10 @@
 #. Denied
 #, c-format
 msgid ""
-"The user %s has denied your request to add them to your buddy list for the "
-"following reason:\n"
+"The user %s has denied your request to add them to your buddy list for the following reason:\n"
 "%s"
 msgstr ""
-"Användaren %s tillåter inte att du lägga till henne/honom till din "
-"kompislista av följande orsak:\n"
+"Användaren %s tillåter inte att du lägga till henne/honom till din kompislista av följande orsak:\n"
 "%s"
 
 msgid "Authorization Denied"
@@ -7783,15 +7111,13 @@
 msgstr "_Utbyte:"
 
 msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
-msgstr ""
-"Din IM-bild skickades inte. Du kan inte skicka IM-bilder via AIM-chattar."
+msgstr "Din IM-bild skickades inte. Du kan inte skicka IM-bilder via AIM-chattar."
 
 msgid "iTunes Music Store Link"
 msgstr "Länk till iTunes Musikaffär"
 
-#, fuzzy
 msgid "Lunch"
-msgstr "Finch"
+msgstr "Lunch"
 
 #, c-format
 msgid "Buddy Comment for %s"
@@ -7802,15 +7128,10 @@
 
 #, c-format
 msgid "You have selected to open a Direct IM connection with %s."
-msgstr ""
-"Du har valt att öppna en direktanslutning för snabbmeddelanden till %s."
-
-msgid ""
-"Because this reveals your IP address, it may be considered a security risk.  "
-"Do you wish to continue?"
-msgstr ""
-"Eftersom detta avslöjar din IP-adress kan det ses som en säkerhetsrisk. Vill "
-"du fortsätta?"
+msgstr "Du har valt att öppna en direktanslutning för snabbmeddelanden till %s."
+
+msgid "Because this reveals your IP address, it may be considered a security risk.  Do you wish to continue?"
+msgstr "Eftersom detta avslöjar din IP-adress kan det ses som en säkerhetsrisk. Vill du fortsätta?"
 
 msgid "C_onnect"
 msgstr "_Anslut"
@@ -7825,9 +7146,8 @@
 msgid "Edit Buddy Comment"
 msgstr "Ändra kompiskommentar"
 
-#, fuzzy
 msgid "Get X-Status Msg"
-msgstr "Hämta statusmeddelande"
+msgstr "Hämta X-statusmeddelande"
 
 msgid "End Direct IM Session"
 msgstr "Avsluta direkt-IM session"
@@ -7851,9 +7171,7 @@
 msgstr "Den nya formateringen är ogiltig."
 
 msgid "Username formatting can change only capitalization and whitespace."
-msgstr ""
-"Användarnamnets formatering kan endast förändra stora-/småbokstäver och "
-"mellanslag."
+msgstr "Användarnamnets formatering kan endast förändra stora-/småbokstäver och mellanslag."
 
 msgid "Change Address To:"
 msgstr "Ändra adress till:"
@@ -7864,12 +7182,8 @@
 msgid "You are awaiting authorization from the following buddies"
 msgstr "Du väntar på auktorisering från följande kompisar"
 
-msgid ""
-"You can re-request authorization from these buddies by right-clicking on "
-"them and selecting \"Re-request Authorization.\""
-msgstr ""
-"Du kan begära auktorisering igen från dessa kompisar genom att högerklicka "
-"på dem och välja \"Begär auktorisering igen.\""
+msgid "You can re-request authorization from these buddies by right-clicking on them and selecting \"Re-request Authorization.\""
+msgstr "Du kan begära auktorisering igen från dessa kompisar genom att högerklicka på dem och välja \"Begär auktorisering igen.\""
 
 msgid "Find Buddy by Email"
 msgstr "Hitta kompis på e-postadress"
@@ -7946,14 +7260,8 @@
 msgid "%s has just asked to directly connect to %s"
 msgstr "%s har just frågat om att koppla sig direkt till %s"
 
-msgid ""
-"This requires a direct connection between the two computers and is necessary "
-"for IM Images.  Because your IP address will be revealed, this may be "
-"considered a privacy risk."
-msgstr ""
-"Detta kräver en direkt koppling mellan de två datorerna och behövs för att "
-"IM-bilder ska fungera. Eftersom din IP-adress kommer att avslöjas kan detta "
-"betraktas som en säkerhetsrisk."
+msgid "This requires a direct connection between the two computers and is necessary for IM Images.  Because your IP address will be revealed, this may be considered a privacy risk."
+msgstr "Detta kräver en direkt koppling mellan de två datorerna och behövs för att IM-bilder ska fungera. Eftersom din IP-adress kommer att avslöjas kan detta betraktas som en säkerhetsrisk."
 
 msgid "Invalid SNAC"
 msgstr "Ogiltig SNAC"
@@ -8307,9 +7615,8 @@
 msgstr "Admin"
 
 #. XXX: Should this be "Topic"?
-#, fuzzy
 msgid "Room Title"
-msgstr "Rumslista"
+msgstr "Rumstitel"
 
 msgid "Notice"
 msgstr "Notering"
@@ -8783,10 +8090,8 @@
 msgstr "Startar tjänster"
 
 #, c-format
-msgid ""
-"A Sametime administrator has issued the following announcement on server %s"
-msgstr ""
-"En Sametimeadministratör har placerat följande meddelande på servern %s"
+msgid "A Sametime administrator has issued the following announcement on server %s"
+msgstr "En Sametimeadministratör har placerat följande meddelande på servern %s"
 
 msgid "Sametime Administrator Announcement"
 msgstr "Sametimeadministratörannonsering"
@@ -8830,12 +8135,8 @@
 msgstr "Skapa konferens med användare"
 
 #, c-format
-msgid ""
-"Please enter a topic for the new conference, and an invitation message to be "
-"sent to %s"
-msgstr ""
-"Var god ange ett nytt ämne för den nya konferensen, och en inbjudan att "
-"skicka till %s"
+msgid "Please enter a topic for the new conference, and an invitation message to be sent to %s"
+msgstr "Var god ange ett nytt ämne för den nya konferensen, och en inbjudan att skicka till %s"
 
 msgid "New Conference"
 msgstr "Ny konferens"
@@ -8853,14 +8154,8 @@
 msgstr "Bjud in användaren till en konferens"
 
 #, c-format
-msgid ""
-"Select a conference from the list below to send an invite to user %s. Select "
-"\"Create New Conference\" if you'd like to create a new conference to invite "
-"this user to."
-msgstr ""
-"Välj en konferens från listan här under för att skicka en inbjudan till "
-"användaren %s. Välj \"Skapa ny konferens\" om du vill skapa en ny konferens "
-"att bjuda in användaren till."
+msgid "Select a conference from the list below to send an invite to user %s. Select \"Create New Conference\" if you'd like to create a new conference to invite this user to."
+msgstr "Välj en konferens från listan här under för att skicka en inbjudan till användaren %s. Välj \"Skapa ny konferens\" om du vill skapa en ny konferens att bjuda in användaren till."
 
 msgid "Invite to Conference"
 msgstr "Bjud in till konferens"
@@ -8878,12 +8173,8 @@
 msgstr "Ingen Sametime communityserver specificerad"
 
 #, c-format
-msgid ""
-"No host or IP address has been configured for the Meanwhile account %s. "
-"Please enter one below to continue logging in."
-msgstr ""
-"Ingen värd eller IP har konfigurerats för ditt Meanwhile-konto %s. Var god "
-"ange en nedan för att fortsätta inloggningen."
+msgid "No host or IP address has been configured for the Meanwhile account %s. Please enter one below to continue logging in."
+msgstr "Ingen värd eller IP har konfigurerats för ditt Meanwhile-konto %s. Var god ange en nedan för att fortsätta inloggningen."
 
 msgid "Meanwhile Connection Setup"
 msgstr "Meanwhile anslutningsinställningar"
@@ -8911,12 +8202,8 @@
 msgstr "Ett svårförståeligt användarid angavs"
 
 #, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following users. Please "
-"select the correct user from the list below to add them to your buddy list."
-msgstr ""
-"Identifieraren '%s' kan referera till följande användare. Var god välj rätt "
-"användare för att lägga till dem på din kompislista."
+msgid "The identifier '%s' may possibly refer to any of the following users. Please select the correct user from the list below to add them to your buddy list."
+msgstr "Identifieraren '%s' kan referera till följande användare. Var god välj rätt användare för att lägga till dem på din kompislista."
 
 msgid "Select User"
 msgstr "Välj användare"
@@ -8925,12 +8212,8 @@
 msgstr "Kan inte lägga till användaren: användaren ej funnen"
 
 #, c-format
-msgid ""
-"The identifier '%s' did not match any users in your Sametime community. This "
-"entry has been removed from your buddy list."
-msgstr ""
-"Identifieraren '%s' matchar inte någon i din Sametime community. Denna post "
-"har blivit borttagen från din kompislista."
+msgid "The identifier '%s' did not match any users in your Sametime community. This entry has been removed from your buddy list."
+msgstr "Identifieraren '%s' matchar inte någon i din Sametime community. Denna post har blivit borttagen från din kompislista."
 
 #, c-format
 msgid ""
@@ -8983,14 +8266,8 @@
 msgstr "Notes adressboksgruppresultat"
 
 #, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following Notes Address "
-"Book groups. Please select the correct group from the list below to add it "
-"to your buddy list."
-msgstr ""
-"Identifieraren '%s' kan möjligen referera till någon av följande Notes "
-"adressboksgrupper. Var god välj den korrekta gruppen från listan här nedan "
-"för att lägga till den till din kompislista."
+msgid "The identifier '%s' may possibly refer to any of the following Notes Address Book groups. Please select the correct group from the list below to add it to your buddy list."
+msgstr "Identifieraren '%s' kan möjligen referera till någon av följande Notes adressboksgrupper. Var god välj den korrekta gruppen från listan här nedan för att lägga till den till din kompislista."
 
 msgid "Select Notes Address Book"
 msgstr "Välj Notes adressbok"
@@ -8999,36 +8276,22 @@
 msgstr "Kunde inte lägga till grupp: gruppen ej funnen"
 
 #, c-format
-msgid ""
-"The identifier '%s' did not match any Notes Address Book groups in your "
-"Sametime community."
-msgstr ""
-"Identidieraren '%s' matchade inte någon Notes adressboksgrupper i din "
-"Sametime-community."
+msgid "The identifier '%s' did not match any Notes Address Book groups in your Sametime community."
+msgstr "Identidieraren '%s' matchade inte någon Notes adressboksgrupper i din Sametime-community."
 
 msgid "Notes Address Book Group"
 msgstr "Notes adressboksgrupp"
 
-msgid ""
-"Enter the name of a Notes Address Book group in the field below to add the "
-"group and its members to your buddy list."
-msgstr ""
-"Ange namnet på en Notes adressboksgrupp i fältet nedan för att lägga till "
-"gruppen och dess medlemmar till din kompislista."
+msgid "Enter the name of a Notes Address Book group in the field below to add the group and its members to your buddy list."
+msgstr "Ange namnet på en Notes adressboksgrupp i fältet nedan för att lägga till gruppen och dess medlemmar till din kompislista."
 
 #, c-format
 msgid "Search results for '%s'"
 msgstr "Sökresultat för '%s'"
 
 #, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following users. You "
-"may add these users to your buddy list or send them messages with the action "
-"buttons below."
-msgstr ""
-"Identifieraren '%s' kan referera till följande användare. Du kan lägga till "
-"dessa användare till din kompislista eller skicka meddelande till dem med "
-"hjälp av knapparna här nedanför."
+msgid "The identifier '%s' may possibly refer to any of the following users. You may add these users to your buddy list or send them messages with the action buttons below."
+msgstr "Identifieraren '%s' kan referera till följande användare. Du kan lägga till dessa användare till din kompislista eller skicka meddelande till dem med hjälp av knapparna här nedanför."
 
 msgid "Search Results"
 msgstr "Sökresultat"
@@ -9046,12 +8309,8 @@
 msgid "Search for a user"
 msgstr "Sök efter en användare"
 
-msgid ""
-"Enter a name or partial ID in the field below to search for matching users "
-"in your Sametime community."
-msgstr ""
-"Ange ett namn eller del av ID i fältet nedan för att söka efter matchande "
-"användare i sin Sametime-community."
+msgid "Enter a name or partial ID in the field below to search for matching users in your Sametime community."
+msgstr "Ange ett namn eller del av ID i fältet nedan för att söka efter matchande användare i sin Sametime-community."
 
 msgid "User Search"
 msgstr "Användarsökning"
@@ -9107,12 +8366,8 @@
 msgstr "Fjärranvändaren är inte tillgänglig på nätverket längre"
 
 #, c-format
-msgid ""
-"Key agreement request received from %s. Would you like to perform the key "
-"agreement?"
-msgstr ""
-"Nyckelöverenskommelse mottagen från %s. Vill du utföra en "
-"nyckelöverenskommelse?"
+msgid "Key agreement request received from %s. Would you like to perform the key agreement?"
+msgstr "Nyckelöverenskommelse mottagen från %s. Vill du utföra en nyckelöverenskommelse?"
 
 #, c-format
 msgid ""
@@ -9158,13 +8413,8 @@
 msgid "The %s buddy is not trusted"
 msgstr "Kompisen %s är inte tillitsfull"
 
-msgid ""
-"You cannot receive buddy notifications until you import his/her public key.  "
-"You can use the Get Public Key command to get the public key."
-msgstr ""
-"Du kan inte ta emot kompisnotifiering förrän du har importerat dennes "
-"publika nyckel. Du kan använda \"Hämta publik nyckel\"-kommandot för att få "
-"den."
+msgid "You cannot receive buddy notifications until you import his/her public key.  You can use the Get Public Key command to get the public key."
+msgstr "Du kan inte ta emot kompisnotifiering förrän du har importerat dennes publika nyckel. Du kan använda \"Hämta publik nyckel\"-kommandot för att få den."
 
 #. Open file selector to select the public key.
 msgid "Open..."
@@ -9174,12 +8424,8 @@
 msgid "The %s buddy is not present in the network"
 msgstr "%s kompisen är inte tillgänglig på nätverket"
 
-msgid ""
-"To add the buddy you must import his/her public key. Press Import to import "
-"a public key."
-msgstr ""
-"För att lägga till kompisen måste du importera dennes publika nyckel. Tryck "
-"på \"importera\" för att importera publik nyckel."
+msgid "To add the buddy you must import his/her public key. Press Import to import a public key."
+msgstr "För att lägga till kompisen måste du importera dennes publika nyckel. Tryck på \"importera\" för att importera publik nyckel."
 
 msgid "_Import..."
 msgstr "_Importera..."
@@ -9187,19 +8433,11 @@
 msgid "Select correct user"
 msgstr "Välj rätt användare"
 
-msgid ""
-"More than one user was found with the same public key. Select the correct "
-"user from the list to add to the buddy list."
-msgstr ""
-"Mer än en användare hittades med samma publika nyckel. Välj rätt användare "
-"från listan för att lägga till denne till kompislistan."
-
-msgid ""
-"More than one user was found with the same name. Select the correct user "
-"from the list to add to the buddy list."
-msgstr ""
-"Mer än en användare hittades med samma namn. Välj rätt användare från listan "
-"för att lägga till denne till kompislistan."
+msgid "More than one user was found with the same public key. Select the correct user from the list to add to the buddy list."
+msgstr "Mer än en användare hittades med samma publika nyckel. Välj rätt användare från listan för att lägga till denne till kompislistan."
+
+msgid "More than one user was found with the same name. Select the correct user from the list to add to the buddy list."
+msgstr "Mer än en användare hittades med samma namn. Välj rätt användare från listan för att lägga till denne till kompislistan."
 
 msgid "Detached"
 msgstr "Frånskild"
@@ -9316,18 +8554,8 @@
 msgstr "Kanalpublik nyckellista"
 
 #, c-format
-msgid ""
-"Channel authentication is used to secure the channel from unauthorized "
-"access. The authentication may be based on passphrase and digital "
-"signatures. If passphrase is set, it is required to be able to join. If "
-"channel public keys are set then only users whose public keys are listed are "
-"able to join."
-msgstr ""
-"Kanal-autentisering används för att säkra kanalen från obehörigt tillträde. "
-"Autentiseringen kan vara baserad på ett lösenord eller en digital signatur. "
-"Om ett lösenord är valt, då är det nödvändigt för att kunna ansluta. Om "
-"kanalpublika nycklar är valt kan enbart användare vars publika nycklar är "
-"listade ansluta."
+msgid "Channel authentication is used to secure the channel from unauthorized access. The authentication may be based on passphrase and digital signatures. If passphrase is set, it is required to be able to join. If channel public keys are set then only users whose public keys are listed are able to join."
+msgstr "Kanal-autentisering används för att säkra kanalen från obehörigt tillträde. Autentiseringen kan vara baserad på ett lösenord eller en digital signatur. Om ett lösenord är valt, då är det nödvändigt för att kunna ansluta. Om kanalpublika nycklar är valt kan enbart användare vars publika nycklar är listade ansluta."
 
 msgid "Channel Authentication"
 msgstr "Kanalautentisering"
@@ -9352,9 +8580,7 @@
 msgstr "Användargräns"
 
 msgid "Set user limit on channel. Set to zero to reset user limit."
-msgstr ""
-"Antalet användare begränsat på kanal. Sätt till noll för att nollställa "
-"användargräns."
+msgstr "Antalet användare begränsat på kanal. Sätt till noll för att nollställa användargräns."
 
 msgid "Invite List"
 msgstr "Gästlista"
@@ -9393,10 +8619,8 @@
 msgstr "Sätt Hemlig Kanal"
 
 #, c-format
-msgid ""
-"You have to join the %s channel before you are able to join the private group"
-msgstr ""
-"Du måste ansluta till kanalen %s före du kan ansluta till den privata gruppen"
+msgid "You have to join the %s channel before you are able to join the private group"
+msgstr "Du måste ansluta till kanalen %s före du kan ansluta till den privata gruppen"
 
 msgid "Join Private Group"
 msgstr "Anslut till privat grupp"
@@ -9635,12 +8859,8 @@
 msgstr "Lösenord krävs"
 
 #, c-format
-msgid ""
-"Received %s's public key. Your local copy does not match this key. Would you "
-"still like to accept this public key?"
-msgstr ""
-"Mottog %ss publika nyckel. Din lokala kopia stämmer inte överens med denna. "
-"Vill du fortfarande acceptera denna publika nyckel?"
+msgid "Received %s's public key. Your local copy does not match this key. Would you still like to accept this public key?"
+msgstr "Mottog %ss publika nyckel. Din lokala kopia stämmer inte överens med denna. Vill du fortfarande acceptera denna publika nyckel?"
 
 #, c-format
 msgid "Received %s's public key. Would you like to accept this public key?"
@@ -9676,11 +8896,8 @@
 msgid "Key Exchange failed"
 msgstr "Nyckelutbytet misslyckades"
 
-msgid ""
-"Resuming detached session failed. Press Reconnect to create new connection."
-msgstr ""
-"Misslyckades med att återuppta frånskild session. Tryck \"Återanslut\" för "
-"att skapa en ny uppkoppling."
+msgid "Resuming detached session failed. Press Reconnect to create new connection."
+msgstr "Misslyckades med att återuppta frånskild session. Tryck \"Återanslut\" för att skapa en ny uppkoppling."
 
 msgid "Performing key exchange"
 msgstr "Utför nyckelutbyte"
@@ -9749,14 +8966,8 @@
 msgid "User Online Status Attributes"
 msgstr "Användarens anslutningsstatusattribut"
 
-msgid ""
-"You can let other users see your online status information and your personal "
-"information. Please fill the information you would like other users to see "
-"about yourself."
-msgstr ""
-"Du kan låta andra användare se din anslutningsstatusinformation och din "
-"personliga information. Var god fyll i informationen du vill att andra ska "
-"kunna se om dig."
+msgid "You can let other users see your online status information and your personal information. Please fill the information you would like other users to see about yourself."
+msgstr "Du kan låta andra användare se din anslutningsstatusinformation och din personliga information. Var god fyll i informationen du vill att andra ska kunna se om dig."
 
 msgid "Message of the Day"
 msgstr "Meddelande för dagen"
@@ -9840,9 +9051,7 @@
 msgstr "topic [&lt;nytt ämne&gt;]:  Visa eller ändra ämnet"
 
 msgid "join &lt;channel&gt; [&lt;password&gt;]:  Join a chat on this network"
-msgstr ""
-"join &lt;kanal&gt; [&lt;lösenord&gt;]:  Anslut till enn chatt på detta "
-"nätverk"
+msgstr "join &lt;kanal&gt; [&lt;lösenord&gt;]:  Anslut till enn chatt på detta nätverk"
 
 msgid "list:  List channels on this network"
 msgstr "list: Listar kanalerna på detta nätverk"
@@ -9851,14 +9060,10 @@
 msgstr "whois &lt;nick&gt;:  Visar information för nick"
 
 msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user"
-msgstr ""
-"msg &lt;nick&gt; &lt;meddelande&gt;:  Skicka ett privat meddelande till en "
-"användare"
+msgstr "msg &lt;nick&gt; &lt;meddelande&gt;:  Skicka ett privat meddelande till en användare"
 
 msgid "query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
-msgstr ""
-"query &lt;nick&gt; [&lt;meddelande&gt;]:  Skicka ett privat meddelande till "
-"en användare"
+msgstr "query &lt;nick&gt; [&lt;meddelande&gt;]:  Skicka ett privat meddelande till en användare"
 
 msgid "motd:  View the server's Message Of The Day"
 msgstr "motd:  Visar serverns Dagliga meddelande (MOTD)"
@@ -9881,19 +9086,11 @@
 msgid "whowas &lt;nick&gt;:  View nick's information"
 msgstr "whowas &lt;nick&gt;:  Visa information om nick"
 
-msgid ""
-"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display "
-"channel modes"
-msgstr ""
-"cmode &lt;kanal&gt; [+|-&lt;lägen&gt;] [argument]:  Ändra eller visa "
-"kanallägen"
-
-msgid ""
-"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes "
-"on channel"
-msgstr ""
-"cumode &lt;kanal&gt; +|-&lt;lägen&gt; &lt;nick&gt;:  Ändra lägen för nick på "
-"kanal"
+msgid "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display channel modes"
+msgstr "cmode &lt;kanal&gt; [+|-&lt;lägen&gt;] [argument]:  Ändra eller visa kanallägen"
+
+msgid "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes on channel"
+msgstr "cumode &lt;kanal&gt; +|-&lt;lägen&gt; &lt;nick&gt;:  Ändra lägen för nick på kanal"
 
 msgid "umode &lt;usermodes&gt;:  Set your modes in the network"
 msgstr "umode &lt;användarlägen&gt;:  Anger dina lägen på nätverket"
@@ -9901,12 +9098,8 @@
 msgid "oper &lt;nick&gt; [-pubkey]:  Get server operator privileges"
 msgstr "oper &lt;nick&gt; [-pubkey]:  Hämta serveroperatörprivilegier"
 
-msgid ""
-"invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from "
-"channel invite list"
-msgstr ""
-"invite &lt;kanal&gt; [-|+]&lt;nick&gt;:  bjud in nick eller lägg till/ta "
-"bort från kanalens inbjudningslista"
+msgid "invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from channel invite list"
+msgstr "invite &lt;kanal&gt; [-|+]&lt;nick&gt;:  bjud in nick eller lägg till/ta bort från kanalens inbjudningslista"
 
 msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]:  Kick client from channel"
 msgstr "kick &lt;kanal&gt; &lt;nick&gt; [kommentar]:  Sparka klient från kanal"
@@ -9918,8 +9111,7 @@
 msgstr "ban [&lt;kanal&gt; +|-&lt;nick&gt;]:  Banna klient från kanal"
 
 msgid "getkey &lt;nick|server&gt;:  Retrieve client's or server's public key"
-msgstr ""
-"getkey &lt;nick|server&gt;:  Hämta serverns eller klientens publika nyckel"
+msgstr "getkey &lt;nick|server&gt;:  Hämta serverns eller klientens publika nyckel"
 
 msgid "stats:  View server and network statistics"
 msgstr "stats:  Visa server och nätverksstatistik"
@@ -9930,12 +9122,8 @@
 msgid "users &lt;channel&gt;:  List users in channel"
 msgstr "users &lt;kanal&gt;:  Lista användare i kanal"
 
-msgid ""
-"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List "
-"specific users in channel(s)"
-msgstr ""
-"names [-count|-ops|-halfops|-voices|-normal] &lt;kanal(er)&gt;:  Lista "
-"specifika användare i kanal(er)"
+msgid "names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List specific users in channel(s)"
+msgstr "names [-count|-ops|-halfops|-voices|-normal] &lt;kanal(er)&gt;:  Lista specifika användare i kanal(er)"
 
 #. *< type
 #. *< ui_requirement
@@ -10072,12 +9260,8 @@
 msgstr "%s sände meddelanden till whiteboard. Vill du öppna whiteboarden?"
 
 #, c-format
-msgid ""
-"%s sent message to whiteboard on %s channel. Would you like to open the "
-"whiteboard?"
-msgstr ""
-"%s sände ett meddelande till vita tavlan i kanal %s. Vill du öppna den vita "
-"tavlan?"
+msgid "%s sent message to whiteboard on %s channel. Would you like to open the whiteboard?"
+msgstr "%s sände ett meddelande till vita tavlan i kanal %s. Vill du öppna den vita tavlan?"
 
 msgid "Whiteboard"
 msgstr "Whiteboard"
@@ -10094,8 +9278,7 @@
 
 #, c-format
 msgid "Failure: Remote does not trust/support your public key"
-msgstr ""
-"Misslyckande: Fjärrdatorn litar inte på/stödjer inte din publika nyckel"
+msgstr "Misslyckande: Fjärrdatorn litar inte på/stödjer inte din publika nyckel"
 
 #, c-format
 msgid "Failure: Remote does not support proposed KE group"
@@ -10227,8 +9410,8 @@
 msgid "Ignore conference and chatroom invitations"
 msgstr "Ignorera inbjudningar till konferenser och chatrum"
 
-msgid "Use account proxy for SSL connections"
-msgstr "Använd kontoproxy för SSL-anslutningar"
+msgid "Use account proxy for HTTP and HTTPS connections"
+msgstr "Använd kontoproxy för HTTP och HTTPS-anslutningar"
 
 msgid "Chat room list URL"
 msgstr "URL för chattrumlista"
@@ -10264,18 +9447,12 @@
 msgstr "Yahoo!-systemmeddelande till %s:"
 
 #, c-format
-msgid ""
-"%s has (retroactively) denied your request to add them to your list for the "
-"following reason: %s."
-msgstr ""
-"%s har (retroaktivt) nekat din förfrågan att lägga till henne/honom till din "
-"kontaktlista med följande motivering: %s."
+msgid "%s has (retroactively) denied your request to add them to your list for the following reason: %s."
+msgstr "%s har (retroaktivt) nekat din förfrågan att lägga till henne/honom till din kontaktlista med följande motivering: %s."
 
 #, c-format
 msgid "%s has (retroactively) denied your request to add them to your list."
-msgstr ""
-"%s har (retroaktivt) nekat din att lägga till henne/honom till din "
-"kontaktlista."
+msgstr "%s har (retroaktivt) nekat din att lägga till henne/honom till din kontaktlista."
 
 msgid "Add buddy rejected"
 msgstr "Lägg till kompisavvisning"
@@ -10285,53 +9462,31 @@
 msgstr "Tog emot felaktig data"
 
 #. security lock from too many failed login attempts
-msgid ""
-"Account locked: Too many failed login attempts.  Logging into the Yahoo! "
-"website may fix this."
-msgstr ""
-"Kontot låst: För många inloggningsförsök.  Logga in på Yahoo!s hemsida kan "
-"fixa detta."
+msgid "Account locked: Too many failed login attempts.  Logging into the Yahoo! website may fix this."
+msgstr "Kontot låst: För många inloggningsförsök.  Logga in på Yahoo!s hemsida kan fixa detta."
 
 #. indicates a lock of some description
-msgid ""
-"Account locked: Unknown reason.  Logging into the Yahoo! website may fix "
-"this."
-msgstr ""
-"Kontot låst: Okänd anledning.  Logga in på Yahoo!s hemsida kan fixa detta."
+msgid "Account locked: Unknown reason.  Logging into the Yahoo! website may fix this."
+msgstr "Kontot låst: Okänd anledning.  Logga in på Yahoo!s hemsida kan fixa detta."
 
 #. 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 ""
-"Kontot låst: För många inloggningsförsök.  Logga in på Yahoo!s hemsida kan "
-"fixa detta."
+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 "Kontot låst: För många inloggningsförsök på för kort tid.  Vänta några minuter innan du försöker igen.  Logga in på Yahoo!s hemsida kan fixa detta."
 
 #. username or password missing
 msgid "Username or password missing"
 msgstr "Användarnamn eller lösenord saknas"
 
 #, c-format
-msgid ""
-"The Yahoo server has requested the use of an unrecognized authentication "
-"method.  You will probably not be able to successfully sign on to Yahoo.  "
-"Check %s for updates."
-msgstr ""
-"Yahoo-servern har begärt att en okänd autentisering ska användas. Du kommer "
-"antagligen inte lyckas med att ansluta till Yahoo. Kontrollera om det finns "
-"uppdateringar på %s."
+msgid "The Yahoo server has requested the use of an unrecognized authentication method.  You will probably not be able to successfully sign on to Yahoo.  Check %s for updates."
+msgstr "Yahoo-servern har begärt att en okänd autentisering ska användas. Du kommer antagligen inte lyckas med att ansluta till Yahoo. Kontrollera om det finns uppdateringar på %s."
 
 msgid "Failed Yahoo! Authentication"
 msgstr "Misslyckad Yahoo!-autentisering"
 
 #, c-format
-msgid ""
-"You have tried to ignore %s, but the user is on your buddy list.  Clicking "
-"\"Yes\" will remove and ignore the buddy."
-msgstr ""
-"Du har försökt ignorera %s men hon/han finns i din kompislista. Genom att "
-"klicka \"Ja\" tar du bort och blockerar kompisen."
+msgid "You have tried to ignore %s, but the user is on your buddy list.  Clicking \"Yes\" will remove and ignore the buddy."
+msgstr "Du har försökt ignorera %s men hon/han finns i din kompislista. Genom att klicka \"Ja\" tar du bort och blockerar kompisen."
 
 msgid "Ignore buddy?"
 msgstr "Ignorera kompis?"
@@ -10339,24 +9494,15 @@
 msgid "Invalid username or password"
 msgstr "Felaktigt användarnamn eller lösenord"
 
-msgid ""
-"Your account has been locked due to too many failed login attempts.  Please "
-"try logging into the Yahoo! website."
-msgstr ""
-"Ditt kontot har låsts på grund av för många inloggningsförsök.  Försök att "
-"logga in på Yahoo!s hemsida."
+msgid "Your account has been locked due to too many failed login attempts.  Please try logging into the Yahoo! website."
+msgstr "Ditt kontot har låsts på grund av för många inloggningsförsök.  Försök att logga in på Yahoo!s hemsida."
 
 #, c-format
 msgid "Unknown error 52.  Reconnecting should fix this."
 msgstr "Okänt fel 52. En återanslutning borde fixa detta."
 
-msgid ""
-"Error 1013: The username you have entered is invalid.  The most common cause "
-"of this error is entering your email address instead of your Yahoo! ID."
-msgstr ""
-"Fel 1013: Användarnamnet du har angivit är ogiltigt.  Den vanligaste "
-"anledningen till detta är att du angett din epost-adress istället flr ditt "
-"Yahoo! ID."
+msgid "Error 1013: The username you have entered is invalid.  The most common cause of this error is entering your email address instead of your Yahoo! ID."
+msgstr "Fel 1013: Användarnamnet du har angivit är ogiltigt.  Den vanligaste anledningen till detta är att du angett din epost-adress istället flr ditt Yahoo! ID."
 
 #, c-format
 msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
@@ -10384,16 +9530,11 @@
 msgid "Unable to establish a connection with %s: %s"
 msgstr "Kunde inte skapa en anslutning med %s: %s"
 
-#, fuzzy
 msgid "Unable to connect: The server returned an empty response."
-msgstr ""
-"Kunde inte ansluta till MXit-servern. Var god undersök dina "
-"serverinställningar."
-
-msgid ""
-"Unable to connect: The server's response did not contain the necessary "
-"information"
-msgstr ""
+msgstr "Kunde inte ansluta: Servern angav ett tomt svar."
+
+msgid "Unable to connect: The server's response did not contain the necessary information"
+msgstr "Kunde inte ansluta: Serversvaret innehöll inte den nödvändiga informationen"
 
 msgid "Not at Home"
 msgstr "Inte hemma"
@@ -10489,14 +9630,10 @@
 msgid "Yahoo! Profile"
 msgstr "Yahoo! Profil"
 
-msgid ""
-"Sorry, profiles marked as containing adult content are not supported at this "
-"time."
+msgid "Sorry, profiles marked as containing adult content are not supported at this time."
 msgstr "Profiler märkta att innehålla vuxeninnehåll stöds ännu inte."
 
-msgid ""
-"If you wish to view this profile, you will need to visit this link in your "
-"web browser:"
+msgid "If you wish to view this profile, you will need to visit this link in your web browser:"
 msgstr "Om du vill se denna profil måste du besöka länken i din webbläsare"
 
 msgid "Yahoo! ID"
@@ -10523,25 +9660,14 @@
 msgid "Last Update"
 msgstr "Senast uppdaterad"
 
-msgid ""
-"This profile is in a language or format that is not supported at this time."
+msgid "This profile is in a language or format that is not supported at this time."
 msgstr "Denna profil är i ett språk eller format som ännu inte stöds."
 
-msgid ""
-"Could not retrieve the user's profile. This most likely is a temporary "
-"server-side problem. Please try again later."
-msgstr ""
-"Kan inte hämta användarens profil. Detta är antagligen ett temporärt fel på "
-"servern. var god försök igen senare."
-
-msgid ""
-"Could not retrieve the user's profile. This most likely means that the user "
-"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 ""
-"Kunde inte hämta användarens profil. Detta beror antagligen på att "
-"användaren inte finns, men ibland hittar inte Yahoo! en användares profil. "
-"Om du vet att användaren finns: försök igen senare."
+msgid "Could not retrieve the user's profile. This most likely is a temporary server-side problem. Please try again later."
+msgstr "Kan inte hämta användarens profil. Detta är antagligen ett temporärt fel på servern. var god försök igen senare."
+
+msgid "Could not retrieve the user's profile. This most likely means that the user 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 "Kunde inte hämta användarens profil. Detta beror antagligen på att användaren inte finns, men ibland hittar inte Yahoo! en användares profil. Om du vet att användaren finns: försök igen senare."
 
 msgid "The user's profile is empty."
 msgstr "Användarens profil är tom."
@@ -10565,12 +9691,8 @@
 msgid "Not available"
 msgstr "Ej tillgänglig"
 
-msgid ""
-"Unknown error. You may need to logout and wait five minutes before being "
-"able to rejoin a chatroom"
-msgstr ""
-"Okänt fel. Du kanske behöver koppla från och vänta fem minuter före du kan "
-"ansluta till chatrummet igen"
+msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom"
+msgstr "Okänt fel. Du kanske behöver koppla från och vänta fem minuter före du kan ansluta till chatrummet igen"
 
 #, c-format
 msgid "You are now chatting in %s."
@@ -10603,12 +9725,8 @@
 msgid "Connection problem with the YCHT server"
 msgstr "Anslutningsproblem till YCHT-server"
 
-msgid ""
-"(There was an error converting this message.\t Check the 'Encoding' option "
-"in the Account Editor)"
-msgstr ""
-"(Det blev ett fel vid konverteringen av detta meddelande.\t Kontrollera "
-"Kodningsinställningen för kontot.)"
+msgid "(There was an error converting this message.\t Check the 'Encoding' option in the Account Editor)"
+msgstr "(Det blev ett fel vid konverteringen av detta meddelande.\t Kontrollera Kodningsinställningen för kontot.)"
 
 #, c-format
 msgid "Unable to send to chat %s,%s,%s"
@@ -10644,8 +9762,7 @@
 msgstr "zl &lt;nick&gt;: Lokalisera användare"
 
 msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
-msgstr ""
-"instance &lt;instance&gt;: Ange instanserna att användas med denna klass"
+msgstr "instance &lt;instance&gt;: Ange instanserna att användas med denna klass"
 
 msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
 msgstr "inst &lt;instance&gt;: Ange instanserna att användas med denna klass"
@@ -10654,39 +9771,22 @@
 msgstr "inst &lt;instance&gt;: Ange instanserna att användas med denna klass"
 
 msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
-msgstr ""
-"sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Anslut till en ny chatt"
-
-msgid ""
-"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
-msgstr ""
-"zi &lt;instance&gt;: Skicka ett meddelande till &lt;message,<i>instance</i>,"
-"*&gt;"
-
-msgid ""
-"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
-"<i>instance</i>,*&gt;"
-msgstr ""
-"zci &lt;class&gt; &lt;instance&gt;: Skicka ett meddelande till &lt;<i>class</"
-"i>,<i>instance</i>,*&gt;"
-
-msgid ""
-"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
-"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
-msgstr ""
-"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Skicka ett meddelande "
-"till &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
-
-msgid ""
-"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
-"<i>instance</i>,<i>recipient</i>&gt;"
-msgstr ""
-"zir &lt;instance&gt; &lt;recipient&gt;: Skicka ett meddelande till &lt;"
-"MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Anslut till en ny chatt"
+
+msgid "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr "zi &lt;instance&gt;: Skicka ett meddelande till &lt;message,<i>instance</i>,*&gt;"
+
+msgid "zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,*&gt;"
+msgstr "zci &lt;class&gt; &lt;instance&gt;: Skicka ett meddelande till &lt;<i>class</i>,<i>instance</i>,*&gt;"
+
+msgid "zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr "zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Skicka ett meddelande till &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+
+msgid "zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr "zir &lt;instance&gt; &lt;recipient&gt;: Skicka ett meddelande till &lt;MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"
 
 msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
-msgstr ""
-"zc &lt;class&gt;: Skicka ett meddelande till &lt;<i>class</i>,PERSONAL,*&gt;"
+msgstr "zc &lt;class&gt;: Skicka ett meddelande till &lt;<i>class</i>,PERSONAL,*&gt;"
 
 msgid "Resubscribe"
 msgstr "Återprenumerera"
@@ -10841,9 +9941,8 @@
 msgid "Extended away"
 msgstr "Utökad frånvaro"
 
-#, fuzzy
 msgid "Feeling"
-msgstr "Tar emot"
+msgstr "Mår"
 
 #, c-format
 msgid "%s (%s) changed status from %s to %s"
@@ -10938,12 +10037,8 @@
 msgstr "Felaktig inläsning från %s: svaret blev för långt (gräns på %d bytes)"
 
 #, c-format
-msgid ""
-"Unable to allocate enough memory to hold the contents from %s.  The web "
-"server may be trying something malicious."
-msgstr ""
-"Kunde inte allokera tillräckligt mycket minne för att hålla innehållet från "
-"%s. Webb-servern försöker kanske med något konstigt."
+msgid "Unable to allocate enough memory to hold the contents from %s.  The web server may be trying something malicious."
+msgstr "Kunde inte allokera tillräckligt mycket minne för att hålla innehållet från %s. Webb-servern försöker kanske med något konstigt."
 
 #, c-format
 msgid "Error reading from %s: %s"
@@ -10996,18 +10091,11 @@
 msgstr "Fel vid läsning av %s"
 
 #, c-format
-msgid ""
-"An error was encountered reading your %s.  The file has not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"Ett fel upptäcktes vid inläsandet av din %s. Filen har inte laddats och den "
-"gamla har blivit flyttad till %s~."
-
-msgid ""
-"Chat over IM.  Supports AIM, Google Talk, Jabber/XMPP, MSN, Yahoo and more"
-msgstr ""
-"Skicka snabbmeddelanden. Stödjer AIM, Google Talk, Jabber/XMPP, MSN, Yahoo "
-"med fler"
+msgid "An error was encountered reading your %s.  The file has not been loaded, and the old file has been renamed to %s~."
+msgstr "Ett fel upptäcktes vid inläsandet av din %s. Filen har inte laddats och den gamla har blivit flyttad till %s~."
+
+msgid "Chat over IM.  Supports AIM, Google Talk, Jabber/XMPP, MSN, Yahoo and more"
+msgstr "Skicka snabbmeddelanden. Stödjer AIM, Google Talk, Jabber/XMPP, MSN, Yahoo med fler"
 
 msgid "Internet Messenger"
 msgstr "Meddelandeklient"
@@ -11118,23 +10206,15 @@
 msgid ""
 "<span size='larger' weight='bold'>Welcome to %s!</span>\n"
 "\n"
-"You have no IM accounts configured. To start connecting with %s press the "
-"<b>Add...</b> button below and configure your first account. If you want %s "
-"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
-"them all.\n"
-"\n"
-"You can come back to this window to add, edit, or remove accounts from "
-"<b>Accounts->Manage Accounts</b> in the Buddy List window"
+"You have no IM accounts configured. To start connecting with %s press the <b>Add...</b> button below and configure your first account. If you want %s to connect to multiple IM accounts, press <b>Add...</b> again to configure them all.\n"
+"\n"
+"You can come back to this window to add, edit, or remove accounts from <b>Accounts->Manage Accounts</b> in the Buddy List window"
 msgstr ""
 "<span size='larger' weight='bold'>Välkommen till %s!</span>\n"
 "\n"
-"Du har inga IM-konton konfigurerade. För att påbörja en anslutning med %s så "
-"trycker du på knappen <b>Lägg till</b> nedanför och konfigurerar ditt första "
-"konto. Om du vill att %s ska ansluta till fler konton trycker du på <b>Lägg "
-"till</b> igen för att konfigurera dem alla.\n"
-"\n"
-"Du kan komma tillbaka till detta fönster för att lägga till, ändra eller ta "
-"bort konton från <b>Konton->Hantera konton</b> i kompislistans fönster"
+"Du har inga IM-konton konfigurerade. För att påbörja en anslutning med %s så trycker du på knappen <b>Lägg till</b> nedanför och konfigurerar ditt första konto. Om du vill att %s ska ansluta till fler konton trycker du på <b>Lägg till</b> igen för att konfigurera dem alla.\n"
+"\n"
+"Du kan komma tillbaka till detta fönster för att lägga till, ändra eller ta bort konton från <b>Konton->Hantera konton</b> i kompislistans fönster"
 
 #. Buddy List
 msgid "Background Color"
@@ -11244,32 +10324,20 @@
 msgid "Message (Nick Said) Text"
 msgstr "Meddelande (Smeknamn nämnt) Text"
 
-msgid ""
-"The text information for when a chat has an unread message that mentions "
-"your nickname"
-msgstr ""
-"Textinformationen för när en chatt har ett oläst meddelande som nämner ditt "
-"namn"
+msgid "The text information for when a chat has an unread message that mentions your nickname"
+msgstr "Textinformationen för när en chatt har ett oläst meddelande som nämner ditt namn"
 
 msgid "The text information for a buddy's status"
 msgstr "Textinformationen för en kompis status"
 
 #, c-format
 msgid "You have %d contact named %s. Would you like to merge them?"
-msgid_plural ""
-"You currently have %d contacts named %s. Would you like to merge them?"
+msgid_plural "You currently have %d contacts named %s. Would you like to merge them?"
 msgstr[0] "Du har för tillfället %d kontakt vid namn %s. Vill du slå ihop dem?"
-msgstr[1] ""
-"Du har för tillfället %d kontakter vid namn %s. Vill du slå ihop dem?"
-
-msgid ""
-"Merging these contacts will cause them to share a single entry on the buddy "
-"list and use a single conversation window. You can separate them again by "
-"choosing 'Expand' from the contact's context menu"
-msgstr ""
-"Slår du ihop dessa kontakter innebär det att de kommer dela på en post på "
-"din kompislista och använda ett konversationsfönster. Du kan separera dem "
-"igen genom att välja 'Expandera' från kontaktens omgivningsmeny"
+msgstr[1] "Du har för tillfället %d kontakter vid namn %s. Vill du slå ihop dem?"
+
+msgid "Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. You can separate them again by choosing 'Expand' from the contact's context menu"
+msgstr "Slår du ihop dessa kontakter innebär det att de kommer dela på en post på din kompislista och använda ett konversationsfönster. Du kan separera dem igen genom att välja 'Expandera' från kontaktens omgivningsmeny"
 
 msgid "Please update the necessary fields."
 msgstr "Var vänlig uppdatera de nödvändiga fälten."
@@ -11277,9 +10345,7 @@
 msgid "A_ccount"
 msgstr "_Konto"
 
-msgid ""
-"Please enter the appropriate information about the chat you would like to "
-"join.\n"
+msgid "Please enter the appropriate information about the chat you would like to join.\n"
 msgstr "Var god ange information om chatten du vill ansluta till.\n"
 
 msgid "Room _List"
@@ -11370,11 +10436,8 @@
 msgid "/Tools/Mute Sounds"
 msgstr "/Verktyg/Stäng av ljud"
 
-msgid ""
-"You are not currently signed on with an account that can add that buddy."
-msgstr ""
-"Du är för tillfället inte inloggad med något konto som kan lägga till den "
-"kompisen."
+msgid "You are not currently signed on with an account that can add that buddy."
+msgstr "Du är för tillfället inte inloggad med något konto som kan lägga till den kompisen."
 
 #. I don't believe this can happen currently, I think
 #. * everything that calls this function checks for one of the
@@ -11382,13 +10445,11 @@
 msgid "Unknown node type"
 msgstr "Okänd nodtyp"
 
-#, fuzzy
 msgid "Please select your mood from the list"
-msgstr "Ange ditt humör från listan."
-
-#, fuzzy
+msgstr "Ange ditt humör från listan"
+
 msgid "Message (optional)"
-msgstr "Alias (valfritt)"
+msgstr "Meddelande (valfritt)"
 
 msgid "Edit User Mood"
 msgstr "Redigera användarhumör"
@@ -11471,9 +10532,8 @@
 msgid "/Tools/Pr_ivacy"
 msgstr "/Verktyg/_Spärrlista"
 
-#, fuzzy
 msgid "/Tools/Set _Mood"
-msgstr "/Verktyg/Visa _systemlogg"
+msgstr "/Verktyg/Ange Hu_mör"
 
 msgid "/Tools/_File Transfers"
 msgstr "/Verktyg/_Filöverföringar"
@@ -11629,12 +10689,9 @@
 
 #, c-format
 msgid "%d account was disabled because you signed on from another location:"
-msgid_plural ""
-"%d accounts were disabled because you signed on from another location:"
-msgstr[0] ""
-"%d konto inaktiverades eftersom du anslöt till kontot från en annan dator."
-msgstr[1] ""
-"%d konton inaktiverades eftersom du anslöt till kontona från en annan dator."
+msgid_plural "%d accounts were disabled because you signed on from another location:"
+msgstr[0] "%d konto inaktiverades eftersom du anslöt till kontot från en annan dator."
+msgstr[1] "%d konton inaktiverades eftersom du anslöt till kontona från en annan dator."
 
 msgid "<b>Username:</b>"
 msgstr "<b>Användarnamn:</b>"
@@ -11653,16 +10710,11 @@
 msgid ""
 "<span weight='bold' size='larger'>Welcome to %s!</span>\n"
 "\n"
-"You have no accounts enabled. Enable your IM accounts from the <b>Accounts</"
-"b> window at <b>Accounts->Manage Accounts</b>. Once you enable accounts, "
-"you'll be able to sign on, set your status, and talk to your friends."
+"You have no accounts enabled. Enable your IM accounts from the <b>Accounts</b> window at <b>Accounts->Manage Accounts</b>. Once you enable accounts, you'll be able to sign on, set your status, and talk to your friends."
 msgstr ""
 "<span weight='bold' size='larger'>Välkommen till %s!</span>\n"
 "\n"
-"Du har inga konton aktiverade. Aktivera dina IM-konton från fönstret "
-"<b>Konton</b> vid <b>Konton->Hantera konton</b>. Så snart du har aktiverat "
-"dina konton kommer du kunna logga in, välja en status och prata med dina "
-"vänner."
+"Du har inga konton aktiverade. Aktivera dina IM-konton från fönstret <b>Konton</b> vid <b>Konton->Hantera konton</b>. Så snart du har aktiverat dina konton kommer du kunna logga in, välja en status och prata med dina vänner."
 
 #. set the Show Offline Buddies option. must be done
 #. * after the treeview or faceprint gets mad. -Robot101
@@ -11697,18 +10749,11 @@
 msgid "This protocol does not support chat rooms."
 msgstr "Protokollet stödjer inte chattrum."
 
-msgid ""
-"You are not currently signed on with any protocols that have the ability to "
-"chat."
-msgstr ""
-"Du är för tillfället inte inloggad med något protokoll som erbjuder chatt."
-
-msgid ""
-"Please enter an alias, and the appropriate information about the chat you "
-"would like to add to your buddy list.\n"
-msgstr ""
-"Ange information och alias för den chatt som du vill lägga till i din "
-"kompislista.\n"
+msgid "You are not currently signed on with any protocols that have the ability to chat."
+msgstr "Du är för tillfället inte inloggad med något protokoll som erbjuder chatt."
+
+msgid "Please enter an alias, and the appropriate information about the chat you would like to add to your buddy list.\n"
+msgstr "Ange information och alias för den chatt som du vill lägga till i din kompislista.\n"
 
 msgid "A_lias:"
 msgstr "A_lias:"
@@ -11737,9 +10782,8 @@
 msgid "_Edit Account"
 msgstr "_Ändra konto"
 
-#, fuzzy
 msgid "Set _Mood..."
-msgstr "Ange humör..."
+msgstr "Ange hu_mör..."
 
 msgid "No actions available"
 msgstr "Inga åtgärder tillgängliga"
@@ -11766,11 +10810,8 @@
 msgid "That buddy is not on the same protocol as this chat."
 msgstr "Den kompisen använder inte samma protokoll som denna chatt."
 
-msgid ""
-"You are not currently signed on with an account that can invite that buddy."
-msgstr ""
-"Du är för tillfället inte inloggad med något konto som kan bjuda in den "
-"kompisen."
+msgid "You are not currently signed on with an account that can invite that buddy."
+msgstr "Du är för tillfället inte inloggad med något konto som kan bjuda in den kompisen."
 
 msgid "Invite Buddy Into Chat Room"
 msgstr "Bjud in kompis till chattrum"
@@ -12016,13 +11057,11 @@
 msgid "0 people in room"
 msgstr "0 personer i rummet"
 
-#, fuzzy
 msgid "Close Find bar"
-msgstr "Stäng denna flik"
-
-#, fuzzy
+msgstr "Stäng sökfält"
+
 msgid "Find:"
-msgstr "Sök"
+msgstr "Sök:"
 
 #, c-format
 msgid "%d person in room"
@@ -12437,61 +11476,29 @@
 msgid "Lithuanian"
 msgstr "Lettländska"
 
-#, fuzzy, 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 "
-"is released, and may be modified and redistributed,  under the terms of the "
-"GPL version 2 (or later).  A copy of the GPL is distributed with %s.  %s is "
-"copyrighted by its contributors, a list of whom is also distributed with "
-"%s.  There is no warranty for %s.<BR><BR>"
-msgstr ""
-"%s är en grafisk modulär meddelandeklient baserad på libpurple som kan "
-"ansluta till AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell "
-"GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu och QQ "
-"samtidigt.  Det är skrivet för GTK+.<BR><BR>Du kan ändra och distribuera "
-"programmet enligt GPL (version 2 eller senare).  En kopia av GPL finns i "
-"filen 'COPYING' som kommer med %s.  %s är kopieringsskyddad av dess "
-"bidragsgivare.  Se filen 'COPYRIGHT' för en komplett lista av "
-"bidragsgivare.  Vi ger inga garantier för detta program.<BR><BR>"
-
-#, c-format
-msgid ""
-"<FONT SIZE=\"4\"><B>Helpful Resources</B></FONT><BR>\t<A HREF=\"%s"
-"\">Website</A><BR>\t<A HREF=\"%s\">Frequently Asked Questions</A><BR>\tIRC "
-"Channel: #pidgin on irc.freenode.net<BR>\tXMPP MUC: devel@conference.pidgin."
-"im<BR><BR>"
-msgstr ""
-
-#, fuzzy, 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/"
-">This is a <b>public</b> mailing list! (<a href=\"http://pidgin.im/pipermail/"
-"support/\">archive</a>)<br/>We can't help with third-party protocols or "
-"plugins!<br/>This list's primary language is <b>English</b>.  You are "
-"welcome to post in another language, but the responses may be less helpful."
-"<br/>"
-msgstr ""
-"<font size=\"4\">Hjälp från andra Pidgin-användare:</font> <a href=\"mailto:"
-"support@pidgin.im\">support@pidgin.im</a><br/>Detta är en <b>publik</b> "
-"epostlista! (<a href=\"http://pidgin.im/pipermail/support/\">arkiv</a>)<br/"
-">Vi kan inte hjälpa dig med 3:djepartsmoduler och protokoll!<br/>Listans "
-"huvudspråk är <b>Engelska</b>.  Du är välkommen att skriva i ett annat "
-"språk, men svaren kan vara mindre hjälpsamma.<br/><br/>"
+#, 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 is released, and may be modified and redistributed,  under the terms of the GPL version 2 (or later).  A copy of the GPL is distributed with %s.  %s is copyrighted by its contributors, a list of whom is also distributed with %s.  There is no warranty for %s.<BR><BR>"
+msgstr "%s är en meddelandeklient baserad på libpurple som kan ansluta till flera meddelande-protokoll samtidigt.  %s är skriveti C och använder GTK+. %s är släppt under, kan ändras och distrubieras enligt GPL version 2 (eller senare).  En kopia av GPL kommer med %s.  %s är kopieringsskyddad av dess bidragsgivare, en lista av dessa är distrubierad med %s.  Det finns inga garantier för %s.<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\"><B>Helpful Resources</B></FONT><BR>\t<A HREF=\"%s\">Website</A><BR>\t<A HREF=\"%s\">Frequently Asked Questions</A><BR>\tIRC Channel: #pidgin on irc.freenode.net<BR>\tXMPP MUC: devel@conference.pidgin.im<BR><BR>"
+msgstr ""
+
+#, 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/>This is a <b>public</b> mailing list! (<a href=\"http://pidgin.im/pipermail/support/\">archive</a>)<br/>We can't help with third-party protocols or plugins!<br/>This list's primary language is <b>English</b>.  You are welcome to post in another language, but the responses may be less helpful.<br/>"
+msgstr "<font size=\"4\"><b>Hjälp från andra Pidgin-användare</b></font> finns tillgänglig genom att eposta <a href=\"mailto:support@pidgin.im\">support@pidgin.im</a><br/>Detta är en <b>publik</b> epostlista! (<a href=\"http://pidgin.im/pipermail/support/\">arkiv</a>)<br/>Vi kan inte hjälpa dig med 3:djepartsmoduler och protokoll!<br/>Listans huvudspråk är <b>Engelska</b>.  Du är välkommen att skriva i ett annat språk, men svaren kan vara mindre hjälpsamma.<br/><br/>"
 
 #, c-format
 msgid "About %s"
 msgstr "Om %s"
 
-#, fuzzy
 msgid "Build Information"
-msgstr "Information om kompis"
+msgstr "Bygg-information"
 
 #. End of not to be translated section
-#, fuzzy, c-format
+#, c-format
 msgid "%s Build Information"
-msgstr "Information om kompis"
+msgstr "%s Bygg-information"
 
 msgid "Current Developers"
 msgstr "Nuvarande utvecklare"
@@ -12505,9 +11512,9 @@
 msgid "Retired Crazy Patch Writers"
 msgstr "Före detta galna patchskrivare"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Developer Information"
-msgstr "Serverinformation"
+msgstr "%s utvecklarinformation"
 
 msgid "Current Translators"
 msgstr "Nuvarande översättare"
@@ -12515,9 +11522,9 @@
 msgid "Past Translators"
 msgstr "Före detta översättare"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s Translator Information"
-msgstr "Mer information"
+msgstr "%s översättarinformation"
 
 msgid "_Name"
 msgstr "_Namn"
@@ -12528,12 +11535,8 @@
 msgid "Get User Info"
 msgstr "Hämta användarinformation"
 
-msgid ""
-"Please enter the username or alias of the person whose info you would like "
-"to view."
-msgstr ""
-"Ange användarnamnet eller aliaset för den person vars information du vill "
-"visa."
+msgid "Please enter the username or alias of the person whose info you would like to view."
+msgstr "Ange användarnamnet eller aliaset för den person vars information du vill visa."
 
 msgid "View User Log"
 msgstr "Visa användarlogg"
@@ -12558,18 +11561,10 @@
 msgstr "Ange ett alias för denna chatt."
 
 #, c-format
-msgid ""
-"You are about to remove the contact containing %s and %d other buddy from "
-"your buddy list.  Do you want to continue?"
-msgid_plural ""
-"You are about to remove the contact containing %s and %d other buddies from "
-"your buddy list.  Do you want to continue?"
-msgstr[0] ""
-"Du håller på att ta bort kontakten som innehåller %s och %d annan kompis "
-"från din kompislista. Vill du fortsätta?"
-msgstr[1] ""
-"Du håller på att ta bort kontakten som innehåller %s och %d andra kompisar "
-"från din kompislista. Vill du fortsätta?"
+msgid "You are about to remove the contact containing %s and %d other buddy from your buddy list.  Do you want to continue?"
+msgid_plural "You are about to remove the contact containing %s and %d other buddies from your buddy list.  Do you want to continue?"
+msgstr[0] "Du håller på att ta bort kontakten som innehåller %s och %d annan kompis från din kompislista. Vill du fortsätta?"
+msgstr[1] "Du håller på att ta bort kontakten som innehåller %s och %d andra kompisar från din kompislista. Vill du fortsätta?"
 
 msgid "Remove Contact"
 msgstr "Ta bort kontakt"
@@ -12578,11 +11573,8 @@
 msgstr "Ta bo_rt kontakt"
 
 #, c-format
-msgid ""
-"You are about to merge the group called %s into the group called %s. Do you "
-"want to continue?"
-msgstr ""
-"Du håller på att slå ihop gruppen %s med gruppen %s. Vill du fortsätta?"
+msgid "You are about to merge the group called %s into the group called %s. Do you want to continue?"
+msgstr "Du håller på att slå ihop gruppen %s med gruppen %s. Vill du fortsätta?"
 
 msgid "Merge Groups"
 msgstr "Slå ihop grupper"
@@ -12591,12 +11583,8 @@
 msgstr "_Slå ihop grupper"
 
 #, c-format
-msgid ""
-"You are about to remove the group %s and all its members from your buddy "
-"list.  Do you want to continue?"
-msgstr ""
-"Du håller på att ta bort gruppen %s och alla dess medlemmar från din "
-"kompislista. Vill du fortsätta?"
+msgid "You are about to remove the group %s and all its members from your buddy list.  Do you want to continue?"
+msgstr "Du håller på att ta bort gruppen %s och alla dess medlemmar från din kompislista. Vill du fortsätta?"
 
 msgid "Remove Group"
 msgstr "Ta bort grupp"
@@ -12605,8 +11593,7 @@
 msgstr "Ta bo_rt grupp"
 
 #, c-format
-msgid ""
-"You are about to remove %s from your buddy list.  Do you want to continue?"
+msgid "You are about to remove %s from your buddy list.  Do you want to continue?"
 msgstr "Du håller på att ta bort %s från din kompislista. Vill du fortsätta?"
 
 msgid "Remove Buddy"
@@ -12616,11 +11603,8 @@
 msgstr "Ta bo_rt kompis"
 
 #, c-format
-msgid ""
-"You are about to remove the chat %s from your buddy list.  Do you want to "
-"continue?"
-msgstr ""
-"Du håller på att ta bort chatten %s från din kompislista. Vill du fortsätta?"
+msgid "You are about to remove the chat %s from your buddy list.  Do you want to continue?"
+msgstr "Du håller på att ta bort chatten %s från din kompislista. Vill du fortsätta?"
 
 msgid "Remove Chat"
 msgstr "Ta bort chatt"
@@ -12677,8 +11661,7 @@
 msgstr "<b>Skickar som:</b>"
 
 msgid "There is no application configured to open this type of file."
-msgstr ""
-"Det finns ingen applikation konfigurerad att öppna den här typen av fil."
+msgstr "Det finns ingen applikation konfigurerad att öppna den här typen av fil."
 
 msgid "An error occurred while opening the file."
 msgstr "Ett fel uppstod när filen öppnades."
@@ -12764,9 +11747,7 @@
 msgstr "\"Uppmärksam\" Namnfärg"
 
 msgid "Color to draw the name of a message you received containing your name."
-msgstr ""
-"Färg att rita namner på ett meddelande som du tagit emot och som innehåller "
-"ditt namn."
+msgstr "Färg att rita namner på ett meddelande som du tagit emot och som innehåller ditt namn."
 
 msgid "Action Message Name Color"
 msgstr "Färg på namn i Actionmeddelanden"
@@ -12844,12 +11825,8 @@
 msgid "_Description"
 msgstr "_Beskrivning"
 
-msgid ""
-"Please enter the URL and description of the link that you want to insert. "
-"The description is optional."
-msgstr ""
-"Ange URL och beskrivning av länken du vill infoga. Beskrivningen är inte "
-"obligatorisk."
+msgid "Please enter the URL and description of the link that you want to insert. The description is optional."
+msgstr "Ange URL och beskrivning av länken du vill infoga. Beskrivningen är inte obligatorisk."
 
 msgid "Please enter the URL of the link that you want to insert."
 msgstr "Ange URL för länken du vill infoga."
@@ -12872,8 +11849,7 @@
 "This smiley is disabled because a custom smiley exists for this shortcut:\n"
 " %s"
 msgstr ""
-"Denna smileyn är avaktiverad eftersom en egendefinierad smiley redan "
-"existerar för denna genväg:\n"
+"Denna smileyn är avaktiverad eftersom en egendefinierad smiley redan existerar för denna genväg:\n"
 " %s"
 
 msgid "Smile!"
@@ -12987,28 +11963,16 @@
 msgstr "Undersök rättigheter och försök igen."
 
 #, c-format
-msgid ""
-"Are you sure you want to permanently delete the log of the conversation with "
-"%s which started at %s?"
-msgstr ""
-"Är du säker på att du vill permanent ta bort historiken över "
-"konversationerna med %s som påbörjades vid %s?"
-
-#, c-format
-msgid ""
-"Are you sure you want to permanently delete the log of the conversation in "
-"%s which started at %s?"
-msgstr ""
-"Är du säker på att du vill permanent ta bort historiken över konversationer "
-"i %s som påbörjades vid %s"
-
-#, c-format
-msgid ""
-"Are you sure you want to permanently delete the system log which started at "
-"%s?"
-msgstr ""
-"Är du säker på att du vill permanent ta bort systemloggen vilken startades "
-"vid %s?"
+msgid "Are you sure you want to permanently delete the log of the conversation with %s which started at %s?"
+msgstr "Är du säker på att du vill permanent ta bort historiken över konversationerna med %s som påbörjades vid %s?"
+
+#, c-format
+msgid "Are you sure you want to permanently delete the log of the conversation in %s which started at %s?"
+msgstr "Är du säker på att du vill permanent ta bort historiken över konversationer i %s som påbörjades vid %s"
+
+#, c-format
+msgid "Are you sure you want to permanently delete the system log which started at %s?"
+msgstr "Är du säker på att du vill permanent ta bort systemloggen vilken startades vid %s?"
 
 msgid "Delete Log?"
 msgstr "Ta bort logg?"
@@ -13071,8 +12035,7 @@
 msgstr ""
 "aktivera valda konton (det ej obligatoriska argumentet NAMN\n"
 "                      specificerar en kommaseparerad lista av konton.\n"
-"                      Utan denna lista kommer enbart det första kontot "
-"aktiveras)."
+"                      Utan denna lista kommer enbart det första kontot aktiveras)."
 
 msgid "X display to use"
 msgstr "X displayen att använda"
@@ -13155,8 +12118,7 @@
 msgid "Error launching \"%s\": %s"
 msgstr "Fel vid körning av \"%s\": %s"
 
-msgid ""
-"The 'Manual' browser command has been chosen, but no command has been set."
+msgid "The 'Manual' browser command has been chosen, but no command has been set."
 msgstr "Manuellt webbläsarkommando har valts, men inget kommando angivits."
 
 msgid "No message"
@@ -13189,12 +12151,8 @@
 msgid "Could not unload plugin"
 msgstr "Kunde inte stoppa insticksmodulen"
 
-msgid ""
-"The plugin could not be unloaded now, but will be disabled at the next "
-"startup."
-msgstr ""
-"Insticksmodulen kunde inte stoppas, men den kommer att vara inaktiverad "
-"nästan uppstart."
+msgid "The plugin could not be unloaded now, but will be disabled at the next startup."
+msgstr "Insticksmodulen kunde inte stoppas, men den kommer att vara inaktiverad nästan uppstart."
 
 #, c-format
 msgid ""
@@ -13364,8 +12322,7 @@
 #. Instructions
 msgid ""
 "Select a theme that you would like to use from the lists below.\n"
-"New themes can be installed by dragging and dropping them onto the theme "
-"list."
+"New themes can be installed by dragging and dropping them onto the theme list."
 msgstr ""
 "Välj ett tema som du vill använda i listan nedan.\n"
 "Nya teman kan installeras genom att släppas i listan över teman."
@@ -13483,12 +12440,8 @@
 msgid "Default Formatting"
 msgstr "Förvald Formatering"
 
-msgid ""
-"This is how your outgoing message text will appear when you use protocols "
-"that support formatting."
-msgstr ""
-"Så här kommer texten i ditt utgående meddelande att se ut när du använder "
-"ett protokoll som stödjer formatering."
+msgid "This is how your outgoing message text will appear when you use protocols that support formatting."
+msgstr "Så här kommer texten i ditt utgående meddelande att se ut när du använder ett protokoll som stödjer formatering."
 
 msgid "Cannot start proxy configuration program."
 msgstr "Kan inte starta konfigurationsprogrammet för proxy."
@@ -13849,8 +12802,7 @@
 msgstr "_Lägg till chatt"
 
 msgid "Are you sure you want to delete the selected saved statuses?"
-msgstr ""
-"Är du säker på att du vill ta bort den valda sparade statusinställningen?"
+msgstr "Är du säker på att du vill ta bort den valda sparade statusinställningen?"
 
 #. Use button
 msgid "_Use"
@@ -13881,11 +12833,8 @@
 msgstr "Status för %s"
 
 #, c-format
-msgid ""
-"A custom smiley for '%s' already exists.  Please use a different shortcut."
-msgstr ""
-"En egen smiley för '%s' existerar redan. Var vänlig ange en annorlunda "
-"genväg."
+msgid "A custom smiley for '%s' already exists.  Please use a different shortcut."
+msgstr "En egen smiley för '%s' existerar redan. Var vänlig ange en annorlunda genväg."
 
 msgid "Custom Smiley"
 msgstr "Egen Smiley"
@@ -13955,21 +12904,14 @@
 msgstr "Kan inte skicka mappen %s."
 
 #, c-format
-msgid ""
-"%s cannot transfer a folder. You will need to send the files within "
-"individually."
-msgstr ""
-"%s kan inte överföra en mapp. Du måste skicka filerna inuti den en och en"
+msgid "%s cannot transfer a folder. You will need to send the files within individually."
+msgstr "%s kan inte överföra en mapp. Du måste skicka filerna inuti den en och en"
 
 msgid "You have dragged an image"
 msgstr "Du har dragit och släppt en bild"
 
-msgid ""
-"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 ""
-"Du kan skicka bilden via filöverföring, infoga den i detta meddelande, eller "
-"använda den som kompisikon för denna användare."
+msgid "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 "Du kan skicka bilden via filöverföring, infoga den i detta meddelande, eller använda den som kompisikon för denna användare."
 
 msgid "Set as buddy icon"
 msgstr "Använd som kompisikon"
@@ -13983,19 +12925,11 @@
 msgid "Would you like to set it as the buddy icon for this user?"
 msgstr "Vill du använda den som kompisikon för denna användare?"
 
-msgid ""
-"You can send this image as a file transfer, or use it as the buddy icon for "
-"this user."
-msgstr ""
-"Du kan skicka bilden via filöverföring eller använda den som kompisikon för "
-"denna användare."
-
-msgid ""
-"You can insert this image into this message, or use it as the buddy icon for "
-"this user"
-msgstr ""
-"Du kan infoga bilden i detta meddelande eller använda den som kompisikon för "
-"denna användare"
+msgid "You can send this image as a file transfer, or use it as the buddy icon for this user."
+msgstr "Du kan skicka bilden via filöverföring eller använda den som kompisikon för denna användare."
+
+msgid "You can insert this image into this message, or use it as the buddy icon for this user"
+msgstr "Du kan infoga bilden i detta meddelande eller använda den som kompisikon för denna användare"
 
 #. 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
@@ -14008,12 +12942,8 @@
 msgid "Cannot send launcher"
 msgstr "Kan inte skicka startare"
 
-msgid ""
-"You dragged a desktop launcher. Most likely you wanted to send the target of "
-"this launcher instead of this launcher itself."
-msgstr ""
-"Du drog en skrivbordsstartare. Antagligen ville du skicka vad som startaren "
-"pekar på istället för startaren själv."
+msgid "You dragged a desktop launcher. Most likely you wanted to send the target of this launcher instead of this launcher itself."
+msgstr "Du drog en skrivbordsstartare. Antagligen ville du skicka vad som startaren pekar på istället för startaren själv."
 
 #, c-format
 msgid ""
@@ -14059,9 +12989,8 @@
 msgid "_Save File"
 msgstr "_Spara fil"
 
-#, fuzzy
 msgid "Do you really want to clear?"
-msgstr "Är du säker på att du vill ta bort %s?"
+msgstr "Är du säker på att du vill rensa?"
 
 msgid "Select color"
 msgstr "Välj färg"
@@ -14171,12 +13100,8 @@
 msgid "Point values to use when..."
 msgstr "Poängvärden att använda när..."
 
-msgid ""
-"The buddy with the <i>largest score</i> is the buddy who will have priority "
-"in the contact.\n"
-msgstr ""
-"Kompisen med den <i>största poängen</i> är den kompisen som kommer ha "
-"prioritet i kontakten.\n"
+msgid "The buddy with the <i>largest score</i> is the buddy who will have priority in the contact.\n"
+msgstr "Kompisen med den <i>största poängen</i> är den kompisen som kommer ha prioritet i kontakten.\n"
 
 msgid "Use last buddy when scores are equal"
 msgstr "Använd senaste kompisen då poängen är samma"
@@ -14196,18 +13121,12 @@
 #. *< name
 #. *< version
 #. *< summary
-msgid ""
-"Allows for controlling the values associated with different buddy states."
-msgstr ""
-"Ger möjlighet att kontrollera värdena associerade med olika kompisstatusar."
+msgid "Allows for controlling the values associated with different buddy states."
+msgstr "Ger möjlighet att kontrollera värdena associerade med olika kompisstatusar."
 
 #. *< description
-msgid ""
-"Allows for changing the point values of idle/away/offline states for buddies "
-"in contact priority computations."
-msgstr ""
-"Ger möjlighet att ändra poängvärdena på inaktiv/frånvarande/utloggad-status "
-"för kompisar som konkurerar om kontaktprioritet."
+msgid "Allows for changing the point values of idle/away/offline states for buddies in contact priority computations."
+msgstr "Ger möjlighet att ändra poängvärdena på inaktiv/frånvarande/utloggad-status för kompisar som konkurerar om kontaktprioritet."
 
 msgid "Conversation Colors"
 msgstr "Konversationsfärger"
@@ -14299,12 +13218,8 @@
 msgid "Allows browsing and registering services."
 msgstr "Tillåter att bläddra och registrera service."
 
-msgid ""
-"This plugin is useful for registering with legacy transports or other XMPP "
-"services."
-msgstr ""
-"Denna modul är användbar för registrering till äldre transportörer eller "
-"andra XMPP-tjänster."
+msgid "This plugin is useful for registering with legacy transports or other XMPP services."
+msgstr "Denna modul är användbar för registrering till äldre transportörer eller andra XMPP-tjänster."
 
 msgid "By conversation count"
 msgstr "Efter konversationsantal"
@@ -14313,12 +13228,8 @@
 msgstr "Konversationsplacering"
 
 #. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
-msgid ""
-"Note: The preference for \"New conversations\" must be set to \"By "
-"conversation count\"."
-msgstr ""
-"Observera: Inställningen för \"Nya konversationer\" måste vara \"Efter "
-"konversationsantal\"."
+msgid "Note: The preference for \"New conversations\" must be set to \"By conversation count\"."
+msgstr "Observera: Inställningen för \"Nya konversationer\" måste vara \"Efter konversationsantal\"."
 
 msgid "Number of conversations per window"
 msgstr "Antal konversationer per fönster"
@@ -14342,12 +13253,8 @@
 
 #. *< summary
 #. *  description
-msgid ""
-"Restrict the number of conversations per windows, optionally separating IMs "
-"and Chats"
-msgstr ""
-"Begränsa antalet konversationer per fönster med möjlighet att separera "
-"snabbmeddelanden och chattar"
+msgid "Restrict the number of conversations per windows, optionally separating IMs and Chats"
+msgstr "Begränsa antalet konversationer per fönster med möjlighet att separera snabbmeddelanden och chattar"
 
 #. Configuration frame
 msgid "Mouse Gestures Configuration"
@@ -14380,17 +13287,14 @@
 
 #. *  description
 msgid ""
-"Allows support for mouse gestures in conversation windows. Drag the middle "
-"mouse button to perform certain actions:\n"
+"Allows support for mouse gestures in conversation windows. Drag the middle mouse button to perform certain actions:\n"
 " • Drag down and then to the right to close a conversation.\n"
 " • Drag up and then to the left to switch to the previous conversation.\n"
 " • Drag up and then to the right to switch to the next conversation."
 msgstr ""
-"Gör det möjligt att använda musgester i konversationsfönster. Dra musen med "
-"mittersta knappen nedtryckt för att ge olika kommandon:\n"
+"Gör det möjligt att använda musgester i konversationsfönster. Dra musen med mittersta knappen nedtryckt för att ge olika kommandon:\n"
 " • Dra ner och sedan till höger för att stänga konversationen.\n"
-" • Dra upp och sedan till vänster för att byta till föregående "
-"konversation.\n"
+" • Dra upp och sedan till vänster för att byta till föregående konversation.\n"
 " • Dra upp och sedan till höger för att byta till nästa konversation."
 
 msgid "Instant Messaging"
@@ -14412,12 +13316,8 @@
 msgstr "Välj kompis"
 
 #. Add the label.
-msgid ""
-"Select a person from your address book to add this buddy to, or create a new "
-"person."
-msgstr ""
-"Välj en person ur adressboken som du vill lägga till denna kompis till eller "
-"skapa en ny person."
+msgid "Select a person from your address book to add this buddy to, or create a new person."
+msgstr "Välj en person ur adressboken som du vill lägga till denna kompis till eller skapa en ny person."
 
 #. Add the expander
 msgid "User _details"
@@ -14529,9 +13429,7 @@
 #. *  summary
 #. *  description
 msgid "Iconifies the buddy list and your conversations when you go away."
-msgstr ""
-"Gör din kompislista och dina konversationer till en ikon när du är "
-"frånvarande."
+msgstr "Gör din kompislista och dina konversationer till en ikon när du är frånvarande."
 
 msgid "Mail Checker"
 msgstr "E-post-kollare"
@@ -14540,8 +13438,7 @@
 msgstr "Kollar efter ny lokal e-post."
 
 msgid "Adds a small box to the buddy list that shows if you have new mail."
-msgstr ""
-"Lägger till en liten ruta till kompislistan som visar om du fått ny e-post."
+msgstr "Lägger till en liten ruta till kompislistan som visar om du fått ny e-post."
 
 msgid "Markerline"
 msgstr "Markeringslinje"
@@ -14561,12 +13458,8 @@
 msgid "C_hat windows"
 msgstr "_Chattfönster"
 
-msgid ""
-"A music messaging session has been requested. Please click the MM icon to "
-"accept."
-msgstr ""
-"En music messaging session har efterfrågats. Var god tryck på MM-ikonen för "
-"att acceptera."
+msgid "A music messaging session has been requested. Please click the MM icon to accept."
+msgstr "En music messaging session har efterfrågats. Var god tryck på MM-ikonen för att acceptera."
 
 msgid "Music messaging session confirmed."
 msgstr "Music messaging session bekräftad."
@@ -14605,12 +13498,8 @@
 msgstr "Music Messaging-modul för gemensam komponering."
 
 #. *  summary
-msgid ""
-"The Music Messaging Plugin allows a number of users to simultaneously work "
-"on a piece of music by editing a common score in real-time."
-msgstr ""
-"Music Messaging-modulen tillåter ett antal användare att samtidigt arbeta på "
-"ett stycke musik genom att editera ett gemensamt notblad i realtid."
+msgid "The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editing a common score in real-time."
+msgstr "Music Messaging-modulen tillåter ett antal användare att samtidigt arbeta på ett stycke musik genom att editera ett gemensamt notblad i realtid."
 
 #. ---------- "Notify For" ----------
 msgid "Notify For"
@@ -14718,8 +13607,7 @@
 "Det här är en riktigt häftig insticksmodul som gör en massa saker:\n"
 "- Den visar vem som skrivit programmet när du loggar in\n"
 "- Den vänder på all text som kommer in\n"
-"- Den sänder ett meddelande till personerna på din kompislista direkt när du "
-"loggar in"
+"- Den sänder ett meddelande till personerna på din kompislista direkt när du loggar in"
 
 msgid "Hyperlink Color"
 msgstr "Färg på länkar"
@@ -14802,13 +13690,8 @@
 msgid "Lets you send raw input to text-based protocols."
 msgstr "Låter dig skicka rå indata till textbaserade protokoll."
 
-msgid ""
-"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
-"'Enter' in the entry box to send. Watch the debug window."
-msgstr ""
-"Låter dig skicka rå indata till textbaserade protokoll (XMPP, MSN, IRC, "
-"TOC). Tryck 'Enter' i inmatningsrutan för att skicka. Titta i "
-"felsökningsfönstret."
+msgid "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit 'Enter' in the entry box to send. Watch the debug window."
+msgstr "Låter dig skicka rå indata till textbaserade protokoll (XMPP, MSN, IRC, TOC). Tryck 'Enter' i inmatningsrutan för att skicka. Titta i felsökningsfönstret."
 
 #, c-format
 msgid "You can upgrade to %s %s today."
@@ -14839,12 +13722,8 @@
 msgstr "Kontrollerar periodiskt om ny version har släppts."
 
 #. *  description
-msgid ""
-"Checks periodically for new releases and notifies the user with the "
-"ChangeLog."
-msgstr ""
-"Kontrollerar periodiskt om ny version har släppts och rapporterar "
-"förändringsloggen till användaren."
+msgid "Checks periodically for new releases and notifies the user with the ChangeLog."
+msgstr "Kontrollerar periodiskt om ny version har släppts och rapporterar förändringsloggen till användaren."
 
 #. *< major version
 #. *< minor version
@@ -14864,12 +13743,8 @@
 msgstr "Skicka-knapp i konversationsfönster"
 
 #. *< summary
-msgid ""
-"Adds a Send button to the entry area of the conversation window. Intended "
-"for use when no physical keyboard is present."
-msgstr ""
-"Lägger till en Skicka knapp till konversationsfönstret. För att användas när "
-"inget fysiskt tangentbord finns."
+msgid "Adds a Send button to the entry area of the conversation window. Intended for use when no physical keyboard is present."
+msgstr "Lägger till en Skicka knapp till konversationsfönstret. För att användas när inget fysiskt tangentbord finns."
 
 msgid "Duplicate Correction"
 msgstr "Dublettkorrigering"
@@ -14903,8 +13778,7 @@
 
 #. Created here so it can be passed to whole_words_button_toggled.
 msgid "_Exact case match (uncheck for automatic case handling)"
-msgstr ""
-"_Exakt skriftlägeskänslighet (avmarkera för automatisk skriftlägesavkänning)"
+msgstr "_Exakt skriftlägeskänslighet (avmarkera för automatisk skriftlägesavkänning)"
 
 msgid "Only replace _whole words"
 msgstr "Ersätt endast _hela ord"
@@ -15054,21 +13928,18 @@
 msgid "Timestamp Format Options"
 msgstr "Val för tidsstämpelformat"
 
-#, fuzzy, c-format
+#, c-format
 msgid "_Force timestamp format:"
-msgstr "Tvinga 24-timmars tids_format"
-
-#, fuzzy
+msgstr "Tvinga tids_format:"
+
 msgid "Use system default"
-msgstr "Skrivbordets förval"
-
-#, fuzzy
+msgstr "Används systemets förval"
+
 msgid "12 hour time format"
-msgstr "Tvinga 24-timmars tids_format"
-
-#, fuzzy
+msgstr "12-timmars tidsformat"
+
 msgid "24 hour time format"
-msgstr "Tvinga 24-timmars tids_format"
+msgstr "24-timmars tidsformat"
 
 msgid "Show dates in..."
 msgstr "Visa datum i..."
@@ -15101,12 +13972,8 @@
 msgstr "Personifiera tidsformatsstämpeln för meddelandet."
 
 #. *  description
-msgid ""
-"This plugin allows the user to customize conversation and logging message "
-"timestamp formats."
-msgstr ""
-"Denna modul tillåter användaren att personifiera konversationernas och "
-"loggarnas tidsstämpelformat."
+msgid "This plugin allows the user to customize conversation and logging message timestamp formats."
+msgstr "Denna modul tillåter användaren att personifiera konversationernas och loggarnas tidsstämpelformat."
 
 msgid "Audio"
 msgstr "Ljud"
@@ -15151,8 +14018,7 @@
 
 #. *< summary
 msgid "Configure microphone and webcam settings for voice/video calls."
-msgstr ""
-"Konfigurera mikrofon och webbkamera-inställningar för röst/videosamtal."
+msgstr "Konfigurera mikrofon och webbkamera-inställningar för röst/videosamtal."
 
 msgid "Opacity:"
 msgstr "Ogenomskinlighet:"
@@ -15200,13 +14066,11 @@
 
 #. *  description
 msgid ""
-"This plugin enables variable alpha transparency on conversation windows and "
-"the buddy list.\n"
+"This plugin enables variable alpha transparency on conversation windows and the buddy list.\n"
 "\n"
 "* Note: This plugin requires Win2000 or greater."
 msgstr ""
-"Denna insticksmodul gör det möjligt att använda alfagenomskinlighet på "
-"konversationsfönster och kompislistan.\n"
+"Denna insticksmodul gör det möjligt att använda alfagenomskinlighet på konversationsfönster och kompislistan.\n"
 "\n"
 "* Observera: Denna insticksmodul kräver Win2000 eller senare."
 
@@ -15238,11 +14102,8 @@
 msgid "Options specific to Pidgin for Windows."
 msgstr "Inställningar specifika för Pidgin i Windows."
 
-msgid ""
-"Provides options specific to Pidgin for Windows, such as buddy list docking."
-msgstr ""
-"Tillhandahåller inställningar specifika för Pidgin i Windows såsom dockning "
-"av kompislistan."
+msgid "Provides options specific to Pidgin for Windows, such as buddy list docking."
+msgstr "Tillhandahåller inställningar specifika för Pidgin i Windows såsom dockning av kompislistan."
 
 msgid "<font color='#777777'>Logged out.</font>"
 msgstr "<font color='#777777'>Loggade ut.</font>"
@@ -15269,26 +14130,18 @@
 msgstr "Skicka och ta emot råa XMPP strofer."
 
 #. *  description
-#, fuzzy
 msgid "This plugin is useful for debugging XMPP servers or clients."
 msgstr "Denna modul är användbar vid felsökning av XMPP serverar och klienter."
 
 #. $(^Name) is the current Version name (e.g. Pidgin 2.7.0).  $_CLICK will become a translated version of "Click Next to continue."
-msgid ""
-"$(^Name) is released under the GNU General Public License (GPL). The license "
-"is provided here for information purposes only. $_CLICK"
-msgstr ""
-"$(^Name) är utgivet under GPL. Licensen finns tillgänglig här för "
-"informationssyften enbart. $_CLICK"
+msgid "$(^Name) is released under the GNU General Public License (GPL). The license is provided here for information purposes only. $_CLICK"
+msgstr "$(^Name) är utgivet under GPL. Licensen finns tillgänglig här för informationssyften enbart. $_CLICK"
 
 #. Installer Subsection Detailed Description
 msgid "A multi-platform GUI toolkit, used by Pidgin"
-msgstr ""
-"En GUI-verktygsuppsättning för flera olika plattformar som Pidgin använder."
-
-msgid ""
-"An instance of Pidgin is currently running.  Please exit Pidgin and try "
-"again."
+msgstr "En GUI-verktygsuppsättning för flera olika plattformar som Pidgin använder."
+
+msgid "An instance of Pidgin is currently running.  Please exit Pidgin and try again."
 msgstr "En instans av Pidgin körs redan. Avsluta Pidgin och försök igen."
 
 #. Installer Subsection Detailed Description
@@ -15312,35 +14165,25 @@
 msgstr "Skrivbord"
 
 #. $R2 will display the URL that the GTK+ Runtime failed to download from
-msgid ""
-"Error Downloading the GTK+ Runtime ($R2).$\\rThis is required for Pidgin to "
-"function; if retrying fails, you may need to use the 'Offline Installer' "
-"from http://pidgin.im/download/windows/ ."
+msgid "Error Downloading the GTK+ Runtime ($R2).$\\rThis is required for Pidgin to function; if retrying fails, you may need to use the 'Offline Installer' from http://pidgin.im/download/windows/ ."
 msgstr ""
 
 #. $R2 will display the URL that the Debug Symbols failed to download from
-msgid ""
-"Error Installing Debug Symbols ($R2).$\\rIf retrying fails, you may need to "
-"use the 'Offline Installer' from http://pidgin.im/download/windows/ ."
+msgid "Error Installing Debug Symbols ($R2).$\\rIf retrying fails, you may need to use the 'Offline Installer' from http://pidgin.im/download/windows/ ."
 msgstr ""
 
 #. $R3 will display the URL that the Dictionary failed to download from
 #, no-c-format
-msgid ""
-"Error Installing Spellchecking ($R3).$\\rIf retrying fails, manual "
-"installation instructions are at: http://developer.pidgin.im/wiki/Installing"
-"%20Pidgin#manual_win32_spellcheck_installation"
+msgid "Error Installing Spellchecking ($R3).$\\rIf retrying fails, manual installation instructions are at: http://developer.pidgin.im/wiki/Installing%20Pidgin#manual_win32_spellcheck_installation"
 msgstr ""
 
 #. Installer Subsection Text
-#, fuzzy
 msgid "GTK+ Runtime (required if not present)"
 msgstr "GTK+-körmiljö (obligatorisk)"
 
 #. Installer Subsection Text
-#, fuzzy
 msgid "Localizations"
-msgstr "Plats"
+msgstr "Platser"
 
 #. "Next >" appears on a button on the License Page of the Installer
 msgid "Next >"
@@ -15350,11 +14193,8 @@
 msgid "Pidgin Instant Messaging Client (required)"
 msgstr "Pidgin Snabbmeddelandeklient (obligatorisk)"
 
-msgid ""
-"Pidgin requires a compatible GTK+ Runtime (which doesn't appear to be "
-"already present).$\\rAre you sure you want to skip installing the GTK+ "
-"Runtime?"
-msgstr ""
+msgid "Pidgin requires a compatible GTK+ Runtime (which doesn't appear to be already present).$\\rAre you sure you want to skip installing the GTK+ Runtime?"
+msgstr "Pidgin kräver en kompatibel version av GTK+ biblioteken (vilka inte verkar vara installerade).$\\rÄr du säker på att du vill hoppa över installationen av dem?"
 
 #. Installer Subsection Text
 msgid "Shortcuts"
@@ -15373,31 +14213,21 @@
 msgstr "Startmeny"
 
 #. Installer Subsection Detailed Description
-msgid ""
-"Support for Spellchecking.  (Internet connection required for installation)"
+msgid "Support for Spellchecking.  (Internet connection required for installation)"
 msgstr "Stöd för Rättstavning.  (Internetanslutning krävs för installation)"
 
 msgid "The installer is already running."
 msgstr "Installationsprogrammet körs redan."
 
-msgid ""
-"The uninstaller could not find registry entries for Pidgin.$\\rIt is likely "
-"that another user installed this application."
-msgstr ""
-"Avinstalleraren kunde inte hitta registervärden för Pidgin.$\\rAntagligen "
-"har en annan användare installerat applikationen."
+msgid "The uninstaller could not find registry entries for Pidgin.$\\rIt is likely that another user installed this application."
+msgstr "Avinstalleraren kunde inte hitta registervärden för Pidgin.$\\rAntagligen har en annan användare installerat applikationen."
 
 #. Installer Subsection Text
 msgid "URI Handlers"
 msgstr "URI Hanterare"
 
-msgid ""
-"Unable to uninstall the currently installed version of Pidgin. The new "
-"version will be installed without removing the currently installed version."
-msgstr ""
-"Kunde inte avinstallera den nuvarande versionen av Pidgin. Den nya versionen "
-"kommer att installeras utan att ta bort den för närvarande installerade "
-"versionen."
+msgid "Unable to uninstall the currently installed version of Pidgin. The new version will be installed without removing the currently installed version."
+msgstr "Kunde inte avinstallera den nuvarande versionen av Pidgin. Den nya versionen kommer att installeras utan att ta bort den för närvarande installerade versionen."
 
 #. Text displayed on Installer Finish Page
 msgid "Visit the Pidgin Web Page"
@@ -15799,210 +14629,148 @@
 # Vad menas med In-Band, när används och vad blir då lämplig översättning? Denna har antagligen något med "Out-of-Band att göra men hur hänger de ihop?
 #~ msgid "In-Band Registration"
 #~ msgstr "In-Bandsregistrering"
-
 #~ msgid "User Location"
 #~ msgstr "Placering"
-
 #~ msgid "User Avatar"
 #~ msgstr "Användar-avatar"
-
 #~ msgid "Chat State Notifications"
 #~ msgstr "Chatt-status notifieringar"
-
 #~ msgid "Software Version"
 #~ msgstr "Mjukvaruversion"
-
 #~ msgid "Stream Initiation"
 #~ msgstr "Ströminitiering"
-
 #~ msgid "User Activity"
 #~ msgstr "Användaraktivitet"
-
 # Låter mysko, vet inte i vilket sammanhang.
 #~ msgid "Entity Capabilities"
 #~ msgstr "Existensmöjligheter"
-
 #~ msgid "Encrypted Session Negotiations"
 #~ msgstr "Förhandlingar om krypterade sessioner"
-
 #~ msgid "User Tune"
 #~ msgstr "Användarlåt"
-
 #~ msgid "Roster Item Exchange"
 #~ msgstr "Listinnehållsutbyte"
-
 # Vet inte om detta är bästa, men...
 #~ msgid "Reachability Address"
 #~ msgstr "Nåbar adress"
-
 #~ msgid "Jingle"
 #~ msgstr "Ramsa"
-
 # Vad är dessa?
 #~ msgid "Jingle Audio"
 #~ msgstr "Sångsnutt"
-
 #~ msgid "User Nickname"
 #~ msgstr "Användarsmeknamn"
-
 # Vad är dessa?
 #~ msgid "Jingle ICE UDP"
 #~ msgstr "Ramsa ICE UDP"
-
 # Vad är dessa?
 #~ msgid "Jingle ICE TCP"
 #~ msgstr "Ramsa ICE TCP"
-
 # Vad är dessa?
 #~ msgid "Jingle Raw UDP"
 #~ msgstr "Ramsa Rå UDP"
-
 #~ msgid "Jingle Video"
 #~ msgstr "Ramsa Video"
-
 # Vad är dessa?
 #~ msgid "Jingle DTMF"
 #~ msgstr "Ramsa DTMF"
-
 #~ msgid "Message Receipts"
 #~ msgstr "Meddelandekvitton"
-
 #~ msgid "Public Key Publishing"
 #~ msgstr "Publik nyckelpublisering"
-
 #~ msgid "User Chatting"
 #~ msgstr "Användarchattning"
-
 #~ msgid "User Browsing"
 #~ msgstr "Användarbläddring"
-
 #~ msgid "User Viewing"
 #~ msgstr "Användarvisning"
-
 #~ msgid "Stanza Encryption"
 #~ msgstr "Strofkryptering"
-
 #~ msgid "Entity Time"
 #~ msgstr "Enhet Tid"
-
 #~ msgid "Delayed Delivery"
 #~ msgstr "Försenad försändelse"
-
 #~ msgid "Collaborative Data Objects"
 #~ msgstr "Kollebrationsdata objekt"
-
 #~ msgid "File Repository and Sharing"
 #~ msgstr "Filförvaringsplats och Delning"
-
 #~ msgid "STUN Service Discovery for Jingle"
 #~ msgstr "STUN Serviceupptäckning för Ramsor"
-
 #~ msgid "Simplified Encrypted Session Negotiation"
 #~ msgstr "Simpel crypterad session förhandling"
-
 #~ msgid "Hop Check"
 #~ msgstr "Hoppkontroll"
-
 #~ msgid "Read Error"
 #~ msgstr "Läsfel"
-
 #~ msgid "Failed to connect to server."
 #~ msgstr "Kunde inte ansluta till servern."
-
 #~ msgid "Read buffer full (2)"
 #~ msgstr "Läsbuffert full (2)"
-
 #~ msgid "Unparseable message"
 #~ msgstr "Otolkbart meddelande"
-
 #~ msgid "Couldn't connect to host: %s (%d)"
 #~ msgstr "Kunde inte ansluta till värd: %s (%d)"
-
 #~ msgid "Login failed (%s)."
 #~ msgstr "Inloggningen misslyckades (%s)."
-
 #~ msgid ""
 #~ "You have been logged out because you logged in at another workstation."
 #~ msgstr "Du har blivit utloggad eftersom du loggat in från en annan dator."
-
 #~ msgid "Error. SSL support is not installed."
 #~ msgstr "Fel. SSL-stöd är inte installerat."
-
 #~ msgid ""
 #~ "Could not connect to BOS server:\n"
 #~ "%s"
 #~ msgstr ""
 #~ "Kunde inte ansluta till BOS-server:\n"
 #~ "%s"
-
 #~ msgid "Invalid username."
 #~ msgstr "Ogiltigt användarnamn"
-
 #~ msgid "Incorrect password."
 #~ msgstr "Felaktigt lösenord."
-
 #~ msgid "Could Not Connect"
 #~ msgstr "Kunde inte ansluta"
-
 #~ msgid "You may be disconnected shortly.  Check %s for updates."
 #~ msgstr "Du kanske snart blir frånkopplad. Kolla på %s efter uppdateringar."
-
 #~ msgid "Could not decrypt server reply"
 #~ msgstr "Kan inte avkryptera inloggningssvaret"
-
 #~ msgid "Connection lost"
 #~ msgstr "Anslutningen tappades"
-
 #~ msgid "Couldn't resolve host"
 #~ msgstr "Kunde ej slå upp värden"
-
 #~ msgid "Connection closed (writing)"
 #~ msgstr "Anslutningen stängd (skrivande)"
-
 #~ msgid "Connection reset"
 #~ msgstr "Anslutningen nollställd"
-
 #~ msgid "Error reading from socket: %s"
 #~ msgstr "Fel vid läsning av från uttag %s"
-
 #~ msgid "Unable to connect to host"
 #~ msgstr "Kan inte ansluta till värd"
-
 #~ msgid "Could not write"
 #~ msgstr "Kunde inte skriva"
-
 #~ msgid "Could not create listen socket"
 #~ msgstr "Kunde inte skapa lyssnarsocket"
-
 #~ msgid ""
 #~ "Could not establish a connection with %s:\n"
 #~ "%s"
 #~ msgstr ""
 #~ "Kunde inte skapa en anslutning med %s:\n"
 #~ "%s"
-
 #~ msgid "Activate which ID?"
 #~ msgstr "Vilket ID ska aktiveras?"
-
 #~ msgid "Yahoo Japan"
 #~ msgstr "Yahoo Japan"
-
 #~ msgid "Japan Pager server"
 #~ msgstr "Japan Sökarserver"
-
 #~ msgid "Japan file transfer server"
 #~ msgstr "Japan filöverföringsserver"
-
 #~ msgid ""
 #~ "Lost connection with server\n"
 #~ "%s"
 #~ msgstr ""
 #~ "Tappade anslutningen till servern\n"
 #~ "%s"
-
 #~ msgid "Could not resolve host name"
 #~ msgstr "Kunde inte slå upp värdnamnet"
-
 #, fuzzy
 #~ msgid ""
 #~ "Unable to connect to %s: Server requires TLS/SSL, but no TLS/SSL support "
@@ -16037,98 +14805,69 @@
 # Osäker: Finns smidigare lösning?
 #~ msgid "Widget Sizes"
 #~ msgstr "Storlek på grafiska element"
-
 #~ msgid "Invite message"
 #~ msgstr "Inbjudningsmeddelande"
-
 #~ msgid ""
 #~ "Please enter the name of the user you wish to invite,\n"
 #~ "along with an optional invite message."
 #~ msgstr ""
 #~ "Ange namnet på den användare du vill bjuda in,\n"
 #~ "samt ett inbjudningsmeddelande om du vill"
-
 #~ msgid "Looking up %s"
 #~ msgstr "Slå upp %s"
-
 #~ msgid "Connect to %s failed"
 #~ msgstr "Anslutning till %s misslyckades"
-
 #~ msgid "Signon: %s"
 #~ msgstr "Inloggning: %s"
-
 #~ msgid "Unable to write file %s."
 #~ msgstr "Kan inte skriva filen %s."
-
 #~ msgid "Unable to read file %s."
 #~ msgstr "Kan inte läsa filen %s."
-
 #~ msgid "Message too long, last %s bytes truncated."
 #~ msgstr "Meddelandet är för långt, de sista %s byten klipptes bort."
-
 #~ msgid "%s not currently logged in."
 #~ msgstr "%s är inte inloggad för tillfället."
-
 #~ msgid "Warning of %s not allowed."
 #~ msgstr "Varning för %s är inte tillåten."
-
 #~ msgid ""
 #~ "A message has been dropped, you are exceeding the server speed limit."
 #~ msgstr ""
 #~ "Ett meddelande har kastats, du överskrider serverns hastighetsgräns."
-
 #~ msgid "Chat in %s is not available."
 #~ msgstr "Chatt i %s är inte tillgänglig."
-
 #~ msgid "You are sending messages too fast to %s."
 #~ msgstr "Du skickar meddelanden för snabbt till %s."
-
 #~ msgid "You missed an IM from %s because it was too big."
 #~ msgstr "Du missade ett snabbmeddelande från %s eftersom det var för stort."
-
 #~ msgid "You missed an IM from %s because it was sent too fast."
 #~ msgstr ""
 #~ "Du missade ett snabbmeddelande från %s eftersom det skickades för snabbt."
-
 #~ msgid "Failure."
 #~ msgstr "Misslyckande."
-
 #~ msgid "Too many matches."
 #~ msgstr "För många träffar."
-
 #~ msgid "Need more qualifiers."
 #~ msgstr "Behöver fler kvalificerare."
-
 #~ msgid "Dir service temporarily unavailable."
 #~ msgstr "Katalogtjänsten är tillfälligt onåbar."
-
 #~ msgid "Email lookup restricted."
 #~ msgstr "E-postuppslagning är begränsad."
-
 #~ msgid "Keyword ignored."
 #~ msgstr "Nyckelordet ignorerades."
-
 #~ msgid "No keywords."
 #~ msgstr "Inga nyckelord."
-
 #~ msgid "User has no directory information."
 #~ msgstr "Användaren har ingen kataloginformation."
-
 #~ msgid "Country not supported."
 #~ msgstr "Landet stöds inte."
-
 #~ msgid "Failure unknown: %s."
 #~ msgstr "Okänt misslyckande: %s."
-
 #~ msgid "Incorrect username or password."
 #~ msgstr "Felaktigt användarnamn eller lösenord"
-
 #~ msgid "The service is temporarily unavailable."
 #~ msgstr "Tjänsten är tillfälligt onåbar."
-
 #~ msgid "Your warning level is currently too high to log in."
 #~ msgstr "Din varningsnivå är för tillfället för hög för att logga in."
-
 #~ msgid ""
 #~ "You have been connecting and disconnecting too frequently.  Wait ten "
 #~ "minutes and try again.  If you continue to try, you will need to wait "
@@ -16137,93 +14876,66 @@
 #~ "Du har anslutit och kopplat ifrån för många gånger. Vänta tio minuter och "
 #~ "prova igen. Om du fortsätter att försöka kommer du att få vänta ännu "
 #~ "längre."
-
 #~ msgid "An unknown error, %d, has occurred.  Info: %s"
 #~ msgstr "Ett okänt fel, %d, har inträffat. Information: %s"
-
 #~ msgid "Invalid Groupname"
 #~ msgstr "Ogiltigt gruppnamn"
-
 #~ msgid "Connection Closed"
 #~ msgstr "Anslutningen stängd"
-
 #~ msgid "Waiting for reply..."
 #~ msgstr "Väntar på svar..."
-
 #~ msgid "TOC has come back from its pause. You may now send messages again."
 #~ msgstr ""
 #~ "TOC har kommit tillbaka från dess paus. Du kan nu skicka meddelanden igen."
-
 #~ msgid "Password Change Successful"
 #~ msgstr "Lösenordsändring lyckades"
-
 #~ msgid "Get Dir Info"
 #~ msgstr "Hämta kataloginformation"
-
 #~ msgid "Set Dir Info"
 #~ msgstr "Ställ in kataloginformation"
-
 #~ msgid "Could not open %s for writing!"
 #~ msgstr "Kunde inte öppna %s för läsning!"
-
 #~ msgid "File transfer failed; other side probably canceled."
 #~ msgstr ""
 #~ "Filöverföringen misslyckades, antagligen eftersom andra sidan avbröt."
-
 #~ msgid "Could not connect for transfer."
 #~ msgstr "Kunde inte ansluta för överföring."
-
 #~ msgid "Could not write file header.  The file will not be transferred."
 #~ msgstr "Kunde inte skriva filhuvud, filen kommer inte att skickas."
-
 #~ msgid "Save As..."
 #~ msgstr "Spara som..."
-
 #~ msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
 #~ msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
 #~ msgstr[0] "%s ber %s att acceptera %d fil: %s (%.2f %s)%s%s"
 #~ msgstr[1] "%s ber %s att acceptera %d filer: %s (%.2f %s)%s%s"
-
 #~ msgid "%s requests you to send them a file"
 #~ msgstr "%s ber att du ska skicka denne en fil"
-
 #~ msgid "TOC Protocol Plugin"
 #~ msgstr "Insticksmodul för TOC-protokoll"
-
 #~ msgid "%s Options"
 #~ msgstr "%s-alternativ"
-
 #~ msgid "Proxy Options"
 #~ msgstr "Proxyalternativ"
-
 #~ msgid "By log size"
 #~ msgstr "Efter loggstorlek"
-
 #~ msgid "_Open Link in Browser"
 #~ msgstr "_Öppna länk i webbläsare"
-
 #~ msgid "Smiley _Image"
 #~ msgstr "Smiley-_bild"
-
 #~ msgid "Smiley S_hortcut"
 #~ msgstr "Smiley-_genväg"
-
 #~ msgid "Unable to retrieve MSN Address Book"
 #~ msgstr "Kunde inte hämta MSN-adressbok"
-
 #~ msgid ""
 #~ "You may be disconnected shortly.  You may want to use TOC until this is "
 #~ "fixed.  Check %s for updates."
 #~ msgstr ""
 #~ "Du kanske snart blir frånkopplad, du kanske ska använda TOC tills detta "
 #~ "är fixat. Kolla på %s efter uppdateringar."
-
 #~ msgid "_Flash window when chat messages are received"
 #~ msgstr "Blinka med _fönstret när chattmeddelanden tas emot"
-
 #~ msgid "A group with the name already exists."
 #~ msgstr "En grupp med det namnet finns redan."
-
 #~ msgid "Connection to server lost (no data received within %d second)"
 #~ msgid_plural ""
 #~ "Connection to server lost (no data received within %d seconds)"
@@ -16231,13 +14943,10 @@
 #~ "Anslutning till servern tappad (ingen data mottagen på %d sekund)"
 #~ msgstr[1] ""
 #~ "Anslutning till servern tappad (ingen data mottagen på %d sekunder)"
-
 #~ msgid "Primary Information"
 #~ msgstr "Primär information"
-
 #~ msgid "Blood Type"
 #~ msgstr "Blodgrupp"
-
 #, fuzzy
 #~ msgid "Update information"
 #~ msgstr "Uppdatera min information"
@@ -16261,7 +14970,6 @@
 # Osäker: (Hrm...
 #~ msgid "Add buddy with auth request failed"
 #~ msgstr "Lägg till kompis med misslyckad autentiseringsförfrågan"
-
 #, fuzzy
 #~ msgid "Add into %d's buddy list"
 #~ msgstr "Kunde inte läsa in kompislista"