changeset 25734:0b13cf2b286e

merge of '1cff30b7f6954a59c5a89c859c10fa1c51feab8c' and '2ac9276c340244737b9b0bbc93dd1a3299cd43ae'
author Marcus Lundblad <ml@update.uu.se>
date Sun, 12 Oct 2008 17:41:36 +0000
parents 51cbb9be484e (current diff) 034723cbdf23 (diff)
children 9d7e0984d71f
files
diffstat 16 files changed, 603 insertions(+), 447 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/conversation.h	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/conversation.h	Sun Oct 12 17:41:36 2008 +0000
@@ -114,7 +114,7 @@
 	                                        which are only open for
 	                                        internal UI purposes
 	                                        (e.g. for contact-aware
-	                                         conversions).           */
+	                                         conversations).           */
 	PURPLE_MESSAGE_NICK        = 0x0020, /**< Contains your nick.      */
 	PURPLE_MESSAGE_NO_LOG      = 0x0040, /**< Do not log.              */
 	PURPLE_MESSAGE_WHISPER     = 0x0080, /**< Whispered message.       */
--- a/libpurple/protocols/bonjour/mdns_common.c	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/protocols/bonjour/mdns_common.c	Sun Oct 12 17:41:36 2008 +0000
@@ -46,6 +46,30 @@
 	g_free(data);
 }
 
+#define MAX_TXT_CONSTITUENT_LEN 255
+
+/* Make sure that the value isn't longer than it is supposed to be */
+static const char*
+get_max_txt_record_value(const char *key, const char *value)
+{
+	/* "each constituent string of a DNS TXT record is limited to 255 bytes"
+	 * This includes the key and the '='
+	 */
+	static char buffer[MAX_TXT_CONSTITUENT_LEN + 1];
+	gchar *end_valid = NULL;
+	int len = MIN(strlen(value), MAX_TXT_CONSTITUENT_LEN - (strlen(key) + 2));
+
+	strncpy(buffer, value, len);
+
+	buffer[len] = '\0';
+
+	/* If we've cut part of a utf-8 character, kill it */
+	if (!g_utf8_validate(buffer, -1, (const gchar **)&end_valid))
+		*end_valid = '\0';
+
+	return buffer;
+}
+
 static GSList *generate_presence_txt_records(BonjourDnsSd *data) {
 	GSList *ret = NULL;
 	PurpleKeyValuePair *kvp;
@@ -62,13 +86,20 @@
 #define _M_ADD_R(k, v) \
 	kvp = g_new0(PurpleKeyValuePair, 1); \
 	kvp->key = g_strdup(k); \
-	kvp->value = g_strdup(v); \
+	kvp->value = g_strdup(get_max_txt_record_value(k, v)); \
 	ret = g_slist_prepend(ret, kvp); \
 
 	/* We should try to follow XEP-0174, but some clients have "issues", so we humor them.
 	 * See http://telepathy.freedesktop.org/wiki/SalutInteroperability
 	 */
 
+	/* Large TXT records are problematic.
+	 * While it is technically possible for this to exceed a standard 512-byte
+	 * DNS message, it shouldn't happen unless we get wacky data entered for
+	 * some of the freeform fields.  It is even less likely to exceed the
+	 * recommended maximum of 1300 bytes.
+	 */
+
 	/* Needed by iChat */
 	_M_ADD_R("txtvers", "1")
 	/* Needed by Gaim/Pidgin <= 2.0.1 (remove at some point) */
--- a/libpurple/protocols/irc/msgs.c	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/protocols/irc/msgs.c	Sun Oct 12 17:41:36 2008 +0000
@@ -215,8 +215,10 @@
 			/* This is an extended syntax, not in RFC 1459 */
 			int t1 = atoi(args[4]);
 			time_t t2 = time(NULL);
+			char *time = purple_str_seconds_to_string(t2 - t1);
 			msg = g_strdup_printf(_("Ban on %s by %s, set %s ago"),
-			                      args[2], args[3], purple_str_seconds_to_string(t2 - t1));
+			                      args[2], args[3], time);
+			g_free(time);
 		} else {
 			msg = g_strdup_printf(_("Ban on %s"), args[2]);
 		}
--- a/libpurple/protocols/msn/msg.c	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/protocols/msn/msg.c	Sun Oct 12 17:41:36 2008 +0000
@@ -114,6 +114,7 @@
 	char *message_cr;
 
 	msg = msn_message_new(MSN_MSG_TEXT);
+	msg->retries = 1;
 	msn_message_set_attr(msg, "User-Agent", PACKAGE_NAME "/" VERSION);
 	msn_message_set_content_type(msg, "text/plain");
 	msn_message_set_charset(msg, "UTF-8");
--- a/libpurple/protocols/msn/msg.h	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/protocols/msn/msg.h	Sun Oct 12 17:41:36 2008 +0000
@@ -129,6 +129,8 @@
 	void *ack_data; /**< The data used by callbacks. */
 
 	MsnMsgErrorType error; /**< The error of the message. */
+
+	guint32 retries;
 };
 
 /**
@@ -243,24 +245,6 @@
  */
 char msn_message_get_flag(const MsnMessage *msg);
 
-#if 0
-/**
- * Sets the body of a message.
- *
- * @param msg  The message.
- * @param body The body of the message.
- */
-void msn_message_set_body(MsnMessage *msg, const char *body);
-
-/**
- * Returns the body of the message.
- *
- * @param msg The message.
- *
- * @return The body of the message.
- */
-const char *msn_message_get_body(const MsnMessage *msg);
-#endif
 /**
  * Sets the binary content of the message.
  *
--- a/libpurple/protocols/msn/msn.c	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/protocols/msn/msn.c	Sun Oct 12 17:41:36 2008 +0000
@@ -42,6 +42,7 @@
 #include "msnutils.h"
 #include "version.h"
 
+#include "msg.h"
 #include "switchboard.h"
 #include "notification.h"
 #include "sync.h"
@@ -1115,6 +1116,31 @@
 	return list;
 }
 
+void
+msn_send_im_message(MsnSession *session, MsnMessage *msg)
+{
+	MsnEmoticon *smile;
+	GSList *smileys;
+	GString *emoticons = NULL;
+	const char *username = purple_account_get_username(session->account);
+	MsnSwitchBoard *swboard = msn_session_get_swboard(session, msg->remote_user, MSN_SB_FLAG_IM);
+
+	smileys = msn_msg_grab_emoticons(msg->body, username);
+	while (smileys) {
+		smile = (MsnEmoticon*)smileys->data;
+		emoticons = msn_msg_emoticon_add(emoticons, smile);
+		msn_emoticon_destroy(smile);
+		smileys = g_slist_delete_link(smileys, smileys);
+	}
+
+	if (emoticons) {
+		msn_send_emoticons(swboard, emoticons);
+		g_string_free(emoticons, TRUE);
+	}
+
+	msn_switchboard_send_msg(swboard, msg, TRUE);
+}
+
 static int
 msn_send_im(PurpleConnection *gc, const char *who, const char *message,
 			PurpleMessageFlags flags)
@@ -1177,31 +1203,13 @@
 		purple_debug_info("msn", "prepare to send online Message\n");
 		if (g_ascii_strcasecmp(who, username))
 		{
-			MsnEmoticon *smile;
-			GSList *smileys;
-			GString *emoticons = NULL;
-
 			if (msn_user_is_yahoo(account, who)) {
 				/*we send the online and offline Message to Yahoo User via UBM*/
 				purple_debug_info("msn", "send to Yahoo User\n");
 				uum_send_msg(session, msg);
 			} else {
 				purple_debug_info("msn", "send via switchboard\n");
-				swboard = msn_session_get_swboard(session, who, MSN_SB_FLAG_IM);
-				smileys = msn_msg_grab_emoticons(message, username);
-				while (smileys) {
-					smile = (MsnEmoticon*)smileys->data;
-					emoticons = msn_msg_emoticon_add(emoticons, smile);
-					msn_emoticon_destroy(smile);
-					smileys = g_slist_delete_link(smileys, smileys);
-				}
-
-				if (emoticons) {
-					msn_send_emoticons(swboard, emoticons);
-					g_string_free(emoticons, TRUE);
-				}
-
-				msn_switchboard_send_msg(swboard, msg, TRUE);
+				msn_send_im_message(session, msg);
 			}
 		}
 		else
--- a/libpurple/protocols/msn/msn.h	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/protocols/msn/msn.h	Sun Oct 12 17:41:36 2008 +0000
@@ -55,6 +55,8 @@
 
 #include "ft.h"
 
+#include "msg.h"
+
 #define MSN_BUF_LEN 8192
 
 /* Windows Live Messenger Server*/
@@ -142,5 +144,6 @@
 
 void msn_act_id(PurpleConnection *gc, const char *entry);
 void msn_send_privacy(PurpleConnection *gc);
+void msn_send_im_message(MsnSession *session, MsnMessage *msg);
 
 #endif /* _MSN_H_ */
--- a/libpurple/protocols/msn/servconn.c	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/protocols/msn/servconn.c	Sun Oct 12 17:41:36 2008 +0000
@@ -400,9 +400,9 @@
 		return;
 
 	} else if (len <= 0) {
-		purple_debug_error("msn", "servconn read error,"
-		                          "len: %" G_GSSIZE_FORMAT ", errno: %d, error: %s\n",
-		                          len, errno, g_strerror(errno));
+		purple_debug_error("msn", "servconn %03d read error,"
+			"len: %" G_GSSIZE_FORMAT ", errno: %d, error: %s\n",
+			servconn->num, len, errno, g_strerror(errno));
 		msn_servconn_got_error(servconn, MSN_SERVCONN_ERROR_READ);
 
 		return;
--- a/libpurple/protocols/msn/switchboard.c	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Sun Oct 12 17:41:36 2008 +0000
@@ -375,6 +375,19 @@
 	g_strfreev(params);
 }
 
