changeset 24160:89cb9c0f5bd9

merge of '550b0287adae13c3fb57b0b584f2b461370b8464' and '885fba4941a4f260371929c9e4761be5aec9c463'
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Thu, 02 Oct 2008 04:59:13 +0000
parents a7e1edeb3ac6 (diff) f54e7398f733 (current diff)
children 7ec9a1ae93d7
files
diffstat 17 files changed, 565 insertions(+), 448 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/conversation.h	Thu Oct 02 04:52:38 2008 +0000
+++ b/libpurple/conversation.h	Thu Oct 02 04:59:13 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/jabber/jabber.c	Thu Oct 02 04:52:38 2008 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Thu Oct 02 04:59:13 2008 +0000
@@ -131,6 +131,9 @@
 			}
 			if((my_jb = jabber_buddy_find(js, full_jid, TRUE)))
 				my_jb->subscription |= JABBER_SUB_BOTH;
+
+			purple_connection_set_display_name(js->gc, full_jid);
+
 			g_free(full_jid);
 		}
 	} else {
--- a/libpurple/protocols/msn/msg.c	Thu Oct 02 04:52:38 2008 +0000
+++ b/libpurple/protocols/msn/msg.c	Thu Oct 02 04:59:13 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	Thu Oct 02 04:52:38 2008 +0000
+++ b/libpurple/protocols/msn/msg.h	Thu Oct 02 04:59:13 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	Thu Oct 02 04:52:38 2008 +0000
+++ b/libpurple/protocols/msn/msn.c	Thu Oct 02 04:59:13 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	Thu Oct 02 04:52:38 2008 +0000
+++ b/libpurple/protocols/msn/msn.h	Thu Oct 02 04:59:13 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	Thu Oct 02 04:52:38 2008 +0000
+++ b/libpurple/protocols/msn/servconn.c	Thu Oct 02 04:59:13 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	Thu Oct 02 04:52:38 2008 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Thu Oct 02 04:59:13 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	Thu Oct 02 04:52:38 2008 +0000
+++ b/libpurple/protocols/msn/switchboard.h	Thu Oct 02 04:59:13 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	Thu Oct 02 04:52:38 2008 +0000
+++ b/pidgin/gtkaccount.c	Thu Oct 02 04:59:13 2008 +0000
@@ -451,7 +451,8 @@
 	if (dialog->account != NULL)
 		username = g_strdup(purple_account_get_username(dialog->account));
 
-	if (!username && PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(dialog->prpl_info, get_account_text_table)) {
+	if (!username && dialog->prpl_info
+			&& PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(dialog->prpl_info, get_account_text_table)) {
 		GdkColor color = {0, 34952, 35466, 34181};
 		GHashTable *table;
 		const char *label;
--- a/pidgin/gtkstatusbox.c	Thu Oct 02 04:52:38 2008 +0000
+++ b/pidgin/gtkstatusbox.c	Thu Oct 02 04:59:13 2008 +0000
@@ -397,6 +397,11 @@
 	status_box->icon_box = gtk_event_box_new();
 	gtk_widget_set_parent(status_box->icon_box, GTK_WIDGET(status_box));
 	gtk_widget_show(status_box->icon_box);
+#if 0
+	gtk_widget_set_tooltip_text(status_box->icon_box,
+			status_box->account ? _("Click to change your buddyicon for this account.") :
+				_("Click to change your buddyicon for all accounts."));
+#endif
 
 	if (status_box->account &&
 		!purple_account_get_bool(status_box->account, "use-global-buddyicon", TRUE))
@@ -1199,69 +1204,22 @@
 	}
 
 	status_box->connecting_index = 0;
-	status_box->connecting_pixbufs[0] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT0,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[1] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT1,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[2] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT2,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[3] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT3,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[4] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT4,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[5] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT5,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[6] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT6,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[7] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT7,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[8] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT8,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[9] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT9,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[10] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT10,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[11] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT11,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[12] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT12,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[13] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT13,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[14] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT14,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[15] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT15,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[16] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT16,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[17] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT17,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[18] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT18,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[19] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT19,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[20] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT20,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[21] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT21,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[22] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT22,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[23] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT23,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[24] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT24,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[25] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT25,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[26] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT26,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[27] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT27,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[28] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT28,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[29] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT29,
-								     icon_size, "PidginStatusBox");
-	status_box->connecting_pixbufs[30] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_CONNECT30,
-								     icon_size, "PidginStatusBox");
-
+
+#define CACHE_ANIMATION_CONNECT(index) \
+	status_box->connecting_pixbufs[index] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox),\
+			PIDGIN_STOCK_ANIMATION_CONNECT ## index, icon_size, "PidginStatusBox")
+
+	CACHE_ANIMATION_CONNECT(0);
+	CACHE_ANIMATION_CONNECT(1);
+	CACHE_ANIMATION_CONNECT(2);
+	CACHE_ANIMATION_CONNECT(3);
+	CACHE_ANIMATION_CONNECT(4);
+	CACHE_ANIMATION_CONNECT(5);
+	CACHE_ANIMATION_CONNECT(6);
+	CACHE_ANIMATION_CONNECT(7);
+	CACHE_ANIMATION_CONNECT(8);
+
+#undef CACHE_ANIMATION_CONNECT
 
 	for (i = 0; i < G_N_ELEMENTS(status_box->typing_pixbufs); i++) {
 		if (status_box->typing_pixbufs[i] != NULL)
@@ -1269,16 +1227,18 @@
 	}
 
 	status_box->typing_index = 0;
