changeset 29389:339c3e5d8ac7

propagate from branch 'im.pidgin.pidgin' (head 907b3271bb72546dc11ed711526b55cb20254b23) to branch 'im.pidgin.pidgin.mxit' (head 9b876cae5558c770c596e743e07b154a8373c4c3)
author andrew.victor@mxit.com
date Thu, 28 Jan 2010 18:50:49 +0000
parents 836544f3b81f (diff) 81ea740f92a4 (current diff)
children 1e89206ed1ae
files
diffstat 12 files changed, 198 insertions(+), 111 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Jan 26 14:26:22 2010 +0000
+++ b/ChangeLog	Thu Jan 28 18:50:49 2010 +0000
@@ -4,6 +4,10 @@
 	libpurple:
 	* Fix 'make check' on OS X. (David Fang)
 
+	General:
+	* Correctly disable all missing dependencies when using the
+	  --disable-missing-dependencies option.  (Gabriel Schulhof)
+
 	Gadu-Gadu:
 	* Fix display of avatars after a server-side change. (Krzysztof
 	  Klinikowski)
@@ -11,7 +15,7 @@
 	MSN:
 	* File transfer requests will no longer cause a crash if you delete the
 	  file before the other side accepts.
-	* Recieved files will no longer hold an extra lock after completion,
+	* Received files will no longer hold an extra lock after completion,
 	  meaning they can be moved or deleted without complaints from your OS.
 	* Buddies who sign in from a second location will no longer cause an
 	  unnecessary chat window to open.
@@ -24,6 +28,12 @@
 	  (when given by the result of the "last query") and don't show status as
 	  offline.
 
+	Pidgin:
+	* Correctly size conversation and status box entries when the
+	  interior-focus style property is diabled. (Gabriel Schulhof)
+	* Correctly handle a multiline text field being required in a
+	  request form.  (Thanks to Florian Zeitz for finding this problem)
+
 version 2.6.5 (01/08/2010):
 	libpurple:
 	* TLS certificates are actually stored to the local cache once again
--- a/configure.ac	Tue Jan 26 14:26:22 2010 +0000
+++ b/configure.ac	Thu Jan 28 18:50:49 2010 +0000
@@ -426,6 +426,7 @@
 					X11_LIBS="$x_libpath_add"
 					X11_CFLAGS="$x_incpath_add"
 				else