+static gboolean
+msg_resend_cb(gpointer data)
+{
+	MsnSwitchBoard *swboard = data;
+
+	purple_debug_info("msn", "unqueuing unsent message to %s", swboard->im_user);
+
+	msn_switchboard_request(swboard);
+	msn_switchboard_request_add_user(swboard, swboard->im_user);
+	swboard->reconn_timeout_h = 0;
+	return FALSE;
+}
+
 static void
 msg_error_helper(MsnCmdProc *cmdproc, MsnMessage *msg, MsnMsgErrorType error)
 {
@@ -413,6 +426,34 @@
 		}
 		else if (error == MSN_MSG_ERROR_SB)
 		{
+			MsnSession *session = swboard->session;
+
+			if (!session->destroying && msg->retries &&	swboard->im_user &&
+				(swboard->error == MSN_SB_ERROR_CONNECTION ||
+					swboard->error == MSN_SB_ERROR_UNKNOWN)) {
+				MsnSwitchBoard *new_sw = msn_session_find_swboard(session,
+					swboard->im_user);
+
+				if (new_sw == NULL || new_sw->reconn_timeout_h == 0) {
+					new_sw = msn_switchboard_new(session);
+					new_sw->im_user = g_strdup(swboard->im_user);
+					new_sw->reconn_timeout_h = purple_timeout_add_seconds(3, msg_resend_cb, new_sw);
+					new_sw->flag |= MSN_SB_FLAG_IM;
+				}
+
+				body_str = msn_message_to_string(msg);
+				body_enc = g_markup_escape_text(body_str, -1);
+				g_free(body_str);
+
+				purple_debug_info("msn", "queuing unsent message to %s: %s",
+					swboard->im_user, body_enc);
+				g_free(body_enc);
+				msn_send_im_message(session, msg);
+				msg->retries--;
+
+				return;
+			}
+
 			switch (swboard->error)
 			{
 				case MSN_SB_ERROR_OFFLINE:
--- a/libpurple/protocols/msn/switchboard.h	Sun Oct 12 17:41:26 2008 +0000
+++ b/libpurple/protocols/msn/switchboard.h	Sun Oct 12 17:41:36 2008 +0000
@@ -104,6 +104,7 @@
 	MsnSBErrorType error; /**< The error that occurred in this switchboard
 							(if applicable). */
 	GList *slplinks; /**< The list of slplinks that are using this switchboard. */
+	guint reconn_timeout_h;
 };
 
 /**
--- a/pidgin/gtkaccount.c	Sun Oct 12 17:41:26 2008 +0000
+++ b/pidgin/gtkaccount.c	Sun Oct 12 17:41:36 2008 +0000
@@ -724,7 +724,7 @@
 {
 	PurpleAccountOption *option;
 	PurpleAccount *account;
-	GtkWidget *frame, *vbox, *check, *entry, *combo, *menu, *item;
+	GtkWidget *frame, *vbox, *check, *entry, *combo;
 	GList *list, *node;
 	gint i, idx, int_value;
 	GtkListStore *model;
@@ -858,13 +858,6 @@
 						gtk_entry_set_invisible_char(GTK_ENTRY(entry), PIDGIN_INVISIBLE_CHAR);
 				}
 
-				/* Google Talk default domain hackery! */
-				menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(dialog->protocol_menu));
-				item = gtk_menu_get_active(GTK_MENU(menu));
-				if (str_value == NULL && g_object_get_data(G_OBJECT(item), "fake") &&
-					!strcmp(_("Connect server"),  purple_account_option_get_text(option)))
-					str_value = "talk.google.com";
-
 				if (str_value != NULL)
 					gtk_entry_set_text(GTK_ENTRY(entry), str_value);
 
--- a/pidgin/gtkblist.c	Sun Oct 12 17:41:26 2008 +0000
+++ b/pidgin/gtkblist.c	Sun Oct 12 17:41:36 2008 +0000
@@ -4663,8 +4663,6 @@
 {
 	PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
 	gtk_container_add(GTK_CONTAINER(priv->error_scrollbook), dialog);
-
-	set_urgent();
 }
 
 static GtkWidget *
@@ -4811,7 +4809,6 @@
 		GTK_CONTAINER(priv->error_scrollbook), account);
 	pidgin_mini_dialog_set_description(PIDGIN_MINI_DIALOG(mini_dialog),
 		description);
-	set_urgent();
 }
 
 
@@ -4967,8 +4964,6 @@
 	gtk_widget_show_all(account_label);
 
 	update_signed_on_elsewhere_minidialog_title();
-
-	set_urgent();
 }
 
 static void
@@ -4994,7 +4989,6 @@
 	GtkContainer *c = GTK_CONTAINER(priv->signed_on_elsewhere->contents);
 	GtkWidget *label = find_child_widget_by_account(c, account);
 	gtk_widget_set_tooltip_text(label, description);
-	set_urgent();
 #endif
 }
 
--- a/pidgin/gtkconn.c	Sun Oct 12 17:41:26 2008 +0000
+++ b/pidgin/gtkconn.c	Sun Oct 12 17:41:36 2008 +0000
@@ -208,7 +208,9 @@
 	while (l) {
 		PurpleAccount *a = (PurpleAccount*)l->data;
 		if (!purple_account_is_disconnected(a)) {
-			purple_account_disconnect(a);
+			purple_connection_error_reason(purple_account_get_connection(a),
+			                               PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
+			                               _("Network disconnected"));
 		}
 		l = l->next;
 	}
--- a/pidgin/win32/nsis/translations/finnish.nsh	Sun Oct 12 17:41:26 2008 +0000
+++ b/pidgin/win32/nsis/translations/finnish.nsh	Sun Oct 12 17:41:36 2008 +0000
@@ -1,16 +1,18 @@
 ;;
-;;  finish.nsh
+;;  finnish.nsh
 ;;
-;;  Finish language strings for the Windows Pidgin NSIS installer.
+;;  Finnish language strings for the Windows Pidgin NSIS installer.
 ;;  Windows Code page: 1252
 ;;
 ;;  Authors: Toni "Daigle" Impiö <toni.impio@pp1.inet.fi>
 ;;           Timo Jyrinki <timo.jyrinki@iki.fi>, 2008
 ;;           
-;;  Version 2
+;;  Version 3
 ;;
 
-; Startup GTK+ check
+; Startup checks
+!define INSTALLER_IS_RUNNING			"Asennusohjelma on jo käynnissä."
+!define PIDGIN_IS_RUNNING			"Pidgin on tällä hetkellä käynnissä. Poistu Pidginistä ja yritä uudelleen."
 !define GTK_INSTALLER_NEEDED			"Ajonaikainen GTK+-ympäristö joko puuttuu tai tarvitsee päivitystä.$\rOle hyvä ja asenna v${GTK_MIN_VERSION} tai uudempi ajonaikainen GTK+-ympäristö."
 
 ; License Page
@@ -19,12 +21,12 @@
 
 ; Components Page
 !define PIDGIN_SECTION_TITLE			"Pidgin-pikaviestin (vaaditaan)"
-!define GTK_SECTION_TITLE			"Ajonaikainen GTK+-ympäristö (vaaditaan)"
+!define GTK_SECTION_TITLE			"Ajonaikainen GTK-ympäristö (vaaditaan)"
 !define PIDGIN_SHORTCUTS_SECTION_TITLE 		"Pikakuvakkeet"
 !define PIDGIN_DESKTOP_SHORTCUT_SECTION_TITLE 	"Työpöytä"
 !define PIDGIN_STARTMENU_SHORTCUT_SECTION_TITLE "Käynnistysvalikko"
 !define PIDGIN_SECTION_DESCRIPTION		"Pidginin ytimen tiedostot ja kirjastot"
-!define GTK_SECTION_DESCRIPTION		"Monialustainen Pidginin käyttämä käyttöliittymäkirjasto"
+!define GTK_SECTION_DESCRIPTION		"Pidginin käyttämä monialustainen käyttöliittymäkirjasto"
 
 !define PIDGIN_SHORTCUTS_SECTION_DESCRIPTION   	"Pikakuvakkeet Pidginin käynnistämiseksi"
 !define PIDGIN_DESKTOP_SHORTCUT_DESC   		"Tee Pidgin-pikakuvake työpöydälle"
@@ -53,4 +55,26 @@
 !define PIDGIN_SPELLCHECK_DICT_ERROR		"Virhe asennettaessa oikoluvun sanakirjaa"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Tuki oikoluvulle.  (Asennukseen tarvitaan Internet-yhteys)"
 !define ASPELL_INSTALL_FAILED			"Asennus epäonnistui"
+!define PIDGIN_SPELLCHECK_BRETON		"bretoni"
+!define PIDGIN_SPELLCHECK_CATALAN		"katalaani"
+!define PIDGIN_SPELLCHECK_CZECH		"tshekki"
+!define PIDGIN_SPELLCHECK_WELSH		"kymri"
+!define PIDGIN_SPELLCHECK_DANISH		"tanska"
+!define PIDGIN_SPELLCHECK_GERMAN		"saksa"
+!define PIDGIN_SPELLCHECK_GREEK		"kreikka"
+!define PIDGIN_SPELLCHECK_ENGLISH		"englanti"
+!define PIDGIN_SPELLCHECK_ESPERANTO		"esperanto"
+!define PIDGIN_SPELLCHECK_SPANISH		"espanja"
+!define PIDGIN_SPELLCHECK_FAROESE		"fääri"
+!define PIDGIN_SPELLCHECK_FRENCH		"ranska"
+!define PIDGIN_SPELLCHECK_ITALIAN		"italia"
+!define PIDGIN_SPELLCHECK_DUTCH		"hollanti"
+!define PIDGIN_SPELLCHECK_NORWEGIAN		"norja"
+!define PIDGIN_SPELLCHECK_POLISH		"puola"
+!define PIDGIN_SPELLCHECK_PORTUGUESE		"portugali"
+!define PIDGIN_SPELLCHECK_ROMANIAN		"romania"
+!define PIDGIN_SPELLCHECK_RUSSIAN		"venäjä"
+!define PIDGIN_SPELLCHECK_SLOVAK		"slovakia"
+!define PIDGIN_SPELLCHECK_SWEDISH		"ruotsi"
+!define PIDGIN_SPELLCHECK_UKRAINIAN		"ukraina"
 
--- a/po/de.po	Sun Oct 12 17:41:26 2008 +0000
+++ b/po/de.po	Sun Oct 12 17:41:36 2008 +0000
@@ -11,9 +11,9 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-27 13:06+0200\n"
-"PO-Revision-Date: 2008-09-27 13:02+0200\n"
-"Last-Translator: Björn Voigt <bjoern@cs.tu-berlin.de>\n"
+"POT-Creation-Date: 2008-09-30 18:09+0200\n"
+"PO-Revision-Date: 2008-09-30 18:09+0200\n"
+"Last-Translator: Jochen Kemnade <jochenkemnade@web.de>\n"
 "Language-Team: Deutsch <de@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -1128,7 +1128,6 @@
 msgid "%s has sent you a message. (%s)"
 msgstr "%s hat Ihnen eine Nachricht gesendet. (%s)"
 
-#, c-format
 msgid "Unknown pounce event. Please report this!"
 msgstr "Unbekanntes Alarm-Ereignis. Bitte berichten Sie dieses Problem!"
 
@@ -1498,7 +1497,6 @@
 "Wenn eine neue Unterhaltung eröffnet wird, fügt dieses Plugin die letzte "
 "Unterhaltung in die aktuelle Unterhaltung ein."
 
-#, c-format
 msgid "Online"
 msgstr "Online"
 
@@ -1521,10 +1519,10 @@
 msgstr "Keine Gruppierung"
 
 msgid "Nested Subgroup"
-msgstr ""
+msgstr "Verschachtelte Untergruppe"
 
 msgid "Nested Grouping (experimental)"