-	status_box->typing_pixbufs[0] =  gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING0,
-								     icon_size, "PidginStatusBox");
-	status_box->typing_pixbufs[1] =  gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING1,
-								     icon_size, "PidginStatusBox");
-	status_box->typing_pixbufs[2] =  gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING2,
-								     icon_size, "PidginStatusBox");
-	status_box->typing_pixbufs[3] =  gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING3,
-								     icon_size, "PidginStatusBox");
-	status_box->typing_pixbufs[4] =  gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), PIDGIN_STOCK_ANIMATION_TYPING4,
-								     icon_size, "PidginStatusBox");
+
+#define CACHE_ANIMATION_TYPING(index) \
+	status_box->typing_pixbufs[index] =  gtk_widget_render_icon (GTK_WIDGET(status_box->vbox), \
+			PIDGIN_STOCK_ANIMATION_TYPING ## index, icon_size, "PidginStatusBox")
+
+	CACHE_ANIMATION_TYPING(0);
+	CACHE_ANIMATION_TYPING(1);
+	CACHE_ANIMATION_TYPING(2);
+	CACHE_ANIMATION_TYPING(3);
+	CACHE_ANIMATION_TYPING(4);
+
+#undef CACHE_ANIMATION_TYPING
 }
 
 static void account_enabled_cb(PurpleAccount *acct, PidginStatusBox *status_box)
@@ -2712,9 +2672,15 @@
 	{
 		if (status_box->imhtml_visible)
 		{
+			GtkTextIter start, end;
+			GtkTextBuffer *buffer;
 			gtk_widget_show_all(status_box->vbox);
 			status_box->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
 			gtk_widget_grab_focus(status_box->imhtml);
+			buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml));
+			gtk_text_buffer_get_bounds(buffer, &start, &end);
+			gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "insert"), &end);
+			gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "selection_bound"), &start);
 		}
 		else
 		{
--- a/pidgin/gtkstatusbox.h	Thu Oct 02 04:52:38 2008 +0000
+++ b/pidgin/gtkstatusbox.h	Thu Oct 02 04:59:13 2008 +0000
@@ -111,7 +111,7 @@
 
 	GdkPixbuf *error_pixbuf;
 	int connecting_index;
-	GdkPixbuf *connecting_pixbufs[31];
+	GdkPixbuf *connecting_pixbufs[9];
 	int typing_index;
 	GdkPixbuf *typing_pixbufs[6];
 
--- a/pidgin/plugins/notify.c	Thu Oct 02 04:52:38 2008 +0000
+++ b/pidgin/plugins/notify.c	Thu Oct 02 04:59:13 2008 +0000
@@ -557,9 +557,7 @@
 static void
 handle_urgent(PidginWindow *win, gboolean set)
 {
-#ifndef _WIN32
 	pidgin_set_urgent(GTK_WINDOW(win->window), set);
-#endif
 }
 
 static void
@@ -767,12 +765,15 @@
 
 	/* Urgent method button */
 	toggle = gtk_check_button_new_with_mnemonic(_("Set window manager \"_URGENT\" hint"));
+#else
+	/* TODO: When we're not string frozen, mark for translation */
+	toggle = gtk_check_button_new_with_mnemonic("_Flash window");
+#endif
 	gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0);
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle),
 	                             purple_prefs_get_bool("/plugins/gtk/X11/notify/method_urgent"));
 	g_signal_connect(G_OBJECT(toggle), "toggled",
 	                 G_CALLBACK(method_toggle_cb), "method_urgent");
