changeset 25135:6baa6a829a90

merge of 'a0b951af90f1a780445f21b51b22e57f6a3f699e' and 'ec7dddcd8ff1500f8e51eeeb226a1d478fb519c7'
author Marcus Lundblad <ml@update.uu.se>
date Wed, 01 Oct 2008 22:25:47 +0000
parents f763be370afb (current diff) dac7b92ef62d (diff)
children a64d90cff01f
files
diffstat 18 files changed, 890 insertions(+), 460 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/conversation.h	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/conversation.h	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/bonjour/mdns_common.c	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/irc/msgs.c	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/msn/msg.c	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/msn/msg.h	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/msn/msn.c	Wed Oct 01 22:25:47 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)
@@ -1135,6 +1161,13 @@
 	session = gc->proto_data;
 	swboard = msn_session_find_swboard(session, who);
 
+	if (!strncmp("tel:+", who, 5)) {
+		char *text = purple_markup_strip_html(message);
+		send_to_mobile(gc, who, text);
+		g_free(text);
+		return 1;
+	}
+
 	if (buddy) {
 		PurplePresence *p = purple_buddy_get_presence(buddy);
 		if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_MOBILE)) {
@@ -1170,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	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/msn/msn.h	Wed Oct 01 22:25:47 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/notification.c	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/msn/notification.c	Wed Oct 01 22:25:47 2008 +0000
@@ -306,7 +306,7 @@
 	 * to see the Local ID
 	 */
 	msn_cmdproc_send(cmdproc, "CVR",
-					"0x0409 winnt 5.1 i386 MSNMSGR 8.5.1288 msmsgs %s",
+					"0x0409 winnt 5.1 i386 MSNMSGR 8.5.1302 BC01 %s",
 					 purple_account_get_username(account));
 }
 
@@ -1060,7 +1060,8 @@
 {
 	PurpleConnection *gc;
 	MsnUserList *userlist;
-	char *who = NULL, *text = NULL;
+	const char *who = NULL;
+	char *text = NULL;
 	const char *id = NULL;
 	xmlnode *payloadNode, *from, *msg, *textNode;
 
@@ -1104,13 +1105,18 @@
 	   </NOTIFICATION>
 	*/
 
-	if (!(payloadNode = xmlnode_from_str(payload, len)) ||
-		!(from = xmlnode_get_child(payloadNode, "FROM")) ||
-		!(msg = xmlnode_get_child(payloadNode, "MSG")) ||
-		!(textNode = xmlnode_get_child(msg, "BODY/TEXT")))
+	payloadNode = xmlnode_from_str(payload, len);
+	if (!payloadNode)
 		return;
 
-	who = g_strdup(xmlnode_get_attrib(from, "name"));
+	if (!(from = xmlnode_get_child(payloadNode, "FROM")) ||
+		!(msg = xmlnode_get_child(payloadNode, "MSG")) ||
+		!(textNode = xmlnode_get_child(msg, "BODY/TEXT"))) {
+		xmlnode_free(payloadNode);
+		return;
+	}
+
+	who = xmlnode_get_attrib(from, "name");
 	if (!who) return;
 
 	text = xmlnode_get_data(textNode);
@@ -1121,10 +1127,8 @@
 		MsnUser *user =
 			msn_userlist_find_user_with_mobile_phone(userlist, who + 4);
 
-		if(user && user->passport) {
-			g_free(who);
-			who = g_strdup(user->passport);
-		}
+		if (user && user->passport)
+			who = user->passport;
 	}
 
 	id = xmlnode_get_attrib(msg, "id");
@@ -1143,7 +1147,6 @@
 	}
 
 	g_free(text);
-	g_free(who);
 	xmlnode_free(payloadNode);
 }
 
--- a/libpurple/protocols/msn/servconn.c	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/msn/servconn.c	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/msn/switchboard.h	Wed Oct 01 22:25:47 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/libpurple/protocols/msn/userlist.c	Wed Oct 01 22:25:36 2008 +0000
+++ b/libpurple/protocols/msn/userlist.c	Wed Oct 01 22:25:47 2008 +0000
@@ -610,6 +610,22 @@
 	}
 }
 