-msgstr ""
+msgstr "Verschachtelte Gruppen (experimentell)"
 
 msgid "Provides alternate buddylist grouping options."
 msgstr "Bietet alternative Einstellungen für die Kontaktlisten-Gruppierung."
@@ -1841,7 +1839,6 @@
 "Fehler beim Lesen vom Auflösungsprozess:\n"
 "%s"
 
-#, c-format
 msgid "Resolver process exited without answering our request"
 msgstr "Auflösungsprozess hat sich beendet ohne die Anfrage zu beantworten"
 
@@ -1932,7 +1929,6 @@
 msgid "Transfer of file %s complete"
 msgstr "Ãœbertragung der Datei %s ist komplett"
 
-#, c-format
 msgid "File transfer complete"
 msgstr "Dateiübertragung ist komplett"
 
@@ -1940,7 +1936,6 @@
 msgid "You canceled the transfer of %s"
 msgstr "Sie haben die Dateiübertragung von %s abgebrochen"
 
-#, c-format
 msgid "File transfer cancelled"
 msgstr "Dateiübertragung wurde abgebrochen"
 
@@ -2148,7 +2143,6 @@
 msgid "You are using %s, but this plugin requires %s."
 msgstr "Sie benutzen %s, aber dieses Plugin benötigt %s."
 
-#, c-format
 msgid "This plugin has not defined an ID."
 msgstr "Dieses Plugin hat keine ID definiert."
 
@@ -3044,7 +3038,6 @@
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
-#, c-format
 msgid "Away"
 msgstr "Abwesend"
 
@@ -3936,7 +3929,6 @@
 msgid "Extended Away"
 msgstr "Abwesend (erweitert)"
 
-#, c-format
 msgid "Do Not Disturb"
 msgstr "Nicht stören"
 
@@ -4711,220 +4703,166 @@
 "%s ist auf der lokalen Liste, aber nicht auf der Serverliste. Möchten Sie, "
 "dass der Buddy hinzugefügt wird?"
 
-#, c-format
 msgid "Unable to parse message"
 msgstr "Kann die Nachricht nicht parsen"
 
-#, c-format
 msgid "Syntax Error (probably a client bug)"
 msgstr "Syntaxfehler (wahrscheinlich ein Client-Bug)"
 
-#, c-format
 msgid "Invalid email address"
 msgstr "Ungültige E-Mail-Adresse"
 
-#, c-format
 msgid "User does not exist"
 msgstr "Benutzer existiert nicht"
 
-#, c-format
 msgid "Fully qualified domain name missing"
 msgstr "Der Fully Qualified Domain Name fehlt"
 
-#, c-format
 msgid "Already logged in"
 msgstr "Schon angemeldet"
 
-#, c-format
 msgid "Invalid username"
 msgstr "Ungültiger Benutzername"
 
-#, c-format
 msgid "Invalid friendly name"
 msgstr "Ungültiger Freundesname"
 
-#, c-format
 msgid "List full"
 msgstr "Liste voll"
 
-#, c-format
 msgid "Already there"
 msgstr "Schon da"
 
-#, c-format
 msgid "Not on list"
 msgstr "Nicht auf der Liste"
 
-#, c-format
 msgid "User is offline"
 msgstr "Benutzer ist offline"
 
-#, c-format
 msgid "Already in the mode"
 msgstr "Bereits in diesem Modus"
 
-#, c-format
 msgid "Already in opposite list"
 msgstr "Bereits in der „Gegenteil-Liste“"
 
-#, c-format
 msgid "Too many groups"
 msgstr "Zu viele Gruppen"
 
-#, c-format
 msgid "Invalid group"
 msgstr "Ungültige Gruppe"
 
-#, c-format
 msgid "User not in group"
 msgstr "Benutzer ist nicht in der Gruppe"
 
-#, c-format
 msgid "Group name too long"
 msgstr "Name der Gruppe ist zu lang"
 
-#, c-format
 msgid "Cannot remove group zero"
 msgstr "Kann die Gruppe „Null“ nicht entfernen"
 
-#, c-format
 msgid "Tried to add a user to a group that doesn't exist"
 msgstr ""
 "Versuchte einen Benutzer zu einer nichtexistierenden Gruppe hinzuzufügen"
 
-#, c-format
 msgid "Switchboard failed"
 msgstr "Vermittlung gescheitert"
 
-#, c-format
 msgid "Notify transfer failed"
 msgstr "Ãœbertragung der Benachrichtigung gescheitert"
 
-#, c-format
 msgid "Required fields missing"
 msgstr "Notwendige Felder fehlen"
 
-#, c-format
 msgid "Too many hits to a FND"
 msgstr "Zu viele Treffer zu einem FND"
 
-#, c-format
 msgid "Not logged in"
 msgstr "Nicht angemeldet"
 
-#, c-format
 msgid "Service temporarily unavailable"
 msgstr "Dienst momentan nicht verfügbar"
 
-#, c-format
 msgid "Database server error"
 msgstr "Fehler des Datenbank-Servers"
 
-#, c-format
 msgid "Command disabled"
 msgstr "Kommando abgeschaltet"
 
-#, c-format
 msgid "File operation error"
 msgstr "Dateiverarbeitungsfehler"
 
-#, c-format
 msgid "Memory allocation error"
 msgstr "Fehler bei der Speicheranforderung"
 
-#, c-format
 msgid "Wrong CHL value sent to server"
 msgstr "Falscher CHL-Wert zum Server gesendet"
 
-#, c-format
 msgid "Server busy"
 msgstr "Server beschäftigt"
 
-#, c-format
 msgid "Server unavailable"
 msgstr "Server unerreichbar"
 
-#, c-format
 msgid "Peer notification server down"
 msgstr "Peer-Benachrichtigungsserver nicht erreichbar"
 
-#, c-format
 msgid "Database connect error"
 msgstr "Datenbank-Verbindungsfehler"
 
-#, c-format
 msgid "Server is going down (abandon ship)"
 msgstr "Server fährt runter (melden Sie sich ab)"
 
-#, c-format
 msgid "Error creating connection"
 msgstr "Fehler beim Herstellen der Verbindung"
 
-#, c-format
 msgid "CVR parameters are either unknown or not allowed"
 msgstr "CVR-Parameter sind entweder unbekannt oder nicht erlaubt"
 
-#, c-format
 msgid "Unable to write"
 msgstr "Schreiben nicht möglich"
 
-#, c-format
 msgid "Session overload"
 msgstr "Sitzung überlastet"
 
-#, c-format
 msgid "User is too active"
 msgstr "Benutzer ist zu aktiv"
 
-#, c-format
 msgid "Too many sessions"
 msgstr "Zu viele Sitzungen"
 
-#, c-format
 msgid "Passport not verified"
 msgstr "Passport (MSN Benutzerausweis) wurde nicht überprüft"
 
-#, c-format
 msgid "Bad friend file"
 msgstr "Falsche Friends-Datei"
 
-#, c-format
 msgid "Not expected"
 msgstr "Nicht erwartet"
 
-#, c-format
 msgid "Friendly name changes too rapidly"
 msgstr "Benutzernamen werden zu oft geändert"
 
-#, c-format
 msgid "Server too busy"
 msgstr "Server ist zu beschäftigt"
 
-#, c-format
 msgid "Authentication failed"
 msgstr "Authentifizierung fehlgeschlagen"
 
-#, c-format
 msgid "Not allowed when offline"
 msgstr "Nicht erlaubt im Offline-Modus"
 
-#, c-format
 msgid "Not accepting new users"
 msgstr "Akzeptiert keine neuen Benutzer"
 
-#, c-format
 msgid "Kids Passport without parental consent"
 msgstr "Kinder-Passwort ohne die Zustimmung der Eltern"
 
-#, c-format
 msgid "Passport account not yet verified"
 msgstr "Passport-Konto wurde noch nicht überprüft"
 
-#, c-format
 msgid "Passport account suspended"
 msgstr "Passport-Konto gesperrt"
 
-#, c-format
 msgid "Bad ticket"
 msgstr "Falsches Ticket"
 
@@ -5503,6 +5441,12 @@
 msgid "%s has removed you from his or her buddy list."
 msgstr "Der Benutzer %s hat Sie von seiner Buddy-Liste gelöscht."
 
+msgid "Delete Buddy from Address Book?"
+msgstr "Buddy aus dem Adressbuch löschen?"
+
+msgid "Do you want to delete this buddy from your address book as well?"
+msgstr "Möchten Sie diesen Buddy außerdem aus Ihrem Adressbuch löschen?"
+
 #. only notify the user about problems adding to the friends list
 #. * maybe we should do something else for other lists, but it probably
 #. * won't cause too many problems if we just ignore it
@@ -6149,7 +6093,6 @@
 msgid "Error. SSL support is not installed."
 msgstr "Fehler. SSL ist nicht installiert."
 
-#, c-format
 msgid "This conference has been closed. No more messages can be sent."
 msgstr ""
 "Diese Konferenz wurde geschlossen. Es können keine Nachrichten mehr gesendet "
@@ -6419,23 +6362,18 @@
 msgid "Screen Sharing"
 msgstr "Gemeinsamer Bildschirm"
 
-#, c-format
 msgid "Free For Chat"
 msgstr "Bereit zum Chatten"
 
-#, c-format
 msgid "Not Available"
 msgstr "Nicht verfügbar"
 
-#, c-format
 msgid "Occupied"
 msgstr "Beschäftigt"
 
-#, c-format
 msgid "Web Aware"
 msgstr "In Web"
 
-#, c-format
 msgid "Invisible"
 msgstr "Unsichtbar"
 
@@ -7131,7 +7069,6 @@
 msgid "Attempting to connect to %s:%hu."
 msgstr "Verbindungsversuch mit %s:%hu."
 
-#, c-format
 msgid "Attempting to connect via proxy server."
 msgstr "Verbindungsversuch über einen Proxyserver."
 
@@ -7270,9 +7207,8 @@
 msgid "QQ Buddy"
 msgstr "QQ-Buddy"
 
-#, fuzzy
 msgid "Successed:"
-msgstr "Geschwindigkeit:"
+msgstr "Erfolgreich:"
 
 msgid "Change buddy information."
 msgstr "Buddy-Informationen bearbeiten"
@@ -7309,9 +7245,8 @@
 msgid "Remove buddy"
 msgstr "Buddy entfernen"
 
-#, fuzzy
 msgid "Remove from other's buddy list"
-msgstr "Von seiner/ihrer Buddy-Liste entfernen"
+msgstr "Von der Liste des Buddys entfernen"
 
 #, c-format
 msgid "%d needs authentication"
@@ -7378,13 +7313,13 @@
 msgid "Approve"
 msgstr "Akzeptieren"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to join Qun %d, operated by admin %d"
 msgstr "Dem Qun %d, moderiert von admin %d, konnte nicht beigetreten werden"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Successed to join Qun %d, operated by admin %d"