-#endif
 
 	/* Raise window method button */
 	toggle = gtk_check_button_new_with_mnemonic(_("R_aise conversation window"));
--- a/pidgin/win32/nsis/translations/finnish.nsh	Thu Oct 02 04:52:38 2008 +0000
+++ b/pidgin/win32/nsis/translations/finnish.nsh	Thu Oct 02 04:59:13 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/pidgin/win32/winpidgin.c	Thu Oct 02 04:52:38 2008 +0000
+++ b/pidgin/win32/winpidgin.c	Thu Oct 02 04:59:13 2008 +0000
@@ -212,6 +212,9 @@
 		return;
 	}
 
+	/* Set $HOME so that the GTK+ settings get stored in the right place */
+	_snprintf(path2, sizeof(path2), "HOME=%s", path);
+	_putenv(path2);
 
 	/* Set up the settings dir base to be \\path\to
 	 * The actual settings dir will be \\path\to\.purple */
--- a/po/de.po	Thu Oct 02 04:52:38 2008 +0000
+++ b/po/de.po	Thu Oct 02 04:59:13 2008 +0000
@@ -11,9 +11,9 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-09-29 19:10+0200\n"
-"PO-Revision-Date: 2008-09-29 19:03+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"
 
@@ -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"
 
@@ -6155,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 "
@@ -6425,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"
 
@@ -7137,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."
 
@@ -7280,7 +7211,7 @@
 msgstr "Erfolgreich:"
 
 msgid "Change buddy information."
-msgstr "Buddy-Informationen bearbeiten."
+msgstr "Buddy-Informationen bearbeiten"
 
 #, c-format
 msgid ""
@@ -7315,7 +7246,7 @@
 msgstr "Buddy entfernen"
 
 msgid "Remove from other's buddy list"
-msgstr "Von einer anderen Buddy-Liste entfernen"
+msgstr "Von der Liste des Buddys entfernen"
 
 #, c-format
 msgid "%d needs authentication"
@@ -7388,7 +7319,7 @@
 
 #, c-format
 msgid "Successed to join Qun %d, operated by admin %d"
-msgstr "Erfolgreicher Beitritt des Qun %de, moderiert vom Admin %d"
+msgstr "Erfolgreicher Beitritt in den Qun %d, moderiert vom Admin %d"
 
 #, c-format
 msgid "[%d] removed from Qun \"%d\""
@@ -7427,7 +7358,7 @@
 
 #, c-format
 msgid "Qun %d denied to join"
-msgstr "Qun %d wurde nicht hereingelassen"
+msgstr "Qun %d hat Ihren Beitritt abgelehnt"
 
 msgid "Join Qun, Unknow Reply"
 msgstr "Qun-Beitritt, Unbekannte Antwort"
@@ -7450,7 +7381,7 @@
 msgstr "Wollen sie die Anfrage akzeptieren?"
 
 msgid "Change Qun member"
-msgstr "Qun-Nummer ändern"
+msgstr "Qun-Mitglied ändern"
 
 msgid "Change Qun information"
 msgstr "Qun-Informationen bearbeiten"
@@ -7675,7 +7606,6 @@
 msgstr "Verbindung verloren"
 
 #. Update the login progress status display
-#, c-format
 msgid "Request token"
 msgstr "Anfragekürzel"
 
@@ -7693,7 +7623,7 @@
 msgstr "QQ-Fehler"
 
 msgid "Unknow SERVER CMD"
-msgstr "Unbekanntes SERVER CMD"
+msgstr "Unbekanntes SERVER-CMD"
 
 #, c-format
 msgid ""
@@ -8379,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> "
 
@@ -8404,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 "
@@ -8809,7 +8737,6 @@
 msgid "Your Current Mood"
 msgstr "Ihre momentane Stimmung"
 
-#, c-format
 msgid "Normal"
 msgstr "Normal"
 
@@ -9195,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"
 
@@ -9332,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 "
@@ -9356,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."
 
@@ -9396,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."
@@ -10252,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."
 
@@ -11508,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>"
 
@@ -11879,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..."
 
@@ -12608,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"
 
@@ -13629,7 +13518,6 @@
 msgid "Select Color"
 msgstr "Farbe auswählen"
 
-#, c-format
 msgid "Select Interface Font"
 msgstr "Schriftart wählen"
 
@@ -13856,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	Thu Oct 02 04:52:38 2008 +0000
+++ b/po/fi.po	Thu Oct 02 04:59:13 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ä"