+typedef struct {
+	MsnSession *session;
+	char *uid;
+} MsnUserlistABData;
+
+static void
+userlist_ab_delete_cb(void *data, int choice)
+{
+	MsnUserlistABData *ab = (MsnUserlistABData *)data;
+
+	/* msn_delete_contact(ab->session, ab->uid, (gboolean)choice); */
+
+	g_free(ab->uid);
+	g_free(ab);
+}
+
 void
 msn_userlist_rem_buddy(MsnUserList *userlist, const char *who)
 {
@@ -625,7 +641,18 @@
 
 	/* delete the contact from address book via soap action */
 	if (user != NULL) {
-		msn_delete_contact(userlist->session, user->uid);
+		if (0 /*not ready yet*/ && userlist->session->passport_info.email_enabled) {
+			MsnUserlistABData *ab = g_new0(MsnUserlistABData, 1);
+			ab->session = userlist->session;
+			ab->uid = g_strdup(user->uid); /* Not necessary? */
+			purple_request_yes_no(userlist->session->account,
+				_("Delete Buddy from Address Book?"),
+				_("Do you want to delete this buddy from your address book as well?"),
+				user->passport, 0, userlist->session->account, user->passport,
+				NULL, ab,
+				G_CALLBACK(userlist_ab_delete_cb), G_CALLBACK(userlist_ab_delete_cb));
+		} else
+			msn_delete_contact(userlist->session, user->uid);
 	}
 }
 
--- a/pidgin/gtkaccount.c	Wed Oct 01 22:25:36 2008 +0000
+++ b/pidgin/gtkaccount.c	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/pidgin/gtkblist.c	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/pidgin/gtkconn.c	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/pidgin/win32/nsis/translations/finnish.nsh	Wed Oct 01 22:25:47 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	Wed Oct 01 22:25:36 2008 +0000
+++ b/po/de.po	Wed Oct 01 22:25:47 2008 +0000
@@ -11,8 +11,8 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-01 10:30+0200\n"
-"PO-Revision-Date: 2008-09-01 10:30+0200\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"
@@ -76,7 +76,7 @@
 msgid "Remember password"
 msgstr "Passwort speichern"
 
-msgid "There's no protocol plugins installed."
+msgid "There are no protocol plugins installed."
 msgstr "Es sind keine Protokoll-Plugins installiert."
 
 msgid "(You probably forgot to 'make install'.)"
@@ -1519,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."
@@ -1839,8 +1839,8 @@
 "Fehler beim Lesen vom Auflösungsprozess:\n"
 "%s"
 
-msgid "EOF while reading from resolver process"
-msgstr "EOF während vom Resolver-Prozess gelesen wurde"
+msgid "Resolver process exited without answering our request"
+msgstr "Auflösungsprozess hat sich beendet ohne die Anfrage zu beantworten"
 
 #, c-format
 msgid "Thread creation failure: %s"
@@ -4554,6 +4554,11 @@
 msgid "File transfer proxies"
 msgstr "Proxys für Dateiübertragungen"
 
+#. this should probably be part of global smiley theme settings later on,
+#. shared with MSN
+msgid "Show Custom Smileys"
+msgstr "Zeige benutzerdefinierte Smileys"
+
 #, c-format
 msgid "%s has left the conversation."
 msgstr "%s hat das Gespräch verlassen."
@@ -4869,6 +4874,12 @@
 msgid "MSN Error: %s\n"
 msgstr "MSN-Fehler: %s\n"
 
+msgid "Other Contacts"
+msgstr "Andere Kontakte"
+
+msgid "Non-IM Contacts"
+msgstr "Nicht-IM-Kontakte"
+
 msgid "Nudge"
 msgstr "Anstoßen"
 
@@ -4939,6 +4950,9 @@
 msgid "Page"
 msgstr "Nachricht"
 