-msgstr "Ihre Anfrage, der Gruppe %d beizutreten wurde von Admin %d abgelehnt"
+msgstr "Erfolgreicher Beitritt in den Qun %d, moderiert vom Admin %d"
 
 #, c-format
 msgid "[%d] removed from Qun \"%d\""
@@ -7403,7 +7338,6 @@
 msgid "I am a member"
 msgstr "Ich bin Mitglied"
 
-#, fuzzy
 msgid "I am requesting"
 msgstr "Ich frage an"
 
@@ -7419,16 +7353,15 @@
 msgid "Remove from Qun"
 msgstr "vom Qun entfernen"
 
-#, fuzzy
 msgid "Join to Qun"
-msgstr "Chat betreten"
+msgstr "Qun betreten"
 
 #, c-format
 msgid "Qun %d denied to join"
-msgstr ""
+msgstr "Qun %d hat Ihren Beitritt abgelehnt"
 
 msgid "Join Qun, Unknow Reply"
-msgstr ""
+msgstr "Qun-Beitritt, Unbekannte Antwort"
 
 msgid "You entered a group ID outside the acceptable range"
 msgstr "Sie haben eine Gruppen-ID außerhalb des erlaubten Bereichs angegeben"
@@ -7447,9 +7380,8 @@
 msgid "Do you want to approve the request?"
 msgstr "Wollen sie die Anfrage akzeptieren?"
 
-#, fuzzy
 msgid "Change Qun member"
-msgstr "Telefonnummer"
+msgstr "Qun-Mitglied ändern"
 
 msgid "Change Qun information"
 msgstr "Qun-Informationen bearbeiten"
@@ -7457,14 +7389,13 @@
 msgid "You have successfully created a Qun"
 msgstr "Sie haben einen Qun angelegt"
 
-#, fuzzy
 msgid "Would you like to set up the detail information now?"
-msgstr "Möchten Sie jetzt die Qun-Details einstellen?"
+msgstr "Möchten Sie jetzt Detail-Informationen einstellen?"
 
 msgid "Setup"
 msgstr "Setup"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s\n"
 "\n"
@@ -7503,12 +7434,11 @@
 msgstr " FromMobile"
 
 msgid " BindMobile"
-msgstr "BindMobile"
+msgstr " BindMobile"
 
 msgid " Video"
 msgstr " Video"
 
-#, fuzzy
 msgid " Zone"
 msgstr " Zone"
 
@@ -7607,7 +7537,6 @@
 msgid "Auto"
 msgstr "Auto"
 
-#, fuzzy
 msgid "Connect by TCP"
 msgstr "Ãœber TCP verbinden"
 
@@ -7632,26 +7561,25 @@
 msgstr "Ungültige Länge des Tokens, %d"
 
 msgid "Unable login for not support Redirect_EX now"
-msgstr ""
-
-#, fuzzy, c-format
+msgstr "Anmeldung nicht möglich, Redirect_EX wird noch nicht unterstützt"
+
+#, c-format
 msgid "Error password: %s"
-msgstr "Fehler beim Ändern des Passworts"
+msgstr "Passwort-Fehler: %s"
 
 #, c-format
 msgid "Need active: %s"
-msgstr ""
-
-#, fuzzy, c-format
+msgstr "Brauche aktiv: %s"
+
+#, c-format
 msgid "Unable login for unknow reply code 0x%02X"
-msgstr "Ungültiger Token-Antwort-Code, 0x%02X"
+msgstr "Anmeldung nicht möglich, unbekannter Antwort-Code 0x%02X"
 
 msgid "Keep alive error"
 msgstr "Fehler beim Aufrechterhalten der Verbindung (Keep alive)"
 
-#, fuzzy
 msgid "Failed to connect all servers"
-msgstr "Verbinden zum Server fehlgeschlagen"
+msgstr "Konnte nicht alle Server verbinden"
 
 #. we didn't successfully connect. tdt->toc_fd is valid here
 msgid "Unable to connect."
@@ -7678,9 +7606,8 @@
 msgstr "Verbindung verloren"
 
 #. Update the login progress status display
-#, fuzzy, c-format
 msgid "Request token"
-msgstr "Anfrage verweigert"
+msgstr "Anfragekürzel"
 
 msgid "Couldn't resolve host"
 msgstr "Kann den Hostnamen nicht auflösen"
@@ -7696,17 +7623,15 @@
 msgstr "QQ-Fehler"
 
 msgid "Unknow SERVER CMD"
-msgstr ""
-
-#, fuzzy, c-format
+msgstr "Unbekanntes SERVER-CMD"
+
+#, c-format
 msgid ""
 "Error reply of %s(0x%02X)\n"
 "Room %d, reply 0x%02X"
 msgstr ""
-"Antwort %s(0x%02X )\n"
-"Gesendet %s(0x%02X )\n"
-"Raum-ID %d, Antwort [0x%02X]: \n"
-"%s"
+"Fehlerantwort %s(0x%02X)\n"
+"Raum %d, Antwort 0x%02X"
 
 msgid "QQ Qun Command"
 msgstr "QQ-Qun-Kommando"
@@ -7718,9 +7643,8 @@
 msgid "Can not decrypt login reply"
 msgstr "Kann die Antwort der Anmeldung nicht entschlüsseln"
 
-#, fuzzy
 msgid "Unknow reply CMD"
-msgstr "Unbekannter Grund"
+msgstr "Unbekanntes Antwort-CMD"
 
 #, c-format
 msgid "%d has declined the file %s"
@@ -7733,11 +7657,9 @@
 msgid "%d canceled the transfer of %s"
 msgstr "%d hat die Ãœbertragung von %s abgebrochen"
 
-#, fuzzy
 msgid "Do you approve the requestion?"
 msgstr "Wollen sie die Anfrage akzeptieren?"
 
-#, fuzzy
 msgid "Do you add the buddy?"
 msgstr "Möchten Sie diesen Buddy hinzufügen?"
 
@@ -7749,32 +7671,30 @@
 msgid "Would you like to add him?"
 msgstr "Möchten Sie ihn hinzufügen?"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s added you [%s] to buddy list"
-msgstr "%s hat Sie [%s] zu seiner Buddy-Liste hinzugefügt"
-
-#, fuzzy
+msgstr "%s hat Sie [%s] zur Buddy-Liste hinzugefügt"
+
 msgid "QQ Budy"
-msgstr "Buddy"
+msgstr "QQ-Buddy"
 
 #, c-format
 msgid "Requestion rejected by %s"
-msgstr ""
+msgstr "Anfrage abgelehnt von %s"
 
 #, c-format
 msgid "Requestion approved by %s"
-msgstr ""
+msgstr "Anfrage akzeptiert von %s"
 
 #. TODO: this should go through purple_account_request_authorization()
 #, c-format
 msgid "%s wants to add you [%s] as a friend"
 msgstr "%s möchte Sie [%s] als Freund hinzufügen"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s is not in buddy list"
-msgstr "%s ist nicht in Ihrer Buddy-Liste"
-
-#, fuzzy
+msgstr "%s ist nicht in der Buddy-Liste"
+
 msgid "Would you add?"
 msgstr "Möchten Sie ihn hinzufügen?"
 
@@ -8389,7 +8309,6 @@
 msgid "<br><b>Channel Topic:</b><br>%s"
 msgstr "<br><b>Thema des Kanals:</b><br>%s"
 
-#, c-format
 msgid "<br><b>Channel Modes:</b> "
 msgstr "<br><b>Kanal-Modi:</b> "
 
@@ -8414,7 +8333,6 @@
 msgid "Channel Public Keys List"
 msgstr "Liste der öffentlichen Schlüssel des Kanals"
 
-#, c-format
 msgid ""
 "Channel authentication is used to secure the channel from unauthorized "
 "access. The authentication may be based on passphrase and digital "
@@ -8819,7 +8737,6 @@
 msgid "Your Current Mood"
 msgstr "Ihre momentane Stimmung"
 
-#, c-format
 msgid "Normal"
 msgstr "Normal"
 
@@ -9205,47 +9122,37 @@
 msgid "No server statistics available"
 msgstr "Keine Serverstatistik verfügbar"
 
-#, c-format
 msgid "Failure: Version mismatch, upgrade your client"
 msgstr "Fehler: Unterschiedliche Version, aktualisieren Sie Ihren Client"
 
-#, c-format
 msgid "Failure: Remote does not trust/support your public key"
 msgstr ""
 "Fehler: Die entfernte Seite vertraut Ihrem öffentlichen Schlüssel nicht"
 
-#, c-format
 msgid "Failure: Remote does not support proposed KE group"
 msgstr ""
 "Fehler: Entferntes Programm unterstützt nicht die vorgeschlagen KE-Gruppe"
 
-#, c-format
 msgid "Failure: Remote does not support proposed cipher"
 msgstr ""
 "Fehler: Entferntes Programm unterstützt die vorgeschlagene Cipher nicht"
 
-#, c-format
 msgid "Failure: Remote does not support proposed PKCS"
 msgstr "Fehler: Entferntes Programm unterstützt die vorgeschlagene PKCS nicht"
 
-#, c-format
 msgid "Failure: Remote does not support proposed hash function"
 msgstr ""
 "Fehler: Entferntes Programm unterstützt die vorgeschlagen Hashfunktion nicht"
 
-#, c-format
 msgid "Failure: Remote does not support proposed HMAC"
 msgstr "Fehler: Entferntes Programm unterstützt das vorgeschlagene HMAC nicht"
 
-#, c-format
 msgid "Failure: Incorrect signature"
 msgstr "Fehler: Falsche Signatur"
 
-#, c-format
 msgid "Failure: Invalid cookie"
 msgstr "Fehler: Ungültiger Cookie"
 
-#, c-format
 msgid "Failure: Authentication failed"
 msgstr "Fehler: Authentifizierung fehlgeschlagen"
 
@@ -9342,7 +9249,6 @@
 msgid "Warning of %s not allowed."
 msgstr "Verwarnung von %s nicht erlaubt."
 
-#, c-format
 msgid "A message has been dropped, you are exceeding the server speed limit."
 msgstr ""
 "Eine Nachricht ging verloren. Sie überschreiten die Geschwindigkeitsgrenze "
@@ -9366,39 +9272,30 @@
 "Eine Nachricht von %s hat Sie nicht erreicht, da sie zu schnell gesendet "
 "wurde."
 
-#, c-format
 msgid "Failure."
 msgstr "Fehler."
 
-#, c-format
 msgid "Too many matches."
 msgstr "Zu viele Ãœbereinstimmungen."
 
-#, c-format
 msgid "Need more qualifiers."
 msgstr "Benötige mehr Angaben."
 
-#, c-format
 msgid "Dir service temporarily unavailable."
 msgstr "Verzeichnis-Dienst ist zur Zeit nicht verfügbar."
 
-#, c-format
 msgid "Email lookup restricted."
 msgstr "E-Mail-Suche eingeschränkt."
 