+					with_x="no"
 					if test "x$force_deps" = "xyes" ; then
 						AC_MSG_ERROR([
 X11 development headers not found.
@@ -528,6 +529,7 @@
 	if test "x$enable_startup_notification" = "xyes"; then
 		PKG_CHECK_MODULES(STARTUP_NOTIFICATION, [libstartup-notification-1.0 >= 0.5], , [
 			AC_MSG_RESULT(no)
+			enable_startup_notification="no"
 			if test "x$force_deps" = "xyes" ; then
 				AC_MSG_ERROR([
 Startup notification development headers not found.
@@ -548,6 +550,7 @@
 	if test "x$enable_gtkspell" = "xyes" ; then
 		PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, , [
 			AC_MSG_RESULT(no)
+			enable_gtkspell="no"
 			if test "x$force_deps" = "xyes" ; then
 				AC_MSG_ERROR([
 GtkSpell development headers not found.
@@ -598,6 +601,7 @@
 	if test "x$enable_cap" = "xyes"; then
 		PKG_CHECK_MODULES(SQLITE3, sqlite3 >= 3.3,,[
 			AC_MSG_RESULT(no)
+			enable_cap="no"
 			if test "x$force_deps" = "xyes" ; then
 				AC_MSG_ERROR([
 sqlite3 development headers not found.
@@ -746,6 +750,7 @@
 			[], [$GSTREAMER_LIBS])
 	], [
 		AC_MSG_RESULT(no)
+		enable_gst="no"
 		if test "x$force_deps" = "xyes" ; then
 			AC_MSG_ERROR([
 GStreamer development headers not found.
@@ -826,6 +831,7 @@
 		AC_SUBST(IDN_LIBS)
 	], [
 		AC_MSG_RESULT(no)
+		enable_idn="no"
 		if test "x$force_deps" = "xyes" ; then
 			AC_MSG_ERROR([
 GNU Libidn development headers not found.
@@ -898,11 +904,14 @@
 	AC_CHECK_LIB(avahi-client, avahi_client_new, [avahilibs=yes], [avahilibs=no], $AVAHI_LIBS)
 fi
 
-if test "x$enable_avahi" = "xyes" -a "x$force_deps" = "xyes" -a \( "x$avahiincludes" = "xno" -o "x$avahilibs" = "xno" \); then
-	AC_MSG_ERROR([
+if test "x$enable_avahi" = "xyes" -a \( "x$avahiincludes" = "xno" -o "x$avahilibs" = "xno" \); then
+	enable_avahi="no"
+	if test "x$force_deps" = "xyes"; then
+		AC_MSG_ERROR([
 avahi development headers not found.
 Use --disable-avahi if you do not need avahi (Bonjour) support.
 ])
+	fi
 fi
 AC_SUBST(AVAHI_CFLAGS)
 AC_SUBST(AVAHI_LIBS)
--- a/libpurple/network.h	Tue Jan 26 14:26:22 2010 +0000
+++ b/libpurple/network.h	Thu Jan 28 18:50:49 2010 +0000
@@ -252,7 +252,7 @@
 void purple_network_set_turn_server(const gchar *turn_server);
 	
 /**
- * Get the IP address of the STUN server as a string representation
+ * Get the IP address of the TURN server as a string representation
  *
  * @return the IP address
  * @since 2.6.0
--- a/libpurple/protocols/jabber/jabber.c	Tue Jan 26 14:26:22 2010 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Thu Jan 28 18:50:49 2010 +0000
@@ -640,7 +640,7 @@
 
 	if (responses == NULL) {
 		purple_debug_warning("jabber", "Unable to find alternative XMPP connection "
-				  "methods after failing to connect directly.");
+				  "methods after failing to connect directly.\n");
 		purple_connection_error_reason(js->gc,
 				PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
 				_("Unable to connect"));
@@ -678,14 +678,14 @@
 jabber_login_callback(gpointer data, gint source, const gchar *error)
 {
 	PurpleConnection *gc = data;
-	JabberStream *js = gc->proto_data;
+	JabberStream *js = purple_connection_get_protocol_data(gc);
 
 	if (source < 0) {
 		if (js->srv_rec != NULL) {
-			purple_debug_error("jabber", "Unable to connect to server: %s.  Trying next SRV record.\n", error);
+			purple_debug_error("jabber", "Unable to connect to server: %s.  Trying next SRV record or connecting directly.\n", error);
 			try_srv_connect(js);
 		} else {
-			purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain);
+			purple_debug_info("jabber","Couldn't connect directly to %s.  Trying to find alternative connection methods, like BOSH.\n", js->user->domain);
 			js->srv_query_data = purple_txt_resolve("_xmppconnect",
 					js->user->domain, txt_resolved_cb, js);
 		}
--- a/libpurple/protocols/jabber/presence.c	Tue Jan 26 14:26:22 2010 +0000
+++ b/libpurple/protocols/jabber/presence.c	Thu Jan 28 18:50:49 2010 +0000
@@ -790,8 +790,9 @@
 				g_free(room_jid);
 			}
 
-			jabber_buddy_track_resource(jb, jid->resource, priority, state,
+			jbr = jabber_buddy_track_resource(jb, jid->resource, priority, state,
 					status);
+			jbr->commands_fetched = TRUE;
 
 			jabber_chat_track_handle(chat, jid->resource, real_jid, affiliation, role);
 
--- a/libpurple/tests/test_util.c	Tue Jan 26 14:26:22 2010 +0000
+++ b/libpurple/tests/test_util.c	Thu Jan 28 18:50:49 2010 +0000
@@ -113,6 +113,11 @@
 	purple_markup_html_to_xhtml("<a>", &xhtml, &plaintext);
 	assert_string_equal_free("<a href=\"\"></a>", xhtml);
 	assert_string_equal_free("", plaintext);
+
+
+	purple_markup_html_to_xhtml("<FONT>x</FONT>", &xhtml, &plaintext);
+	assert_string_equal_free("x", xhtml);
+	assert_string_equal_free("x", plaintext);
 }
 END_TEST
 
--- a/libpurple/util.c	Tue Jan 26 14:26:22 2010 +0000
+++ b/libpurple/util.c	Thu Jan 28 18:50:49 2010 +0000
@@ -1519,7 +1519,7 @@
 				if(tag) {
 					while(tags) {
 						struct purple_parse_tag *pt = tags->data;
-						if(xhtml)
+						if(xhtml && !pt->ignore)
 							g_string_append_printf(xhtml, "</%s>", pt->dest_tag);
 						if(plain && purple_strequal(pt->src_tag, "a")) {
 							/* if this is a link, we have to add the url to the plaintext, too */
--- a/pidgin/gtkaccount.c	Tue Jan 26 14:26:22 2010 +0000
+++ b/pidgin/gtkaccount.c	Thu Jan 28 18:50:49 2010 +0000
@@ -381,6 +381,7 @@
 static void
 update_editable(PurpleConnection *gc, AccountPrefsDialog *dialog)
 {
+	GtkStyle *style;
 	gboolean set;
 	GList *l;
 
@@ -392,10 +393,21 @@
 
 	set = !(purple_account_is_connected(dialog->account) || purple_account_is_connecting(dialog->account));
 	gtk_widget_set_sensitive(dialog->protocol_menu, set);
-	gtk_widget_set_sensitive(dialog->username_entry, set);
-
-	for (l = dialog->user_split_entries ; l != NULL ; l = l->next)
-		gtk_widget_set_sensitive((GtkWidget *)l->data, set);
+	gtk_editable_set_editable(GTK_EDITABLE(dialog->username_entry), set);
+	style = set ? NULL : gtk_widget_get_style(dialog->username_entry);
+	gtk_widget_modify_base(dialog->username_entry, GTK_STATE_NORMAL,
+			style ? &style->base[GTK_STATE_INSENSITIVE] : NULL);
+
+	for (l = dialog->user_split_entries ; l != NULL ; l = l->next) {
+		if (GTK_IS_EDITABLE(l->data)) {
+			gtk_editable_set_editable(GTK_EDITABLE(l->data), set);
+			style = set ? NULL : gtk_widget_get_style(GTK_WIDGET(l->data));
+			gtk_widget_modify_base(GTK_WIDGET(l->data), GTK_STATE_NORMAL,
+					style ? &style->base[GTK_STATE_INSENSITIVE] : NULL);
+		} else {
+			gtk_widget_set_sensitive(GTK_WIDGET(l->data), set);
+		}
+	}
 }
 
 static void
--- a/pidgin/gtkconv.c	Tue Jan 26 14:26:22 2010 +0000
+++ b/pidgin/gtkconv.c	Thu Jan 28 18:50:49 2010 +0000
@@ -4652,6 +4652,8 @@
 	int max_height = total_height / 2;
 	int min_lines = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/minimum_entry_lines");
 	int min_height;
+	gboolean interior_focus;
+	int focus_width;
 
 	pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(gtkconv->entry));
 	pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(gtkconv->entry));
@@ -4678,6 +4680,13 @@
 	min_height = min_lines * (oneline.height + MAX(pad_inside, pad_top + pad_bottom));
 	height = CLAMP(height, MIN(min_height, max_height), max_height);
 
+	gtk_widget_style_get(gtkconv->entry,
+	                     "interior-focus", &interior_focus,
+	                     "focus-line-width", &focus_width,
+	                     NULL);
+	if (!interior_focus)
+		height += 2 * focus_width;
+
 	diff = height - gtkconv->entry->allocation.height;
 	if (ABS(diff) < oneline.height / 2)
 		return FALSE;
--- a/pidgin/gtkrequest.c	Tue Jan 26 14:26:22 2010 +0000
+++ b/pidgin/gtkrequest.c	Thu Jan 28 18:50:49 2010 +0000
@@ -719,9 +719,25 @@
 {
 	PurpleRequestFieldGroup *group;
 	PidginRequestData *req_data;
-	const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
+
+	if (purple_request_field_string_is_multiline(field))
+	{
+		char *text;
+		GtkTextIter start_iter, end_iter;
+
+		gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(entry), &start_iter);
+		gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(entry), &end_iter);
 
-	purple_request_field_string_set_value(field, (*text == '\0' ? NULL : text));
+		text = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(entry), &start_iter, &end_iter, FALSE);
+		purple_request_field_string_set_value(field, (!text || !*text) ? NULL : text);
+		g_free(text);
+	}
+	else
+	{
+		const char *text = NULL;
+		text = gtk_entry_get_text(GTK_ENTRY(entry));
+		purple_request_field_string_set_value(field, (*text == '\0') ? NULL : text);
+	}
 
 	group = purple_request_field_get_group(field);
 	req_data = (PidginRequestData *)group->fields_list->ui_data;
@@ -824,6 +840,13 @@
 
 		g_signal_connect(G_OBJECT(textview), "focus-out-event",
 						 G_CALLBACK(field_string_focus_out_cb), field);
+
+	    if (purple_request_field_is_required(field))
+	    {
+			GtkTextBuffer *buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
+			g_signal_connect(G_OBJECT(buffer), "changed",
+							 G_CALLBACK(req_entry_field_changed_cb), field);
+	    }
 	}
 	else
 	{
--- a/pidgin/gtkstatusbox.c	Tue Jan 26 14:26:22 2010 +0000
+++ b/pidgin/gtkstatusbox.c	Thu Jan 28 18:50:49 2010 +0000
@@ -2541,6 +2541,8 @@
 	GdkRectangle oneline;
 	int height;
 	int pad_top, pad_inside, pad_bottom;
+	gboolean interior_focus;
+	int focus_width;
 
 	if (!status_box->imhtml_visible)
 	{
@@ -2591,6 +2593,13 @@
 	height += (pad_top + pad_bottom) * lines;
 	height += (pad_inside) * (display_lines - lines);
 
+	gtk_widget_style_get(status_box->imhtml,
+	                     "interior-focus", &interior_focus,
+	                     "focus-line-width", &focus_width,
+	                     NULL);
+	if (!interior_focus)
+		height += 2 * focus_width;
+
 	gtk_widget_set_size_request(status_box->vbox, -1, height + PIDGIN_HIG_BOX_SPACE);
 }
 
--- a/po/de.po	Tue Jan 26 14:26:22 2010 +0000
+++ b/po/de.po	Thu Jan 28 18:50:49 2010 +0000
@@ -11,8 +11,8 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-08 16:32+0100\n"
-"PO-Revision-Date: 2010-01-08 16:30+0100\n"
+"POT-Creation-Date: 2010-01-24 23:42+0100\n"
+"PO-Revision-Date: 2010-01-24 23:42+0100\n"
 "Last-Translator: Björn Voigt <bjoern@cs.tu-berlin.de>\n"
 "Language-Team: Deutsch <de@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -362,7 +362,7 @@
 "Unblock."
 msgstr ""
 "Bitte geben Sie den Benutzernamen oder den Alias der Person ein, die Sie "
-"blockieren oder für die Sie die Blockierung aufheben wollen."
+"sperren oder entsperren möchten."
 
 #. Not multiline
 #. Not masked?
@@ -2447,7 +2447,7 @@
 msgstr "_Setzen"
 
 msgid "None of your accounts are idle."
-msgstr "Keine Ihrer Konten sind untätig."
+msgstr "Keines Ihrer Konten verzeichnet Untätigkeit."
 
 msgid "Unset Account Idle Time"
 msgstr "Untätigkeitszeit zurücksetzen"
@@ -2472,7 +2472,7 @@
 #. *< priority
 #. *< id
 msgid "IPC Test Client"
-msgstr "IPC Testclient"
+msgstr "IPC-Testclient"
 
 #. *< name
 #. *< version
@@ -2495,7 +2495,7 @@
 #. *< priority
 #. *< id
 msgid "IPC Test Server"
-msgstr "IPC Testserver"
+msgstr "IPC-Testserver"
 
 #. *< name
 #. *< version
@@ -2517,7 +2517,7 @@
 msgstr "Für Räume mit mehr als so vielen Leuten"
 
 msgid "If user has not spoken in this many minutes"
-msgstr "Wenn Benutzer so viele Minuten nicht gesprochen hat"
+msgstr "Wenn der Benutzer so viele Minuten nicht gesprochen hat"
 
 msgid "Apply hiding rules to buddies"
 msgstr "Regeln zum Verstecken auf Buddys anwenden"
@@ -3369,7 +3369,7 @@
 msgstr "_Passwort:"
 
 msgid "IRC nick and server may not contain whitespace"
-msgstr "IRC- Server und -Nicknamen dürfen keine Leerzeichen enthalten"
+msgstr "IRC-Server und -Spitzname dürfen keinen Leerraum enthalten"
 
 msgid "SSL support unavailable"
 msgstr "SSL-Unterstützung nicht verfügbar"
@@ -3549,20 +3549,20 @@
 msgstr "Modus (%s %s) von %s"
 
 msgid "Invalid nickname"
-msgstr "Ungültiger Benutzername"
+msgstr "Ungültiger Spitzname"
 
 msgid ""
 "Your selected nickname was rejected by the server.  It probably contains "
 "invalid characters."
 msgstr ""
-"Ihr gewählter Kontoname wurde vom Server abgelehnt.  Er enthält vermutlich "
+"Ihr gewünschter Spitzname wurde vom Server abgelehnt.  Er enthält vermutlich "
 "ungültige Zeichen."
 
 msgid ""
 "Your selected account name was rejected by the server.  It probably contains "
 "invalid characters."
 msgstr ""
-"Ihr gewählter Kontoname wurde vom Server abgelehnt.  Er enthält vermutlich "
+"Ihr gewünschter Kontoname wurde vom Server abgelehnt.  Er enthält vermutlich "
 "ungültige Zeichen."
 
 #. We only want to do the following dance if the connection
@@ -3617,7 +3617,7 @@
 "keine Nachricht, um wieder zurückzukehren."
 
 msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
-msgstr "ctcp <nick> <anfrage>: Sendet CTCP-Anfrage an nick."
+msgstr "ctcp <nick> <anfrage>: Sendet CTCP-Anfrage an einen Spitznamen."
 
 msgid "chanserv: Send a command to chanserv"
 msgstr "chanserv: Sendet ein Kommando zum Chanserv"
@@ -3626,24 +3626,24 @@
 "deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from "
 "someone. You must be a channel operator to do this."
 msgstr ""
-"deop &lt;Nick1&gt; [Nick2] ...:  Entferne den Kanal-Operator-Status von "
-"jemanden. Sie müssen hierfür selbst Operator des Kanals sein."
+"deop &lt;Spitzname1&gt; [Spitzname2] ...:  Entferne den Kanal-Operator-"
+"Status von jemanden. Sie müssen hierfür selbst Operator des Kanals sein."
 
 msgid ""
 "devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from "
 "someone, preventing them from speaking if the channel is moderated (+m). You "
 "must be a channel operator to do this."
 msgstr ""
-"devoice &lt;Nick1&gt; [Nick2] ...:  Entferne den Voice-Status von jemanden. "
-"Dies verbietet ihm zu sprechen, wenn der Kanal moderiert wird (+). Sie "
-"müssen hierfür selbst Operator des Kanals sein."
+"devoice &lt;Spitzname1&gt; [Spitzname2] ...:  Entferne den Voice-Status von "
+"jemanden. Dies verbietet ihm zu sprechen, wenn der Kanal moderiert wird (+). "
+"Sie müssen hierfür selbst Operator des Kanals sein."
 
 msgid ""
 "invite &lt;nick&gt; [room]:  Invite someone to join you in the specified "
 "channel, or the current channel."
 msgstr ""
-"invite &lt;Nick&gt; [Raum]:  Jemanden in den angegeben Kanal oder in den "
-"aktuellen Kanal einladen."
+"invite &lt;Spitzname&gt; [Raum]:  Jemanden in den angegeben Kanal oder in "
+"den aktuellen Kanal einladen."
 
 msgid ""
 "j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
@@ -3685,21 +3685,21 @@
 "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel "
 "or user mode."
 msgstr ""
-"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;Nick|Kanal&gt;:  Kanal- oder Benutzermodi "
-"setzen oder zurücknehmen."
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;Spitzname|Kanal&gt;:  Kanal- oder "
+"Benutzermodi setzen oder zurücknehmen."
 
 msgid ""
 "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
 "opposed to a channel)."
 msgstr ""
-"msg &lt;nick&gt; &lt;nachricht&gt;:  Sendet eine private Nachricht an einen "
-"Benutzer (im Gegensatz zum Kanal)."
+"msg &lt;Spitzname&gt; &lt;Nachricht&gt;:  Sendet eine private Nachricht an "
+"einen Benutzer (im Gegensatz zum Kanal)."
 
 msgid "names [channel]:  List the users currently in a channel."
 msgstr "names [Kanal]:  Listet die Benutzer im aktuellen Kanal auf."
 
 msgid "nick &lt;new nickname&gt;:  Change your nickname."
-msgstr "nick &lt;new nickname&gt;:  Ihren Spitznamen ändern."
+msgstr "nick &lt;neuer Spitzname&gt;:  Ihren Spitznamen ändern."
 
 msgid "nickserv: Send a command to nickserv"
 msgstr "nickserv: Sendet ein Kommando zum Nickserv"
@@ -3712,8 +3712,8 @@
 "op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You "
 "must be a channel operator to do this."
 msgstr ""
-"op &lt;Nick1&gt; [Nick2] ...:  Erteile den Operator-Status an jemanden. Sie "
-"müssen hierfür selbst Operator des Kanals sein."
+"op &lt;Spitzname1&gt; [Spitzname2] ...:  Erteile den Operator-Status an "
+"jemanden. Sie müssen hierfür selbst Operator des Kanals sein."
 
 msgid ""
 "operwall &lt;message&gt;:  If you don't know what this is, you probably "
@@ -3736,14 +3736,14 @@
 "ping [nick]:  Asks how much lag a user (or the server if no user specified) "
 "has."
 msgstr ""
-"ping [Nick]:  Ermittelt die Verzögerung eines Benutzers (oder eines Server, "
-"wenn kein Benutzer angegeben wird) über ein Ping."
+"ping [Spitzname]:  Ermittelt die Verzögerung eines Benutzers (oder eines "
+"Server, wenn kein Benutzer angegeben wird) über ein Ping."
 
 msgid ""
 "query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
 "opposed to a channel)."
 msgstr ""
-"query &lt;Nick&gt; &lt;Nachricht&gt;:  Sendet eine private Nachricht an "
+"query &lt;Spitzname&gt; &lt;Nachricht&gt;:  Sendet eine private Nachricht an "
 "einen Benutzer (im Gegensatz zu einem Kanal)."
 
 msgid "quit [message]:  Disconnect from the server, with an optional message."
@@ -3756,7 +3756,7 @@
 "remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a "
 "channel operator to do this."
 msgstr ""
-"remove &lt;Nick&gt; [Nachricht]:  Jemanden aus dem Raum entfernen. Sie "
+"remove &lt;Spitzname&gt; [Nachricht]:  Jemanden aus dem Raum entfernen. Sie "
 "müssen hierfür selbst Operator des Kanals sein."
 
 msgid "time: Displays the current local time at the IRC server."
@@ -3776,9 +3776,9 @@
 "voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You "
 "must be a channel operator to do this."
 msgstr ""
-"voice &lt;Nick1&gt; [Nick2] ...:  Vergibt jemanden den Voice-Status. Dies "
-"erlaubt ihm auch dann noch zu sprechen, wenn der Kanal moderiert wird (+m). "
-"Sie müssen hierfür selbst Operator des Kanals sein."
+"voice &lt;Spitzname1&gt; [Spitzname2] ...:  Vergibt jemanden den Voice-"
+"Status. Dies erlaubt ihm auch dann noch zu sprechen, wenn der Kanal "
+"moderiert wird (+m). Sie müssen hierfür selbst Operator des Kanals sein."
 
 msgid ""
 "wallops &lt;message&gt;:  If you don't know what this is, you probably can't "
@@ -3788,11 +3788,13 @@
 "Sie sie wahrscheinlich nicht."
 
 msgid "whois [server] &lt;nick&gt;:  Get information on a user."
-msgstr "whois [Server] &lt;Nick&gt;:  Informationen zu einem Benutzer abrufen."
+msgstr ""
+"whois [Server] &lt;Spitzname&gt;:  Informationen zu einem Benutzer abrufen."
 
 msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
 msgstr ""
-"whowas &lt;Nick&gt;:  Informationen zu einem abgemeldeten Benutzer abrufen."
+"whowas &lt;Spitzname&gt;:  Informationen zu einem abgemeldeten Benutzer "
+"abrufen."
 
 #, c-format
 msgid "Reply time from %s: %lu seconds"
@@ -4153,7 +4155,7 @@
 
 msgid "Nick changing not supported in non-MUC chatrooms"
 msgstr ""
-"Die Änderung des Nick-Namens wird in nicht-MUC-Chaträumen nicht unterstützt"
+"Die Änderung des Spitznamens wird in nicht-MUC-Chaträumen nicht unterstützt"
 
 msgid "Error retrieving room list"
 msgstr "Fehler beim Empfangen der Raumliste"
@@ -4293,23 +4295,23 @@
 msgstr "Hört gerade"
 
 msgid "Both"
-msgstr "Beide"
+msgstr "Beiderseitig"
 
 msgid "From (To pending)"
-msgstr "Von (zu den offenen)"
+msgstr "Eingehend (ausgehend unbestätigt)"
 
 msgid "From"
-msgstr "Von"
+msgstr "Eingehend"
 
 msgid "To"
-msgstr "Zu"
+msgstr "Ausstehend"
 
 msgid "None (To pending)"
-msgstr "Kein (zu den offenen)"
+msgstr "Nein (ausgehend unbestätigt)"
 
 #. 0
 msgid "None"
-msgstr "Kein"
+msgstr "Nein"
 
 #. subscription type
 msgid "Subscription"
@@ -4633,15 +4635,15 @@
 "affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get "
 "the users with an affiliation or set users' affiliation with the room."
 msgstr ""
-"affiliate &lt;owner|admin|member|outcast|none&gt; [Benutzer1] "
-"[Benutzer2] ...: Benutzer mit einer Mitgliedschaft für den Raum erfragen "
+"affiliate &lt;owner|admin|member|outcast|none&gt; [Spitzname1] "
+"[Spitzname2] ...: Benutzer mit einer Mitgliedschaft für den Raum erfragen "
 "oder setzen."
 
 msgid ""
 "role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the "
 "users with a role or set users' role with the room."
 msgstr ""
-"role &lt;owner|admin|member|outcast|none&gt; [Benutzer1] [Benutzer2] ...: "
+"role &lt;owner|admin|member|outcast|none&gt; [Spitzname1] [Spitzname2] ...: "
 "Benutzer mit einer Rolle für den Raum erfragen oder Benutzern eine Rolle "
 "zuweisen."
 
@@ -4741,7 +4743,7 @@
 msgstr "(Code %s)"
 
 msgid "XML Parse error"
-msgstr "Fehler bei Einlesen von XML-Daten"
+msgstr "Fehler beim Einlesen von XML-Daten"
 
 msgid "Unknown Error in presence"
 msgstr "Unbekannter Fehlercode"
@@ -4830,10 +4832,10 @@
 msgstr "Setze Stimmung..."
 
 msgid "Set User Nickname"
-msgstr "Setze Benutzer-Spitznamen"
+msgstr "Setze Benutzer-Spitzname"
 
 msgid "Please specify a new nickname for you."
-msgstr "Bitte geben Sie den neuen Spitznamen für ein."
+msgstr "Bitte geben Sie einen neuen Spitznamen für Sie ein."
 
 msgid ""
 "This information is visible to all contacts on your contact list, so choose "
@@ -4910,7 +4912,7 @@
 
 #, c-format
 msgid "Invalid username"
-msgstr "Ungültiger Benutzername"
+msgstr "Benutzername ungültig"
 
 #, c-format
 msgid "Invalid friendly name"
@@ -5932,7 +5934,7 @@
 "Ihre Server-Einstellungen."
 
 msgid "Logging In..."
-msgstr "Logge ein..."
+msgstr "Anmeldung läuft..."
 
 msgid ""
 "Unable to connect to the MXit server. Please check your server settings."
@@ -6188,7 +6190,7 @@
 msgstr "Unerwartete Challenge-Länge vom Server"
 
 msgid "Logging in"
-msgstr "Logge ein"
+msgstr "Anmeldung läuft"
 
 msgid "MySpaceIM - No Username Set"
 msgstr "MySpaceIM - Kein Benutzername gesetzt"
@@ -6198,7 +6200,8 @@
 
 msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
 msgstr ""
-"Möchten Sie jetzt einen setzen? (Bemerkung: DIES KANN NICHT GEÄNDERT WERDEN!)"
+"Möchten Sie jetzt einen festlegen? (Achtung: DIES KANN NICHT GEÄNDERT "
+"WERDEN!)"
 
 msgid "Lost connection with server"
 msgstr "Verbindung zum Server verloren"
@@ -6368,7 +6371,7 @@
 msgstr "MySpaceIM - Benutzername verfügbar"
 
 msgid "This username is available. Would you like to set it?"
-msgstr "Dieser Benutzername ist verfügbar. Möchten Sie ihn setzen?"
+msgstr "Dieser Benutzername ist verfügbar. Möchten Sie ihn festlegen?"
 
 msgid "ONCE SET, THIS CANNOT BE CHANGED!"
 msgstr "EINMAL GESETZT, KANN DIES NICHT GEÄNDERT WERDEN!"
@@ -6596,7 +6599,7 @@
 msgstr "Sie können die selbe Person nicht zweimal zu einem Gespräch hinzufügen"
 
 msgid "You have reached your limit for the number of contacts allowed"
-msgstr "Sie haben die Grenze der maximal erlaubten Kontakte erreicht"
+msgstr "Sie haben die Maximalzahl an erlaubten Kontakten erreicht"
 
 msgid "You have entered an incorrect username"
 msgstr "Sie haben einen ungültigen Benutzernamen eingegeben"
@@ -6754,7 +6757,7 @@
 "Gesendet: %s"
 
 msgid "Would you like to join the conversation?"
-msgstr "Möchten der Konferenz beitreten?"
+msgstr "Möchten Sie an der Konferenz teilnehmen?"
 
 #, c-format
 msgid ""
@@ -6804,7 +6807,7 @@
 "and try again. If you continue to try, you will need to wait even longer."
 msgstr ""
 "Sie haben sich zu schnell an- und abgemeldet. Warten Sie 10 Minuten und "
-"versuchen Sie es noch einmal. Wenn Sie es weiterversuchen, müssen Sie sogar "
+"versuchen Sie es noch einmal. Wenn Sie es weiter versuchen, müssen Sie sogar "
 "noch länger warten."
 
 #. Note to translators: The first %s is a URL, the second is an
@@ -7178,7 +7181,7 @@
 "longer."
 msgstr ""
 "Ihr Benutzername hat sich zu schnell an- und abgemeldet. Warten Sie 10 "
-"Minuten und versuchen Sie es noch einmal. Wenn Sie es weiterversuchen, "
+"Minuten und versuchen Sie es noch einmal. Wenn Sie es weiter versuchen, "
 "müssen Sie sogar noch länger warten."
 
 #. client too old
@@ -7194,8 +7197,8 @@
 "longer."
 msgstr ""
 "Ihre IP-Adresse hat sich zu schnell an- und abgemeldet. Warten Sie eine "
-"Minute und versuchen Sie es noch einmal. Wenn Sie es weiterversuchen, müssen "
-"Sie sogar noch länger warten."
+"Minute und versuchen Sie es noch einmal. Wenn Sie es weiter versuchen, "
+"müssen Sie sogar noch länger warten."
 
 msgid "The SecurID key entered is invalid"
 msgstr "Der eingegebene SecurID-Schlüssel ist falsch"
@@ -7281,7 +7284,7 @@
 
 #, c-format
 msgid "ICQ user %u has sent you a buddy: %s (%s)"
-msgstr "Der ICQ Benutzer %u hat Ihnen einen Buddy gesendet: %s (%s)"
+msgstr "Der ICQ-Benutzer %u hat Ihnen einen Buddy gesendet: %s (%s)"
 
 msgid "Do you want to add this buddy to your buddy list?"
 msgstr "Möchten Sie diesen Buddy zu Ihrer Buddy-Liste hinzufügen?"
@@ -8982,16 +8985,16 @@
 "More than one user was found with the same public key. Select the correct "
 "user from the list to add to the buddy list."
 msgstr ""
-"Mehr als ein Benutzer wurde mit dem gleichen öffentlichen Schlüssel "
-"gefunden. Wählen Sie den richtigen Benutzer, um ihn zur Buddy-Liste "
-"hinzuzufügen."
+"Es gibt mehr als einen Benutzer mit dem gleichen öffentlichen Schlüssel. "
+"Wählen Sie den richtigen Benutzer aus, der zur Buddy-Liste hinzugefügt "
+"werden soll."
 
 msgid ""
 "More than one user was found with the same name. Select the correct user "
 "from the list to add to the buddy list."
 msgstr ""
-"Mehr als ein Benutzer wurde mit dem gleichen Namen gefunden. Wählen Sie den "
-"richtigen Benutzer, um ihn zur Buddy-Liste hinzuzufügen."
+"Es gibt mehr als einen Benutzer mit gleichem Namen. Wählen Sie den richtigen "
+"Benutzer aus, der zur Buddy-Liste hinzugefügt werden soll."
 
 msgid "Detached"
 msgstr "Unbeteiligt"
@@ -9348,7 +9351,7 @@
 msgstr "Kann das Thema nicht setzen"
 
 msgid "Failed to change nickname"
-msgstr "Kann den Nickname nicht ändern"
+msgstr "Kann den Spitznamen nicht ändern"
 
 msgid "Roomlist"
 msgstr "Raumliste"
@@ -9621,7 +9624,7 @@
 msgstr "Thema zu lang"
 
 msgid "You must specify a nick"
-msgstr "Sie müssen einen Nick angeben"
+msgstr "Sie müssen einen Spitznamen angeben"
 
 #, c-format
 msgid "channel %s not found"
@@ -9660,7 +9663,7 @@
 msgstr "list:  Liste Kanäle in diesem Netzwerk auf"
 
 msgid "whois &lt;nick&gt;:  View nick's information"
-msgstr "whois &lt;Nick&gt;:  Informationen zum Nick anzeigen"
+msgstr "whois &lt;Spitzname&gt;:  Informationen zum Spitznamen anzeigen"
 
 msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user"
 msgstr ""
@@ -9669,8 +9672,8 @@
 
 msgid "query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
 msgstr ""
-"query &lt;Nick&gt; [&lt;Nachricht&gt;]:  Sende eine private Nachricht an "
-"einen Benutzer"
+"query &lt;Spitzname&gt; [&lt;Nachricht&gt;]:  Sende eine private Nachricht "
+"an einen Benutzer"
 
 msgid "motd:  View the server's Message Of The Day"
 msgstr "motd:  Nachricht des Tages vom Server anzeigen"
@@ -9685,13 +9688,15 @@
 msgstr "call &lt;Kommando&gt;:  Rufe ein Silc-Client-Kommando auf"
 
 msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]:  Kill nick"
-msgstr "kill &lt;Nick&gt; [-pubkey|&lt;Grund&gt;]:  Killt einen Nick"
+msgstr ""
+"kill &lt;Spitzname&gt; [-pubkey|&lt;Grund&gt;]:  Wirft einen Spitznamen "
+"hinaus"
 
 msgid "nick &lt;newnick&gt;:  Change your nickname"
-msgstr "nick &lt;neue Nickname&gt;:  Ihren Nickname ändern"
+msgstr "nick &lt;neuer Spitzname&gt;:  Ihren Spitznamen ändern"
 
 msgid "whowas &lt;nick&gt;:  View nick's information"
-msgstr "whowas &lt;Nick&gt;:  Informationen zu einem Benutzer abrufen"
+msgstr "whowas &lt;Spitzname&gt;:  Informationen zu einem Benutzer abrufen"
 
 msgid ""
 "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display "
@@ -9704,8 +9709,8 @@
 "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes "
 "on channel"
 msgstr ""
-"cumode &lt;Kanal&gt; +|-&lt;Modi&gt; &lt;Nick&gt;:  Modi des Benutzers auf "
-"dem Kanal ändern"
+"cumode &lt;Kanal&gt; +|-&lt;Modi&gt; &lt;Spitzname&gt;:  Modi des Benutzers "
+"auf dem Kanal ändern"
 
 msgid "umode &lt;usermodes&gt;:  Set your modes in the network"
 msgstr ""
@@ -9713,30 +9718,31 @@
 
 msgid "oper &lt;nick&gt; [-pubkey]:  Get server operator privileges"
 msgstr ""
-"oper &lt;Nick&gt; [-pubkey]:  Privilegien des Server-Operators verlangen"
+"oper &lt;Spitzname&gt; [-pubkey]:  Privilegien des Server-Operators verlangen"
 
 msgid ""
 "invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from "
 "channel invite list"
 msgstr ""
-"invite &lt;Kanal&gt; [-|+]&lt;Nick&gt;:  Benutzer einladen oder Benutzer zur "
-"Einladungsliste des Kanals hinzufügen oder von der Einladungsliste entfernen"
+"invite &lt;Kanal&gt; [-|+]&lt;Spitzname&gt;:  Benutzer einladen oder "
+"Benutzer zur Einladungsliste des Kanals hinzufügen oder von der "
+"Einladungsliste entfernen"
 
 msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]:  Kick client from channel"
 msgstr ""
-"kick &lt;Kanal&gt; &lt;Nick&gt; [Kommentar]:  Kickt einen Benutzer aus dem "
-"Kanal"
+"kick &lt;Kanal&gt; &lt;Spitzname&gt; [Kommentar]:  Kickt einen Benutzer aus "
+"dem Kanal"
 
 msgid "info [server]:  View server administrative details"
 msgstr "info [Server]:  Administrative Details des Servers ansehen"
 
 msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]:  Ban client from channel"
-msgstr "ban [&lt;Kanal&gt; +|-&lt;Nick&gt;]:  Verbanne Benutzer vom Kanal"
+msgstr "ban [&lt;Kanal&gt; +|-&lt;Spitzname&gt;]:  Verbanne Benutzer vom Kanal"
 
 msgid "getkey &lt;nick|server&gt;:  Retrieve client's or server's public key"
 msgstr ""
-"getkey &lt;Nick|Server&gt;:  Öffentlichen Schlüssel der Servers oder des "
-"Benutzers abrufen"
+"getkey &lt;Spitzname|Server&gt;:  Öffentlichen Schlüssel der Servers oder "
+"des Benutzers abrufen"
 
 msgid "stats:  View server and network statistics"
 msgstr "stats:  Server- und Netzwerkstatistik ansehen"
@@ -10161,7 +10167,7 @@
 msgstr "Buddy ignorieren?"
 
 msgid "Invalid username or password"
-msgstr "Ungültiger Benutzername oder Passwort"
+msgstr "Benutzername oder Passwort ungültig"
 
 msgid ""
 "Your account has been locked due to too many failed login attempts.  Please "
@@ -10464,10 +10470,10 @@
 msgstr "Der Versuch, %s,%s,%s zu abonnieren ist gescheitert"
 
 msgid "zlocate &lt;nick&gt;: Locate user"
-msgstr "zlocate &lt;Nick&gt;: Benutzer suchen"
+msgstr "zlocate &lt;Spitzname&gt;: Benutzer suchen"
 
 msgid "zl &lt;nick&gt;: Locate user"
-msgstr "zl &lt;Nick&gt;: Benutzer suchen"
+msgstr "zl &lt;Spitzname&gt;: Benutzer suchen"
 
 msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
 msgstr ""
@@ -10662,7 +10668,7 @@
 msgstr "Nicht stören"
 
 msgid "Extended away"
-msgstr "Abwesend (erweitert)"
+msgstr "Länger abwesend"
 
 msgid "Listening to music"
 msgstr "Musik hören"
@@ -11080,7 +11086,7 @@
 "your nickname"
 msgstr ""
 "Die Textinformation für einen Chat mit einer ungelesenen Nachricht, in der "
-"Ihr Nickname vorkommt"
+"Ihr Spitzname vorkommt"
 
 msgid "The text information for a buddy's status"
 msgstr "Die Textinformation für den Status eines Buddys"
@@ -11366,7 +11372,7 @@
 
 #, c-format
 msgid "Idle %dd %dh %02dm"
-msgstr "Untätig %dd %dh %02dm"
+msgstr "Untätig seit %dd %dh %02dm"
 
 #, c-format
 msgid "Idle %dh %02dm"
@@ -11374,7 +11380,7 @@
 
 #, c-format
 msgid "Idle %dm"
-msgstr "Untätig %dm"
+msgstr "Untätig seit %dm"
 
 msgid "/Buddies/New Instant Message..."
 msgstr "/Buddys/Neue Sofortnachricht..."
@@ -12102,6 +12108,9 @@
 msgid "Mongolian"
 msgstr "Mongolisch"
 
+msgid "Marathi"
+msgstr "Marathi"
+
 msgid "Malay"
 msgstr "Malaiisch"
 
@@ -13558,10 +13567,10 @@
 
 msgid "Allow only the users on my buddy list"
 msgstr ""
-"Nur den Benutzern in meiner Buddy-Liste erlauben mir Nachrichten zu senden"
+"Nur den Benutzern in meiner Buddy-Liste erlauben, mir Nachrichten zu senden"
 
 msgid "Allow only the users below"
-msgstr "Erlaube nur den untenstehenden Benutzern mir Nachrichten zu senden"
+msgstr "Erlaube nur den untenstehenden Benutzern, mir Nachrichten zu senden"
 
 msgid "Block all users"
 msgstr "Blockiere alle Benutzer"
@@ -14332,7 +14341,7 @@
 #. *< priority
 #. *< id
 msgid "Iconify on Away"
-msgstr "Minimieren, wenn Abwesend"
+msgstr "Minimieren, wenn abwesend"
 
 #. *< name
 #. *< version
@@ -14613,7 +14622,7 @@
 msgstr "Raw"
 
 msgid "Lets you send raw input to text-based protocols."
-msgstr "Erlaubt Ihnen Rohdaten an textbasierte Protokolle zu senden."
+msgstr "Erlaubt Ihnen, Rohdaten an textbasierte Protokolle zu senden."
 
 msgid ""
 "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
@@ -14961,7 +14970,7 @@
 
 #. IM Convo trans options
 msgid "IM Conversation Windows"
-msgstr "IM Gesprächsfenster"
+msgstr "IM-Gesprächsfenster"
 
 msgid "_IM window transparency"
 msgstr "_IM Fenstertransparenz"