+msgid "Has you"
+msgstr "Hat Sie"
+
 msgid "Home Phone Number"
 msgstr "Private Telefonnummer"
 
@@ -5221,6 +5235,9 @@
 msgid "Unable to add user"
 msgstr "Kann den Benutzer nicht hinzufügen"
 
+msgid "The following users are missing from your addressbook"
+msgstr "Die folgenden Benutzer fehlen in Ihrem Adressbuch"
+
 #, c-format
 msgid "Unable to add user on %s (%s)"
 msgstr "Kann den Benutzer nicht zu %s (%s) hinzufügen"
@@ -5424,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
@@ -5437,9 +5460,6 @@
 msgid "This Hotmail account may not be active."
 msgstr "Dieses Hotmail-Konto ist vielleicht nicht aktiv."
 
-msgid "Has you"
-msgstr "Hat Sie"
-
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -6130,6 +6150,9 @@
 msgid "AIM Protocol Plugin"
 msgstr "AIM-Protokoll-Plugin"
 
+msgid "ICQ UIN..."
+msgstr "ICQ-UIN..."
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -6193,7 +6216,7 @@
 msgstr "Bewertung zum Client"
 
 msgid "Service unavailable"
-msgstr "Server unerreichbar"
+msgstr "Dienst nicht unerreichbar"
 
 msgid "Service not defined"
 msgstr "Dienst nicht definiert"
@@ -7173,14 +7196,22 @@
 msgid "Other"
 msgstr "Andere"
 
-msgid "Modify my information"
-msgstr "Meine Informationen bearbeiten"
-
-msgid "Update my information"
-msgstr "Meine Informationen aktualisieren"
-
-msgid "Your information has been updated"
-msgstr "Ihre Informationen wurden aktualisiert"
+msgid "Modify information"
+msgstr "Informationen bearbeiten"
+
+msgid "Update information"
+msgstr "Informationen aktualisieren"
+
+#. 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-Buddy"
+
+msgid "Successed:"
+msgstr "Erfolgreich:"
+
+msgid "Change buddy information."
+msgstr "Buddy-Informationen bearbeiten"
 
 #, c-format
 msgid ""
@@ -7198,30 +7229,28 @@
 msgid "You rejected %d's request"
 msgstr "Sie haben die Anfrage von %d abgelehnt"
 
-msgid "Input your reason:"
-msgstr "Geben Sie Ihren Grund an:"
-
 msgid "Reject request"
 msgstr "Anfrage ablehnen"
 
 #. title
-msgid "Sorry, you are not my type..."
+msgid "Sorry, you are not my style..."
 msgstr "Tut mir Leid, du bist nicht mein Typ..."
 
 msgid "Add buddy with auth request failed"
 msgstr "Benutzer hinzufügen, wenn Autorisierungsanfrage fehlschlug"
 
-#. TODO: We don't really need to notify the user about this, do we?
-msgid "You have successfully removed a buddy"
-msgstr "Sie haben einen Buddy entfernt"
-
-#. TODO: Does the user really need to be notified about this?
-msgid "You have successfully removed yourself from your friend's buddy list"
-msgstr "Sie haben sich erfolgreich von der Kontaktliste Ihres Freunds entfernt"
-
-#, c-format
-msgid "User %d needs authentication"
-msgstr "Benutzer %d benötigt Authentifizierung"
+msgid "Failed:"
+msgstr "Gescheitert:"
+
+msgid "Remove buddy"
+msgstr "Buddy entfernen"
+
+msgid "Remove from other's buddy list"
+msgstr "Von der Liste des Buddys entfernen"
+
+#, c-format
+msgid "%d needs authentication"
+msgstr "%d benötigt Authentifizierung"
 
 msgid "Input request here"
 msgstr "Anfrage hier eingeben"
@@ -7237,14 +7266,14 @@
 msgstr "Senden"
 
 #, c-format