-#, c-format
 msgid "Keyword ignored."
 msgstr "Stichwort ignoriert."
 
-#, c-format
 msgid "No keywords."
 msgstr "Keine Stichwörter."
 
-#, c-format
 msgid "User has no directory information."
 msgstr "Der Benutzer hat kein Profil."
 
-#, c-format
 msgid "Country not supported."
 msgstr "Land nicht unterstützt."
 
@@ -9406,19 +9303,15 @@
 msgid "Failure unknown: %s."
 msgstr "Unbekannter Fehler: %s."
 
-#, c-format
 msgid "Incorrect username or password."
 msgstr "Ungültiger Benutzername oder Passwort."
 
-#, c-format
 msgid "The service is temporarily unavailable."
 msgstr "Der Dienst ist zur Zeit nicht verfügbar."
 
-#, c-format
 msgid "Your warning level is currently too high to log in."
 msgstr "Ihre Warnstufe ist zur Zeit zu hoch, um sich anzumelden."
 
-#, c-format
 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."
@@ -9505,7 +9398,7 @@
 #, c-format
 msgid "%s has sent you a webcam invite, which is not yet supported."
 msgstr ""
-"%s hat Ihnen eine Webcam-Einladung gesenden, die noch nicht unterstützt wird."
+"%s hat Ihnen eine Webcam-Einladung gesendet, die noch nicht unterstützt wird."
 
 msgid "Your Yahoo! message did not get sent."
 msgstr "Ihre Yahoo!-Nachricht wurde nicht verschickt."
@@ -10262,29 +10155,24 @@
 msgstr " (%s)"
 
 #. 10053
-#, c-format
 msgid "Connection interrupted by other software on your computer."
 msgstr ""
 "Die Verbindung wurde von einer anderen Software auf ihrem Computer "
 "unterbrochen."
 
 #. 10054
-#, c-format
 msgid "Remote host closed connection."
 msgstr "Der entfernte Host hat die Verbindung beendet."
 
 #. 10060
-#, c-format
 msgid "Connection timed out."
 msgstr "Verbindungsabbruch wegen Zeitüberschreitung."
 
 #. 10061
-#, c-format
 msgid "Connection refused."
 msgstr "Verbindung abgelehnt."
 
 #. 10048
-#, c-format
 msgid "Address already in use."
 msgstr "Adresse wird bereits benutzt."
 
@@ -10893,6 +10781,9 @@
 msgid "SSL Servers"
 msgstr "SSL-Server"
 
+msgid "Network disconnected"
+msgstr "vom Netzwerk abgemeldet"
+
 msgid "Unknown command."
 msgstr "Unbekanntes Kommando."
 
@@ -11515,7 +11406,6 @@
 "geschützt.  Die Datei 'COPYRIGHT' enthält die komplette Liste der "
 "Mitwirkenden.  Wir übernehmen keine Haftung für dieses Programm.<BR><BR>"
 
-#, c-format
 msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
 msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin auf irc.freenode.net<BR><BR>"
 
@@ -11775,7 +11665,8 @@
 
 msgid "Color to draw hyperlinks after it has been visited (or activated)."
 msgstr ""
-"Farbe zum Darstellen von Hyperlinks, wenn sie besucht (oder aktiviert) wurden"
+"Farbe zum Darstellen von Hyperlinks, wenn sie besucht (oder aktiviert) "
+"wurden."
 
 msgid "Hyperlink prelight color"
 msgstr "Hyperlink-Farbe"
@@ -11799,7 +11690,7 @@
 "Farbe, mit der der Name in einer empfangenen Nachricht dargestellt wird."
 
 msgid "\"Attention\" Name Color"
-msgstr "Farbe des Absendernamens für \"Achtung\"-Nachrichten"
+msgstr "Farbe des Absendernamens für „Achtung“-Nachrichten"
 
 msgid "Color to draw the name of a message you received containing your name."
 msgstr ""
@@ -11826,7 +11717,7 @@
 "Die Farbe, die für die Tipp-Benachrichtigungsmeldung benutzt werden soll"
 
 msgid "Typing notification font"
-msgstr "Tipp-Benachrichtigungs-Schriftart"
+msgstr "Tipp-Benachrichtigungsschriftart"
 
 msgid "The font to use for the typing notification"
 msgstr ""
@@ -11885,11 +11776,9 @@
 msgid "Save Image"
 msgstr "Bild speichern"
 
-#, c-format
 msgid "_Save Image..."
 msgstr "Bild _speichern..."
 
-#, c-format
 msgid "_Add Custom Smiley..."
 msgstr "Benutzerdefinierten Smiley _hinzufügen..."
 
@@ -12043,7 +11932,7 @@
 msgstr "Löschen des Mitschnitts fehlgeschlagen"
 
 msgid "Check permissions and try again."
-msgstr "Überprüfenb Sie die Berechtigungen und versuchen Sie es erneut."
+msgstr "Überprüfen Sie die Berechtigungen und versuchen Sie es erneut."
 
 #, c-format
 msgid ""
@@ -12614,27 +12503,21 @@
 msgid "Sound Selection"
 msgstr "Klang-Auswahl"
 
-#, c-format
 msgid "Quietest"
 msgstr "Am leisesten"
 
-#, c-format
 msgid "Quieter"
 msgstr "Leiser"
 
-#, c-format
 msgid "Quiet"
 msgstr "Leise"
 
-#, c-format
 msgid "Loud"
 msgstr "Laut"
 
-#, c-format
 msgid "Louder"
 msgstr "Lauter"
 
-#, c-format
 msgid "Loudest"
 msgstr "Am lautesten"
 
@@ -12655,20 +12538,17 @@
 "Klang-_Abspielbefehl:\n"
 "(%s für den Dateinamen)"
 
-#, fuzzy
 msgid "M_ute sounds"
 msgstr "Stu_mmschalten"
 
 msgid "Sounds when conversation has _focus"
 msgstr "Klang, wenn das Gespräch den _Fokus hat"
 
-#, fuzzy
 msgid "_Enable sounds:"
-msgstr "Klänge aktivieren:"
-
-#, fuzzy
+msgstr "_Klänge aktivieren:"
+
 msgid "V_olume:"
-msgstr "Lautstärke:"
+msgstr "_Lautstärke:"
 
 msgid "Play"
 msgstr "Abspielen"
@@ -13638,7 +13518,6 @@
 msgid "Select Color"
 msgstr "Farbe auswählen"
 
-#, c-format
 msgid "Select Interface Font"
 msgstr "Schriftart wählen"
 
@@ -13865,7 +13744,6 @@
 msgid "Timestamp Format Options"
 msgstr "Zeitstempelformat-Optionen"
 
-#, c-format
 msgid "_Force 24-hour time format"
 msgstr "_Erzwinge 24-Stunden Zeitformat"
 
--- a/po/fi.po	Sun Oct 12 17:41:26 2008 +0000
+++ b/po/fi.po	Sun Oct 12 17:41:36 2008 +0000
@@ -10,8 +10,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-08-28 12:10+0300\n"
-"PO-Revision-Date: 2008-08-28 12:19+0300\n"
+"POT-Creation-Date: 2008-09-30 19:46+0300\n"
+"PO-Revision-Date: 2008-09-30 19:46+0300\n"
 "Last-Translator: Timo Jyrinki <timo.jyrinki@iki.fi>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -73,7 +73,7 @@
 msgid "Remember password"
 msgstr "Muista salasana"
 
-msgid "There's no protocol plugins installed."
+msgid "There are no protocol plugins installed."
 msgstr "Yhteyskäytäntöliitännäisiä ei ole asennettu."
 
 msgid "(You probably forgot to 'make install'.)"
@@ -298,7 +298,8 @@
 msgstr "Syötä tyhjä merkkijono palauttaaksesi oletusnimen."
 
 msgid "Removing this contact will also remove all the buddies in the contact"
-msgstr "Kontaktin poistaminen poistaa myös kaikki kontaktissa olevat tuttavat"
+msgstr ""
+"Yhteystiedon poistaminen poistaa myös kaikki yhteystiedossa olevat tuttavat"
 
 msgid "Removing this group will also remove all the buddies in the group"
 msgstr "Ryhmän poistaminen poistaa myös kaikki ryhmässä olevat tuttavat"
@@ -1508,6 +1509,12 @@
 msgid "No Grouping"
 msgstr "Ei ryhmittelyä"
 
+msgid "Nested Subgroup"
+msgstr "Sisäkkäinen alaryhmä"
+
+msgid "Nested Grouping (experimental)"
+msgstr "Sisäkkäinen ryhmittely (kokeellinen)"
+
 msgid "Provides alternate buddylist grouping options."
 msgstr "Mahdollistaa vaihtoehtoisia tuttavien ryhmittelyvalintoja."
 
@@ -1822,8 +1829,8 @@
 "%s"
 
 #, c-format
-msgid "EOF while reading from resolver process"
-msgstr "EOF luettaessa selvitysprosessista"
+msgid "Resolver process exited without answering our request"
+msgstr "Selvitinprosessi päättyi vastaamatta pyyntöön"
 
 #, c-format
 msgid "Thread creation failure: %s"
@@ -4517,6 +4524,11 @@
 msgid "File transfer proxies"
 msgstr "Tiedostonsiirron välipalvelimet"
 
+#. this should probably be part of global smiley theme settings later on,
+#. shared with MSN
+msgid "Show Custom Smileys"
+msgstr "Näytä omat hymiöt"
+
 #, c-format
 msgid "%s has left the conversation."
 msgstr "%s on lähtenyt keskustelusta."
@@ -4624,8 +4636,8 @@
 "This information is visible to all contacts on your contact list, so choose "
 "something appropriate."
 msgstr ""
-"Tämä tieto on näkyvillä kaikille tuttavissa oleville kontakteille, joten "
-"valitse jotain soveliasta."
+"Tämä tieto on näkyvillä kaikille yhteystietoluettelossa oleville "
+"yhteystiedoille, joten valitse jotain soveliasta."
 
 msgid "Set Nickname..."
 msgstr "Aseta kutsumanimi..."
@@ -4868,6 +4880,10 @@
 msgstr "Passport-tiliä ei ole verifioitu"
 
 #, c-format
+msgid "Passport account suspended"
+msgstr "Passport-tili jäädytetty"
+
+#, c-format
 msgid "Bad ticket"
 msgstr "Bad ticket"
 
@@ -4879,6 +4895,12 @@
 msgid "MSN Error: %s\n"
 msgstr "MSN-virhe: %s\n"
 
+msgid "Other Contacts"
+msgstr "Muut yhteystiedot"
+
+msgid "Non-IM Contacts"
+msgstr "Pikaviestittömät yhteystiedot"
+
 msgid "Nudge"
 msgstr "Tönäise"
 
@@ -4950,6 +4972,9 @@
 msgid "Page"
 msgstr "Lähetä"
 
+msgid "Has you"
+msgstr "Olet hänen listallaan"
+
 msgid "Home Phone Number"
 msgstr "Kotipuhelinnumero"
 
@@ -5229,6 +5254,9 @@
 msgid "Unable to add user"
 msgstr "Käyttäjää ei voi lisätä"
 
+msgid "The following users are missing from your addressbook"
+msgstr "Seuraavat käyttäjät puuttuvat osoitekirjastasi"
+
 #, c-format
 msgid "Unable to add user on %s (%s)"
 msgstr "Käyttäjää ei voi lisätä %s (%s)"
@@ -5413,6 +5441,12 @@
 msgid "%s has removed you from his or her buddy list."
 msgstr "%s on poistanut sinut tuttavistaan."
 
+msgid "Delete Buddy from Address Book?"
+msgstr "Poista tuttava osoitekirjasta?"
+
+msgid "Do you want to delete this buddy from your address book as well?"
+msgstr "Haluatko poistaa tämän tuttavan myös osoitekirjastasi?"
+
 #. only notify the user about problems adding to the friends list
 #. * maybe we should do something else for other lists, but it probably
 #. * won't cause too many problems if we just ignore it
@@ -5426,9 +5460,6 @@
 msgid "This Hotmail account may not be active."
 msgstr "Tämä Hotmail-tili ei välttämättä ole aktiivinen."
 
-msgid "Has you"
-msgstr "Olet hänen listallaan"
-
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -6104,6 +6135,9 @@
 msgid "AIM Protocol Plugin"
 msgstr "AIM-yhteyskäytäntöliitännäinen"
 
+msgid "ICQ UIN..."
+msgstr "ICQ UIN..."
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -6445,7 +6479,6 @@
 msgid "Unable to get a valid login hash."
 msgstr "Kelvollista sisäänkirjautumistiivistettä ei saatu."
 
-#. allow multple logins?
 msgid "Password sent"
 msgstr "Salasana lähetetty"
 
@@ -7124,14 +7157,22 @@
 msgid "Other"
 msgstr "Muu"
 
-msgid "Modify my information"
-msgstr "Muokkaa tietojani"
-
-msgid "Update my information"
-msgstr "Päivitä tietoni"
-
-msgid "Your information has been updated"
-msgstr "Tietosi on päivitetty"
+msgid "Modify information"
+msgstr "Muokkaa tietoja"
+
+msgid "Update information"
+msgstr "Päivitä tiedot"
+
+#. TODO: We don't really need to notify the user about this, do we?
+#. TODO: Does the user really need to be notified about this?
+msgid "QQ Buddy"
+msgstr "QQ-tuttava"
+
+msgid "Successed:"
+msgstr "Onnistui:"
+
+msgid "Change buddy information."
+msgstr "Muuta tuttavan tietoja."
 
 #, c-format
 msgid ""
@@ -7147,29 +7188,27 @@
 msgid "You rejected %d's request"
 msgstr "Kieltäydyit %d:n pyynnöstä"
 
-msgid "Input your reason:"
-msgstr "Anna syy:"
-
 msgid "Reject request"
 msgstr "Kieltäydy pyynnöstä"
 
 #. title
-msgid "Sorry, you are not my type..."
+msgid "Sorry, you are not my style..."
 msgstr "Pahoittelut, en ole kiinnostunut..."
 
 msgid "Add buddy with auth request failed"
 msgstr "Lisää tuttava jolla on epäonnistunut valtuutuspyyntö"
 
-#. TODO: We don't really need to notify the user about this, do we?
-msgid "You have successfully removed a buddy"
-msgstr "Tuttava poistettu onnistuneesti"
-
-#. TODO: Does the user really need to be notified about this?
-msgid "You have successfully removed yourself from your friend's buddy list"
-msgstr "Sinut on onnistuneesti poistettu kaverisi tuttavista"
-
-#, c-format
-msgid "User %d needs authentication"
+msgid "Failed:"
+msgstr "Epäonnistui:"
+
+msgid "Remove buddy"
+msgstr "Poista tuttava"
+
+msgid "Remove from other's buddy list"
+msgstr "Poista toisen tuttavista"
+
+#, c-format
+msgid "%d needs authentication"
 msgstr "Käyttäjä %d tarvitsee valtuutuksen"
 
 msgid "Input request here"
@@ -7186,14 +7225,14 @@
 msgstr "Lähetä"
 
 #, c-format
-msgid "You have added %d to buddy list"
-msgstr "Käyttäjä %d lisätty tuttaviisi"
-
-msgid "QQid Error"
-msgstr "QQid-virhe"
-
-msgid "Invalid QQid"
-msgstr "Epäkelpo QQid"
+msgid "Add into %d's buddy list"
+msgstr "Lisää %d:n tuttaviin"
+
+msgid "QQ Number Error"
+msgstr "QQ-numerovirhe"
+
+msgid "Invalid QQ Number"
+msgstr "Epäkelpo QQ-numero"
 
 msgid "ID: "
 msgstr "Tunniste (ID): "
@@ -7213,19 +7252,19 @@
 msgid "QQ Qun"
 msgstr "QQ Qun"
 
-msgid "Please enter external group ID"
-msgstr "Syötä ulkopuolisen ryhmän tunniste (ID)"
-
-msgid "You can only search for permanent QQ groups\n"
-msgstr "Voit etsiä vain pysyviä QQ-ryhmiä\n"
-
-#, c-format
-msgid "User %d requested to join group %d"
-msgstr "Käyttäjä %d haki ryhmän %d jäsenyyttä"
-
-#, c-format
-msgid "Reason: %s"
-msgstr "Syy: %s"
+msgid "Please enter Qun number"
+msgstr "Anna Qun-numero"
+
+msgid "You can only search for permanent Qun\n"
+msgstr "Voit etsiä vain pysyviä Quneja\n"
+
+#, c-format
+msgid "%d request to join Qun %d"
+msgstr "%d pyysi liittymään Quniin %d"
+
+#, c-format
+msgid "Message: %s"
+msgstr "Viesti: %s"
 
 msgid "QQ Qun Operation"
 msgstr "QQ Qun -toiminta"
@@ -7233,33 +7272,33 @@
 msgid "Approve"
 msgstr "Hyväksy"
 
-#, c-format
-msgid "Your request to join group %d has been rejected by admin %d"
+#, fuzzy, c-format
+msgid "Failed to join Qun %d, operated by admin %d"
+msgstr "Liittyminen tuttavan seuraan keskusteluhuoneeseen epäonnistui"
+
+#, fuzzy, c-format
+msgid "Successed to join Qun %d, operated by admin %d"
 msgstr "Pyyntösi liittyä ryhmään %d evättiin ylläpitäjän %d toimesta"
 
-#, c-format
-msgid "Your request to join group %d has been approved by admin %d"
-msgstr "Pyyntösi liittyä ryhmään %d hyväksyttiin ylläpitäjän %d toimesta"
-
-#, c-format
-msgid "You [%d] have left group \"%d\""
+#, fuzzy, c-format
+msgid "[%d] removed from Qun \"%d\""
 msgstr "Sinä [%d] olet poistunut ryhmästä \"%d\""
 
-#, c-format
-msgid "You [%d] have been added to group \"%d\""
+msgid "Notice:"
+msgstr "Huomautus:"
+
+#, fuzzy, c-format
+msgid "[%d] added to Qun \"%d\""
 msgstr "Sinä [%d] olet lisätty ryhmään \"%d\""
 
-msgid "This group has been added to your buddy list"
-msgstr "Tämä ryhmä on lisätty tuttaviisi"
-
 msgid "I am not a member"
 msgstr "En ole jäsen"
 
 msgid "I am a member"
 msgstr "Olen jäsen"
 
-msgid "I am applying to join"
-msgstr "Pyydän liittymistä"
+msgid "I am requesting"
+msgstr "Olen tekemässä pyyntöä"
 
 msgid "I am the admin"
 msgstr "Olen ylläpitäjä"
@@ -7267,17 +7306,24 @@
 msgid "Unknown status"
 msgstr "Tuntematon tila"
 
-msgid "This group does not allow others to join"
+#, fuzzy
+msgid "The Qun does not allow others to join"
 msgstr "Tämä ryhmä ei salli muiden liittyä"
 
-msgid "You have successfully left the group"
-msgstr "Ryhmästä poistuminen onnistui"
-
-msgid "QQ Group Auth"
-msgstr "QQ-ryhmän valtuutus"
-
-msgid "Your authorization request has been accepted by the QQ server"
-msgstr "QQ-palvelin on hyväksynyt valtuutuspyyntösi"
+#, fuzzy
+msgid "Remove from Qun"
+msgstr "Poista ryhmä"
+
+#, fuzzy
+msgid "Join to Qun"
+msgstr "Liity ryhmäkeskusteluun"
+
+#, c-format
+msgid "Qun %d denied to join"
+msgstr "Qun %d kielsi liittymisen"
+
+msgid "Join Qun, Unknow Reply"
+msgstr "Quniin liittyminen, tuntematon vastaus"
 
 msgid "You entered a group ID outside the acceptable range"
 msgstr ""
@@ -7298,24 +7344,37 @@
 msgid "Do you want to approve the request?"
 msgstr "Haluatko hyväksyä pyynnön?"
 
-msgid "Enter your reason:"
-msgstr "Anna syy:"
-
-msgid "You have successfully modified Qun member"
-msgstr "Qun-jäsentä muokattu onnistuneesti"
-
-msgid "You have successfully modified Qun information"
-msgstr "Qun-tietojen muokkaus onnistui"
+#, fuzzy
+msgid "Change Qun member"
+msgstr "Puhelinnumero"
+
+#, fuzzy
+msgid "Change Qun information"
+msgstr "Kanavatiedot"
 
 msgid "You have successfully created a Qun"
 msgstr "Qun:n luonti onnistui"
 
-msgid "Would you like to set up the Qun details now?"
+#, fuzzy
+msgid "Would you like to set up the detail information now?"
 msgstr "Haluatko asettaa Qun:n yksityiskohdat nyt?"
 
 msgid "Setup"
 msgstr "Asetukset"
 
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+"%s"
+msgstr ""
+"%s\n"
+"\n"
+"%s"
+
+msgid "QQ Server News"
+msgstr "QQ-palvelimen uutisia"
+
 msgid "System Message"
 msgstr "Järjestelmäviesti"
 
@@ -7348,8 +7407,8 @@
 msgid " Video"
 msgstr " Video"
 
-msgid " Space"
-msgstr " Space"
+msgid " Zone"
+msgstr " Zone"
 
 msgid "Flag"
 msgstr "Lippu"
@@ -7369,20 +7428,36 @@
 msgstr "<b>Viimeisin päivitys:</b> %s<br>\n"
 
 #, c-format