-msgid "You have added %d to buddy list"
-msgstr "Sie haben %d zu Ihrer Buddy-Liste hinzugefügt"
-
-msgid "QQid Error"
-msgstr "QQid-Fehler"
-
-msgid "Invalid QQid"
-msgstr "Ungültige QQid"
+msgid "Add into %d's buddy list"
+msgstr "Zu %ds Buddy-Liste hinzufügen"
+
+msgid "QQ Number Error"
+msgstr "Fehler in QQ-Nummer"
+
+msgid "Invalid QQ Number"
+msgstr "Ungültige QQ-Nummer"
 
 msgid "ID: "
 msgstr "ID: "
@@ -7264,19 +7293,19 @@
 msgid "QQ Qun"
 msgstr "QQ-Qun"
 
-msgid "Please enter external group ID"
-msgstr "Bitte geben Sie die externe Gruppen-ID an"
-
-msgid "You can only search for permanent QQ groups\n"
-msgstr "Sie können nur nach permanenten QQ-Gruppen suchen\n"
-
-#, c-format
-msgid "User %d requested to join group %d"
-msgstr "Benutzer %d möchte der Gruppe %d beitreten"
-
-#, c-format
-msgid "Reason: %s"
-msgstr "Grund: %s"
+msgid "Please enter Qun number"
+msgstr "Bitte geben Sie die Qun-Nummer ein"
+
+msgid "You can only search for permanent Qun\n"
+msgstr "Sie können nur nach permanenten Qun suchen\n"
+
+#, c-format
+msgid "%d request to join Qun %d"
+msgstr "%d möchte dem Qun %d beitreten"
+
+#, c-format
+msgid "Message: %s"
+msgstr "Nachricht: %s"
 
 msgid "QQ Qun Operation"
 msgstr "QQ-Qun-Operation"
@@ -7285,23 +7314,23 @@
 msgstr "Akzeptieren"
 
 #, c-format
-msgid "Your request to join group %d has been rejected by admin %d"
-msgstr "Ihre Anfrage, der Gruppe %d beizutreten wurde von Admin %d abgelehnt"
-
-#, c-format
-msgid "Your request to join group %d has been approved by admin %d"
-msgstr "Ihre Anfrage, der Gruppe %d beizutreten wurde von Admin %d akzeptiert"
-
-#, c-format
-msgid "You [%d] have left group \"%d\""
-msgstr "Sie [%d] haben die Gruppe „%d“ verlassen"
-
-#, c-format
-msgid "You [%d] have been added to group \"%d\""
-msgstr "Sie [%d] wurden der Gruppe „%d“ hinzugefügt"
-
-msgid "This group has been added to your buddy list"
-msgstr "Diese Gruppe wurde Ihrer Buddy-Liste hinzugefügt"
+msgid "Failed to join Qun %d, operated by admin %d"
+msgstr "Dem Qun %d, moderiert von admin %d, konnte nicht beigetreten werden"
+
+#, c-format
+msgid "Successed to join Qun %d, operated by admin %d"
+msgstr "Erfolgreicher Beitritt in den Qun %d, moderiert vom Admin %d"
+
+#, c-format
+msgid "[%d] removed from Qun \"%d\""
+msgstr "[%d] vom Qun „%d“ entfernt"
+
+msgid "Notice:"
+msgstr "Bemerkung:"
+
+#, c-format
+msgid "[%d] added to Qun \"%d\""
+msgstr "[%d] zum Qun „%d“ hinzugefügt"
 
 msgid "I am not a member"
 msgstr "Ich bin kein Mitglied"
@@ -7309,8 +7338,8 @@
 msgid "I am a member"
 msgstr "Ich bin Mitglied"
 
-msgid "I am applying to join"
-msgstr "Ich möchte beitreten"
+msgid "I am requesting"
+msgstr "Ich frage an"
 
 msgid "I am the admin"
 msgstr "Ich bin der Admin"
@@ -7318,17 +7347,21 @@
 msgid "Unknown status"
 msgstr "Unbekannter Status"
 