-msgid "<b>Server</b>: %s: %d<br>\n"
-msgstr "<b>Palvelin:</b>: %s: %d<br>\n"
+msgid "<b>Server</b>: %s<br>\n"
+msgstr "<b>Palvelin:</b>: %s<br>\n"
 
 #, c-format
 msgid "<b>Connection Mode</b>: %s<br>\n"
 msgstr "<b>Yhteystila</b>: %s<br>\n"
 
 #, c-format
-msgid "<b>Real hostname</b>: %s: %d<br>\n"
-msgstr "<b>Todellinen palvelinnimi:</b>: %s: %d<br>\n"
-
-#, c-format
-msgid "<b>My Public IP</b>: %s<br>\n"
-msgstr "<b>Oma julkinen IP</b>: %s<br>\n"
+msgid "<b>My Internet Address</b>: %s<br>\n"
+msgstr "<b>Internet-osoitteeni:</b> %s<br>\n"
+
+#, c-format
+msgid "<b>Sent</b>: %lu<br>\n"
+msgstr "<b>Lähetetty</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Resend</b>: %lu<br>\n"
+msgstr "<b>Uudelleenlähetys</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Lost</b>: %lu<br>\n"
+msgstr "<b>Hukattu</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Received</b>: %lu<br>\n"
+msgstr "<b>Vastaanotettu</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Received Duplicate</b>: %lu<br>\n"
+msgstr "<b>Vastaanotettiin moneen kertaan</b>: %lu<br>\n"
 
 #, c-format
 msgid "<b>Login Time</b>: %s<br>\n"
@@ -7405,11 +7480,11 @@
 msgid "Change Password"
 msgstr "Vaihda salasana"
 
-msgid "Show Login Information"
-msgstr "Näytä kirjautumistiedot"
-
-msgid "Leave this QQ Qun"
-msgstr "Poistu tästä QQ-Qunista"
+msgid "Account Information"
+msgstr "Tilin tiedot"
+
+msgid "Leave the QQ Qun"
+msgstr "Poistu QQ-Qunista"
 
 msgid "Block this buddy"
 msgstr "Estä tämä tuttava"
@@ -7427,11 +7502,17 @@
 msgid "QQ Protocol\tPlugin"
 msgstr "QQ-yhteyskäytäntöliitännäinen"
 
-msgid "Connect using TCP"
+msgid "Auto"
+msgstr "Auto"
+
+msgid "Connect by TCP"
 msgstr "Yhdistetään käyttäen TCP:tä"
 
-msgid "resend interval(s)"
-msgstr "uudelleenlähetyksen aikaväli (s)"
+msgid "Show server notice"
+msgstr "Näytä palvelinhuomautukset"
+
+msgid "Show server news"
+msgstr "Näytä palvelinuutiset"
 
 msgid "Keep alive interval(s)"
 msgstr "Jatkuvan yhteydenpidon aikaväli (s)"
@@ -7440,15 +7521,39 @@
 msgstr "Päivitysten aikaväli (s)"
 
 #, c-format
+msgid "Invalid token reply code, 0x%02X"
+msgstr "Epäkelpo poletin vastauskoodi, 0x%02X"
+
+#, c-format
 msgid "Invalid token len, %d"
 msgstr "Epäkelpo poletin pituus, %d"
 
+msgid "Unable login for not support Redirect_EX now"
+msgstr "Kirjautuminen ei onnistu, koska Redirect_EX:ää ei tueta"
+
+#, fuzzy, c-format
+msgid "Error password: %s"
+msgstr "Virhe vaihdettaessa salasanaa"
+
+#, c-format
+msgid "Need active: %s"
+msgstr "Tarvitaan aktiivinen: %s"
+
+#, fuzzy, c-format
+msgid "Unable login for unknow reply code 0x%02X"
+msgstr "Epäkelpo poletin vastauskoodi, 0x%02X"
+
 msgid "Keep alive error"
 msgstr "Jatkuvan yhteydenpidon virhe"
 
-msgid "Failed to connect server"
+#, fuzzy
+msgid "Failed to connect all servers"
 msgstr "Palvelimeen ei saatu yhteyttä"
 
+#. we didn't successfully connect. tdt->toc_fd is valid here
+msgid "Unable to connect."
+msgstr "Yhteyden muodostaminen epäonnistui."
+
 msgid "Socket error"
 msgstr "Pistokevirhe"
 
@@ -7469,54 +7574,47 @@
 msgid "Connection lost"
 msgstr "Yhteys katkesi"
 
+#. Update the login progress status display
+#, c-format
+msgid "Request token"
+msgstr "Pyydä poletti"
+
 msgid "Couldn't resolve host"
 msgstr "Yhteyttä isäntään ei voi löytää"
 
-msgid "hostname is NULL or port is 0"
-msgstr "isäntänimi on NULL tai portti on 0"
+msgid "Invalid server or port"
+msgstr "Epäkelpo palvelin tai portti"
 
 #, c-format
 msgid "Connecting server %s, retries %d"
 msgstr "Yhdistetään palvelimelle %s, uudelleenyrityskerrat %d"
 
-#. we didn't successfully connect. tdt->toc_fd is valid here
-msgid "Unable to connect."
-msgstr "Yhteyden muodostaminen epäonnistui."
-
-msgid "Could not resolve hostname"
-msgstr "Isäntänimeä ei voi selvittää"
-
-msgid "Unable to login. Check debug log."
-msgstr "Ei voi kirjautua. Tarkista virheenjäljitysloki."
-
-msgid "Unable to login"
-msgstr "Ei voi kirjautua"
-
-#, c-format
-msgid ""
-"Reply %s(0x%02X )\n"
-"Sent %s(0x%02X )\n"
-"Room id %d, reply [0x%02X]: \n"
-"%s"
-msgstr ""
-"Vastaus %s(0x%02X )\n"
-"Lähetetty %s(0x%02X )\n"
-"Huoneen tunniste %d, vastaus [0x%02X]: \n"
-"%s"
-
-msgid "Failed room reply"
-msgstr "Epäonnistunut huoneen vastaus"
-
-#, c-format
-msgid "You are not a member of group \"%s\"\n"
+msgid "QQ Error"
+msgstr "QQ-virhe"
+
+msgid "Unknow SERVER CMD"
+msgstr "Tuntematon SERVER CMD"
+
+#, c-format
+msgid ""
+"Error reply of %s(0x%02X)\n"
+"Room %d, reply 0x%02X"
+msgstr ""
+"Virheellinen vastaus kohteesta %s(0x%02X)\n"
+"Huone %d, vastaus 0x%02X"
+
+msgid "QQ Qun Command"
+msgstr "QQ-Qun-komento"
+
+#, fuzzy, c-format
+msgid "You are not a member of QQ Qun \"%s\"\n"
 msgstr "Sinä et ole ryhmän \"%s\" jäsen\n"
 
 msgid "Can not decrypt login reply"
 msgstr "Kirjautumisvastauksen salausta ei voi purkaa"
 
-#, c-format
-msgid "Invalid token reply code, 0x%02X"
-msgstr "Epäkelpo poletin vastauskoodi, 0x%02X"
+msgid "Unknow reply CMD"
+msgstr "Tuntematon vastaus-CMD"
 
 #, c-format
 msgid "%d has declined the file %s"
@@ -7529,8 +7627,11 @@
 msgid "%d canceled the transfer of %s"
 msgstr "%d peruutti tiedoston %s siirron"
 
-msgid "Do you want to add this buddy?"
-msgstr "Haluatko lisätä tämän tuttavan?"
+msgid "Do you approve the requestion?"
+msgstr "Haluatko hyväksyä pyynnön?"
+
+msgid "Do you add the buddy?"
+msgstr "Haluatko lisätä tuttavan?"
 
 #. only need to get value
 #, c-format
@@ -7540,17 +7641,20 @@
 msgid "Would you like to add him?"
 msgstr "Haluatko lisätä hänet?"
 
-#, c-format
-msgid "%s has added you [%s] to his or her buddy list"
+#, fuzzy, c-format
+msgid "%s added you [%s] to buddy list"
 msgstr "Käyttäjä %s on lisännyt sinut [%s] tuttaviisi"
 
-#, c-format
-msgid "User %s rejected your request"
-msgstr "Käyttäjä %s on kieltäytynyt pyynnöstäsi"
-
-#, c-format
-msgid "User %s approved your request"
-msgstr "Käyttäjä %s on hyväksynyt pyyntösi"
+msgid "QQ Budy"
+msgstr "QQ-tuttava"
+
+#, c-format
+msgid "Requestion rejected by %s"
+msgstr "%s hylkäsi pyynnön"
+
+#, c-format
+msgid "Requestion approved by %s"
+msgstr "%s hyväksyi pyynnön"
 
 #. TODO: this should go through purple_account_request_authorization()
 #, c-format
@@ -7558,21 +7662,23 @@
 msgstr "Käyttäjä %s tahtoo lisätä sinut [%s] kaverikseen"
 
 #, c-format
-msgid "Message: %s"
-msgstr "Viesti: %s"
-
-#, c-format
-msgid "%s is not in your buddy list"
-msgstr "%s ei ole tuttavissasi"
-
-#, c-format
-msgid "Notice from: %s"
-msgstr "Ilmoitus käyttäjältä: %s"
+msgid "%s is not in buddy list"
+msgstr "%s ei ole tuttavissa"
+
+msgid "Would you add?"
+msgstr "Haluatko lisätä?"
+
+#, c-format
+msgid "From %s:"
+msgstr "Lähettäjä %s:"
 
 #, c-format
 msgid "%s"
 msgstr "%s"
 
+msgid "QQ Server Notice"
+msgstr "QQ-palvelinhuomautus"
+
 msgid "Connection closed (writing)"
 msgstr "Yhteys suljettu (kirjoitus)"
 
@@ -9026,6 +9132,9 @@
 msgid "Could not create listen socket"
 msgstr "Kuuntelupistokkeen luominen epäonnistui"
 
+msgid "Could not resolve hostname"
+msgstr "Isäntänimeä ei voi selvittää"
+
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "SIP-käyttäjänimissä ei tule olla välilyöntejä tai @-merkkejä"
 
@@ -9414,6 +9523,9 @@
 msgid "doodle: Request user to start a Doodle session"
 msgstr "doodle: Pyydä käyttäjää aloittamaan piirtelyistunto"
 
+msgid "Yahoo ID..."
+msgstr "Yahoo ID..."
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -9962,6 +10074,10 @@
 msgstr "Kohteeseen %s ei kyetty muodostamaan yhteyttä"
 
 #, c-format
+msgid "Error reading from %s: response too long (%d bytes limit)"
+msgstr "Virhe luettaessa kohteesta %s: vastaus liian pitkä (%d tavun raja)"
+
+#, c-format
 msgid ""
 "Unable to allocate enough memory to hold the contents from %s.  The web "
 "server may be trying something malicious."
@@ -10147,10 +10263,10 @@
 msgstr ""
 "<span size='larger' weight='bold'>Tervetuloa %siin!</span>\n"
 "\n"
-"Pikaviestintilejä ei ole määritelty. Yhdistääksesi %sillä "
-"napsauta <b>Lisää</b>-painiketta ja määritä ensimmäisen käyttäjätilisi "
-"tiedot. Jos haluat %sin yhdistävän useampiin pikaviestintileihin, napsauta "
-"uudestaan <b>Lisää</b>-painiketta määritelläksesi ne kaikki.\n"
+"Pikaviestintilejä ei ole määritelty. Yhdistääksesi %sillä napsauta <b>Lisää</"
+"b>-painiketta ja määritä ensimmäisen käyttäjätilisi tiedot. Jos haluat %sin "
+"yhdistävän useampiin pikaviestintileihin, napsauta uudestaan <b>Lisää</b>-"
+"painiketta määritelläksesi ne kaikki.\n"
 "\n"
 "Voit palata tähän ikkunaan lisäämään, muokkaamaan tai poistamaan tilejä "
 "valitsemalla <b>Käyttäjätilit->Tilien hallinta</b> Tuttavat-ikkunassa."
@@ -10159,8 +10275,8 @@
 msgid "You have %d contact named %s. Would you like to merge them?"
 msgid_plural ""
 "You currently have %d contacts named %s. Would you like to merge them?"
-msgstr[0] "Sinulla on %d kontakti jonka nimi on %s. Haluatko yhdistää ne?"
-msgstr[1] "Sinulla on %d kontaktia joiden nimi on %s. Haluatko yhdistää ne?"
+msgstr[0] "Sinulla on %d yhteystieto jonka nimi on %s. Haluatko yhdistää ne?"
+msgstr[1] "Sinulla on %d yhteystietoa joiden nimi on %s. Haluatko yhdistää ne?"
 
 msgid ""
 "Merging these contacts will cause them to share a single entry on the buddy "
@@ -10612,6 +10728,9 @@
 msgid "SSL Servers"
 msgstr "SSL-palvelimet"
 
+msgid "Network disconnected"
+msgstr "Verkkoyhteys katkesi"
+
 msgid "Unknown command."
 msgstr "Tuntematon komento."
 
@@ -11062,6 +11181,9 @@
 msgid "French"
 msgstr "ranska"
 
+msgid "Irish"
+msgstr "irlanti"
+
 msgid "Galician"
 msgstr "galego"
 
@@ -11479,6 +11601,12 @@
 msgid "Color to draw hyperlinks."
 msgstr "Väri jolla piirretään hyperlinkit"
 
+msgid "Hyperlink visited color"
+msgstr "Vieraillun hyperlinkin väri"
+
+msgid "Color to draw hyperlinks after it has been visited (or activated)."
+msgstr "Väri jolla piirretään vierailtu (tai aktivoitu) hyperlinkki."
+
 msgid "Hyperlink prelight color"
 msgstr "Hyperlinkin ensiväri"
 
@@ -12343,14 +12471,17 @@
 "Äänik_omento:\n"
 "(%s tiedostonimeksi)"
 
+msgid "M_ute sounds"
+msgstr "Vaimenn_a äänet"
+
 msgid "Sounds when conversation has _focus"
 msgstr "Äänet kun keskusteluikkuna on _aktiivinen"
 
-msgid "Enable sounds:"
-msgstr "Ota äänet käyttöön:"
-
-msgid "Volume:"
-msgstr "Äänenvoimakkuus:"
+msgid "_Enable sounds:"
+msgstr "Ota ään_et käyttöön:"
+
+msgid "V_olume:"
+msgstr "Äänenv_oimakkuus:"
 
 msgid "Play"
 msgstr "Soita"
@@ -13274,6 +13405,9 @@
 msgid "Hyperlink Color"
 msgstr "Hyperlinkin väri"
 
+msgid "Visited Hyperlink Color"
+msgstr "Vieraillun hyperlinkin väri"
+
 msgid "Highlighted Message Name Color"
 msgstr "Korostetun viestin nimen väri"
 
@@ -13700,6 +13834,93 @@
 "Tätä liitännäistä voidaan käyttää XMPP-palvelimien tai -asiakasohjelmien "
 "virheenjäljitykseen."
 
+#~ msgid "EOF while reading from resolver process"
+#~ msgstr "EOF luettaessa selvitysprosessista"
+
+#~ msgid "Your information has been updated"
+#~ msgstr "Tietosi on päivitetty"
+
+#~ msgid "Input your reason:"
+#~ msgstr "Anna syy:"
+
+#~ msgid "You have successfully removed a buddy"
+#~ msgstr "Tuttava poistettu onnistuneesti"
+
+#~ msgid "You have successfully removed yourself from your friend's buddy list"
+#~ msgstr "Sinut on onnistuneesti poistettu kaverisi tuttavista"
+
+#~ msgid "You have added %d to buddy list"
+#~ msgstr "Käyttäjä %d lisätty tuttaviisi"
+
+#~ msgid "Invalid QQid"
+#~ msgstr "Epäkelpo QQid"
+
+#~ msgid "Please enter external group ID"
+#~ msgstr "Syötä ulkopuolisen ryhmän tunniste (ID)"
+
+#~ msgid "Reason: %s"
+#~ msgstr "Syy: %s"
+
+#~ msgid "Your request to join group %d has been approved by admin %d"
+#~ msgstr "Pyyntösi liittyä ryhmään %d hyväksyttiin ylläpitäjän %d toimesta"
+
+#~ msgid "This group has been added to your buddy list"
+#~ msgstr "Tämä ryhmä on lisätty tuttaviisi"
+
+#~ msgid "I am applying to join"
+#~ msgstr "Pyydän liittymistä"
+
+#~ msgid "You have successfully left the group"
+#~ msgstr "Ryhmästä poistuminen onnistui"
+
+#~ msgid "QQ Group Auth"
+#~ msgstr "QQ-ryhmän valtuutus"
+
+#~ msgid "Your authorization request has been accepted by the QQ server"
+#~ msgstr "QQ-palvelin on hyväksynyt valtuutuspyyntösi"
+
+#~ msgid "Enter your reason:"
+#~ msgstr "Anna syy:"
+
+#~ msgid "You have successfully modified Qun member"
+#~ msgstr "Qun-jäsentä muokattu onnistuneesti"
+
+#~ msgid "You have successfully modified Qun information"
+#~ msgstr "Qun-tietojen muokkaus onnistui"
+
+#~ msgid " Space"
+#~ msgstr " Space"
+
+#~ msgid "<b>Real hostname</b>: %s: %d<br>\n"
+#~ msgstr "<b>Todellinen palvelinnimi:</b>: %s: %d<br>\n"
+
+#~ msgid "Show Login Information"
+#~ msgstr "Näytä kirjautumistiedot"
+
+#~ msgid "resend interval(s)"
+#~ msgstr "uudelleenlähetyksen aikaväli (s)"
+
+#~ msgid "hostname is NULL or port is 0"
+#~ msgstr "isäntänimi on NULL tai portti on 0"
+
+#~ msgid "Unable to login. Check debug log."
+#~ msgstr "Ei voi kirjautua. Tarkista virheenjäljitysloki."
+
+#~ msgid "Unable to login"
+#~ msgstr "Ei voi kirjautua"
+
+#~ msgid "Failed room reply"
+#~ msgstr "Epäonnistunut huoneen vastaus"
+
+#~ msgid "User %s rejected your request"
+#~ msgstr "Käyttäjä %s on kieltäytynyt pyynnöstäsi"
+
+#~ msgid "User %s approved your request"
+#~ msgstr "Käyttäjä %s on hyväksynyt pyyntösi"
+
+#~ msgid "Notice from: %s"
+#~ msgstr "Ilmoitus käyttäjältä: %s"
+
 #~ msgid "Code [0x%02X]: %s"
 #~ msgstr "Koodi [0x%02X]: %s"
 
@@ -14242,9 +14463,6 @@
 #~ msgid "<span weight='bold' size='larger'>Welcome to "
 #~ msgstr "<span weight='bold' size='larger'>Tervetuloa "
 
-#~ msgid "You are using "
-#~ msgstr "Käytät ohjelmaa: "
-
 #~ msgid "_Start "
 #~ msgstr "_Käynnistä "
 
@@ -14425,9 +14643,6 @@
 #~ msgid "<b>%s:</b> %s"
 #~ msgstr "<b>%s:</b> %s"
 
-#~ msgid "<b>%s:</b> %s<br>"
-#~ msgstr "<b>%s:</b> %s<br>"
-
 #~ msgid "<b>Idle for:</b> %s<br>"
 #~ msgstr "<b>Jouten:</b> %s<br>"
 
@@ -14495,12 +14710,6 @@
 #~ msgid "<b>Status:</b> %s"
 #~ msgstr "<b>Tila:</b> %s"
 
-#~ msgid "<b>IP Address:</b> %s<br>"
-#~ msgstr "<b>IP-osoite:</b> %s<br>"
-
-#~ msgid "<b>User:</b> %s<br>"
-#~ msgstr "<b>Käyttäjä:</b> %s<br>"
-
 #~ msgid "Tag"
 #~ msgstr "Merkitse"
 
@@ -14525,9 +14734,6 @@
 #~ msgid "Invalid password"
 #~ msgstr "Virheellinen salasana"
 
-#~ msgid "Invalid username or password"
-#~ msgstr "Epäkelpo käyttäjänimi tai salasana"
-
 #~ msgid ""
 #~ "The user %s requires authorization before being added to a buddy list.  "
 #~ "Do you want to send an authorization request?"
@@ -14619,9 +14825,6 @@
 #~ msgid "gaim_proxy_connect() failed"
 #~ msgstr "gaim_proxy_connect() epäonnistui"
 
-#~ msgid "QQ Server"
-#~ msgstr "QQ-palvelin"
-
 #~ msgid "QQ Port"
 #~ msgstr "QQ-portti"
 
@@ -15297,9 +15500,6 @@
 #~ msgid "AIM"
 #~ msgstr "AIM"
 
-#~ msgid "ICQ UIN"
-#~ msgstr "ICQ UIN"
-
 #~ msgid "Yahoo"
 #~ msgstr "Yahoo"
 
@@ -15522,9 +15722,6 @@
 #~ "\n"
 #~ "Poista poissaolotila kaikilta käyttäjätileiltä.\n"
 
-#~ msgid "Show fewer options"
-#~ msgstr "Näytä vähemmän valintoja"
-
 #~ msgid "New group name"
 #~ msgstr "Uusi ryhmänimi"
 
@@ -15589,9 +15786,6 @@
 #~ msgid "Send a file to the user"
 #~ msgstr "Lähetä tiedosto käyttäjälle"
 
-#~ msgid "Remove the user from your buddy list"
-#~ msgstr "Poista käyttäjä tuttavalistalta"
-
 #~ msgid "Invite a user"
 #~ msgstr "Kutsu käyttäjä"