-msgid "This group does not allow others to join"
-msgstr "Dieser Gruppe können andere nicht beitreten"
-
-msgid "You have successfully left the group"
-msgstr "Sie haben die Gruppe erfolgreich verlassen"
-
-msgid "QQ Group Auth"
-msgstr "QQ-Gruppenauthentifikation"
-
-msgid "Your authorization request has been accepted by the QQ server"
-msgstr "Ihre Autorisierungsanfrage wurde vom QQ-Server akzeptiert"
+msgid "The Qun does not allow others to join"
+msgstr "Diesen Qun können andere nicht beitreten"
+
+msgid "Remove from Qun"
+msgstr "vom Qun entfernen"
+
+msgid "Join to Qun"
+msgstr "Qun betreten"
+
+#, c-format
+msgid "Qun %d denied to join"
+msgstr "Qun %d hat Ihren Beitritt abgelehnt"
+
+msgid "Join Qun, Unknow Reply"
+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"
@@ -7347,24 +7380,34 @@
 msgid "Do you want to approve the request?"
 msgstr "Wollen sie die Anfrage akzeptieren?"
 
-msgid "Enter your reason:"
-msgstr "Geben Sie Ihren Grund an:"
-
-msgid "You have successfully modified Qun member"
-msgstr "Sie haben die Qun-Mitgliedschaft erfolgreich modifiziert"
-
-msgid "You have successfully modified Qun information"
-msgstr "Sie haben die Qun-Information erfolgreich modifiziert"
+msgid "Change Qun member"
+msgstr "Qun-Mitglied ändern"
+
+msgid "Change Qun information"
+msgstr "Qun-Informationen bearbeiten"
 
 msgid "You have successfully created a Qun"
 msgstr "Sie haben einen Qun angelegt"
 
-msgid "Would you like to set up the Qun details now?"
-msgstr "Möchten Sie jetzt die Qun-Details einstellen?"
+msgid "Would you like to set up the detail information now?"
+msgstr "Möchten Sie jetzt Detail-Informationen einstellen?"
 
 msgid "Setup"
 msgstr "Setup"
 
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+"%s"
+msgstr ""
+"%s\n"
+"\n"
+"%s"
+
+msgid "QQ Server News"
+msgstr "QQ-Server-News"
+
 msgid "System Message"
 msgstr "Systemnachricht"
 
@@ -7391,13 +7434,13 @@
 msgstr " FromMobile"
 
 msgid " BindMobile"
-msgstr "BindMobile"
+msgstr " BindMobile"
 
 msgid " Video"
 msgstr " Video"
 
-msgid " Space"
-msgstr " Raum"
+msgid " Zone"
+msgstr " Zone"
 
 msgid "Flag"
 msgstr "Flagge"
@@ -7417,20 +7460,36 @@
 msgstr "<b>Letzte Aktualisierung</b>: %s<br>\n"
 
 #, c-format
-msgid "<b>Server</b>: %s: %d<br>\n"
-msgstr "<b>Server</b>: %s: %d<br>\n"
+msgid "<b>Server</b>: %s<br>\n"
+msgstr "<b>Server</b>: %s<br>\n"
 
 #, c-format
 msgid "<b>Connection Mode</b>: %s<br>\n"
 msgstr "<b>Verbindungsmodus</b>: %s<br>\n"
 
 #, c-format
-msgid "<b>Real hostname</b>: %s: %d<br>\n"
-msgstr "<b>Wirklicher Hostname</b>: %s: %d<br>\n"
-
-#, c-format
-msgid "<b>My Public IP</b>: %s<br>\n"
-msgstr "<b>Meine öffentlich IP</b>: %s<br>\n"
+msgid "<b>My Internet Address</b>: %s<br>\n"
+msgstr "<b>Meine Internet-Adresse</b>: %s<br>\n"
+
+#, c-format
+msgid "<b>Sent</b>: %lu<br>\n"
+msgstr "<b>Gesendet</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Resend</b>: %lu<br>\n"
+msgstr "<b>Erneut senden</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Lost</b>: %lu<br>\n"
+msgstr "<b>Verloren</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Received</b>: %lu<br>\n"
+msgstr "<b>Empfangen</b>: %lu<br>\n"
+
+#, c-format
+msgid "<b>Received Duplicate</b>: %lu<br>\n"
+msgstr "<b>Duplikat empfangen</b>: %lu<br>\n"
 
 #, c-format
 msgid "<b>Login Time</b>: %s<br>\n"
@@ -7453,11 +7512,11 @@
 msgid "Change Password"
 msgstr "Passwort ändern"
 
-msgid "Show Login Information"
-msgstr "Login-Informationen anzeigen"
-
-msgid "Leave this QQ Qun"
-msgstr "Dieses QQ-Qun verlassen"
+msgid "Account Information"
+msgstr "Kontoinformationen"
+
+msgid "Leave the QQ Qun"
+msgstr "Diesen QQ-Qun verlassen"
 
 msgid "Block this buddy"
 msgstr "Diesen Buddy blockieren"
@@ -7475,11 +7534,17 @@
 msgid "QQ Protocol\tPlugin"
 msgstr "QQ-Protokoll-Plugin"
 
-msgid "Connect using TCP"
+msgid "Auto"
+msgstr "Auto"
+
+msgid "Connect by TCP"
 msgstr "Ãœber TCP verbinden"
 
-msgid "resend interval(s)"
-msgstr "Neusenden-Intervall(e)"
+msgid "Show server notice"
+msgstr "Server-Nachricht anzeigen"
+
+msgid "Show server news"
+msgstr "Server-News anzeigen"
 
 msgid "Keep alive interval(s)"
 msgstr "Intervall(e) zum Aufrechterhalten der Verbindung (Keep alive)"
@@ -7488,14 +7553,37 @@
 msgstr "Aktualisierungsintervall(e)"
 
 #, c-format
+msgid "Invalid token reply code, 0x%02X"
+msgstr "Ungültiger Token-Antwort-Code, 0x%02X"
+
+#, c-format
 msgid "Invalid token len, %d"
 msgstr "Ungültige Länge des Tokens, %d"
 
+msgid "Unable login for not support Redirect_EX now"
+msgstr "Anmeldung nicht möglich, Redirect_EX wird noch nicht unterstützt"
+
+#, c-format
+msgid "Error password: %s"
+msgstr "Passwort-Fehler: %s"
+
+#, c-format
+msgid "Need active: %s"
+msgstr "Brauche aktiv: %s"
+
+#, c-format
+msgid "Unable login for unknow reply 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)"
 
-msgid "Failed to connect server"
-msgstr "Verbinden zum Server fehlgeschlagen"
+msgid "Failed to connect all servers"
+msgstr "Konnte nicht alle Server verbinden"
+
+#. we didn't successfully connect. tdt->toc_fd is valid here
+msgid "Unable to connect."
+msgstr "Verbindung nicht möglich."
 
 msgid "Socket error"
 msgstr "Socket-Fehler"
@@ -7517,54 +7605,46 @@
 msgid "Connection lost"
 msgstr "Verbindung verloren"
 
+#. Update the login progress status display
+msgid "Request token"
+msgstr "Anfragekürzel"
+
 msgid "Couldn't resolve host"
 msgstr "Kann den Hostnamen nicht auflösen"
 
-msgid "hostname is NULL or port is 0"
-msgstr "Hostname ist NULL oder Port ist 0"
+msgid "Invalid server or port"
+msgstr "Ungültiger Server oder Port"
 
 #, c-format
 msgid "Connecting server %s, retries %d"
 msgstr "Verbinde zu Server %s, %d Wiederholungen"
 
-#. we didn't successfully connect. tdt->toc_fd is valid here
-msgid "Unable to connect."
-msgstr "Verbindung nicht möglich."
-
-msgid "Could not resolve hostname"
-msgstr "Konnte den Hostnamen nicht auflösen"
-
-msgid "Unable to login. Check debug log."
-msgstr "Anmeldung fehlgeschlagen, Debugmitschnitt beachten."
-
-msgid "Unable to login"
-msgstr "Anmeldung fehlgeschlagen"
-
-#, c-format
-msgid ""
-"Reply %s(0x%02X )\n"
-"Sent %s(0x%02X )\n"
-"Room id %d, reply [0x%02X]: \n"
-"%s"
-msgstr ""
-"Antwort %s(0x%02X )\n"
-"Gesendet %s(0x%02X )\n"
-"Raum-ID %d, Antwort [0x%02X]: \n"
-"%s"
-
-msgid "Failed room reply"
-msgstr "Antwort vom Raum gescheitert"
-
-#, c-format
-msgid "You are not a member of group \"%s\"\n"
-msgstr "Sie sind ein Mitglied der Gruppe „%s“\n"
+msgid "QQ Error"
+msgstr "QQ-Fehler"
+
+msgid "Unknow SERVER CMD"
+msgstr "Unbekanntes SERVER-CMD"
+
+#, c-format
+msgid ""
+"Error reply of %s(0x%02X)\n"
+"Room %d, reply 0x%02X"
+msgstr ""
+"Fehlerantwort %s(0x%02X)\n"
+"Raum %d, Antwort 0x%02X"
+
+msgid "QQ Qun Command"
+msgstr "QQ-Qun-Kommando"
+
+#, c-format
+msgid "You are not a member of QQ Qun \"%s\"\n"
+msgstr "Sie sind kein Mitglied des Qun „%s“\n"
 
 msgid "Can not decrypt login reply"
 msgstr "Kann die Antwort der Anmeldung nicht entschlüsseln"
 
-#, c-format
-msgid "Invalid token reply code, 0x%02X"
-msgstr "Ungültiger Token-Antwort-Code, 0x%02X"
+msgid "Unknow reply CMD"
+msgstr "Unbekanntes Antwort-CMD"
 
 #, c-format
 msgid "%d has declined the file %s"
@@ -7577,7 +7657,10 @@
 msgid "%d canceled the transfer of %s"
 msgstr "%d hat die Ãœbertragung von %s abgebrochen"
 
-msgid "Do you want to add this buddy?"
+msgid "Do you approve the requestion?"
+msgstr "Wollen sie die Anfrage akzeptieren?"
+
+msgid "Do you add the buddy?"
 msgstr "Möchten Sie diesen Buddy hinzufügen?"
 
 #. only need to get value
@@ -7589,16 +7672,19 @@
 msgstr "Möchten Sie ihn hinzufügen?"
 
 #, c-format
-msgid "%s has added you [%s] to his or her buddy list"
-msgstr "%s hat Sie [%s] zu seiner Buddy-Liste hinzugefügt"
-
-#, c-format
-msgid "User %s rejected your request"
-msgstr "Benutzer %s hat Ihre Anfrage abgelehnt"
-
-#, c-format
-msgid "User %s approved your request"
-msgstr "Benutzer %s hat Ihre Anfrage akzeptiert"
+msgid "%s added you [%s] to buddy list"
+msgstr "%s hat Sie [%s] zur Buddy-Liste hinzugefügt"
+
+msgid "QQ Budy"
+msgstr "QQ-Buddy"
+
+#, c-format
+msgid "Requestion rejected by %s"
+msgstr "Anfrage abgelehnt von %s"
+
+#, c-format
+msgid "Requestion approved by %s"
+msgstr "Anfrage akzeptiert von %s"
 
 #. TODO: this should go through purple_account_request_authorization()
 #, c-format
@@ -7606,21 +7692,23 @@
 msgstr "%s möchte Sie [%s] als Freund hinzufügen"
 
 #, c-format
-msgid "Message: %s"
-msgstr "Nachricht: %s"
-
-#, c-format
-msgid "%s is not in your buddy list"
-msgstr "%s ist nicht in Ihrer Buddy-Liste"
-
-#, c-format
-msgid "Notice from: %s"
-msgstr "Ankündigung von %s"
+msgid "%s is not in buddy list"
+msgstr "%s ist nicht in der Buddy-Liste"
+
+msgid "Would you add?"
+msgstr "Möchten Sie ihn hinzufügen?"
+
+#, c-format
+msgid "From %s:"
+msgstr "Von %s:"
 
 #, c-format
 msgid "%s"
 msgstr "%s"
 
+msgid "QQ Server Notice"
+msgstr "QQ-Server-Nachricht"
+
 msgid "Connection closed (writing)"
 msgstr "Verbindung geschlossen (schreibend)"
 
@@ -9090,6 +9178,9 @@
 msgid "Could not create listen socket"
 msgstr "Kann Listen-Socket nicht erstellen"
 
+msgid "Could not resolve hostname"
+msgstr "Konnte den Hostnamen nicht auflösen"
+
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "SIP-Benutzernamen dürfen keine Leerzeichen oder @-Symbole enthalten"
 
@@ -9307,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."
@@ -9474,6 +9565,9 @@
 msgid "doodle: Request user to start a Doodle session"
 msgstr "doodle: Einen Benutzer auffordern, eine Mal-Sitzung zu starten"
 
+msgid "Yahoo ID..."
+msgstr "Yahoo-ID..."
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -10029,6 +10123,10 @@
 msgstr "Verbindung zu %s nicht möglich"
 
 #, c-format
+msgid "Error reading from %s: response too long (%d bytes limit)"
+msgstr "Fehler beim Lesen von %s: Antwort zu lang (%d Bytes maximal)"
+
+#, c-format
 msgid ""
 "Unable to allocate enough memory to hold the contents from %s.  The web "
 "server may be trying something malicious."
@@ -10683,6 +10781,9 @@
 msgid "SSL Servers"
 msgstr "SSL-Server"
 
+msgid "Network disconnected"
+msgstr "vom Netzwerk abgemeldet"
+
 msgid "Unknown command."
 msgstr "Unbekanntes Kommando."
 
@@ -11559,6 +11660,14 @@
 msgid "Color to draw hyperlinks."
 msgstr "Farbe zum Darstellen von Hyperlinks."
 
+msgid "Hyperlink visited color"
+msgstr "Farbe für besuchte Hyperlinks"
+
+msgid "Color to draw hyperlinks after it has been visited (or activated)."
+msgstr ""
+"Farbe zum Darstellen von Hyperlinks, wenn sie besucht (oder aktiviert) "
+"wurden."
+
 msgid "Hyperlink prelight color"
 msgstr "Hyperlink-Farbe"
 
@@ -11581,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 ""
@@ -11608,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 ""
@@ -11823,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 ""
@@ -12429,14 +12538,17 @@
 "Klang-_Abspielbefehl:\n"
 "(%s für den Dateinamen)"
 
+msgid "M_ute sounds"
+msgstr "Stu_mmschalten"
+
 msgid "Sounds when conversation has _focus"
 msgstr "Klang, wenn das Gespräch den _Fokus hat"
 
-msgid "Enable sounds:"
-msgstr "Klänge aktivieren:"
-
-msgid "Volume:"
-msgstr "Lautstärke:"
+msgid "_Enable sounds:"
+msgstr "_Klänge aktivieren:"
+
+msgid "V_olume:"
+msgstr "_Lautstärke:"
 
 msgid "Play"
 msgstr "Abspielen"
@@ -13385,6 +13497,9 @@
 msgid "Hyperlink Color"
 msgstr "Hyperlink-Farbe"
 
+msgid "Visited Hyperlink Color"
+msgstr "Farbe für besuchte Hyperlinks"
+
 msgid "Highlighted Message Name Color"
 msgstr "Farbe des Absendernamens für hervorgehobene Nachrichten"
 
--- a/po/fi.po	Wed Oct 01 22:25:36 2008 +0000
+++ b/po/fi.po	Wed Oct 01 22:25:47 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ä"