changeset 23389:5c70d953a497

propagate from branch 'im.pidgin.pidgin.2.4.3' (head 709ec9c29e9d76eebbded25061107ef0a2a2b148) to branch 'im.pidgin.pidgin' (head e8d624d4b86e9505bb225f2a6e7b29ec6c8affed)
author Richard Laager <rlaager@wiktel.com>
date Thu, 26 Jun 2008 09:07:56 +0000
parents d04d24b1db9b (current diff) 276925996951 (diff)
children f0a88845f517
files COPYRIGHT ChangeLog libpurple/protocols/bonjour/bonjour.c libpurple/protocols/irc/parse.c libpurple/protocols/jabber/auth.c libpurple/protocols/jabber/jabber.c libpurple/protocols/msn/oim.c libpurple/protocols/msn/slplink.c libpurple/protocols/qq/qq.c libpurple/protocols/qq/qq_proxy.c libpurple/protocols/qq/qq_proxy.h libpurple/protocols/qq/recv_core.c libpurple/protocols/qq/recv_core.h libpurple/protocols/qq/send_core.c libpurple/protocols/qq/send_core.h libpurple/protocols/qq/send_file.c libpurple/protocols/qq/sendqueue.c libpurple/protocols/qq/sendqueue.h libpurple/protocols/qq/udp_proxy_s5.c libpurple/protocols/qq/udp_proxy_s5.h libpurple/protocols/yahoo/yahoo.c libpurple/protocols/zephyr/zephyr.h libpurple/proxy.c pidgin/gtkimhtml.c pidgin/gtkimhtmltoolbar.c po/ar.po po/bn.po po/bs.po po/ca@valencia.po po/fi.po po/gl.po po/ko.po po/lo.po po/nb.po po/nl.po po/ps.po po/sq.po po/ta.po po/te.po po/th.po po/ur.po po/vi.po po/zh_CN.po
diffstat 297 files changed, 10728 insertions(+), 6729 deletions(-) [+]
line wrap: on
line diff
--- a/AUTHORS	Thu Jun 26 08:42:49 2008 +0000
+++ b/AUTHORS	Thu Jun 26 09:07:56 2008 +0000
@@ -8,14 +8,6 @@
 Current Developers:
 ------------------
 
-Sean Egan <seanegan@gmail.com> - Lead Developer
-	AIM: SeanEgn
-	ICQ: 96642211
-	Yahoo:	SeanEgn
-	MSN:  seanegn@hotmail.com
-	XMPP:  seanegn@jabber.org
-	Gadu-Gadu:  1511497
-
 Daniel 'datallah' Atallah - Developer
 John 'rekkanoryo' Bailey - Developer
 Ethan 'Paco-Paco' Blanton - Developer
@@ -23,6 +15,7 @@
 Ka-Hing Cheung - Developer
 Sadrul Habib Chowdhury - Developer
 Mark 'KingAnt' Doliner - Developer
+Sean Egan - Developer
 Casey Harkins - Developer
 Gary 'grim' Kramlich - Developer
 Richard 'rlaager' Laager - Developer
@@ -41,6 +34,7 @@
 
 Crazy Patch Writers:
 -------------------
+Felipe 'shx' Contreras
 Dennis 'EvilDennisR' Ristuccia
 Peter 'Fmoo' Ruibal
 Elliott 'QuLogic' Sales de Andrade
@@ -61,7 +55,6 @@
 
 Retired Crazy Patch Writers:
 ---------------------------
-Felipe 'shx' Contreras
 Decklin Foster
 Peter 'Bleeter' Lawler
 Robert 'Robot101' McQueen
--- a/COPYRIGHT	Thu Jun 26 08:42:49 2008 +0000
+++ b/COPYRIGHT	Thu Jun 26 09:07:56 2008 +0000
@@ -54,6 +54,7 @@
 Jonathan Brossard
 Jeffery Brown
 Philip Brown
+Dan Bruce
 Norbert Buchmuller
 Sean Burke
 Thomas Butter
@@ -233,6 +234,7 @@
 Shlomi Loubaton
 Uli Luckas
 Matthew Luckie
+Marcus Lundblad
 Mike Lundy
 Jason Lynch
 Iain MacDonnell
@@ -277,6 +279,7 @@
 Novell
 Padraig O'Briain
 Christopher O'Brien (siege)
+Peter O'Gorman
 Jon Oberheide
 Yusuke Odate
 Ruediger Oertel
@@ -289,6 +292,7 @@
 John Oyler
 Matt Pandina
 Laszlo Pandy
+Giulio 'Twain28' Pascali
 Ricardo Fernandez Pascual
 Riley Patterson
 Havoc Pennington
@@ -352,6 +356,7 @@
 Mark Schneider
 Evan Schoenberg
 Gabriel Schulhof
+Eric Michael Schwelm
 Federico Schwindt
 Torrey Searle
 Peter Seebach
@@ -384,6 +389,7 @@
 Richard Stellingwerff
 Charlie Stockman
 David Stoddard
+Adam Strzelecki
 Andreas Stührk
 Oleg Sukhodolsky
 Sun Microsystems
@@ -446,6 +452,8 @@
 Matt Wilson
 Dan Winship
 Scott Wolchok
+The Written Word, Inc.
+Kevin Wu Won
 Pui Lam Wong
 Justin Wood
 Ximian
--- a/ChangeLog	Thu Jun 26 08:42:49 2008 +0000
+++ b/ChangeLog	Thu Jun 26 09:07:56 2008 +0000
@@ -1,5 +1,34 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
+version 2.5.0 (??/??/2008):
+	libpurple:
+	* Ability to create custom smileys (currently only the MSN protocol
+	  utilizes the feature). (Thanks to Mauro Sérgio Ferreira Brasil,
+	  Marcus Lundblad, Jorge Villaseñor and other contributors)
+	* Add a configure option, --with-system-ssl-certs to allow packagers
+	  to specify a system-wide SSL CA certificates directory.  When set,
+	  we don't install our SSL CA certs, so it's important that the
+	  libpurple package depend on the CA certificates.
+
+	Pidgin:
+	* Custom buddy icons can now be added to and removed from buddy list
+	  entries via the buddy list entry right-click menu.
+	* Resize large incoming custom smileys to a maximum of 96px on either
+	  side.
+	* Offer to add new buddies into the same contact as existing buddies
+          in the same group if the alias given is the same.
+
+	General:
+	* Group and Chat buddy list entries can now be given custom buddy
+	  icons.
+
+	Finch:
+	* Added "Invite..." menu to chats.
+	* Added "View All Logs" menu in the buddylist to display a list of all IM
+	  logs.
+	* Added '/msgcolor' command to change colors of different classes of
+	  messages in a conversation. See '/help msgcolor' for details.
+
 version 2.4.3 (??/??/2008):
 	libpurple:
 	* Yahoo! Japan now uses UTF-8, matching the behavior of official clients
--- a/ChangeLog.API	Thu Jun 26 08:42:49 2008 +0000
+++ b/ChangeLog.API	Thu Jun 26 09:07:56 2008 +0000
@@ -1,5 +1,41 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
+version 2.5.0 (??/??/2008):
+	libpurple:
+		Added:
+		* Connection flag PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY to indicate
+		  that the connection supports sending and receiving custom smileys.
+		* PurpleSmiley and the Smiley API.
+		* purple_serv_got_join_chat_failed
+		* chat-join-failed signal (see conversation-signals.dox)
+		* chat-invite-blocked and blocked-im-msg signals (see
+		  converation-signals.dox) (Thanks to Stefan Ott)
+		* purple_blist_update_node_icon
+		* purple_buddy_icons_node_has_custom_icon
+		* purple_buddy_icons_node_find_custom_icon
+		* purple_buddy_icons_node_set_custom_icon
+		* purple_buddy_icons_node_set_custom_icon_from_file
+		* purple_notify_user_info_prepend_section_break
+		* purple_notify_user_info_prepend_section_header
+
+		Deprecated:
+		* purple_blist_update_buddy_icon
+		* purple_buddy_icons_has_custom_icon
+		* purple_buddy_icons_find_custom_icon
+		* purple_buddy_icons_set_custom_icon
+		* pidgin_set_custom_buddy_icon
+
+	pidgin:
+		Added:
+		* gtk_imhtml_smiley_create, gtk_imhtml_smiley_reload and
+		  gtk_imhtml_smiley_destroy to deal with GtkIMHtmlSmiley's.
+		* pidgin_pixbuf_from_imgstore to create a GdkPixbuf from a
+		  PurpleStoredImage.
+		* pidgin_themes_smiley_themeize_custom to associate custom smileys to
+		  a GtkIMHtml widget.
+		* GTK_IMHTML_CUSTOM_SMILEY flag for GtkIMHtml.
+		* GTK+ Custom Smiley API.
+
 version 2.4.2 (05/17/2008):
 	perl:
 		Added:
--- a/Doxyfile.in	Thu Jun 26 08:42:49 2008 +0000
+++ b/Doxyfile.in	Thu Jun 26 09:07:56 2008 +0000
@@ -485,11 +485,11 @@
 # directories like "/usr/src/myproject". Separate the files or directories 
 # with spaces.
 
-INPUT                  = libpurple \
-                         finch \
-                         finch/libgnt \
-                         pidgin \
-                         doc
+INPUT                  = @top_srcdir@/libpurple \
+                         @top_srcdir@/finch \
+                         @top_srcdir@/finch/libgnt \
+                         @top_srcdir@/pidgin \
+                         @top_srcdir@/doc
 
 # This tag can be used to specify the character encoding of the source files that 
 # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
--- a/NEWS	Thu Jun 26 08:42:49 2008 +0000
+++ b/NEWS	Thu Jun 26 09:07:56 2008 +0000
@@ -1,6 +1,6 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
-2.4.2 (5/XX/2008):
+2.4.2 (5/17/2008):
 	Sadrul: We added some usability changes in this release, including the
 	typing notification, buddyicon and input area size in the conversation
 	windows, escape to close conversation windows etc. These changes should
--- a/README.MTN	Thu Jun 26 08:42:49 2008 +0000
+++ b/README.MTN	Thu Jun 26 09:07:56 2008 +0000
@@ -26,7 +26,7 @@
 API, and account.h contains documentation for the purple_account_* API.
 
 If you have questions, please feel free to contact the Pidgin, Finch, and
-libpurple developers by e-mail at devel@pidgin.im or on IRC at irc.freenode.net
+libpurple developers by email at devel@pidgin.im or on IRC at irc.freenode.net
 in #pidgin.  Please do as much homework as you can before contacting us; the
 more you know about your question, the faster and more effectively we can help!
 
--- a/configure.ac	Thu Jun 26 08:42:49 2008 +0000
+++ b/configure.ac	Thu Jun 26 09:07:56 2008 +0000
@@ -43,19 +43,19 @@
 #
 # Make sure to update finch/libgnt/configure.ac with libgnt version changes.
 #
-m4_define([purple_lt_current], [4])
+m4_define([purple_lt_current], [5])
 m4_define([purple_major_version], [2])
-m4_define([purple_minor_version], [4])
-m4_define([purple_micro_version], [3])
+m4_define([purple_minor_version], [5])
+m4_define([purple_micro_version], [0])
 m4_define([purple_version_suffix], [devel])
 m4_define([purple_version],
           [purple_major_version.purple_minor_version.purple_micro_version])
 m4_define([purple_display_version], purple_version[]m4_ifdef([purple_version_suffix],[purple_version_suffix]))
 
-m4_define([gnt_lt_current], [4])
+m4_define([gnt_lt_current], [5])
 m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [4])
-m4_define([gnt_micro_version], [3])
+m4_define([gnt_minor_version], [5])
+m4_define([gnt_micro_version], [0])
 m4_define([gnt_version_suffix], [devel])
 m4_define([gnt_version],
           [gnt_major_version.gnt_minor_version.gnt_micro_version])
@@ -108,13 +108,14 @@
 
 dnl Checks for programs.
 AC_PROG_CC
+AM_PROG_CC_C_O
 AC_DISABLE_STATIC
-AM_PROG_LIBTOOL
+AC_PROG_LIBTOOL
 LIBTOOL="$LIBTOOL --silent"
 AC_PROG_INSTALL
 AC_PROG_INTLTOOL
 PKG_PROG_PKG_CONFIG
-
+AC_FUNC_ALLOCA
 GETTEXT_PACKAGE=pidgin
 AC_SUBST(GETTEXT_PACKAGE)
 
@@ -210,7 +211,7 @@
 		[Define to 1 if you have the getaddrinfo function.])],
 	[AC_CHECK_LIB(socket, getaddrinfo,
 		[AC_DEFINE([HAVE_GETADDRINFO]) LIBS="-lsocket -lsnl $LIBS"], , , -lnsl)])
-
+AC_CHECK_FUNCS(inet_ntop)
 dnl Check for socklen_t (in Unix98)
 AC_MSG_CHECKING(for socklen_t)
 AC_TRY_COMPILE([
@@ -234,6 +235,12 @@
 	])
 ])
 
+dnl Some systems do not have sa_len field for struct sockaddr.
+AC_CHECK_MEMBER([struct sockaddr.sa_len],
+	[AC_DEFINE([HAVE_STRUCT_SOCKADDR_SA_LEN],[1],
+	[Define if struct sockaddr has an sa_len member])],[:],
+	[#include <sys/socket.h>])
+
 dnl to prevent the g_stat()/g_unlink() crash,
 dnl (09:50:07) Robot101: LSchiere2: it's easy. +LC_SYS_LARGEFILE somewhere in configure.ac
 AC_SYS_LARGEFILE
@@ -1200,8 +1207,8 @@
 dnl # Check for D-Bus libraries
 dnl #######################################################################
 
-AC_ARG_ENABLE(dbus, [AC_HELP_STRING([--enable-dbus], [enable D-Bus support])], , enable_dbus=yes)
-AC_ARG_ENABLE(nm, [AC_HELP_STRING([--enable-nm], [enable NetworkManager support (requires D-Bus)])], enable_nm=$enableval, enable_nm=yes)
+AC_ARG_ENABLE(dbus, [AC_HELP_STRING([--disable-dbus], [disable D-Bus support])], , enable_dbus=yes)
+AC_ARG_ENABLE(nm, [AC_HELP_STRING([--disable-nm], [disable NetworkManager support (requires D-Bus)])], enable_nm=$enableval, enable_nm=yes)
 
 if test "x$enable_dbus" = "xyes" ; then
 	AC_CHECK_PROG(enable_dbus, dbus-binding-tool, yes, no)
@@ -1554,6 +1561,18 @@
 dnl # Thanks go to Evolution for the checks.
 dnl #######################################################################
 
+AC_ARG_WITH(with-system-ssl-certs, [AC_HELP_STRING([--with-system-ssl-certs=<dir>], [directory containing system-wide SSL CA certificates])])
+
+SSL_CERTIFICATES_DIR=""
+if ! test -z "$with_system_ssl_certs" ; then
+	if ! test -d "$with_system_ssl_certs" ; then
+		AC_MSG_ERROR([$with_system_ssl_certs does not exist, if this is the correct location please make sure that it exists.])
+	fi
+	SSL_CERTIFICATES_DIR="$with_system_ssl_certs"
+fi
+AC_SUBST(SSL_CERTIFICATES_DIR)
+AM_CONDITIONAL(INSTALL_SSL_CERTIFICATES, test "x$SSL_CERTIFICATES_DIR" = "x")
+
 dnl These two are inverses of each other <-- stolen from evolution!
 
 AC_ARG_ENABLE(gnutls,
@@ -1622,14 +1641,14 @@
 			*) with_gnutls_libs="-L$with_gnutls_libs" ;;
 		esac
 
-		AC_CACHE_CHECK([for GnuTLS libraries], gnutls_libs,
+		AC_CACHE_CHECK([for GnuTLS libraries], ac_cv_gnutls_libs,
 		[
 			LIBS="$LIBS $with_gnutls_libs -lgnutls -lgcrypt"
-			AC_TRY_LINK_FUNC(gnutls_init, gnutls_libs="yes", gnutls_libs="no")
+			AC_TRY_LINK_FUNC(gnutls_init, ac_cv_gnutls_libs="yes", ac_cv_gnutls_libs="no")
 			LIBS="$LIBS_save"
 		])
 
-		if test "x$gnutls_libs" != "xno"; then
+		if test "x$ac_cv_gnutls_libs" != "xno"; then
 			AC_DEFINE(HAVE_GNUTLS, 1, [Define if you have GnuTLS])
 			AC_DEFINE(HAVE_SSL)
 			msg_gnutls="GnuTLS"
@@ -1782,7 +1801,7 @@
 				nsprlibs="$LIBDL -lplc4 -lplds4 -lnspr4 $PTHREAD_LIB"
 			fi
 
-			AC_CACHE_CHECK([for Mozilla nspr libraries], moz_nspr_libs,
+			AC_CACHE_CHECK([for Mozilla nspr libraries], ac_cv_moz_nspr_libs,
 			[
 				LIBS_save=$LIBS
 				CFLAGS="$CFLAGS $NSPR_CFLAGS"
@@ -1796,15 +1815,15 @@
 				fi
 
 				AC_TRY_LINK_FUNC(PR_Init,
-					[moz_nspr_libs="yes"],
-					[moz_nspr_libs="no"])
+					[ac_cv_moz_nspr_libs="yes"],
+					[ac_cv_moz_nspr_libs="no"])
 
 				CFLAGS=$CFLAGS_save
 				LDFLAGS=$LDFLAGS_save
 				LIBS=$LIBS_save
 			])
 
-			if test "x$moz_nspr_libs" != "xno"; then
+			if test "x$ac_cv_moz_nspr_libs" != "xno"; then
 				have_nspr_libs="yes"
 				NSPR_LIBS="-L$with_nspr_libs $nsprlibs"
 			else
@@ -1877,30 +1896,30 @@
 				nsslibs="-lssl3 -lsmime3 -lnss3 -lsoftokn3"
 			fi
 
-			AC_CACHE_CHECK([for Mozilla nss libraries], moz_nss_libs,
+			AC_CACHE_CHECK([for Mozilla nss libraries], ac_cv_moz_nss_libs,
 			[
 				LIBS_save=$LIBS
 				LDFLAGS="$LDFLAGS -L$with_nspr_libs -L$with_nss_libs"
 				LIBS="$nsslibs $nsprlibs"
 
 				AC_TRY_LINK_FUNC(NSS_Init,
-					[moz_nss_libs="yes"],
-					[moz_nss_libs="no"])
+					[ac_cv_moz_nss_libs="yes"],
+					[ac_cv_moz_nss_libs="no"])
 
-				if test "x$moz_nss_libs" = "xno"; then
+				if test "x$ac_cv_moz_nss_libs" = "xno"; then
 					nsslibs="-lssl3 -lsmime3 -lnss3 -lsoftokn3"
 					LDFLAGS="$LDFLAGS -L$with_nspr_libs -L$with_nss_libs" 
 					LIBS="$LIBS $nsslibs"
 					AC_TRY_LINK_FUNC(NSS_Init,
-						[moz_nss_libs="yes"],
-						[moz_nss_libs="no"])
+						[ac_cv_moz_nss_libs="yes"],
+						[ac_cv_moz_nss_libs="no"])
 				fi
 
 				LDFLAGS=$LDFLAGS_save
 				LIBS=$LIBS_save
 			])
 
-			if test "x$moz_nss_libs" != "xno"; then
+			if test "x$ac_cv_moz_nss_libs" != "xno"; then
 				AC_DEFINE(HAVE_NSS)
 				AC_DEFINE(HAVE_SSL)
 
@@ -2204,9 +2223,11 @@
 AC_CHECK_HEADERS(termios.h)
 
 # sys/sysctl.h on OpenBSD 4.2 requires sys/param.h
+# sys/sysctl.h on FreeBSD requires sys/types.h
 AC_CHECK_HEADERS(sys/param.h)
 AC_CHECK_HEADERS(sys/sysctl.h, [], [],
 	[[
+		#include <sys/types.h>
 		#ifdef HAVE_PARAM_H
 		# include <sys/param.h>
 		#endif
@@ -2229,11 +2250,7 @@
 dnl #######################################################################
 dnl # Check for check
 dnl #######################################################################
-PKG_CHECK_MODULES(CHECK,[check >= 0.9.4],:,[
-					ifdef([[AM_PATH_CHECK]],
-					[AM_PATH_CHECK(0.8.2,:,:)],
-					[AC_MSG_RESULT([no, testing is disabled])])
-				  ])
+PKG_CHECK_MODULES(CHECK, [check >= 0.9.4], , [AC_MSG_RESULT([no, testing is disabled])])
 AM_CONDITIONAL(HAVE_CHECK, [test "x$CHECK_LIBS" != "x"])
 AC_SUBST(CHECK_CFLAGS)
 AC_SUBST(CHECK_LIBS)
@@ -2406,6 +2423,9 @@
 fi
 echo Build with NetworkManager..... : $enable_nm
 echo SSL Library/Libraries......... : $msg_ssl
+if test "x$SSL_CERTIFICATES_DIR" != "x" ; then
+	eval eval echo SSL CA certificates directory. : $SSL_CERTIFICATES_DIR
+fi
 echo Build with Cyrus SASL support. : $enable_cyrus_sasl
 echo Use kerberos 4 with zephyr.... : $kerberos
 echo Use external libzephyr........ : $zephyr
--- a/doc/C-HOWTO.dox	Thu Jun 26 08:42:49 2008 +0000
+++ b/doc/C-HOWTO.dox	Thu Jun 26 09:07:56 2008 +0000
@@ -176,7 +176,7 @@
                                    how much to display).
                                  */
 	NULL,                   /* This is where you can put your name and
-                                   e-mail address.
+                                   email address.
                                  */
 	"http://helloworld.tld",/* This is the website for the plugin.  This
                                    tells users where to find new versions,
--- a/doc/conversation-signals.dox	Thu Jun 26 08:42:49 2008 +0000
+++ b/doc/conversation-signals.dox	Thu Jun 26 09:07:56 2008 +0000
@@ -7,6 +7,7 @@
   @signal sent-im-msg
   @signal receiving-im-msg
   @signal received-im-msg
+  @signal blocked-im-msg
   @signal writing-chat-msg
   @signal wrote-chat-msg
   @signal sending-chat-msg
@@ -26,7 +27,9 @@
   @signal chat-inviting-user
   @signal chat-invited-user
   @signal chat-invited
+  @signal chat-invite-blocked
   @signal chat-joined
+  @signal chat-join-failed
   @signal chat-left
   @signal chat-topic-changed
   @signal conversation-extended-menu
@@ -131,6 +134,21 @@
   @param flags   The IM message flags.
  @endsignaldef
 
+ @signaldef blocked-im-msg
+  @signalproto
+void (*blocked_im_msg)(PurpleAccount *account, const char *sender,
+        const char *message, PurpleMessageFlags flags, time_t when);
+  @endsignalproto
+  @signaldesc
+   Emitted after an IM is blocked due to privacy settings.
+  @param account The account the message was received on.
+  @param sender  The username of the sender.
+  @param message The message that was blocked.
+  @param flags   The IM message flags.
+  @param when    The time the message was sent.
+  @since 2.5.0
+ @endsignaldef
+
  @signaldef writing-chat-msg
   @signalproto
 gboolean (*writing_chat_msg)(PurpleAccount *account, const char *who,
@@ -302,6 +320,18 @@
   @param new_arrival If the buddy is a new arrival.
  @endsignaldef
 
+ @signaldef chat-join-failed
+  @signalproto
+void (*chat_join_failed)(PurpleConnection *gc, GHashTable *components);
+  @endsignalproto
+  @signaldesc
+   Emitted when an account fails to join a chat room
+  @param gc The PurpleConnection of the account which failed to join the chat.
+  @param data    The components passed to serv_join_chat() originally.
+                 The hash function should be g_str_hash() and the equal
+                 function should be g_str_equal().
+ @endsignaldef
+
  @signaldef chat-buddy-flags
   @signalproto
 void (*chat_buddy_flags)(PurpleConversation *conv, const char *name,
@@ -391,6 +421,21 @@
           default behavior will be maintained: the user will be prompted.
  @endsignaldef
 
+ @signaldef chat-invite-blocked
+  @signalproto
+void (*chat_invite_blocked)(PurpleAccount *account, const char *inviter,
+                   const char *name, const char *message, GHashTable *data);
+  @endsignalproto
+  @signaldesc
+   Emitted when an invitation to join a chat is blocked.
+  @param account  The account the invitation was sent to.
+  @param inviter  The name of the person sending the invitation.
+  @param name     The name of the chat invited to.
+  @param message  The invitation message sent.
+  @param data     Hashtable containing data about the invited chat.
+  @since 2.5.0
+ @endsignaldef
+
  @signaldef chat-joined
   @signalproto
 void (*chat_joined)(PurpleConversation *conv);
--- a/doc/finch.1.in	Thu Jun 26 08:42:49 2008 +0000
+++ b/doc/finch.1.in	Thu Jun 26 09:07:56 2008 +0000
@@ -381,6 +381,12 @@
 one of \fBa-\fR, \fBalt-\fR, \fBm-\fR or \fBmeta-\fR. You can also use
 \fBhome\fR, \fBend\fR, \fBleft\fR, \fBright\fR etc. keys.
 
+To unbind a key which has a default binding, you simply bind it to the empty string.  For example, to unbind \fBAlt + q\fR from the Quit function, you would use:
+
+[GntWM::binding]
+.br
+a-q =
+
 .SH Menus
 You can also specify key-bindings to trigger specific menuitems in windows. For example, the following entry in \fI~/.gntrc\fR will bind \fBCtrl + t\fR to the 'Send IM...' item in the buddylist:
 
--- a/doc/gtkrc-2.0	Thu Jun 26 08:42:49 2008 +0000
+++ b/doc/gtkrc-2.0	Thu Jun 26 09:07:56 2008 +0000
@@ -45,7 +45,7 @@
   # Change the color of the typing notification
   GtkIMHtml::typing-notification-color = "#ff0000"
   # Disable the typing notification
-  GtkIMHtml::typing-notification-enable = 1
+  GtkIMHtml::typing-notification-enable = 0
 
   # The following settings will change the behaviour in all GTK+ applications
   # Change the cursor color
--- a/doc/pidgin.1.in	Thu Jun 26 08:42:49 2008 +0000
+++ b/doc/pidgin.1.in	Thu Jun 26 09:07:56 2008 +0000
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2000, Dennis Ristuccia <dennis@dennisr.net>
+Ri.\" Copyright (c) 2000, Dennis Ristuccia <dennis@dennisr.net>
 .\"
 .\" This is free documentation; you can redistribute it and/or
 .\" modify it under the terms of the GNU General Public License as
@@ -19,9 +19,9 @@
 .\" License along with this manual; if not, write to the Free
 .\" Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 .\" Boston, MA  02111-1301  USA.
-.TH pidgin 1
+.TH pidgin 1 "" "Pidgin v@VERSION@"
 .SH NAME
-Pidgin v@VERSION@ \- Instant Messaging client
+pidgin \- Instant Messaging client
 .SH SYNOPSIS
 .TP 5
 \fBpidgin \fI[options]\fR
@@ -550,8 +550,6 @@
 .SH AUTHORS
 Pidgin's active developers are:
 .br
-  Sean Egan (lead developer) <\fIseanegan@gmail.com\fR>
-.br
   Daniel 'datallah' Atallah (developer)
 .br
   John 'rekkanoryo' Bailey (developer)
@@ -566,6 +564,8 @@
 .br
   Mark 'KingAnt' Doliner (developer) <\fIthekingant@users.sourceforge.net\fR>
 .br
+  Sean Egan (developer) <\fIseanegan@gmail.com\fR>
+.br
   Casey Harkins (developer)
 .br
   Gary 'grim' Kramlich (developer)
@@ -600,6 +600,8 @@
 
 Our crazy patch writers include:
 .br
+  Felipe 'shx' Contreras
+.br
   Dennis 'EvilDennisR' Ristuccia
 .br
   Peter 'fmoo' Ruibal
@@ -608,6 +610,8 @@
 .br
   Gabriel 'Nix' Schulhof
 .br
+  Jorge 'Masca' Villaseñor
+.br
 
 
 Our artists are:
@@ -640,8 +644,6 @@
 
 Our retired crazy patch writers include:
 .br
-  Felipe 'shx' Contreras
-.br
   Decklin Foster
 .br
   Peter 'Bleeter' Lawler
--- a/finch/gntaccount.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/gntaccount.c	Thu Jun 26 09:07:56 2008 +0000
@@ -43,6 +43,7 @@
 #include <notify.h>
 #include <plugin.h>
 #include <request.h>
+#include <savedstatuses.h>
 
 #include "gntaccount.h"
 #include "gntblist.h"
@@ -67,7 +68,7 @@
 	GntWidget *screenname;
 	GntWidget *password;
 	GntWidget *alias;
-	
+
 	GntWidget *splits;
 	GList *split_entries;
 
@@ -76,6 +77,7 @@
 
 	GntWidget *newmail;
 	GntWidget *remember;
+	GntWidget *regserver;
 } AccountEditDialog;
 
 /* This is necessary to close an edit-dialog when an account is deleted */
@@ -125,7 +127,7 @@
 				_("Username of an account must be non-empty."));
 		return;
 	}
-	
+
 	username = g_string_new(value);
 
 	if (prplinfo != NULL)
@@ -183,7 +185,7 @@
 	if (prplinfo)
 	{
 		GList *iter, *entries;
-		
+
 		for (iter = prplinfo->protocol_options, entries = dialog->prpl_entries;
 				iter && entries; iter = iter->next, entries = entries->next)
 		{
@@ -228,6 +230,20 @@
 		gnt_box_give_focus_to_child(GNT_BOX(accounts.window), accounts.tree);
 	}
 
+	if (prplinfo && prplinfo->register_user &&
+			gnt_check_box_get_checked(GNT_CHECK_BOX(dialog->regserver))) {
+		purple_account_register(account);
+	} else if (dialog->account == NULL) {
+		/* This is a new account. Set it to the current status. */
+		/* Xerox from gtkaccount.c :D */
+		const PurpleSavedStatus *saved_status;
+		saved_status = purple_savedstatus_get_current();
+		if (saved_status != NULL) {
+			purple_savedstatus_activate_for_account(saved_status, account);
+			purple_account_set_enabled(account, FINCH_UI, TRUE);
+		}
+	}
+
 	gnt_widget_destroy(dialog->window);
 }
 
@@ -419,6 +435,11 @@
 			}
 		}
 	}
+
+	/* Show the registration checkbox only in a new account dialog,
+	 * and when the selected prpl has the support for it. */
+	gnt_widget_set_visible(dialog->regserver, account == NULL &&
+			prplinfo->register_user != NULL);
 }
 
 static void
@@ -559,6 +580,10 @@
 	gnt_box_add_widget(GNT_BOX(window), dialog->remember);
 	gnt_box_add_widget(GNT_BOX(window), dialog->newmail);
 
+	/* Register checkbox */
+	dialog->regserver = gnt_check_box_new(_("Create this account on the server"));
+	gnt_box_add_widget(GNT_BOX(window), dialog->regserver);
+
 	gnt_box_add_widget(GNT_BOX(window), gnt_line_new(FALSE));
 
 	/* The advanced box */
--- a/finch/gntblist.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/gntblist.c	Thu Jun 26 09:07:56 2008 +0000
@@ -2722,6 +2722,7 @@
 	PurpleConnection *gc;
 	PurpleChat *chat;
 	GHashTable *hash = NULL;
+	PurpleConversation *conv;
 
 	account = purple_request_fields_get_account(fields, "account");
 	name = purple_request_fields_get_string(fields,  "chat");
@@ -2730,7 +2731,16 @@
 		return;
 
 	gc = purple_account_get_connection(account);
-	purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name);
+	/* Create a new conversation now. This will give focus to the new window.
+	 * But it's necessary to pretend that we left the chat, because otherwise
+	 * a new conversation window will pop up when we finally join the chat. */
+	if (!(conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name, account))) {
+		conv = purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name);
+		purple_conv_chat_left(PURPLE_CONV_CHAT(conv));
+	} else {
+		purple_conversation_present(conv);
+	}
+
 	chat = purple_blist_find_chat(account, name);
 	if (chat == NULL) {
 		PurplePluginProtocolInfo *info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
@@ -2841,6 +2851,12 @@
 }
 
 static void
+view_all_logs_cb(GntMenuItem *item, gpointer n)
+{
+	finch_log_show(PURPLE_LOG_IM, NULL, NULL);
+}
+
+static void
 menu_add_buddy_cb(GntMenuItem *item, gpointer null)
 {
 	purple_blist_request_add_buddy(NULL, NULL, NULL, NULL);
@@ -2905,6 +2921,11 @@
 	gnt_menu_add_item(GNT_MENU(sub), item);
 	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), view_log_cb, NULL);
 
+	item = gnt_menuitem_new(_("View All Logs"));
+	gnt_menuitem_set_id(GNT_MENU_ITEM(item), "view-all-logs");
+	gnt_menu_add_item(GNT_MENU(sub), item);
+	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), view_all_logs_cb, NULL);
+
 	item = gnt_menuitem_new(_("Show"));
 	gnt_menu_add_item(GNT_MENU(sub), item);
 	subsub = gnt_menu_new(GNT_MENU_POPUP);
@@ -3012,9 +3033,6 @@
 	gnt_widget_set_position(ggblist->window, purple_prefs_get_int(PREF_ROOT "/position/x"),
 			purple_prefs_get_int(PREF_ROOT "/position/y"));
 
-	gnt_tree_set_col_width(GNT_TREE(ggblist->tree), 0,
-			purple_prefs_get_int(PREF_ROOT "/size/width") - 1);
-
 	gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->tree);
 
 	ggblist->status = gnt_combo_box_new();
--- a/finch/gntblist.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/gntblist.h	Thu Jun 26 09:07:56 2008 +0000
@@ -34,6 +34,10 @@
  **********************************************************************/
 /*@{*/
 
+/**
+ * Buddylist manager for finch. This decides the visility, ordering and hierarchy
+ * of the buddylist nodes. This also manages the creation of tooltips.
+ */
 typedef struct
 {
 	const char *id;                                    /**< An identifier for the manager. */
--- a/finch/gntconv.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/gntconv.c	Thu Jun 26 09:07:56 2008 +0000
@@ -38,10 +38,11 @@
 #include "gntdebug.h"
 #include "gntlog.h"
 #include "gntplugin.h"
+#include "gntpounce.h"
 #include "gntprefs.h"
+#include "gntrequest.h"
 #include "gntsound.h"
 #include "gntstatus.h"
-#include "gntpounce.h"
 
 #include "gnt.h"
 #include "gntbox.h"
@@ -140,7 +141,7 @@
 entry_key_pressed(GntWidget *w, FinchConv *ggconv)
 {
 	const char *text = gnt_entry_get_text(GNT_ENTRY(ggconv->entry));
-	if (*text == '/')
+	if (*text == '/' && *(text + 1) != '/')
 	{
 		PurpleConversation *conv = ggconv->active_conv;
 		PurpleCmdStatus status;
@@ -190,7 +191,7 @@
 	}
 	else
 	{
-		char *escape = g_markup_escape_text(text, -1);
+		char *escape = g_markup_escape_text((*text == '/' ? text + 1 : text), -1);
 		char *apos = purple_strreplace(escape, "&apos;", "'");
 		g_free(escape);
 		escape = apos;
@@ -557,6 +558,47 @@
 }
 
 static void
+invite_select_cb(FinchConv *fc, PurpleRequestFields *fields)
+{
+	PurpleConversation *conv = fc->active_conv;
+	const char *buddy = purple_request_fields_get_string(fields,  "screenname");
+	const char *message = purple_request_fields_get_string(fields,  "message");
+	serv_chat_invite(purple_conversation_get_gc(conv),
+		purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)),
+		message, buddy);
+
+}
+
+static void
+invite_cb(GntMenuItem *item, gpointer ggconv)
+{
+	PurpleRequestFields *fields;
+	PurpleRequestFieldGroup *group;
+	PurpleRequestField *field;
+
+	fields = purple_request_fields_new();
+
+	group = purple_request_field_group_new(NULL);
+	purple_request_fields_add_group(fields, group);
+
+	field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE);
+	purple_request_field_set_type_hint(field, "screenname");
+	purple_request_field_set_required(field, TRUE);
+	purple_request_field_group_add_field(group, field);
+	field = purple_request_field_string_new("message", _("Invite message"), NULL, FALSE);
+	purple_request_field_group_add_field(group, field);
+	purple_request_fields(finch_conv_get_handle(), _("Invite"),
+						NULL,
+						_("Please enter the name of the user "
+						  "you wish to invite,\nalong with an optional invite message."),
+						fields,
+						_("OK"), G_CALLBACK(invite_select_cb),
+						_("Cancel"), NULL,
+						NULL, NULL, NULL,
+						ggconv);
+}
+
+static void
 gg_create_menu(FinchConv *ggc)
 {
 	GntWidget *menu, *sub;
@@ -606,6 +648,10 @@
 		}
 
 		generate_send_to_menu(ggc);
+	} else if (purple_conversation_get_type(ggc->active_conv) == PURPLE_CONV_TYPE_CHAT) {
+		item = gnt_menuitem_new(_("Invite..."));
+		gnt_menu_add_item(GNT_MENU(sub), item);
+		gnt_menuitem_set_callback(item, invite_cb, ggc);
 	}
 
 	item = gnt_menuitem_new(_("View Log..."));
@@ -1195,6 +1241,47 @@
 }
 
 static PurpleCmdRet
+cmd_message_color(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data)
+{
+	int *msgclass  = NULL;
+	int fg, bg;
+
+	if (strcmp(args[0], "receive") == 0)
+		msgclass = &color_message_receive;
+	else if (strcmp(args[0], "send") == 0)
+		msgclass = &color_message_send;
+	else if (strcmp(args[0], "highlight") == 0)
+		msgclass = &color_message_highlight;
+	else if (strcmp(args[0], "action") == 0)
+		msgclass = &color_message_action;
+	else if (strcmp(args[0], "timestamp") == 0)
+		msgclass = &color_timestamp;
+	else {
+		if (error)
+			*error = g_strdup_printf(_("%s is not a valid message class. See '/help msgcolor' for valid message classes."), args[0]);
+		return PURPLE_CMD_STATUS_FAILED;
+	}
+
+	fg = gnt_colors_get_color(args[1]);
+	if (fg == -EINVAL) {
+		if (error)
+			*error = g_strdup_printf(_("%s is not a valid color. See '/help msgcolor' for valid colors."), args[1]);
+		return PURPLE_CMD_STATUS_FAILED;
+	}
+
+	bg = gnt_colors_get_color(args[2]);
+	if (bg == -EINVAL) {
+		if (error)
+			*error = g_strdup_printf(_("%s is not a valid color. See '/help msgcolor' for valid colors."), args[2]);
+		return PURPLE_CMD_STATUS_FAILED;
+	}
+
+	init_pair(*msgclass, fg, bg);
+
+	return PURPLE_CMD_STATUS_OK;
+}
+
+static PurpleCmdRet
 users_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data)
 {
 	FinchConv *fc = FINCH_GET_DATA(conv);
@@ -1278,6 +1365,16 @@
 	                  PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
 	                  cmd_show_window, _("statuses: Show the savedstatuses window."), finch_savedstatus_show_all);
 
+	/* Allow customizing the message colors using a command during run-time */
+	purple_cmd_register("msgcolor", "www", PURPLE_CMD_P_DEFAULT,
+			PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM, NULL,
+			cmd_message_color, _("msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: "
+				                 "Set the color for different classes of messages in the conversation window.<br>"
+				                 "    &lt;class&gt;: receive, send, highlight, action, timestamp<br>"
+				                 "    &lt;foreground/background&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, default<br><br>"
+								 "EXAMPLE:<br>    msgcolor send cyan default"),
+			NULL);
+
 	purple_signal_connect(purple_conversations_get_handle(), "buddy-typing", finch_conv_get_handle(),
 					PURPLE_CALLBACK(update_buddy_typing), NULL);
 	purple_signal_connect(purple_conversations_get_handle(), "buddy-typing-stopped", finch_conv_get_handle(),
--- a/finch/gntft.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/gntft.c	Thu Jun 26 09:07:56 2008 +0000
@@ -117,7 +117,9 @@
 			total_pct = 100 * total_bytes_xferred / total_file_size;
 		}
 
-		title = g_strdup_printf(_("File Transfers - %d%% of %d files"),
+		title = g_strdup_printf(ngettext("File Transfers - %d%% of %d file",
+						 "File Transfers - %d%% of %d files",
+						 num_active_xfers),
 				total_pct, num_active_xfers);
 		gnt_screen_rename_widget((xfer_dialog->window), title);
 		g_free(title);
--- a/finch/gntlog.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/gntlog.c	Thu Jun 26 09:07:56 2008 +0000
@@ -61,8 +61,12 @@
 	if (viewer->contact != NULL)
 		return g_direct_hash(viewer->contact);
 
-	return g_str_hash(viewer->screenname) +
-		g_str_hash(purple_account_get_username(viewer->account));
+	if (viewer->account) {
+		return g_str_hash(viewer->screenname) +
+			g_str_hash(purple_account_get_username(viewer->account));
+	}
+
+	return (guint)viewer;
 }
 
 static gboolean log_viewer_equal(gconstpointer y, gconstpointer z)
@@ -84,10 +88,14 @@
 			return FALSE;
 	}
 
-	normal = g_strdup(purple_normalize(a->account, a->screenname));
-	ret = (a->account == b->account) &&
-		!strcmp(normal, purple_normalize(b->account, b->screenname));
-	g_free(normal);
+	if (a->screenname && b->screenname) {
+		normal = g_strdup(purple_normalize(a->account, a->screenname));
+		ret = (a->account == b->account) &&
+			!strcmp(normal, purple_normalize(b->account, b->screenname));
+		g_free(normal);
+	} else {
+		ret = (a == b);
+	}
 
 	return ret;
 }
@@ -302,7 +310,7 @@
 
 	/* Label ************/
 	text = g_strdup_printf("%s", title);
-	lv->label = gnt_label_new(text);
+	lv->label = gnt_label_new_with_format(text, GNT_TEXT_FLAG_BOLD);
 	g_free(text);
 	gnt_box_add_widget(GNT_BOX(vbox), lv->label);
 
@@ -348,14 +356,28 @@
 	return lv;
 }
 
-void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account) {
+static void
+our_logging_blows(PurpleLogSet *set, PurpleLogSet *setagain, GList **list)
+{
+	/* The iteration happens on the first list. So we use the shorter list in front */
+	if (set->type != PURPLE_LOG_IM)
+		return;
+	*list = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, set->name, set->account), *list);
+}
+
+void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account)
+{
 	struct log_viewer_hash_t *ht;
 	FinchLogViewer *lv = NULL;
 	const char *name = screenname;
 	char *title;
+	GList *logs = NULL;
+	int size = 0;
 
-	g_return_if_fail(account != NULL);
-	g_return_if_fail(screenname != NULL);
+	if (type != PURPLE_LOG_IM) {
+		g_return_if_fail(account != NULL);
+		g_return_if_fail(screenname != NULL);
+	}
 
 	ht = g_new0(struct log_viewer_hash_t, 1);
 
@@ -383,20 +405,35 @@
 	} else {
 		PurpleBuddy *buddy;
 
-		buddy = purple_find_buddy(account, screenname);
-		if (buddy != NULL)
-			name = purple_buddy_get_contact_alias(buddy);
-
-		title = g_strdup_printf(_("Conversations with %s"), name);
+		if (screenname) {
+			buddy = purple_find_buddy(account, screenname);
+			if (buddy != NULL)
+				name = purple_buddy_get_contact_alias(buddy);
+			title = g_strdup_printf(_("Conversations with %s"), name);
+		} else {
+			title = g_strdup(_("All Conversations"));
+		}
 	}
 
-	display_log_viewer(ht, purple_log_get_logs(type, screenname, account),
-			title, purple_log_get_total_size(type, screenname, account));
+	if (screenname) {
+		logs = purple_log_get_logs(type, screenname, account);
+		size = purple_log_get_total_size(type, screenname, account);
+	} else {
+		/* This will happen only for IMs */
+		GHashTable *table = purple_log_get_log_sets();
+		g_hash_table_foreach(table, (GHFunc)our_logging_blows, &logs);
+		g_hash_table_destroy(table);
+		logs = g_list_sort(logs, purple_log_compare);
+		size = 0;
+	}
+
+	display_log_viewer(ht, logs, title, size);
 
 	g_free(title);
 }
 
-void finch_log_show_contact(PurpleContact *contact) {
+void finch_log_show_contact(PurpleContact *contact)
+{
 	struct log_viewer_hash_t *ht;
 	PurpleBlistNode *child;
 	FinchLogViewer *lv = NULL;
--- a/finch/gntnotify.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/gntnotify.c	Thu Jun 26 09:07:56 2008 +0000
@@ -208,8 +208,10 @@
 	else
 	{
 		char *to;
+		gboolean newwin = (emaildialog.window == NULL);
 
-		setup_email_dialog();
+		if (newwin)
+			setup_email_dialog();
 
 		to = g_strdup_printf("%s (%s)", tos ? *tos : purple_account_get_username(account),
 					purple_account_get_protocol_name(account));
@@ -219,7 +221,10 @@
 					*subjects),
 				NULL, NULL);
 		g_free(to);
-		gnt_widget_show(emaildialog.window);
+		if (newwin)
+			gnt_widget_show(emaildialog.window);
+		else
+			gnt_window_present(emaildialog.window);
 		return NULL;
 	}
 
--- a/finch/libgnt/configure.ac	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/libgnt/configure.ac	Thu Jun 26 09:07:56 2008 +0000
@@ -24,10 +24,10 @@
 # Make sure to update ../../configure.ac with libgnt version changes.
 #
 
-m4_define([gnt_lt_current], [4])
+m4_define([gnt_lt_current], [5])
 m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [4])
-m4_define([gnt_micro_version], [2])
+m4_define([gnt_minor_version], [5])
+m4_define([gnt_micro_version], [0])
 m4_define([gnt_version_suffix], [])
 m4_define([gnt_version],
           [gnt_major_version.gnt_minor_version.gnt_micro_version])
--- a/finch/libgnt/gntbox.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/libgnt/gntbox.c	Thu Jun 26 09:07:56 2008 +0000
@@ -272,7 +272,8 @@
 			box->active = iter->next->data;
 		else if (box->focus)
 			box->active = box->focus->data;
-		if (!GNT_WIDGET_IS_FLAG_SET(box->active, GNT_WIDGET_INVISIBLE))
+		if (!GNT_WIDGET_IS_FLAG_SET(box->active, GNT_WIDGET_INVISIBLE) &&
+				GNT_WIDGET_IS_FLAG_SET(box->active, GNT_WIDGET_CAN_TAKE_FOCUS))
 			break;
 	} while (box->active != last);
 }
--- a/finch/libgnt/gntcolors.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/libgnt/gntcolors.c	Thu Jun 26 09:07:56 2008 +0000
@@ -29,6 +29,7 @@
 
 #include <glib.h>
 
+#include <errno.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -168,7 +169,7 @@
 		color = -1;
 	else {
 		g_warning("Invalid color name: %s\n", key);
-		color = -1;
+		color = -EINVAL;
 	}
 	return color;
 }
--- a/finch/libgnt/gntcolors.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/libgnt/gntcolors.h	Thu Jun 26 09:07:56 2008 +0000
@@ -91,7 +91,7 @@
  *
  * @param kfile The string value
  *
- * @return A color
+ * @return A color. For an unknown color name, returns -EINVAL.
  *
  * @since 2.4.0
  */
--- a/finch/libgnt/gntentry.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/libgnt/gntentry.c	Thu Jun 26 09:07:56 2008 +0000
@@ -551,10 +551,10 @@
 	return TRUE;
 }
 
-#define SAME(a,b)    ((g_unichar_isalpha(a) && g_unichar_isalpha(b)) || \
-				(g_unichar_isdigit(a) && g_unichar_isdigit(b)) || \
+#define SAME(a,b)    ((g_unichar_isalnum(a) && g_unichar_isalnum(b)) || \
 				(g_unichar_isspace(a) && g_unichar_isspace(b)) || \
-				(g_unichar_iswide(a) && g_unichar_iswide(b)))
+				(g_unichar_iswide(a) && g_unichar_iswide(b)) || \
+				(g_unichar_ispunct(a) && g_unichar_ispunct(b)))
 
 static const char *
 begin_word(const char *text, const char *begin)
@@ -580,11 +580,13 @@
 	while (text && text < end && g_unichar_isspace(g_utf8_get_char(text)))
 		text = g_utf8_find_next_char(text, end);
 
-	ch = g_utf8_get_char(text);
-	while ((text = g_utf8_find_next_char(text, end)) != NULL && text <= end) {
-		gunichar cur = g_utf8_get_char(text);
-		if (!SAME(ch, cur))
-			break;
+	if (text) {
+		ch = g_utf8_get_char(text);
+		while ((text = g_utf8_find_next_char(text, end)) != NULL && text <= end) {
+			gunichar cur = g_utf8_get_char(text);
+			if (!SAME(ch, cur))
+				break;
+		}
 	}
 	return (text ? text : end);
 }
--- a/finch/libgnt/gntmenu.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/libgnt/gntmenu.c	Thu Jun 26 09:07:56 2008 +0000
@@ -283,6 +283,8 @@
 		do sub = sub->submenu; while (sub->submenu);
 		if (gnt_widget_key_pressed(GNT_WIDGET(sub), text))
 			return TRUE;
+		if (menu->type != GNT_MENU_TOPLEVEL)
+			return FALSE;
 	}
 
 	if ((text[0] == 27 && text[1] == 0) ||
@@ -332,10 +334,12 @@
 				return TRUE;
 			}
 		}
+		if (gnt_bindable_perform_action_key(GNT_BINDABLE(widget), text))
+			return TRUE;
 		return org_key_pressed(widget, text);
 	}
 
-	return FALSE;
+	return gnt_bindable_perform_action_key(GNT_BINDABLE(widget), text);
 }
 
 static void
@@ -434,7 +438,7 @@
 {
 	GntWidget *widget = GNT_WIDGET(instance);
 	GNT_WIDGET_SET_FLAGS(widget, GNT_WIDGET_NO_SHADOW | GNT_WIDGET_NO_BORDER |
-			GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_TRANSIENT);
+			GNT_WIDGET_CAN_TAKE_FOCUS | GNT_WIDGET_TRANSIENT | GNT_WIDGET_DISABLE_ACTIONS);
 	GNTDEBUG;
 }
 
--- a/finch/libgnt/gnttree.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/libgnt/gnttree.c	Thu Jun 26 09:07:56 2008 +0000
@@ -110,13 +110,14 @@
 	gnt_widget_get_size(GNT_WIDGET(tree), &width, NULL);
 	if (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER))
 		width -= 2;
+	width -= 1;  /* Exclude the scrollbar from the calculation */
 	for (i = 0, total = 0; i < tree->ncol ; i++) {
 		if (tree->columns[i].flags & GNT_TREE_COLUMN_INVISIBLE)
 			continue;
 		if (tree->columns[i].flags & GNT_TREE_COLUMN_FIXED_SIZE)
-			width -= WIDTH(i) + 1;
+			width -= WIDTH(i) + (tree->priv->lastvisible != i);
 		else
-			total += WIDTH(i) + 1;
+			total += WIDTH(i) + (tree->priv->lastvisible != i);
 	}
 
 	if (total == 0)
@@ -812,11 +813,11 @@
 			changed = FALSE;
 		if (changed) {
 			redraw_tree(tree);
-			g_source_remove(tree->priv->search_timeout);
-			tree->priv->search_timeout = g_timeout_add(SEARCH_TIMEOUT, search_timeout, tree);
 		} else {
 			gnt_bindable_perform_action_key(GNT_BINDABLE(tree), text);
 		}
+		g_source_remove(tree->priv->search_timeout);
+		tree->priv->search_timeout = g_timeout_add(SEARCH_TIMEOUT, search_timeout, tree);
 		return TRUE;
 	} else if (text[0] == ' ' && text[1] == 0) {
 		/* Space pressed */
--- a/finch/libgnt/wms/irssi.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/finch/libgnt/wms/irssi.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1,8 +1,8 @@
 /**
  * 1. Buddylist is aligned on the left.
  * 2. The rest of the screen is split into MxN grid for conversation windows.
- * 	- M = irssi-split-h in ~/.gntrc:[general]
- * 	- N = irssi-split-v in ~/.gntrc:[general]
+ * 	- M = split-h in ~/.gntrc:[irssi]
+ * 	- N = split-v in ~/.gntrc:[irssi]
  *	- Press alt-shift-k/j/l/h to move the selected window to the frame
  *	  above/below/left/right of the current frame.
  * 3. All the other windows are always centered.
@@ -52,7 +52,8 @@
 	rx = irssi->buddylistwidth;
 	if (hor)
 		rx += hor * width;
-	rx++;
+	if (rx)
+		rx++;
 
 	ry = 0;
 	if (vert)
--- a/libpurple/Makefile.am	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/Makefile.am	Thu Jun 26 09:07:56 2008 +0000
@@ -68,6 +68,7 @@
 	savedstatuses.c \
 	server.c \
 	signals.c \
+	smiley.c \
 	dnsquery.c \
 	dnssrv.c\
 	status.c \
@@ -120,6 +121,7 @@
 	savedstatuses.h \
 	server.h \
 	signals.h \
+	smiley.h \
 	dnsquery.h \
 	dnssrv.h \
 	status.h \
@@ -154,7 +156,7 @@
 
 dbus_exported = dbus-useful.h dbus-define-api.h account.h blist.h buddyicon.h \
                 connection.h conversation.h core.h ft.h log.h notify.h prefs.h roomlist.h \
-                savedstatuses.h status.h server.h util.h xmlnode.h prpl.h
+                savedstatuses.h smiley.h status.h server.h util.h xmlnode.h prpl.h
 
 purple_build_coreheaders = $(addprefix $(srcdir)/, $(purple_coreheaders)) \
 		$(purple_builtheaders)
@@ -259,3 +261,9 @@
 	$(DBUS_CFLAGS) \
 	$(LIBXML_CFLAGS) \
 	$(NETWORKMANAGER_CFLAGS)
+
+# INSTALL_SSL_CERTIFICATES is true when SSL_CERTIFICATES_DIR is empty.
+# We want to use SSL_CERTIFICATES_DIR when it's not empty.
+if ! INSTALL_SSL_CERTIFICATES
+AM_CPPFLAGS += -DSSL_CERTIFICATES_DIR=\"$(SSL_CERTIFICATES_DIR)\"
+endif
--- a/libpurple/Makefile.mingw	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/Makefile.mingw	Thu Jun 26 09:07:56 2008 +0000
@@ -65,6 +65,7 @@
 			savedstatuses.c \
 			server.c \
 			signals.c \
+			smiley.c \
 			sound.c \
 			sslconn.c \
 			status.c \
--- a/libpurple/blist.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/blist.c	Thu Jun 26 09:07:56 2008 +0000
@@ -824,16 +824,25 @@
 		ops->update(purplebuddylist, (PurpleBlistNode *)buddy);
 }
 
-void purple_blist_update_buddy_icon(PurpleBuddy *buddy)
+void
+purple_blist_update_node_icon(PurpleBlistNode *node)
 {
 	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
 
-	g_return_if_fail(buddy != NULL);
+	g_return_if_fail(node != NULL);
 
 	if (ops && ops->update)
-		ops->update(purplebuddylist, (PurpleBlistNode *)buddy);
+		ops->update(purplebuddylist, node);
 }
 
+#ifndef PURPLE_DISABLE_DEPRECATED
+void
+purple_blist_update_buddy_icon(PurpleBuddy *buddy)
+{
+	purple_blist_update_node_icon((PurpleBlistNode *)buddy);
+}
+#endif
+
 /*
  * TODO: Maybe remove the call to this from server.c and call it
  * from oscar.c and toc.c instead?
@@ -1197,7 +1206,7 @@
 
 	purple_signal_emit(purple_blist_get_handle(), "buddy-icon-changed", buddy);
 
-	purple_blist_update_buddy_icon(buddy);
+	purple_blist_update_node_icon((PurpleBlistNode*)buddy);
 }
 
 PurpleAccount *
@@ -2189,7 +2198,7 @@
 	g_return_val_if_fail((name != NULL) && (*name != '\0'), NULL);
 
 	for (node = purplebuddylist->root; node != NULL; node = node->next) {
-		if (!strcmp(((PurpleGroup *)node)->name, name))
+		if (!purple_utf8_strcasecmp(((PurpleGroup *)node)->name, name))
 			return (PurpleGroup *)node;
 	}
 
--- a/libpurple/blist.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/blist.h	Thu Jun 26 09:07:56 2008 +0000
@@ -31,13 +31,20 @@
 
 #include <glib.h>
 
+/** @copydoc _PurpleBuddyList */
 typedef struct _PurpleBuddyList PurpleBuddyList;
+/** @copydoc _PurpleBlistUiOps */
 typedef struct _PurpleBlistUiOps PurpleBlistUiOps;
+/** @copydoc _PurpleBlistNode */
 typedef struct _PurpleBlistNode PurpleBlistNode;
 
+/** @copydoc _PurpleChat */
 typedef struct _PurpleChat PurpleChat;
+/** @copydoc _PurpleGroup */
 typedef struct _PurpleGroup PurpleGroup;
+/** @copydoc _PurpleContact */
 typedef struct _PurpleContact PurpleContact;
+/** @copydoc _PurpleBuddy */
 typedef struct _PurpleBuddy PurpleBuddy;
 
 /**************************************************************************/
@@ -317,11 +324,22 @@
 void purple_blist_update_buddy_status(PurpleBuddy *buddy, PurpleStatus *old_status);
 
 /**
+ * Updates a node's custom icon.
+ *
+ * @param node  The PurpleBlistNode whose custom icon has changed.
+ * @since 2.5.0
+ */
+void purple_blist_update_node_icon(PurpleBlistNode *node);
+
+#ifndef PURPLE_DISABLE_DEPRECATED
+/**
  * Updates a buddy's icon.
  *
  * @param buddy  The buddy whose buddy icon has changed
+ * @deprecated Use purple_blist_update_node_icon() instead.
  */
 void purple_blist_update_buddy_icon(PurpleBuddy *buddy);
+#endif
 
 /**
  * Renames a buddy in the buddy list.
--- a/libpurple/buddyicon.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/buddyicon.c	Thu Jun 26 09:07:56 2008 +0000
@@ -92,8 +92,10 @@
  */
 static GHashTable *icon_file_cache = NULL;
 
-/* This one is used for both custom buddy icons
- * on PurpleContacts and account icons. */
+/**
+ * This hash table is used for both custom buddy icons on PurpleBlistNodes and
+ * account icons.
+ */
 static GHashTable *pointer_icon_cache = NULL;
 
 static char       *cache_dir     = NULL;
@@ -684,14 +686,6 @@
 	return (icon ? purple_buddy_icon_ref(icon) : NULL);
 }
 
-gboolean
-purple_buddy_icons_has_custom_icon(PurpleContact *contact)
-{
-	g_return_val_if_fail(contact != NULL, FALSE);
-
-	return (purple_blist_node_get_string((PurpleBlistNode*)contact, "custom_buddy_icon") != NULL);
-}
-
 PurpleStoredImage *
 purple_buddy_icons_find_account_icon(PurpleAccount *account)
 {
@@ -807,24 +801,32 @@
 	return ret;
 }
 
-PurpleStoredImage *
-purple_buddy_icons_find_custom_icon(PurpleContact *contact)
+gboolean
+purple_buddy_icons_node_has_custom_icon(PurpleBlistNode *node)
 {
-	PurpleStoredImage *img;
-	const char *custom_icon_file;
-	const char *dirname;
+	g_return_val_if_fail(node != NULL, FALSE);
+
+	return (purple_blist_node_get_string(node, "custom_buddy_icon") != NULL);
+}
+
+PurpleStoredImage *
+purple_buddy_icons_node_find_custom_icon(PurpleBlistNode *node)
+{
 	char *path;
+	size_t len;
 	guchar *data;
-	size_t len;
+	PurpleStoredImage *img;
+	const char *custom_icon_file, *dirname;
 
-	g_return_val_if_fail(contact != NULL, NULL);
+	g_return_val_if_fail(node != NULL, NULL);
 
-	if ((img = g_hash_table_lookup(pointer_icon_cache, contact)))
+	if ((img = g_hash_table_lookup(pointer_icon_cache, node)))
 	{
 		return purple_imgstore_ref(img);
 	}
 
-	custom_icon_file = purple_blist_node_get_string((PurpleBlistNode*)contact, "custom_buddy_icon");
+	custom_icon_file = purple_blist_node_get_string(node,
+	                                                "custom_buddy_icon");
 
 	if (custom_icon_file == NULL)
 		return NULL;
@@ -836,7 +838,7 @@
 	{
 		g_free(path);
 		img = purple_buddy_icon_data_new(data, len, custom_icon_file);
-		g_hash_table_insert(pointer_icon_cache, contact, img);
+		g_hash_table_insert(pointer_icon_cache, node, img);
 		return img;
 	}
 	g_free(path);
@@ -845,66 +847,79 @@
 }
 
 PurpleStoredImage *
-purple_buddy_icons_set_custom_icon(PurpleContact *contact,
-                                   guchar *icon_data, size_t icon_len)
+purple_buddy_icons_node_set_custom_icon(PurpleBlistNode *node,
+                                        guchar *icon_data, size_t icon_len)
 {
+	char *old_icon;
 	PurpleStoredImage *old_img;
 	PurpleStoredImage *img = NULL;
-	char *old_icon;
-	PurpleBlistNode *child;
+
+	g_return_val_if_fail(node != NULL, NULL);
 
-	old_img = g_hash_table_lookup(pointer_icon_cache, contact);
+	if (!PURPLE_BLIST_NODE_IS_CONTACT(node) &&
+	    !PURPLE_BLIST_NODE_IS_CHAT(node) &&
+	    !PURPLE_BLIST_NODE_IS_GROUP(node)) {
+		return NULL;
+	}
 
-	if (icon_data != NULL && icon_len > 0)
-	{
+	old_img = g_hash_table_lookup(pointer_icon_cache, node);
+
+	if (icon_data != NULL && icon_len > 0) {
 		img = purple_buddy_icon_data_new(icon_data, icon_len, NULL);
 	}
 
-	old_icon = g_strdup(purple_blist_node_get_string((PurpleBlistNode *)contact,
+	old_icon = g_strdup(purple_blist_node_get_string(node,
 	                                                 "custom_buddy_icon"));
-	if (img && purple_buddy_icons_is_caching())
-	{
+	if (img && purple_buddy_icons_is_caching()) {
 		const char *filename = purple_imgstore_get_filename(img);
-		purple_blist_node_set_string((PurpleBlistNode *)contact,
-		                             "custom_buddy_icon",
+		purple_blist_node_set_string(node, "custom_buddy_icon",
 		                             filename);
 		ref_filename(filename);
-	}
-	else
-	{
-		purple_blist_node_remove_setting((PurpleBlistNode *)contact,
-		                                 "custom_buddy_icon");
+	} else {
+		purple_blist_node_remove_setting(node, "custom_buddy_icon");
 	}
 	unref_filename(old_icon);
 
 	if (img)
-		g_hash_table_insert(pointer_icon_cache, contact, img);
+		g_hash_table_insert(pointer_icon_cache, node, img);
 	else
-		g_hash_table_remove(pointer_icon_cache, contact);
+		g_hash_table_remove(pointer_icon_cache, node);
 
-	for (child = contact->node.child ; child ; child = child->next)
-	{
-		PurpleBuddy *buddy;
-		PurpleConversation *conv;
+	if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
+		PurpleBlistNode *child;
+		for (child = node->child ; child ; child = child->next)
+		{
+			PurpleBuddy *buddy;
+			PurpleConversation *conv;
+
+			if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
+				continue;
+
+			buddy = (PurpleBuddy *)child;
 
-		if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
-			continue;
-
-		buddy = (PurpleBuddy *)child;
+			conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, purple_buddy_get_name(buddy), purple_buddy_get_account(buddy));
+			if (conv)
+				purple_conversation_update(conv, PURPLE_CONV_UPDATE_ICON);
 
-		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
-		                                             purple_buddy_get_name(buddy),
-		                                             purple_buddy_get_account(buddy));
-		if (conv)
+			/* Is this call necessary anymore? Can the buddies
+			 * themselves need updating when the custom buddy
+			 * icon changes? */
+			purple_blist_update_node_icon((PurpleBlistNode*)buddy);
+		}
+	} else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
+		PurpleConversation *conv = NULL;
+
+		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, purple_chat_get_name((PurpleChat*)node), purple_chat_get_account((PurpleChat*)node));
+		if (conv) {
 			purple_conversation_update(conv, PURPLE_CONV_UPDATE_ICON);
-
-		purple_blist_update_buddy_icon(buddy);
+		}
 	}
 
-	if (old_img)
+	purple_blist_update_node_icon(node);
+
+	if (old_img) {
 		purple_imgstore_unref(old_img);
-	else if (old_icon)
-	{
+	} else if (old_icon) {
 		/* The old icon may not have been loaded into memory.  In that
 		 * case, we'll need to uncache the filename.  The filenames
 		 * are ref-counted, so this is safe. */
@@ -915,6 +930,49 @@
 	return img;
 }
 
+PurpleStoredImage *
+purple_buddy_icons_node_set_custom_icon_from_file(PurpleBlistNode *node,
+                                                  const gchar *filename)
+{
+	size_t len;
+	guchar *data;
+
+	g_return_val_if_fail(node != NULL, NULL);
+
+	if (!PURPLE_BLIST_NODE_IS_CONTACT(node) &&
+	    !PURPLE_BLIST_NODE_IS_CHAT(node) &&
+	    !PURPLE_BLIST_NODE_IS_GROUP(node)) {
+		return NULL;
+	}
+
+	if (!read_icon_file(filename, &data, &len)) {
+		return NULL;
+	}
+
+	return purple_buddy_icons_node_set_custom_icon(node, data, len);
+}
+
+#ifndef PURPLE_DISABLE_DEPRECATED
+gboolean
+purple_buddy_icons_has_custom_icon(PurpleContact *contact)
+{
+	return purple_buddy_icons_node_has_custom_icon((PurpleBlistNode*)contact);
+}
+
+PurpleStoredImage *
+purple_buddy_icons_find_custom_icon(PurpleContact *contact)
+{
+	return purple_buddy_icons_node_find_custom_icon((PurpleBlistNode*)contact);
+}
+
+PurpleStoredImage *
+purple_buddy_icons_set_custom_icon(PurpleContact *contact, guchar *icon_data,
+                                   size_t icon_len)
+{
+	return purple_buddy_icons_node_set_custom_icon((PurpleBlistNode*)contact, icon_data, icon_len);
+}
+#endif
+
 void
 _purple_buddy_icon_set_old_icons_dir(const char *dirname)
 {
@@ -1138,7 +1196,9 @@
 				}
 			}
 		}
-		else if (PURPLE_BLIST_NODE_IS_CONTACT(node))
+		else if (PURPLE_BLIST_NODE_IS_CONTACT(node) ||
+		         PURPLE_BLIST_NODE_IS_CHAT(node) ||
+		         PURPLE_BLIST_NODE_IS_GROUP(node))
 		{
 			const char *filename;
 
--- a/libpurple/buddyicon.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/buddyicon.h	Thu Jun 26 09:07:56 2008 +0000
@@ -26,6 +26,11 @@
 #ifndef _PURPLE_BUDDYICON_H_
 #define _PURPLE_BUDDYICON_H_
 
+/** An opaque structure representing a buddy icon for a particular user on a
+ *  particular #PurpleAccount.  Instances are reference-counted; use
+ *  purple_buddy_icon_ref() and purple_buddy_icon_unref() to take and release
+ *  references.
+ */
 typedef struct _PurpleBuddyIcon PurpleBuddyIcon;
 
 #include "account.h"
@@ -218,16 +223,6 @@
 purple_buddy_icons_find(PurpleAccount *account, const char *username);
 
 /**
- * Returns a boolean indicating if a given contact has a custom buddy icon.
- *
- * @param contact The contact
- *
- * @return A boolean indicating if @a contact has a custom buddy icon.
- */
-gboolean
-purple_buddy_icons_has_custom_icon(PurpleContact *contact);
-
-/**
  * Returns the buddy icon image for an account.
  *
  * The caller owns a reference to the image in the store, and must dereference
@@ -277,7 +272,18 @@
 purple_buddy_icons_get_account_icon_timestamp(PurpleAccount *account);
 
 /**
- * Returns the custom buddy icon image for a contact.
+ * Returns a boolean indicating if a given blist node has a custom buddy icon.
+ *
+ * @param node The blist node.
+ *
+ * @return A boolean indicating if @a node has a custom buddy icon.
+ * @since 2.5.0
+ */
+gboolean
+purple_buddy_icons_node_has_custom_icon(PurpleBlistNode *node);
+
+/**
+ * Returns the custom buddy icon image for a blist node.
  *
  * The caller owns a reference to the image in the store, and must dereference
  * the image with purple_imgstore_unref() for it to be freed.
@@ -286,31 +292,82 @@
  * needed, so it should be called in any case where you want the
  * appropriate icon.
  *
- * @param contact The contact
+ * @param node The node.
+ *
+ * @return The custom buddy icon.
+ * @since 2.5.0
+ */
+PurpleStoredImage *
+purple_buddy_icons_node_find_custom_icon(PurpleBlistNode *node);
+
+/**
+ * Sets a custom buddy icon for a blist node.
+ *
+ * This function will deal with saving a record of the icon, caching the data,
+ * etc.
+ *
+ * @param node      The blist node for which to set a custom icon.
+ * @param icon_data The image data of the icon, which the buddy icon code will
+ *                  free.
+ * @param icon_len  The length of the data in @a icon_data.
+ *
+ * @return The icon that was set. The caller does NOT own a reference to this,
+ *         and must call purple_imgstore_ref() if it wants one.
+ * @since 2.5.0
+ */
+PurpleStoredImage *
+purple_buddy_icons_node_set_custom_icon(PurpleBlistNode *node,
+                                        guchar *icon_data, size_t icon_len);
+
+/**
+ * Sets a custom buddy icon for a blist node.
  *
- * @return The custom buddy icon image.
+ * Convenience wrapper around purple_buddy_icons_node_set_custom_icon.
+ * @see purple_buddy_icons_node_set_custom_icon()
+ *
+ * @param node      The blist node for which to set a custom icon.
+ * @param filename  The path to the icon to set for the blist node.
+ *
+ * @return The icon that was set. The caller does NOT own a reference to this,
+ *         and must call purple_imgstore_ref() if it wants one.
+ * @since 2.5.0
+ */
+PurpleStoredImage *
+purple_buddy_icons_node_set_custom_icon_from_file(PurpleBlistNode *node,
+                                                  const gchar *filename);
+
+#ifndef PURPLE_DISABLE_DEPRECATED
+/**
+ * PurpleContact version of purple_buddy_icons_node_has_custom_icon.
+ *
+ * @copydoc purple_buddy_icons_node_has_custom_icon()
+ *
+ * @deprecated Use purple_buddy_icons_node_has_custom_icon instead.
+ */
+gboolean
+purple_buddy_icons_has_custom_icon(PurpleContact *contact);
+
+/**
+ * PurpleContact version of purple_buddy_icons_node_find_custom_icon.
+ *
+ * @copydoc purple_buddy_icons_node_find_custom_icon()
+ *
+ * @deprecated Use purple_buddy_icons_node_find_custom_icon instead.
  */
 PurpleStoredImage *
 purple_buddy_icons_find_custom_icon(PurpleContact *contact);
 
 /**
- * Sets a custom buddy icon for a user.
- *
- * This function will deal with saving a record of the icon,
- * caching the data, etc.
+ * PurpleContact version of purple_buddy_icons_node_set_custom_icon.
  *
- * @param contact   The contact for which to set a custom icon.
- * @param icon_data The image data of the icon, which the
- *                  buddy icon code will free.
- * @param icon_len  The length of the data in @a icon_data.
+ * @copydoc purple_buddy_icons_node_set_custom_icon()
  *
- * @return The icon that was set.  The caller does NOT own
- *         a reference to this, and must call purple_imgstore_ref()
- *         if it wants one.
+ * @deprecated Use purple_buddy_icons_node_set_custom_icon instead.
  */
 PurpleStoredImage *
 purple_buddy_icons_set_custom_icon(PurpleContact *contact,
                                    guchar *icon_data, size_t icon_len);
+#endif
 
 /**
  * Sets whether or not buddy icon caching is enabled.
--- a/libpurple/certificate.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/certificate.c	Thu Jun 26 09:07:56 2008 +0000
@@ -745,8 +745,12 @@
 		x509_ca_paths = g_list_append(NULL, g_build_filename(DATADIR,
 						   "ca-certs", NULL));
 #else
+# ifdef SSL_CERTIFICATES_DIR
+		x509_ca_paths = g_list_append(NULL, SSL_CERTIFICATES_DIR);
+# else
 		x509_ca_paths = g_list_append(NULL, g_build_filename(DATADIR,
 						   "purple", "ca-certs", NULL));
+# endif
 #endif
 	}
 
--- a/libpurple/cmds.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/cmds.h	Thu Jun 26 09:07:56 2008 +0000
@@ -30,6 +30,7 @@
 /**************************************************************************/
 /*@{*/
 
+/** The possible results of running a command with purple_cmd_do_command(). */
 typedef enum _PurpleCmdStatus {
 	PURPLE_CMD_STATUS_OK,
 	PURPLE_CMD_STATUS_FAILED,
@@ -39,16 +40,31 @@
 	PURPLE_CMD_STATUS_WRONG_TYPE,
 } PurpleCmdStatus;
 
+/** Commands registered with the core return one of these values when run.
+ *  Normally, a command will want to return one of the first two; in some
+ *  unusual cases, you might want to have several functions called for a
+ *  particular command; in this case, they should return
+ *  #PURPLE_CMD_RET_CONTINUE to cause the core to fall through to other
+ *  commands with the same name.
+ */
 typedef enum _PurpleCmdRet {
-	PURPLE_CMD_RET_OK,       /**< Everything's okay. Don't look for another command to call. */
+	PURPLE_CMD_RET_OK,       /**< Everything's okay; Don't look for another command to call. */
 	PURPLE_CMD_RET_FAILED,   /**< The command failed, but stop looking.*/
 	PURPLE_CMD_RET_CONTINUE, /**< Continue, looking for other commands with the same name to call. */
 } PurpleCmdRet;
 
 #define PURPLE_CMD_FUNC(func) ((PurpleCmdFunc)func)
 
+/** A function implementing a command, as passed to purple_cmd_register().
+ *
+ *  @todo document the arguments to these functions.
+ * */
 typedef PurpleCmdRet (*PurpleCmdFunc)(PurpleConversation *, const gchar *cmd,
                                   gchar **args, gchar **error, void *data);
+/** A unique integer representing a command registered with
+ *  purple_cmd_register(), which can subsequently be passed to
+ *  purple_cmd_unregister() to unregister that command.
+ */
 typedef guint PurpleCmdId;
 
 typedef enum _PurpleCmdPriority {
@@ -171,7 +187,7 @@
  *               include both the default formatting and any extra manual formatting.
  * @param errormsg If the command failed errormsg is filled in with the appropriate error
  *                 message. It must be freed by the caller with g_free().
- * @return A #PurpleCmdStatus indicated if the command succeeded or failed.
+ * @return A #PurpleCmdStatus indicating if the command succeeded or failed.
  */
 PurpleCmdStatus purple_cmd_do_command(PurpleConversation *conv, const gchar *cmdline,
                                   const gchar *markup, gchar **errormsg);
--- a/libpurple/connection.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/connection.h	Thu Jun 26 09:07:56 2008 +0000
@@ -27,6 +27,7 @@
 #ifndef _PURPLE_CONNECTION_H_
 #define _PURPLE_CONNECTION_H_
 
+/** @copydoc _PurpleConnection */
 typedef struct _PurpleConnection PurpleConnection;
 
 /**
@@ -43,6 +44,7 @@
 	PURPLE_CONNECTION_NO_FONTSIZE = 0x0020, /**< Connection does not send/receive font sizes */
 	PURPLE_CONNECTION_NO_URLDESC = 0x0040,  /**< Connection does not support descriptions with links */ 
 	PURPLE_CONNECTION_NO_IMAGES = 0x0080,  /**< Connection does not support sending of images */
+	PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY = 0x0100, /**< Connection supports sending and receiving custom smileys */
 
 } PurpleConnectionFlags;
 
@@ -120,7 +122,7 @@
 	 */
 	PURPLE_CONNECTION_ERROR_CERT_OTHER_ERROR = 15,
 
-	/** Some other error occured which fits into none of the other
+	/** Some other error occurred which fits into none of the other
 	 *  categories.
 	 */
 	/* purple_connection_error_reason() in connection.c uses the fact that
@@ -222,6 +224,8 @@
 	void (*_purple_reserved3)(void);
 } PurpleConnectionUiOps;
 
+
+/* Represents an active connection on an account. */
 struct _PurpleConnection
 {
 	PurplePlugin *prpl;            /**< The protocol plugin.               */
--- a/libpurple/conversation.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/conversation.c	Thu Jun 26 09:07:56 2008 +0000
@@ -98,7 +98,7 @@
 	char *displayed = NULL, *sent = NULL;
 	int err = 0;
 
-	if (strlen(message) == 0)
+	if (*message == '\0')
 		return;
 
 	account = purple_conversation_get_account(conv);
@@ -2221,6 +2221,16 @@
 										PURPLE_SUBTYPE_CONVERSATION),
 						 purple_value_new(PURPLE_TYPE_UINT));
 
+	purple_signal_register(handle, "blocked-im-msg",
+						 purple_marshal_VOID__POINTER_POINTER_POINTER_UINT_UINT,
+						 NULL, 5,
+						 purple_value_new(PURPLE_TYPE_SUBTYPE,
+							 PURPLE_SUBTYPE_ACCOUNT),
+						 purple_value_new(PURPLE_TYPE_STRING),
+						 purple_value_new(PURPLE_TYPE_STRING),
+						 purple_value_new(PURPLE_TYPE_UINT),
+						 purple_value_new(PURPLE_TYPE_UINT));
+
 	purple_signal_register(handle, "writing-chat-msg",
 						 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_UINT,
 						 purple_value_new(PURPLE_TYPE_BOOLEAN), 5,
@@ -2376,11 +2386,27 @@
 						 purple_value_new(PURPLE_TYPE_STRING),
 						 purple_value_new(PURPLE_TYPE_POINTER));
 
+	purple_signal_register(handle, "chat-invite-blocked",
+						 purple_marshal_VOID__POINTER_POINTER_POINTER_POINTER_POINTER,
+						 NULL, 5,
+						 purple_value_new(PURPLE_TYPE_SUBTYPE,
+							 PURPLE_SUBTYPE_ACCOUNT),
+						 purple_value_new(PURPLE_TYPE_STRING),
+						 purple_value_new(PURPLE_TYPE_STRING),
+						 purple_value_new(PURPLE_TYPE_STRING),
+						 purple_value_new(PURPLE_TYPE_BOXED, "GHashTable *"));
+
 	purple_signal_register(handle, "chat-joined",
 						 purple_marshal_VOID__POINTER, NULL, 1,
 						 purple_value_new(PURPLE_TYPE_SUBTYPE,
 										PURPLE_SUBTYPE_CONVERSATION));
 
+	purple_signal_register(handle, "chat-join-failed",
+						   purple_marshal_VOID__POINTER_POINTER, NULL, 2,
+						   purple_value_new(PURPLE_TYPE_SUBTYPE,
+										PURPLE_SUBTYPE_CONNECTION),
+						   purple_value_new(PURPLE_TYPE_POINTER));
+
 	purple_signal_register(handle, "chat-left",
 						 purple_marshal_VOID__POINTER, NULL, 1,
 						 purple_value_new(PURPLE_TYPE_SUBTYPE,
--- a/libpurple/conversation.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/conversation.h	Thu Jun 26 09:07:56 2008 +0000
@@ -32,11 +32,17 @@
 /**************************************************************************/
 
 
+/** @copydoc _PurpleConversationUiOps */
 typedef struct _PurpleConversationUiOps PurpleConversationUiOps;
+/** @copydoc _PurpleConversation */
 typedef struct _PurpleConversation      PurpleConversation;
+/** @copydoc _PurpleConvIm */
 typedef struct _PurpleConvIm            PurpleConvIm;
+/** @copydoc _PurpleConvChat */
 typedef struct _PurpleConvChat          PurpleConvChat;
+/** @copydoc _PurpleConvChatBuddy */
 typedef struct _PurpleConvChatBuddy     PurpleConvChatBuddy;
+/** @copydoc _PurpleConvMessage */
 typedef struct _PurpleConvMessage       PurpleConvMessage;
 
 /**
--- a/libpurple/core.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/core.c	Thu Jun 26 09:07:56 2008 +0000
@@ -43,6 +43,7 @@
 #include "proxy.h"
 #include "savedstatuses.h"
 #include "signals.h"
+#include "smiley.h"
 #include "sound.h"
 #include "sslconn.h"
 #include "status.h"
@@ -130,13 +131,14 @@
 
 	purple_ciphers_init();
 
-	/* Initialize all static protocols. */
-	static_proto_init();
-
 	/* Since plugins get probed so early we should probably initialize their
 	 * subsystem right away too.
 	 */
 	purple_plugins_init();
+	
+	/* Initialize all static protocols. */
+	static_proto_init();
+
 	purple_plugins_probe(G_MODULE_SUFFIX);
 
 	/* The buddy icon code uses the imgstore, so init it early. */
@@ -166,6 +168,7 @@
 	purple_stun_init();
 	purple_xfers_init();
 	purple_idle_init();
+	purple_smileys_init();
 
 	/*
 	 * Call this early on to try to auto-detect our IP address and
@@ -194,6 +197,7 @@
 	purple_connections_disconnect_all();
 
 	/* Save .xml files, remove signals, etc. */
+	purple_smileys_uninit();
 	purple_idle_uninit();
 	purple_ssl_uninit();
 	purple_pounces_uninit();
@@ -208,6 +212,7 @@
 	purple_savedstatuses_uninit();
 	purple_status_uninit();
 	purple_prefs_uninit();
+	purple_sound_uninit();
 	purple_xfers_uninit();
 	purple_proxy_uninit();
 	purple_dnsquery_uninit();
@@ -220,19 +225,6 @@
 	if (ops != NULL && ops->quit != NULL)
 		ops->quit();
 
-	/*
-	 * purple_sound_uninit() should be called as close to
-	 * shutdown as possible.  This is because the call
-	 * to ao_shutdown() can sometimes leave our
-	 * environment variables in an unusable state, which
-	 * can cause a crash when getenv is called (by gettext
-	 * for example).  See the complete bug report at
-	 * http://trac.xiph.org/cgi-bin/trac.cgi/ticket/701
-	 *
-	 * TODO: Eventually move this call higher up with the others.
-	 */
-	purple_sound_uninit();
-
 	purple_plugins_uninit();
 #ifdef HAVE_DBUS
 	purple_dbus_uninit();
--- a/libpurple/core.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/core.h	Thu Jun 26 09:07:56 2008 +0000
@@ -1,4 +1,5 @@
 /**
+ * @file core.h Startup and shutdown of libpurple
  * @defgroup core libpurple
  * @see @ref core-signals
  */
@@ -28,12 +29,36 @@
 
 typedef struct PurpleCore PurpleCore;
 
+/** Callbacks that fire at different points of the initialization and teardown
+ *  of libpurple, along with a hook to return descriptive information about the
+ *  UI.
+ */
 typedef struct
 {
+	/** Called just after the preferences subsystem is initialized; the UI
+	 *  could use this callback to add some preferences it needs to be in
+	 *  place when other subsystems are initialized.
+	 */
 	void (*ui_prefs_init)(void);
-	void (*debug_ui_init)(void); /* Unfortunate necessity. */
+	/** Called just after the debug subsystem is initialized, but before
+	 *  just about every other component's initialization.  The UI should
+	 *  use this hook to call purple_debug_set_ui_ops() so that debugging
+	 *  information for other components can be logged during their
+	 *  initialization.
+	 */
+	void (*debug_ui_init)(void);
+	/** Called after all of libpurple has been initialized.  The UI should
+	 *  use this hook to set all other necessary UiOps structures.
+	 *
+	 *  @see @ref ui-ops
+	 */
 	void (*ui_init)(void);
+	/** Called after most of libpurple has been uninitialized. */
 	void (*quit)(void);
+
+	/** Called by purple_core_get_ui_info(); should return the information
+	 *  documented there.
+	 */
 	GHashTable* (*get_ui_info)(void);
 
 	void (*_purple_reserved1)(void);
@@ -64,17 +89,23 @@
 void purple_core_quit(void);
 
 /**
+ * <p>
  * Calls purple_core_quit().  This can be used as the function 
  * passed to purple_timeout_add() when you want to shutdown Purple 
  * in a specified amount of time.  When shutting down Purple 
  * from a plugin, you must use this instead of purple_core_quit();
  * for an immediate exit, use a timeout value of 0: 
- *   purple_timeout_add(0, purple_core_quitcb, NULL);
+ * </p>
+ *
+ * <code>purple_timeout_add(0, purple_core_quitcb, NULL);</code>
+ *
+ * <p>
  * This is ensures that code from your plugin is not being 
  * executed when purple_core_quit() is called.  If the plugin
  * called purple_core_quit() directly, you would get a core dump
  * after purple_core_quit() executes and control returns to your
  * plugin because purple_core_quit() frees all plugins.
+ * </p>
  */
 gboolean purple_core_quit_cb(gpointer unused);
 
@@ -86,7 +117,8 @@
 const char *purple_core_get_version(void);
 
 /**
- * Returns the ID of the UI that is using the core.
+ * Returns the ID of the UI that is using the core, as passed to
+ * purple_core_init().
  *
  * @return The ID of the UI that is currently using the core.
  */
@@ -95,7 +127,7 @@
 /**
  * Returns a handle to the purple core.
  *
- * This is used for such things as signals.
+ * This is used to connect to @ref core-signals "core signals".
  */
 PurpleCore *purple_get_core(void);
 
@@ -114,10 +146,10 @@
 PurpleCoreUiOps *purple_core_get_ui_ops(void);
 
 /**
- * Migrates from .gaim to .purple.
+ * Migrates from <tt>.gaim</tt> to <tt>.purple</tt>.
  *
- * UIs MUST NOT call this if they have been told to use a custom
- * user directory.
+ * UIs <strong>must not</strong> call this if they have been told to use a
+ * custom user directory.
  *
  * @return A boolean indicating success or migration failure. On failure,
  *         the application must display an error to the user and then exit.
@@ -125,20 +157,33 @@
 gboolean purple_core_migrate(void);
 
 /**
- * Ensures that only one instance is running.
+ * Ensures that only one instance is running.  If libpurple is built with D-Bus
+ * support, this checks if another process owns the libpurple bus name and if
+ * so whether that process is using the same configuration directory as this
+ * process.
  *
- * @return A boolean such that @c TRUE indicates that this is the first instance,
- *         whereas @c FALSE indicates that there is another instance running.
+ * @return @c TRUE if this is the first instance of libpurple running;
+ *         @c FALSE if there is another instance running.
  *
  * @since 2.1.0
  */
 gboolean purple_core_ensure_single_instance(void);
 
 /**
- * Returns a hashtable containing various information about the UI
+ * Returns a hash table containing various information about the UI.  The
+ * following well-known entries may be in the table (along with any others the
+ * UI might choose to include):
+ *
+ * <dl>
+ *   <dt><tt>name</tt></dt>
+ *   <dd>the user-readable name for the UI.</dd>
+ *
+ *   <dt><tt>version</tt></dt>
+ *   <dd>a user-readable description of the current version of the UI.</dd>
+ * </dl>
  *
  * @return A GHashTable with strings for keys and values.  This
- * hash table must not be freed.
+ * hash table must not be freed and should not be modified.
  *
  * @since 2.1.0
  *
--- a/libpurple/dbus-analyze-functions.py	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/dbus-analyze-functions.py	Thu Jun 26 09:07:56 2008 +0000
@@ -483,6 +483,7 @@
         self.inputiter = iter(inputfile)
         self.functionregexp = \
              re.compile("^%s(\w[^()]*)\(([^()]*)\)\s*;\s*$" % fprefix)    
+        self.typeregexp = re.compile("^\w+\s*\*?\s*$")
 
 
                 
@@ -501,7 +502,7 @@
             # accumulate lines until the parentheses are balance or an
             # empty line has been encountered
             myline = line.strip()
-            while myline.count("(") > myline.count(")"):
+            while (myline.count("(") > myline.count(")")) or self.typeregexp.match(myline):
                 newline = self.inputiter.next().strip()
                 if len(newline) == 0:
                     break
--- a/libpurple/dbus-server.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/dbus-server.c	Thu Jun 26 09:07:56 2008 +0000
@@ -40,6 +40,7 @@
 #include "core.h"
 #include "internal.h"
 #include "savedstatuses.h"
+#include "smiley.h"
 #include "util.h"
 #include "value.h"
 #include "xmlnode.h"
--- a/libpurple/dnsquery.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/dnsquery.c	Thu Jun 26 09:07:56 2008 +0000
@@ -32,6 +32,9 @@
 #include "prefs.h"
 #include "util.h"
 
+#if (defined(__APPLE__) || defined (__unix__)) && !defined(__osf__)
+#define PURPLE_DNSQUERY_USE_FORK
+#endif
 /**************************************************************************
  * DNS query API
  **************************************************************************/
@@ -47,16 +50,16 @@
 	gpointer data;
 	guint timeout;
 
-#if defined(__unix__) || defined(__APPLE__)
+#if defined(PURPLE_DNSQUERY_USE_FORK)
 	PurpleDnsQueryResolverProcess *resolver;
-#elif defined _WIN32 /* end __unix__ || __APPLE__ */
+#elif defined _WIN32 /* end PURPLE_DNSQUERY_USE_FORK  */
 	GThread *resolver;
 	GSList *hosts;
 	gchar *error_message;
 #endif
 };
 
-#if defined(__unix__) || defined(__APPLE__)
+#if defined(PURPLE_DNSQUERY_USE_FORK)
 
 #define MAX_DNS_CHILDREN 4
 
@@ -131,7 +134,7 @@
 	return FALSE;
 }
 
-#if defined(__unix__) || defined(__APPLE__)
+#if defined(PURPLE_DNSQUERY_USE_FORK)
 
 /*
  * Unix!
@@ -649,7 +652,7 @@
 	return query_data;
 }
 
-#elif defined _WIN32 /* end __unix__ || __APPLE__ */
+#elif defined _WIN32 /* end PURPLE_DNSQUERY_USE_FORK  */
 
 /*
  * Windows!
@@ -821,7 +824,7 @@
 	return query_data;
 }
 
-#else /* not __unix__ or __APPLE__ or _WIN32 */
+#else /* not PURPLE_DNSQUERY_USE_FORK or _WIN32 */
 
 /*
  * We weren't able to do anything fancier above, so use the
@@ -897,7 +900,7 @@
 	return query_data;
 }
 
-#endif /* not __unix__ or __APPLE__ or _WIN32 */
+#endif /* not PURPLE_DNSQUERY_USE_FORK or _WIN32 */
 
 void
 purple_dnsquery_destroy(PurpleDnsQueryData *query_data)
@@ -907,7 +910,7 @@
 	if (ops && ops->destroy)
 		ops->destroy(query_data);
 
-#if defined(__unix__) || defined(__APPLE__)
+#if defined(PURPLE_DNSQUERY_USE_FORK)
 	queued_requests = g_slist_remove(queued_requests, query_data);
 
 	if (query_data->resolver != NULL)
@@ -918,7 +921,7 @@
 		 * they just don't listen.
 		 */
 		purple_dnsquery_resolver_destroy(query_data->resolver);
-#elif defined _WIN32 /* end __unix__ || __APPLE__ */
+#elif defined _WIN32 /* end PURPLE_DNSQUERY_USE_FORK */
 	if (query_data->resolver != NULL)
 	{
 		/*
@@ -987,7 +990,7 @@
 void
 purple_dnsquery_uninit(void)
 {
-#if defined(__unix__) || defined(__APPLE__)
+#if defined(PURPLE_DNSQUERY_USE_FORK)
 	while (free_dns_children != NULL)
 	{
 		purple_dnsquery_resolver_destroy(free_dns_children->data);
--- a/libpurple/dnssrv.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/dnssrv.c	Thu Jun 26 09:07:56 2008 +0000
@@ -25,8 +25,8 @@
 #include "util.h"
 
 #ifndef _WIN32
+#include <arpa/nameser.h>
 #include <resolv.h>
-#include <arpa/nameser.h>
 #ifdef HAVE_ARPA_NAMESER_COMPAT_H
 #include <arpa/nameser_compat.h>
 #endif
--- a/libpurple/imgstore.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/imgstore.c	Thu Jun 26 09:07:56 2008 +0000
@@ -68,6 +68,22 @@
 	return img;
 }
 
+PurpleStoredImage *
+purple_imgstore_new_from_file(const char *path)
+{
+	gchar *data = NULL;
+	size_t len;
+	GError *err = NULL;
+
+	if (!g_file_get_contents(path, &data, &len, &err)) {
+		purple_debug_error("imgstore", "Error reading %s: %s\n",
+				path, err->message);
+		g_error_free(err);
+		return NULL;
+	}
+	return purple_imgstore_add(data, len, path);
+}
+
 int
 purple_imgstore_add_with_id(gpointer data, size_t size, const char *filename)
 {
--- a/libpurple/imgstore.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/imgstore.h	Thu Jun 26 09:07:56 2008 +0000
@@ -63,6 +63,17 @@
 purple_imgstore_add(gpointer data, size_t size, const char *filename);
 
 /**
+ * Create an image and add it to the store.
+ *
+ * @param path  The path to the image.
+ *
+ * @return  The stored image.
+ * @since 2.X.X
+ */
+PurpleStoredImage *
+purple_imgstore_new_from_file(const char *path);
+
+/**
  * Add an image to the store, allocating an ID.
  *
  * The caller owns a reference to the image in the store, and must dereference
--- a/libpurple/internal.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/internal.h	Thu Jun 26 09:07:56 2008 +0000
@@ -102,7 +102,7 @@
 #include <gmodule.h>
 
 #ifdef PURPLE_PLUGINS
-# ifndef _WIN32
+# ifdef HAVE_DLFCN_H 
 #  include <dlfcn.h>
 # endif
 #endif
--- a/libpurple/log.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/log.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1067,7 +1067,7 @@
 				set->normalized_name = g_strdup(purple_normalize(account, name));
 
 				/* Chat for .chat or .system at the end of the name to determine the type. */
-				if (len > 7) {
+				if (len >= 7) {
 					gchar *tmp = &name[len - 7];
 					if (!strcmp(tmp, ".system")) {
 						set->type = PURPLE_LOG_SYSTEM;
@@ -1083,7 +1083,7 @@
 				}
 
 				/* Determine if this (account, name) combination exists as a buddy. */
-				if (account != NULL)
+				if (account != NULL && name != NULL && *name != '\0')
 					set->buddy = (purple_find_buddy(account, name) != NULL);
 				else
 					set->buddy = FALSE;
--- a/libpurple/nat-pmp.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/nat-pmp.c	Thu Jun 26 09:07:56 2008 +0000
@@ -35,6 +35,10 @@
 #include "signals.h"
 #include "network.h"
 
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+
 #ifdef HAVE_SYS_SYSCTL_H
 #include <sys/sysctl.h>
 #endif
@@ -125,7 +129,16 @@
 		if (bitmask & (1 << i)) 
 		{
 			addrs[i] = sa;
+#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
 			sa = (struct sockaddr *)(ROUNDUP(sa->sa_len) + (char *)sa);
+#else
+			if (sa->sa_family == AF_INET)
+				sa = (struct sockaddr*)(sizeof(struct sockaddr_in) + (char *)sa);
+#ifdef AF_INET6
+			else if (sa->sa_family == AF_INET6)
+				sa = (struct sockaddr*)(sizeof(struct sockaddr_in6) + (char *)sa);
+#endif
+#endif
 		} 
 		else
 		{
@@ -146,7 +159,12 @@
     if ((sin->sin_addr.s_addr == INADDR_ANY) &&
 		mask &&
 		(ntohl(((struct sockaddr_in *)mask)->sin_addr.s_addr) == 0L ||
-		 mask->sa_len == 0))
+#ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
+		 mask->sa_len == 0
+#else
+		0
+#endif
+		))
 		return 1;
     else
 		return 0;
--- a/libpurple/network.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/network.c	Thu Jun 26 09:07:56 2008 +0000
@@ -27,9 +27,9 @@
 #include "internal.h"
 
 #ifndef _WIN32
+#include <arpa/nameser.h>
 #include <resolv.h>
 #include <netinet/in.h>
-#include <arpa/nameser.h>
 #include <net/if.h>
 #include <sys/ioctl.h>
 #else
--- a/libpurple/notify.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/notify.c	Thu Jun 26 09:07:56 2008 +0000
@@ -629,6 +629,17 @@
 }
 
 void
+purple_notify_user_info_prepend_section_header(PurpleNotifyUserInfo *user_info, const char *label)
+{
+	PurpleNotifyUserInfoEntry *entry;
+	
+	entry = purple_notify_user_info_entry_new(label, NULL);
+	entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER;
+	
+	user_info->user_info_entries = g_list_prepend(user_info->user_info_entries, entry);
+}
+
+void
 purple_notify_user_info_add_section_break(PurpleNotifyUserInfo *user_info)
 {
 	PurpleNotifyUserInfoEntry *entry;
@@ -640,6 +651,17 @@
 }
 
 void
+purple_notify_user_info_prepend_section_break(PurpleNotifyUserInfo *user_info)
+{
+	PurpleNotifyUserInfoEntry *entry;
+	
+	entry = purple_notify_user_info_entry_new(NULL, NULL);
+	entry->type = PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK;
+	
+	user_info->user_info_entries = g_list_prepend(user_info->user_info_entries, entry);
+}
+
+void
 purple_notify_user_info_remove_last_item(PurpleNotifyUserInfo *user_info)
 {
 	GList *last = g_list_last(user_info->user_info_entries);
--- a/libpurple/notify.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/notify.h	Thu Jun 26 09:07:56 2008 +0000
@@ -48,8 +48,8 @@
 typedef enum
 {
 	PURPLE_NOTIFY_MESSAGE = 0,   /**< Message notification.         */
-	PURPLE_NOTIFY_EMAIL,         /**< Single e-mail notification.   */
-	PURPLE_NOTIFY_EMAILS,        /**< Multiple e-mail notification. */
+	PURPLE_NOTIFY_EMAIL,         /**< Single email notification.   */
+	PURPLE_NOTIFY_EMAILS,        /**< Multiple email notification. */
 	PURPLE_NOTIFY_FORMATTED,     /**< Formatted text.               */
 	PURPLE_NOTIFY_SEARCHRESULTS, /**< Buddy search results.         */
 	PURPLE_NOTIFY_USERINFO,      /**< Formatted userinfo text.      */
@@ -402,10 +402,10 @@
 						  gpointer user_data);
 
 /**
- * Displays a single e-mail notification to the user.
+ * Displays a single email notification to the user.
  *
  * @param handle    The plugin or connection handle.
- * @param subject   The subject of the e-mail.
+ * @param subject   The subject of the email.
  * @param from      The from address.
  * @param to        The destination address.
  * @param url       The URL where the message can be read.
@@ -421,11 +421,11 @@
 						gpointer user_data);
 
 /**
- * Displays a notification for multiple e-mails to the user.
+ * Displays a notification for multiple emails to the user.
  *
  * @param handle    The plugin or connection handle.
- * @param count     The number of e-mails.
- * @param detailed  @c TRUE if there is information for each e-mail in the
+ * @param count     The number of emails.
+ * @param detailed  @c TRUE if there is information for each email in the
  *                  arrays.
  * @param subjects  The array of subjects.
  * @param froms     The array of from addresses.
@@ -577,13 +577,30 @@
 void purple_notify_user_info_add_section_break(PurpleNotifyUserInfo *user_info);
 
 /**
+ * Prepend a section break.  A UI might display this as a horizontal line.
+ *
+ * @param user_info          The PurpleNotifyUserInfo
+ * @since 2.5.0
+ */
+void purple_notify_user_info_prepend_section_break(PurpleNotifyUserInfo *user_info);
+	
+/**
  * Add a section header.  A UI might display this in a different font from other text.
  *
  * @param user_info          The PurpleNotifyUserInfo
  * @param label              The name of the section
  */
 void purple_notify_user_info_add_section_header(PurpleNotifyUserInfo *user_info, const char *label);
-
+	
+/**
+ * Prepend a section header.  A UI might display this in a different font from other text.
+ *
+ * @param user_info          The PurpleNotifyUserInfo
+ * @param label              The name of the section
+ * @since 2.5.0
+ */
+void purple_notify_user_info_prepend_section_header(PurpleNotifyUserInfo *user_info, const char *label);
+	
 /**
  * Remove the last item which was added to a PurpleNotifyUserInfo. This could be used to remove a section header which is not needed.
  */
--- a/libpurple/plugin.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/plugin.c	Thu Jun 26 09:07:56 2008 +0000
@@ -359,7 +359,7 @@
 	{
 		plugin->error = g_strdup_printf(_("You are using %s, but this plugin requires %s."),
 					purple_core_get_ui(), plugin->info->ui_requirement);
-		purple_debug_error("plugins", "%s is not loadable: The UI requirement is not met.\n", plugin->path);
+		purple_debug_error("plugins", "%s is not loadable: The UI requirement is not met. (%s)\n", plugin->path, plugin->error);
 		plugin->unloadable = TRUE;
 		return plugin;
 	}
@@ -474,9 +474,9 @@
 		    (PURPLE_PLUGIN_PROTOCOL_INFO(plugin)->login == NULL) ||
 		    (PURPLE_PLUGIN_PROTOCOL_INFO(plugin)->close == NULL))
 		{
-			plugin->error = g_strdup(_("Plugin does not implement all required functions"));
-			purple_debug_error("plugins", "%s is not loadable: Plugin does not implement all required functions\n",
-					 plugin->path);
+			plugin->error = g_strdup(_("Plugin does not implement all required functions (list_icon, login and close)"));
+			purple_debug_error("plugins", "%s is not loadable: %s\n",
+					 plugin->path, plugin->error);
 			plugin->unloadable = TRUE;
 			return plugin;
 		}
--- a/libpurple/plugins/perl/Makefile.am	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/plugins/perl/Makefile.am	Thu Jun 26 09:07:56 2008 +0000
@@ -67,6 +67,7 @@
 	common/SavedStatuses.xs \
 	common/Server.xs \
 	common/Signal.xs \
+	common/Smiley.xs \
 	common/Sound.xs \
 	common/Status.xs \
 	common/Stringref.xs \
--- a/libpurple/plugins/perl/common/MANIFEST	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/plugins/perl/common/MANIFEST	Thu Jun 26 09:07:56 2008 +0000
@@ -28,6 +28,7 @@
 SavedStatuses.xs
 Server.xs
 Signal.xs
+Smiley.xs
 Sound.xs
 Status.xs
 Stringref.xs
--- a/libpurple/plugins/perl/common/Makefile.mingw	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/plugins/perl/common/Makefile.mingw	Thu Jun 26 09:07:56 2008 +0000
@@ -61,8 +61,9 @@
 				Roomlist.xs \
 				SSLConn.xs \
 				SavedStatuses.xs \
+				Server.xs \
 				Signal.xs \
-				Server.xs \
+				Smiley.xs \
 				Sound.xs \
 				Status.xs \
 				Stringref.xs \
--- a/libpurple/plugins/perl/common/Purple.xs	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/plugins/perl/common/Purple.xs	Thu Jun 26 09:07:56 2008 +0000
@@ -30,6 +30,7 @@
 PURPLE_PERL_BOOT_PROTO(SavedStatus);
 PURPLE_PERL_BOOT_PROTO(Serv);
 PURPLE_PERL_BOOT_PROTO(Signal);
+PURPLE_PERL_BOOT_PROTO(Smiley);
 PURPLE_PERL_BOOT_PROTO(Sound);
 PURPLE_PERL_BOOT_PROTO(Status);
 PURPLE_PERL_BOOT_PROTO(Stringref);
@@ -68,6 +69,7 @@
 	PURPLE_PERL_BOOT(SavedStatus);
 	PURPLE_PERL_BOOT(Serv);
 	PURPLE_PERL_BOOT(Signal);
+	PURPLE_PERL_BOOT(Smiley);
 	PURPLE_PERL_BOOT(Sound);
 	PURPLE_PERL_BOOT(Status);
 	PURPLE_PERL_BOOT(Stringref);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/plugins/perl/common/Smiley.xs	Thu Jun 26 09:07:56 2008 +0000
@@ -0,0 +1,80 @@
+#include "module.h"
+
+MODULE = Purple::Smiley  PACKAGE = Purple::Smiley  PREFIX = purple_smiley_
+PROTOTYPES: ENABLE
+
+Purple::Smiley
+purple_smiley_new(img, shortcut)
+	Purple::StoredImage img
+	const char * shortcut
+
+Purple::Smiley
+purple_smiley_new_from_file(shortcut, filepath)
+	const char * shortcut
+	const char * filepath
+
+void
+purple_smiley_delete(smiley)
+	Purple::Smiley smiley
+
+gboolean
+purple_smiley_set_shortcut(smiley, shortcut)
+	Purple::Smiley smiley
+	const char * shortcut
+
+void
+purple_smiley_set_data(smiley, data, data_len)
+	Purple::Smiley  smiley
+	guchar * data
+	size_t  data_len
+
+const char *
+purple_smiley_get_shortcut(smiley)
+	Purple::Smiley smiley
+
+const char *
+purple_smiley_get_checksum(smiley)
+	Purple::Smiley smiley
+
+Purple::StoredImage
+purple_smiley_get_stored_image(smiley)
+	Purple::Smiley smiley
+
+gconstpointer
+purple_smiley_get_data(smiley, len)
+	Purple::Smiley smiley
+	size_t * len
+
+const char *
+purple_smiley_get_extension(smiley)
+	Purple::Smiley smiley
+
+
+gchar_own *
+purple_smiley_get_full_path(smiley)
+	Purple::Smiley smiley
+
+
+MODULE = Purple::Smiley  PACKAGE = Purple::Smileys  PREFIX = purple_smileys_
+PROTOTYPES: ENABLE
+
+void
+purple_smileys_get_all()
+PREINIT:
+    GList *l;
+PPCODE:
+    for (l = purple_smileys_get_all(); l != NULL; l = g_list_delete_link(l, l)) {
+        XPUSHs(sv_2mortal(purple_perl_bless_object(l->data, "Purple::Smiley")));
+    }
+
+Purple::Smiley
+purple_smileys_find_by_shortcut(shortcut)
+	const char * shortcut
+
+Purple::Smiley
+purple_smileys_find_by_checksum(checksum)
+	const char * checksum
+
+const char *
+purple_smileys_get_storing_dir()
+
--- a/libpurple/plugins/perl/common/module.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/plugins/perl/common/module.h	Thu Jun 26 09:07:56 2008 +0000
@@ -51,6 +51,7 @@
 #include "savedstatuses.h"
 #include "server.h"
 #include "signals.h"
+#include "smiley.h"
 #include "sound.h"
 #include "sslconn.h"
 #include "status.h"
@@ -240,6 +241,9 @@
 typedef PurpleSavedStatus *		Purple__SavedStatus;
 typedef PurpleSavedStatusSub *		Purple__SavedStatus__Sub;
 
+/* smiley.h */
+typedef PurpleSmiley *		Purple__Smiley;
+
 /* sound.h */
 typedef PurpleSoundEventID		Purple__SoundEventID;
 typedef PurpleSoundUiOps *		Purple__Sound__UiOps;
--- a/libpurple/plugins/perl/common/typemap	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/plugins/perl/common/typemap	Thu Jun 26 09:07:56 2008 +0000
@@ -151,6 +151,7 @@
 
 Purple::Presence				T_PurpleObj
 Purple::PresenceContext			T_IV
+Purple::Smiley				T_PurpleObj
 Purple::Status				T_PurpleObj
 Purple::StatusAttr			T_PurpleObj
 Purple::StatusPrimitive			T_IV
--- a/libpurple/plugins/ssl/ssl-gnutls.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/plugins/ssl/ssl-gnutls.c	Thu Jun 26 09:07:56 2008 +0000
@@ -54,8 +54,8 @@
 	   If there are strange bugs, perhaps look here (yes, I am a
 	   hypocrite) */
 	gnutls_global_set_mem_functions(
-		(gnutls_alloc_function)   g_malloc0, /* malloc */
-		(gnutls_alloc_function)   g_malloc0, /* secure malloc */
+		(gnutls_alloc_function)   g_malloc, /* malloc */
+		(gnutls_alloc_function)   g_malloc, /* secure malloc */
 		NULL,      /* mem_is_secure */
 		(gnutls_realloc_function) g_realloc, /* realloc */
 		(gnutls_free_function)    g_free     /* free */
--- a/libpurple/privacy.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/privacy.c	Thu Jun 26 09:07:56 2008 +0000
@@ -241,6 +241,7 @@
 						gboolean restore)
 {
 	GSList *list;
+	PurplePrivacyType type = account->perm_deny;
 
 	switch (account->perm_deny) {
 		case PURPLE_PRIVACY_ALLOW_ALL:
@@ -254,10 +255,12 @@
 		case PURPLE_PRIVACY_DENY_ALL:
 			if (!restore) {
 				/* Empty the allow-list. */
+				const char *norm = purple_normalize(account, who);
 				for (list = account->permit; list != NULL;) {
-					char *who = list->data;
+					char *person = list->data;
 					list = list->next;
-					purple_privacy_permit_remove(account, who, local);
+					if (strcmp(norm, person) != 0)
+						purple_privacy_permit_remove(account, person, local);
 				}
 			}
 			purple_privacy_permit_add(account, who, local);
@@ -273,6 +276,10 @@
 		default:
 			g_return_if_reached();
 	}
+
+	/* Notify the server if the privacy setting was changed */
+	if (type != account->perm_deny && purple_account_is_connected(account))
+		serv_set_permit_deny(purple_account_get_connection(account));
 }
 
 /*
@@ -286,15 +293,18 @@
 					gboolean restore)
 {
 	GSList *list;
+	PurplePrivacyType type = account->perm_deny;
 
 	switch (account->perm_deny) {
 		case PURPLE_PRIVACY_ALLOW_ALL:
 			if (!restore) {
 				/* Empty the deny-list. */
+				const char *norm = purple_normalize(account, who);
 				for (list = account->deny; list != NULL; ) {
 					char *person = list->data;
 					list = list->next;
-					purple_privacy_deny_remove(account, person, local);
+					if (strcmp(norm, person) != 0)
+						purple_privacy_deny_remove(account, person, local);
 				}
 			}
 			purple_privacy_deny_add(account, who, local);
@@ -318,6 +328,10 @@
 		default:
 			g_return_if_reached();
 	}
+
+	/* Notify the server if the privacy setting was changed */
+	if (type != account->perm_deny && purple_account_is_connected(account))
+		serv_set_permit_deny(purple_account_get_connection(account));
 }
 
 gboolean
--- a/libpurple/protocols/bonjour/bonjour.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/bonjour/bonjour.c	Thu Jun 26 09:07:56 2008 +0000
@@ -384,7 +384,7 @@
 	}
 
 	if (bb->email != NULL)
-		purple_notify_user_info_add_pair(user_info, _("E-Mail"), bb->email);
+		purple_notify_user_info_add_pair(user_info, _("Email"), bb->email);
 
 	if (bb->AIM != NULL)
 		purple_notify_user_info_add_pair(user_info, _("AIM Account"), bb->AIM);
@@ -504,6 +504,7 @@
 	NULL,
 	NULL,
 	NULL,
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
@@ -718,7 +719,7 @@
 	option = purple_account_option_string_new(_("Last name"), "last", default_lastname);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
-	option = purple_account_option_string_new(_("E-mail"), "email", "");
+	option = purple_account_option_string_new(_("Email"), "email", "");
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 
 	option = purple_account_option_string_new(_("AIM Account"), "AIM", "");
--- a/libpurple/protocols/gg/gg.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/gg/gg.c	Thu Jun 26 09:07:56 2008 +0000
@@ -343,7 +343,8 @@
 {
 	PurpleConnection *gc = (PurpleConnection *)action->context;
 
-	purple_request_file(action, "Load buddylist from file...", NULL, FALSE,
+	purple_request_file(action, _("Load buddylist from file..."), NULL,
+			FALSE,
 			G_CALLBACK(ggp_callback_buddylist_load_ok), NULL,
 			purple_connection_get_account(gc), NULL, NULL,
 			gc);
@@ -475,7 +476,7 @@
 	purple_request_fields_add_group(fields, group);
 
 	field = purple_request_field_string_new("email",
-			_("E-mail"), "", FALSE);
+			_("Email"), "", FALSE);
 	purple_request_field_string_set_masked(field, FALSE);
 	purple_request_field_group_add_field(group, field);
 
@@ -718,7 +719,7 @@
 
 	purple_debug_info("gg", "Changing password\n");
 
-	/* XXX: this e-mail should be a pref... */
+	/* XXX: this email should be a pref... */
 	h = gg_change_passwd4(ggp_get_uin(account),
 			      "user@example.net", purple_account_get_password(account),
 			      p1, info->token->id, t, 0);
@@ -926,8 +927,10 @@
 /* ----- INTERNAL CALLBACKS --------------------------------------------- */
 /* ---------------------------------------------------------------------- */
 
-/* just a prototype */
+/* Prototypes */
 static void ggp_set_status(PurpleAccount *account, PurpleStatus *status);
+static int ggp_to_gg_status(PurpleStatus *status, char **msg);
+
 
 /**
  * Handle change of the status of the buddy.
@@ -1488,23 +1491,12 @@
 			break;
 		case GG_EVENT_CONN_SUCCESS:
 			{
-				PurpleAccount *account;
-				PurplePresence *presence;
-				PurpleStatus *status;
-
 				purple_debug_info("gg", "GG_EVENT_CONN_SUCCESS\n");
 				purple_input_remove(gc->inpa);
 				gc->inpa = purple_input_add(info->session->fd,
 							  PURPLE_INPUT_READ,
 							  ggp_callback_recv, gc);
 
-				/* gg_change_status(info->session, GG_STATUS_AVAIL); */
-
-				account = purple_connection_get_account(gc);
-				presence = purple_account_get_presence(account);
-				status = purple_presence_get_active_status(presence);
-
-				ggp_set_status(account, status);
 				purple_connection_set_state(gc, PURPLE_CONNECTED);
 				ggp_buddylist_send(gc);
 			}
@@ -1692,6 +1684,8 @@
 static void ggp_login(PurpleAccount *account)
 {
 	PurpleConnection *gc;
+	PurplePresence *presence;
+	PurpleStatus *status;
 	struct gg_login_params *glp;
 	GGPInfo *info;
 
@@ -1714,8 +1708,11 @@
 	glp->uin = ggp_get_uin(account);
 	glp->password = (char *)purple_account_get_password(account);
 
+	presence = purple_account_get_presence(account);
+	status = purple_presence_get_active_status(presence);
+
 	glp->async = 1;
-	glp->status = GG_STATUS_AVAIL;
+	glp->status = ggp_to_gg_status(status, &glp->status_descr);
 	glp->tls = 0;
 
 	info->session = gg_login(glp);
@@ -1826,22 +1823,15 @@
 /* }}} */
 
 /* static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) {{{ */
-static void ggp_set_status(PurpleAccount *account, PurpleStatus *status)
+static int ggp_to_gg_status(PurpleStatus *status, char **msg)
 {
-	PurpleConnection *gc;
-	GGPInfo *info;
-	const char *status_id, *msg;
+	const char *status_id = purple_status_get_id(status);
 	int new_status, new_status_descr;
+	const char *new_msg;
 
-	if (!purple_status_is_active(status))
-		return;
+	g_return_val_if_fail(msg == NULL, 0);
 
-	gc = purple_account_get_connection(account);
-	info = gc->proto_data;
-
-	status_id = purple_status_get_id(status);
-
-	purple_debug_info("gg", "ggp_set_status: Requested status = %s\n",
+	purple_debug_info("gg", "ggp_to_gg_status: Requested status = %s\n",
 			status_id);
 
 	if (strcmp(status_id, "available") == 0) {
@@ -1860,22 +1850,45 @@
 		new_status = GG_STATUS_AVAIL;
 		new_status_descr = GG_STATUS_AVAIL_DESCR;
 		purple_debug_info("gg",
-			"ggp_set_status: uknown status requested (status_id=%s)\n",
+			"ggp_set_status: unknown status requested (status_id=%s)\n",
 			status_id);
 	}
 
-	msg = purple_status_get_attr_string(status, "message");
+	new_msg = purple_status_get_attr_string(status, "message");
+
+	if(new_msg) {
+		char *tmp = purple_markup_strip_html(new_msg);
+		*msg = charset_convert(tmp, "UTF-8", "CP1250");
+		g_free(tmp);
+
+		return new_status_descr;
+	} else {
+		*msg = NULL;
+		return new_status;
+	}
+}
+/* }}} */
 
-	if (msg == NULL) {
+/* static void ggp_set_status(PurpleAccount *account, PurpleStatus *status) {{{ */
+static void ggp_set_status(PurpleAccount *account, PurpleStatus *status)
+{
+	PurpleConnection *gc;
+	GGPInfo *info;
+	int new_status;
+	char *new_msg = NULL;
+
+	if (!purple_status_is_active(status))
+		return;
+
+	gc = purple_account_get_connection(account);
+	info = gc->proto_data;
+
+	new_status = ggp_to_gg_status(status, &new_msg);
+
+	if (new_msg == NULL) {
 		gg_change_status(info->session, new_status);
 	} else {
-		gchar *tmp, *new_msg;
-
-		tmp = charset_convert(msg, "UTF-8", "CP1250");
-		new_msg = purple_markup_strip_html(tmp);
-		g_free(tmp);
-
-		gg_change_status_descr(info->session, new_status_descr, new_msg);
+		gg_change_status_descr(info->session, new_status, new_msg);
 		g_free(new_msg);
 	}
 
@@ -1998,7 +2011,7 @@
 
 	serv_got_chat_in(gc, id,
 			 purple_account_get_username(purple_connection_get_account(gc)),
-			 0, message, time(NULL));
+			 flags, message, time(NULL));
 
 	return 0;
 }
@@ -2152,6 +2165,7 @@
 	NULL,
 	NULL,
 	NULL,
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 /* }}} */
--- a/libpurple/protocols/gg/search.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/gg/search.h	Thu Jun 26 09:07:56 2008 +0000
@@ -130,7 +130,7 @@
  * @param gc   PurpleConnection.
  * @param form Filled in GGPSearchForm.
  *
- * @return Sequence number of a search or 0 if an error occured.
+ * @return Sequence number of a search or 0 if an error occurred.
  */
 guint32
 ggp_search_start(PurpleConnection *gc, GGPSearchForm *form);
--- a/libpurple/protocols/irc/irc.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/irc/irc.c	Thu Jun 26 09:07:56 2008 +0000
@@ -737,7 +737,7 @@
 
 	irc_cmd_privmsg(irc, "msg", NULL, args);
 
-	serv_got_chat_in(gc, id, purple_connection_get_display_name(gc), 0, what, time(NULL));
+	serv_got_chat_in(gc, id, purple_connection_get_display_name(gc), flags, what, time(NULL));
 	g_free(tmp);
 	return 0;
 }
@@ -909,6 +909,7 @@
 	NULL,
 	NULL,
 	NULL,
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/irc/msgs.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/irc/msgs.c	Thu Jun 26 09:07:56 2008 +0000
@@ -215,7 +215,9 @@
 			/* This is an extended syntax, not in RFC 1459 */
 			int t1 = atoi(args[4]);
 			time_t t2 = time(NULL);
-			msg = g_strdup_printf(_("Ban on %s by %s, set %ld seconds ago"),
+			msg = g_strdup_printf(ngettext("Ban on %s by %s, set %ld second ago",
+						       "Ban on %s by %s, set %ld seconds ago",
+						       t2 - t1),
 			                      args[2], args[3], t2 - t1);
 		} else {
 			msg = g_strdup_printf(_("Ban on %s"), args[2]);
--- a/libpurple/protocols/irc/parse.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/irc/parse.c	Thu Jun 26 09:07:56 2008 +0000
@@ -232,7 +232,7 @@
 
 	if (encodings[0] == NULL || !g_ascii_strcasecmp("UTF-8", encodings[0])) {
 		g_strfreev(encodings);
-		return g_strdup(string);
+		return NULL;
 	}
 
 	utf8 = g_convert(string, strlen(string), encodings[0], "UTF-8", NULL, NULL, &err);
@@ -597,7 +597,7 @@
 		case 'n':
 		case 'c':
 			tmp = irc_send_convert(irc, tok);
-			g_string_append(string, tmp);
+			g_string_append(string, tmp ? tmp : tok);
 			g_free(tmp);
 			break;
 		default:
--- a/libpurple/protocols/jabber/auth.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/auth.c	Thu Jun 26 09:07:56 2008 +0000
@@ -499,6 +499,15 @@
 	{
 		char *mech_name = xmlnode_get_data(mechnode);
 #ifdef HAVE_CYRUS_SASL
+		/* Don't include Google Talk's X-GOOGLE-TOKEN mechanism, as we will not
+		 * support it and including it gives a false fall-back to other mechs offerred,
+		 * leading to incorrect error handling.
+		 */
+		if (mech_name && !strcmp(mech_name, "X-GOOGLE-TOKEN")) {
+			g_free(mech_name);
+			continue;
+		}
+
 		g_string_append(js->sasl_mechs, mech_name);
 		g_string_append_c(js->sasl_mechs, ' ');
 #else
@@ -580,75 +589,6 @@
 	}
 }
 
-/*!
- * @brief Given the server challenge (message) and the key (password), calculate the HMAC-MD5 digest
- *
- * This is the crammd5 response.  Inspired by cyrus-sasl's _sasl_hmac_md5()
- */
-static void
-auth_hmac_md5(const char *challenge, size_t challenge_len, const char *key, size_t key_len, guchar *digest)
-{
-	PurpleCipher *cipher;
-	PurpleCipherContext *context;
-	int i;
-	/* inner padding - key XORd with ipad */
-	unsigned char k_ipad[65];    
-	/* outer padding - key XORd with opad */
-	unsigned char k_opad[65];    
-
-	cipher = purple_ciphers_find_cipher("md5");
-
-	/* if key is longer than 64 bytes reset it to key=MD5(key) */
-	if (strlen(key) > 64) {
-		guchar keydigest[16];
-
-		context = purple_cipher_context_new(cipher, NULL);
-		purple_cipher_context_append(context, (const guchar *)key, strlen(key));
-		purple_cipher_context_digest(context, 16, keydigest, NULL);
-		purple_cipher_context_destroy(context);
-
-		key = (char *)keydigest;
-		key_len = 16;
-	} 
-
-	/*
-	 * the HMAC_MD5 transform looks like:
-	 *
-	 * MD5(K XOR opad, MD5(K XOR ipad, text))
-	 *
-	 * where K is an n byte key
-	 * ipad is the byte 0x36 repeated 64 times
-	 * opad is the byte 0x5c repeated 64 times
-	 * and text is the data being protected
-	 */
-
-	/* start out by storing key in pads */
-	memset(k_ipad, '\0', sizeof k_ipad);
-	memset(k_opad, '\0', sizeof k_opad);
-	memcpy(k_ipad, (void *)key, key_len);
-	memcpy(k_opad, (void *)key, key_len);
-
-	/* XOR key with ipad and opad values */
-	for (i=0; i<64; i++) {
-		k_ipad[i] ^= 0x36;
-		k_opad[i] ^= 0x5c;
-	}
-
-	/* perform inner MD5 */
-	context = purple_cipher_context_new(cipher, NULL);
-	purple_cipher_context_append(context, k_ipad, 64); /* start with inner pad */
-	purple_cipher_context_append(context, (const guchar *)challenge, challenge_len); /* then text of datagram */
-	purple_cipher_context_digest(context, 16, digest, NULL); /* finish up 1st pass */
-	purple_cipher_context_destroy(context);
-
-	/* perform outer MD5 */	
-	context = purple_cipher_context_new(cipher, NULL);
-	purple_cipher_context_append(context, k_opad, 64); /* start with outer pad */
-	purple_cipher_context_append(context, digest, 16); /* then results of 1st hash */
-	purple_cipher_context_digest(context, 16, digest, NULL); /* finish up 2nd pass */
-	purple_cipher_context_destroy(context);
-}
-
 static void auth_old_cb(JabberStream *js, xmlnode *packet, gpointer data)
 {
 	JabberIq *iq;
@@ -694,14 +634,19 @@
 			jabber_iq_set_callback(iq, auth_old_result_cb, NULL);
 			jabber_iq_send(iq);
 
-		} else if(js->stream_id && xmlnode_get_child(query, "crammd5")) {
+		} else if(js->stream_id && (x = xmlnode_get_child(query, "crammd5"))) {
 			const char *challenge;
-			guchar digest[16];
-			char h[33], *p;
-			int i;
+			gchar digest[33];
+			PurpleCipherContext *hmac;
 
-			challenge = xmlnode_get_attrib(xmlnode_get_child(query, "crammd5"), "challenge");
-			auth_hmac_md5(challenge, strlen(challenge), pw, strlen(pw), digest);
+			/* Calculate the MHAC-MD5 digest */
+			challenge = xmlnode_get_attrib(x, "challenge");
+			hmac = purple_cipher_context_new_by_name("hmac", NULL);
+			purple_cipher_context_set_option(hmac, "hash", "md5");
+			purple_cipher_context_set_key(hmac, (guchar *)pw);
+			purple_cipher_context_append(hmac, (guchar *)challenge, strlen(challenge));
+			purple_cipher_context_digest_to_str(hmac, 33, digest, NULL);
+			purple_cipher_context_destroy(hmac);
 
 			/* Create the response query */
 			iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:auth");
@@ -714,11 +659,7 @@
 
 			x = xmlnode_new_child(query, "crammd5");
 
-			/* Translate the digest to a hexadecimal notation */
-			p = h;
-			for(i=0; i<16; i++, p+=2)
-				snprintf(p, 3, "%02x", digest[i]);
-			xmlnode_insert_data(x, h, -1);
+			xmlnode_insert_data(x, digest, 32);
 
 			jabber_iq_set_callback(iq, auth_old_result_cb, NULL);
 			jabber_iq_send(iq);
--- a/libpurple/protocols/jabber/buddy.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/buddy.c	Thu Jun 26 09:07:56 2008 +0000
@@ -48,8 +48,8 @@
 	GSList *ids;
 	GHashTable *resources;
 	int timeout_handle;
-	char *vcard_text;
 	GSList *vcard_imgids;
+	PurpleNotifyUserInfo *user_info;
 } JabberBuddyInfo;
 
 void jabber_buddy_free(JabberBuddy *jb)
@@ -315,7 +315,7 @@
 	{N_("Postal Code"),        NULL, TRUE, TRUE, "PCODE",     "ADR", NULL},
 	{N_("Country"),            NULL, TRUE, TRUE, "CTRY",      "ADR", NULL},
 	{N_("Telephone"),          NULL, TRUE, TRUE, "NUMBER",    "TEL",  NULL},
-	{N_("E-Mail"),             NULL, TRUE, TRUE, "USERID",    "EMAIL",  "<A HREF=\"mailto:%s\">%s</A>"},
+	{N_("Email"),             NULL, TRUE, TRUE, "USERID",    "EMAIL",  "<A HREF=\"mailto:%s\">%s</A>"},
 	{N_("Organization Name"),  NULL, TRUE, TRUE, "ORGNAME",   "ORG", NULL},
 	{N_("Organization Unit"),  NULL, TRUE, TRUE, "ORGUNIT",   "ORG", NULL},
 	{N_("Title"),              NULL, TRUE, TRUE, "TITLE",     NULL,  NULL},
@@ -777,7 +777,7 @@
 
 	g_free(jbi->jid);
 	g_hash_table_destroy(jbi->resources);
-	g_free(jbi->vcard_text);
+	purple_notify_user_info_destroy(jbi->user_info);
 	g_free(jbi);
 }
 
@@ -793,42 +793,51 @@
 	if(jbi->ids)
 		return;
 
-	user_info = purple_notify_user_info_new();
+	user_info = jbi->user_info;
 	resource_name = jabber_get_resource(jbi->jid);
 
+	/* If we have one or more pairs from the vcard, put a section break above it */
+	if (purple_notify_user_info_get_entries(user_info))
+		purple_notify_user_info_prepend_section_break(user_info);
+
+	/* Prepend the primary buddy info to user_info so that it goes before the vcard. */
 	if(resource_name) {
 		jbr = jabber_buddy_find_resource(jbi->jb, resource_name);
 		jbir = g_hash_table_lookup(jbi->resources, resource_name);
-		if(jbr) {
-			char *purdy = NULL;
-			if(jbr->status)
-				purdy = purple_strdup_withhtml(jbr->status);
-			tmp = g_strdup_printf("%s%s%s", jabber_buddy_state_get_name(jbr->state),
-							(purdy ? ": " : ""),
-							(purdy ? purdy : ""));
-			purple_notify_user_info_add_pair(user_info, _("Status"), tmp);
-			g_free(tmp);
-			g_free(purdy);
-		} else {
-			purple_notify_user_info_add_pair(user_info, _("Status"), _("Unknown"));
-		}
-		if(jbir) {
-			if(jbir->idle_seconds > 0) {
-				char *idle = purple_str_seconds_to_string(jbir->idle_seconds);
-				purple_notify_user_info_add_pair(user_info, _("Idle"), idle);
-				g_free(idle);
-			}
-		}
 		if(jbr && jbr->client.name) {
 			tmp = g_strdup_printf("%s%s%s", jbr->client.name,
 								  (jbr->client.version ? " " : ""),
 								  (jbr->client.version ? jbr->client.version : ""));
 			purple_notify_user_info_add_pair(user_info, _("Client"), tmp);
 			g_free(tmp);
-
+			
 			if(jbr->client.os) {
-				purple_notify_user_info_add_pair(user_info, _("Operating System"), jbr->client.os);
+				purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os);
+			}
+		}		
+		if(jbir) {
+			if(jbir->idle_seconds > 0) {
+				char *idle = purple_str_seconds_to_string(jbir->idle_seconds);
+				purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle);
+				g_free(idle);
 			}
+		}		
+		if(jbr) {
+			char *purdy = NULL;
+			const char *status_name = jabber_buddy_state_get_name(jbr->state);
+			if(jbr->status)
+				purdy = purple_strdup_withhtml(jbr->status);
+			if(status_name && purdy && !strcmp(status_name, purdy))
+				status_name = NULL;
+
+			tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""),
+							((status_name && purdy) ? ": " : ""),
+							(purdy ? purdy : ""));
+			purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp);
+			g_free(tmp);
+			g_free(purdy);
+		} else {
+			purple_notify_user_info_prepend_pair(user_info, _("Status"), _("Unknown"));
 		}
 #if 0 
 		/* #if 0 this for now; I think this would be far more useful if we limited this to a particular set of features
@@ -949,52 +958,62 @@
 			}
 
 			if(strlen(tmp->str) > 0)
-				purple_notify_user_info_add_pair(user_info, _("Capabilities"), tmp->str);
+				purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str);
 			
 			g_string_free(tmp, TRUE);
 		}
 #endif
 	} else {
+		gboolean multiple_resources = jbi->jb->resources && (g_list_length(jbi->jb->resources) > 1);
+
 		for(resources = jbi->jb->resources; resources; resources = resources->next) {
 			char *purdy = NULL;
+			const char *status_name = NULL;
+
 			jbr = resources->data;
-			if(jbr->status)
-				purdy = purple_strdup_withhtml(jbr->status);
-			if(jbr->name)
-				purple_notify_user_info_add_pair(user_info, _("Resource"), jbr->name);
-			tmp = g_strdup_printf("%d", jbr->priority);
-			purple_notify_user_info_add_pair(user_info, _("Priority"), tmp);
-			g_free(tmp);
 
-			tmp = g_strdup_printf("%s%s%s", jabber_buddy_state_get_name(jbr->state),
-								  (purdy ? ": " : ""),
-								  (purdy ? purdy : ""));
-			purple_notify_user_info_add_pair(user_info, _("Status"), tmp);
-			g_free(tmp);
-			g_free(purdy);
+			if(jbr->client.name) {
+				tmp = g_strdup_printf("%s%s%s", jbr->client.name,
+									  (jbr->client.version ? " " : ""),
+									  (jbr->client.version ? jbr->client.version : ""));
+				purple_notify_user_info_prepend_pair(user_info,
+												 _("Client"), tmp);
+				g_free(tmp);
+				
+				if(jbr->client.os) {
+					purple_notify_user_info_prepend_pair(user_info, _("Operating System"), jbr->client.os);
+				}
+			}
 
-			if(jbr->name)
-				jbir = g_hash_table_lookup(jbi->resources, jbr->name);
-
-			if(jbir) {
+			if(jbr->name && (jbir = g_hash_table_lookup(jbi->resources, jbr->name))) {
 				if(jbir->idle_seconds > 0) {
 					char *idle = purple_str_seconds_to_string(jbir->idle_seconds);
-					purple_notify_user_info_add_pair(user_info, _("Idle"), idle);
+					purple_notify_user_info_prepend_pair(user_info, _("Idle"), idle);
 					g_free(idle);
 				}
 			}
-			if(jbr && jbr->client.name) {
-				tmp = g_strdup_printf("%s%s%s", jbr->client.name,
-									  (jbr->client.version ? " " : ""),
-									  (jbr->client.version ? jbr->client.version : ""));
-				purple_notify_user_info_add_pair(user_info,
-											   _("Client"), tmp);
+
+			status_name = jabber_buddy_state_get_name(jbr->state);
+			if(jbr->status)
+				purdy = purple_strdup_withhtml(jbr->status);
+			if(status_name && purdy && !strcmp(status_name, purdy))
+				status_name = NULL;
+			
+			tmp = g_strdup_printf("%s%s%s", (status_name ? status_name : ""),
+								  ((status_name && purdy) ? ": " : ""),
+								  (purdy ? purdy : ""));
+			purple_notify_user_info_prepend_pair(user_info, _("Status"), tmp);
+			g_free(tmp);
+			g_free(purdy);
+			
+			if(multiple_resources) {
+				tmp = g_strdup_printf("%d", jbr->priority);
+				purple_notify_user_info_prepend_pair(user_info, _("Priority"), tmp);
 				g_free(tmp);
+			}
 
-				if(jbr->client.os) {
-					purple_notify_user_info_add_pair(user_info, _("Operating System"), jbr->client.os);
-				}
-			}
+			if(jbr->name)
+				purple_notify_user_info_prepend_pair(user_info, _("Resource"), jbr->name);
 #if 0
 			if(jbr && jbr->caps) {
 				GString *tmp = g_string_new("");
@@ -1109,7 +1128,7 @@
 						g_string_append_printf(tmp, "%s\n", feature);
 				}
 				if(strlen(tmp->str) > 0)
-					purple_notify_user_info_add_pair(user_info, _("Capabilities"), tmp->str);
+					purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str);
 				
 				g_string_free(tmp, TRUE);
 			}
@@ -1119,14 +1138,7 @@
 
 	g_free(resource_name);
 
-	if (jbi->vcard_text != NULL) {
-		purple_notify_user_info_add_section_break(user_info);
-		/* Should this have some sort of label? */
-		purple_notify_user_info_add_pair(user_info, NULL, jbi->vcard_text);
-	}
-
 	purple_notify_userinfo(jbi->js->gc, jbi->jid, user_info, NULL, NULL);
-	purple_notify_user_info_destroy(user_info);
 
 	while(jbi->vcard_imgids) {
 		purple_imgstore_unref_by_id(GPOINTER_TO_INT(jbi->vcard_imgids->data));
@@ -1193,27 +1205,16 @@
 	jabber_iq_send(iq);
 }
 
-static void
-jabber_string_escape_and_append(GString *string, const char *name, const char *value, gboolean indent)
-{
-	gchar *escaped;
-
-	escaped = g_markup_escape_text(value, -1);
-	g_string_append_printf(string, "%s<b>%s:</b> %s<br/>",
-			indent ? "&nbsp;&nbsp;" : "", name, escaped);
-	g_free(escaped);
-}
-
 static void jabber_vcard_parse(JabberStream *js, xmlnode *packet, gpointer data)
 {
 	const char *id, *from;
-	GString *info_text;
 	char *bare_jid;
 	char *text;
 	char *serverside_alias = NULL;
 	xmlnode *vcard;
 	PurpleBuddy *b;
 	JabberBuddyInfo *jbi = data;
+	PurpleNotifyUserInfo *user_info;
 
 	from = xmlnode_get_attrib(packet, "from");
 	id = xmlnode_get_attrib(packet, "id");
@@ -1231,12 +1232,11 @@
 
 	/* XXX: handle the error case */
 
+	user_info = jbi->user_info;
 	bare_jid = jabber_get_bare_jid(from);
 
 	b = purple_find_buddy(js->gc->account, bare_jid);
 
-	info_text = g_string_new("");
-
 	if((vcard = xmlnode_get_child(packet, "vCard")) ||
 			(vcard = xmlnode_get_child_with_namespace(packet, "query", "vcard-temp"))) {
 		xmlnode *child;
@@ -1253,8 +1253,7 @@
 				if (!serverside_alias)
 					serverside_alias = g_strdup(text);
 
-				jabber_string_escape_and_append(info_text,
-						_("Full Name"), text, FALSE);
+				purple_notify_user_info_add_pair(user_info, _("Full Name"), text);
 			} else if(!strcmp(child->name, "N")) {
 				for(child2 = child->child; child2; child2 = child2->next)
 				{
@@ -1265,14 +1264,11 @@
 
 					text2 = xmlnode_get_data(child2);
 					if(text2 && !strcmp(child2->name, "FAMILY")) {
-						jabber_string_escape_and_append(info_text,
-								_("Family Name"), text2, FALSE);
+						purple_notify_user_info_add_pair(user_info, _("Family Name"), text2);
 					} else if(text2 && !strcmp(child2->name, "GIVEN")) {
-						jabber_string_escape_and_append(info_text,
-								_("Given Name"), text2, FALSE);
+						purple_notify_user_info_add_pair(user_info, _("Given Name"), text2);
 					} else if(text2 && !strcmp(child2->name, "MIDDLE")) {
-						jabber_string_escape_and_append(info_text,
-								_("Middle Name"), text2, FALSE);
+						purple_notify_user_info_add_pair(user_info, _("Middle Name"), text2);
 					}
 					g_free(text2);
 				}
@@ -1281,11 +1277,9 @@
 				g_free(serverside_alias);
 				serverside_alias = g_strdup(text);
 
-				jabber_string_escape_and_append(info_text,
-						_("Nickname"), text, FALSE);
+				purple_notify_user_info_add_pair(user_info, _("Nickname"), text);
 			} else if(text && !strcmp(child->name, "BDAY")) {
-				jabber_string_escape_and_append(info_text,
-						_("Birthday"), text, FALSE);
+				purple_notify_user_info_add_pair(user_info, _("Birthday"), text);
 			} else if(!strcmp(child->name, "ADR")) {
 				gboolean address_line_added = FALSE;
 
@@ -1304,51 +1298,45 @@
 					 * elements are empty. */
 					if (!address_line_added)
 					{
-						g_string_append_printf(info_text, "<b>%s:</b><br/>",
-								_("Address"));
+						purple_notify_user_info_add_section_header(user_info, _("Address"));
 						address_line_added = TRUE;
 					}
 
 					if(!strcmp(child2->name, "POBOX")) {
-						jabber_string_escape_and_append(info_text,
-								_("P.O. Box"), text2, TRUE);
+						purple_notify_user_info_add_pair(user_info, _("P.O. Box"), text2);
 					} else if(!strcmp(child2->name, "EXTADR")) {
-						jabber_string_escape_and_append(info_text,
-								_("Extended Address"), text2, TRUE);
+						purple_notify_user_info_add_pair(user_info, _("Extended Address"), text2);
 					} else if(!strcmp(child2->name, "STREET")) {
-						jabber_string_escape_and_append(info_text,
-								_("Street Address"), text2, TRUE);
+						purple_notify_user_info_add_pair(user_info, _("Street Address"), text2);
 					} else if(!strcmp(child2->name, "LOCALITY")) {
-						jabber_string_escape_and_append(info_text,
-								_("Locality"), text2, TRUE);
+						purple_notify_user_info_add_pair(user_info, _("Locality"), text2);
 					} else if(!strcmp(child2->name, "REGION")) {
-						jabber_string_escape_and_append(info_text,
-								_("Region"), text2, TRUE);
+						purple_notify_user_info_add_pair(user_info, _("Region"), text2);
 					} else if(!strcmp(child2->name, "PCODE")) {
-						jabber_string_escape_and_append(info_text,
-								_("Postal Code"), text2, TRUE);
+						purple_notify_user_info_add_pair(user_info, _("Postal Code"), text2);
 					} else if(!strcmp(child2->name, "CTRY")
 								|| !strcmp(child2->name, "COUNTRY")) {
-						jabber_string_escape_and_append(info_text,
-								_("Country"), text2, TRUE);
+						purple_notify_user_info_add_pair(user_info, _("Country"), text2);
 					}
 					g_free(text2);
 				}
+				
+				if (address_line_added)
+					purple_notify_user_info_add_section_break(user_info);
+
 			} else if(!strcmp(child->name, "TEL")) {
 				char *number;
 				if((child2 = xmlnode_get_child(child, "NUMBER"))) {
 					/* show what kind of number it is */
 					number = xmlnode_get_data(child2);
 					if(number) {
-						jabber_string_escape_and_append(info_text,
-								_("Telephone"), number, FALSE);
+						purple_notify_user_info_add_pair(user_info, _("Telephone"), number);
 						g_free(number);
 					}
 				} else if((number = xmlnode_get_data(child))) {
 					/* lots of clients (including purple) do this, but it's
 					 * out of spec */
-					jabber_string_escape_and_append(info_text,
-							_("Telephone"), number, FALSE);
+					purple_notify_user_info_add_pair(user_info, _("Telephone"), number);
 					g_free(number);
 				}
 			} else if(!strcmp(child->name, "EMAIL")) {
@@ -1357,20 +1345,25 @@
 					/* show what kind of email it is */
 					userid = xmlnode_get_data(child2);
 					if(userid) {
+						char *mailto;
 						escaped = g_markup_escape_text(userid, -1);
-						g_string_append_printf(info_text,
-								"<b>%s:</b> <a href=\"mailto:%s\">%s</a><br/>",
-								_("E-Mail"), escaped, escaped);
+						mailto = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", escaped, escaped);
+						purple_notify_user_info_add_pair(user_info, _("Email"), mailto);
+
+						g_free(mailto);
 						g_free(escaped);
 						g_free(userid);
 					}
 				} else if((userid = xmlnode_get_data(child))) {
 					/* lots of clients (including purple) do this, but it's
 					 * out of spec */
+					char *mailto;
+
 					escaped = g_markup_escape_text(userid, -1);
-					g_string_append_printf(info_text,
-							"<b>%s:</b> <a href=\"mailto:%s\">%s</a><br/>",
-							_("E-Mail"), escaped, escaped);
+					mailto = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", escaped, escaped);
+					purple_notify_user_info_add_pair(user_info, _("Email"), mailto);
+					
+					g_free(mailto);					
 					g_free(escaped);
 					g_free(userid);
 				}
@@ -1384,23 +1377,18 @@
 
 					text2 = xmlnode_get_data(child2);
 					if(text2 && !strcmp(child2->name, "ORGNAME")) {
-						jabber_string_escape_and_append(info_text,
-								_("Organization Name"), text2, FALSE);
+						purple_notify_user_info_add_pair(user_info, _("Organization Name"), text2);
 					} else if(text2 && !strcmp(child2->name, "ORGUNIT")) {
-						jabber_string_escape_and_append(info_text,
-								_("Organization Unit"), text2, FALSE);
+						purple_notify_user_info_add_pair(user_info, _("Organization Unit"), text2);
 					}
 					g_free(text2);
 				}
 			} else if(text && !strcmp(child->name, "TITLE")) {
-				jabber_string_escape_and_append(info_text,
-						_("Title"), text, FALSE);
+				purple_notify_user_info_add_pair(user_info, _("Title"), text);
 			} else if(text && !strcmp(child->name, "ROLE")) {
-				jabber_string_escape_and_append(info_text,
-						_("Role"), text, FALSE);
+				purple_notify_user_info_add_pair(user_info, _("Role"), text);
 			} else if(text && !strcmp(child->name, "DESC")) {
-				jabber_string_escape_and_append(info_text,
-						_("Description"), text, FALSE);
+				purple_notify_user_info_add_pair(user_info, _("Description"), text);
 			} else if(!strcmp(child->name, "PHOTO") ||
 					!strcmp(child->name, "LOGO")) {
 				char *bintext = NULL;
@@ -1418,12 +1406,13 @@
 
 					data = purple_base64_decode(bintext, &size);
 					if (data) {
+						char *img_text;
+
 						jbi->vcard_imgids = g_slist_prepend(jbi->vcard_imgids, GINT_TO_POINTER(purple_imgstore_add_with_id(g_memdup(data, size), size, "logo.png")));
-						g_string_append_printf(info_text,
-								"<b>%s:</b> <img id='%d'><br/>",
-								photo ? _("Photo") : _("Logo"),
-								GPOINTER_TO_INT(jbi->vcard_imgids->data));
-	
+						img_text = g_strdup_printf("<img id='%d'>", GPOINTER_TO_INT(jbi->vcard_imgids->data));
+
+						purple_notify_user_info_add_pair(user_info, (photo ? _("Photo") : _("Logo")), img_text);
+
 						purple_cipher_digest_region("sha1", (guchar *)data, size,
 								sizeof(hashval), hashval, NULL);
 						p = hash;
@@ -1433,6 +1422,7 @@
 						purple_buddy_icons_set_for_user(js->gc->account, bare_jid,
 								data, size, hash);
 						g_free(bintext);
+						g_free(img_text);
 					}
 				}
 			}
@@ -1450,8 +1440,6 @@
 		g_free(serverside_alias);
 	}
 
-	jbi->vcard_text = purple_strdup_withhtml(info_text->str);
-	g_string_free(info_text, TRUE);
 	g_free(bare_jid);
 
 	jabber_buddy_info_show_if_ready(jbi);
@@ -1735,6 +1723,7 @@
 	jbi->js = js;
 	jbi->jb = jb;
 	jbi->resources = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, jabber_buddy_info_resource_free);
+	jbi->user_info = purple_notify_user_info_new();
 
 	iq = jabber_iq_new(js, JABBER_IQ_GET);
 
@@ -1804,22 +1793,6 @@
 	}
 }
 
-void jabber_buddy_get_info_chat(PurpleConnection *gc, int id,
-		const char *resource)
-{
-	JabberStream *js = gc->proto_data;
-	JabberChat *chat = jabber_chat_find_by_id(js, id);
-	char *full_jid;
-
-	if(!chat)
-		return;
-
-	full_jid = g_strdup_printf("%s@%s/%s", chat->room, chat->server, resource);
-	jabber_buddy_get_info_for_jid(js, full_jid);
-	g_free(full_jid);
-}
-
-
 static void jabber_buddy_set_invisibility(JabberStream *js, const char *who,
 		gboolean invisible)
 {
@@ -2264,7 +2237,7 @@
 		purple_notify_searchresults_column_add(results, column);
 		column = purple_notify_searchresults_column_new(_("Nickname"));
 		purple_notify_searchresults_column_add(results, column);
-		column = purple_notify_searchresults_column_new(_("E-Mail"));
+		column = purple_notify_searchresults_column_new(_("Email"));
 		purple_notify_searchresults_column_add(results, column);
 
 		for(item = xmlnode_get_child(query, "item"); item; item = xmlnode_get_next_twin(item)) {
@@ -2459,7 +2432,7 @@
 			purple_request_field_group_add_field(group, field);
 		}
 		if(xmlnode_get_child(query, "email")) {
-			field = purple_request_field_string_new("email", _("E-Mail Address"),
+			field = purple_request_field_string_new("email", _("Email Address"),
 					NULL, FALSE);
 			purple_request_field_group_add_field(group, field);
 		}
--- a/libpurple/protocols/jabber/buddy.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/buddy.h	Thu Jun 26 09:07:56 2008 +0000
@@ -96,8 +96,6 @@
 void jabber_buddy_remove_resource(JabberBuddy *jb, const char *resource);
 const char *jabber_buddy_get_status_msg(JabberBuddy *jb);
 void jabber_buddy_get_info(PurpleConnection *gc, const char *who);
-void jabber_buddy_get_info_chat(PurpleConnection *gc, int id,
-		const char *resource);
 
 GList *jabber_blist_node_menu(PurpleBlistNode *node);
 
--- a/libpurple/protocols/jabber/chat.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/chat.c	Thu Jun 26 09:07:56 2008 +0000
@@ -197,6 +197,12 @@
 	return chat_name;
 }
 
+static void insert_in_hash_table(gpointer key, gpointer value, gpointer user_data)
+{
+	GHashTable *hash_table = (GHashTable *)user_data;
+	g_hash_table_insert(hash_table, g_strdup(key), g_strdup(value));
+}
+
 void jabber_chat_join(PurpleConnection *gc, GHashTable *data)
 {
 	JabberChat *chat;
@@ -225,18 +231,21 @@
 		char *buf = g_strdup_printf(_("%s is not a valid room name"), room);
 		purple_notify_error(gc, _("Invalid Room Name"), _("Invalid Room Name"),
 				buf);
+		purple_serv_got_join_chat_failed(gc, data);
 		g_free(buf);
 		return;
 	} else if(!jabber_nameprep_validate(server)) {
 		char *buf = g_strdup_printf(_("%s is not a valid server name"), server);
 		purple_notify_error(gc, _("Invalid Server Name"),
 				_("Invalid Server Name"), buf);
+		purple_serv_got_join_chat_failed(gc, data);
 		g_free(buf);
 		return;
 	} else if(!jabber_resourceprep_validate(handle)) {
 		char *buf = g_strdup_printf(_("%s is not a valid room handle"), handle);
 		purple_notify_error(gc, _("Invalid Room Handle"),
 				_("Invalid Room Handle"), buf);
+		purple_serv_got_join_chat_failed(gc, data);
 		g_free(buf);
 		return;
 	}
@@ -255,6 +264,11 @@
 	chat->server = g_strdup(server);
 	chat->handle = g_strdup(handle);
 
+	/* Copy the data hash table to chat->components */
+	chat->components = g_hash_table_new_full(g_str_hash, g_str_equal,
+			g_free, g_free);
+	g_hash_table_foreach(data, insert_in_hash_table, chat->components);
+
 	chat->members = g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
 			(GDestroyNotify)jabber_chat_member_free);
 
@@ -294,7 +308,7 @@
 
 	jabber_chat_part(chat, NULL);
 
-	chat->conv = NULL;
+	chat->left = TRUE;
 }
 
 void jabber_chat_destroy(JabberChat *chat)
@@ -315,6 +329,7 @@
 	g_free(chat->server);
 	g_free(chat->handle);
 	g_hash_table_destroy(chat->members);
+	g_hash_table_destroy(chat->components);
 	g_free(chat);
 }
 
@@ -327,12 +342,18 @@
 {
 	JabberStream *js = gc->proto_data;
 	JabberChat *chat;
+	JabberChatMember *jcm;
 
 	chat = jabber_chat_find_by_id(js, id);
 
 	if(!chat)
 		return NULL;
 
+	jcm = g_hash_table_lookup(chat->members, who);
+	if (jcm != NULL && jcm->jid)
+		return g_strdup(jcm->jid);
+	
+
 	return g_strdup_printf("%s@%s/%s", chat->room, chat->server, who);
 }
 
--- a/libpurple/protocols/jabber/chat.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/chat.h	Thu Jun 26 09:07:56 2008 +0000
@@ -41,6 +41,7 @@
 	char *room;
 	char *server;
 	char *handle;
+	GHashTable *components;
 	int id;
 	PurpleConversation *conv;
 	gboolean muc;
@@ -48,6 +49,7 @@
 	PurpleRequestType config_dialog_type;
 	void *config_dialog_handle;
 	GHashTable *members;
+	gboolean left;
 } JabberChat;
 
 GList *jabber_chat_info(PurpleConnection *gc);
--- a/libpurple/protocols/jabber/jabber.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Thu Jun 26 09:07:56 2008 +0000
@@ -273,70 +273,10 @@
 	purple_circ_buffer_mark_read(js->write_buffer, ret);
 }
 
-void jabber_send_raw(JabberStream *js, const char *data, int len)
+static gboolean do_jabber_send_raw(JabberStream *js, const char *data, int len)
 {
 	int ret;
-
-	/* because printing a tab to debug every minute gets old */
-	if(strcmp(data, "\t"))
-		purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s\n",
-				js->gsc ? " (ssl)" : "", data);
-
-	/* If we've got a security layer, we need to encode the data,
-	 * splitting it on the maximum buffer length negotiated */
-	
-	purple_signal_emit(my_protocol, "jabber-sending-text", js->gc, &data);
-	if (data == NULL)
-		return;
-	
-#ifdef HAVE_CYRUS_SASL
-	if (js->sasl_maxbuf>0) {
-		int pos;
-
-		if (!js->gsc && js->fd<0)
-			return;
-		pos = 0;
-		if (len == -1)
-			len = strlen(data);
-		while (pos < len) {
-			int towrite;
-			const char *out;
-			unsigned olen;
-
-			if ((len - pos) < js->sasl_maxbuf)
-				towrite = len - pos;
-			else
-				towrite = js->sasl_maxbuf;
-
-			sasl_encode(js->sasl, &data[pos], towrite, &out, &olen);
-			pos += towrite;
-
-			if (js->writeh == 0)
-				ret = jabber_do_send(js, out, olen);
-			else {
-				ret = -1;
-				errno = EAGAIN;
-			}
-
-			if (ret < 0 && errno != EAGAIN)
-				purple_connection_error_reason (js->gc,
-					PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
-					_("Write error"));
-			else if (ret < olen) {
-				if (ret < 0)
-					ret = 0;
-				if (js->writeh == 0)
-					js->writeh = purple_input_add(
-						js->gsc ? js->gsc->fd : js->fd,
-						PURPLE_INPUT_WRITE,
-						jabber_send_cb, js);
-				purple_circ_buffer_append(js->write_buffer,
-					out + ret, olen - ret);
-			}
-		}
-		return;
-	}
-#endif
+	gboolean success = TRUE;
 
 	if (len == -1)
 		len = strlen(data);
@@ -348,11 +288,12 @@
 		errno = EAGAIN;
 	}
 
-	if (ret < 0 && errno != EAGAIN)
+	if (ret < 0 && errno != EAGAIN) {
 		purple_connection_error_reason (js->gc,
 			PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
 			_("Write error"));
-	else if (ret < len) {
+		success = FALSE;
+	} else if (ret < len) {
 		if (ret < 0)
 			ret = 0;
 		if (js->writeh == 0)
@@ -362,7 +303,53 @@
 		purple_circ_buffer_append(js->write_buffer,
 			data + ret, len - ret);
 	}
-	return;
+
+	return success;
+}
+
+void jabber_send_raw(JabberStream *js, const char *data, int len)
+{
+
+	/* because printing a tab to debug every minute gets old */
+	if(strcmp(data, "\t"))
+		purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s\n",
+				js->gsc ? " (ssl)" : "", data);
+
+	/* If we've got a security layer, we need to encode the data,
+	 * splitting it on the maximum buffer length negotiated */
+
+	purple_signal_emit(my_protocol, "jabber-sending-text", js->gc, &data);
+	if (data == NULL)
+		return;
+
+#ifdef HAVE_CYRUS_SASL
+	if (js->sasl_maxbuf>0) {
+		int pos = 0;
+
+		if (!js->gsc && js->fd<0)
+			return;
+
+		if (len == -1)
+			len = strlen(data);
+
+		while (pos < len) {
+			int towrite;
+			const char *out;
+			unsigned olen;
+
+			towrite = MIN((len - pos), js->sasl_maxbuf);
+
+			sasl_encode(js->sasl, &data[pos], towrite, &out, &olen);
+			pos += towrite;
+
+			if (!do_jabber_send_raw(js, out, olen))
+				break;
+		}
+		return;
+	}
+#endif
+
+	do_jabber_send_raw(js, data, len);
 }
 
 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
@@ -388,9 +375,9 @@
 	g_free(txt);
 }
 
-static void jabber_pong_cb(JabberStream *js, xmlnode *packet, gpointer timeout) 
+static void jabber_pong_cb(JabberStream *js, xmlnode *packet, gpointer unused)
 {
-	purple_timeout_remove(GPOINTER_TO_INT(timeout));
+	purple_timeout_remove(js->keepalive_timeout);
 	js->keepalive_timeout = -1;
 }
 
@@ -414,7 +401,7 @@
 		xmlnode_set_namespace(ping, "urn:xmpp:ping");
 		
 		js->keepalive_timeout = purple_timeout_add_seconds(120, (GSourceFunc)(jabber_pong_timeout), gc);
-		jabber_iq_set_callback(iq, jabber_pong_cb, GINT_TO_POINTER(js->keepalive_timeout));
+		jabber_iq_set_callback(iq, jabber_pong_cb, NULL);
 		jabber_iq_send(iq);
 	}
 }
@@ -995,7 +982,7 @@
 		purple_request_field_group_add_field(group, field);
 	}
 	if(xmlnode_get_child(query, "email")) {
-		field = purple_request_field_string_new("email", _("E-mail"), NULL, FALSE);
+		field = purple_request_field_string_new("email", _("Email"), NULL, FALSE);
 		purple_request_field_group_add_field(group, field);
 	}
 	if(xmlnode_get_child(query, "nick")) {
@@ -1504,8 +1491,7 @@
 
 		if (full) {
 			PurpleStatus *status;
-			PurpleValue *value;
-			
+
 			if(jb->subscription & JABBER_SUB_FROM) {
 				if(jb->subscription & JABBER_SUB_TO)
 					sub = _("Both");
@@ -1521,17 +1507,17 @@
 				else
 					sub = _("None");
 			}
-			
+
 			purple_notify_user_info_add_pair(user_info, _("Subscription"), sub);
-			
+
 			status = purple_presence_get_active_status(presence);
-			value = purple_status_get_attr_value(status, "mood");
-			if (value && purple_value_get_type(value) == PURPLE_TYPE_STRING && (mood = purple_value_get_string(value))) {
-				
-				value = purple_status_get_attr_value(status, "moodtext");
-				if(value && purple_value_get_type(value) == PURPLE_TYPE_STRING) {
-					char *moodplustext = g_strdup_printf("%s (%s)",mood,purple_value_get_string(value));
-					
+			mood = purple_status_get_attr_string(status, "mood");
+			if(mood != NULL) {
+				const char *moodtext;
+				moodtext = purple_status_get_attr_string(status, "moodtext");
+				if(moodtext != NULL) {
+					char *moodplustext = g_strdup_printf("%s (%s)", mood, moodtext);
+
 					purple_notify_user_info_add_pair(user_info, _("Mood"), moodplustext);
 					g_free(moodplustext);
 				} else
--- a/libpurple/protocols/jabber/libxmpp.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/libxmpp.c	Thu Jun 26 09:07:56 2008 +0000
@@ -89,7 +89,7 @@
 	jabber_message_send_chat,		/* chat_send */
 	jabber_keepalive,				/* keepalive */
 	jabber_register_account,		/* register_user */
-	jabber_buddy_get_info_chat,		/* get_cb_info */
+	NULL,							/* get_cb_info */
 	NULL,							/* get_cb_away */
 	jabber_roster_alias_change,		/* alias_buddy */
 	jabber_roster_group_change,		/* group_buddy */
@@ -116,7 +116,7 @@
 	jabber_send_attention,			/* send_attention */
 	jabber_attention_types,			/* attention_types */
 
-	/* padding */
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/jabber/message.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/message.c	Thu Jun 26 09:07:56 2008 +0000
@@ -403,12 +403,20 @@
 			const char *code = xmlnode_get_attrib(child, "code");
 			char *code_txt = NULL;
 			char *text = xmlnode_get_data(child);
+			if (!text) {
+				xmlnode *enclosed_text_node;
+				
+				if ((enclosed_text_node = xmlnode_get_child(child, "text")))
+					text = xmlnode_get_data(enclosed_text_node);
+			}
 
 			if(code)
-				code_txt = g_strdup_printf(_(" (Code %s)"), code);
+				code_txt = g_strdup_printf(_("(Code %s)"), code);
 
 			if(!jm->error)
-				jm->error = g_strdup_printf("%s%s", text ? text : "",
+				jm->error = g_strdup_printf("%s%s%s",
+						text ? text : "",
+						text && code_txt ? " " : "",
 						code_txt ? code_txt : "");
 
 			g_free(code_txt);
--- a/libpurple/protocols/jabber/pep.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/pep.h	Thu Jun 26 09:07:56 2008 +0000
@@ -57,7 +57,7 @@
  * @parameter id	The item id of the requested item (may be NULL)
  * @parameter cb	The callback to be used when this item is received
  *
- * The items element passed to the callback will be NULL if any error occured (like a permission error, node doesn't exist etc.)
+ * The items element passed to the callback will be NULL if any error occurred (like a permission error, node doesn't exist etc.)
  */
 void jabber_pep_request_item(JabberStream *js, const char *to, const char *node, const char *id, JabberPEPHandler cb);
 
--- a/libpurple/protocols/jabber/presence.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/presence.c	Thu Jun 26 09:07:56 2008 +0000
@@ -49,7 +49,7 @@
 	xmlnode *presence = user_data;
 	char *chat_full_jid;
 
-	if(!chat->conv)
+	if(!chat->conv || chat->left)
 		return;
 
 	chat_full_jid = g_strdup_printf("%s@%s/%s", chat->room, chat->server,
@@ -581,12 +581,13 @@
 		if(state == JABBER_BUDDY_STATE_ERROR) {
 			char *title, *msg = jabber_parse_error(js, packet, NULL);
 
-			if(chat->conv) {
+			if (!chat->conv) {
+				title = g_strdup_printf(_("Error joining chat %s"), from);
+				purple_serv_got_join_chat_failed(js->gc, chat->components);
+			} else {
 				title = g_strdup_printf(_("Error in chat %s"), from);
 				if (g_hash_table_size(chat->members) == 0)
 					serv_got_chat_left(js->gc, chat->id);
-			} else {
-				title = g_strdup_printf(_("Error joining chat %s"), from);
 			}
 			purple_notify_error(js->gc, title, title, msg);
 			g_free(title);
@@ -608,8 +609,9 @@
 
 			/* If we haven't joined the chat yet, we don't care that someone
 			 * left, or it was us leaving after we closed the chat */
-			if(!chat->conv) {
-				if(jid->resource && chat->handle && !strcmp(jid->resource, chat->handle))
+			if (!chat->conv || chat->left) {
+				if (chat->left &&
+						jid->resource && chat->handle && !strcmp(jid->resource, chat->handle))
 					jabber_chat_destroy(chat);
 				jabber_id_free(jid);
 				g_free(status);
--- a/libpurple/protocols/jabber/si.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/si.c	Thu Jun 26 09:07:56 2008 +0000
@@ -623,7 +623,7 @@
 		return;
 	else if(acceptfd == -1) {
 		purple_debug_warning("jabber", "accept: %s\n", g_strerror(errno));
-		/* TODO: This should cancel the ft */
+		/* Don't cancel the ft - allow it to fall to the next streamhost.*/
 		return;
 	}
 
@@ -659,8 +659,11 @@
 
 	jsx = xfer->data;
 
-	if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "result"))
+	if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "result")) {
+		if (type && !strcmp(type, "error"))
+			purple_xfer_cancel_remote(xfer);
 		return;
+	}
 
 	if(!(from = xmlnode_get_attrib(packet, "from")))
 		return;
@@ -718,14 +721,17 @@
 	JabberSIXfer *jsx;
 	JabberIq *iq;
 	xmlnode *query, *streamhost;
-	char *jid, port[6];
-	const char *local_ip, *public_ip, *ft_proxies;
+	const char *ft_proxies;
+	char port[6];
 	GList *tmp;
 	JabberBytestreamsStreamhost *sh, *sh2;
+	int streamhost_count = 0;
 
 	jsx = xfer->data;
 	jsx->listen_data = NULL;
 
+	/* I'm not sure under which conditions this can happen
+	 * (it seems like it shouldn't be possible */
 	if (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_CANCEL_LOCAL) {
 		purple_xfer_unref(xfer);
 		return;
@@ -733,13 +739,6 @@
 
 	purple_xfer_unref(xfer);
 
-	if (sock < 0) {
-		purple_xfer_cancel_local(xfer);
-		return;
-	}
-
-	jsx->local_streamhost_fd = sock;
-
 	iq = jabber_iq_new_query(jsx->js, JABBER_IQ_SET,
 			"http://jabber.org/protocol/bytestreams");
 	xmlnode_set_attrib(iq->node, "to", xfer->who);
@@ -747,41 +746,45 @@
 
 	xmlnode_set_attrib(query, "sid", jsx->stream_id);
 
-	jid = g_strdup_printf("%s@%s/%s", jsx->js->user->node,
+	/* If we successfully started listening locally */
+	if (sock >= 0) {
+		gchar *jid;
+		const char *local_ip, *public_ip;
+
+		jsx->local_streamhost_fd = sock;
+
+		jid = g_strdup_printf("%s@%s/%s", jsx->js->user->node,
 			jsx->js->user->domain, jsx->js->user->resource);
-	xfer->local_port = purple_network_get_port_from_fd(sock);
-	g_snprintf(port, sizeof(port), "%hu", xfer->local_port);
-
-	/* TODO: Should there be an option to not use the local host as a ft proxy?
-	 *       (to prevent revealing IP address, etc.) */
+		xfer->local_port = purple_network_get_port_from_fd(sock);
+		g_snprintf(port, sizeof(port), "%hu", xfer->local_port);
 
-	/* Include the localhost's IP (for in-network transfers) */
-	local_ip = purple_network_get_local_system_ip(jsx->js->fd);
-	if (strcmp(local_ip, "0.0.0.0") != 0)
-	{
-		streamhost = xmlnode_new_child(query, "streamhost");
-		xmlnode_set_attrib(streamhost, "jid", jid);
-		xmlnode_set_attrib(streamhost, "host", local_ip);
-		xmlnode_set_attrib(streamhost, "port", port);
+		/* Include the localhost's IP (for in-network transfers) */
+		local_ip = purple_network_get_local_system_ip(jsx->js->fd);
+		if (strcmp(local_ip, "0.0.0.0") != 0) {
+			streamhost_count++;
+			streamhost = xmlnode_new_child(query, "streamhost");
+			xmlnode_set_attrib(streamhost, "jid", jid);
+			xmlnode_set_attrib(streamhost, "host", local_ip);
+			xmlnode_set_attrib(streamhost, "port", port);
+		}
+
+		/* Include the public IP (assuming that there is a port mapped somehow) */
+		public_ip = purple_network_get_my_ip(jsx->js->fd);
+		if (strcmp(public_ip, local_ip) != 0 && strcmp(public_ip, "0.0.0.0") != 0) {
+			streamhost_count++;
+			streamhost = xmlnode_new_child(query, "streamhost");
+			xmlnode_set_attrib(streamhost, "jid", jid);
+			xmlnode_set_attrib(streamhost, "host", public_ip);
+			xmlnode_set_attrib(streamhost, "port", port);
+		}
+
+		g_free(jid);
+
+		/* The listener for the local proxy */
+		xfer->watcher = purple_input_add(sock, PURPLE_INPUT_READ,
+				jabber_si_xfer_bytestreams_send_connected_cb, xfer);
 	}
 
-	/* Include the public IP (assuming that there is a port mapped somehow) */
-	/* TODO: Check that it isn't the same as above and is a valid IP */
-	public_ip = purple_network_get_my_ip(jsx->js->fd);
-	if (strcmp(public_ip, local_ip) != 0)
-	{
-		streamhost = xmlnode_new_child(query, "streamhost");
-		xmlnode_set_attrib(streamhost, "jid", jid);
-		xmlnode_set_attrib(streamhost, "host", public_ip);
-		xmlnode_set_attrib(streamhost, "port", port);
-	}
-
-	g_free(jid);
-
-	/* The listener for the local proxy */
-	xfer->watcher = purple_input_add(sock, PURPLE_INPUT_READ,
-			jabber_si_xfer_bytestreams_send_connected_cb, xfer);
-
 	/* insert proxies here */
 	ft_proxies = purple_account_get_string(xfer->account, "ft_proxies", NULL);
 	if (ft_proxies) {
@@ -806,11 +809,12 @@
 
 			g_snprintf(port, sizeof(port), "%hu", portnum);
 
-			purple_debug_info("jabber", "jabber_si_xfer_bytestreams_listen_cb() will be looking at jsx %p: jsx->streamhosts %p and ft_proxy_list[%i] %p",
+			purple_debug_info("jabber", "jabber_si_xfer_bytestreams_listen_cb() will be looking at jsx %p: jsx->streamhosts %p and ft_proxy_list[%i] %p\n",
 							  jsx, jsx->streamhosts, i, ft_proxy_list[i]);
 			if(g_list_find_custom(jsx->streamhosts, ft_proxy_list[i], jabber_si_compare_jid) != NULL)
 				continue;
 
+			streamhost_count++;
 			streamhost = xmlnode_new_child(query, "streamhost");
 			xmlnode_set_attrib(streamhost, "jid", ft_proxy_list[i]);
 			xmlnode_set_attrib(streamhost, "host", ft_proxy_list[i]);
@@ -840,6 +844,7 @@
 		if(g_list_find_custom(jsx->streamhosts, sh->jid, jabber_si_compare_jid) != NULL)
 			continue;
 
+		streamhost_count++;
 		streamhost = xmlnode_new_child(query, "streamhost");
 		xmlnode_set_attrib(streamhost, "jid", sh->jid);
 		xmlnode_set_attrib(streamhost, "host", sh->host);
@@ -855,6 +860,14 @@
 		jsx->streamhosts = g_list_prepend(jsx->streamhosts, sh2);
 	}
 
+	/* We have no way of transferring, cancel the transfer */
+	if (streamhost_count == 0) {
+		jabber_iq_free(iq);
+		/* We should probably notify the target, but this really shouldn't ever happen */
+		purple_xfer_cancel_local(xfer);
+		return;
+	}
+
 	jabber_iq_set_callback(iq, jabber_si_connect_proxy_cb, xfer);
 
 	jabber_iq_send(iq);
@@ -869,13 +882,14 @@
 	purple_xfer_ref(xfer);
 
 	jsx = xfer->data;
+
+	/* TODO: Should there be an option to not use the local host as a ft proxy?
+	 *       (to prevent revealing IP address, etc.) */
 	jsx->listen_data = purple_network_listen_range(0, 0, SOCK_STREAM,
 				jabber_si_xfer_bytestreams_listen_cb, xfer);
 	if (jsx->listen_data == NULL) {
-		purple_xfer_unref(xfer);
-		/* XXX: couldn't open a port, we're fscked */
-		purple_xfer_cancel_local(xfer);
-		return;
+		/* We couldn't open a local port.  Perhaps we can use a proxy. */
+		jabber_si_xfer_bytestreams_listen_cb(-1, xfer);
 	}
 
 }
@@ -1213,9 +1227,6 @@
 
 	js = gc->proto_data;
 
-	if(!purple_find_buddy(gc->account, who) || !jabber_buddy_find(js, who, FALSE))
-		return;
-
 	xfer = jabber_si_new_xfer(gc, who);
 
 	if (file)
--- a/libpurple/protocols/jabber/xdata.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/jabber/xdata.c	Thu Jun 26 09:07:56 2008 +0000
@@ -201,7 +201,7 @@
 	xmlnode *fn, *x;
 	PurpleRequestFields *fields;
 	PurpleRequestFieldGroup *group;
-	PurpleRequestField *field;
+	PurpleRequestField *field = NULL;
 
 	char *title = NULL;
 	char *instructions = NULL;
--- a/libpurple/protocols/msn/cmdproc.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/cmdproc.c	Thu Jun 26 09:07:56 2008 +0000
@@ -132,6 +132,14 @@
 		data = g_realloc(data, len + trans->payload_len);
 		memcpy(data + len, trans->payload, trans->payload_len);
 		len += trans->payload_len;
+
+		/*
+		 * We're done with trans->payload.  Free it so that the memory
+		 * doesn't sit around in cmdproc->history.
+		 */
+		g_free(trans->payload);
+		trans->payload = NULL;
+		trans->payload_len = 0;
 	}
 
 	msn_servconn_write(servconn, data, len);
--- a/libpurple/protocols/msn/contact.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/contact.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1,5 +1,5 @@
 /**
- * @file contact.c 
+ * @file contact.c
  * 	get MSN contacts via SOAP request
  *	created by MaYuan<mayuan2006@gmail.com>
  *
@@ -80,7 +80,7 @@
 	state->session = session;
 
 	return state;
-}	
+}
 
 void
 msn_callback_state_free(MsnCallbackState *state)
@@ -217,7 +217,7 @@
 	g_return_if_fail(contact->session != NULL);
 	g_return_if_fail(contact->session->user != NULL);
 	g_return_if_fail(contact->session->user->passport != NULL);
-	
+
 	purple_debug_info("msnab","Creating an Address Book.\n");
 
 	body = g_strdup_printf(MSN_ADD_ADDRESSBOOK_TEMPLATE, contact->session->user->passport);
@@ -247,7 +247,7 @@
 		user->membership_id[list] = atoi(member_id);
 	}
 
-	msn_got_lst_user(session, user, 1 << list, NULL);         
+	msn_got_lst_user(session, user, 1 << list, NULL);
 
 	g_free(passport);
 	g_free(type);
@@ -269,7 +269,7 @@
 			char *lastchange_str = xmlnode_get_data(lastchange);
 			xmlnode *membership;
 
-			purple_debug_info("msncl","last change: %s\n", lastchange_str);	
+			purple_debug_info("msncl","last change: %s\n", lastchange_str);
 			purple_account_set_string(session->account,	"CLLastChange",
 				lastchange_str);
 
@@ -480,7 +480,7 @@
 
 			if (phone_type && !strcmp(phone_type, "ContactPhoneMobile")) {
 				xmlnode *number;
-					
+
 				if ((number = xmlnode_get_child(contact_phone, "number"))) {
 					xmlnode *messenger_enabled;
 					char *is_messenger_enabled = NULL;
@@ -489,8 +489,8 @@
 					mobile_number = xmlnode_get_data(number);
 
 					if (mobile_number &&
-							(messenger_enabled = xmlnode_get_child(contact_phone, "isMessengerEnabled")) 
-							&& (is_messenger_enabled = xmlnode_get_data(messenger_enabled)) 
+							(messenger_enabled = xmlnode_get_child(contact_phone, "isMessengerEnabled"))
+							&& (is_messenger_enabled = xmlnode_get_data(messenger_enabled))
 							&& !strcmp(is_messenger_enabled, "true"))
 						mobile = TRUE;
 
@@ -679,7 +679,7 @@
 			gchar *errorcode = xmlnode_get_data(faultnode);
 
 			purple_debug_info("MSNAB", "Error Code: %s\n", errorcode);
-						
+
 			if (g_str_equal(errorcode, "ABDoesNotExist")) {
 				g_free(errorcode);
 				return TRUE;
@@ -823,7 +823,7 @@
 	if (resp != NULL) {
 		MsnUserList *userlist = session->userlist;
 		MsnUser *user;
-	
+
 		purple_debug_info("MSNCL","Contact added successfully\n");
 
 		// the code this block is replacing didn't send ADL for yahoo contacts,
@@ -921,7 +921,7 @@
 }
 
 void
-msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, 
+msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state,
 			 const char *passport, const char *groupId)
 {
 	MsnUserList *userlist;
@@ -934,11 +934,11 @@
 	g_return_if_fail(contact != NULL);
 	g_return_if_fail(contact->session != NULL);
 	g_return_if_fail(contact->session->userlist != NULL);
-	
+
 	userlist = contact->session->userlist;
 
 	if (!strcmp(groupId, MSN_INDIVIDUALS_GROUP_ID) || !strcmp(groupId, MSN_NON_IM_GROUP_ID)) {
-		
+
 		user = msn_userlist_find_add_user(userlist, passport, passport);
 
 		if (state->action & MSN_ADD_BUDDY) {
@@ -956,13 +956,13 @@
 		return;
 	}
 
-	purple_debug_info("MSNCL", "Adding user %s to group %s\n", passport, 
+	purple_debug_info("MSNCL", "Adding user %s to group %s\n", passport,
 			  msn_userlist_find_group_name(userlist, groupId));
 
 	user = msn_userlist_find_user(userlist, passport);
 	if (user == NULL) {
 		purple_debug_warning("MSNCL", "Unable to retrieve user %s from the userlist!\n", passport);
-		msn_callback_state_free(state);                                     
+		msn_callback_state_free(state);
 		return; /* guess this never happened! */
 	}
 
@@ -1007,7 +1007,7 @@
 /*delete a Contact*/
 void
 msn_delete_contact(MsnContact *contact, const char *contactId)
-{	
+{
 	gchar *body = NULL;
 	gchar *contact_id_xml = NULL ;
 	MsnCallbackState *state;
@@ -1045,7 +1045,7 @@
 			purple_debug_info("MSNCL", "Contact %s deleted successfully from group %s in the server, but failed in the local list\n", state->who, state->old_group_name);
 		}
 	}
-	
+
 	msn_callback_state_free(state);
 }
 
@@ -1057,15 +1057,15 @@
 	MsnCallbackState *state;
 	gchar *body, *contact_id_xml;
 	const gchar *groupId;
-	
+
 	g_return_if_fail(passport != NULL);
 	g_return_if_fail(group_name != NULL);
 	g_return_if_fail(contact != NULL);
 	g_return_if_fail(contact->session != NULL);
 	g_return_if_fail(contact->session->userlist != NULL);
-	
+
 	userlist = contact->session->userlist;
-	
+
 	groupId = msn_userlist_find_group_id(userlist, group_name);
 	if (groupId != NULL) {
 		purple_debug_info("MSNCL", "Deleting user %s from group %s\n", passport, group_name);
@@ -1073,9 +1073,9 @@
 		purple_debug_warning("MSNCL", "Unable to retrieve group id from group %s !\n", group_name);
 		return;
 	}
-	
+
 	user = msn_userlist_find_user(userlist, passport);
-	
+
 	if (user == NULL) {
 		purple_debug_warning("MSNCL", "Unable to retrieve user from passport %s!\n", passport);
 		return;
@@ -1099,7 +1099,7 @@
 			xmlnode_from_str(body, -1)),
 		MSN_CONTACT_SERVER, MSN_ADDRESS_BOOK_POST_URL,
 		msn_del_contact_from_group_read_cb, state);
-	
+
 	g_free(contact_id_xml);
 	g_free(body);
 }
@@ -1198,7 +1198,7 @@
 	} else {
 		/* list == MSN_LIST_AL || list == MSN_LIST_BL */
 		partner_scenario = MSN_PS_BLOCK_UNBLOCK;
-		
+
 		member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, passport);
 	}
 
@@ -1226,13 +1226,13 @@
 	g_return_if_fail(state != NULL);
 	g_return_if_fail(state->session != NULL);
 	g_return_if_fail(state->session->contact != NULL);
-	
+
 	if (resp != NULL) {
 		purple_debug_info("MSN CL", "Contact %s added successfully to %s list on server!\n", state->who, MsnMemberRole[state->list_id]);
 
 		if (state->list_id == MSN_LIST_RL) {
 			MsnUser *user = msn_userlist_find_user(state->session->userlist, state->who);
-		
+
 			if (user != NULL) {
 				msn_user_set_op(user, MSN_LIST_RL_OP);
 			}
@@ -1274,9 +1274,9 @@
 
 	member = g_strdup_printf(MSN_MEMBER_PASSPORT_XML, state->who);
 
-	body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE, 
+	body = g_strdup_printf(MSN_CONTACT_ADD_TO_LIST_TEMPLATE,
 			       MsnSoapPartnerScenarioText[partner_scenario],
-			       MsnMemberRole[list], 
+			       MsnMemberRole[list],
 			       member);
 
 	msn_soap_message_send(contact->session,
@@ -1323,9 +1323,9 @@
 msn_group_read_cb(MsnSoapMessage *req, MsnSoapMessage *resp, gpointer data)
 {
 	MsnCallbackState *state = data;
-	
+
 	purple_debug_info("MSNCL", "Group request successful.\n");
-	
+
 	g_return_if_fail(state->session != NULL);
 	g_return_if_fail(state->session->userlist != NULL);
 	g_return_if_fail(state->session->contact != NULL);
@@ -1338,13 +1338,13 @@
 	if (state) {
 		MsnSession *session = state->session;
 		MsnUserList *userlist = session->userlist;
-		
+
 		if (state->action & MSN_RENAME_GROUP) {
 			msn_userlist_rename_group_id(session->userlist,
 						     state->guid,
 						     state->new_group_name);
 		}
-		
+
 		if (state->action & MSN_ADD_GROUP) {
 			/* the response is taken from
 			   http://telepathy.freedesktop.org/wiki/Pymsn/MSNP/ContactListActions
@@ -1364,7 +1364,7 @@
 						state->who,
 						state->new_group_name);
 				} else if (state->action & MSN_MOVE_BUDDY) {
-					msn_add_contact_to_group(session->contact, state, state->who, guid); 
+					msn_add_contact_to_group(session->contact, state, state->who, guid);
 					g_free(guid);
 					return;
 				}
@@ -1374,16 +1374,16 @@
 					state->new_group_name);
 			}
 		}
-		
+
 		if (state->action & MSN_DEL_GROUP) {
 			GList *l;
-			
+
 			msn_userlist_remove_group_id(session->userlist, state->guid);
 			for (l = userlist->users; l != NULL; l = l->next) {
 				msn_user_remove_group_id( (MsnUser *)l->data, state->guid);
 			}
 		}
-			
+
 		msn_callback_state_free(state);
 	}
 }
@@ -1396,7 +1396,7 @@
 
 	g_return_if_fail(session != NULL);
 	g_return_if_fail(group_name != NULL);
-	
+
 	purple_debug_info("MSNCL","Adding group %s to contact list.\n", group_name);
 
 	if (state == NULL) {
@@ -1429,13 +1429,13 @@
 	const gchar *guid;
 
 	g_return_if_fail(session != NULL);
-	
+
 	g_return_if_fail(group_name != NULL);
 	purple_debug_info("MSNCL","Deleting group %s from contact list\n", group_name);
-	
+
 	guid = msn_userlist_find_group_id(session->userlist, group_name);
-	
-	/* if group uid we need to del is NULL, 
+
+	/* if group uid we need to del is NULL,
 	*  we need to delete nothing
 	*/
 	if (guid == NULL) {
@@ -1451,7 +1451,7 @@
 	state = msn_callback_state_new(session);
 	msn_callback_state_set_action(state, MSN_DEL_GROUP);
 	msn_callback_state_set_guid(state, guid);
-	
+
 	body = g_strdup_printf(MSN_GROUP_DEL_TEMPLATE, guid);
 
 	msn_soap_message_send(session,
@@ -1470,14 +1470,14 @@
 	gchar *body = NULL;
 	const gchar * guid;
 	MsnCallbackState *state;
-	
+
 	g_return_if_fail(session != NULL);
 	g_return_if_fail(session->userlist != NULL);
 	g_return_if_fail(old_group_name != NULL);
 	g_return_if_fail(new_group_name != NULL);
-	
+
 	purple_debug_info("MSN CL", "Renaming group %s to %s.\n", old_group_name, new_group_name);
-	
+
 	guid = msn_userlist_find_group_id(session->userlist, old_group_name);
 	if (guid == NULL)
 		return;
@@ -1492,10 +1492,10 @@
 	}
 
 	msn_callback_state_set_action(state, MSN_RENAME_GROUP);
-	
+
 	body = g_markup_printf_escaped(MSN_GROUP_RENAME_TEMPLATE,
 		guid, new_group_name);
-	
+
 	msn_soap_message_send(session,
 		msn_soap_message_new(MSN_GROUP_RENAME_SOAP_ACTION,
 			xmlnode_from_str(body, -1)),
--- a/libpurple/protocols/msn/contact.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/contact.h	Thu Jun 26 09:07:56 2008 +0000
@@ -349,7 +349,7 @@
 #define MSN_GROUP_RENAME_SOAP_ACTION	"http://www.msn.com/webservices/AddressBook/ABGroupUpdate"
 #define MSN_GROUP_RENAME_TEMPLATE	"<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"><soap:Header><ABApplicationHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ApplicationId>09607671-1C32-421F-A6A6-CBFAA51AB5F4</ApplicationId><IsMigration>false</IsMigration><PartnerScenario>Timer</PartnerScenario></ABApplicationHeader><ABAuthHeader xmlns=\"http://www.msn.com/webservices/AddressBook\"><ManagedGroupRequest>false</ManagedGroupRequest></ABAuthHeader></soap:Header><soap:Body><ABGroupUpdate xmlns=\"http://www.msn.com/webservices/AddressBook\"><abId>00000000-0000-0000-0000-000000000000</abId><groups><Group><groupId>%s</groupId><groupInfo><name>%s</name></groupInfo><propertiesChanged>GroupName </propertiesChanged></Group></groups></ABGroupUpdate></soap:Body></soap:Envelope>"
 
-typedef enum 
+typedef enum
 {
 	MSN_ADD_BUDDY			= 0x01,
 	MSN_MOVE_BUDDY			= 0x02,
@@ -383,7 +383,7 @@
 	MsnSession *session;
 };
 
-typedef enum 
+typedef enum
 {
 	MSN_PS_INITIAL,
 	MSN_PS_SAVE_CONTACT,
@@ -404,34 +404,34 @@
 void msn_callback_state_set_uid(MsnCallbackState *state, const gchar *uid);
 void msn_callback_state_set_old_group_name(MsnCallbackState *state,
 					   const gchar *old_group_name);
-void msn_callback_state_set_new_group_name(MsnCallbackState *state, 
+void msn_callback_state_set_new_group_name(MsnCallbackState *state,
 					   const gchar *new_group_name);
 void msn_callback_state_set_guid(MsnCallbackState *state, const gchar *guid);
 void msn_callback_state_set_list_id(MsnCallbackState *state, MsnListId list_id);
-void msn_callback_state_set_action(MsnCallbackState *state, 
+void msn_callback_state_set_action(MsnCallbackState *state,
 				   MsnCallbackAction action);
 
 void msn_contact_connect(MsnContact *contact);
-void msn_get_contact_list(MsnContact * contact, 
+void msn_get_contact_list(MsnContact * contact,
 			  const MsnSoapPartnerScenario partner_scenario,
 			  const char *update);
-void msn_get_address_book(MsnContact *contact, 
+void msn_get_address_book(MsnContact *contact,
 			  const MsnSoapPartnerScenario partner_scenario,
 			  const char * update, const char * gupdate);
 
 /* contact SOAP operations */
 void msn_update_contact(MsnContact *contact, const char* nickname);
 
-void msn_add_contact(MsnContact *contact, MsnCallbackState *state, 
+void msn_add_contact(MsnContact *contact, MsnCallbackState *state,
 		     const char *passport);
 void msn_delete_contact(MsnContact *contact, const char *contactId);
 
-void msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state, 
+void msn_add_contact_to_group(MsnContact *contact, MsnCallbackState *state,
 			      const char *passport, const char *groupId);
-void msn_del_contact_from_group(MsnContact *contact, const char *passport, 
+void msn_del_contact_from_group(MsnContact *contact, const char *passport,
 				const char *group_name);
 /* group operations */
-void msn_add_group(MsnSession *session, MsnCallbackState *state, 
+void msn_add_group(MsnSession *session, MsnCallbackState *state,
 					const char* group_name);
 void msn_del_group(MsnSession *session, const gchar *group_name);
 void msn_contact_rename_group(MsnSession *session, const char *old_group_name,
--- a/libpurple/protocols/msn/dialog.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/dialog.c	Thu Jun 26 09:07:56 2008 +0000
@@ -135,7 +135,7 @@
 								 passport);
 	}
 
-	purple_request_action(gc, NULL, msg, reason, PURPLE_DEFAULT_ACTION_NONE, 
+	purple_request_action(gc, NULL, msg, reason, PURPLE_DEFAULT_ACTION_NONE,
 						purple_connection_get_account(gc), data->who, NULL,
 						data, 2,
 						_("Yes"), G_CALLBACK(msn_add_cb),
--- a/libpurple/protocols/msn/error.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/error.c	Thu Jun 26 09:07:56 2008 +0000
@@ -43,7 +43,7 @@
 			break;
 		case 201:
 			g_snprintf(msg, sizeof(msg),
-					   _("Invalid e-mail address"));
+					   _("Invalid email address"));
 			break;
 		case 205:
 			g_snprintf(msg, sizeof(msg), _("User does not exist"));
@@ -259,7 +259,7 @@
 {
 	char buf[MSN_BUF_LEN];
 	gboolean debug;
-	
+
 	g_snprintf(buf, sizeof(buf), _("MSN Error: %s\n"),
 			   msn_error_get_text(type, &debug));
 	if (debug)
--- a/libpurple/protocols/msn/msg.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/msg.c	Thu Jun 26 09:07:56 2008 +0000
@@ -151,9 +151,9 @@
 	MsnMessage *msg;
 
 	msg = msn_message_new(MSN_MSG_NUDGE);
-	msn_message_set_content_type(msg, "text/x-msnmsgr-datacast\r\n");
+	msn_message_set_content_type(msg, "text/x-msnmsgr-datacast");
 	msn_message_set_flag(msg, 'N');
-	msn_message_set_attr(msg,"ID","1\r\n");
+	msn_message_set_bin_data(msg, "ID: 1\r\n", 7);
 
 	return msg;
 }
--- a/libpurple/protocols/msn/msn.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/msn.c	Thu Jun 26 09:07:56 2008 +0000
@@ -32,6 +32,7 @@
 #include "pluginpref.h"
 #include "prefs.h"
 #include "session.h"
+#include "smiley.h"
 #include "state.h"
 #include "util.h"
 #include "cmds.h"
@@ -82,6 +83,12 @@
 	time_t when;
 } MsnIMData;
 
+typedef struct
+{
+	char *smile;
+	MsnObject *obj;
+} MsnEmoticon;
+
 static const char *
 msn_normalize(const PurpleAccount *account, const char *str)
 {
@@ -115,6 +122,7 @@
 		return FALSE;
 
 	msn_switchboard_send_msg(swboard, msg, TRUE);
+	msn_message_destroy(msg);
 
 	return TRUE;
 }
@@ -132,6 +140,17 @@
 	return list;
 }
 
+static GHashTable *
+msn_get_account_text_table(PurpleAccount *unused)
+{
+	GHashTable *table;
+
+	table = g_hash_table_new(g_str_hash, g_str_equal);
+
+	g_hash_table_insert(table, "login_label", (gpointer)_("Email Address..."));
+
+	return table;
+}
 
 static PurpleCmdRet
 msn_cmd_nudge(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data)
@@ -884,7 +903,8 @@
 	session = msn_session_new(account);
 
 	gc->proto_data = session;
-	gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_FORMATTING_WBFO | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_FONTSIZE | PURPLE_CONNECTION_NO_URLDESC;
+	gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_FORMATTING_WBFO | PURPLE_CONNECTION_NO_BGCOLOR |
+		PURPLE_CONNECTION_NO_FONTSIZE | PURPLE_CONNECTION_NO_URLDESC | PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY;
 
 	msn_session_set_login_step(session, MSN_LOGIN_STEP_START);
 
@@ -925,6 +945,97 @@
 	return FALSE;
 }
 
+static GString*
+msn_msg_emoticon_add(GString *current, MsnEmoticon *emoticon)
+{
+	MsnObject *obj;
+	char *strobj;
+
+	if (emoticon == NULL)
+		return current;
+
+	obj = emoticon->obj;
+
+	if (!obj)
+		return current;
+
+	strobj = msn_object_to_string(obj);
+
+	if (current)
+		g_string_append_printf(current, "\t%s\t%s",
+				emoticon->smile, strobj);
+	else {
+		current = g_string_new("");
+		g_string_printf(current,"%s\t%s",
+					emoticon->smile, strobj);
+	}
+
+	g_free(strobj);
+
+	return current;
+}
+
+static void
+msn_send_emoticons(MsnSwitchBoard *swboard, GString *body)
+{
+	MsnMessage *msg;
+
+	g_return_if_fail(body != NULL);
+
+	msg = msn_message_new(MSN_MSG_SLP);
+	msn_message_set_content_type(msg, "text/x-mms-emoticon");
+	msn_message_set_flag(msg, 'N');
+	msn_message_set_bin_data(msg, body->str, body->len);
+
+	msn_switchboard_send_msg(swboard, msg, TRUE);
+	msn_message_destroy(msg);
+}
+
+static void msn_emoticon_destroy(MsnEmoticon *emoticon)
+{
+	if (emoticon->obj)
+		msn_object_destroy(emoticon->obj);
+	g_free(emoticon->smile);
+	g_free(emoticon);
+}
+
+static GSList* msn_msg_grab_emoticons(const char *msg, const char *username)
+{
+	GSList *list;
+	GList *smileys;
+	PurpleSmiley *smiley;
+	PurpleStoredImage *img;
+	char *ptr;
+	MsnEmoticon *emoticon;
+	int length;
+
+	list = NULL;
+	smileys = purple_smileys_get_all();
+	length = strlen(msg);
+
+	for (; smileys; smileys = g_list_delete_link(smileys, smileys)) {
+		smiley = smileys->data;
+
+		ptr = g_strstr_len(msg, length, purple_smiley_get_shortcut(smiley));
+
+		if (!ptr)
+			continue;
+
+		img = purple_smiley_get_stored_image(smiley);
+
+		emoticon = g_new0(MsnEmoticon, 1);
+		emoticon->smile = g_strdup(purple_smiley_get_shortcut(smiley));
+		emoticon->obj = msn_object_new_from_image(img,
+				purple_imgstore_get_filename(img),
+				username, MSN_OBJECT_EMOTICON);
+
+		purple_imgstore_unref(img);
+		list = g_slist_prepend(list, emoticon);
+	}
+
+	return list;
+}
+
 static int
 msn_send_im(PurpleConnection *gc, const char *who, const char *message,
 			PurpleMessageFlags flags)
@@ -934,9 +1045,11 @@
 	MsnMessage *msg;
 	char *msgformat;
 	char *msgtext;
+	const char *username;
 
 	purple_debug_info("MSNP14","send IM {%s} to %s\n",message,who);
 	account = purple_connection_get_account(gc);
+	username = purple_account_get_username(account);
 
 	if (buddy) {
 		PurplePresence *p = purple_buddy_get_presence(buddy);
@@ -969,10 +1082,13 @@
 		g_free(msgtext);
 
 		purple_debug_info("MSNP14","prepare to send online Message\n");
-		if (g_ascii_strcasecmp(who, purple_account_get_username(account)))
+		if (g_ascii_strcasecmp(who, username))
 		{
 			MsnSession *session;
 			MsnSwitchBoard *swboard;
+			MsnEmoticon *smile;
+			GSList *smileys;
+			GString *emoticons = NULL;
 
 			session = gc->proto_data;
 			if(msn_user_is_yahoo(account,who)){
@@ -982,6 +1098,19 @@
 			}else{
 				purple_debug_info("MSNP14","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);
 			}
 		}
@@ -1422,7 +1551,7 @@
 	g_free(msgformat);
 	g_free(msgtext);
 
-	serv_got_chat_in(gc, id, purple_account_get_username(account), 0,
+	serv_got_chat_in(gc, id, purple_account_get_username(account), flags,
 					 message, time(NULL));
 
 	return 0;
@@ -1465,10 +1594,10 @@
 	MsnSession *session;
 
 	session = gc->proto_data;
-	
+
 	g_return_if_fail(session != NULL);
 	g_return_if_fail(session->userlist != NULL);
-	
+
 	if (msn_userlist_find_group_with_name(session->userlist, old_name) != NULL)
 	{
 		msn_contact_rename_group(session, old_name, group->name);
@@ -1548,7 +1677,7 @@
 		purple_debug_info("MSN", "This group can't be removed, returning.\n");
 		return ;
 	}
-	
+
 	msn_del_group(session, group->name);
 }
 
@@ -1823,7 +1952,7 @@
 	MSN_GOT_INFO_GET_FIELD("Home address", _("Home Address"));
 	MSN_GOT_INFO_GET_FIELD("Personal Mobile", _("Personal Mobile"));
 	MSN_GOT_INFO_GET_FIELD("Home fax", _("Home Fax"));
-	MSN_GOT_INFO_GET_FIELD("Personal e-mail", _("Personal E-Mail"));
+	MSN_GOT_INFO_GET_FIELD("Personal email", _("Personal Email"));
 	MSN_GOT_INFO_GET_FIELD("Personal IM", _("Personal IM"));
 	MSN_GOT_INFO_GET_FIELD("Birthday", _("Birthday"));
 	MSN_GOT_INFO_GET_FIELD("Anniversary", _("Anniversary"));
@@ -1854,7 +1983,7 @@
 	MSN_GOT_INFO_GET_FIELD("Work mobile", _("Work Mobile"));
 	MSN_GOT_INFO_GET_FIELD("Work pager", _("Work Pager"));
 	MSN_GOT_INFO_GET_FIELD("Work fax", _("Work Fax"));
-	MSN_GOT_INFO_GET_FIELD("Work e-mail", _("Work E-Mail"));
+	MSN_GOT_INFO_GET_FIELD("Work email", _("Work Email"));
 	MSN_GOT_INFO_GET_FIELD("Work IM", _("Work IM"));
 	MSN_GOT_INFO_GET_FIELD("Start date", _("Start Date"));
 	MSN_GOT_INFO_GET_FIELD("Notes", _("Notes"));
@@ -2307,8 +2436,8 @@
 	msn_send_attention,                     /* send_attention */
 	msn_attention_types,                    /* attention_types */
 
-	/* padding */
-	NULL
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
+	msn_get_account_text_table,             /* get_account_text_table */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/msn/msnutils.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/msnutils.c	Thu Jun 26 09:07:56 2008 +0000
@@ -169,7 +169,7 @@
 	gchar *base64, *retval;
 
 	g_return_val_if_fail(str != NULL, NULL);
-	
+
 	base64 = purple_base64_encode((guchar *)str, strlen(str));
 	retval = g_strdup_printf("=?utf-8?B?%s?=", base64);
 	g_free(base64);
@@ -509,7 +509,7 @@
  *This algorithm reference with http://msnpiki.msnfanatic.com/index.php/MSNP11:Challenges
  */
 #define BUFSIZE	256
-void 
+void
 msn_handle_chl(char *input, char *output)
 {
 		PurpleCipher *cipher;
@@ -538,7 +538,7 @@
 
 		/* Split it into four integers */
 		md5Parts = (unsigned int *)md5Hash;
-		for(i=0; i<4; i++){  
+		for(i=0; i<4; i++){
 				/* adjust endianess */
 				md5Parts[i] = GUINT_TO_LE(md5Parts[i]);
 
@@ -578,7 +578,7 @@
 
 		/* adjust endianness */
 		for(i=0; i<4; i++)
-				newHashParts[i] = GUINT_TO_LE(newHashParts[i]); 
+				newHashParts[i] = GUINT_TO_LE(newHashParts[i]);
 
 		/* make a string of the parts */
 		newHash = (unsigned char *)newHashParts;
--- a/libpurple/protocols/msn/notification.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/notification.c	Thu Jun 26 09:07:56 2008 +0000
@@ -34,15 +34,6 @@
 
 static MsnTable *cbs_table;
 
-/****************************************************************************
- * 	Local Function Prototype
- ****************************************************************************/
-
-static void msn_notification_post_adl(MsnCmdProc *cmdproc, const char *payload, int payload_len);
-static void
-msn_add_contact_xml(MsnSession *session, xmlnode *mlNode,const char *passport,
-					 MsnListOp list_op, MsnUserType type);
-
 /**************************************************************************
  * Main
  **************************************************************************/
@@ -336,7 +327,7 @@
 	}
 
 	/*
-	 * Windows Live Messenger 8.0 
+	 * Windows Live Messenger 8.0
 	 * Notice :CVR String discriminate!
 	 * reference of http://www.microsoft.com/globaldev/reference/oslocversion.mspx
 	 * to see the Local ID
@@ -430,7 +421,7 @@
 	char *payload;
 	gsize payload_len;
 	int type;
-	
+
 	cmdproc = session->notification->cmdproc;
 	g_return_if_fail(msg     != NULL);
 	payload = msn_message_gen_payload(msg, &payload_len);
@@ -649,7 +640,7 @@
 {
 	MsnTransaction *trans;
 	purple_debug_info("MSN Notification","Sending ADL with payload: %s\n", payload);
-	trans = msn_transaction_new(cmdproc, "ADL","%" G_GSIZE_FORMAT, payload_len);
+	trans = msn_transaction_new(cmdproc, "ADL", "%i", payload_len);
 	msn_transaction_set_payload(trans, payload, payload_len);
 	msn_cmdproc_send_trans(cmdproc, trans);
 }
@@ -709,8 +700,8 @@
 	}
 
 	display_name = purple_connection_get_display_name(session->account->gc);
-	if (display_name 
-	    && strcmp(display_name, 
+	if (display_name
+	    && strcmp(display_name,
 		      purple_account_get_username(session->account))) {
 		msn_act_id(session->account->gc, display_name);
 	}
@@ -755,15 +746,15 @@
 	purple_debug_misc("MSN Notification", "Parsing received ADL XML data\n");
 
 	g_return_if_fail(payload != NULL);
-	
+
 	root = xmlnode_from_str(payload, (gssize) len);
-	
+
 	if (root == NULL) {
 		purple_debug_info("MSN Notification", "Invalid XML!\n");
 		return;
 	}
 	for (domain_node = xmlnode_get_child(root, "d"); domain_node; domain_node = xmlnode_get_next_twin(domain_node)) {
-		const gchar * domain = NULL; 
+		const gchar * domain = NULL;
 		xmlnode *contact_node = NULL;
 
 		domain = xmlnode_get_attrib(domain_node, "n");
@@ -1024,13 +1015,13 @@
 	MsnSlpLink *slplink;
 	MsnUser *user;
 
+	/* Tell libpurple that the user has signed off */
 	user = msn_userlist_find_user(cmdproc->session->userlist, cmd->params[0]);
-
 	user->status = "offline";
 	msn_user_update(user);
 
+	/* If we have an open MsnSlpLink with the user then close it */
 	slplink = msn_session_find_slplink(cmdproc->session, cmd->params[0]);
-
 	if (slplink != NULL)
 		msn_slplink_destroy(slplink);
 
@@ -1300,7 +1291,7 @@
 			type = cmd->params[1];
 			if (!strcmp(type, "MFN")) {
 				friendlyname = purple_url_decode(cmd->params[2]);
-				
+
 				msn_update_contact(session->contact, friendlyname);
 
 				purple_connection_set_display_name(
@@ -1649,12 +1640,12 @@
 		purple_debug_error("MSN","Unable to parse GCF payload into a XML tree");
 		return;
 	}
-	
+
 	buf = xmlnode_to_formatted_str(root, &xmllen);
 
 	/* get the payload content */
 	purple_debug_info("MSNP14","GCF command payload:\n%.*s\n", xmllen, buf);
-	
+
 	g_free(buf);
 	xmlnode_free(root);
 }
@@ -1698,7 +1689,7 @@
 
 	passport = cmd->params[0];
 	user = msn_userlist_find_user(session->userlist, passport);
-	
+
 	psm_str = msn_get_psm(cmd->payload,len);
 	msn_user_set_statusline(user, psm_str);
 	g_free(psm_str);
@@ -2005,7 +1996,7 @@
 		{
 			case 1:
 				minutes = atoi(g_hash_table_lookup(table, "Arg1"));
-				g_snprintf(buf, sizeof(buf), dngettext(PACKAGE, 
+				g_snprintf(buf, sizeof(buf), dngettext(PACKAGE,
 							"The MSN server will shut down for maintenance "
 							"in %d minute. You will automatically be "
 							"signed out at that time.  Please finish any "
@@ -2032,7 +2023,7 @@
 
 void
 msn_notification_add_buddy_to_list(MsnNotification *notification, MsnListId list_id,
-						   	  const char *who)
+							  const char *who)
 {
 	MsnCmdProc *cmdproc;
 	MsnListOp list_op = 1 << list_id;
@@ -2045,12 +2036,12 @@
 	adl_node = xmlnode_new("ml");
 	adl_node->child = NULL;
 
-	msn_add_contact_xml(notification->session, adl_node, who, list_op, 
+	msn_add_contact_xml(notification->session, adl_node, who, list_op,
 						MSN_USER_TYPE_PASSPORT);
 
 	payload = xmlnode_to_str(adl_node,&payload_len);
 	xmlnode_free(adl_node);
-	
+
 	msn_notification_post_adl(notification->servconn->cmdproc,
 						payload,payload_len);
 	g_free(payload);
@@ -2155,11 +2146,11 @@
 	/*initial OIM notification*/
 	msn_table_add_msg_type(cbs_table,
 							"text/x-msmsgsinitialmdatanotification",
-							initial_mdata_msg);	
+							initial_mdata_msg);
 	/*OIM notification when user online*/
 	msn_table_add_msg_type(cbs_table,
 							"text/x-msmsgsoimnotification",
-							initial_mdata_msg);	
+							initial_mdata_msg);
 	msn_table_add_msg_type(cbs_table,
 						   "text/x-msmsgsinitialemailnotification",
 						   initial_email_msg);
--- a/libpurple/protocols/msn/notification.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/notification.h	Thu Jun 26 09:07:56 2008 +0000
@@ -30,7 +30,7 @@
 #define MSNP13_WLM_PRODUCT_ID	"PROD01065C%ZFN6F"
 
 #define MSNP10_PRODUCT_KEY		"VT6PX?UQTM4WM%YR"
-#define MSNP10_PRODUCT_ID		"PROD0038W!61ZTF9" 
+#define MSNP10_PRODUCT_ID		"PROD0038W!61ZTF9"
 
 typedef struct _MsnNotification MsnNotification;
 
@@ -41,6 +41,11 @@
 struct _MsnNotification
 {
 	MsnSession *session;
+
+	/**
+	 * This is a convenience pointer that always points to
+	 * servconn->cmdproc
+	 */
 	MsnCmdProc *cmdproc;
 	MsnServConn *servconn;
 
@@ -71,7 +76,7 @@
  * Closes a notification.
  *
  * It's first closed, and then disconnected.
- * 
+ *
  * @param notification The notification object to close.
  */
 void msn_notification_close(MsnNotification *notification);
--- a/libpurple/protocols/msn/object.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/object.c	Thu Jun 26 09:07:56 2008 +0000
@@ -23,6 +23,10 @@
  */
 #include "object.h"
 #include "debug.h"
+/* Sha1 stuff */
+#include "cipher.h"
+/* Base64 stuff */
+#include "util.h"
 
 #define GET_STRING_TAG(field, id) \
 	if ((tag = strstr(str, id "=\"")) != NULL) \
@@ -104,6 +108,74 @@
 	return obj;
 }
 
+MsnObject*
+msn_object_new_from_image(PurpleStoredImage *img, const char *location,
+		const char *creator, MsnObjectType type)
+{
+	MsnObject *msnobj;
+
+	PurpleCipherContext *ctx;
+	char *buf;
+	gconstpointer data;
+	size_t size;
+	char *base64;
+	unsigned char digest[20];
+
+	msnobj = NULL;
+
+	if (img == NULL)
+		return msnobj;
+
+	size = purple_imgstore_get_size(img);
+	data = purple_imgstore_get_data(img);
+
+	/* New object */
+	msnobj = msn_object_new();
+	msn_object_set_local(msnobj);
+	msn_object_set_type(msnobj, type);
+	msn_object_set_location(msnobj, location);
+	msn_object_set_creator(msnobj, creator);
+
+	msn_object_set_image(msnobj, img);
+
+	/* Compute the SHA1D field. */
+	memset(digest, 0, sizeof(digest));
+
+	ctx = purple_cipher_context_new_by_name("sha1", NULL);
+	purple_cipher_context_append(ctx, data, size);
+	purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
+
+	base64 = purple_base64_encode(digest, sizeof(digest));
+	msn_object_set_sha1d(msnobj, base64);
+	g_free(base64);
+
+	msn_object_set_size(msnobj, size);
+
+	/* Compute the SHA1C field. */
+	buf = g_strdup_printf(
+		"Creator%sSize%dType%dLocation%sFriendly%sSHA1D%s",
+		msn_object_get_creator(msnobj),
+		msn_object_get_size(msnobj),
+		msn_object_get_type(msnobj),
+		msn_object_get_location(msnobj),
+		msn_object_get_friendly(msnobj),
+		msn_object_get_sha1d(msnobj));
+
+	memset(digest, 0, sizeof(digest));
+
+	purple_cipher_context_reset(ctx, NULL);
+	purple_cipher_context_append(ctx, (const guchar *)buf, strlen(buf));
+	purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
+	purple_cipher_context_destroy(ctx);
+	g_free(buf);
+
+	base64 = purple_base64_encode(digest, sizeof(digest));
+	msn_object_set_sha1c(msnobj, base64);
+	g_free(base64);
+
+	return msnobj;
+}
+
 void
 msn_object_destroy(MsnObject *obj)
 {
--- a/libpurple/protocols/msn/object.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/object.h	Thu Jun 26 09:07:56 2008 +0000
@@ -71,6 +71,19 @@
 MsnObject *msn_object_new_from_string(const char *str);
 
 /**
+ * Creates a MsnObject structure from a stored image
+ *
+ * @param img		The image associated to object
+ * @param location	The object location as stored in MsnObject
+ * @param creator	The creator of the object
+ * @param type		The type of the object
+ *
+ * @return A new MsnObject structure
+ */
+MsnObject *msn_object_new_from_image(PurpleStoredImage *img,
+		const char *location, const char *creator, MsnObjectType type);
+
+/**
  * Destroys an MsnObject structure.
  *
  * @param obj The object structure.
--- a/libpurple/protocols/msn/oim.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/oim.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1,5 +1,5 @@
 /**
- * @file oim.c 
+ * @file oim.c
  * 	get and send MSN offline Instant Message via SOAP request
  *	Author
  * 		MaYuan<mayuan2006@gmail.com>
@@ -91,7 +91,7 @@
 	const char* to_member, const char *msg)
 {
 	MsnOimSendReq *request;
-	
+
 	request = g_new0(MsnOimSendReq, 1);
 	request->from_member	= g_strdup(from_member);
 	request->friendname		= g_strdup(friendname);
@@ -109,7 +109,7 @@
 	g_free(req->friendname);
 	g_free(req->to_member);
 	g_free(req->oim_msg);
-	
+
 	g_free(req);
 }
 
@@ -121,10 +121,10 @@
 msn_oim_msg_to_str(MsnOim *oim, const char *body)
 {
 	char *oim_body,*oim_base64;
-	
-	purple_debug_info("MSN OIM","encode OIM Message...\n");	
+
+	purple_debug_info("MSN OIM","encode OIM Message...\n");
 	oim_base64 = purple_base64_encode((const guchar *)body, strlen(body));
-	purple_debug_info("MSN OIM","encoded base64 body:{%s}\n",oim_base64);	
+	purple_debug_info("MSN OIM","encoded base64 body:{%s}\n",oim_base64);
 	oim_body = g_strdup_printf(MSN_OIM_MSG_TEMPLATE,
 				oim->run_id,oim->send_seq,oim_base64);
 	g_free(oim_base64);
@@ -213,7 +213,7 @@
 }
 
 /*post send single message request to oim server*/
-void 
+void
 msn_oim_send_msg(MsnOim *oim)
 {
 	MsnOimSendReq *oim_request;
@@ -333,7 +333,7 @@
 		gboolean offset_positive = TRUE;
 		int tzhrs;
 		int tzmins;
-		
+
 		for (t.tm_mon = 0;
 			 months[t.tm_mon] != NULL &&
 				 strcmp(months[t.tm_mon], month_str) != 0; t.tm_mon++);
@@ -462,19 +462,22 @@
 	}
 }
 
-static void
-msn_parse_oim_xml(MsnOim *oim, xmlnode *node)
+/* parse the oim XML data
+ * and post it to the soap server to get the Offline Message
+ * */
+void
+msn_parse_oim_msg(MsnOim *oim,const char *xmlmsg)
 {
- 	xmlnode *mNode;
+	xmlnode *node, *mNode;
 	xmlnode *iu_node;
 	MsnSession *session = oim->session;
 
- 	g_return_if_fail(node != NULL);
+	purple_debug_info("MSNP14:OIM", "%s\n", xmlmsg);
 
+	node = xmlnode_from_str(xmlmsg, -1);
 	if (strcmp(node->name, "MD") != 0) {
- 		char *xmlmsg = xmlnode_to_str(node, NULL);
 		purple_debug_info("msnoim", "WTF is this? %s\n", xmlmsg);
-		g_free(xmlmsg);
+		xmlnode_free(node);
 		return;
 	}
 
@@ -525,27 +528,8 @@
 		g_free(rtime);
 		g_free(nickname);
 	}
-}
 
-/* parse the oim XML data
- * and post it to the soap server to get the Offline Message
- * */
-void
-msn_parse_oim_msg(MsnOim *oim,const char *xmlmsg)
-{
-	xmlnode *node;
-
-	purple_debug_info("MSNP14:OIM", "%s\n", xmlmsg);
-
-	if (!strcmp(xmlmsg, "too-large")) {
-		/* Too many OIM's to send via NS, so we need to request them
-		 * via SOAP. */
-		purple_debug_info("msnoim", "too many OIMs, not supported yet\n");
-	} else {
-		node = xmlnode_from_str(xmlmsg, -1);
-		msn_parse_oim_xml(oim, node);
-		xmlnode_free(node);
-	}
+	xmlnode_free(node);
 }
 
 /*Post to get the Offline Instant Message*/
--- a/libpurple/protocols/msn/oim.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/oim.h	Thu Jun 26 09:07:56 2008 +0000
@@ -1,7 +1,7 @@
 /**
  * @file oim.h			Header file for oim.c
  *	Author
- * 		MaYuan<mayuan2006@gmail.com>
+ *		MaYuan<mayuan2006@gmail.com>
  * purple
  *
  * Purple is the legal property of its developers, whose names are too numerous
@@ -127,4 +127,3 @@
 void msn_oim_send_msg(MsnOim *oim);
 
 #endif/* _MSN_OIM_H_*/
-/*endof oim.h*/
--- a/libpurple/protocols/msn/servconn.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/servconn.c	Thu Jun 26 09:07:56 2008 +0000
@@ -396,15 +396,15 @@
 	if (len <= 0) {
 		switch (errno) {
 
-			case 0:	
+			case 0:
 
 			case EBADF:
 			case EAGAIN: return;
-	
+
 			default: purple_debug_error("msn", "servconn read error,"
 						"len: %d, errno: %d, error: %s\n",
 						len, errno, g_strerror(errno));
-				 msn_servconn_got_error(servconn, 
+				 msn_servconn_got_error(servconn,
 						 MSN_SERVCONN_ERROR_READ);
 				 return;
 		}
--- a/libpurple/protocols/msn/session.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/session.h	Thu Jun 26 09:07:56 2008 +0000
@@ -104,7 +104,6 @@
 
 	int servconns_count; /**< The count of server connections. */
 	GList *switches; /**< The list of all the switchboards. */
-	GList *directconns; /**< The list of all the directconnections. */
 	GList *slplinks; /**< The list of all the slplinks. */
 
 	/*psm info*/
--- a/libpurple/protocols/msn/slp.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/slp.c	Thu Jun 26 09:07:56 2008 +0000
@@ -31,6 +31,8 @@
 #include "user.h"
 #include "switchboard.h"
 
+#include "smiley.h"
+
 /* ms to delay between sending buddy icon requests to the server. */
 #define BUDDY_ICON_DELAY 20000
 /*debug SLP*/
@@ -278,23 +280,32 @@
 		type = msn_object_get_type(obj);
 		g_free(msnobj_data);
 
-		if (!(type == MSN_OBJECT_USERTILE))
+		if ((type != MSN_OBJECT_USERTILE) && (type != MSN_OBJECT_EMOTICON))
 		{
 			purple_debug_error("msn", "Wrong object?\n");
 			msn_object_destroy(obj);
 			g_return_if_reached();
 		}
 
-		img = msn_object_get_image(obj);
+		if (type == MSN_OBJECT_EMOTICON) {
+			char *path;
+			path = g_build_filename(purple_smileys_get_storing_dir(),
+					obj->location, NULL);
+			img = purple_imgstore_new_from_file(path);
+			g_free(path);
+		} else {
+			img = msn_object_get_image(obj);
+			if (img)
+				purple_imgstore_ref(img);
+		}
+		msn_object_destroy(obj);
+
 		if (img == NULL)
 		{
 			purple_debug_error("msn", "Wrong object.\n");
-			msn_object_destroy(obj);
 			g_return_if_reached();
 		}
 
-		msn_object_destroy(obj);
-
 		slpsession = msn_slplink_find_slp_session(slplink,
 												  slpcall->session_id);
 
@@ -319,6 +330,7 @@
 #endif
 		msn_slpmsg_set_image(slpmsg, img);
 		msn_slplink_queue_slpmsg(slplink, slpmsg);
+		purple_imgstore_unref(img);
 	}
 	else if (!strcmp(euf_guid, "5D3E02AB-6190-11D3-BBBB-00C04F795683"))
 	{
@@ -935,15 +947,15 @@
 msn_release_buddy_icon_request_timeout(gpointer data)
 {
 	MsnUserList *userlist = (MsnUserList *)data;
-	
+
 	/* Free one window slot */
-	userlist->buddy_icon_window++;	
-	
+	userlist->buddy_icon_window++;
+
 	/* Clear the tag for our former request timer */
 	userlist->buddy_icon_request_timer = 0;
-	
+
 	msn_release_buddy_icon_request(userlist);
-	
+
 	return FALSE;
 }
 
@@ -1050,7 +1062,7 @@
 	}
 
 	/* Wait BUDDY_ICON_DELAY ms before freeing our window slot and requesting the next icon. */
-	userlist->buddy_icon_request_timer = purple_timeout_add(BUDDY_ICON_DELAY, 
+	userlist->buddy_icon_request_timer = purple_timeout_add(BUDDY_ICON_DELAY,
 														  msn_release_buddy_icon_request_timeout, userlist);
 }
 
--- a/libpurple/protocols/msn/slplink.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/slplink.c	Thu Jun 26 09:07:56 2008 +0000
@@ -58,7 +58,7 @@
  * Main
  **************************************************************************/
 
-MsnSlpLink *
+static MsnSlpLink *
 msn_slplink_new(MsnSession *session, const char *username)
 {
 	MsnSlpLink *slplink;
--- a/libpurple/protocols/msn/slplink.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/slplink.h	Thu Jun 26 09:07:56 2008 +0000
@@ -59,11 +59,21 @@
 	GQueue *slp_msg_queue;
 };
 
-MsnSlpLink *msn_slplink_new(MsnSession *session, const char *username);
 void msn_slplink_destroy(MsnSlpLink *slplink);
+
+/**
+ * @return An MsnSlpLink for the given user, or NULL if there is no
+ *         existing MsnSlpLink.
+ */
 MsnSlpLink *msn_session_find_slplink(MsnSession *session,
 									 const char *who);
+
+/**
+ * @return An MsnSlpLink for the given user.  One will be created if
+ *         it does not already exist.
+ */
 MsnSlpLink *msn_session_get_slplink(MsnSession *session, const char *username);
+
 MsnSlpSession *msn_slplink_find_slp_session(MsnSlpLink *slplink,
 											long session_id);
 void msn_slplink_add_slpcall(MsnSlpLink *slplink, MsnSlpCall *slpcall);
--- a/libpurple/protocols/msn/soap.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/soap.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1,5 +1,5 @@
 /**
- * @file soap.c 
+ * @file soap.c
  * 	SOAP connection related process
  *	Author
  * 		MaYuan<mayuan2006@gmail.com>
@@ -107,7 +107,7 @@
 /*ssl soap error callback*/
 static void
 msn_soap_error_cb(PurpleSslConnection *gsc, PurpleSslErrorType error, void *data)
-{	
+{
 	MsnSoapConn * soapconn = data;
 
 	g_return_if_fail(data != NULL);
@@ -159,7 +159,7 @@
 	if (*handler > 0) {
 		purple_input_remove(*handler);
 		*handler = 0;
-	} 
+	}
 #ifdef MSN_SOAP_DEBUG
 	else {
 		purple_debug_misc("MSN SOAP", "Handler inactive, not removing\n");
@@ -250,7 +250,7 @@
 {
 	gssize len, requested_len;
 	char temp_buf[MSN_SOAP_READ_BUFF_SIZE];
-	
+
 	if ( soapconn->need_to_read == 0 || soapconn->need_to_read > MSN_SOAP_READ_BUFF_SIZE) {
 		requested_len = MSN_SOAP_READ_BUFF_SIZE;
 	}
@@ -264,7 +264,7 @@
 		len = read(soapconn->fd, temp_buf, requested_len);
 	}
 
-	
+
 	if ( len <= 0 ) {
 		switch (errno) {
 
@@ -298,7 +298,7 @@
 				soapconn->read_len + len + 1);
 			exit(EXIT_FAILURE);
 		}
-			
+
 	}
 
 #if defined(MSN_SOAP_DEBUG)
@@ -312,7 +312,7 @@
 }
 
 /*read the whole SOAP server response*/
-static void 
+static void
 msn_soap_read_cb(gpointer data, gint source, PurpleInputCondition cond)
 {
 	MsnSoapConn *soapconn = data;
@@ -331,10 +331,10 @@
 	session = soapconn->session;
 	g_return_if_fail(session != NULL);
 
-	
+
 	/*read the request header*/
 	len = msn_soap_read(soapconn);
-	
+
 	if ( len < 0 )
 		return;
 
@@ -342,7 +342,7 @@
 		return;
 	}
 
-	if ( (strstr(soapconn->read_buf, "HTTP/1.1 302") != NULL) 
+	if ( (strstr(soapconn->read_buf, "HTTP/1.1 302") != NULL)
 		|| ( strstr(soapconn->read_buf, "HTTP/1.1 301") != NULL ) )
 	{
 		/* Redirect. */
@@ -382,14 +382,14 @@
 
 		g_free(soapconn->login_host);
 		soapconn->login_host = g_strdup(location);
-		
+
 		msn_soap_close_handler( &(soapconn->input_handler) );
 		msn_soap_close(soapconn);
 
 		if (purple_ssl_connect(session->account, soapconn->login_host,
 			PURPLE_SSL_DEFAULT_PORT, msn_soap_connect_cb,
 			msn_soap_error_cb, soapconn) == NULL) {
-		
+
 			purple_debug_error("MSN SOAP", "Unable to connect to %s !\n", soapconn->login_host);
 			// dispatch next request
 			msn_soap_post(soapconn, NULL);
@@ -429,7 +429,7 @@
 
 		g_free(soapconn->login_host);
 		soapconn->login_host = g_strdup(location);
-		
+
 		msn_soap_close_handler( &(soapconn->input_handler) );
 		msn_soap_close(soapconn);
 
@@ -489,7 +489,7 @@
 				}
 			}
 		}
-		
+
 	}
 	else if (strstr(soapconn->read_buf, "HTTP/1.1 503 Service Unavailable"))
 	{
@@ -539,11 +539,11 @@
 #if defined(MSN_SOAP_DEBUG) && !defined(_WIN32)
 
 		node = xmlnode_from_str(soapconn->body, soapconn->body_len);
-	
+
 		if (node != NULL) {
 			formattedxml = xmlnode_to_formatted_str(node, NULL);
 			http_headers = g_strndup(soapconn->read_buf, soapconn->body - soapconn->read_buf);
-				
+
 			purple_debug_info("MSN SOAP","Data with XML payload received from the SOAP server:\n%s%s\n", http_headers, formattedxml);
 			g_free(http_headers);
 			g_free(formattedxml);
@@ -572,22 +572,22 @@
 		if ( soapconn->read_cb != NULL ) {
 			soapconn_is_valid = soapconn->read_cb(soapconn);
 		}
-		
+
 		if (!soapconn_is_valid) {
 			return;
 		}
 
 		/* dispatch next request in queue */
 		msn_soap_post(soapconn, NULL);
-	}	
+	}
 	return;
 }
 
-void 
+void
 msn_soap_free_read_buf(MsnSoapConn *soapconn)
 {
 	g_return_if_fail(soapconn != NULL);
-	
+
 	if (soapconn->read_buf) {
 		g_free(soapconn->read_buf);
 	}
@@ -626,7 +626,7 @@
 	}
 	total_len = strlen(soapconn->write_buf);
 
-	/* 
+	/*
 	 * write the content to SSL server,
 	 */
 	len = purple_ssl_write(soapconn->gsc,
@@ -690,7 +690,7 @@
 	soapconn->write_buf = write_buf;
 	soapconn->written_len = 0;
 	soapconn->written_cb = written_cb;
-	
+
 	msn_soap_free_read_buf(soapconn);
 
 	/*clear the read buffer first*/
@@ -748,7 +748,7 @@
 {
 	g_return_if_fail(soapconn != NULL);
 	g_return_if_fail(soapconn->soap_queue != NULL);
-	
+
 	if (soapconn->step == MSN_SOAP_CONNECTED ||
 	    soapconn->step == MSN_SOAP_CONNECTED_IDLE) {
 
@@ -868,7 +868,7 @@
 	else
 		purple_debug_info("MSN SOAP","Failed to parse SOAP request being sent:\n%s\n", request_str);
 #endif
-	
+
 	/*free read buffer*/
 	// msn_soap_free_read_buf(soapconn);
 	/*post it to server*/
--- a/libpurple/protocols/msn/soap.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/soap.h	Thu Jun 26 09:07:56 2008 +0000
@@ -66,7 +66,7 @@
 	char *soap_action;
 
 	char *body;
-	
+
 	gpointer data_cb;
 	MsnSoapReadCbFunction read_cb;
 	MsnSoapWrittenCbFunction written_cb;
--- a/libpurple/protocols/msn/soap2.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/soap2.c	Thu Jun 26 09:07:56 2008 +0000
@@ -82,6 +82,7 @@
 
 static void msn_soap_request_destroy(MsnSoapRequest *req);
 static void msn_soap_connection_sanitize(MsnSoapConnection *conn, gboolean disconnect);
+static void msn_soap_process(MsnSoapConnection *conn);
 
 static gboolean
 msn_soap_cleanup_each(gpointer key, gpointer value, gpointer data)
@@ -264,45 +265,53 @@
 msn_soap_read_cb(gpointer data, gint fd, PurpleInputCondition cond)
 {
 	MsnSoapConnection *conn = data;
-	int count = 0, cnt;
-	char buf[8192];
-	char *linebreak;
-	char *cursor;
-	gboolean handled = FALSE;
+	int count = 0, cnt, perrno;
+	/* This buffer needs to be larger than any packets received from
+		login.live.com or Adium will fail to receive the packet
+		(something weird with the login.live.com server). With NSS it works
+		fine, so I believe it's some bug with OS X */ 
+	char buf[16 * 1024];
 
 	if (conn->message == NULL) {
 		conn->message = msn_soap_message_new(NULL, NULL);
 	}
 
+	if (conn->buf == NULL) {
+		conn->buf = g_string_new_len(buf, 0);
+	}
+	
 	while ((cnt = purple_ssl_read(conn->ssl, buf, sizeof(buf))) > 0) {
 		purple_debug_info("soap", "read %d bytes\n", cnt);
 		count += cnt;
-		if (conn->buf == NULL) {
-			conn->buf = g_string_new_len(buf, cnt);
-		} else {
-			g_string_append_len(conn->buf, buf, cnt);
-		}
+		g_string_append_len(conn->buf, buf, cnt);
 	}
 
-	if (cnt < 0) {
-		if (errno != EAGAIN) {
-			purple_debug_info("soap", "read: %s\n", g_strerror(errno));
+	/* && count is necessary for Adium, on OS X the last read always
+	   return an error, so we want to proceed anyway. See #5212 for
+	   discussion on this and the above buffer size issues */
+	if(cnt < 0 && errno == EAGAIN && count == 0)
+		return;
+
+	// msn_soap_process could alter errno
+	perrno = errno;
+	msn_soap_process(conn);
+	
+	if (cnt < 0 && perrno != EAGAIN) {
+		purple_debug_info("soap", "read: %s\n", g_strerror(perrno));
+		// It's possible msn_soap_process closed the ssl connection
+		if (conn->ssl) {
 			purple_ssl_close(conn->ssl);
 			conn->ssl = NULL;
 			msn_soap_connection_handle_next(conn);
-			return;
-		} else if (count == 0) {
-			return;
 		}
 	}
+}
 
-	if (cnt == 0 && count == 0) {
-		purple_debug_info("soap", "msn_soap_read_cb() called, but no data available?\n");
-		purple_ssl_close(conn->ssl);
-		conn->ssl = NULL;
-		msn_soap_connection_handle_next(conn);
-		return;
-	}
+static void
+msn_soap_process(MsnSoapConnection *conn) {
+	gboolean handled = FALSE;
+	char *cursor;
+	char *linebreak;
 
 	purple_debug_info("soap", "current %s\n", conn->buf->str);
 
--- a/libpurple/protocols/msn/state.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/state.c	Thu Jun 26 09:07:56 2008 +0000
@@ -150,7 +150,7 @@
 {
 	xmlnode *payloadNode, *currentmediaNode;
 	char *currentmedia;
-	
+
 	purple_debug_info("msn","msn get CurrentMedia\n");
 	payloadNode = xmlnode_from_str(xml_str, len);
 	if (!payloadNode){
@@ -176,7 +176,7 @@
 {
 	xmlnode *payloadNode, *psmNode;
 	char *psm;
-	
+
 	purple_debug_info("MSNP14","msn get PSM\n");
 	payloadNode = xmlnode_from_str(xml_str, len);
 	if (!payloadNode){
@@ -217,7 +217,7 @@
 	return ret;
 }
 
-/* set the MSN's PSM info,Currently Read from the status Line 
+/* set the MSN's PSM info,Currently Read from the status Line
  * Thanks for Cris Code
  */
 void
--- a/libpurple/protocols/msn/transaction.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/transaction.h	Thu Jun 26 09:07:56 2008 +0000
@@ -62,7 +62,7 @@
 };
 
 MsnTransaction *msn_transaction_new(MsnCmdProc *cmdproc, const char *command,
- 	const char *format, ...) G_GNUC_PRINTF(3, 4);
+	const char *format, ...) G_GNUC_PRINTF(3, 4);
 void msn_transaction_destroy(MsnTransaction *trans);
 
 char *msn_transaction_to_string(MsnTransaction *trans);
--- a/libpurple/protocols/msn/user.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/user.c	Thu Jun 26 09:07:56 2008 +0000
@@ -122,7 +122,7 @@
 					NULL);
 		} else {
 			purple_prpl_got_user_status_deactive(account, user->passport, "tune");
-		}			
+		}
 	}
 
 	if (user->idle)
@@ -239,76 +239,24 @@
 msn_user_unset_op(MsnUser *user, int list_op)
 {
 	g_return_if_fail(user != NULL);
-	
+
 	user->list_op &= ~list_op;
 }
 
 void
 msn_user_set_buddy_icon(MsnUser *user, PurpleStoredImage *img)
 {
-	MsnObject *msnobj = msn_user_get_object(user);
+	MsnObject *msnobj;
 
 	g_return_if_fail(user != NULL);
 
-	if (img == NULL)
-		msn_user_set_object(user, NULL);
-	else
-	{
-		PurpleCipherContext *ctx;
-		char *buf;
-		gconstpointer data = purple_imgstore_get_data(img);
-		size_t size = purple_imgstore_get_size(img);
-		char *base64;
-		unsigned char digest[20];
-
-		if (msnobj == NULL)
-		{
-			msnobj = msn_object_new();
-			msn_object_set_local(msnobj);
-			msn_object_set_type(msnobj, MSN_OBJECT_USERTILE);
-			msn_object_set_location(msnobj, "TFR2C2.tmp");
-			msn_object_set_creator(msnobj, msn_user_get_passport(user));
-
-			msn_user_set_object(user, msnobj);
-		}
-
-		msn_object_set_image(msnobj, img);
-
-		/* Compute the SHA1D field. */
-		memset(digest, 0, sizeof(digest));
+	msnobj = msn_object_new_from_image(img, "TFR2C2.tmp",
+			user->passport, MSN_OBJECT_USERTILE);
 
-		ctx = purple_cipher_context_new_by_name("sha1", NULL);
-		purple_cipher_context_append(ctx, data, size);
-		purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
-
-		base64 = purple_base64_encode(digest, sizeof(digest));
-		msn_object_set_sha1d(msnobj, base64);
-		g_free(base64);
-
-		msn_object_set_size(msnobj, size);
+	if (!msnobj)
+		purple_debug_error("msn", "Unable to open buddy icon from %s!\n", user->passport);
 
-		/* Compute the SHA1C field. */
-		buf = g_strdup_printf(
-			"Creator%sSize%dType%dLocation%sFriendly%sSHA1D%s",
-			msn_object_get_creator(msnobj),
-			msn_object_get_size(msnobj),
-			msn_object_get_type(msnobj),
-			msn_object_get_location(msnobj),
-			msn_object_get_friendly(msnobj),
-			msn_object_get_sha1d(msnobj));
-
-		memset(digest, 0, sizeof(digest));
-
-		purple_cipher_context_reset(ctx, NULL);
-		purple_cipher_context_append(ctx, (const guchar *)buf, strlen(buf));
-		purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
-		purple_cipher_context_destroy(ctx);
-		g_free(buf);
-
-		base64 = purple_base64_encode(digest, sizeof(digest));
-		msn_object_set_sha1c(msnobj, base64);
-		g_free(base64);
-	}
+	msn_user_set_object(user, msnobj);
 }
 
 /*add group id to User object*/
--- a/libpurple/protocols/msn/user.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/user.h	Thu Jun 26 09:07:56 2008 +0000
@@ -57,9 +57,6 @@
  */
 struct _MsnUser
 {
-#if 0
-	MsnSession *session;    /**< The MSN session.               */
-#endif
 	MsnUserList *userlist;
 
 	char *passport;         /**< The passport account.          */
@@ -69,7 +66,7 @@
 	char * uid;				/*< User Id							*/
 
 	const char *status;     /**< The state of the user.         */
-	char *statusline;       /**< The state of the user.         */	
+	char *statusline;       /**< The state of the user.         */
 	CurrentMedia media;     /**< Current media of the user.     */
 
 	gboolean idle;          /**< The idle state of the user.    */
@@ -135,7 +132,7 @@
 
  /**
   *  Sets the new statusline of user.
-  * 
+  *
   *  @param user The user.
   *  @param state The statusline string.
   */
@@ -143,7 +140,7 @@
 
  /**
   *  Sets the current media of user.
-  * 
+  *
   *  @param user   The user.
   *  @param cmedia Current media.
   */
--- a/libpurple/protocols/msn/userlist.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/userlist.c	Thu Jun 26 09:07:56 2008 +0000
@@ -48,7 +48,7 @@
 	{
 		MsnSession *session = pa->gc->proto_data;
 		MsnUserList *userlist = session->userlist;
-		
+
 		msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_AL);
 
 		msn_del_contact_from_list(session->contact, NULL, pa->who, MSN_LIST_PL);
@@ -127,7 +127,7 @@
 
 	if (user == NULL)
 		return FALSE;
-	
+
 	list_op = 1 << list_id;
 
 	if (user->list_op & list_op)
@@ -237,7 +237,7 @@
  		if (convo) {
  			PurpleBuddy *buddy;
  			char *msg;
- 
+
  			buddy = purple_find_buddy(account, passport);
  			msg = g_strdup_printf(
  				_("%s has added you to his or her buddy list."),
@@ -246,7 +246,7 @@
  				PURPLE_MESSAGE_SYSTEM, time(NULL));
  			g_free(msg);
  		}
- 
+
 		if (!(user->list_op & (MSN_LIST_AL_OP | MSN_LIST_BL_OP)))
 		{
 			/*
@@ -341,7 +341,7 @@
 
 	passport = msn_user_get_passport(user);
 	store = msn_user_get_store_name(user);
-	
+
 	msn_user_set_op(user, list_op);
 
 	if (list_op & MSN_LIST_FL_OP)
@@ -407,7 +407,7 @@
 
 	userlist->session = session;
 	userlist->buddy_icon_requests = g_queue_new();
-	
+
 	/* buddy_icon_window is the number of allowed simultaneous buddy icon requests.
 	 * XXX With smarter rate limiting code, we could allow more at once... 5 was the limit set when
 	 * we weren't retrieiving any more than 5 per MSN session. */
@@ -644,12 +644,12 @@
 msn_userlist_rem_buddy(MsnUserList *userlist, const char *who)
 {
 	MsnUser *user = NULL;
-	
+
 	g_return_if_fail(userlist != NULL);
 	g_return_if_fail(userlist->session != NULL);
 	g_return_if_fail(userlist->session->contact != NULL);
 	g_return_if_fail(who != NULL);
-	
+
 	user = msn_userlist_find_user(userlist, who);
 
 	msn_userlist_rem_buddy_from_list(userlist, who, MSN_LIST_FL);
@@ -669,9 +669,9 @@
 	MsnListOp list_op = 1 << list_id;
 
 	user = msn_userlist_find_user(userlist, who);
-	
+
 	g_return_if_fail(user != NULL);
-	
+
 	if ( !msn_userlist_user_is_in_list(user, list_id)) {
 		list = lists[list_id];
 		purple_debug_info("MSN Userlist", "User %s is not in list %s, not removing.\n", who, list);
@@ -690,14 +690,14 @@
 	MsnUser *user;
 	MsnCallbackState *state = NULL;
 	const char *group_id = NULL, *new_group_name;
-	
+
 	new_group_name = group_name == NULL ? MSN_INDIVIDUALS_GROUP_NAME : group_name;
 
-	
+
 	g_return_if_fail(userlist != NULL);
 	g_return_if_fail(userlist->session != NULL);
 
-	
+
 	purple_debug_info("MSN Userlist", "Add user: %s to group: %s\n", who, new_group_name);
 
 	state = msn_callback_state_new(userlist->session);
@@ -709,9 +709,9 @@
 		/* 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 */
-		
+
 		char *str = g_strdup_printf(_("Unable to add \"%s\"."), who);
-		
+
 		purple_notify_error(NULL, NULL, str,
 				  _("The username specified is invalid."));
 		g_free(str);
@@ -725,7 +725,7 @@
 	{
 		/* Whoa, we must add that group first. */
 		purple_debug_info("MSN Userlist", "Adding user %s to a new group, creating group %s first\n", who, new_group_name);
-		
+
 		msn_callback_state_set_action(state, MSN_ADD_BUDDY);
 
 		msn_add_group(userlist->session, state, new_group_name);
@@ -733,9 +733,9 @@
 	} else {
 		msn_callback_state_set_guid(state, group_id);
 	}
-	
+
 	/* XXX: adding user here may not be correct (should add them in the
- 	 * ACK to the ADL command), but for now we need to make sure they exist  
+ 	 * ACK to the ADL command), but for now we need to make sure they exist
 	 * early enough that the ILN command doesn't screw us up */
 
 	user = msn_userlist_find_add_user(userlist, who, who);
@@ -751,7 +751,7 @@
 			return;
 		}
 	}
-			
+
 	purple_debug_info("MSN Userlist", "Adding user: %s to group id: %s\n", who, group_id);
 
 	msn_callback_state_set_action(state, MSN_ADD_BUDDY);
@@ -762,7 +762,7 @@
 }
 
 void
-msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who, 
+msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who,
 							MsnListId list_id)
 {
 	MsnUser *user = NULL;
@@ -770,9 +770,9 @@
 	MsnListOp list_op = 1 << list_id;
 
 	g_return_if_fail(userlist != NULL);
-	
+
 	user = msn_userlist_find_add_user(userlist, who, who);
-	
+
 	/* First we're going to check if it's already there. */
 	if (msn_userlist_user_is_in_list(user, list_id))
 	{
@@ -780,16 +780,16 @@
 		purple_debug_info("MSN Userlist", "User '%s' is already in list: %s\n", who, list);
 		return;
 	}
-	
+
 	//store_name = (user != NULL) ? get_store_name(user) : who;
-	
+
 	//purple_debug_info("MSN Userlist", "store_name = %s\n", store_name);
-	
+
 	/* XXX: see XXX above, this should really be done when we get the response from
 		the server */
-	
+
 	msn_user_set_op(user, list_op);
-	
+
 	msn_notification_add_buddy_to_list(userlist->session->notification, list_id, who);
 }
 
@@ -799,7 +799,7 @@
 {
 	MsnUser *user;
 	gchar * group_id;
-	
+
 	g_return_val_if_fail(userlist != NULL, FALSE);
 	g_return_val_if_fail(group_name != NULL, FALSE);
 	g_return_val_if_fail(who != NULL, FALSE);
@@ -815,7 +815,7 @@
 		purple_debug_error("MSN Userlist", "User %s not found!", who);
 		return FALSE;
 	}
-	
+
 	msn_user_add_group_id(user, group_id);
 
 	return TRUE;
@@ -832,7 +832,7 @@
 	g_return_val_if_fail(userlist != NULL, FALSE);
 	g_return_val_if_fail(group_name != NULL, FALSE);
 	g_return_val_if_fail(who != NULL, FALSE);
-	
+
 	purple_debug_info("MSN Userlist","Removing buddy with passport %s from group %s\n", who, group_name);
 
 	if ( (group_id = msn_userlist_find_group_id(userlist, group_name)) == NULL) {
@@ -856,7 +856,7 @@
 {
 	const char *new_group_id;
 	MsnCallbackState *state;
-	
+
 	g_return_if_fail(userlist != NULL);
 	g_return_if_fail(userlist->session != NULL);
 	g_return_if_fail(userlist->session->contact != NULL);
@@ -870,11 +870,11 @@
 	new_group_id = msn_userlist_find_group_id(userlist, new_group_name);
 
 	if (new_group_id == NULL)
-	{		
+	{
 		msn_add_group(userlist->session, state, new_group_name);
 		return;
 	}
-	
+
 	/* add the contact to the new group, and remove it from the old one in
 	 * the callback
 	*/
@@ -928,6 +928,6 @@
 						(char *)l->data,NULL);
 		msn_user_set_op(user, MSN_LIST_BL_OP);
 	}
-	
+
 }
 
--- a/libpurple/protocols/msn/userlist.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msn/userlist.h	Thu Jun 26 09:07:56 2008 +0000
@@ -45,11 +45,8 @@
 {
 	MsnSession *session;
 
-	/* MsnUsers *users; */
-	/* MsnGroups *groups; */
-
-	GList *users;
-	GList *groups;
+	GList *users; /* Contains MsnUsers */
+	GList *groups; /* Contains MsnGroups */
 
 	GQueue *buddy_icon_requests;
 	int buddy_icon_window;
@@ -94,7 +91,7 @@
 void msn_userlist_remove_group_id(MsnUserList *userlist, const char *group_id);
 
 void msn_userlist_rem_buddy(MsnUserList *userlist, const char *who);
-void msn_userlist_add_buddy(MsnUserList *userlist, 
+void msn_userlist_add_buddy(MsnUserList *userlist,
 			    const char *who, const char *group_name);
 void msn_userlist_move_buddy(MsnUserList *userlist, const char *who,
 						    const char *old_group_name,
@@ -106,7 +103,7 @@
 					   const char *who,
 					   const char *group_name);
 
-void msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who, 
+void msn_userlist_add_buddy_to_list(MsnUserList *userlist, const char *who,
 				    MsnListId list_id);
 void msn_userlist_rem_buddy_from_list(MsnUserList *userlist, const char *who,
 				      MsnListId list_id);
--- a/libpurple/protocols/msnp9/cmdproc.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msnp9/cmdproc.c	Thu Jun 26 09:07:56 2008 +0000
@@ -132,6 +132,14 @@
 		data = g_realloc(data, len + trans->payload_len);
 		memcpy(data + len, trans->payload, trans->payload_len);
 		len += trans->payload_len;
+
+		/*
+		 * We're done with trans->payload.  Free it so that the memory
+		 * doesn't sit around in cmdproc->history.
+		 */
+		g_free(trans->payload);
+		trans->payload = NULL;
+		trans->payload_len = 0;
 	}
 
 	msn_servconn_write(servconn, data, len);
--- a/libpurple/protocols/msnp9/error.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msnp9/error.c	Thu Jun 26 09:07:56 2008 +0000
@@ -43,7 +43,7 @@
 			break;
 		case 201:
 			g_snprintf(msg, sizeof(msg),
-					   _("Invalid e-mail address"));
+					   _("Invalid email address"));
 			break;
 		case 205:
 			g_snprintf(msg, sizeof(msg), _("User does not exist"));
--- a/libpurple/protocols/msnp9/msg.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msnp9/msg.c	Thu Jun 26 09:07:56 2008 +0000
@@ -158,9 +158,9 @@
 	MsnMessage *msg;
 
 	msg = msn_message_new(MSN_MSG_NUDGE);
-	msn_message_set_content_type(msg, "text/x-msnmsgr-datacast\r\n");
+	msn_message_set_content_type(msg, "text/x-msnmsgr-datacast");
 	msn_message_set_flag(msg, 'N');
-	msn_message_set_attr(msg,"ID","1\r\n");
+	msn_message_set_bin_data(msg, "ID: 1\r\n", 7);
 
 	return msg;
 }
--- a/libpurple/protocols/msnp9/msn.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msnp9/msn.c	Thu Jun 26 09:07:56 2008 +0000
@@ -33,6 +33,7 @@
 #include "pluginpref.h"
 #include "prefs.h"
 #include "session.h"
+#include "smiley.h"
 #include "state.h"
 #include "util.h"
 #include "cmds.h"
@@ -83,6 +84,12 @@
 	time_t when;
 } MsnIMData;
 
+typedef struct
+{
+	char *smile;
+	MsnObject *obj;
+} MsnEmoticon;
+
 static const char *
 msn_normalize(const PurpleAccount *account, const char *str)
 {
@@ -116,6 +123,7 @@
 		return FALSE;
 
 	msn_switchboard_send_msg(swboard, msg, TRUE);
+	msn_message_destroy(msg);
 
 	return TRUE;
 }
@@ -133,6 +141,17 @@
 	return list;
 }
 
+static GHashTable *
+msn_get_account_text_table(PurpleAccount *unused)
+{
+	GHashTable *table;
+
+	table = g_hash_table_new(g_str_hash, g_str_equal);
+
+	g_hash_table_insert(table, "login_label", (gpointer)_("Email Address..."));
+
+	return table;
+}
 
 static PurpleCmdRet
 msn_cmd_nudge(PurpleConversation *conv, const gchar *cmd, gchar **args, gchar **error, void *data)
@@ -755,7 +774,8 @@
 	session = msn_session_new(account);
 
 	gc->proto_data = session;
-	gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_FORMATTING_WBFO | PURPLE_CONNECTION_NO_BGCOLOR | PURPLE_CONNECTION_NO_FONTSIZE | PURPLE_CONNECTION_NO_URLDESC;
+	gc->flags |= PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_FORMATTING_WBFO | PURPLE_CONNECTION_NO_BGCOLOR |
+		PURPLE_CONNECTION_NO_FONTSIZE | PURPLE_CONNECTION_NO_URLDESC | PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY;
 
 	msn_session_set_login_step(session, MSN_LOGIN_STEP_START);
 
@@ -796,6 +816,97 @@
 	return FALSE;
 }
 
+static GString*
+msn_msg_emoticon_add(GString *current, MsnEmoticon *emoticon)
+{
+	MsnObject *obj;
+	char *strobj;
+
+	if (emoticon == NULL)
+		return current;
+
+	obj = emoticon->obj;
+
+	if (!obj)
+		return current;
+
+	strobj = msn_object_to_string(obj);
+
+	if (current)
+		g_string_append_printf(current, "\t%s\t%s",
+				emoticon->smile, strobj);
+	else {
+		current = g_string_new("");
+		g_string_printf(current,"%s\t%s",
+					emoticon->smile, strobj);
+	}
+
+	g_free(strobj);
+
+	return current;
+}
+
+static void
+msn_send_emoticons(MsnSwitchBoard *swboard, GString *body)
+{
+	MsnMessage *msg;
+
+	g_return_if_fail(body != NULL);
+
+	msg = msn_message_new(MSN_MSG_SLP);
+	msn_message_set_content_type(msg, "text/x-mms-emoticon");
+	msn_message_set_flag(msg, 'N');
+	msn_message_set_bin_data(msg, body->str, body->len);
+
+	msn_switchboard_send_msg(swboard, msg, TRUE);
+	msn_message_destroy(msg);
+}
+
+static void msn_emoticon_destroy(MsnEmoticon *emoticon)
+{
+	if (emoticon->obj)
+		msn_object_destroy(emoticon->obj);
+	g_free(emoticon->smile);
+	g_free(emoticon);
+}
+
+static GSList* msn_msg_grab_emoticons(const char *msg, const char *username)
+{
+	GSList *list;
+	GList *smileys;
+	PurpleSmiley *smiley;
+	PurpleStoredImage *img;
+	char *ptr;
+	MsnEmoticon *emoticon;
+	int length;
+
+	list = NULL;
+	smileys = purple_smileys_get_all();
+	length = strlen(msg);
+
+	for (; smileys; smileys = g_list_delete_link(smileys, smileys)) {
+		smiley = (PurpleSmiley*)smileys->data;
+
+		ptr = g_strstr_len(msg, length, purple_smiley_get_shortcut(smiley));
+
+		if (!ptr)
+			continue;
+
+		img = purple_smiley_get_stored_image(smiley);
+
+		emoticon = g_new0(MsnEmoticon, 1);
+		emoticon->smile = g_strdup(purple_smiley_get_shortcut(smiley));
+		emoticon->obj = msn_object_new_from_image(img,
+				purple_imgstore_get_filename(img),
+				username, MSN_OBJECT_EMOTICON);
+
+		purple_imgstore_unref(img);
+		list = g_slist_prepend(list, emoticon);
+	}
+
+	return list;
+}
+
 static int
 msn_send_im(PurpleConnection *gc, const char *who, const char *message,
 			PurpleMessageFlags flags)
@@ -805,8 +916,10 @@
 	MsnMessage *msg;
 	char *msgformat;
 	char *msgtext;
+	const char *username;
 
 	account = purple_connection_get_account(gc);
+	username = purple_account_get_username(account);
 
 	if (buddy) {
 		PurplePresence *p = purple_buddy_get_presence(buddy);
@@ -834,13 +947,29 @@
 	g_free(msgformat);
 	g_free(msgtext);
 
-	if (g_ascii_strcasecmp(who, purple_account_get_username(account)))
+	if (g_ascii_strcasecmp(who, username))
 	{
 		MsnSession *session;
 		MsnSwitchBoard *swboard;
+		MsnEmoticon *smile;
+		GSList *smileys;
+		GString *emoticons = NULL;
 
 		session = gc->proto_data;
 		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);
 	}
@@ -1263,7 +1392,7 @@
 	g_free(msgformat);
 	g_free(msgtext);
 
-	serv_got_chat_in(gc, id, purple_account_get_username(account), 0,
+	serv_got_chat_in(gc, id, purple_account_get_username(account), flags,
 					 message, time(NULL));
 
 	return 0;
@@ -1664,7 +1793,7 @@
 	MSN_GOT_INFO_GET_FIELD("Home address", _("Home Address"));
 	MSN_GOT_INFO_GET_FIELD("Personal Mobile", _("Personal Mobile"));
 	MSN_GOT_INFO_GET_FIELD("Home fax", _("Home Fax"));
-	MSN_GOT_INFO_GET_FIELD("Personal e-mail", _("Personal E-Mail"));
+	MSN_GOT_INFO_GET_FIELD("Personal email", _("Personal Email"));
 	MSN_GOT_INFO_GET_FIELD("Personal IM", _("Personal IM"));
 	MSN_GOT_INFO_GET_FIELD("Birthday", _("Birthday"));
 	MSN_GOT_INFO_GET_FIELD("Anniversary", _("Anniversary"));
@@ -1695,7 +1824,7 @@
 	MSN_GOT_INFO_GET_FIELD("Work mobile", _("Work Mobile"));
 	MSN_GOT_INFO_GET_FIELD("Work pager", _("Work Pager"));
 	MSN_GOT_INFO_GET_FIELD("Work fax", _("Work Fax"));
-	MSN_GOT_INFO_GET_FIELD("Work e-mail", _("Work E-Mail"));
+	MSN_GOT_INFO_GET_FIELD("Work email", _("Work Email"));
 	MSN_GOT_INFO_GET_FIELD("Work IM", _("Work IM"));
 	MSN_GOT_INFO_GET_FIELD("Start date", _("Start Date"));
 	MSN_GOT_INFO_GET_FIELD("Notes", _("Notes"));
@@ -2148,8 +2277,8 @@
 	msn_send_attention,                     /* send_attention */
 	msn_attention_types,                    /* attention_types */
 
-	/* padding */
-	NULL
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
+	msn_get_account_text_table,             /* get_account_text_table */
 };
 
 static PurplePluginInfo info =
--- a/libpurple/protocols/msnp9/object.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msnp9/object.c	Thu Jun 26 09:07:56 2008 +0000
@@ -23,6 +23,10 @@
  */
 #include "object.h"
 #include "debug.h"
+/* Sha1 stuff */
+#include "cipher.h"
+/* Base64 stuff */
+#include "util.h"
 
 #define GET_STRING_TAG(field, id) \
 	if ((tag = strstr(str, id "=\"")) != NULL) \
@@ -104,6 +108,74 @@
 	return obj;
 }
 
+MsnObject*
+msn_object_new_from_image(PurpleStoredImage *img, const char *location,
+		const char *creator, MsnObjectType type)
+{
+	MsnObject *msnobj;
+
+	PurpleCipherContext *ctx;
+	char *buf;
+	gconstpointer data;
+	size_t size;
+	char *base64;
+	unsigned char digest[20];
+
+	msnobj = NULL;
+
+	if (img == NULL)
+		return msnobj;
+
+	size = purple_imgstore_get_size(img);
+	data = purple_imgstore_get_data(img);
+
+	/* New object */
+	msnobj = msn_object_new();
+	msn_object_set_local(msnobj);
+	msn_object_set_type(msnobj, type);
+	msn_object_set_location(msnobj, location);
+	msn_object_set_creator(msnobj, creator);
+
+	msn_object_set_image(msnobj, img);
+
+	/* Compute the SHA1D field. */
+	memset(digest, 0, sizeof(digest));
+
+	ctx = purple_cipher_context_new_by_name("sha1", NULL);
+	purple_cipher_context_append(ctx, data, size);
+	purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
+
+	base64 = purple_base64_encode(digest, sizeof(digest));
+	msn_object_set_sha1d(msnobj, base64);
+	g_free(base64);
+
+	msn_object_set_size(msnobj, size);
+
+	/* Compute the SHA1C field. */
+	buf = g_strdup_printf(
+		"Creator%sSize%dType%dLocation%sFriendly%sSHA1D%s",
+		msn_object_get_creator(msnobj),
+		msn_object_get_size(msnobj),
+		msn_object_get_type(msnobj),
+		msn_object_get_location(msnobj),
+		msn_object_get_friendly(msnobj),
+		msn_object_get_sha1d(msnobj));
+
+	memset(digest, 0, sizeof(digest));
+
+	purple_cipher_context_reset(ctx, NULL);
+	purple_cipher_context_append(ctx, (const guchar *)buf, strlen(buf));
+	purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
+	purple_cipher_context_destroy(ctx);
+	g_free(buf);
+
+	base64 = purple_base64_encode(digest, sizeof(digest));
+	msn_object_set_sha1c(msnobj, base64);
+	g_free(base64);
+
+	return msnobj;
+}
+
 void
 msn_object_destroy(MsnObject *obj)
 {
--- a/libpurple/protocols/msnp9/object.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msnp9/object.h	Thu Jun 26 09:07:56 2008 +0000
@@ -71,6 +71,19 @@
 MsnObject *msn_object_new_from_string(const char *str);
 
 /**
+ * Creates a MsnObject structure from a stored image
+ *
+ * @param img		The image associated to object
+ * @param location	The object location as stored in MsnObject
+ * @param creator	The creator of the object
+ * @param type		The type of the object
+ *
+ * @return A new MsnObject structure
+ */
+MsnObject *msn_object_new_from_image(PurpleStoredImage *img,
+		const char *location, const char *creator, MsnObjectType type);
+
+/**
  * Destroys an MsnObject structure.
  *
  * @param obj The object structure.
--- a/libpurple/protocols/msnp9/slp.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msnp9/slp.c	Thu Jun 26 09:07:56 2008 +0000
@@ -31,6 +31,8 @@
 #include "user.h"
 #include "switchboard.h"
 
+#include "smiley.h"
+
 /* ms to delay between sending buddy icon requests to the server. */
 #define BUDDY_ICON_DELAY 20000
 
@@ -276,23 +278,32 @@
 		type = msn_object_get_type(obj);
 		g_free(msnobj_data);
 
-		if (!(type == MSN_OBJECT_USERTILE))
+		if ((type != MSN_OBJECT_USERTILE) && (type != MSN_OBJECT_EMOTICON))
 		{
 			purple_debug_error("msn", "Wrong object?\n");
 			msn_object_destroy(obj);
 			g_return_if_reached();
 		}
 
-		img = msn_object_get_image(obj);
+		if (type == MSN_OBJECT_EMOTICON) {
+			char *path;
+			path = g_build_filename(purple_smileys_get_storing_dir(),
+					obj->location, NULL);
+			img = purple_imgstore_new_from_file(path);
+			g_free(path);
+		} else {
+			img = msn_object_get_image(obj);
+			if (img)
+				purple_imgstore_ref(img);
+		}
+		msn_object_destroy(obj);
+
 		if (img == NULL)
 		{
 			purple_debug_error("msn", "Wrong object.\n");
-			msn_object_destroy(obj);
 			g_return_if_reached();
 		}
 
-		msn_object_destroy(obj);
-
 		slpsession = msn_slplink_find_slp_session(slplink,
 												  slpcall->session_id);
 
@@ -317,6 +328,7 @@
 #endif
 		msn_slpmsg_set_image(slpmsg, img);
 		msn_slplink_queue_slpmsg(slplink, slpmsg);
+		purple_imgstore_unref(img);
 	}
 	else if (!strcmp(euf_guid, "5D3E02AB-6190-11D3-BBBB-00C04F795683"))
 	{
--- a/libpurple/protocols/msnp9/user.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/msnp9/user.c	Thu Jun 26 09:07:56 2008 +0000
@@ -153,69 +153,17 @@
 void
 msn_user_set_buddy_icon(MsnUser *user, PurpleStoredImage *img)
 {
-	MsnObject *msnobj = msn_user_get_object(user);
+	MsnObject *msnobj = NULL;
 
 	g_return_if_fail(user != NULL);
 
-	if (img == NULL)
-		msn_user_set_object(user, NULL);
-	else
-	{
-		PurpleCipherContext *ctx;
-		char *buf;
-		gconstpointer data = purple_imgstore_get_data(img);
-		size_t size = purple_imgstore_get_size(img);
-		char *base64;
-		unsigned char digest[20];
-
-		if (msnobj == NULL)
-		{
-			msnobj = msn_object_new();
-			msn_object_set_local(msnobj);
-			msn_object_set_type(msnobj, MSN_OBJECT_USERTILE);
-			msn_object_set_location(msnobj, "TFR2C2.tmp");
-			msn_object_set_creator(msnobj, msn_user_get_passport(user));
-
-			msn_user_set_object(user, msnobj);
-		}
-
-		msn_object_set_image(msnobj, img);
-
-		/* Compute the SHA1D field. */
-		memset(digest, 0, sizeof(digest));
+	msnobj = msn_object_new_from_image(img, "TFR2C2.tmp",
+			user->passport, MSN_OBJECT_USERTILE);
 
-		ctx = purple_cipher_context_new_by_name("sha1", NULL);
-		purple_cipher_context_append(ctx, data, size);
-		purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
-
-		base64 = purple_base64_encode(digest, sizeof(digest));
-		msn_object_set_sha1d(msnobj, base64);
-		g_free(base64);
-
-		msn_object_set_size(msnobj, size);
+	if(!msnobj)
+		purple_debug_error("msn", "Unable to open buddy icon from %s!\n", user->passport);
 
-		/* Compute the SHA1C field. */
-		buf = g_strdup_printf(
-			"Creator%sSize%dType%dLocation%sFriendly%sSHA1D%s",
-			msn_object_get_creator(msnobj),
-			msn_object_get_size(msnobj),
-			msn_object_get_type(msnobj),
-			msn_object_get_location(msnobj),
-			msn_object_get_friendly(msnobj),
-			msn_object_get_sha1d(msnobj));
-
-		memset(digest, 0, sizeof(digest));
-
-		purple_cipher_context_reset(ctx, NULL);
-		purple_cipher_context_append(ctx, (const guchar *)buf, strlen(buf));
-		purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
-		purple_cipher_context_destroy(ctx);
-		g_free(buf);
-
-		base64 = purple_base64_encode(digest, sizeof(digest));
-		msn_object_set_sha1c(msnobj, base64);
-		g_free(base64);
-	}
+	msn_user_set_object(user, msnobj);
 }
 
 void
--- a/libpurple/protocols/myspace/myspace.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/myspace/myspace.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1328,7 +1328,10 @@
 	delta = time(NULL) - session->last_comm;
 	/* purple_debug_info("msim", "msim_check_alive: delta=%d\n", delta); */
 	if (delta >= MSIM_KEEPALIVE_INTERVAL) {
-		errmsg = g_strdup_printf(_("Connection to server lost (no data received within %d seconds)"), (int)delta);
+	        errmsg = g_strdup_printf(ngettext("Connection to server lost (no data received within %d second)",
+						  "Connection to server lost (no data received within %d seconds)",
+						  (int)delta),
+					 (int)delta);
 
 		purple_debug_info("msim", "msim_check_alive: %s > interval of %d, presumed dead\n",
 				errmsg, MSIM_KEEPALIVE_INTERVAL);
@@ -2404,7 +2407,7 @@
 		const char *username;
 
 		/* If the account does not exist, we can't look up the user. */
-		if (!account)
+		if (!account || !account->gc)
 			return str;
 
 		id = atol(str);
@@ -2449,6 +2452,18 @@
 	return normalized;
 }
 
+static GHashTable *
+msim_get_account_text_table(PurpleAccount *unused)
+{
+	GHashTable *table;
+
+	table = g_hash_table_new(g_str_hash, g_str_equal);
+
+	g_hash_table_insert(table, "login_label", (gpointer)_("Email Address..."));
+
+	return table;
+}
+
 /** Return whether the buddy can be messaged while offline.
  *
  * The protocol supports offline messages in just the same way as online
@@ -2934,7 +2949,10 @@
 
 	switch (GPOINTER_TO_UINT(user_data)) {
 		case MSIM_CONTACT_LIST_IMPORT_ALL_FRIENDS:
-			msg = g_strdup_printf(_("%d buddies were added or updated from the server (including buddies already on the server-side list)"), buddy_count);
+		        msg = g_strdup_printf(ngettext("%d buddy was added or updated from the server (including buddies already on the server-side list)",
+						       "%d buddies were added or updated from the server (including buddies already on the server-side list)",
+						       buddy_count),
+					      buddy_count);
 			purple_notify_info(session->account, _("Add contacts from server"), msg, NULL);
 			g_free(msg);
 			break;
@@ -3128,14 +3146,16 @@
 	NULL,                  /* unregister_user */
 	msim_send_attention,   /* send_attention */
 	msim_attention_types,  /* attention_types */
-	NULL                /* _purple_reserved4 */
+
+	sizeof(PurplePluginProtocolInfo),  /* struct_size */
+	msim_get_account_text_table,              /* get_account_text_table */
 };
 
 
 
 /** Based on MSN's plugin info comments. */
 static PurplePluginInfo info = {
-	PURPLE_PLUGIN_MAGIC,                                
+	PURPLE_PLUGIN_MAGIC,
 	PURPLE_MAJOR_VERSION,
 	PURPLE_MINOR_VERSION,
 	PURPLE_PLUGIN_PROTOCOL,                           /**< type           */
--- a/libpurple/protocols/myspace/user.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/myspace/user.c	Thu Jun 26 09:07:56 2008 +0000
@@ -635,7 +635,7 @@
 	if (!body) {
 		purple_debug_info("msim_username_is_available_cb", "No body for %s?!\n", username);
 		purple_connection_error_reason(session->gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, 
-				"An error occured while trying to set the username.\n"
+				"An error occurred while trying to set the username.\n"
 				"Please try again, or visit http://editprofile.myspace.com/index.cfm?"
 				"fuseaction=profile.username to set your username.");
 		return;
@@ -778,7 +778,7 @@
 	uid = msim_msg_get_integer(userinfo, "uid");
 	lid = msim_msg_get_integer(userinfo, "lid");
 	body = msim_msg_get_dictionary(userinfo, "body");
-	errmsg = g_strdup("An error occured while trying to set the username.\n"
+	errmsg = g_strdup("An error occurred while trying to set the username.\n"
 			"Please try again, or visit http://editprofile.myspace.com/index.cfm?"
 			"fuseaction=profile.username to set your username.");
 	
--- a/libpurple/protocols/novell/novell.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/novell/novell.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1494,7 +1494,7 @@
 	else if (strcmp(tag, "mailstop") == 0)
 		return _("Mailstop");
 	else if (strcmp(tag, "Internet EMail Address") == 0)
-		return _("E-Mail Address");
+		return _("Email Address");
 	else
 		return tag;
 }
@@ -2506,7 +2506,7 @@
 						}
 					}
 
-					serv_got_chat_in(gc, id, name, 0, text, time(NULL));
+					serv_got_chat_in(gc, id, name, flags, text, time(NULL));
 					return 0;
 				} else
 					return -1;
@@ -3517,6 +3517,7 @@
 	NULL,
 	NULL,
 	NULL,
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/oscar/family_admin.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_admin.c	Thu Jun 26 09:07:56 2008 +0000
@@ -47,8 +47,8 @@
 	byte_stream_put16(&bs, info);
 	byte_stream_put16(&bs, 0x0000);
 
-	snacid = aim_cachesnac(od, 0x0007, 0x0002, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0007, 0x0002, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ADMIN, 0x0002, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ADMIN, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -127,8 +127,8 @@
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	snacid = aim_cachesnac(od, 0x0007, 0x0004, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0007, 0x0004, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ADMIN, 0x0004, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ADMIN, 0x0004, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -154,8 +154,8 @@
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	snacid = aim_cachesnac(od, 0x0007, 0x0004, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0007, 0x0004, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ADMIN, 0x0004, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ADMIN, 0x0004, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -177,8 +177,8 @@
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	snacid = aim_cachesnac(od, 0x0007, 0x0004, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0007, 0x0004, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ADMIN, 0x0004, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ADMIN, 0x0004, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -194,11 +194,11 @@
 void
 aim_admin_reqconfirm(OscarData *od, FlapConnection *conn)
 {
-	aim_genericreq_n(od, conn, 0x0007, 0x0006);
+	aim_genericreq_n(od, conn, SNAC_FAMILY_ADMIN, 0x0006);
 }
 
 /**
- * Subtype 0x0007 - Account confirmation request acknowledgement.
+ * Subtype SNAC_FAMILY_ADMIN - Account confirmation request acknowledgement.
  */
 static int
 accountconfirm(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, ByteStream *bs)
@@ -227,7 +227,7 @@
 	if ((snac->subtype == 0x0003) || (snac->subtype == 0x0005)) {
 		infochange(od, conn, mod, frame, snac, bs);
 		return 1;
-	} else if (snac->subtype == 0x0007)
+	} else if (snac->subtype == SNAC_FAMILY_ADMIN)
 		return accountconfirm(od, conn, mod, frame, snac, bs);
 
 	return 0;
@@ -235,7 +235,7 @@
 
 int admin_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0007;
+	mod->family = SNAC_FAMILY_ADMIN;
 	mod->version = 0x0001;
 	mod->toolid = 0x0010;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_advert.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_advert.c	Thu Jun 26 09:07:56 2008 +0000
@@ -28,7 +28,7 @@
 void
 aim_ads_requestads(OscarData *od, FlapConnection *conn)
 {
-	aim_genericreq_n(od, conn, 0x0005, 0x0002);
+	aim_genericreq_n(od, conn, SNAC_FAMILY_ADVERT, 0x0002);
 }
 
 static int snachandler(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *rx, aim_modsnac_t *snac, ByteStream *bs)
@@ -39,7 +39,7 @@
 int adverts_modfirst(OscarData *od, aim_module_t *mod)
 {
 
-	mod->family = 0x0005;
+	mod->family = SNAC_FAMILY_ADVERT;
 	mod->version = 0x0001;
 	mod->toolid = 0x0001;
 	mod->toolversion = 0x0001;
--- a/libpurple/protocols/oscar/family_alert.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_alert.c	Thu Jun 26 09:07:56 2008 +0000
@@ -72,8 +72,8 @@
 	byte_stream_put16(&bs, 0xb0ee);
 	byte_stream_put16(&bs, 0x0631);
 
-	snacid = aim_cachesnac(od, 0x0018, 0x0006, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0018, 0x0006, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ALERT, 0x0006, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ALERT, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -188,8 +188,8 @@
 	byte_stream_put32(&bs, 0x04000000);
 	byte_stream_put32(&bs, 0x00000000);
 
-	snacid = aim_cachesnac(od, 0x0018, 0x0016, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0018, 0x0006, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ALERT, 0x0016, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ALERT, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -225,7 +225,7 @@
 int
 email_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0018;
+	mod->family = SNAC_FAMILY_ALERT;
 	mod->version = 0x0001;
 	mod->toolid = 0x0010;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_auth.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_auth.c	Thu Jun 26 09:07:56 2008 +0000
@@ -81,12 +81,9 @@
 static int
 aim_encode_password_md5(const char *password, size_t password_len, const char *key, guint8 *digest)
 {
-	PurpleCipher *cipher;
 	PurpleCipherContext *context;
 
-	cipher = purple_ciphers_find_cipher("md5");
-
-	context = purple_cipher_context_new(cipher, NULL);
+	context = purple_cipher_context_new_by_name("md5", NULL);
 	purple_cipher_context_append(context, (const guchar *)key, strlen(key));
 	purple_cipher_context_append(context, (const guchar *)password, password_len);
 	purple_cipher_context_append(context, (const guchar *)AIM_MD5_STRING, strlen(AIM_MD5_STRING));
@@ -200,9 +197,13 @@
  *        usually happens for AOL accounts.  We are told that we
  *        should truncate it if the 0x0017/0x0007 SNAC contains
  *        a TLV of type 0x0026 with data 0x0000.
+ * @param allow_multiple_logins Allow multiple logins? If TRUE, the AIM
+ *        server will prompt the user when multiple logins occur. If
+ *        FALSE, existing connections (on other clients) will be
+ *        disconnected automatically as we connect.
  */
 int
-aim_send_login(OscarData *od, FlapConnection *conn, const char *sn, const char *password, gboolean truncate_pass, ClientInfo *ci, const char *key)
+aim_send_login(OscarData *od, FlapConnection *conn, const char *sn, const char *password, gboolean truncate_pass, ClientInfo *ci, const char *key, gboolean allow_multiple_logins)
 {
 	FlapFrame *frame;
 	GSList *tlvlist = NULL;
@@ -221,8 +222,8 @@
 
 	frame = flap_frame_new(od, 0x02, 1152);
 
-	snacid = aim_cachesnac(od, 0x0017, 0x0002, 0x0000, NULL, 0);
-	aim_putsnac(&frame->data, 0x0017, 0x0002, 0x0000, snacid);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_AUTH, 0x0002, 0x0000, NULL, 0);
+	aim_putsnac(&frame->data, SNAC_FAMILY_AUTH, 0x0002, 0x0000, snacid);
 
 	aim_tlvlist_add_str(&tlvlist, 0x0001, sn);
 
@@ -256,7 +257,7 @@
 	 * If set, old-fashioned buddy lists will not work. You will need
 	 * to use SSI.
 	 */
-	aim_tlvlist_add_8(&tlvlist, 0x004a, 0x01);
+	aim_tlvlist_add_8(&tlvlist, 0x004a, (allow_multiple_logins ? 0x01 : 0x02));
 
 	aim_tlvlist_write(&frame->data, &tlvlist);
 
@@ -403,7 +404,7 @@
 
 	od->authinfo = info;
 
-	if ((userfunc = aim_callhandler(od, snac ? snac->family : 0x0017, snac ? snac->subtype : 0x0003)))
+	if ((userfunc = aim_callhandler(od, snac ? snac->family : SNAC_FAMILY_AUTH, snac ? snac->subtype : 0x0003)))
 		ret = userfunc(od, conn, frame, info);
 
 	aim_tlvlist_free(tlvlist);
@@ -449,7 +450,7 @@
 	FlapFrame frame;
 	aim_rxcallback_t userfunc;
 
-	if ((userfunc = aim_callhandler(od, 0x0017, 0x0007)))
+	if ((userfunc = aim_callhandler(od, SNAC_FAMILY_AUTH, 0x0007)))
 		userfunc(od, conn, &frame, "");
 
 	return 0;
@@ -483,8 +484,8 @@
 
 	frame = flap_frame_new(od, 0x02, 10+2+2+strlen(sn)+8);
 
-	snacid = aim_cachesnac(od, 0x0017, 0x0006, 0x0000, NULL, 0);
-	aim_putsnac(&frame->data, 0x0017, 0x0006, 0x0000, snacid);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_AUTH, 0x0006, 0x0000, NULL, 0);
+	aim_putsnac(&frame->data, SNAC_FAMILY_AUTH, 0x0006, 0x0000, snacid);
 
 	aim_tlvlist_add_str(&tlvlist, 0x0001, sn);
 
@@ -628,7 +629,7 @@
 int
 auth_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0017;
+	mod->family = SNAC_FAMILY_AUTH;
 	mod->version = 0x0000;
 	mod->flags = 0;
 	strncpy(mod->name, "auth", sizeof(mod->name));
--- a/libpurple/protocols/oscar/family_bart.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_bart.c	Thu Jun 26 09:07:56 2008 +0000
@@ -43,7 +43,7 @@
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0010)) || !icon || !iconlen)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_BART)) || !icon || !iconlen)
 		return -EINVAL;
 
 	byte_stream_new(&bs, 2 + 2 + iconlen);
@@ -55,8 +55,8 @@
 	byte_stream_put16(&bs, iconlen);
 	byte_stream_putraw(&bs, icon, iconlen);
 
-	snacid = aim_cachesnac(od, 0x0010, 0x0002, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0010, 0x0002, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_BART, 0x0002, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_BART, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -102,7 +102,7 @@
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0010)) || !sn || !strlen(sn) || !iconcsum || !iconcsumlen)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_BART)) || !sn || !strlen(sn) || !iconcsum || !iconcsumlen)
 		return -EINVAL;
 
 	byte_stream_new(&bs, 1+strlen(sn) + 4 + 1+iconcsumlen);
@@ -120,8 +120,8 @@
 	byte_stream_put8(&bs, iconcsumlen);
 	byte_stream_putraw(&bs, iconcsum, iconcsumlen);
 
-	snacid = aim_cachesnac(od, 0x0010, 0x0004, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0010, 0x0004, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_BART, 0x0004, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_BART, 0x0004, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -174,7 +174,7 @@
 int
 bart_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0010;
+	mod->family = SNAC_FAMILY_BART;
 	mod->version = 0x0001;
 	mod->toolid = 0x0010;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_bos.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_bos.c	Thu Jun 26 09:07:56 2008 +0000
@@ -32,7 +32,7 @@
 void
 aim_bos_reqrights(OscarData *od, FlapConnection *conn)
 {
-	aim_genericreq_n_snacid(od, conn, 0x0009, 0x0002);
+	aim_genericreq_n_snacid(od, conn, SNAC_FAMILY_BOS, 0x0002);
 }
 
 /* Subtype 0x0003 - BOS Rights. */
@@ -81,7 +81,7 @@
 void
 aim_bos_setgroupperm(OscarData *od, FlapConnection *conn, guint32 mask)
 {
-	aim_genericreq_l(od, conn, 0x0009, 0x0004, &mask);
+	aim_genericreq_l(od, conn, SNAC_FAMILY_BOS, 0x0004, &mask);
 }
 
 /*
@@ -153,8 +153,8 @@
 	}
 	g_free(localcpy);
 
-	snacid = aim_cachesnac(od, 0x0009, subtype, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0009, subtype, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_BOS, subtype, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_BOS, subtype, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -173,7 +173,7 @@
 int
 bos_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0009;
+	mod->family = SNAC_FAMILY_BOS;
 	mod->version = 0x0001;
 	mod->toolid = 0x0110;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_buddy.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_buddy.c	Thu Jun 26 09:07:56 2008 +0000
@@ -108,8 +108,8 @@
 	byte_stream_put8(&bs, strlen(sn));
 	byte_stream_putstr(&bs, sn);
 
-	snacid = aim_cachesnac(od, 0x0003, 0x0004, 0x0000, sn, strlen(sn)+1);
-	flap_connection_send_snac(od, conn, 0x0003, 0x0004, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_BUDDY, 0x0004, 0x0000, sn, strlen(sn)+1);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_BUDDY, 0x0004, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -159,8 +159,8 @@
 		tmpptr = strtok(NULL, "&");
 	}
 
-	snacid = aim_cachesnac(od, 0x0003, 0x0004, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0003, 0x0004, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_BUDDY, 0x0004, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_BUDDY, 0x0004, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -190,8 +190,8 @@
 	byte_stream_put8(&bs, strlen(sn));
 	byte_stream_putstr(&bs, sn);
 
-	snacid = aim_cachesnac(od, 0x0003, 0x0005, 0x0000, sn, strlen(sn)+1);
-	flap_connection_send_snac(od, conn, 0x0003, 0x0005, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_BUDDY, 0x0005, 0x0000, sn, strlen(sn)+1);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_BUDDY, 0x0005, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -243,7 +243,7 @@
 int
 buddylist_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0003;
+	mod->family = SNAC_FAMILY_BUDDY;
 	mod->version = 0x0001;
 	mod->toolid = 0x0110;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_chat.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_chat.c	Thu Jun 26 09:07:56 2008 +0000
@@ -364,7 +364,7 @@
 
 	byte_stream_new(&bs, 1142);
 
-	snacid = aim_cachesnac(od, 0x000e, 0x0005, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_CHAT, 0x0005, 0x0000, NULL, 0);
 
 	/*
 	 * Cookie
@@ -432,7 +432,7 @@
 	aim_tlvlist_free(inner_tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x000e, 0x0005, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_CHAT, 0x0005, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -594,7 +594,7 @@
 int
 chat_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x000e;
+	mod->family = SNAC_FAMILY_CHAT;
 	mod->version = 0x0001;
 	mod->toolid = 0x0010;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_chatnav.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_chatnav.c	Thu Jun 26 09:07:56 2008 +0000
@@ -42,7 +42,7 @@
 		return 0;
 	}
 
-	if (snac2->family != 0x000d) {
+	if (snac2->family != SNAC_FAMILY_CHATNAV) {
 		purple_debug_warning("oscar", "chatnav error: received response that maps to corrupt request (fam=%04x)\n", snac2->family);
 		return 0;
 	}
@@ -80,7 +80,7 @@
  */
 void aim_chatnav_reqrights(OscarData *od, FlapConnection *conn)
 {
-	aim_genericreq_n_snacid(od, conn, 0x000d, 0x0002);
+	aim_genericreq_n_snacid(od, conn, SNAC_FAMILY_CHATNAV, 0x0002);
 }
 
 /*
@@ -97,7 +97,7 @@
 
 	byte_stream_new(&bs, 1142);
 
-	snacid = aim_cachesnac(od, 0x000d, 0x0008, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_CHATNAV, 0x0008, 0x0000, NULL, 0);
 
 	/* exchange */
 	byte_stream_put16(&bs, exchange);
@@ -137,7 +137,7 @@
 
 	aim_tlvlist_free(tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x000d, 0x0008, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_CHATNAV, 0x0008, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -460,7 +460,7 @@
 		return 0;
 	}
 
-	if (snac2->family != 0x000d) {
+	if (snac2->family != SNAC_FAMILY_CHATNAV) {
 		purple_debug_misc("oscar", "faim: chatnav_parse_info: received response that maps to corrupt request! (fam=%04x)\n", snac2->family);
 		return 0;
 	}
@@ -506,7 +506,7 @@
 int
 chatnav_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x000d;
+	mod->family = SNAC_FAMILY_CHATNAV;
 	mod->version = 0x0001;
 	mod->toolid = 0x0010;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_icbm.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_icbm.c	Thu Jun 26 09:07:56 2008 +0000
@@ -164,7 +164,7 @@
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0004)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
 	if (!params)
@@ -182,8 +182,8 @@
 	byte_stream_put16(&bs, params->maxrecverwarn);
 	byte_stream_put32(&bs, params->minmsginterval);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0002, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0004, 0x0002, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0002, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -198,10 +198,10 @@
 {
 	FlapConnection *conn;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0004)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
-	aim_genericreq_n_snacid(od, conn, 0x0004, 0x0004);
+	aim_genericreq_n_snacid(od, conn, SNAC_FAMILY_ICBM, 0x0004);
 
 	return 0;
 }
@@ -237,7 +237,7 @@
  * Possible flags:
  *   AIM_IMFLAGS_AWAY  -- Marks the message as an autoresponse
  *   AIM_IMFLAGS_ACK   -- Requests that the server send an ack
- *                        when the message is received (of type 0x0004/0x000c)
+ *                        when the message is received (of type SNAC_FAMILY_ICBM/0x000c)
  *   AIM_IMFLAGS_OFFLINE--If destination is offline, store it until they are
  *                        online (probably ICQ only).
  *
@@ -280,7 +280,7 @@
 	int msgtlvlen;
 	static const guint8 deffeatures[] = { 0x01, 0x01, 0x01, 0x02 };
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0004)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
 	if (!args)
@@ -410,9 +410,9 @@
 	}
 
 	/* XXX - should be optional */
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, args->destsn, strlen(args->destsn)+1);
-
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &data);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, args->destsn, strlen(args->destsn)+1);
+
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &data);
 	byte_stream_destroy(&data);
 
 	/* clean out SNACs over 60sec old */
@@ -462,7 +462,7 @@
 	GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL;
 	ByteStream hdrbs;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0004)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
 	if (!sn || !msg || !roomname)
@@ -472,7 +472,7 @@
 
 	byte_stream_new(&bs, 1142+strlen(sn)+strlen(roomname)+strlen(msg));
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, sn, strlen(sn)+1);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, sn, strlen(sn)+1);
 
 	/* XXX should be uncached by an unwritten 'invite accept' handler */
 	priv = g_malloc(sizeof(struct aim_invite_priv));
@@ -519,7 +519,7 @@
 	aim_tlvlist_free(inner_tlvlist);
 	aim_tlvlist_free(outer_tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -539,7 +539,7 @@
 	aim_snacid_t snacid;
 	guchar cookie[8];
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0004)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
 	if (!sn || !icon || (iconlen <= 0) || (iconlen >= MAXICONLEN))
@@ -549,7 +549,7 @@
 
 	byte_stream_new(&bs, 8+2+1+strlen(sn)+2+2+2+8+16+2+2+2+2+2+2+2+4+4+4+iconlen+strlen(AIM_ICONIDENT)+2+2);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
 	aim_im_puticbm(&bs, cookie, 0x0002, sn);
@@ -589,7 +589,7 @@
 	byte_stream_put16(&bs, 0x0003);
 	byte_stream_put16(&bs, 0x0000);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -620,7 +620,7 @@
 	const char rtfcap[] = {"{97B12751-243C-4334-AD22-D6ABF73F1492}"}; /* OSCAR_CAPABILITY_ICQRTF capability in string form */
 	int servdatalen;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0004)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
 	if (!args || !args->destsn || !args->rtfmsg)
@@ -632,7 +632,7 @@
 
 	byte_stream_new(&bs, 128+servdatalen);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
 	aim_im_puticbm(&bs, cookie, 0x0002, args->destsn);
@@ -682,7 +682,7 @@
 	byte_stream_putle32(&bs, strlen(rtfcap)+1);
 	byte_stream_putraw(&bs, (const guint8 *)rtfcap, strlen(rtfcap)+1);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -704,13 +704,13 @@
 	ByteStream hdrbs;
 
 	od = peer_conn->od;
-	conn = flap_connection_findbygroup(od, 0x0004);
+	conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM);
 	if (conn == NULL)
 		return;
 
 	byte_stream_new(&bs, 118+strlen(peer_conn->sn));
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
 	aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->sn);
@@ -735,7 +735,7 @@
 	aim_tlvlist_free(inner_tlvlist);
 	aim_tlvlist_free(outer_tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -753,13 +753,13 @@
 	aim_snacid_t snacid;
 
 	od = peer_conn->od;
-	conn = flap_connection_findbygroup(od, 0x0004);
+	conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM);
 	if (conn == NULL)
 		return;
 
 	byte_stream_new(&bs, 11+strlen(peer_conn->sn) + 4+2+8+16);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
 	aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->sn);
@@ -770,7 +770,7 @@
 	byte_stream_putraw(&bs, peer_conn->cookie, 8);
 	byte_stream_putcaps(&bs, peer_conn->type);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -791,13 +791,13 @@
 	GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL;
 	ByteStream hdrbs;
 
-	conn = flap_connection_findbygroup(od, 0x0004);
+	conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM);
 	if (conn == NULL)
 		return;
 
 	byte_stream_new(&bs, 246+strlen(sn));
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
 	aim_im_puticbm(&bs, cookie, 0x0002, sn);
@@ -825,7 +825,7 @@
 	aim_tlvlist_free(inner_tlvlist);
 	aim_tlvlist_free(outer_tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -844,13 +844,13 @@
 	ByteStream hdrbs;
 	guint8 ip_comp[4];
 
-	conn = flap_connection_findbygroup(od, 0x0004);
+	conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM);
 	if (conn == NULL)
 		return;
 
 	byte_stream_new(&bs, 246+strlen(sn));
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
 	aim_im_puticbm(&bs, cookie, 0x0002, sn);
@@ -888,7 +888,7 @@
 	aim_tlvlist_free(inner_tlvlist);
 	aim_tlvlist_free(outer_tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -906,13 +906,13 @@
 	GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL;
 	ByteStream hdrbs;
 
-	conn = flap_connection_findbygroup(od, 0x0004);
+	conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM);
 	if (conn == NULL)
 		return;
 
 	byte_stream_new(&bs, 1014);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
 	aim_im_puticbm(&bs, cookie, 0x0002, sn);
@@ -971,7 +971,7 @@
 	aim_tlvlist_free(inner_tlvlist);
 	aim_tlvlist_free(outer_tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -990,13 +990,13 @@
 	ByteStream hdrbs;
 	guint8 ip_comp[4];
 
-	conn = flap_connection_findbygroup(od, 0x0004);
+	conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM);
 	if (conn == NULL)
 		return;
 
 	byte_stream_new(&bs, 1014);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
 	aim_im_puticbm(&bs, cookie, 0x0002, sn);
@@ -1064,7 +1064,7 @@
 	aim_tlvlist_free(inner_tlvlist);
 	aim_tlvlist_free(outer_tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -1085,14 +1085,14 @@
 	aim_snacid_t snacid;
 	guchar cookie[8];
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0004)) || !sn)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)) || !sn)
 		return -EINVAL;
 
 	aim_icbm_makecookie(cookie);
 
 	byte_stream_new(&bs, 8+2+1+strlen(sn) + 4+0x5e + 4);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
 	aim_im_puticbm(&bs, cookie, 0x0002, sn);
@@ -1160,7 +1160,7 @@
 	byte_stream_put16(&bs, 0x0003);
 	byte_stream_put16(&bs, 0x0000);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -1196,7 +1196,7 @@
 
 	byte_stream_new(&bs, 8+3+strlen(sn)+12+strlen(message)+1+4);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0006, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	aim_icbm_makecookie(cookie);
 
@@ -1229,7 +1229,7 @@
 	byte_stream_put16(&bs, 0x0006);
 	byte_stream_put16(&bs, 0x0000);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0006, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -2268,13 +2268,13 @@
 
 	byte_stream_new(&bs, strlen(sn)+3);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0008, 0x0000, sn, strlen(sn)+1);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0008, 0x0000, sn, strlen(sn)+1);
 
 	byte_stream_put16(&bs, (flags & AIM_WARN_ANON) ? 0x0001 : 0x0000);
 	byte_stream_put8(&bs, strlen(sn));
 	byte_stream_putstr(&bs, sn);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0008, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0008, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -2321,12 +2321,12 @@
 	aim_snacid_t snacid;
 	GSList *tlvlist = NULL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0004)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
 	byte_stream_new(&bs, 8+2+1+strlen(sn)+6);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x000b, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x000b, 0x0000, NULL, 0);
 
 	byte_stream_putraw(&bs, cookie, 8);
 
@@ -2338,7 +2338,7 @@
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x000b, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x000b, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -2660,7 +2660,7 @@
 	if (!od || !(conn = flap_connection_findbygroup(od, 0x0002)))
 		return -EINVAL;
 
-	aim_genericreq_n(od, conn, 0x0004, 0x0010);
+	aim_genericreq_n(od, conn, SNAC_FAMILY_ICBM, 0x0010);
 
 	return 0;
 }
@@ -2686,7 +2686,7 @@
 
 	byte_stream_new(&bs, 11+strlen(sn)+2);
 
-	snacid = aim_cachesnac(od, 0x0004, 0x0014, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0014, 0x0000, NULL, 0);
 
 	/*
 	 * 8 days of light
@@ -2713,7 +2713,7 @@
 	 */
 	byte_stream_put16(&bs, type2);
 
-	flap_connection_send_snac(od, conn, 0x0004, 0x0014, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0014, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -2773,7 +2773,7 @@
 int
 msg_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0004;
+	mod->family = SNAC_FAMILY_ICBM;
 	mod->version = 0x0001;
 	mod->toolid = 0x0110;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_icq.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_icq.c	Thu Jun 26 09:07:56 2008 +0000
@@ -33,14 +33,14 @@
 	aim_snacid_t snacid;
 	int bslen;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 		return -EINVAL;
 
 	bslen = 2 + 4 + 2 + 2;
 
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	/* For simplicity, don't bother using a tlvlist */
 	byte_stream_put16(&bs, 0x0001);
@@ -51,7 +51,7 @@
 	byte_stream_putle16(&bs, 0x003c); /* I command thee. */
 	byte_stream_putle16(&bs, snacid); /* eh. */
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -65,14 +65,14 @@
 	aim_snacid_t snacid;
 	int bslen;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 		return -EINVAL;
 
 	bslen = 2 + 4 + 2 + 2;
 
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	/* For simplicity, don't bother using a tlvlist */
 	byte_stream_put16(&bs, 0x0001);
@@ -83,7 +83,7 @@
 	byte_stream_putle16(&bs, 0x003e); /* I command thee. */
 	byte_stream_putle16(&bs, snacid); /* eh. */
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -99,14 +99,14 @@
 	aim_snacid_t snacid;
 	int bslen;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 		return -EINVAL;
 
 	bslen = 2+4+2+2+2+2+2+1+1+1+1+1+1;
 
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	/* For simplicity, don't bother using a tlvlist */
 	byte_stream_put16(&bs, 0x0001);
@@ -126,7 +126,7 @@
 	byte_stream_putle8(&bs, 0x00);
 	byte_stream_putle8(&bs, !auth_required);
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -151,7 +151,7 @@
 	if (!passwd)
 		return -EINVAL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 		return -EINVAL;
 
 	passwdlen = strlen(passwd);
@@ -161,7 +161,7 @@
 
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	/* For simplicity, don't bother using a tlvlist */
 	byte_stream_put16(&bs, 0x0001);
@@ -176,7 +176,7 @@
 	byte_stream_putstr(&bs, passwd);
 	byte_stream_putle8(&bs, '\0');
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -194,14 +194,14 @@
 	if (!uin || uin[0] < '0' || uin[0] > '9')
 		return -EINVAL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 		return -EINVAL;
 
 	bslen = 2 + 4 + 2 + 2 + 2 + 4;
 
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	/* For simplicity, don't bother using a tlvlist */
 	byte_stream_put16(&bs, 0x0001);
@@ -214,7 +214,7 @@
 	byte_stream_putle16(&bs, 0x04b2); /* shrug. */
 	byte_stream_putle32(&bs, atoi(uin));
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -239,14 +239,14 @@
 	if (!uin || uin[0] < '0' || uin[0] > '9')
 		return -EINVAL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 		return -EINVAL;
 
 	bslen = 2 + 4 + 2 + 2 + 2 + 4;
 
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	/* For simplicity, don't bother using a tlvlist */
 	byte_stream_put16(&bs, 0x0001);
@@ -259,7 +259,7 @@
 	byte_stream_putle16(&bs, 0x04ba); /* shrug. */
 	byte_stream_putle32(&bs, atoi(uin));
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -283,14 +283,14 @@
 	if (!uin || uin[0] < '0' || uin[0] > '9')
 		return -EINVAL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 		return -EINVAL;
 
 	bslen = 2 + 4 + 2 + 2 + 2 + 4;
 
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	/* For simplicity, don't bother using a tlvlist */
 	byte_stream_put16(&bs, 0x0001);
@@ -303,7 +303,7 @@
 	byte_stream_putle16(&bs, 0x051f); /* shrug. */
 	byte_stream_putle32(&bs, atoi(uin));
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -321,14 +321,14 @@
 	if (!xml || !strlen(xml))
 		return -EINVAL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 		return -EINVAL;
 
 	bslen = 2 + 10 + 2 + strlen(xml) + 1;
 
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	/* For simplicity, don't bother using a tlvlist */
 	byte_stream_put16(&bs, 0x0001);
@@ -342,7 +342,7 @@
 	byte_stream_putle16(&bs, strlen(xml) + 1);
 	byte_stream_putraw(&bs, (guint8 *)xml, strlen(xml) + 1);
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -380,7 +380,7 @@
 	struct tm *tm;
 	gchar *stripped;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 		return -EINVAL;
 
 	if (!name || !msg || !alias)
@@ -411,7 +411,7 @@
 
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	/* For simplicity, don't bother using a tlvlist */
 	byte_stream_put16(&bs, 0x0001);
@@ -436,7 +436,7 @@
 	byte_stream_putstr(&bs, xml);
 	byte_stream_put8(&bs, 0x00);
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -460,7 +460,7 @@
 
 	purple_debug_misc("oscar", "aim_icq_getstatusnote: requesting status note for %s.\n", uin);
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x0015)))
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICQ)))
 	{
 		purple_debug_misc("oscar", "aim_icq_getstatusnote: no connection.\n");
 		return -EINVAL;
@@ -469,7 +469,7 @@
 	bslen = 2 + 4 + 2 + 2 + 2 + 2 + 58 + strlen(uin);
 	byte_stream_new(&bs, 4 + bslen);
 
-	snacid = aim_cachesnac(od, 0x0015, 0x0002, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICQ, 0x0002, 0x0000, NULL, 0);
 
 	byte_stream_put16(&bs, 0x0001);
 	byte_stream_put16(&bs, bslen);
@@ -497,7 +497,7 @@
 	byte_stream_put16(&bs, strlen(uin));
 	byte_stream_putstr(&bs, uin);
 
-	flap_connection_send_snac(od, conn, 0x0015, 0x0002, 0x000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICQ, 0x0002, 0x000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -541,7 +541,7 @@
 }
 
 /**
- * Subtype 0x0003 - Response to 0x0015/0x002, contains an ICQesque packet.
+ * Subtype 0x0003 - Response to SNAC_FAMILY_ICQ/0x002, contains an ICQesque packet.
  */
 static int
 icqresponse(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, ByteStream *bs)
@@ -940,7 +940,7 @@
 int
 icq_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0015;
+	mod->family = SNAC_FAMILY_ICQ;
 	mod->version = 0x0001;
 	mod->toolid = 0x0110;
 	mod->toolversion = 0x047c;
--- a/libpurple/protocols/oscar/family_invite.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_invite.c	Thu Jun 26 09:07:56 2008 +0000
@@ -41,7 +41,7 @@
 int invite_modfirst(OscarData *od, aim_module_t *mod)
 {
 
-	mod->family = 0x0006;
+	mod->family = SNAC_FAMILY_INVITE;
 	mod->version = 0x0001;
 	mod->toolid = 0x0110;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_locate.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_locate.c	Thu Jun 26 09:07:56 2008 +0000
@@ -171,7 +171,7 @@
 	 {0x09, 0x46, 0xf0, 0x03, 0x4c, 0x7f, 0x11, 0xd1,
 	  0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}},
 
-	{OSCAR_CAPABILITY_GENERICUNKNOWN,
+	{OSCAR_CAPABILITY_ICHAT_SCREENSHARE,
 	 {0x09, 0x46, 0xf0, 0x04, 0x4c, 0x7f, 0x11, 0xd1,
 	  0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}},
 
@@ -943,7 +943,7 @@
 		return 0;
 	}
 
-	if ((snac2->family != 0x0002) && (snac2->type != 0x0015)) {
+	if ((snac2->family != SNAC_FAMILY_LOCATE) && (snac2->type != 0x0015)) {
 		purple_debug_misc("oscar", "faim: locate.c, error(): received response from invalid request! %d\n", snac2->family);
 		return 0;
 	}
@@ -1094,12 +1094,12 @@
 
 	byte_stream_new(&bs, aim_tlvlist_size(tlvlist));
 
-	snacid = aim_cachesnac(od, 0x0002, 0x0004, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0004, 0x0000, NULL, 0);
 
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0002, 0x0004, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x0004, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -1124,12 +1124,12 @@
 
 	byte_stream_new(&bs, aim_tlvlist_size(tlvlist));
 
-	snacid = aim_cachesnac(od, 0x0002, 0x0004, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0004, 0x0000, NULL, 0);
 
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0002, 0x0004, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x0004, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -1157,13 +1157,13 @@
 
 	byte_stream_new(&bs, 2+1+strlen(sn));
 
-	snacid = aim_cachesnac(od, 0x0002, 0x0005, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0005, 0x0000, NULL, 0);
 
 	byte_stream_put16(&bs, infotype);
 	byte_stream_put8(&bs, strlen(sn));
 	byte_stream_putstr(&bs, sn);
 
-	flap_connection_send_snac(od, conn, 0x0002, 0x0005, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x0005, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -1274,12 +1274,12 @@
 
 	byte_stream_new(&bs, aim_tlvlist_size(tlvlist));
 
-	snacid = aim_cachesnac(od, 0x0002, 0x0009, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0009, 0x0000, NULL, 0);
 
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0002, 0x0009, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x0009, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -1302,12 +1302,12 @@
 
 	byte_stream_new(&bs, 1+strlen(sn));
 
-	snacid = aim_cachesnac(od, 0x0002, 0x000b, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x000b, 0x0000, NULL, 0);
 
 	byte_stream_put8(&bs, strlen(sn));
 	byte_stream_putstr(&bs, sn);
 
-	flap_connection_send_snac(od, conn, 0x0002, 0x000b, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x000b, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -1347,12 +1347,12 @@
 
 	byte_stream_new(&bs, aim_tlvlist_size(tlvlist));
 
-	snacid = aim_cachesnac(od, 0x0002, 0x000f, 0x0000, NULL, 0);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x000f, 0x0000, NULL, 0);
 
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	flap_connection_send_snac(od, conn, 0x0002, 0x000f, 0x0000, snacid, &bs);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x000f, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 	return 0;
@@ -1385,8 +1385,8 @@
 	byte_stream_put8(&bs, strlen(sn));
 	byte_stream_putstr(&bs, sn);
 
-	snacid = aim_cachesnac(od, 0x0002, 0x0015, 0x0000, sn, strlen(sn)+1);
-	flap_connection_send_snac(od, conn, 0x0002, 0x0015, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, sn, strlen(sn)+1);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
--- a/libpurple/protocols/oscar/family_odir.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_odir.c	Thu Jun 26 09:07:56 2008 +0000
@@ -45,7 +45,7 @@
 	aim_snacid_t snacid;
 	GSList *tlvlist = NULL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x000f)) || !region || !email)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ODIR)) || !region || !email)
 		return -EINVAL;
 
 	/* Create a TLV chain, write it to the outgoing frame, then free the chain */
@@ -58,8 +58,8 @@
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	snacid = aim_cachesnac(od, 0x000f, 0x0002, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x000f, 0x0002, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ODIR, 0x0002, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ODIR, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -94,7 +94,7 @@
 	aim_snacid_t snacid;
 	GSList *tlvlist = NULL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x000f)) || !region)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ODIR)) || !region)
 		return -EINVAL;
 
 	/* Create a TLV chain, write it to the outgoing frame, then free the chain */
@@ -126,8 +126,8 @@
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	snacid = aim_cachesnac(od, 0x000f, 0x0002, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x000f, 0x0002, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ODIR, 0x0002, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ODIR, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -149,7 +149,7 @@
 	aim_snacid_t snacid;
 	GSList *tlvlist = NULL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, 0x000f)) || !region)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ODIR)) || !region)
 		return -EINVAL;
 
 	/* Create a TLV chain, write it to the outgoing frame, then free the chain */
@@ -163,8 +163,8 @@
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	snacid = aim_cachesnac(od, 0x000f, 0x0002, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x000f, 0x0002, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ODIR, 0x0002, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_ODIR, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -252,7 +252,7 @@
 int
 odir_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x000f;
+	mod->family = SNAC_FAMILY_ODIR;
 	mod->version = 0x0001;
 	mod->toolid = 0x0010;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_oservice.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_oservice.c	Thu Jun 26 09:07:56 2008 +0000
@@ -54,8 +54,8 @@
 		}
 	}
 
-	snacid = aim_cachesnac(od, 0x0001, 0x0002, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0001, 0x0002, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_OSERVICE, 0x0002, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_OSERVICE, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -108,7 +108,7 @@
 	if(!conn)
 		return;
 
-	aim_genericreq_s(od, conn, 0x0001, 0x0004, &serviceid);
+	aim_genericreq_s(od, conn, SNAC_FAMILY_OSERVICE, 0x0004, &serviceid);
 }
 
 /*
@@ -146,8 +146,8 @@
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	snacid = aim_cachesnac(od, 0x0001, 0x0004, 0x0000, &csi, sizeof(csi));
-	flap_connection_send_snac(od, conn, 0x0001, 0x0004, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_OSERVICE, 0x0004, 0x0000, &csi, sizeof(csi));
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_OSERVICE, 0x0004, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -210,7 +210,7 @@
 void
 aim_srv_reqrates(OscarData *od, FlapConnection *conn)
 {
-	aim_genericreq_n_snacid(od, conn, 0x0001, 0x0006);
+	aim_genericreq_n_snacid(od, conn, SNAC_FAMILY_OSERVICE, 0x0006);
 }
 
 /*
@@ -389,8 +389,8 @@
 		byte_stream_put16(&bs, rateclass->classid);
 	}
 
-	snacid = aim_cachesnac(od, 0x0001, 0x0008, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0001, 0x0008, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_OSERVICE, 0x0008, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_OSERVICE, 0x0008, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -412,8 +412,8 @@
 		byte_stream_put16(&bs, rateclass->classid);
 	}
 
-	snacid = aim_cachesnac(od, 0x0001, 0x0009, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0001, 0x0009, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_OSERVICE, 0x0009, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_OSERVICE, 0x0009, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -503,8 +503,8 @@
 	for (cur = conn->groups; cur != NULL; cur = cur->next)
 		byte_stream_put16(&bs, GPOINTER_TO_UINT(cur->data));
 
-	snacid = aim_cachesnac(od, 0x0001, 0x000c, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0001, 0x000c, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_OSERVICE, 0x000c, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_OSERVICE, 0x000c, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -526,7 +526,7 @@
 void
 aim_srv_reqpersonalinfo(OscarData *od, FlapConnection *conn)
 {
-	aim_genericreq_n_snacid(od, conn, 0x0001, 0x000e);
+	aim_genericreq_n_snacid(od, conn, SNAC_FAMILY_OSERVICE, 0x000e);
 }
 
 /* Subtype 0x000f - Self User Info */
@@ -589,7 +589,7 @@
 	if(!conn)
 		return;
 
-	aim_genericreq_l(od, conn, 0x0001, 0x0011, &idletime);
+	aim_genericreq_l(od, conn, SNAC_FAMILY_OSERVICE, 0x0011, &idletime);
 }
 
 /*
@@ -698,7 +698,7 @@
 void
 aim_srv_setprivacyflags(OscarData *od, FlapConnection *conn, guint32 flags)
 {
-	aim_genericreq_l(od, conn, 0x0001, 0x0014, &flags);
+	aim_genericreq_l(od, conn, SNAC_FAMILY_OSERVICE, 0x0014, &flags);
 }
 
 /*
@@ -713,7 +713,7 @@
 void
 aim_srv_nop(OscarData *od, FlapConnection *conn)
 {
-	aim_genericreq_n(od, conn, 0x0001, 0x0016);
+	aim_genericreq_n(od, conn, SNAC_FAMILY_OSERVICE, 0x0016);
 }
 
 /*
@@ -753,8 +753,8 @@
 		}
 	}
 
-	snacid = aim_cachesnac(od, 0x0001, 0x0017, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0001, 0x0017, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_OSERVICE, 0x0017, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_OSERVICE, 0x0017, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 }
@@ -861,8 +861,8 @@
 	aim_tlvlist_write(&bs, &tlvlist);
 	aim_tlvlist_free(tlvlist);
 
-	snacid = aim_cachesnac(od, 0x0001, 0x001e, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0001, 0x001e, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_OSERVICE, 0x001e, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_OSERVICE, 0x001e, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -952,13 +952,10 @@
 		byte_stream_putraw(&bs, buf, 0x10);
 
 	} else if (buf && (len > 0)) { /* use input buffer */
-		PurpleCipher *cipher;
 		PurpleCipherContext *context;
 		guchar digest[16];
 
-		cipher = purple_ciphers_find_cipher("md5");
-
-		context = purple_cipher_context_new(cipher, NULL);
+		context = purple_cipher_context_new_by_name("md5", NULL);
 		purple_cipher_context_append(context, buf, len);
 		purple_cipher_context_digest(context, 16, digest, NULL);
 		purple_cipher_context_destroy(context);
@@ -966,7 +963,6 @@
 		byte_stream_putraw(&bs, digest, 0x10);
 
 	} else if (len == 0) { /* no length, just hash NULL (buf is optional) */
-		PurpleCipher *cipher;
 		PurpleCipherContext *context;
 		guchar digest[16];
 		guint8 nil = '\0';
@@ -975,9 +971,7 @@
 		 * I'm not sure if we really need the empty append with the
 		 * new MD5 functions, so I'll leave it in, just in case.
 		 */
-		cipher = purple_ciphers_find_cipher("md5");
-
-		context = purple_cipher_context_new(cipher, NULL);
+		context = purple_cipher_context_new_by_name("md5", NULL);
 		purple_cipher_context_append(context, &nil, 0);
 		purple_cipher_context_digest(context, 16, digest, NULL);
 		purple_cipher_context_destroy(context);
@@ -1012,8 +1006,8 @@
 
 	}
 
-	snacid = aim_cachesnac(od, 0x0001, 0x0020, 0x0000, NULL, 0);
-	flap_connection_send_snac(od, conn, 0x0001, 0x0020, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_OSERVICE, 0x0020, 0x0000, NULL, 0);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_OSERVICE, 0x0020, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -1100,7 +1094,7 @@
 
 int service_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0001;
+	mod->family = SNAC_FAMILY_OSERVICE;
 	mod->version = 0x0003;
 	mod->toolid = 0x0110;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/family_popup.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_popup.c	Thu Jun 26 09:07:56 2008 +0000
@@ -72,7 +72,7 @@
 int
 popups_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x0008;
+	mod->family = SNAC_FAMILY_POPUP;
 	mod->version = 0x0001;
 	mod->toolid = 0x0104;
 	mod->toolversion = 0x0001;
--- a/libpurple/protocols/oscar/family_stats.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_stats.c	Thu Jun 26 09:07:56 2008 +0000
@@ -52,7 +52,7 @@
 int
 stats_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x000b;
+	mod->family = SNAC_FAMILY_STATS;
 	mod->version = 0x0001;
 	mod->toolid = 0x0104;
 	mod->toolversion = 0x0001;
--- a/libpurple/protocols/oscar/family_translate.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_translate.c	Thu Jun 26 09:07:56 2008 +0000
@@ -34,7 +34,7 @@
 int translate_modfirst(OscarData *od, aim_module_t *mod)
 {
 
-	mod->family = 0x000c;
+	mod->family = SNAC_FAMILY_TRANSLATE;
 	mod->version = 0x0001;
 	mod->toolid = 0x0104;
 	mod->toolversion = 0x0001;
--- a/libpurple/protocols/oscar/family_userlookup.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/family_userlookup.c	Thu Jun 26 09:07:56 2008 +0000
@@ -74,8 +74,8 @@
 
 	byte_stream_putstr(&bs, address);
 
-	snacid = aim_cachesnac(od, 0x000a, 0x0002, 0x0000, address, strlen(address)+1);
-	flap_connection_send_snac(od, conn, 0x000a, 0x0002, 0x0000, snacid, &bs);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_USERLOOKUP, 0x0002, 0x0000, address, strlen(address)+1);
+	flap_connection_send_snac(od, conn, SNAC_FAMILY_USERLOOKUP, 0x0002, 0x0000, snacid, &bs);
 
 	byte_stream_destroy(&bs);
 
@@ -145,7 +145,7 @@
 int
 search_modfirst(OscarData *od, aim_module_t *mod)
 {
-	mod->family = 0x000a;
+	mod->family = SNAC_FAMILY_USERLOOKUP;
 	mod->version = 0x0001;
 	mod->toolid = 0x0110;
 	mod->toolversion = 0x0629;
--- a/libpurple/protocols/oscar/libaim.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/libaim.c	Thu Jun 26 09:07:56 2008 +0000
@@ -96,7 +96,7 @@
 	NULL,					/* send_attention */
 	NULL,					/* get_attention_types */
 
-	/* padding */
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/oscar/libicq.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/libicq.c	Thu Jun 26 09:07:56 2008 +0000
@@ -96,7 +96,7 @@
 	NULL,					/* send_attention */
 	NULL,					/* get_attention_types */
 
-	/* padding */
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/oscar/oscar.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Thu Jun 26 09:07:56 2008 +0000
@@ -131,8 +131,8 @@
 	N_("Busted SNAC payload"),
 	N_("Insufficient rights"),
 	N_("In local permit/deny"),
-	N_("Too evil (sender)"),
-	N_("Too evil (receiver)"),
+	N_("Warning level too high (sender)"),
+	N_("Warning level too high (receiver)"),
 	N_("User temporarily unavailable"),
 	N_("No match"),
 	N_("List overflow"),
@@ -707,6 +707,9 @@
 			case OSCAR_CAPABILITY_CAMERA:
 				tmp = _("Camera");
 				break;
+			case OSCAR_CAPABILITY_ICHAT_SCREENSHARE:
+				tmp = _("Screen Sharing");
+				break;
 			default:
 				tmp = NULL;
 				break;
@@ -753,7 +756,7 @@
 									 const char *name, const char *value)
 {
 	gchar *utf8;
-	
+
 	if (value && value[0] && (utf8 = oscar_utf8_try_convert(account, value))) {
 		purple_notify_user_info_add_pair(user_info, name, utf8);
 		g_free(utf8);
@@ -761,30 +764,152 @@
 }
 
 static void
-oscar_string_convert_and_append(PurpleAccount *account, GString *str, const char *newline,
-					const char *name, const char *value)
-{
-	gchar *utf8;
-
-	if (value && value[0] && (utf8 = oscar_utf8_try_convert(account, value))) {
-		g_string_append_printf(str, "%s<b>%s:</b> %s", newline, name, utf8);
-		g_free(utf8);
-	}
-}
-
-static void
 oscar_user_info_convert_and_add(PurpleAccount *account, PurpleNotifyUserInfo *user_info,
 								const char *name, const char *value)
 {
 	gchar *utf8;
-	
+
 	if (value && value[0] && (utf8 = oscar_utf8_try_convert(account, value))) {
 		purple_notify_user_info_add_pair(user_info, name, utf8);
 		g_free(utf8);
 	}
 }
 
-static void oscar_string_append_info(PurpleConnection *gc, PurpleNotifyUserInfo *user_info, PurpleBuddy *b, aim_userinfo_t *userinfo)
+/**
+ * @brief Append the status information to a user_info struct
+ *
+ * The returned information is HTML-ready, appropriately escaped, as all information in a user_info struct should be HTML.
+ *
+ * @param gc The PurpleConnection
+ * @param user_info A PurpleNotifyUserInfo object to which status information will be added
+ * @param b The PurpleBuddy whose status is desired. This or the aim_userinfo_t (or both) must be passed to oscar_user_info_append_status().
+ * @param userinfo The aim_userinfo_t of the buddy whose status is desired. This or the PurpleBuddy (or both) must be passed to oscar_user_info_append_status().
+ * @param strip_html_tags If strip_html_tags is TRUE, tags embedded in the status message will be stripped, returning a non-formatted string. The string will still be HTML escaped.
+ */
+static void oscar_user_info_append_status(PurpleConnection *gc, PurpleNotifyUserInfo *user_info, PurpleBuddy *b, aim_userinfo_t *userinfo, gboolean strip_html_tags)
+{
+	PurpleAccount *account = purple_connection_get_account(gc);
+	OscarData *od;
+	PurplePresence *presence = NULL;
+	PurpleStatus *status = NULL;
+	gchar *message = NULL, *itmsurl = NULL, *tmp;
+	gboolean is_away;
+
+	od = gc->proto_data;
+
+	if (userinfo == NULL)
+		userinfo = aim_locate_finduserinfo(od, b->name);
+
+	if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL)))
+		return;
+
+	if (b == NULL)
+		b = purple_find_buddy(purple_connection_get_account(gc), userinfo->sn);
+
+	if (b) {
+		presence = purple_buddy_get_presence(b);
+		status = purple_presence_get_active_status(presence);
+
+		message = g_strdup(purple_status_get_attr_string(status, "message"));
+		itmsurl = g_strdup(purple_status_get_attr_string(status, "itmsurl"));
+
+	} else {
+		/* This is an OSCAR contact for whom we don't have a PurpleBuddy but do have information. */
+		if ((userinfo->flags & AIM_FLAG_AWAY)) {
+			/* Away message? */
+			if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
+				tmp = oscar_encoding_extract(userinfo->away_encoding);
+				message = oscar_encoding_to_utf8(account, tmp, userinfo->away,
+												   userinfo->away_len);
+				g_free(tmp);
+				}
+		} else {
+			/* Available message? */
+			if ((userinfo->status != NULL) && userinfo->status[0] != '\0') {
+				message = oscar_encoding_to_utf8(account, userinfo->status_encoding,
+											 userinfo->status, userinfo->status_len);
+			}
+#if defined (_WIN32) || defined (__APPLE__)
+			if (userinfo->itmsurl && (userinfo->itmsurl[0] != '\0'))
+				itmsurl = oscar_encoding_to_utf8(account, userinfo->itmsurl_encoding,
+												 userinfo->itmsurl, userinfo->itmsurl_len);
+#endif
+		}
+	}
+
+	is_away = ((status && !purple_status_is_available(status)) ||
+			   (userinfo && (userinfo->flags & AIM_FLAG_AWAY)));
+
+	if (strip_html_tags) {
+		/* Away messges are HTML, but available messages were originally plain text.
+		 * We therefore need to strip away messages but not available messages if we're asked to remove HTML tags.
+		 */
+		if (is_away && message) {
+			gchar *tmp2;
+			tmp = purple_markup_strip_html(message);
+			g_free(message);
+			tmp2 = g_markup_escape_text(tmp, -1);
+			g_free(tmp);
+			message = tmp2;
+		}
+
+	} else {
+		if (itmsurl) {
+			tmp = g_strdup_printf("<a href=\"%s\">%s</a>",
+								  itmsurl, message);
+			g_free(itmsurl);
+			g_free(message);
+			message = tmp;
+		}
+	}
+
+	if (is_away && message) {
+		tmp = purple_str_sub_away_formatters(message, purple_account_get_username(account));
+		g_free(message);
+		message = tmp;
+	}
+
+	if (b) {
+		if (purple_presence_is_online(presence)) {
+			if (aim_snvalid_icq(b->name) || is_away || !message || !(*message)) {
+				/* Append the status name for online ICQ statuses, away AIM statuses, and for all buddies with no message.
+				 * If the status name and the message are the same, only show one. */
+				const char *status_name = purple_status_get_name(status);
+				if (status_name && message && !strcmp(status_name, message))
+					status_name = NULL;
+
+				tmp = g_strdup_printf("%s%s%s",
+									   status_name,
+									   ((status_name && message) && *message) ? ": " : "",
+									   (message && *message) ? message : "");
+				g_free(message);
+				message = tmp;
+			}
+
+		} else {
+			if (aim_ssi_waitingforauth(od->ssi.local,
+									   aim_ssi_itemlist_findparentname(od->ssi.local, b->name),
+									   b->name)) {
+				/* Note if an offline buddy is not authorized */
+				tmp = g_strdup_printf("%s%s%s",
+									  _("Not Authorized"),
+									  (message && *message) ? ": " : "",
+									  (message && *message) ? message : "");
+				g_free(message);
+				message = tmp;
+			} else {
+				g_free(message);
+				message = g_strdup(_("Offline"));
+			}
+		}
+
+	}
+
+	purple_notify_user_info_add_pair(user_info, _("Status"), message);
+	g_free(message);
+}
+
+static void oscar_user_info_append_extra_info(PurpleConnection *gc, PurpleNotifyUserInfo *user_info, PurpleBuddy *b, aim_userinfo_t *userinfo)
 {
 	OscarData *od;
 	PurpleAccount *account;
@@ -815,21 +940,6 @@
 	if (userinfo != NULL)
 		bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn));
 
-	if (b != NULL) {
-		if (purple_presence_is_online(presence)) {
-			if (aim_snvalid_icq(b->name)) {
-				PurpleStatus *status = purple_presence_get_active_status(presence);
-				oscar_user_info_add_pair(user_info, _("Status"),	purple_status_get_name(status));
-			}
-		} else {
-			tmp = aim_ssi_itemlist_findparentname(od->ssi.local, b->name);
-			if (aim_ssi_waitingforauth(od->ssi.local, tmp, b->name))
-				oscar_user_info_add_pair(user_info, _("Status"),	_("Not Authorized"));
-			else
-				oscar_user_info_add_pair(user_info, _("Status"),	_("Offline"));
-		}
-	}
-
 	if ((bi != NULL) && (bi->ipaddr != 0)) {
 		tmp =  g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
 						(bi->ipaddr & 0xff000000) >> 24,
@@ -840,7 +950,6 @@
 		g_free(tmp);
 	}
 
-
 	if ((userinfo != NULL) && (userinfo->warnlevel != 0)) {
 		tmp = g_strdup_printf("%d", (int)(userinfo->warnlevel/10.0 + .5));
 		oscar_user_info_add_pair(user_info, _("Warning Level"), tmp);
@@ -988,8 +1097,8 @@
 
 	if (source < 0)
 	{
-		purple_debug_error("oscar", "unable to connect FLAP server "
-				"of type 0x%04hx\n", conn->type);
+		purple_debug_error("oscar", "unable to connect to FLAP "
+				"server of type 0x%04hx\n", conn->type);
 		if (conn->type == SNAC_FAMILY_AUTH)
 		{
 			gchar *msg;
@@ -1106,12 +1215,12 @@
 		od->conf = FALSE;
 	}
 	if (od->reqemail) {
-		purple_debug_info("oscar", "requesting e-mail address\n");
+		purple_debug_info("oscar", "requesting email address\n");
 		aim_admin_getinfo(od, conn, 0x0011);
 		od->reqemail = FALSE;
 	}
 	if (od->setemail) {
-		purple_debug_info("oscar", "setting e-mail address\n");
+		purple_debug_info("oscar", "setting email address\n");
 		aim_admin_setemail(od, conn, od->email);
 		g_free(od->email);
 		od->email = NULL;
@@ -1428,7 +1537,7 @@
 	}
 
 	purple_debug_misc("oscar", "Reg status: %hu\n", info->regstatus);
-	purple_debug_misc("oscar", "E-mail: %s\n",
+	purple_debug_misc("oscar", "Email: %s\n",
 					(info->email != NULL) ? info->email : "null");
 	purple_debug_misc("oscar", "BOSIP: %s\n", info->bosip);
 	purple_debug_info("oscar", "Closing auth connection...\n");
@@ -1705,7 +1814,8 @@
 
 	aim_send_login(od, conn, purple_account_get_username(account),
 			purple_connection_get_password(gc), truncate_pass,
-			od->icq ? &icqinfo : &aiminfo, key);
+			od->icq ? &icqinfo : &aiminfo, key,
+			/* allow multple logins? */ purple_account_get_bool(account, "allow_multiple_logins", OSCAR_DEFAULT_ALLOW_MULTIPLE_LOGINS));
 
 	purple_connection_update_progress(gc, _("Password sent"), 2, OSCAR_CONNECT_STEPS);
 	ck[2] = 0x6c;
@@ -1841,6 +1951,7 @@
 	{
 		char *message = NULL;
 		char *itmsurl = NULL;
+		char *tmp;
 
 		if (info->status != NULL && info->status[0] != '\0')
 			/* Grab the available message */
@@ -1852,15 +1963,31 @@
 			itmsurl = oscar_encoding_to_utf8(account, info->itmsurl_encoding,
 					info->itmsurl, info->itmsurl_len);
 
+		tmp = (message ? g_markup_escape_text(message, -1) : NULL);
+
+		if (message == NULL && itmsurl != NULL)
+			message = "";
+
 		purple_prpl_got_user_status(account, info->sn, status_id,
-				"message", message, "itmsurl", itmsurl, NULL);
+				"message", tmp, "itmsurl", itmsurl, NULL);
+		g_free(tmp);
 
 		g_free(message);
 		g_free(itmsurl);
 	}
 	else
 	{
-		purple_prpl_got_user_status(account, info->sn, status_id, NULL);
+		PurpleBuddy *b = purple_find_buddy(account, info->sn);
+		PurplePresence *presence = purple_buddy_get_presence(b);
+		PurpleStatus *old_status = purple_presence_get_active_status(presence);
+		PurpleStatus *new_status = purple_presence_get_status(presence, status_id);
+		
+		/* If our status_id would change with this update, pass it to the core.
+		 * However, if our status_id would not change, do nothing, as we would clear out any existing
+		 * attributes on the status prematurely. purple_got_infoblock() will update the message as needed.
+		 */
+		if (old_status != new_status)
+			purple_prpl_got_user_status(account, info->sn, status_id, NULL);
 	}
 
 	/* Login time stuff */
@@ -2492,8 +2619,8 @@
 
 		case 0x0e: { /* Someone has emailed you at your_uin@pager.icq.com */
 			if (i >= 6) {
-				gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ e-mail from %s [%s]\n\nMessage is:\n%s"), msg2[0], msg2[3], msg2[5]);
-				purple_notify_info(gc, NULL, "ICQ E-Mail", dialog_msg);
+				gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ email from %s [%s]\n\nMessage is:\n%s"), msg2[0], msg2[3], msg2[5]);
+				purple_notify_info(gc, NULL, "ICQ Email", dialog_msg);
 				g_free(dialog_msg);
 			}
 		} break;
@@ -2648,7 +2775,7 @@
 	switch(reason) {
 		case 0: /* Invalid (0) */
 			buf = g_strdup_printf(
-				   dngettext(PACKAGE, 
+				   dngettext(PACKAGE,
 				   "You missed %hu message from %s because it was invalid.",
 				   "You missed %hu messages from %s because they were invalid.",
 				   nummissed),
@@ -2657,7 +2784,7 @@
 			break;
 		case 1: /* Message too large */
 			buf = g_strdup_printf(
-				   dngettext(PACKAGE, 
+				   dngettext(PACKAGE,
 				   "You missed %hu message from %s because it was too large.",
 				   "You missed %hu messages from %s because they were too large.",
 				   nummissed),
@@ -2666,7 +2793,7 @@
 			break;
 		case 2: /* Rate exceeded */
 			buf = g_strdup_printf(
-				   dngettext(PACKAGE, 
+				   dngettext(PACKAGE,
 				   "You missed %hu message from %s because the rate limit has been exceeded.",
 				   "You missed %hu messages from %s because the rate limit has been exceeded.",
 				   nummissed),
@@ -2675,25 +2802,25 @@
 			break;
 		case 3: /* Evil Sender */
 			buf = g_strdup_printf(
-				   dngettext(PACKAGE, 
-				   "You missed %hu message from %s because he/she was too evil.",
-				   "You missed %hu messages from %s because he/she was too evil.",
+				   dngettext(PACKAGE,
+				   "You missed %hu message from %s because his/her warning level is too high.",
+				   "You missed %hu messages from %s because his/her warning level is too high.",
 				   nummissed),
 				   nummissed,
 				   userinfo->sn);
 			break;
 		case 4: /* Evil Receiver */
 			buf = g_strdup_printf(
-				   dngettext(PACKAGE, 
-				   "You missed %hu message from %s because you are too evil.",
-				   "You missed %hu messages from %s because you are too evil.",
+				   dngettext(PACKAGE,
+				   "You missed %hu message from %s because your warning level is too high.",
+				   "You missed %hu messages from %s because your warning level is too high.",
 				   nummissed),
 				   nummissed,
 				   userinfo->sn);
 			break;
 		default:
 			buf = g_strdup_printf(
-				   dngettext(PACKAGE, 
+				   dngettext(PACKAGE,
 				   "You missed %hu message from %s for an unknown reason.",
 				   "You missed %hu messages from %s for an unknown reason.",
 				   nummissed),
@@ -2749,9 +2876,9 @@
 			/* Split at (carriage return/newline)'s, then rejoin later with BRs between. */
 			statusmsg = oscar_icqstatus(state);
 			splitmsg = g_strsplit(msg, "\r\n", 0);
-			
+
 			user_info = purple_notify_user_info_new();
-				
+
 			purple_notify_user_info_add_pair(user_info, _("UIN"), who);
 			purple_notify_user_info_add_pair(user_info, _("Status"), statusmsg);
 			purple_notify_user_info_add_section_break(user_info);
@@ -2932,7 +3059,7 @@
 	PurpleConnection *gc = od->gc;
 	PurpleAccount *account = purple_connection_get_account(gc);
 	PurpleNotifyUserInfo *user_info;
-	gchar *tmp = NULL, *info_utf8 = NULL, *away_utf8 = NULL;
+	gchar *tmp = NULL, *info_utf8 = NULL;
 	va_list ap;
 	aim_userinfo_t *userinfo;
 
@@ -2941,13 +3068,19 @@
 	va_end(ap);
 
 	user_info = purple_notify_user_info_new();
-	purple_notify_user_info_add_pair(user_info, _("Username"), userinfo->sn);
-
-	tmp = g_strdup_printf("%d", (int)((userinfo->warnlevel/10.0) + 0.5));
-	purple_notify_user_info_add_pair(user_info, _("Warning Level"), tmp);
-	g_free(tmp);
-
-	if (userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) {
+
+	oscar_user_info_append_status(gc, user_info, /* PurpleBuddy */ NULL, userinfo, /* strip_html_tags */ FALSE);
+
+	if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) {
+		tmp = purple_str_seconds_to_string(userinfo->idletime*60);
+		oscar_user_info_add_pair(user_info, _("Idle"), tmp);
+		g_free(tmp);
+	}
+
+	oscar_user_info_append_extra_info(gc, user_info, NULL, userinfo);
+
+	if ((userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) && !aim_snvalid_sms(userinfo->sn)) {
+		/* An SMS contact is always online; its Online Since valid is not useful */
 		time_t t = userinfo->onlinesince;
 		oscar_user_info_add_pair(user_info, _("Online Since"), purple_date_format_full(localtime(&t)));
 	}
@@ -2963,51 +3096,6 @@
 		g_free(tmp);
 	}
 
-	if (userinfo->present & AIM_USERINFO_PRESENT_IDLE) {
-		tmp = purple_str_seconds_to_string(userinfo->idletime*60);
-		oscar_user_info_add_pair(user_info, _("Idle"), tmp);
-		g_free(tmp);
-	}
-
-	oscar_string_append_info(gc, user_info, NULL, userinfo);
-
-	/* Available message */
-	if ((userinfo->status != NULL) && !(userinfo->flags & AIM_FLAG_AWAY))
-	{
-		if (userinfo->status[0] != '\0')
-			tmp = oscar_encoding_to_utf8(account, userinfo->status_encoding,
-											 userinfo->status, userinfo->status_len);
-#if defined (_WIN32) || defined (__APPLE__)
-		if (userinfo->itmsurl && (userinfo->itmsurl[0] != '\0')) {
-			gchar *itmsurl, *tmp2;
-			itmsurl = oscar_encoding_to_utf8(account, userinfo->itmsurl_encoding,
-					userinfo->itmsurl, userinfo->itmsurl_len);
-			tmp2 = g_strdup_printf("<a href=\"%s\">%s</a>",
-					itmsurl, tmp);
-			g_free(tmp);
-			tmp = tmp2;
-			g_free(itmsurl);
-		}
-#endif
-		oscar_user_info_add_pair(user_info, _("Available Message"), tmp);
-		g_free(tmp);
-	}
-
-	/* Away message */
-	if ((userinfo->flags & AIM_FLAG_AWAY) && (userinfo->away_len > 0) && (userinfo->away != NULL) && (userinfo->away_encoding != NULL)) {
-		tmp = oscar_encoding_extract(userinfo->away_encoding);
-		away_utf8 = oscar_encoding_to_utf8(account, tmp, userinfo->away,
-		                                   userinfo->away_len);
-		g_free(tmp);
-		if (away_utf8 != NULL) {
-			tmp = purple_str_sub_away_formatters(away_utf8, purple_account_get_username(account));
-			purple_notify_user_info_add_section_break(user_info);
-			oscar_user_info_add_pair(user_info, NULL, tmp);
-			g_free(tmp);
-			g_free(away_utf8);
-		}
-	}
-
 	/* Info */
 	if ((userinfo->info_len > 0) && (userinfo->info != NULL) && (userinfo->info_encoding != NULL)) {
 		tmp = oscar_encoding_extract(userinfo->info_encoding);
@@ -3446,8 +3534,8 @@
 	if (code == AIM_RATE_CODE_LIMIT)
 	{
 		purple_debug_warning("oscar",  _("The last action you attempted could not be "
-					 	 "performed because you are over the rate limit. "
-						 "Please wait 10 seconds and try again."));
+				"performed because you are over the rate limit. "
+				"Please wait 10 seconds and try again."));
 	}
 
 	return 1;
@@ -3704,12 +3792,9 @@
 	PurpleConnection *gc;
 	PurpleAccount *account;
 	PurpleBuddy *buddy;
-	PurplePresence *presence;
-	PurpleStatus *status;
 	struct buddyinfo *bi;
 	gchar who[16];
 	PurpleNotifyUserInfo *user_info;
-	GString *tmp;
 	gchar *utf8;
 	gchar *buf;
 	const gchar *alias;
@@ -3727,7 +3812,7 @@
 		return 0;
 
 	user_info = purple_notify_user_info_new();
-		
+
 	g_snprintf(who, sizeof(who), "%u", info->uin);
 	buddy = purple_find_buddy(purple_connection_get_account(gc), who);
 	if (buddy != NULL)
@@ -3750,7 +3835,7 @@
 	oscar_user_info_convert_and_add(account, user_info, _("Last Name"), info->last);
 	if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email))) {
 		buf = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", utf8, utf8);
-		purple_notify_user_info_add_pair(user_info, _("E-Mail Address"), buf);
+		purple_notify_user_info_add_pair(user_info, _("Email Address"), buf);
 		g_free(buf);
 		g_free(utf8);
 	}
@@ -3759,7 +3844,7 @@
 		for (i = 0; i < info->numaddresses; i++) {
 			if (info->email2[i] && info->email2[i][0] && (utf8 = oscar_utf8_try_convert(gc->account, info->email2[i]))) {
 				buf = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", utf8, utf8);
-				purple_notify_user_info_add_pair(user_info, _("E-Mail Address"), buf);
+				purple_notify_user_info_add_pair(user_info, _("Email Address"), buf);
 				g_free(buf);
 				g_free(utf8);
 			}
@@ -3790,8 +3875,7 @@
 	if ((info->age > 0) && (info->age < 255)) {
 		char age[5];
 		snprintf(age, sizeof(age), "%hhd", info->age);
-		purple_notify_user_info_add_pair(user_info,
-													_("Age"), age);
+		purple_notify_user_info_add_pair(user_info, _("Age"), age);
 	}
 	if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->personalwebpage))) {
 		buf = g_strdup_printf("<a href=\"%s\">%s</a>", utf8, utf8);
@@ -3800,65 +3884,41 @@
 		g_free(utf8);
 	}
 
-	if (buddy != NULL) {
-		const gchar *message;
-		gchar *utf8, *tmp;
-
-		presence = purple_buddy_get_presence(buddy);
-		status = purple_presence_get_active_status(presence);
-		message = purple_status_get_attr_string(status, "message");
-
-		utf8 = message && message[0] ? oscar_utf8_try_convert(account, message) : NULL;
-		tmp = g_strdup_printf("%s%s%s",
-				purple_status_get_name(status),
-				utf8 && *utf8 ? ": " : "",
-				utf8 && *utf8 ? utf8 : "");
-		g_free(utf8);
-
-		oscar_user_info_convert_and_add(account,
-				user_info, _("Status"), tmp);
-	}
+	if (buddy != NULL)
+		oscar_user_info_append_status(gc, user_info, buddy, /* aim_userinfo_t */ NULL, /* strip_html_tags */ FALSE);
 
 	oscar_user_info_convert_and_add(account, user_info, _("Additional Information"), info->info);
 	purple_notify_user_info_add_section_break(user_info);
 
 	if ((info->homeaddr && (info->homeaddr[0])) || (info->homecity && info->homecity[0]) || (info->homestate && info->homestate[0]) || (info->homezip && info->homezip[0])) {
-		tmp = g_string_sized_new(100);
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("Address"), info->homeaddr);
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("City"), info->homecity);
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("State"), info->homestate);
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("Zip Code"), info->homezip);
-		
-		purple_notify_user_info_add_pair(user_info, _("Home Address"), tmp->str);
-		purple_notify_user_info_add_section_break(user_info);
-
-		g_string_free(tmp, TRUE);
+		purple_notify_user_info_add_section_header(user_info, _("Home Address"));
+
+		oscar_user_info_convert_and_add(account, user_info, _("Address"), info->homeaddr);
+		oscar_user_info_convert_and_add(account, user_info, _("City"), info->homecity);
+		oscar_user_info_convert_and_add(account, user_info, _("State"), info->homestate);
+		oscar_user_info_convert_and_add(account, user_info, _("Zip Code"), info->homezip);
 	}
 	if ((info->workaddr && info->workaddr[0]) || (info->workcity && info->workcity[0]) || (info->workstate && info->workstate[0]) || (info->workzip && info->workzip[0])) {
-		tmp = g_string_sized_new(100);
-
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("Address"), info->workaddr);
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("City"), info->workcity);
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("State"), info->workstate);
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("Zip Code"), info->workzip);
-
-		purple_notify_user_info_add_pair(user_info, _("Work Address"), tmp->str);
-		purple_notify_user_info_add_section_break(user_info);
-
-		g_string_free(tmp, TRUE);
+		purple_notify_user_info_add_section_header(user_info, _("Work Address"));
+
+		oscar_user_info_convert_and_add(account, user_info, _("Address"), info->workaddr);
+		oscar_user_info_convert_and_add(account, user_info, _("City"), info->workcity);
+		oscar_user_info_convert_and_add(account, user_info, _("State"), info->workstate);
+		oscar_user_info_convert_and_add(account, user_info, _("Zip Code"), info->workzip);
 	}
 	if ((info->workcompany && info->workcompany[0]) || (info->workdivision && info->workdivision[0]) || (info->workposition && info->workposition[0]) || (info->workwebpage && info->workwebpage[0])) {
-		tmp = g_string_sized_new(100);
-		
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("Company"), info->workcompany);
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("Division"), info->workdivision);
-		oscar_string_convert_and_append(account, tmp, "\n<br>", _("Position"), info->workposition);
+		purple_notify_user_info_add_section_header(user_info, _("Work Information"));
+
+		oscar_user_info_convert_and_add(account, user_info, _("Company"), info->workcompany);
+		oscar_user_info_convert_and_add(account, user_info, _("Division"), info->workdivision);
+		oscar_user_info_convert_and_add(account, user_info, _("Position"), info->workposition);
+
 		if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(gc->account, info->workwebpage))) {
-			g_string_append_printf(tmp, "\n<br><b>%s:</b> <a href=\"%s\">%s</a>", _("Web Page"), utf8, utf8);
+			char *webpage = g_strdup_printf("<a href=\"%s\">%s</a>", utf8, utf8);
+			purple_notify_user_info_add_pair(user_info, _("Web Page"), webpage);
+			g_free(webpage);
 			g_free(utf8);
 		}
-		purple_notify_user_info_add_pair(user_info, _("Work Information"), tmp->str);
-		g_string_free(tmp, TRUE);
 	}
 
 	if (buddy != NULL)
@@ -3984,7 +4044,7 @@
 	email = va_arg(ap, char *);
 	va_end(ap);
 
-	buf = g_strdup_printf(_("No results found for e-mail address %s"), email);
+	buf = g_strdup_printf(_("No results found for email address %s"), email);
 	purple_notify_error(od->gc, NULL, buf, NULL);
 	g_free(buf);
 
@@ -4003,9 +4063,9 @@
 
 	purple_debug_info("oscar",
 			   "account confirmation returned status 0x%04x (%s)\n", status,
-			status ? "unknown" : "e-mail sent");
+			status ? "unknown" : "email sent");
 	if (!status) {
-		g_snprintf(msg, sizeof(msg), _("You should receive an e-mail asking to confirm %s."),
+		g_snprintf(msg, sizeof(msg), _("You should receive an email asking to confirm %s."),
 				purple_account_get_username(purple_connection_get_account(gc)));
 		purple_notify_info(gc, NULL, _("Account Confirmation Requested"), msg);
 	}
@@ -4046,11 +4106,11 @@
 		else if (err == 0x00b)
 			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to format username because the requested name is too long."), err);
 		else if (err == 0x001d)
-			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change e-mail address because there is already a request pending for this username."), err);
+			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because there is already a request pending for this username."), err);
 		else if (err == 0x0021)
-			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change e-mail address because the given address has too many usernames associated with it."), err);
+			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because the given address has too many usernames associated with it."), err);
 		else if (err == 0x0023)
-			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change e-mail address because the given address is invalid."), err);
+			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because the given address is invalid."), err);
 		else
 			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
 		purple_notify_error(gc, NULL,
@@ -4060,7 +4120,7 @@
 	}
 
 	if (email != NULL) {
-		char *dialog_msg = g_strdup_printf(_("The e-mail address for %s is %s"),
+		char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"),
 						   purple_account_get_username(purple_connection_get_account(gc)), email);
 		purple_notify_info(gc, NULL, _("Account Info"), dialog_msg);
 		g_free(dialog_msg);
@@ -4359,14 +4419,14 @@
 			/* If the length was too long, try stripping the HTML and then running it back through
 			* purple_strdup_withhtml() and the encoding process. The result may be shorter. */
 			g_free((char *)args.msg);
-			
+
 			tmp2 = purple_markup_strip_html(tmp1);
 			g_free(tmp1);
 
 			/* re-escape the entities */
 			tmp1 = g_markup_escape_text(tmp2, -1);
 			g_free(tmp2);
-			
+
 			tmp2 = purple_strdup_withhtml(tmp1);
 			g_free(tmp1);
 			tmp1 = tmp2;
@@ -5596,7 +5656,7 @@
 	return "aim";
 }
 
-const char* oscar_list_emblem(PurpleBuddy *b)
+const char *oscar_list_emblem(PurpleBuddy *b)
 {
 	PurpleConnection *gc = NULL;
 	OscarData *od = NULL;
@@ -5626,7 +5686,7 @@
 			return "not-authorized";
 		}
 	}
-	
+
 	if (userinfo != NULL ) {
 		if (userinfo->flags & AIM_FLAG_ADMINISTRATOR)
 			return "admin";
@@ -5642,54 +5702,23 @@
 	return NULL;
 }
 
-void oscar_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) {
-	PurpleConnection *gc = b->account->gc;
-	OscarData *od = gc->proto_data;
-	aim_userinfo_t *userinfo = aim_locate_finduserinfo(od, b->name);
-
-	if (PURPLE_BUDDY_IS_ONLINE(b)) {
-		PurplePresence *presence;
-		PurpleStatus *status;
-		const char *message;
-
-		if (full)
-			oscar_string_append_info(gc, user_info, b, userinfo);
-
-		presence = purple_buddy_get_presence(b);
-		status = purple_presence_get_active_status(presence);
-		message = purple_status_get_attr_string(status, "message");
-
-		if (purple_status_is_available(status))
-		{
-			if (message != NULL)
-			{
-				/* Available status messages are plain text */
-				gchar *tmp;
-				tmp = g_markup_escape_text(message, -1);
-				purple_notify_user_info_add_pair(user_info, _("Message"), tmp);
-				g_free(tmp);
-			}
-		}
-		else
-		{
-			if (message != NULL)
-			{
-				/* Away messages are HTML */
-				gchar *tmp1, *tmp2;
-				tmp2 = purple_markup_strip_html(message);
-				tmp1 = g_markup_escape_text(tmp2, -1);
-				g_free(tmp2);
-				tmp2 = purple_str_sub_away_formatters(tmp1, purple_account_get_username(purple_connection_get_account(gc)));
-				g_free(tmp1);
-				purple_notify_user_info_add_pair(user_info, _("Away Message"), tmp2);
-				g_free(tmp2);
-			}
-			else
-			{
-				purple_notify_user_info_add_pair(user_info, _("Away Message"), _("<i>(retrieving)</i>"));
-			}
-		}
-	}
+void oscar_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
+{
+	PurpleConnection *gc;
+	OscarData *od;
+	aim_userinfo_t *userinfo;
+
+	if (!PURPLE_BUDDY_IS_ONLINE(b))
+		return;
+
+	gc = b->account->gc;
+	od = gc->proto_data;
+	userinfo = aim_locate_finduserinfo(od, b->name);
+
+	oscar_user_info_append_status(gc, user_info, b, userinfo, /* strip_html_tags */ TRUE);
+
+	if (full)
+		oscar_user_info_append_extra_info(gc, user_info, b, userinfo);
 }
 
 char *oscar_status_text(PurpleBuddy *b)
@@ -5724,7 +5753,7 @@
 		message = purple_status_get_attr_string(status, "message");
 		if (message != NULL)
 		{
-			ret = g_markup_escape_text(message, -1);
+			ret = g_strdup(message);
 			purple_util_chrreplace(ret, '\n', ' ');
 		}
 	}
@@ -6344,9 +6373,9 @@
 static void oscar_show_find_email(PurplePluginAction *action)
 {
 	PurpleConnection *gc = (PurpleConnection *) action->context;
-	purple_request_input(gc, _("Find Buddy by E-Mail"),
-					   _("Search for a buddy by e-mail address"),
-					   _("Type the e-mail address of the buddy you are "
+	purple_request_input(gc, _("Find Buddy by Email"),
+					   _("Search for a buddy by email address"),
+					   _("Type the email address of the buddy you are "
 						 "searching for."),
 					   NULL, FALSE, FALSE, NULL,
 					   _("_Search"), G_CALLBACK(search_by_email_cb),
@@ -6395,15 +6424,12 @@
 	if (img == NULL) {
 		aim_ssi_delicon(od);
 	} else {
-		PurpleCipher *cipher;
 		PurpleCipherContext *context;
 		guchar md5[16];
 		gconstpointer data = purple_imgstore_get_data(img);
 		size_t len = purple_imgstore_get_size(img);
 
-
-		cipher = purple_ciphers_find_cipher("md5");
-		context = purple_cipher_context_new(cipher, NULL);
+		context = purple_cipher_context_new_by_name("md5", NULL);
 		purple_cipher_context_append(context, data, len);
 		purple_cipher_context_digest(context, 16, md5, NULL);
 		purple_cipher_context_destroy(context);
@@ -6543,11 +6569,11 @@
 				oscar_confirm_account);
 		menu = g_list_prepend(menu, act);
 
-		act = purple_plugin_action_new(_("Display Currently Registered E-Mail Address"),
+		act = purple_plugin_action_new(_("Display Currently Registered Email Address"),
 				oscar_show_email);
 		menu = g_list_prepend(menu, act);
 
-		act = purple_plugin_action_new(_("Change Currently Registered E-Mail Address..."),
+		act = purple_plugin_action_new(_("Change Currently Registered Email Address..."),
 				oscar_show_change_email);
 		menu = g_list_prepend(menu, act);
 	}
@@ -6560,7 +6586,7 @@
 
 	menu = g_list_prepend(menu, NULL);
 
-	act = purple_plugin_action_new(_("Search for Buddy by E-Mail Address..."),
+	act = purple_plugin_action_new(_("Search for Buddy by Email Address..."),
 			oscar_show_find_email);
 	menu = g_list_prepend(menu, act);
 
@@ -6757,6 +6783,10 @@
 		OSCAR_DEFAULT_ALWAYS_USE_RV_PROXY);
 	prpl_info->protocol_options = g_list_append(prpl_info->protocol_options, option);
 
+	option = purple_account_option_bool_new(_("Allow multiple simultaneous logins"), "allow_multiple_logins",
+											OSCAR_DEFAULT_ALLOW_MULTIPLE_LOGINS);
+	prpl_info->protocol_options = g_list_append(prpl_info->protocol_options, option);
+	
 	if (init)
 		return;
 	init = TRUE;
--- a/libpurple/protocols/oscar/oscar.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/oscar.h	Thu Jun 26 09:07:56 2008 +0000
@@ -353,7 +353,8 @@
 	OSCAR_CAPABILITY_ICHATAV              = 0x02000000,
 	OSCAR_CAPABILITY_LIVEVIDEO            = 0x04000000,
 	OSCAR_CAPABILITY_CAMERA               = 0x08000000,
-	OSCAR_CAPABILITY_LAST                 = 0x10000000
+	OSCAR_CAPABILITY_ICHAT_SCREENSHARE	  = 0x10000000,
+	OSCAR_CAPABILITY_LAST                 = 0x20000000
 } OscarCapability;
 
 /*
@@ -594,7 +595,7 @@
 
 void aim_clientready(OscarData *od, FlapConnection *conn);
 int aim_request_login(OscarData *od, FlapConnection *conn, const char *sn);
-int aim_send_login(OscarData *od, FlapConnection *conn, const char *sn, const char *password, gboolean truncate_pass, ClientInfo *ci, const char *key);
+int aim_send_login(OscarData *od, FlapConnection *conn, const char *sn, const char *password, gboolean truncate_pass, ClientInfo *ci, const char *key, gboolean allow_multiple_logins);
 /* 0x000b */ int aim_auth_securid_send(OscarData *od, const char *securid);
 
 void aim_cleansnacs(OscarData *, int maxage);
--- a/libpurple/protocols/oscar/oscarcommon.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/oscar/oscarcommon.h	Thu Jun 26 09:07:56 2008 +0000
@@ -41,6 +41,7 @@
 #define OSCAR_DEFAULT_HIDE_IP TRUE
 #define OSCAR_DEFAULT_WEB_AWARE FALSE
 #define OSCAR_DEFAULT_ALWAYS_USE_RV_PROXY FALSE
+#define OSCAR_DEFAULT_ALLOW_MULTIPLE_LOGINS TRUE
 
 #ifdef _WIN32
 const char *oscar_get_locale_charset(void);
--- a/libpurple/protocols/qq/qq.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/qq/qq.c	Thu Jun 26 09:07:56 2008 +0000
@@ -749,6 +749,7 @@
 	NULL,
 	NULL,
 	NULL,
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/qq/send_file.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/qq/send_file.c	Thu Jun 26 09:07:56 2008 +0000
@@ -156,7 +156,7 @@
 	gint size;
 	/* FIXME: It seems that the transfer never use a packet
 	 * larger than 1500 bytes, so if it happened to be a
-	 * larger packet, either error occured or protocol should
+	 * larger packet, either error occurred or protocol should
 	 * be modified
 	 */
 	ft_info *info;
--- a/libpurple/protocols/silc/chat.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/silc/chat.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1315,7 +1315,7 @@
 			g_free(tmp);
 
 			if (ret)
-				  serv_got_chat_in(gc, id, purple_connection_get_display_name(gc), 0, msg, time(NULL));
+				  serv_got_chat_in(gc, id, purple_connection_get_display_name(gc), msgflags, msg, time(NULL));
 			return ret;
 		}
 	}
@@ -1326,7 +1326,7 @@
 					       (unsigned char *)msg2,
 					       strlen(msg2));
 	if (ret) {
-		serv_got_chat_in(gc, id, purple_connection_get_display_name(gc), 0, msg,
+		serv_got_chat_in(gc, id, purple_connection_get_display_name(gc), msgflags, msg,
 				 time(NULL));
 	}
 	g_free(tmp);
--- a/libpurple/protocols/silc/ops.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/silc/ops.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1052,7 +1052,7 @@
 			for (i = 0; i < vcard.num_emails; i++) {
 				if (vcard.emails[i].address)
 					g_string_append_printf(s, "%s:\t\t%s\n",
-							       _("E-Mail"),
+							       _("Email"),
 							       vcard.emails[i].address);
 			}
 			if (vcard.note)
--- a/libpurple/protocols/silc/silc.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/silc/silc.c	Thu Jun 26 09:07:56 2008 +0000
@@ -983,7 +983,7 @@
 	purple_request_field_group_add_field(g, f);
 	f = purple_request_field_bool_new("contact_chat", _("Chat"), cchat);
 	purple_request_field_group_add_field(g, f);
-	f = purple_request_field_bool_new("contact_email", _("E-mail"), cemail);
+	f = purple_request_field_bool_new("contact_email", _("Email"), cemail);
 	purple_request_field_group_add_field(g, f);
 	f = purple_request_field_bool_new("contact_call", _("Phone"), ccall);
 	purple_request_field_group_add_field(g, f);
@@ -1224,7 +1224,7 @@
 	purple_request_field_group_add_field(g, f);
 	f = purple_request_field_string_new("rn", _("Real name"), realname ? realname : "", FALSE);
 	purple_request_field_group_add_field(g, f);
-	f = purple_request_field_string_new("e", _("E-mail"), tmp, FALSE);
+	f = purple_request_field_string_new("e", _("Email"), tmp, FALSE);
 	purple_request_field_group_add_field(g, f);
 	f = purple_request_field_string_new("o", _("Organization"), "", FALSE);
 	purple_request_field_group_add_field(g, f);
@@ -2071,6 +2071,7 @@
 	NULL,
 	NULL,
 	NULL,
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/silc/util.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/silc/util.c	Thu Jun 26 09:07:56 2008 +0000
@@ -364,7 +364,7 @@
 	if (ident->username)
 		g_string_append_printf(s, _("User Name: \t%s\n"), ident->username);
 	if (ident->email)
-		g_string_append_printf(s, _("E-Mail: \t\t%s\n"), ident->email);
+		g_string_append_printf(s, _("Email: \t\t%s\n"), ident->email);
 	if (ident->host)
 		g_string_append_printf(s, _("Host Name: \t%s\n"), ident->host);
 	if (ident->org)
@@ -558,7 +558,7 @@
 		if (contact & SILC_ATTRIBUTE_CONTACT_CHAT)
 			g_string_append_printf(s, "[%s] ", _("Chat"));
 		if (contact & SILC_ATTRIBUTE_CONTACT_EMAIL)
-			g_string_append_printf(s, "[%s] ", _("E-Mail"));
+			g_string_append_printf(s, "[%s] ", _("Email"));
 		if (contact & SILC_ATTRIBUTE_CONTACT_CALL)
 			g_string_append_printf(s, "[%s] ", _("Phone"));
 		if (contact & SILC_ATTRIBUTE_CONTACT_PAGE)
--- a/libpurple/protocols/silc10/chat.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/silc10/chat.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1351,7 +1351,7 @@
 					       flags, (unsigned char *)msg2,
 					       strlen(msg2), TRUE);
 	if (ret) {
-		serv_got_chat_in(gc, id, purple_connection_get_display_name(gc), 0, msg,
+		serv_got_chat_in(gc, id, purple_connection_get_display_name(gc), msgflags, msg,
 				 time(NULL));
 	}
 	g_free(tmp);
--- a/libpurple/protocols/silc10/ops.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/silc10/ops.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1072,7 +1072,7 @@
 			for (i = 0; i < vcard.num_emails; i++) {
 				if (vcard.emails[i].address)
 					g_string_append_printf(s, "%s:\t\t%s\n",
-							       _("E-Mail"),
+							       _("Email"),
 							       vcard.emails[i].address);
 			}
 			if (vcard.note)
--- a/libpurple/protocols/silc10/silc.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/silc10/silc.c	Thu Jun 26 09:07:56 2008 +0000
@@ -684,7 +684,7 @@
 	purple_request_field_group_add_field(g, f);
 	f = purple_request_field_bool_new("contact_chat", _("Chat"), cchat);
 	purple_request_field_group_add_field(g, f);
-	f = purple_request_field_bool_new("contact_email", _("E-mail"), cemail);
+	f = purple_request_field_bool_new("contact_email", _("Email"), cemail);
 	purple_request_field_group_add_field(g, f);
 	f = purple_request_field_bool_new("contact_call", _("Phone"), ccall);
 	purple_request_field_group_add_field(g, f);
@@ -925,7 +925,7 @@
 	purple_request_field_group_add_field(g, f);
 	f = purple_request_field_string_new("rn", _("Real name"), realname ? realname : "", FALSE);
 	purple_request_field_group_add_field(g, f);
-	f = purple_request_field_string_new("e", _("E-mail"), tmp, FALSE);
+	f = purple_request_field_string_new("e", _("Email"), tmp, FALSE);
 	purple_request_field_group_add_field(g, f);
 	f = purple_request_field_string_new("o", _("Organization"), "", FALSE);
 	purple_request_field_group_add_field(g, f);
@@ -1800,10 +1800,10 @@
 	NULL,                       /* send_raw */
 	NULL,                       /* roomlist_room_serialize */
 
-	/* padding */
 	NULL,
 	NULL,
 	NULL,
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/silc10/util.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/silc10/util.c	Thu Jun 26 09:07:56 2008 +0000
@@ -356,7 +356,7 @@
 	if (ident->username)
 		g_string_append_printf(s, _("User Name: \t%s\n"), ident->username);
 	if (ident->email)
-		g_string_append_printf(s, _("E-Mail: \t\t%s\n"), ident->email);
+		g_string_append_printf(s, _("Email: \t\t%s\n"), ident->email);
 	if (ident->host)
 		g_string_append_printf(s, _("Host Name: \t%s\n"), ident->host);
 	if (ident->org)
@@ -552,7 +552,7 @@
 		if (contact & SILC_ATTRIBUTE_CONTACT_CHAT)
 			g_string_append_printf(s, "[%s] ", _("Chat"));
 		if (contact & SILC_ATTRIBUTE_CONTACT_EMAIL)
-			g_string_append_printf(s, "[%s] ", _("E-Mail"));
+			g_string_append_printf(s, "[%s] ", _("Email"));
 		if (contact & SILC_ATTRIBUTE_CONTACT_CALL)
 			g_string_append_printf(s, "[%s] ", _("Phone"));
 		if (contact & SILC_ATTRIBUTE_CONTACT_PAGE)
--- a/libpurple/protocols/simple/simple.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/simple/simple.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1898,7 +1898,7 @@
 	PurpleConnection *gc;
 	struct simple_account_data *sip;
 	gchar **userserver;
-	gchar *hosttoconnect;
+	const gchar *hosttoconnect;
 
 	const char *username = purple_account_get_username(account);
 	gc = purple_account_get_connection(account);
@@ -1934,14 +1934,13 @@
 	sip->status = g_strdup("available");
 
 	if(!purple_account_get_bool(account, "useproxy", FALSE)) {
-		hosttoconnect = g_strdup(sip->servername);
+		hosttoconnect = sip->servername;
 	} else {
-		hosttoconnect = g_strdup(purple_account_get_string(account, "proxy", sip->servername));
+		hosttoconnect = purple_account_get_string(account, "proxy", sip->servername);
 	}
 
 	sip->srv_query_data = purple_srv_resolve("sip",
 			sip->udp ? "udp" : "tcp", hosttoconnect, srvresolved, sip);
-	g_free(hosttoconnect);
 }
 
 static void simple_close(PurpleConnection *gc)
@@ -2068,6 +2067,7 @@
 	NULL,
 	NULL,
 	NULL,
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/toc/toc.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/toc/toc.c	Thu Jun 26 09:07:56 2008 +0000
@@ -527,7 +527,7 @@
 			g_snprintf(buf, sizeof(buf), _("Dir service temporarily unavailable."));
 			break;
 		case 974:
-			g_snprintf(buf, sizeof(buf), _("E-mail lookup restricted."));
+			g_snprintf(buf, sizeof(buf), _("Email lookup restricted."));
 			break;
 		case 975:
 			g_snprintf(buf, sizeof(buf), _("Keyword ignored."));
--- a/libpurple/protocols/yahoo/yahoo.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/yahoo/yahoo.c	Thu Jun 26 09:07:56 2008 +0000
@@ -4384,7 +4384,7 @@
 	yahoo_send_attention,
 	yahoo_attention_types,
 
-	/* padding */
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/yahoo/yahoo_profile.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/yahoo/yahoo_profile.c	Thu Jun 26 09:07:56 2008 +0000
@@ -745,6 +745,7 @@
 				p += 1; /* skip only the ' ' */
 				q = strchr(p, ' ');
 				if (q) {
+					g_free(it);
 					it = g_strndup(p, q - p);
 				}
 			}
@@ -1060,7 +1061,7 @@
 	/* extract their Email address and put it in */
 	found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
 			strings->my_email_string, (yd->jp ? 4 : 1), " ", 0,
-			strings->private_string, _("E-Mail"), 0, NULL, NULL);
+			strings->private_string, _("Email"), 0, NULL, NULL);
 
 	/* extract the Nickname if it exists */
 	found |= purple_markup_extract_info_field(stripped, stripped_len, user_info,
--- a/libpurple/protocols/yahoo/yahoochat.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/yahoo/yahoochat.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1043,7 +1043,7 @@
 						purple_conversation_get_name(c), what, flags);
 		if (!ret)
 			serv_got_chat_in(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(c)),
-					purple_connection_get_display_name(gc), 0, what, time(NULL));
+					purple_connection_get_display_name(gc), flags, what, time(NULL));
 	}
 	return ret;
 }
--- a/libpurple/protocols/zephyr/Makefile.am	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/zephyr/Makefile.am	Thu Jun 26 09:07:56 2008 +0000
@@ -59,9 +59,9 @@
 	mit-copyright.h \
 	mit-sipb-copyright.h \
 	sysdep.h \
-	zephyr.h \
 	zephyr_err.c \
 	zephyr_err.h \
+	zephyr_internal.h \
 	\
 	zephyr.c
 
@@ -104,7 +104,7 @@
 	-I$(top_srcdir)/libpurple \
 	-I$(top_builddir)/libpurple \
 	-I$(top_srcdir)/libpurple/protocols \
-	-DCONFDIR=\"$(confdir)\" \
+	-DCONFDIR=\"$(sysconfdir)\" \
 	$(GLIB_CFLAGS) \
 	$(KRB4_CFLAGS) \
 	$(DEBUG_CFLAGS)
--- a/libpurple/protocols/zephyr/internal.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/zephyr/internal.h	Thu Jun 26 09:07:56 2008 +0000
@@ -1,10 +1,14 @@
-
 #ifndef __INTERNAL_H__
 #define __INTERNAL_H__
 
 #include <sysdep.h>
 
-#include <zephyr.h>
+#ifdef LIBZEPHYR_EXT
+#include <zephyr/zephyr.h>
+#else
+#include <zephyr_internal.h>
+#endif
+
 #ifndef WIN32
 #include <netdb.h>
 #endif
--- a/libpurple/protocols/zephyr/zephyr.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/protocols/zephyr/zephyr.c	Thu Jun 26 09:07:56 2008 +0000
@@ -38,7 +38,6 @@
 #include "privacy.h"
 #include "version.h"
 
-#include "zephyr.h"
 #include "internal.h"
 
 #include <strings.h>
@@ -893,11 +892,16 @@
 			gconv1 = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT,
 														 zt2->name, gc->account);
 			gcc = purple_conversation_get_chat_data(gconv1);
-
+#ifndef INET_ADDRSTRLEN
+#define INET_ADDRSTRLEN 16
+#endif
 			if (!purple_conv_chat_find_user(gcc, sendertmp)) {
 				gchar ipaddr[INET_ADDRSTRLEN];
+#ifdef HAVE_INET_NTOP
 				inet_ntop(AF_INET, &notice.z_sender_addr.s_addr, ipaddr, sizeof(ipaddr));
-
+#else
+				memcpy(ipaddr,inet_ntoa(notice.z_sender_addr),sizeof(ipaddr));
+#endif
 				purple_conv_chat_add_user(gcc, sendertmp, ipaddr, PURPLE_CBFLAGS_NONE, TRUE);
 			}
 			g_free(sendertmp);
@@ -2907,10 +2911,10 @@
 	NULL,					/* send_raw */
 	NULL,					/* roomlist_room_serialize */
 
-	/* padding */
 	NULL,
 	NULL,
 	NULL,
+	sizeof(PurplePluginProtocolInfo),       /* struct_size */
 	NULL
 };
 
--- a/libpurple/protocols/zephyr/zephyr.h	Thu Jun 26 08:42:49 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,339 +0,0 @@
-/* This file is part of the Project Athena Zephyr Notification System.
- * It contains global definitions
- *
- *	Created by:	Robert French
- *
- *	Copyright (c) 1987,1988,1991 by the Massachusetts Institute of
- *	Technology. For copying and distribution information, see the
- *	file "mit-copyright.h".
- */
-
-#ifndef __ZEPHYR_H__
-#define __ZEPHYR_H__
-
-#include <config.h>
-
-#include <glib.h>
-
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include <zephyr_err.h>
-
-#ifndef IPPROTO_MAX	/* Make sure not already included */
-#ifndef WIN32
-#include <netinet/in.h>
-#endif
-#endif
-
-/* Use __STDC__ to guess whether we can use stdarg, prototypes, and const.
- * This is a public header file, so autoconf can't help us here. */
-#ifdef __STDC__
-# include <stdarg.h>
-# define ZP(x) x
-# define ZCONST const
-#else
-# define ZP(x) ()
-# define ZCONST
-#endif
-
-#ifdef WIN32
-/* this really should be uint32_t */
-/*typedef unsigned int in_addr_t;
-struct in_addr
-{
-  in_addr_t s_addr;
-}; */
-#include <winsock2.h>
-#endif
-
-/* Service names */
-#define	HM_SVCNAME		"zephyr-hm"
-#define HM_SRV_SVCNAME		"zephyr-hm-srv"
-#define	SERVER_SVCNAME		"zephyr-clt"
-#define SERVER_SERVICE		"zephyr"
-#define SERVER_INSTANCE		"zephyr"
-
-#define ZVERSIONHDR	"ZEPH"
-#define ZVERSIONMAJOR	0
-#define ZVERSIONMINOR	2
-
-#define Z_MAXPKTLEN		1024
-#define Z_MAXHEADERLEN		800
-#define Z_MAXOTHERFIELDS	10	/* Max unknown fields in ZNotice_t */
-#define Z_NUMFIELDS		17
-
-/* Authentication levels returned by ZCheckAuthentication */
-#define ZAUTH_FAILED    	(-1)
-#define ZAUTH_YES       	1
-#define ZAUTH_NO        	0
-
-typedef char ZPacket_t[Z_MAXPKTLEN];
-
-/* Packet type */
-typedef enum {
-    UNSAFE, UNACKED, ACKED, HMACK, HMCTL, SERVACK, SERVNAK, CLIENTACK, STAT
-} ZNotice_Kind_t;
-extern ZCONST char *ZNoticeKinds[9];
-
-/* Unique ID format */
-typedef struct _ZUnique_Id_t {
-    struct	in_addr zuid_addr;
-    struct	timeval	tv;
-} ZUnique_Id_t;
-
-/* Checksum */
-typedef unsigned long ZChecksum_t;
-
-/* Notice definition */
-typedef struct _ZNotice_t {
-    char		*z_packet;
-    char		*z_version;
-    ZNotice_Kind_t	z_kind;
-    ZUnique_Id_t	z_uid;
-#define z_sender_addr	z_uid.zuid_addr
-    struct		timeval z_time;
-    unsigned short	z_port;
-    int			z_auth;
-    int			z_checked_auth;
-    int			z_authent_len;
-    char		*z_ascii_authent;
-    char		*z_class;
-    const char		*z_class_inst;
-    char		*z_opcode;
-    char		*z_sender;
-    const char		*z_recipient;
-    char		*z_default_format;
-    char		*z_multinotice;
-    ZUnique_Id_t	z_multiuid;
-    ZChecksum_t		z_checksum;
-    int			z_num_other_fields;
-    char		*z_other_fields[Z_MAXOTHERFIELDS];
-    caddr_t		z_message;
-    int			z_message_len;
-} ZNotice_t;
-
-/* Subscription structure */
-typedef struct _ZSubscriptions_t {
-    char	*zsub_recipient;
-    char	*zsub_class;
-    char	*zsub_classinst;
-} ZSubscription_t;
-
-/* Function return code */
-typedef int Code_t;
-
-/* Locations structure */
-typedef struct _ZLocations_t {
-    char	*host;
-    char	*time;
-    char	*tty;
-} ZLocations_t;
-
-typedef struct _ZAsyncLocateData_t {
-    char		*user;
-    ZUnique_Id_t	uid;
-    char		*version;
-} ZAsyncLocateData_t;
-
-/* for ZSetDebug */
-#ifdef Z_DEBUG
-void (*__Z_debug_print) ZP((ZCONST char *fmt, va_list args, void *closure));
-void *__Z_debug_print_closure;
-#endif
-
-int ZCompareUIDPred ZP((ZNotice_t *, void *));
-int ZCompareMultiUIDPred ZP((ZNotice_t *, void *));
-
-/* Defines for ZFormatNotice, et al. */
-typedef Code_t (*Z_AuthProc) ZP((ZNotice_t*, char *, int, int *));
-Code_t ZMakeAuthentication ZP((ZNotice_t*, char *,int, int*));
-
-char *ZGetSender ZP((void));
-char *ZGetVariable ZP((char *));
-Code_t ZSetVariable ZP((char *var, char *value));
-Code_t ZUnsetVariable ZP((char *var));
-int ZGetWGPort ZP((void));
-Code_t ZSetDestAddr ZP((struct sockaddr_in *));
-Code_t ZFormatNoticeList ZP((ZNotice_t*, char**, int,
-			     char **, int*, Z_AuthProc));
-Code_t ZParseNotice ZP((char*, int, ZNotice_t *));
-Code_t ZReadAscii ZP((char*, int, unsigned char*, int));
-Code_t ZReadAscii32 ZP((char *, int, unsigned long *));
-Code_t ZReadAscii16 ZP((char *, int, unsigned short *));
-Code_t ZSendPacket ZP((char*, int, int));
-Code_t ZSendList ZP((ZNotice_t*, char *[], int, Z_AuthProc));
-Code_t ZSrvSendList ZP((ZNotice_t*, char*[], int, Z_AuthProc, Code_t (*)()));
-Code_t ZSendNotice ZP((ZNotice_t *, Z_AuthProc));
-Code_t ZSrvSendNotice ZP((ZNotice_t*, Z_AuthProc, Code_t (*)()));
-Code_t ZFormatNotice ZP((ZNotice_t*, char**, int*, Z_AuthProc));
-Code_t ZFormatSmallNotice ZP((ZNotice_t*, ZPacket_t, int*, Z_AuthProc));
-Code_t ZFormatRawNoticeList ZP((ZNotice_t *notice, char *list[], int nitems,
-				char **buffer, int *ret_len));
-Code_t ZLocateUser ZP((char *, int *, Z_AuthProc));
-Code_t ZRequestLocations ZP((const char *, ZAsyncLocateData_t *,
-			     ZNotice_Kind_t, Z_AuthProc));
-Code_t ZhmStat ZP((struct in_addr *, ZNotice_t *));
-Code_t ZInitialize ZP((void));
-Code_t ZSetServerState ZP((int));
-Code_t ZSetFD ZP((int));
-Code_t ZFormatSmallRawNotice ZP((ZNotice_t*, ZPacket_t, int*));
-int ZCompareUID ZP((ZUnique_Id_t*, ZUnique_Id_t*));
-Code_t ZMakeAscii ZP((char*, int, unsigned char*, int));
-Code_t ZMakeAscii32 ZP((char *, int, unsigned long));
-Code_t ZMakeAscii16 ZP((char *, int, unsigned int));
-Code_t ZReceivePacket ZP((ZPacket_t, int*, struct sockaddr_in*));
-Code_t ZCheckAuthentication ZP((ZNotice_t*, struct sockaddr_in*));
-Code_t ZSetLocation ZP((char *exposure));
-Code_t ZUnsetLocation ZP((void));
-Code_t ZFlushMyLocations ZP((void));
-Code_t ZFormatRawNotice ZP((ZNotice_t *, char**, int *));
-Code_t ZRetrieveSubscriptions ZP((unsigned short, int*));
-Code_t ZOpenPort ZP((unsigned short *port));
-Code_t ZClosePort ZP((void));
-Code_t ZFlushLocations ZP((void));
-Code_t ZFlushSubscriptions ZP((void));
-Code_t ZFreeNotice ZP((ZNotice_t *notice));
-Code_t ZParseLocations ZP((register ZNotice_t *notice,
-			   register ZAsyncLocateData_t *zald, int *nlocs,
-			   char **user));
-int ZCompareALDPred ZP((ZNotice_t *notice, void *zald));
-void ZFreeALD ZP((register ZAsyncLocateData_t *zald));
-Code_t ZCheckIfNotice ZP((ZNotice_t *notice, struct sockaddr_in *from,
-			  register int (*predicate) ZP((ZNotice_t *,void *)),
-			  void *args));
-Code_t ZPeekPacket ZP((char **buffer, int *ret_len,
-		       struct sockaddr_in *from));
-Code_t ZPeekNotice ZP((ZNotice_t *notice, struct sockaddr_in *from));
-Code_t ZIfNotice ZP((ZNotice_t *notice, struct sockaddr_in *from,
-		     int (*predicate) ZP((ZNotice_t *, void *)), void *args));
-Code_t ZSubscribeTo ZP((ZSubscription_t *sublist, int nitems,
-			unsigned int port));
-Code_t ZSubscribeToSansDefaults ZP((ZSubscription_t *sublist, int nitems,
-				    unsigned int port));
-Code_t ZUnsubscribeTo ZP((ZSubscription_t *sublist, int nitems,
-			  unsigned int port));
-Code_t ZCancelSubscriptions ZP((unsigned int port));
-int ZPending ZP((void));
-Code_t ZReceiveNotice ZP((ZNotice_t *notice, struct sockaddr_in *from));
-#ifdef Z_DEBUG
-void Z_debug ZP((ZCONST char *, ...));
-#endif
-
-#undef ZP
-
-/* Compatibility */
-#define	ZNewLocateUser ZLocateUser
-
-/* Macros to retrieve Zephyr library values. */
-extern int __Zephyr_fd;
-extern int __Q_CompleteLength;
-extern struct sockaddr_in __HM_addr;
-extern char __Zephyr_realm[];
-#define ZGetFD()	__Zephyr_fd
-#define ZQLength()	__Q_CompleteLength
-#define ZGetDestAddr()	__HM_addr
-#define ZGetRealm()	__Zephyr_realm
-
-#ifdef Z_DEBUG
-void ZSetDebug ZP((void (*)(ZCONST char *, va_list, void *), void *));
-#define ZSetDebug(proc,closure)    (__Z_debug_print=(proc), \
-				    __Z_debug_print_closure=(closure), \
-				    (void) 0)
-#else
-#define	ZSetDebug(proc,closure)
-#endif
-
-/* Maximum queue length */
-#define Z_MAXQLEN 		30
-
-/* Successful function return */
-#define ZERR_NONE		0
-
-/* Hostmanager wait time (in secs) */
-#define HM_TIMEOUT		1
-
-/* Server wait time (in secs) */
-#define	SRV_TIMEOUT		30
-
-#define ZAUTH (ZMakeAuthentication)
-#define ZNOAUTH ((Z_AuthProc)0)
-
-/* Packet strings */
-#define ZSRVACK_SENT		"SENT"	/* SERVACK codes */
-#define ZSRVACK_NOTSENT		"LOST"
-#define ZSRVACK_FAIL		"FAIL"
-
-/* Server internal class */
-#define ZEPHYR_ADMIN_CLASS	"ZEPHYR_ADMIN"	/* Class */
-
-/* Control codes sent to a server */
-#define ZEPHYR_CTL_CLASS	"ZEPHYR_CTL"	/* Class */
-
-#define ZEPHYR_CTL_CLIENT	"CLIENT"	/* Inst: From client */
-#define CLIENT_SUBSCRIBE	"SUBSCRIBE"	/* Opcode: Subscribe */
-#define CLIENT_SUBSCRIBE_NODEFS	"SUBSCRIBE_NODEFS"	/* Opcode: Subscribe */
-#define CLIENT_UNSUBSCRIBE	"UNSUBSCRIBE"	/* Opcode: Unsubsubscribe */
-#define CLIENT_CANCELSUB	"CLEARSUB"	/* Opcode: Clear all subs */
-#define CLIENT_GIMMESUBS	"GIMME"		/* Opcode: Give me subs */
-#define	CLIENT_GIMMEDEFS	"GIMMEDEFS"	/* Opcode: Give me default
-						 * subscriptions */
-
-#define ZEPHYR_CTL_HM		"HM"		/* Inst: From HM */
-#define HM_BOOT			"BOOT"		/* Opcode: Boot msg */
-#define HM_FLUSH		"FLUSH"		/* Opcode: Flush me */
-#define HM_DETACH		"DETACH"	/* Opcode: Detach me */
-#define HM_ATTACH		"ATTACH"	/* Opcode: Attach me */
-
-/* Control codes send to a HostManager */
-#define	HM_CTL_CLASS		"HM_CTL"	/* Class */
-
-#define HM_CTL_SERVER		"SERVER"	/* Inst: From server */
-#define SERVER_SHUTDOWN		"SHUTDOWN"	/* Opcode: Server shutdown */
-#define SERVER_PING		"PING"		/* Opcode: PING */
-
-#define HM_CTL_CLIENT           "CLIENT"        /* Inst: From client */
-#define CLIENT_FLUSH            "FLUSH"         /* Opcode: Send flush to srv */
-#define CLIENT_NEW_SERVER       "NEWSERV"       /* Opcode: Find new server */
-
-/* HM Statistics */
-#define HM_STAT_CLASS		"HM_STAT"	/* Class */
-
-#define HM_STAT_CLIENT		"HMST_CLIENT"	/* Inst: From client */
-#define HM_GIMMESTATS		"GIMMESTATS"	/* Opcode: get stats */
-
-/* Login class messages */
-#define LOGIN_CLASS		"LOGIN"		/* Class */
-
-/* Class Instance is principal of user who is logging in or logging out */
-
-#define EXPOSE_NONE		"NONE"		/* Opcode: Not visible */
-#define EXPOSE_OPSTAFF		"OPSTAFF"	/* Opcode: Opstaff visible */
-#define EXPOSE_REALMVIS		"REALM-VISIBLE"	/* Opcode: Realm visible */
-#define EXPOSE_REALMANN		"REALM-ANNOUNCED"/* Opcode: Realm announced */
-#define EXPOSE_NETVIS		"NET-VISIBLE"	/* Opcode: Net visible */
-#define EXPOSE_NETANN		"NET-ANNOUNCED"	/* Opcode: Net announced */
-#define	LOGIN_USER_LOGIN	"USER_LOGIN"	/* Opcode: user login
-						   (from server) */
-#define LOGIN_USER_LOGOUT	"USER_LOGOUT"	/* Opcode: User logout */
-#define	LOGIN_USER_FLUSH	"USER_FLUSH"	/* Opcode: flush all locs */
-
-/* Locate class messages */
-#define LOCATE_CLASS		"USER_LOCATE"	/* Class */
-
-#define LOCATE_HIDE		"USER_HIDE"	/* Opcode: Hide me */
-#define LOCATE_UNHIDE		"USER_UNHIDE"	/* Opcode: Unhide me */
-
-/* Class Instance is principal of user to locate */
-#define LOCATE_LOCATE		"LOCATE"	/* Opcode: Locate user */
-
-/* WG_CTL class messages */
-#define WG_CTL_CLASS		"WG_CTL"	/* Class */
-
-#define WG_CTL_USER		"USER"		/* Inst: User request */
-#define USER_REREAD		"REREAD"	/* Opcode: Reread desc file */
-#define USER_SHUTDOWN		"SHUTDOWN"	/* Opcode: Go catatonic */
-#define USER_STARTUP		"STARTUP"	/* Opcode: Come out of it */
-#define USER_EXIT		"EXIT"		/* Opcode: Exit the client */
-
-#endif /* __ZEPHYR_H__ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/zephyr/zephyr_internal.h	Thu Jun 26 09:07:56 2008 +0000
@@ -0,0 +1,339 @@
+/* This file is part of the Project Athena Zephyr Notification System.
+ * It contains global definitions
+ *
+ *	Created by:	Robert French
+ *
+ *	Copyright (c) 1987,1988,1991 by the Massachusetts Institute of
+ *	Technology. For copying and distribution information, see the
+ *	file "mit-copyright.h".
+ */
+
+#ifndef __ZEPHYR_H__
+#define __ZEPHYR_H__
+
+#include <config.h>
+
+#include <glib.h>
+
+#include <sys/types.h>
+#include <sys/time.h>
+
+#include <zephyr_err.h>
+
+#ifndef IPPROTO_MAX	/* Make sure not already included */
+#ifndef WIN32
+#include <netinet/in.h>
+#endif
+#endif
+
+/* Use __STDC__ to guess whether we can use stdarg, prototypes, and const.
+ * This is a public header file, so autoconf can't help us here. */
+#ifdef __STDC__
+# include <stdarg.h>
+# define ZP(x) x
+# define ZCONST const
+#else
+# define ZP(x) ()
+# define ZCONST
+#endif
+
+#ifdef WIN32
+/* this really should be uint32_t */
+/*typedef unsigned int in_addr_t;
+struct in_addr
+{
+  in_addr_t s_addr;
+}; */
+#include <winsock2.h>
+#endif
+
+/* Service names */
+#define	HM_SVCNAME		"zephyr-hm"
+#define HM_SRV_SVCNAME		"zephyr-hm-srv"
+#define	SERVER_SVCNAME		"zephyr-clt"
+#define SERVER_SERVICE		"zephyr"
+#define SERVER_INSTANCE		"zephyr"
+
+#define ZVERSIONHDR	"ZEPH"
+#define ZVERSIONMAJOR	0
+#define ZVERSIONMINOR	2
+
+#define Z_MAXPKTLEN		1024
+#define Z_MAXHEADERLEN		800
+#define Z_MAXOTHERFIELDS	10	/* Max unknown fields in ZNotice_t */
+#define Z_NUMFIELDS		17
+
+/* Authentication levels returned by ZCheckAuthentication */
+#define ZAUTH_FAILED    	(-1)
+#define ZAUTH_YES       	1
+#define ZAUTH_NO        	0
+
+typedef char ZPacket_t[Z_MAXPKTLEN];
+
+/* Packet type */
+typedef enum {
+    UNSAFE, UNACKED, ACKED, HMACK, HMCTL, SERVACK, SERVNAK, CLIENTACK, STAT
+} ZNotice_Kind_t;
+extern ZCONST char *ZNoticeKinds[9];
+
+/* Unique ID format */
+typedef struct _ZUnique_Id_t {
+    struct	in_addr zuid_addr;
+    struct	timeval	tv;
+} ZUnique_Id_t;
+
+/* Checksum */
+typedef unsigned long ZChecksum_t;
+
+/* Notice definition */
+typedef struct _ZNotice_t {
+    char		*z_packet;
+    char		*z_version;
+    ZNotice_Kind_t	z_kind;
+    ZUnique_Id_t	z_uid;
+#define z_sender_addr	z_uid.zuid_addr
+    struct		timeval z_time;
+    unsigned short	z_port;
+    int			z_auth;
+    int			z_checked_auth;
+    int			z_authent_len;
+    char		*z_ascii_authent;
+    char		*z_class;
+    const char		*z_class_inst;
+    char		*z_opcode;
+    char		*z_sender;
+    const char		*z_recipient;
+    char		*z_default_format;
+    char		*z_multinotice;
+    ZUnique_Id_t	z_multiuid;
+    ZChecksum_t		z_checksum;
+    int			z_num_other_fields;
+    char		*z_other_fields[Z_MAXOTHERFIELDS];
+    caddr_t		z_message;
+    int			z_message_len;
+} ZNotice_t;
+
+/* Subscription structure */
+typedef struct _ZSubscriptions_t {
+    char	*zsub_recipient;
+    char	*zsub_class;
+    char	*zsub_classinst;
+} ZSubscription_t;
+
+/* Function return code */
+typedef int Code_t;
+
+/* Locations structure */
+typedef struct _ZLocations_t {
+    char	*host;
+    char	*time;
+    char	*tty;
+} ZLocations_t;
+
+typedef struct _ZAsyncLocateData_t {
+    char		*user;
+    ZUnique_Id_t	uid;
+    char		*version;
+} ZAsyncLocateData_t;
+
+/* for ZSetDebug */
+#ifdef Z_DEBUG
+void (*__Z_debug_print) ZP((ZCONST char *fmt, va_list args, void *closure));
+void *__Z_debug_print_closure;
+#endif
+
+int ZCompareUIDPred ZP((ZNotice_t *, void *));
+int ZCompareMultiUIDPred ZP((ZNotice_t *, void *));
+
+/* Defines for ZFormatNotice, et al. */
+typedef Code_t (*Z_AuthProc) ZP((ZNotice_t*, char *, int, int *));
+Code_t ZMakeAuthentication ZP((ZNotice_t*, char *,int, int*));
+
+char *ZGetSender ZP((void));
+char *ZGetVariable ZP((char *));
+Code_t ZSetVariable ZP((char *var, char *value));
+Code_t ZUnsetVariable ZP((char *var));
+int ZGetWGPort ZP((void));
+Code_t ZSetDestAddr ZP((struct sockaddr_in *));
+Code_t ZFormatNoticeList ZP((ZNotice_t*, char**, int,
+			     char **, int*, Z_AuthProc));
+Code_t ZParseNotice ZP((char*, int, ZNotice_t *));
+Code_t ZReadAscii ZP((char*, int, unsigned char*, int));
+Code_t ZReadAscii32 ZP((char *, int, unsigned long *));
+Code_t ZReadAscii16 ZP((char *, int, unsigned short *));
+Code_t ZSendPacket ZP((char*, int, int));
+Code_t ZSendList ZP((ZNotice_t*, char *[], int, Z_AuthProc));
+Code_t ZSrvSendList ZP((ZNotice_t*, char*[], int, Z_AuthProc, Code_t (*)()));
+Code_t ZSendNotice ZP((ZNotice_t *, Z_AuthProc));
+Code_t ZSrvSendNotice ZP((ZNotice_t*, Z_AuthProc, Code_t (*)()));
+Code_t ZFormatNotice ZP((ZNotice_t*, char**, int*, Z_AuthProc));
+Code_t ZFormatSmallNotice ZP((ZNotice_t*, ZPacket_t, int*, Z_AuthProc));
+Code_t ZFormatRawNoticeList ZP((ZNotice_t *notice, char *list[], int nitems,
+				char **buffer, int *ret_len));
+Code_t ZLocateUser ZP((char *, int *, Z_AuthProc));
+Code_t ZRequestLocations ZP((const char *, ZAsyncLocateData_t *,
+			     ZNotice_Kind_t, Z_AuthProc));
+Code_t ZhmStat ZP((struct in_addr *, ZNotice_t *));
+Code_t ZInitialize ZP((void));
+Code_t ZSetServerState ZP((int));
+Code_t ZSetFD ZP((int));
+Code_t ZFormatSmallRawNotice ZP((ZNotice_t*, ZPacket_t, int*));
+int ZCompareUID ZP((ZUnique_Id_t*, ZUnique_Id_t*));
+Code_t ZMakeAscii ZP((char*, int, unsigned char*, int));
+Code_t ZMakeAscii32 ZP((char *, int, unsigned long));
+Code_t ZMakeAscii16 ZP((char *, int, unsigned int));
+Code_t ZReceivePacket ZP((ZPacket_t, int*, struct sockaddr_in*));
+Code_t ZCheckAuthentication ZP((ZNotice_t*, struct sockaddr_in*));
+Code_t ZSetLocation ZP((char *exposure));
+Code_t ZUnsetLocation ZP((void));
+Code_t ZFlushMyLocations ZP((void));
+Code_t ZFormatRawNotice ZP((ZNotice_t *, char**, int *));
+Code_t ZRetrieveSubscriptions ZP((unsigned short, int*));
+Code_t ZOpenPort ZP((unsigned short *port));
+Code_t ZClosePort ZP((void));
+Code_t ZFlushLocations ZP((void));
+Code_t ZFlushSubscriptions ZP((void));
+Code_t ZFreeNotice ZP((ZNotice_t *notice));
+Code_t ZParseLocations ZP((register ZNotice_t *notice,
+			   register ZAsyncLocateData_t *zald, int *nlocs,
+			   char **user));
+int ZCompareALDPred ZP((ZNotice_t *notice, void *zald));
+void ZFreeALD ZP((register ZAsyncLocateData_t *zald));
+Code_t ZCheckIfNotice ZP((ZNotice_t *notice, struct sockaddr_in *from,
+			  register int (*predicate) ZP((ZNotice_t *,void *)),
+			  void *args));
+Code_t ZPeekPacket ZP((char **buffer, int *ret_len,
+		       struct sockaddr_in *from));
+Code_t ZPeekNotice ZP((ZNotice_t *notice, struct sockaddr_in *from));
+Code_t ZIfNotice ZP((ZNotice_t *notice, struct sockaddr_in *from,
+		     int (*predicate) ZP((ZNotice_t *, void *)), void *args));
+Code_t ZSubscribeTo ZP((ZSubscription_t *sublist, int nitems,
+			unsigned int port));
+Code_t ZSubscribeToSansDefaults ZP((ZSubscription_t *sublist, int nitems,
+				    unsigned int port));
+Code_t ZUnsubscribeTo ZP((ZSubscription_t *sublist, int nitems,
+			  unsigned int port));
+Code_t ZCancelSubscriptions ZP((unsigned int port));
+int ZPending ZP((void));
+Code_t ZReceiveNotice ZP((ZNotice_t *notice, struct sockaddr_in *from));
+#ifdef Z_DEBUG
+void Z_debug ZP((ZCONST char *, ...));
+#endif
+
+#undef ZP
+
+/* Compatibility */
+#define	ZNewLocateUser ZLocateUser
+
+/* Macros to retrieve Zephyr library values. */
+extern int __Zephyr_fd;
+extern int __Q_CompleteLength;
+extern struct sockaddr_in __HM_addr;
+extern char __Zephyr_realm[];
+#define ZGetFD()	__Zephyr_fd
+#define ZQLength()	__Q_CompleteLength
+#define ZGetDestAddr()	__HM_addr
+#define ZGetRealm()	__Zephyr_realm
+
+#ifdef Z_DEBUG
+void ZSetDebug ZP((void (*)(ZCONST char *, va_list, void *), void *));
+#define ZSetDebug(proc,closure)    (__Z_debug_print=(proc), \
+				    __Z_debug_print_closure=(closure), \
+				    (void) 0)
+#else
+#define	ZSetDebug(proc,closure)
+#endif
+
+/* Maximum queue length */
+#define Z_MAXQLEN 		30
+
+/* Successful function return */
+#define ZERR_NONE		0
+
+/* Hostmanager wait time (in secs) */
+#define HM_TIMEOUT		1
+
+/* Server wait time (in secs) */
+#define	SRV_TIMEOUT		30
+
+#define ZAUTH (ZMakeAuthentication)
+#define ZNOAUTH ((Z_AuthProc)0)
+
+/* Packet strings */
+#define ZSRVACK_SENT		"SENT"	/* SERVACK codes */
+#define ZSRVACK_NOTSENT		"LOST"
+#define ZSRVACK_FAIL		"FAIL"
+
+/* Server internal class */
+#define ZEPHYR_ADMIN_CLASS	"ZEPHYR_ADMIN"	/* Class */
+
+/* Control codes sent to a server */
+#define ZEPHYR_CTL_CLASS	"ZEPHYR_CTL"	/* Class */
+
+#define ZEPHYR_CTL_CLIENT	"CLIENT"	/* Inst: From client */
+#define CLIENT_SUBSCRIBE	"SUBSCRIBE"	/* Opcode: Subscribe */
+#define CLIENT_SUBSCRIBE_NODEFS	"SUBSCRIBE_NODEFS"	/* Opcode: Subscribe */
+#define CLIENT_UNSUBSCRIBE	"UNSUBSCRIBE"	/* Opcode: Unsubsubscribe */
+#define CLIENT_CANCELSUB	"CLEARSUB"	/* Opcode: Clear all subs */
+#define CLIENT_GIMMESUBS	"GIMME"		/* Opcode: Give me subs */
+#define	CLIENT_GIMMEDEFS	"GIMMEDEFS"	/* Opcode: Give me default
+						 * subscriptions */
+
+#define ZEPHYR_CTL_HM		"HM"		/* Inst: From HM */
+#define HM_BOOT			"BOOT"		/* Opcode: Boot msg */
+#define HM_FLUSH		"FLUSH"		/* Opcode: Flush me */
+#define HM_DETACH		"DETACH"	/* Opcode: Detach me */
+#define HM_ATTACH		"ATTACH"	/* Opcode: Attach me */
+
+/* Control codes send to a HostManager */
+#define	HM_CTL_CLASS		"HM_CTL"	/* Class */
+
+#define HM_CTL_SERVER		"SERVER"	/* Inst: From server */
+#define SERVER_SHUTDOWN		"SHUTDOWN"	/* Opcode: Server shutdown */
+#define SERVER_PING		"PING"		/* Opcode: PING */
+
+#define HM_CTL_CLIENT           "CLIENT"        /* Inst: From client */
+#define CLIENT_FLUSH            "FLUSH"         /* Opcode: Send flush to srv */
+#define CLIENT_NEW_SERVER       "NEWSERV"       /* Opcode: Find new server */
+
+/* HM Statistics */
+#define HM_STAT_CLASS		"HM_STAT"	/* Class */
+
+#define HM_STAT_CLIENT		"HMST_CLIENT"	/* Inst: From client */
+#define HM_GIMMESTATS		"GIMMESTATS"	/* Opcode: get stats */
+
+/* Login class messages */
+#define LOGIN_CLASS		"LOGIN"		/* Class */
+
+/* Class Instance is principal of user who is logging in or logging out */
+
+#define EXPOSE_NONE		"NONE"		/* Opcode: Not visible */
+#define EXPOSE_OPSTAFF		"OPSTAFF"	/* Opcode: Opstaff visible */
+#define EXPOSE_REALMVIS		"REALM-VISIBLE"	/* Opcode: Realm visible */
+#define EXPOSE_REALMANN		"REALM-ANNOUNCED"/* Opcode: Realm announced */
+#define EXPOSE_NETVIS		"NET-VISIBLE"	/* Opcode: Net visible */
+#define EXPOSE_NETANN		"NET-ANNOUNCED"	/* Opcode: Net announced */
+#define	LOGIN_USER_LOGIN	"USER_LOGIN"	/* Opcode: user login
+						   (from server) */
+#define LOGIN_USER_LOGOUT	"USER_LOGOUT"	/* Opcode: User logout */
+#define	LOGIN_USER_FLUSH	"USER_FLUSH"	/* Opcode: flush all locs */
+
+/* Locate class messages */
+#define LOCATE_CLASS		"USER_LOCATE"	/* Class */
+
+#define LOCATE_HIDE		"USER_HIDE"	/* Opcode: Hide me */
+#define LOCATE_UNHIDE		"USER_UNHIDE"	/* Opcode: Unhide me */
+
+/* Class Instance is principal of user to locate */
+#define LOCATE_LOCATE		"LOCATE"	/* Opcode: Locate user */
+
+/* WG_CTL class messages */
+#define WG_CTL_CLASS		"WG_CTL"	/* Class */
+
+#define WG_CTL_USER		"USER"		/* Inst: User request */
+#define USER_REREAD		"REREAD"	/* Opcode: Reread desc file */
+#define USER_SHUTDOWN		"SHUTDOWN"	/* Opcode: Go catatonic */
+#define USER_STARTUP		"STARTUP"	/* Opcode: Come out of it */
+#define USER_EXIT		"EXIT"		/* Opcode: Exit the client */
+
+#endif /* __ZEPHYR_H__ */
--- a/libpurple/proxy.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/proxy.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1143,7 +1143,7 @@
 	int len;
 
 	if (connect_data->read_buffer == NULL) {
-		connect_data->read_buf_len = 4;
+		connect_data->read_buf_len = 5;
 		connect_data->read_buffer = g_malloc(connect_data->read_buf_len);
 		connect_data->read_len = 0;
 	}
@@ -1212,6 +1212,11 @@
 				return;
 			buf += 4 + 16;
 			break;
+		default:
+			purple_debug_error("socks5 proxy", "Invalid ATYP received (0x%X)\n", buf[3]);
+			purple_proxy_connect_data_disconnect(connect_data,
+					_("Received invalid data on connection with server."));
+			return;
 	}
 
 	/* Skip past BND.PORT */
@@ -1728,6 +1733,10 @@
  * resolved, and each time a connection attempt fails (assuming there
  * is another IP address to try).
  */
+#ifndef INET6_ADDRSTRLEN
+#define INET6_ADDRSTRLEN 46
+#endif
+
 static void try_connect(PurpleProxyConnectData *connect_data)
 {
 	size_t addrlen;
@@ -1738,9 +1747,13 @@
 	connect_data->hosts = g_slist_remove(connect_data->hosts, connect_data->hosts->data);
 	addr = connect_data->hosts->data;
 	connect_data->hosts = g_slist_remove(connect_data->hosts, connect_data->hosts->data);
-
+#ifdef HAVE_INET_NTOP
 	inet_ntop(addr->sa_family, &((struct sockaddr_in *)addr)->sin_addr,
 			ipaddr, sizeof(ipaddr));
+#else
+	memcpy(ipaddr,inet_ntoa(((struct sockaddr_in *)addr)->sin_addr),
+			sizeof(ipaddr));
+#endif
 	purple_debug_info("proxy", "Attempting connection to %s\n", ipaddr);
 
 	switch (purple_proxy_info_get_type(connect_data->gpi)) {
--- a/libpurple/proxy.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/proxy.h	Thu Jun 26 09:07:56 2008 +0000
@@ -239,9 +239,9 @@
  *                   to something descriptive (hopefully).
  * @param data       User-defined data.
  *
- * @return NULL if there was an error, or a reference to a data
- *         structure that can be used to cancel the pending
- *         connection, if needed.
+ * @return NULL if there was an error, or a reference to an
+ *         opaque data structure that can be used to cancel
+ *         the pending connection, if needed.
  */
 PurpleProxyConnectData *purple_proxy_connect(void *handle,
 			PurpleAccount *account,
@@ -265,9 +265,9 @@
  *                   to something descriptive (hopefully).
  * @param data       User-defined data.
  *
- * @return NULL if there was an error, or a reference to a data
- *         structure that can be used to cancel the pending
- *         connection, if needed.
+ * @return NULL if there was an error, or a reference to an
+ *         opaque data structure that can be used to cancel
+ *         the pending connection, if needed.
  */
 PurpleProxyConnectData *purple_proxy_connect_socks5(void *handle,
 			PurpleProxyInfo *gpi,
--- a/libpurple/prpl.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/prpl.h	Thu Jun 26 09:07:56 2008 +0000
@@ -31,6 +31,7 @@
 #define _PURPLE_PRPL_H_
 
 typedef struct _PurplePluginProtocolInfo PurplePluginProtocolInfo;
+/** @copydoc _PurpleAttentionType */
 typedef struct _PurpleAttentionType PurpleAttentionType;
 
 /**************************************************************************/
@@ -71,16 +72,22 @@
 #include "status.h"
 #include "whiteboard.h"
 
+
+/** @copydoc PurpleBuddyIconSpec */
 struct _PurpleBuddyIconSpec {
-	char *format;                       /**< This is a comma-delimited list of image formats or NULL if icons are not supported.
-					     * Neither the core nor the prpl will actually check to see if the data it's given matches this; it's
-					     * entirely up to the UI to do what it wants */
-	int min_width;                          /**< The minimum width of this icon  */
-	int min_height;                         /**< The minimum height of this icon */
-	int max_width;                          /**< The maximum width of this icon  */
-	int max_height;                         /**< The maximum height of this icon */
-	size_t max_filesize;                     /**< The maximum number of bytes    */
-	PurpleIconScaleRules scale_rules;		/**< How to stretch this icon */
+	/** This is a comma-delimited list of image formats or @c NULL if icons
+	 *  are not supported.  Neither the core nor the prpl will actually
+	 *  check to see if the data it's given matches this; it's entirely up
+	 *  to the UI to do what it wants
+	 */
+	char *format;
+
+	int min_width;                     /**< Minimum width of this icon  */
+	int min_height;                    /**< Minimum height of this icon */
+	int max_width;                     /**< Maximum width of this icon  */
+	int max_height;                    /**< Maximum height of this icon */
+	size_t max_filesize;               /**< Maximum size in bytes */
+	PurpleIconScaleRules scale_rules;  /**< How to stretch this icon */
 };
 
 struct proto_chat_entry {
@@ -93,6 +100,9 @@
 	gboolean secret;
 };
 
+/** Represents "nudges" and "buzzes" that you may send to a buddy to attract
+ *  their attention (or vice-versa).
+ */
 struct _PurpleAttentionType
 {
 	const char *name;                  /**< Shown in GUI elements */
@@ -399,9 +409,45 @@
 	gboolean (*send_attention)(PurpleConnection *gc, const char *username, guint type);
 	GList *(*get_attention_types)(PurpleAccount *acct);
 
-	void (*_purple_reserved4)(void);
+	/**
+	 * The size of the PurplePluginProtocolInfo. This should always be sizeof(PurplePluginProtocolInfo).
+	 * This allows adding more functions to this struct without requiring a major version bump.
+	 */
+	unsigned long struct_size;
+
+	/* NOTE:
+	 * If more functions are added, they should accessed using the following syntax:
+	 *
+	 *		if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, new_function))
+	 *			prpl->new_function(...);
+	 *
+	 * instead of
+	 *
+	 *		if (prpl->new_function != NULL)
+	 *			prpl->new_function(...);
+	 *
+	 * The PURPLE_PROTOCOL_PLUGIN_HAS_FUNC macro can be used for the older member
+	 * functions (e.g. login, send_im etc.) too.
+	 */
+
+	/** This allows protocols to specify additional strings to be used for
+	 * various purposes.  The idea is to stuff a bunch of strings in this hash
+	 * table instead of expanding the struct for every addition.  This hash
+	 * table is allocated every call and MUST be unrefed by the caller.
+	 *
+	 * @param account The account to specify.  This can be NULL.
+	 * @return The protocol's string hash table. The hash table should be
+	 *         destroyed by the caller when it's no longer needed.
+	 */
+	GHashTable *(*get_account_text_table)(PurpleAccount *account);
 };
 
+#define PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, member) \
+	(((G_STRUCT_OFFSET(PurplePluginProtocolInfo, member) < G_STRUCT_OFFSET(PurplePluginProtocolInfo, struct_size)) \
+	  || (G_STRUCT_OFFSET(PurplePluginProtocolInfo, member) < prpl->struct_size)) && \
+	 prpl->member != NULL)
+
+
 #define PURPLE_IS_PROTOCOL_PLUGIN(plugin) \
 	((plugin)->info->type == PURPLE_PLUGIN_PROTOCOL)
 
--- a/libpurple/purple-remote	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/purple-remote	Thu Jun 26 09:07:56 2008 +0000
@@ -35,7 +35,7 @@
             raise "Error: " + self.attr + " " + str(args) + " returned " + str(result)
         return result
             
-def show_help():
+def show_help(requested=False):
     print """This program uses D-Bus to communicate with purple.
 
 Usage:
@@ -66,6 +66,10 @@
     PurpleAccountsFindConnected?name=&protocol=prpl-jabber
     PurpleAccountsFindConnected(,prpl-jabber)
 """ % sys.argv[0]
+    if (requested):
+        sys.exit(0)
+    else:
+        sys.exit(1)
 
 cpurple = CheckedObject(purple)
 
@@ -213,10 +217,11 @@
                                 raise "Don't know how to handle type \"%s\"" % type
                     return purple.__getattr__(command)(*methodparams)
             show_help()
-            raise "Unknown command: %s" % command
 
 if len(sys.argv) == 1:
     show_help()
+elif (sys.argv[1] == "--help" or sys.argv[1] == "-h"):
+    show_help(True)
 elif (obj == None):
     print "No existing libpurple instance detected."
     sys.exit(1);
--- a/libpurple/purple-url-handler	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/purple-url-handler	Thu Jun 26 09:07:56 2008 +0000
@@ -295,10 +295,14 @@
 
 
 def main(argv=sys.argv):
-    if len(argv) != 2:
+    if len(argv) != 2 or argv[1] == "--help" or argv[1] == "-h":
         print "Usage: %s URI" % argv[0]
         print "Example: %s \"xmpp:romeo@montague.net?message\"" % argv[0]
-        return
+
+        if len(argv) != 2:
+            sys.exit(1)
+        else:
+            return 0
 
     uri = argv[1]
     type = uri.split(":")[0]
--- a/libpurple/roomlist.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/roomlist.h	Thu Jun 26 09:07:56 2008 +0000
@@ -30,6 +30,7 @@
 typedef struct _PurpleRoomlist PurpleRoomlist;
 typedef struct _PurpleRoomlistRoom PurpleRoomlistRoom;
 typedef struct _PurpleRoomlistField PurpleRoomlistField;
+/** @copydoc _PurpleRoomlistUiOps */
 typedef struct _PurpleRoomlistUiOps PurpleRoomlistUiOps;
 
 /**
--- a/libpurple/server.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/server.c	Thu Jun 26 09:07:56 2008 +0000
@@ -151,7 +151,6 @@
 	 */
 	auto_reply_pref = purple_prefs_get_string("/purple/away/auto_reply");
 	if((gc->flags & PURPLE_CONNECTION_AUTO_RESP) &&
-			flags & PURPLE_MESSAGE_AUTO_RESP &&
 			!purple_presence_is_available(presence) &&
 			strcmp(auto_reply_pref, "never")) {
 
@@ -659,8 +658,11 @@
 
 	if (PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc))->set_permit_deny == NULL) {
 		/* protocol does not support privacy, handle it ourselves */
-		if (!purple_privacy_check(account, who))
+		if (!purple_privacy_check(account, who)) {
+			purple_signal_emit(purple_conversations_get_handle(), "blocked-im-msg",
+					account, who, msg, flags, (unsigned int)mtime);
 			return;
+		}
 	}
 
 	/*
@@ -725,6 +727,7 @@
 		PurpleStatusPrimitive primitive;
 		const gchar *auto_reply_pref;
 		const char *away_msg = NULL;
+		gboolean mobile = FALSE;
 
 		auto_reply_pref = purple_prefs_get_string("/purple/away/auto_reply");
 
@@ -732,9 +735,10 @@
 		status = purple_presence_get_active_status(presence);
 		status_type = purple_status_get_type(status);
 		primitive = purple_status_type_get_primitive(status_type);
+		mobile = purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_MOBILE);
 		if ((primitive == PURPLE_STATUS_AVAILABLE) ||
 			(primitive == PURPLE_STATUS_INVISIBLE) ||
-			(primitive == PURPLE_STATUS_MOBILE) ||
+			mobile ||
 		    !strcmp(auto_reply_pref, "never") ||
 		    (!purple_presence_is_idle(presence) && !strcmp(auto_reply_pref, "awayidle")))
 		{
@@ -879,8 +883,11 @@
 	account = purple_connection_get_account(gc);
 	if (PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc))->set_permit_deny == NULL) {
 		/* protocol does not support privacy, handle it ourselves */
-		if (!purple_privacy_check(account, who))
+		if (!purple_privacy_check(account, who)) {
+			purple_signal_emit(purple_conversations_get_handle(), "chat-invite-blocked",
+					account, who, name, message, data);
 			return;
+		}
 	}
 
 	plugin_return = GPOINTER_TO_INT(purple_signal_emit_return_1(
@@ -967,6 +974,12 @@
 	purple_signal_emit(purple_conversations_get_handle(), "chat-left", conv);
 }
 
+void purple_serv_got_join_chat_failed(PurpleConnection *gc, GHashTable *data)
+{
+	purple_signal_emit(purple_conversations_get_handle(), "chat-join-failed",
+					gc, data);
+}
+
 void serv_got_chat_in(PurpleConnection *g, int id, const char *who,
 					  PurpleMessageFlags flags, const char *message, time_t mtime)
 {
--- a/libpurple/server.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/server.h	Thu Jun 26 09:07:56 2008 +0000
@@ -166,6 +166,17 @@
 
 PurpleConversation *serv_got_joined_chat(PurpleConnection *gc,
 									   int id, const char *name);
+/**
+ * Called by a prpl when an attempt to join a chat via serv_join_chat()
+ * fails.
+ *
+ * @param gc      The connection on which chat joining failed
+ * @param data    The components passed to serv_join_chat() originally.
+ *                The hash function should be g_str_hash() and the equal
+ *                function should be g_str_equal().
+ */
+void purple_serv_got_join_chat_failed(PurpleConnection *gc, GHashTable *data);
+	
 void serv_got_chat_left(PurpleConnection *g, int id);
 void serv_got_chat_in(PurpleConnection *g, int id, const char *who,
 					  PurpleMessageFlags flags, const char *message, time_t mtime);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/smiley.c	Thu Jun 26 09:07:56 2008 +0000
@@ -0,0 +1,902 @@
+/**
+ * @file smiley.c Simley API
+ * @ingroup core
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+
+#include "internal.h"
+#include "dbus-maybe.h"
+#include "debug.h"
+#include "imgstore.h"
+#include "smiley.h"
+#include "util.h"
+#include "xmlnode.h"
+
+/**************************************************************************/
+/* Main structures, members and constants                                 */
+/**************************************************************************/
+
+struct _PurpleSmiley
+{
+	GObject parent;
+	PurpleStoredImage *img;        /**< The id of the stored image with the
+	                                    the smiley data.        */
+	char *shortcut;                /**< Shortcut associated with the custom
+	                                    smiley. This field will work as a
+	                                    unique key by this API. */
+	char *checksum;                /**< The smiley checksum.        */
+};
+
+struct _PurpleSmileyClass
+{
+	GObjectClass parent_class;
+};
+
+static GHashTable *smiley_shortcut_index = NULL; /* shortcut (char *) => smiley (PurpleSmiley*) */
+static GHashTable *smiley_checksum_index = NULL; /* checksum (char *) => smiley (PurpleSmiley*) */
+
+static guint save_timer = 0;
+static gboolean smileys_loaded = FALSE;
+static char *smileys_dir = NULL;
+
+#define SMILEYS_DEFAULT_FOLDER			"custom_smiley"
+#define SMILEYS_LOG_ID				"smileys"
+
+#define XML_FILE_NAME				"smileys.xml"
+
+#define XML_ROOT_TAG				"smileys"
+#define XML_PROFILE_TAG			"profile"
+#define XML_PROFILE_NAME_ATTRIB_TAG		"name"
+#define XML_ACCOUNT_TAG			"account"
+#define XML_ACCOUNT_USERID_ATTRIB_TAG		"userid"
+#define XML_SMILEY_SET_TAG			"smiley_set"
+#define XML_SMILEY_TAG				"smiley"
+#define XML_SHORTCUT_ATTRIB_TAG		"shortcut"
+#define XML_CHECKSUM_ATRIB_TAG			"checksum"
+#define XML_FILENAME_ATRIB_TAG			"filename"
+
+
+/******************************************************************************
+ * XML descriptor file layout                                                 *
+ ******************************************************************************
+ *
+ * Althought we are creating the profile XML structure here, now we
+ * won't handle it.
+ * So, we just add one profile named "default" that has no associated
+ * account elements, and have only the smiley_set that will contain
+ * all existent custom smiley.
+ *
+ * It's our "Highlander Profile" :-)
+ *
+ ******************************************************************************
+ *
+ * <smileys>
+ *   <profile name="john.doe">
+ *     <account userid="john.doe@jabber.org">
+ *     <account userid="john.doe@gmail.com">
+ *     <smiley_set>
+ *       <smiley shortcut="aaa" checksum="xxxxxxxx" filename="file_name1.gif"/>
+ *       <smiley shortcut="bbb" checksum="yyyyyyy" filename="file_name2.gif"/>
+ *     </smiley_set>
+ *   </profile>
+ * </smiley>
+ *
+ *****************************************************************************/
+
+
+/*********************************************************************
+ * Forward declarations                                              *
+ *********************************************************************/
+
+static gboolean read_smiley_file(const char *path, guchar **data, size_t *len);
+
+static char *get_file_full_path(const char *filename);
+
+static PurpleSmiley *purple_smiley_create(const char *shortcut);
+
+static PurpleSmiley *purple_smiley_load_file(const char *shortcut, const char *checksum,
+		const char *filename);
+
+static void
+purple_smiley_set_data_impl(PurpleSmiley *smiley, guchar *smiley_data,
+		size_t smiley_data_len);
+
+static void
+purple_smiley_data_store(PurpleStoredImage *stored_img);
+
+static void
+purple_smiley_data_unstore(const char *filename);
+
+/*********************************************************************
+ * Writing to disk                                                   *
+ *********************************************************************/
+
+static xmlnode *
+smiley_to_xmlnode(PurpleSmiley *smiley)
+{
+	xmlnode *smiley_node = NULL;
+
+	smiley_node = xmlnode_new(XML_SMILEY_TAG);
+
+	if (!smiley_node)
+		return NULL;
+
+	xmlnode_set_attrib(smiley_node, XML_SHORTCUT_ATTRIB_TAG,
+			smiley->shortcut);
+
+	xmlnode_set_attrib(smiley_node, XML_CHECKSUM_ATRIB_TAG,
+			smiley->checksum);
+
+	xmlnode_set_attrib(smiley_node, XML_FILENAME_ATRIB_TAG,
+			purple_imgstore_get_filename(smiley->img));
+
+	return smiley_node;
+}
+
+static void
+add_smiley_to_main_node(gpointer key, gpointer value, gpointer user_data)
+{
+	xmlnode *child_node;
+
+	child_node = smiley_to_xmlnode(value);
+	xmlnode_insert_child((xmlnode*)user_data, child_node);
+}
+
+static xmlnode *
+smileys_to_xmlnode()
+{
+	xmlnode *root_node, *profile_node, *smileyset_node;
+
+	root_node = xmlnode_new(XML_ROOT_TAG);
+	xmlnode_set_attrib(root_node, "version", "1.0");
+
+	/* See the top comment's above to understand why initial tag elements
+	 * are not being considered by now. */
+	profile_node = xmlnode_new(XML_PROFILE_TAG);
+	if (profile_node) {
+		xmlnode_set_attrib(profile_node, XML_PROFILE_NAME_ATTRIB_TAG, "Default");
+		xmlnode_insert_child(root_node, profile_node);
+
+		smileyset_node = xmlnode_new(XML_SMILEY_SET_TAG);
+		if (smileyset_node) {
+			xmlnode_insert_child(profile_node, smileyset_node);
+			g_hash_table_foreach(smiley_shortcut_index, add_smiley_to_main_node, smileyset_node);
+		}
+	}
+
+	return root_node;
+}
+
+static void
+sync_smileys()
+{
+	xmlnode *root_node;
+	char *data;
+
+	if (!smileys_loaded) {
+		purple_debug_error(SMILEYS_LOG_ID, "Attempted to save smileys before it "
+						 "was read!\n");
+		return;
+	}
+
+	root_node = smileys_to_xmlnode();
+	data = xmlnode_to_formatted_str(root_node, NULL);
+	purple_util_write_data_to_file(XML_FILE_NAME, data, -1);
+
+	g_free(data);
+	xmlnode_free(root_node);
+}
+
+static gboolean
+save_smileys_cb(gpointer data)
+{
+	sync_smileys();
+	save_timer = 0;
+	return FALSE;
+}
+
+static void
+purple_smileys_save()
+{
+	if (save_timer == 0)
+		save_timer = purple_timeout_add_seconds(5, save_smileys_cb, NULL);
+}
+
+
+/*********************************************************************
+ * Reading from disk                                                 *
+ *********************************************************************/
+
+static PurpleSmiley *
+parse_smiley(xmlnode *smiley_node)
+{
+	PurpleSmiley *smiley;
+	const char *shortcut = NULL;
+	const char *checksum = NULL;
+	const char *filename = NULL;
+
+	shortcut = xmlnode_get_attrib(smiley_node, XML_SHORTCUT_ATTRIB_TAG);
+	checksum = xmlnode_get_attrib(smiley_node, XML_CHECKSUM_ATRIB_TAG);
+	filename = xmlnode_get_attrib(smiley_node, XML_FILENAME_ATRIB_TAG);
+
+	if ((shortcut == NULL) || (checksum == NULL) || (filename == NULL))
+		return NULL;
+
+	smiley = purple_smiley_load_file(shortcut, checksum, filename);
+
+	return smiley;
+}
+
+static void
+purple_smileys_load()
+{
+	xmlnode *root_node, *profile_node;
+	xmlnode *smileyset_node = NULL;
+	xmlnode *smiley_node;
+
+	smileys_loaded = TRUE;
+
+	root_node = purple_util_read_xml_from_file(XML_FILE_NAME,
+			_(SMILEYS_LOG_ID));
+
+	if (root_node == NULL)
+		return;
+
+	/* See the top comment's above to understand why initial tag elements
+	 * are not being considered by now. */
+	profile_node = xmlnode_get_child(root_node, XML_PROFILE_TAG);
+	if (profile_node)
+		smileyset_node = xmlnode_get_child(profile_node, XML_SMILEY_SET_TAG);
+
+	if (smileyset_node) {
+		smiley_node = xmlnode_get_child(smileyset_node, XML_SMILEY_TAG);
+		for (; smiley_node != NULL;
+				smiley_node = xmlnode_get_next_twin(smiley_node)) {
+			PurpleSmiley *smiley;
+
+			smiley = parse_smiley(smiley_node);
+		}
+	}
+
+	xmlnode_free(root_node);
+}
+
+/*********************************************************************
+ * GObject Stuff                                                     *
+ *********************************************************************/
+enum
+{
+	PROP_0,
+	PROP_SHORTCUT,
+	PROP_IMGSTORE,
+};
+
+#define PROP_SHORTCUT_S "shortcut"
+#define PROP_IMGSTORE_S "image"
+
+enum
+{
+	SIG_DESTROY,
+	SIG_LAST
+};
+
+static guint signals[SIG_LAST];
+static GObjectClass *parent_class;
+
+static void
+purple_smiley_init(GTypeInstance *instance, gpointer klass)
+{
+	PurpleSmiley *smiley = PURPLE_SMILEY(instance);
+	PURPLE_DBUS_REGISTER_POINTER(smiley, PurpleSmiley);
+}
+
+static void
+purple_smiley_get_property(GObject *object, guint param_id, GValue *value,
+		GParamSpec *spec)
+{
+	PurpleSmiley *smiley = PURPLE_SMILEY(object);
+	switch (param_id) {
+		case PROP_SHORTCUT:
+			g_value_set_string(value, smiley->shortcut);
+			break;
+		case PROP_IMGSTORE:
+			g_value_set_pointer(value, smiley->img);
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(object, param_id, spec);
+			break;
+	}
+}
+
+static void
+purple_smiley_set_property(GObject *object, guint param_id, const GValue *value,
+		GParamSpec *spec)
+{
+	PurpleSmiley *smiley = PURPLE_SMILEY(object);
+	switch (param_id) {
+		case PROP_SHORTCUT:
+			{
+				const char *shortcut = g_value_get_string(value);
+				purple_smiley_set_shortcut(smiley, shortcut);
+			}
+			break;
+		case PROP_IMGSTORE:
+			{
+				PurpleStoredImage *img = g_value_get_pointer(value);
+
+				purple_imgstore_unref(smiley->img);
+				g_free(smiley->checksum);
+
+				smiley->img = img;
+				if (img) {
+					smiley->checksum = purple_util_get_image_checksum(
+							purple_imgstore_get_data(img),
+							purple_imgstore_get_size(img));
+					purple_smiley_data_store(img);
+				} else {
+					smiley->checksum = NULL;
+				}
+
+				g_object_notify(object, PROP_IMGSTORE_S);
+			}
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(object, param_id, spec);
+			break;
+	}
+}
+
+static void
+purple_smiley_finalize(GObject *obj)
+{
+	PurpleSmiley *smiley = PURPLE_SMILEY(obj);
+
+	if (g_hash_table_lookup(smiley_shortcut_index, smiley->shortcut)) {
+		g_hash_table_remove(smiley_shortcut_index, smiley->shortcut);
+		g_hash_table_remove(smiley_checksum_index, smiley->checksum);
+	}
+
+	g_free(smiley->shortcut);
+	g_free(smiley->checksum);
+	if (smiley->img)
+		purple_smiley_data_unstore(purple_imgstore_get_filename(smiley->img));
+	purple_imgstore_unref(smiley->img);
+
+	PURPLE_DBUS_UNREGISTER_POINTER(smiley);
+
+	purple_smileys_save();
+}
+
+static void
+purple_smiley_dispose(GObject *gobj)
+{
+	g_signal_emit(gobj, signals[SIG_DESTROY], 0);
+	parent_class->dispose(gobj);
+}
+
+static void
+purple_smiley_class_init(PurpleSmileyClass *klass)
+{
+	GObjectClass *gobj_class = G_OBJECT_CLASS(klass);
+	GParamSpec *pspec;
+
+	parent_class = g_type_class_peek_parent(klass);
+
+	gobj_class->get_property = purple_smiley_get_property;
+	gobj_class->set_property = purple_smiley_set_property;
+	gobj_class->finalize = purple_smiley_finalize;
+	gobj_class->dispose = purple_smiley_dispose;
+
+	/* Shortcut */
+	pspec = g_param_spec_string(PROP_SHORTCUT_S, _("Shortcut"),
+			_("The text-shortcut for the smiley"),
+			NULL,
+			G_PARAM_READWRITE);
+	g_object_class_install_property(gobj_class, PROP_SHORTCUT, pspec);
+
+	/* Stored Image */
+	pspec = g_param_spec_pointer(PROP_IMGSTORE_S, _("Stored Image"),
+			_("Stored Image. (that'll have to do for now)"),
+			G_PARAM_READWRITE);
+	g_object_class_install_property(gobj_class, PROP_IMGSTORE, pspec);
+
+	signals[SIG_DESTROY] = g_signal_new("destroy",
+			G_OBJECT_CLASS_TYPE(klass),
+			G_SIGNAL_RUN_LAST,
+			0, NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
+}
+
+GType
+purple_smiley_get_type(void)
+{
+	static GType type = 0;
+
+	if(type == 0) {
+		static const GTypeInfo info = {
+			sizeof(PurpleSmileyClass),
+			NULL,
+			NULL,
+			(GClassInitFunc)purple_smiley_class_init,
+			NULL,
+			NULL,
+			sizeof(PurpleSmiley),
+			0,
+			purple_smiley_init,
+			NULL,
+		};
+
+		type = g_type_register_static(G_TYPE_OBJECT,
+				"PurpleSmiley",
+				&info, 0);
+	}
+
+	return type;
+}
+
+/*********************************************************************
+ * Other Stuff                                                             *
+ *********************************************************************/
+
+static char *get_file_full_path(const char *filename)
+{
+	char *path;
+
+	path = g_build_filename(purple_smileys_get_storing_dir(), filename, NULL);
+
+	if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
+		g_free(path);
+		return NULL;
+	}
+
+	return path;
+}
+
+static PurpleSmiley *
+purple_smiley_load_file(const char *shortcut, const char *checksum, const char *filename)
+{
+	PurpleSmiley *smiley = NULL;
+	guchar *smiley_data;
+	size_t smiley_data_len;
+	char *fullpath = NULL;
+
+	g_return_val_if_fail(shortcut  != NULL, NULL);
+	g_return_val_if_fail(checksum  != NULL, NULL);
+	g_return_val_if_fail(filename != NULL, NULL);
+
+	fullpath = get_file_full_path(filename);
+	if (!fullpath)
+		return NULL;
+
+	smiley = purple_smiley_create(shortcut);
+	if (!smiley) {
+		g_free(fullpath);
+		return NULL;
+	}
+
+	smiley->checksum = g_strdup(checksum);
+
+	if (read_smiley_file(fullpath, &smiley_data, &smiley_data_len))
+		purple_smiley_set_data_impl(smiley, smiley_data,
+				smiley_data_len);
+	else
+		purple_smiley_delete(smiley);
+
+	g_free(fullpath);
+
+	return smiley;
+}
+
+static void
+purple_smiley_data_store(PurpleStoredImage *stored_img)
+{
+	const char *dirname;
+	char *path;
+	FILE *file = NULL;
+
+	g_return_if_fail(stored_img != NULL);
+
+	if (!smileys_loaded)
+		return;
+
+	dirname  = purple_smileys_get_storing_dir();
+	path = g_build_filename(dirname, purple_imgstore_get_filename(stored_img), NULL);
+
+	if (!g_file_test(dirname, G_FILE_TEST_IS_DIR)) {
+		purple_debug_info(SMILEYS_LOG_ID, "Creating smileys directory.\n");
+
+		if (g_mkdir(dirname, S_IRUSR | S_IWUSR | S_IXUSR) < 0) {
+			purple_debug_error(SMILEYS_LOG_ID,
+			                   "Unable to create directory %s: %s\n",
+			                   dirname, g_strerror(errno));
+		}
+	}
+
+	if ((file = g_fopen(path, "wb")) != NULL) {
+		if (!fwrite(purple_imgstore_get_data(stored_img),
+				purple_imgstore_get_size(stored_img), 1, file)) {
+			purple_debug_error(SMILEYS_LOG_ID, "Error writing %s: %s\n",
+			                   path, g_strerror(errno));
+		} else {
+			purple_debug_info(SMILEYS_LOG_ID, "Wrote cache file: %s\n", path);
+		}
+
+		fclose(file);
+	} else {
+		purple_debug_error(SMILEYS_LOG_ID, "Unable to create file %s: %s\n",
+		                   path, g_strerror(errno));
+		g_free(path);
+
+		return;
+	}
+
+	g_free(path);
+}
+
+static void
+purple_smiley_data_unstore(const char *filename)
+{
+	const char *dirname;
+	char *path;
+
+	g_return_if_fail(filename != NULL);
+
+	dirname  = purple_smileys_get_storing_dir();
+	path = g_build_filename(dirname, filename, NULL);
+
+	if (g_file_test(path, G_FILE_TEST_EXISTS)) {
+		if (g_unlink(path))
+			purple_debug_error(SMILEYS_LOG_ID, "Failed to delete %s: %s\n",
+			                   path, g_strerror(errno));
+		else
+			purple_debug_info(SMILEYS_LOG_ID, "Deleted cache file: %s\n", path);
+	}
+
+	g_free(path);
+}
+
+static gboolean
+read_smiley_file(const char *path, guchar **data, size_t *len)
+{
+	GError *err = NULL;
+
+	if (!g_file_get_contents(path, (gchar **)data, len, &err)) {
+		purple_debug_error(SMILEYS_LOG_ID, "Error reading %s: %s\n",
+				path, err->message);
+		g_error_free(err);
+
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+static PurpleStoredImage *
+purple_smiley_data_new(guchar *smiley_data, size_t smiley_data_len)
+{
+	char *filename;
+	PurpleStoredImage *stored_img;
+
+	g_return_val_if_fail(smiley_data != NULL,   NULL);
+	g_return_val_if_fail(smiley_data_len  > 0,  NULL);
+
+	filename = purple_util_get_image_filename(smiley_data, smiley_data_len);
+
+	if (filename == NULL) {
+		g_free(smiley_data);
+		return NULL;
+	}
+
+	stored_img = purple_imgstore_add(smiley_data, smiley_data_len, filename);
+
+	g_free(filename);
+
+	return stored_img;
+}
+
+static void
+purple_smiley_set_data_impl(PurpleSmiley *smiley, guchar *smiley_data,
+				size_t smiley_data_len)
+{
+	PurpleStoredImage *old_img, *new_img;
+	const char *old_filename = NULL;
+	const char *new_filename = NULL;
+
+	g_return_if_fail(smiley     != NULL);
+	g_return_if_fail(smiley_data != NULL);
+	g_return_if_fail(smiley_data_len > 0);
+
+	old_img = smiley->img;
+
+	new_img = purple_smiley_data_new(smiley_data, smiley_data_len);
+
+	g_object_set(G_OBJECT(smiley), PROP_IMGSTORE_S, new_img, NULL);
+
+	/* If the old and new image files have different names we need
+	 * to unstore old image file. */
+	if (!old_img)
+		return;
+
+	old_filename = purple_imgstore_get_filename(old_img);
+	new_filename = purple_imgstore_get_filename(smiley->img);
+
+	if (g_ascii_strcasecmp(old_filename, new_filename))
+		purple_smiley_data_unstore(old_filename);
+	purple_imgstore_unref(old_img);
+}
+
+
+/*****************************************************************************
+ * Public API functions                                                      *
+ *****************************************************************************/
+
+static PurpleSmiley *
+purple_smiley_create(const char *shortcut)
+{
+	PurpleSmiley *smiley;
+
+	smiley = PURPLE_SMILEY(g_object_new(PURPLE_TYPE_SMILEY, PROP_SHORTCUT_S, shortcut, NULL));
+
+	return smiley;
+}
+
+PurpleSmiley *
+purple_smiley_new(PurpleStoredImage *img, const char *shortcut)
+{
+	PurpleSmiley *smiley = NULL;
+
+	g_return_val_if_fail(shortcut  != NULL, NULL);
+	g_return_val_if_fail(img       != NULL, NULL);
+
+	smiley = purple_smileys_find_by_shortcut(shortcut);
+	if (smiley)
+		return smiley;
+
+	smiley = purple_smiley_create(shortcut);
+	if (!smiley)
+		return NULL;
+
+	g_object_set(G_OBJECT(smiley), PROP_IMGSTORE_S, img, NULL);
+
+	return smiley;
+}
+
+static PurpleSmiley *
+purple_smiley_new_from_stream(const char *shortcut, guchar *smiley_data,
+			size_t smiley_data_len)
+{
+	PurpleSmiley *smiley;
+
+	g_return_val_if_fail(shortcut  != NULL,    NULL);
+	g_return_val_if_fail(smiley_data != NULL,  NULL);
+	g_return_val_if_fail(smiley_data_len  > 0, NULL);
+
+	smiley = purple_smileys_find_by_shortcut(shortcut);
+	if (smiley)
+		return smiley;
+
+	/* purple_smiley_create() sets shortcut */
+	smiley = purple_smiley_create(shortcut);
+	if (!smiley)
+		return NULL;
+
+	purple_smiley_set_data_impl(smiley, smiley_data, smiley_data_len);
+
+	purple_smiley_data_store(smiley->img);
+
+	return smiley;
+}
+
+PurpleSmiley *
+purple_smiley_new_from_file(const char *shortcut, const char *filepath)
+{
+	PurpleSmiley *smiley = NULL;
+	guchar *smiley_data;
+	size_t smiley_data_len;
+
+	g_return_val_if_fail(shortcut  != NULL,  NULL);
+	g_return_val_if_fail(filepath != NULL,  NULL);
+
+	if (read_smiley_file(filepath, &smiley_data, &smiley_data_len)) {
+		smiley = purple_smiley_new_from_stream(shortcut, smiley_data,
+				smiley_data_len);
+	}
+	
+	return smiley;
+}
+
+void
+purple_smiley_delete(PurpleSmiley *smiley)
+{
+	g_return_if_fail(smiley != NULL);
+
+	g_object_unref(smiley);
+}
+
+gboolean
+purple_smiley_set_shortcut(PurpleSmiley *smiley, const char *shortcut)
+{
+	g_return_val_if_fail(smiley  != NULL, FALSE);
+	g_return_val_if_fail(shortcut != NULL, FALSE);
+
+	/* Check out whether the new shortcut is already being used. */
+	if (g_hash_table_lookup(smiley_shortcut_index, shortcut))
+		return FALSE;
+
+	/* Remove the old shortcut. */
+	if (smiley->shortcut)
+		g_hash_table_remove(smiley_shortcut_index, smiley->shortcut);
+
+	/* Insert the new shortcut. */
+	g_hash_table_insert(smiley_shortcut_index, g_strdup(shortcut), smiley);
+
+	g_free(smiley->shortcut);
+	smiley->shortcut = g_strdup(shortcut);
+
+	g_object_notify(G_OBJECT(smiley), PROP_SHORTCUT_S);
+
+	purple_smileys_save();
+
+	return TRUE;
+}
+
+void
+purple_smiley_set_data(PurpleSmiley *smiley, guchar *smiley_data,
+			   size_t smiley_data_len)
+{
+	g_return_if_fail(smiley     != NULL);
+	g_return_if_fail(smiley_data != NULL);
+	g_return_if_fail(smiley_data_len > 0);
+
+	/* Remove the previous entry */
+	g_hash_table_remove(smiley_checksum_index, smiley->checksum);
+
+	/* Update the file data. This also updates the checksum. */
+	purple_smiley_set_data_impl(smiley, smiley_data, smiley_data_len);
+
+	/* Reinsert the index item. */
+	g_hash_table_insert(smiley_checksum_index, g_strdup(smiley->checksum), smiley);
+
+	purple_smileys_save();
+}
+
+PurpleStoredImage *
+purple_smiley_get_stored_image(const PurpleSmiley *smiley)
+{
+	return purple_imgstore_ref(smiley->img);
+}
+
+const char *purple_smiley_get_shortcut(const PurpleSmiley *smiley)
+{
+	g_return_val_if_fail(smiley != NULL, NULL);
+
+	return smiley->shortcut;
+}
+
+const char *
+purple_smiley_get_checksum(const PurpleSmiley *smiley)
+{
+	g_return_val_if_fail(smiley != NULL, NULL);
+
+	return smiley->checksum;
+}
+
+gconstpointer
+purple_smiley_get_data(const PurpleSmiley *smiley, size_t *len)
+{
+	g_return_val_if_fail(smiley != NULL, NULL);
+
+	if (smiley->img) {
+		if (len != NULL)
+			*len = purple_imgstore_get_size(smiley->img);
+
+		return purple_imgstore_get_data(smiley->img);
+	}
+
+	return NULL;
+}
+
+const char *
+purple_smiley_get_extension(const PurpleSmiley *smiley)
+{
+	if (smiley->img != NULL)
+		return purple_imgstore_get_extension(smiley->img);
+
+	return NULL;
+}
+
+char *purple_smiley_get_full_path(PurpleSmiley *smiley)
+{
+	g_return_val_if_fail(smiley != NULL, NULL);
+
+	if (smiley->img == NULL)
+		return NULL;
+
+	return get_file_full_path(purple_imgstore_get_filename(smiley->img));
+}
+
+static void add_smiley_to_list(gpointer key, gpointer value, gpointer user_data)
+{
+	GList** returninglist = (GList**)user_data;
+
+	*returninglist = g_list_append(*returninglist, value);
+}
+
+GList *
+purple_smileys_get_all(void)
+{
+	GList *returninglist = NULL;
+
+	g_hash_table_foreach(smiley_shortcut_index, add_smiley_to_list, &returninglist);
+
+	return returninglist;
+}
+
+PurpleSmiley *
+purple_smileys_find_by_shortcut(const char *shortcut)
+{
+	g_return_val_if_fail(shortcut != NULL, NULL);
+
+	return g_hash_table_lookup(smiley_shortcut_index, shortcut);
+}
+
+PurpleSmiley *
+purple_smileys_find_by_checksum(const char *checksum)
+{
+	g_return_val_if_fail(checksum != NULL, NULL);
+
+	return g_hash_table_lookup(smiley_checksum_index, checksum);
+}
+
+const char *
+purple_smileys_get_storing_dir(void)
+{
+	return smileys_dir;
+}
+
+void
+purple_smileys_init()
+{
+	smiley_shortcut_index = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
+	smiley_checksum_index = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
+
+	smileys_dir = g_build_filename(purple_user_dir(), SMILEYS_DEFAULT_FOLDER, NULL);
+
+	purple_smileys_load();
+}
+
+void
+purple_smileys_uninit()
+{
+	if (save_timer != 0) {
+		purple_timeout_remove(save_timer);
+		save_timer = 0;
+		sync_smileys();
+	}
+
+	g_hash_table_destroy(smiley_shortcut_index);
+	g_hash_table_destroy(smiley_checksum_index);
+	g_free(smileys_dir);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/smiley.h	Thu Jun 26 09:07:56 2008 +0000
@@ -0,0 +1,269 @@
+/**
+ * @file smiley.h Smiley API
+ * @ingroup core
+ * @since 2.5.0
+ */
+
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ *
+ */
+
+#ifndef _PURPLE_SMILEY_H_
+#define _PURPLE_SMILEY_H_
+
+#include <glib-object.h>
+
+#include "imgstore.h"
+#include "util.h"
+
+/**
+ * A custom smiley.
+ * This contains everything Purple will ever need to know about a custom smiley.
+ * Everything.
+ *
+ * PurpleSmiley is a GObject.
+ */
+typedef struct _PurpleSmiley        PurpleSmiley;
+typedef struct _PurpleSmileyClass   PurpleSmileyClass;
+
+#define PURPLE_TYPE_SMILEY             (purple_smiley_get_type ())
+#define PURPLE_SMILEY(smiley)          (G_TYPE_CHECK_INSTANCE_CAST ((smiley), PURPLE_TYPE_SMILEY, PurpleSmiley))
+#define PURPLE_SMILEY_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), PURPLE_TYPE_SMILEY, PurpleSmileyClass))
+#define PURPLE_IS_SMILEY(smiley)       (G_TYPE_CHECK_INSTANCE_TYPE ((smiley), PURPLE_TYPE_SMILEY))
+#define PURPLE_IS_SMILEY_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), PURPLE_TYPE_SMILEY))
+#define PURPLE_SMILEY_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), PURPLE_TYPE_SMILEY, PurpleSmileyClass))
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**************************************************************************/
+/** @name Custom Smiley API                                               */
+/**************************************************************************/
+/*@{*/
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType purple_smiley_get_type(void);
+
+/**
+ * Creates a new custom smiley structure and populates it.
+ *
+ * If a custom smiley with the informed shortcut already exist, it
+ * will be automaticaly returned.
+ *
+ * @param img         The image associated with the smiley.
+ * @param shortcut    The custom smiley associated shortcut.
+ *
+ * @return The custom smiley structure filled up.
+ */
+PurpleSmiley *
+purple_smiley_new(PurpleStoredImage *img, const char *shortcut);
+
+/**
+ * Creates a new custom smiley structure and populates it.
+ *
+ * The data is retrieved from an already existent file.
+ *
+ * If a custom smiley with the informed shortcut already exist, it
+ * will be automaticaly returned.
+ *
+ * @param shortcut           The custom smiley associated shortcut.
+ * @param filepath           The image file to be imported to a
+ *                           new custom smiley.
+ *
+ * @return The custom smiley structure filled up.
+ */
+PurpleSmiley *
+purple_smiley_new_from_file(const char *shortcut, const char *filepath);
+
+/**
+ * Destroy the custom smiley and release the associated resources.
+ *
+ * @param smiley    The custom smiley.
+ */
+void
+purple_smiley_delete(PurpleSmiley *smiley);
+
+/**
+ * Changes the custom smiley's shortcut.
+ *
+ * @param smiley    The custom smiley.
+ * @param shortcut  The custom smiley associated shortcut.
+ *
+ * @return TRUE whether the shortcut is not associated with another
+ *         custom smiley and the parameters are valid. FALSE otherwise.
+ */
+gboolean
+purple_smiley_set_shortcut(PurpleSmiley *smiley, const char *shortcut);
+
+/**
+ * Changes the custom smiley's data.
+ *
+ * When the filename controling is made outside this API, the param
+ * #keepfilename must be TRUE.
+ * Otherwise, the file and filename will be regenerated, and the
+ * old one will be removed.
+ *
+ * @param smiley             The custom smiley.
+ * @param smiley_data        The custom smiley data.
+ * @param smiley_data_len    The custom smiley data length.
+ */
+void
+purple_smiley_set_data(PurpleSmiley *smiley, guchar *smiley_data,
+                                           size_t smiley_data_len);
+
+/**
+ * Returns the custom smiley's associated shortcut.
+ *
+ * @param smiley   The custom smiley.
+ *
+ * @return The shortcut.
+ */
+const char *purple_smiley_get_shortcut(const PurpleSmiley *smiley);
+
+/**
+ * Returns the custom smiley data's checksum.
+ *
+ * @param smiley   The custom smiley.
+ *
+ * @return The checksum.
+ */
+const char *purple_smiley_get_checksum(const PurpleSmiley *smiley);
+
+/**
+ * Returns the PurpleStoredImage with the reference counter incremented.
+ *
+ * The returned PurpleStoredImage reference counter must be decremented
+ * after use.
+ *
+ * @param smiley   The custom smiley.
+ *
+ * @return A PurpleStoredImage reference.
+ */
+PurpleStoredImage *purple_smiley_get_stored_image(const PurpleSmiley *smiley);
+
+/**
+ * Returns the custom smiley's data.
+ *
+ * @param smiley  The custom smiley.
+ * @param len     If not @c NULL, the length of the icon data returned
+ *                will be set in the location pointed to by this.
+ *
+ * @return A pointer to the custom smiley data.
+ */
+gconstpointer purple_smiley_get_data(const PurpleSmiley *smiley, size_t *len);
+
+/**
+ * Returns an extension corresponding to the custom smiley's file type.
+ *
+ * @param smiley  The custom smiley.
+ *
+ * @return The custom smiley's extension, "icon" if unknown, or @c NULL if
+ *         the image data has disappeared.
+ */
+const char *purple_smiley_get_extension(const PurpleSmiley *smiley);
+
+/**
+ * Returns a full path to an custom smiley.
+ *
+ * If the custom smiley has data and the file exists in the cache, this
+ * will return a full path to the cached file.
+ *
+ * In general, it is not appropriate to be poking in the file cached
+ * directly.  If you find yourself wanting to use this function, think
+ * very long and hard about it, and then don't.
+ *
+ * @param smiley  The custom smiley.
+ *
+ * @return A full path to the file, or @c NULL under various conditions.
+ *         The caller should use #g_free to free the returned string.
+ */
+char *purple_smiley_get_full_path(PurpleSmiley *smiley);
+
+/*@}*/
+
+
+/**************************************************************************/
+/** @name Custom Smiley Subsystem API                                     */
+/**************************************************************************/
+/*@{*/
+
+/**
+ * Returns a list of all custom smileys. The caller should free the list.
+ *
+ * @return A list of all custom smileys.
+ */
+GList *
+purple_smileys_get_all(void);
+
+/**
+ * Returns the custom smiley given it's shortcut.
+ *
+ * @param shortcut The custom smiley's shortcut.
+ *
+ * @return The custom smiley (with a reference for the caller) if found,
+ *         or @c NULL if not found.
+ */
+PurpleSmiley *
+purple_smileys_find_by_shortcut(const char *shortcut);
+
+/**
+ * Returns the custom smiley given it's checksum.
+ *
+ * @param checksum The custom smiley's checksum.
+ *
+ * @return The custom smiley (with a reference for the caller) if found,
+ *         or @c NULL if not found.
+ */
+PurpleSmiley *
+purple_smileys_find_by_checksum(const char *checksum);
+
+/**
+ * Returns the directory used to store custom smiley cached files.
+ *
+ * The default directory is PURPLEDIR/smileys, unless otherwise specified
+ * by purple_buddy_icons_set_cache_dir().
+ *
+ * @return The directory to store custom smyles cached files to.
+ */
+const char *purple_smileys_get_storing_dir(void);
+
+/**
+ * Initializes the custom smiley subsystem.
+ */
+void purple_smileys_init(void);
+
+/**
+ * Uninitializes the custom smiley subsystem.
+ */
+void purple_smileys_uninit(void);
+
+/*@}*/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PURPLE_SMILEY_H_ */
+
--- a/libpurple/sound.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/sound.h	Thu Jun 26 09:07:56 2008 +0000
@@ -55,6 +55,9 @@
 
 } PurpleSoundEventID;
 
+/** Operations used by the core to request that particular sound files, or the
+ *  sound associated with a particular event, should be played.
+ */
 typedef struct _PurpleSoundUiOps
 {
 	void (*init)(void);
--- a/libpurple/status.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/status.c	Thu Jun 26 09:07:56 2008 +0000
@@ -107,10 +107,14 @@
 	PurpleStatusType *type;
 	PurplePresence *presence;
 
-	const char *title;
-
 	gboolean active;
 
+	/*
+	 * The current values of the attributes for this status.  The
+	 * key is a string containing the name of the attribute.  It is
+	 * a borrowed reference from the list of attrs in the
+	 * PurpleStatusType.  The value is a PurpleValue.
+	 */
 	GHashTable *attr_values;
 };
 
@@ -563,7 +567,7 @@
 	status->presence = presence;
 
 	status->attr_values =
-		g_hash_table_new_full(g_str_hash, g_str_equal, g_free,
+		g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
 		(GDestroyNotify)purple_value_destroy);
 
 	for (l = purple_status_type_get_attrs(status_type); l != NULL; l = l->next)
@@ -573,7 +577,7 @@
 		PurpleValue *new_value = purple_value_dup(value);
 
 		g_hash_table_insert(status->attr_values,
-							g_strdup(purple_status_attr_get_id(attr)),
+							(char *)purple_status_attr_get_id(attr),
 							new_value);
 	}
 
--- a/libpurple/util.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/util.c	Thu Jun 26 09:07:56 2008 +0000
@@ -832,6 +832,11 @@
 				if (offset_positive)
 					tzoff *= -1;
 			}
+			else if ((*c == 'Z') && (c = c + 1))
+			{
+				/* 'Z' = Zulu = UTC */
+				tzoff = 0;
+			}
 			else if (utc)
 			{
 				static struct tm tmptm;
@@ -939,7 +944,8 @@
 	else if(IS_ENTITY("&apos;"))
 		pln = "\'";
 	else if(*(text+1) == '#' &&
-			(sscanf(text, "&#%u%1[;]", &pound, temp) == 2 || sscanf(text, "&#x%x%1[;]", &pound, temp) == 2) &&
+			(sscanf(text, "&#%u%1[;]", &pound, temp) == 2 ||
+			 sscanf(text, "&#x%x%1[;]", &pound, temp) == 2) &&
 			pound != 0) {
 		static char buf[7];
 		int buflen = g_unichar_to_utf8((gunichar)pound, buf);
@@ -1356,6 +1362,14 @@
 	GString *cdata = NULL;
 	GList *tags = NULL, *tag;
 	const char *c = html;
+	char quote = '\0';
+
+#define CHECK_QUOTE(ptr) if (*(ptr) == '\'' || *(ptr) == '\"') \
+			quote = *(ptr++); \
+		else \
+			quote = '\0';
+
+#define VALID_CHAR(ptr) (*(ptr) && *(ptr) != quote && (quote || (*(ptr) != ' ' && *(ptr) != '>')))
 
 	g_return_if_fail(xhtml_out != NULL || plain_out != NULL);
 
@@ -1513,38 +1527,37 @@
 						xhtml = g_string_append(xhtml, "<span style='vertical-align:super;'>");
 					continue;
 				}
-				if(!g_ascii_strncasecmp(c, "<img", 4) && (*(c+4) == '>' || *(c+4) == ' ')) {
-					const char *p = c;
+				if (!g_ascii_strncasecmp(c, "<img", 4) && (*(c+4) == '>' || *(c+4) == ' ')) {
+					const char *p = c + 4;
 					GString *src = NULL, *alt = NULL;
-					while(*p && *p != '>') {
-						if(!g_ascii_strncasecmp(p, "src=", strlen("src="))) {
-							const char *q = p + strlen("src=");
+					while (*p && *p != '>') {
+						if (!g_ascii_strncasecmp(p, "src=", 4)) {
+							const char *q = p + 4;
 							if (src)
 								g_string_free(src, TRUE);
 							src = g_string_new("");
-							if(*q == '\'' || *q == '\"')
-								q++;
-							while(*q && *q != '\"' && *q != '\'' && *q != ' ') {
+							CHECK_QUOTE(q);
+							while (VALID_CHAR(q)) {
 								src = g_string_append_c(src, *q);
 								q++;
 							}
 							p = q;
-						} else if(!g_ascii_strncasecmp(p, "alt=", strlen("alt="))) {
-							const char *q = p + strlen("alt=");
+						} else if (!g_ascii_strncasecmp(p, "alt=", 4)) {
+							const char *q = p + 4;
 							if (alt)
 								g_string_free(alt, TRUE);
 							alt = g_string_new("");
-							if(*q == '\'' || *q == '\"')
-								q++;
-							while(*q && *q != '\"' && *q != '\'' && *q != ' ') {
+							CHECK_QUOTE(q);
+							while (VALID_CHAR(q)) {
 								alt = g_string_append_c(alt, *q);
 								q++;
 							}
 							p = q;
+						} else {
+							p++;
 						}
-						p++;
 					}
-					if ((c = strchr(c, '>')) != NULL)
+					if ((c = strchr(p, '>')) != NULL)
 						c++;
 					else
 						c = p;
@@ -1561,21 +1574,20 @@
 					g_string_free(src, TRUE);
 					continue;
 				}
-				if(!g_ascii_strncasecmp(c, "<a", 2) && (*(c+2) == '>' || *(c+2) == ' ')) {
-					const char *p = c;
+				if (!g_ascii_strncasecmp(c, "<a", 2) && (*(c+2) == '>' || *(c+2) == ' ')) {
+					const char *p = c + 2;
 					struct purple_parse_tag *pt;
-					while(*p && *p != '>') {
-						if(!g_ascii_strncasecmp(p, "href=", strlen("href="))) {
-							const char *q = p + strlen("href=");
+					while (*p && *p != '>') {
+						if (!g_ascii_strncasecmp(p, "href=", 5)) {
+							const char *q = p + 5;
 							if (url)
 								g_string_free(url, TRUE);
 							url = g_string_new("");
 							if (cdata)
 								g_string_free(cdata, TRUE);
 							cdata = g_string_new("");
-							if(*q == '\'' || *q == '\"')
-								q++;
-							while(*q && *q != '\"' && *q != '\'' && *q != ' ') {
+							CHECK_QUOTE(q);
+							while (VALID_CHAR(q)) {
 								int len;
 								if ((*q == '&') && (purple_markup_unescape_entity(q, &len) == NULL))
 									url = g_string_append(url, "&amp;");
@@ -1584,10 +1596,11 @@
 								q++;
 							}
 							p = q;
+						} else {
+							p++;
 						}
-						p++;
 					}
-					if ((c = strchr(c, '>')) != NULL)
+					if ((c = strchr(p, '>')) != NULL)
 						c++;
 					else
 						c = p;
@@ -1600,55 +1613,48 @@
 					continue;
 				}
 				if(!g_ascii_strncasecmp(c, "<font", 5) && (*(c+5) == '>' || *(c+5) == ' ')) {
-					const char *p = c;
+					const char *p = c + 5;
 					GString *style = g_string_new("");
 					struct purple_parse_tag *pt;
-					while(*p && *p != '>') {
-						if(!g_ascii_strncasecmp(p, "back=", strlen("back="))) {
-							const char *q = p + strlen("back=");
+					while (*p && *p != '>') {
+						if (!g_ascii_strncasecmp(p, "back=", 5)) {
+							const char *q = p + 5;
 							GString *color = g_string_new("");
-							if(*q == '\'' || *q == '\"')
-								q++;
-							while(*q && *q != '\"' && *q != '\'' && *q != ' ') {
+							CHECK_QUOTE(q);
+							while (VALID_CHAR(q)) {
 								color = g_string_append_c(color, *q);
 								q++;
 							}
 							g_string_append_printf(style, "background: %s; ", color->str);
 							g_string_free(color, TRUE);
 							p = q;
-						} else if(!g_ascii_strncasecmp(p, "color=", strlen("color="))) {
-							const char *q = p + strlen("color=");
+						} else if (!g_ascii_strncasecmp(p, "color=", 6)) {
+							const char *q = p + 6;
 							GString *color = g_string_new("");
-							if(*q == '\'' || *q == '\"')
-								q++;
-							while(*q && *q != '\"' && *q != '\'' && *q != ' ') {
+							CHECK_QUOTE(q);
+							while (VALID_CHAR(q)) {
 								color = g_string_append_c(color, *q);
 								q++;
 							}
 							g_string_append_printf(style, "color: %s; ", color->str);
 							g_string_free(color, TRUE);
 							p = q;
-						} else if(!g_ascii_strncasecmp(p, "face=", strlen("face="))) {
-							const char *q = p + strlen("face=");
-							gboolean space_allowed = FALSE;
+						} else if (!g_ascii_strncasecmp(p, "face=", 5)) {
+							const char *q = p + 5;
 							GString *face = g_string_new("");
-							if(*q == '\'' || *q == '\"') {
-								space_allowed = TRUE;
-								q++;
-							}
-							while(*q && *q != '\"' && *q != '\'' && (space_allowed || *q != ' ')) {
+							CHECK_QUOTE(q);
+							while (VALID_CHAR(q)) {
 								face = g_string_append_c(face, *q);
 								q++;
 							}
 							g_string_append_printf(style, "font-family: %s; ", g_strstrip(face->str));
 							g_string_free(face, TRUE);
 							p = q;
-						} else if(!g_ascii_strncasecmp(p, "size=", strlen("size="))) {
-							const char *q = p + strlen("size=");
+						} else if (!g_ascii_strncasecmp(p, "size=", 5)) {
+							const char *q = p + 5;
 							int sz;
 							const char *size = "medium";
-							if(*q == '\'' || *q == '\"')
-								q++;
+							CHECK_QUOTE(q);
 							sz = atoi(q);
 							switch (sz)
 							{
@@ -1678,10 +1684,11 @@
 							}
 							g_string_append_printf(style, "font-size: %s; ", size);
 							p = q;
+						} else {
+							p++;
 						}
-						p++;
 					}
-					if ((c = strchr(c, '>')) != NULL)
+					if ((c = strchr(p, '>')) != NULL)
 						c++;
 					else
 						c = p;
@@ -1696,24 +1703,23 @@
 					g_string_free(style, TRUE);
 					continue;
 				}
-				if(!g_ascii_strncasecmp(c, "<body ", 6)) {
-					const char *p = c;
+				if (!g_ascii_strncasecmp(c, "<body ", 6)) {
+					const char *p = c + 6;
 					gboolean did_something = FALSE;
-					while(*p && *p != '>') {
-						if(!g_ascii_strncasecmp(p, "bgcolor=", strlen("bgcolor="))) {
-							const char *q = p + strlen("bgcolor=");
+					while (*p && *p != '>') {
+						if (!g_ascii_strncasecmp(p, "bgcolor=", 8)) {
+							const char *q = p + 8;
 							struct purple_parse_tag *pt = g_new0(struct purple_parse_tag, 1);
 							GString *color = g_string_new("");
-							if(*q == '\'' || *q == '\"')
-								q++;
-							while(*q && *q != '\"' && *q != '\'' && *q != ' ') {
+							CHECK_QUOTE(q);
+							while (VALID_CHAR(q)) {
 								color = g_string_append_c(color, *q);
 								q++;
 							}
-							if(xhtml)
+							if (xhtml)
 								g_string_append_printf(xhtml, "<span style='background: %s;'>", g_strstrip(color->str));
 							g_string_free(color, TRUE);
-							if ((c = strchr(c, '>')) != NULL)
+							if ((c = strchr(p, '>')) != NULL)
 								c++;
 							else
 								c = p;
@@ -1725,7 +1731,7 @@
 						}
 						p++;
 					}
-					if(did_something) continue;
+					if (did_something) continue;
 				}
 				/* this has to come after the special case for bgcolor */
 				ALLOW_TAG("body");
@@ -1788,6 +1794,8 @@
 		g_string_free(url, TRUE);
 	if (cdata)
 		g_string_free(cdata, TRUE);
+#undef CHECK_QUOTE
+#undef VALID_CHAR
 }
 
 /* The following are probably reasonable changes:
@@ -2889,7 +2897,7 @@
 }
 
 char *
-purple_util_get_image_filename(gconstpointer image_data, size_t image_len)
+purple_util_get_image_checksum(gconstpointer image_data, size_t image_len)
 {
 	PurpleCipherContext *context;
 	gchar digest[41];
@@ -2910,9 +2918,18 @@
 	}
 	purple_cipher_context_destroy(context);
 
+	return g_strdup(digest);
+}
+
+char *
+purple_util_get_image_filename(gconstpointer image_data, size_t image_len)
+{
 	/* Return the filename */
-	return g_strdup_printf("%s.%s", digest,
+	char *checksum = purple_util_get_image_checksum(image_data, image_len);
+	char *filename = g_strdup_printf("%s.%s", checksum,
 	                       purple_util_get_image_extension(image_data, image_len));
+	g_free(checksum);
+	return filename;
 }
 
 gboolean
@@ -3582,7 +3599,7 @@
 static void url_fetch_connect_cb(gpointer url_data, gint source, const gchar *error_message);
 
 static gboolean
-parse_redirect(const char *data, size_t data_len, gint sock,
+parse_redirect(const char *data, size_t data_len,
 			   PurpleUtilFetchUrlData *gfud)
 {
 	gchar *s;
@@ -3756,7 +3773,7 @@
 					header_len, gfud->webdata);
 
 				/* See if we can find a redirect. */
-				if(parse_redirect(gfud->webdata, header_len, source, gfud))
+				if(parse_redirect(gfud->webdata, header_len, gfud))
 					return;
 
 				gfud->got_headers = TRUE;
--- a/libpurple/util.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/util.h	Thu Jun 26 09:07:56 2008 +0000
@@ -229,7 +229,7 @@
  * Converts a quoted printable string back to its readable equivalent.
  * What is a quoted printable string, you ask?  It's an encoding used
  * to transmit binary data as ASCII.  It's intended purpose is to send
- * e-mails containing non-ASCII characters.  Wikipedia has a pretty good
+ * emails containing non-ASCII characters.  Wikipedia has a pretty good
  * explanation.  Also see RFC 2045.
  *
  * @param str     The quoted printable ASCII string to convert to raw data.
@@ -706,6 +706,11 @@
 purple_util_get_image_extension(gconstpointer data, size_t len);
 
 /**
+ * Returns a SHA-1 hash string of the data passed in.
+ */
+char *purple_util_get_image_checksum(gconstpointer image_data, size_t image_len);
+
+/**
  * @return A hex encoded version of the SHA-1 hash of the data passed
  *         in with the correct file extention appended.  The file
  *         extension is determined by calling
--- a/libpurple/win32/global.mak	Thu Jun 26 08:42:49 2008 +0000
+++ b/libpurple/win32/global.mak	Thu Jun 26 09:07:56 2008 +0000
@@ -112,4 +112,4 @@
 MINGW_MAKEFILE := Makefile.mingw
 
 INSTALL_PIXMAPS ?= 1
-
+INSTALL_SSL_CERTIFICATES ?= 1
--- a/pidgin/Makefile.am	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/Makefile.am	Thu Jun 26 09:07:56 2008 +0000
@@ -111,6 +111,7 @@
 	gtksavedstatuses.c \
 	gtkscrollbook.c \
 	gtksession.c \
+	gtksmiley.c \
 	gtksound.c \
 	gtksourceiter.c \
 	gtksourceundomanager.c \
@@ -163,6 +164,7 @@
 	gtksavedstatuses.h \
 	gtkscrollbook.h \
 	gtksession.h \
+	gtksmiley.h \
 	gtksound.h \
 	gtksourceiter.h \
 	gtksourceundomanager.h \
--- a/pidgin/Makefile.mingw	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/Makefile.mingw	Thu Jun 26 09:07:56 2008 +0000
@@ -84,6 +84,7 @@
 			gtkroomlist.c \
 			gtksavedstatuses.c \
 			gtkscrollbook.c \
+			gtksmiley.c \
 			gtksound.c \
 			gtksourceiter.c \
 			gtksourceundomanager.c \
--- a/pidgin/gtkaccount.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkaccount.c	Thu Jun 26 09:07:56 2008 +0000
@@ -176,14 +176,7 @@
 	}
 
 	if (dialog->icon_img != NULL) {
-		GdkPixbufLoader *loader = gdk_pixbuf_loader_new();
-		gdk_pixbuf_loader_write(loader, purple_imgstore_get_data(dialog->icon_img),
-		                        purple_imgstore_get_size(dialog->icon_img), NULL);
-		gdk_pixbuf_loader_close(loader, NULL);
-		pixbuf = gdk_pixbuf_loader_get_pixbuf(loader);
-		if (pixbuf)
-			g_object_ref(pixbuf);
-		g_object_unref(loader);
+		pixbuf = pidgin_pixbuf_from_imgstore(dialog->icon_img);
 	}
 
 	if (pixbuf && dialog->prpl_info &&
@@ -255,6 +248,25 @@
 	}
 }
 
+static gboolean
+screenname_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
+{
+	GHashTable *table;
+	const char *label;
+
+	table = dialog->prpl_info->get_account_text_table(NULL);
+	label = g_hash_table_lookup(table, "login_label");
+
+	if(!strcmp(gtk_entry_get_text(GTK_ENTRY(widget)), label)) {
+		gtk_entry_set_text(GTK_ENTRY(widget), "");
+		gtk_widget_modify_text(widget, GTK_STATE_NORMAL,NULL);
+	}
+
+	g_hash_table_destroy(table);
+
+	return FALSE;
+}
+
 static void
 screenname_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog)
 {
@@ -270,6 +282,32 @@
 	}
 }
 
+static gboolean
+screenname_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
+{
+	GdkColor color = {0, 34952, 35466, 34181};
+	GHashTable *table;
+	const char *label;
+
+	table = dialog->prpl_info->get_account_text_table(NULL);
+	label = g_hash_table_lookup(table, "login_label");
+
+	if (*gtk_entry_get_text(GTK_ENTRY(widget)) == '\0') {
+		/* We have to avoid hitting the screenname_changed_cb function 
+		 * because it enables buttons we don't want enabled yet ;)
+		 */
+		g_signal_handlers_block_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog);
+		gtk_entry_set_text(GTK_ENTRY(widget), label);
+		/* Make sure we can hit it again */
+		g_signal_handlers_unblock_by_func(widget, G_CALLBACK(screenname_changed_cb), dialog);
+		gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color);
+	}
+
+	g_hash_table_destroy(table);
+
+	return FALSE;
+}
+
 static void
 icon_filesel_choose_cb(const char *filename, gpointer data)
 {
@@ -410,6 +448,25 @@
 
 	add_pref_box(dialog, vbox, _("_Username:"), dialog->screenname_entry);
 
+	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)) {
+		GdkColor color = {0, 34952, 35466, 34181};
+		GHashTable *table;
+		const char *label;
+		table = dialog->prpl_info->get_account_text_table(NULL);
+		label = g_hash_table_lookup(table, "login_label");
+
+		gtk_entry_set_text(GTK_ENTRY(dialog->screenname_entry), label);
+		g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-in-event",
+				G_CALLBACK(screenname_focus_cb), dialog);
+		g_signal_connect(G_OBJECT(dialog->screenname_entry), "focus-out-event",
+				G_CALLBACK(screenname_nofocus_cb), dialog);
+		gtk_widget_modify_text(dialog->screenname_entry, GTK_STATE_NORMAL, &color);
+		g_hash_table_destroy(table);
+	}
+
 	g_signal_connect(G_OBJECT(dialog->screenname_entry), "changed",
 					 G_CALLBACK(screenname_changed_cb), dialog);
 
@@ -419,9 +476,6 @@
 	else
 		user_splits = dialog->prpl_info->user_splits;
 
-	if (dialog->account != NULL)
-		username = g_strdup(purple_account_get_username(dialog->account));
-
 	if (dialog->user_split_entries != NULL) {
 		g_list_free(dialog->user_split_entries);
 		dialog->user_split_entries = NULL;
@@ -1470,7 +1524,8 @@
 	add_login_options(dialog, vbox);
 	add_user_options(dialog, vbox);
 
-	button = gtk_check_button_new_with_label(_("Create this new account on the server"));
+	button = gtk_check_button_new_with_mnemonic(
+		_("Create _this new account on the server"));
 	gtk_box_pack_start(GTK_BOX(main_vbox), button, FALSE, FALSE, 0);
 	gtk_widget_show(button);
 	dialog->register_button = button;
@@ -1513,6 +1568,8 @@
 
 	/* Show the window. */
 	gtk_widget_show(win);
+	if (!account)
+		gtk_widget_grab_focus(dialog->protocol_menu);
 }
 
 /**************************************************************************
@@ -1753,39 +1810,6 @@
 	return FALSE;
 }
 
-static gboolean
-configure_cb(GtkWidget *w, GdkEventConfigure *event, AccountsWindow *dialog)
-{
-	if (GTK_WIDGET_VISIBLE(w)) {
-		int old_width = purple_prefs_get_int(PIDGIN_PREFS_ROOT "/accounts/dialog/width");
-		int col_width;
-		int difference;
-
-		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/accounts/dialog/width",  event->width);
-		purple_prefs_set_int(PIDGIN_PREFS_ROOT "/accounts/dialog/height", event->height);
-
-		col_width = gtk_tree_view_column_get_width(dialog->screenname_col);
-
-		if (col_width == 0)
-			return FALSE;
-
-		difference = (MAX(old_width, event->width) -
-					  MIN(old_width, event->width));
-
-		if (difference == 0)
-			return FALSE;
-
-		if (old_width < event->width)
-			gtk_tree_view_column_set_min_width(dialog->screenname_col,
-					col_width + difference);
-		else
-			gtk_tree_view_column_set_max_width(dialog->screenname_col,
-					col_width - difference);
-	}
-
-	return FALSE;
-}
-
 static void
 add_account_cb(GtkWidget *w, AccountsWindow *dialog)
 {
@@ -1908,14 +1932,14 @@
 	column = gtk_tree_view_column_new_with_attributes(_("Enabled"),
 			 renderer, "active", COLUMN_ENABLED, NULL);
 
-	gtk_tree_view_insert_column(GTK_TREE_VIEW(treeview), column, -1);
-	gtk_tree_view_column_set_resizable(column, TRUE);
+	gtk_tree_view_column_set_resizable(column, FALSE);
+	gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
 
 	/* Screen Name column */
 	column = gtk_tree_view_column_new();
 	gtk_tree_view_column_set_title(column, _("Username"));
-	gtk_tree_view_insert_column(GTK_TREE_VIEW(treeview), column, -1);
 	gtk_tree_view_column_set_resizable(column, TRUE);
+	gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
 
 	/* Buddy Icon */
 	renderer = gtk_cell_renderer_pixbuf_new();
@@ -1934,8 +1958,8 @@
 	/* Protocol name */
 	column = gtk_tree_view_column_new();
 	gtk_tree_view_column_set_title(column, _("Protocol"));
-	gtk_tree_view_insert_column(GTK_TREE_VIEW(treeview), column, -1);
-	gtk_tree_view_column_set_resizable(column, TRUE);
+	gtk_tree_view_column_set_resizable(column, FALSE);
+	gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
 
 	/* Icon */
 	renderer = gtk_cell_renderer_pixbuf_new();
@@ -1977,21 +2001,14 @@
 	}
 
 	if (img != NULL) {
-		GdkPixbufLoader *loader = gdk_pixbuf_loader_new();
 		GdkPixbuf *buddyicon_pixbuf;
-
-		gdk_pixbuf_loader_write(loader, purple_imgstore_get_data(img),
-		                        purple_imgstore_get_size(img), NULL);
-		gdk_pixbuf_loader_close(loader, NULL);
-		buddyicon_pixbuf = gdk_pixbuf_loader_get_pixbuf(loader);
-
+		buddyicon_pixbuf = pidgin_pixbuf_from_imgstore(img);
 		purple_imgstore_unref(img);
 
 		if (buddyicon_pixbuf != NULL) {
 			buddyicon = gdk_pixbuf_scale_simple(buddyicon_pixbuf, 22, 22, GDK_INTERP_HYPER);
+			g_object_unref(G_OBJECT(buddyicon_pixbuf));
 		}
-
-		g_object_unref(loader);
 	}
 
 	gtk_list_store_set(store, iter,
@@ -2174,8 +2191,7 @@
 					G_TYPE_STRING,     /* COLUMN_SCREENNAME */
 					G_TYPE_BOOLEAN,    /* COLUMN_ENABLED */
 					G_TYPE_STRING,     /* COLUMN_PROTOCOL */
-					G_TYPE_POINTER,    /* COLUMN_DATA */
-					G_TYPE_POINTER     /* COLUMN_PULSE_DATA */
+					G_TYPE_POINTER     /* COLUMN_DATA */
 					);
 
 	/* And now the actual treeview */
@@ -2196,6 +2212,7 @@
 	gtk_container_add(GTK_CONTAINER(sw), treeview);
 
 	add_columns(treeview, dialog);
+	gtk_tree_view_columns_autosize(GTK_TREE_VIEW(treeview));
 
 	if (populate_accounts_list(dialog))
 		gtk_notebook_set_current_page(GTK_NOTEBOOK(accounts_window->notebook), 1);
@@ -2265,8 +2282,6 @@
 
 	g_signal_connect(G_OBJECT(win), "delete_event",
 					 G_CALLBACK(accedit_win_destroy_cb), accounts_window);
-	g_signal_connect(G_OBJECT(win), "configure_event",
-					 G_CALLBACK(configure_cb), accounts_window);
 
 	/* Setup the vbox */
 	vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(win), FALSE, PIDGIN_HIG_BORDER);
--- a/pidgin/gtkblist.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkblist.c	Thu Jun 26 09:07:56 2008 +0000
@@ -57,6 +57,7 @@
 #include "gtkroomlist.h"
 #include "gtkstatusbox.h"
 #include "gtkscrollbook.h"
+#include "gtksmiley.h"
 #include "gtkutils.h"
 #include "pidgin/minidialog.h"
 #include "pidgin/pidgintooltip.h"
@@ -1528,6 +1529,48 @@
 	return FALSE;
 }
 
+static void
+set_node_custom_icon_cb(const gchar *filename, gpointer data)
+{
+	if (filename) {
+		PurpleBlistNode *node = (PurpleBlistNode*)data;
+
+		purple_buddy_icons_node_set_custom_icon_from_file(node,
+		                                                  filename);
+	}
+}
+
+static void
+set_node_custom_icon(GtkWidget *w, PurpleBlistNode *node)
+{
+	/* This doesn't keep track of the returned dialog (so that successive
+	 * calls could be made to re-display that dialog). Do we want that? */
+	GtkWidget *win = pidgin_buddy_icon_chooser_new(NULL, set_node_custom_icon_cb, node);
+	gtk_widget_show_all(win);
+}
+
+static void
+remove_node_custom_icon(GtkWidget *w, PurpleBlistNode *node)
+{
+	purple_buddy_icons_node_set_custom_icon(node, NULL, 0);
+}
+
+static void
+add_buddy_icon_menu_items(GtkWidget *menu, PurpleBlistNode *node)
+{
+	GtkWidget *item;
+
+	pidgin_new_item_from_stock(menu, _("Set Custom Icon"), NULL,
+	                           G_CALLBACK(set_node_custom_icon), node, 0,
+	                           0, NULL);
+
+	item = pidgin_new_item_from_stock(menu, _("Remove Custom Icon"), NULL,
+	                           G_CALLBACK(remove_node_custom_icon), node,
+	                           0, 0, NULL);
+	if (!purple_buddy_icons_node_has_custom_icon(node))
+		gtk_widget_set_sensitive(item, FALSE);
+}
+
 static GtkWidget *
 create_group_menu (PurpleBlistNode *node, PurpleGroup *g)
 {
@@ -1551,12 +1594,13 @@
 				NULL, G_CALLBACK(gtk_blist_menu_showoffline_cb), node, 0, 0, NULL);
 	}
 
+	add_buddy_icon_menu_items(menu, node);
+
 	pidgin_append_blist_node_extended_menu(menu, node);
 
 	return menu;
 }
 
-
 static GtkWidget *
 create_chat_menu(PurpleBlistNode *node, PurpleChat *c)
 {
@@ -1589,6 +1633,8 @@
 	pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
 				 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL);
 
+	add_buddy_icon_menu_items(menu, node);
+
 	return menu;
 }
 
@@ -1610,6 +1656,8 @@
 	pidgin_new_item_from_stock(menu, _("_Remove"), GTK_STOCK_REMOVE,
 				 G_CALLBACK(pidgin_blist_remove_cb), node, 0, 0, NULL);
 
+	add_buddy_icon_menu_items(menu, node);
+
 	pidgin_separator(menu);
 
 	pidgin_new_item_from_stock(menu, _("_Collapse"), GTK_STOCK_ZOOM_OUT,
@@ -1634,6 +1682,8 @@
 	if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
 		pidgin_separator(menu);
 
+		add_buddy_icon_menu_items(menu, node);
+
 		if(gtknode->contact_expanded) {
 			pidgin_new_item_from_stock(menu, _("_Collapse"),
 						 GTK_STOCK_ZOOM_OUT,
@@ -2493,51 +2543,71 @@
 
 
 static GdkPixbuf *pidgin_blist_get_buddy_icon(PurpleBlistNode *node,
-		gboolean scaled, gboolean greyed)
-{
-	GdkPixbuf *buf, *ret = NULL;
+                                              gboolean scaled, gboolean greyed)
+{
+	gsize len;
 	GdkPixbufLoader *loader;
-	PurpleBuddyIcon *icon = NULL;
-	const guchar *data = NULL;
-	gsize len;
 	PurpleBuddy *buddy = NULL;
+	PurpleGroup *group = NULL;
+	const guchar *data = NULL;
+	GdkPixbuf *buf, *ret = NULL;
+	PurpleBuddyIcon *icon = NULL;
 	PurpleAccount *account = NULL;
-	PurplePluginProtocolInfo *prpl_info = NULL;
+	PurpleContact *contact = NULL;
 	PurpleStoredImage *custom_img;
-
-	if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
+	PurplePluginProtocolInfo *prpl_info = NULL;
+	gint orig_width, orig_height, scale_width, scale_height;
+
+	if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
 		buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
-	} else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
+		contact = (PurpleContact*)node;
+	} else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
 		buddy = (PurpleBuddy*)node;
+		contact = purple_buddy_get_contact(buddy);
+	} else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
+		group = (PurpleGroup*)node;
+	} else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
+		/* We don't need to do anything here. We just need to not fall
+		 * into the else block and return. */
 	} else {
 		return NULL;
 	}
 
-	if(buddy == NULL)
-		return NULL;
-
-	account = purple_buddy_get_account(buddy);
-
-	if(account && account->gc)
+	if (buddy) {
+		account = purple_buddy_get_account(buddy);
+	}
+
+	if(account && account->gc) {
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(account->gc->prpl);
+	}
 
 #if 0
 	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"))
 		return NULL;
 #endif
 
-	custom_img = purple_buddy_icons_find_custom_icon(purple_buddy_get_contact(buddy));
-	if (custom_img)
-	{
+	/* If we have a contact then this is either a contact or a buddy and
+	 * we want to fetch the custom icon for the contact. If we don't have
+	 * a contact then this is a group or some other type of node and we
+	 * want to use that directly. */
+	if (contact) {
+		custom_img = purple_buddy_icons_node_find_custom_icon((PurpleBlistNode*)contact);
+	} else {
+		custom_img = purple_buddy_icons_node_find_custom_icon(node);
+	}
+
+	if (custom_img) {
 		data = purple_imgstore_get_data(custom_img);
 		len = purple_imgstore_get_size(custom_img);
 	}
 
 	if (data == NULL) {
-		/* Not sure I like this...*/
-		if (!(icon = purple_buddy_icons_find(buddy->account, buddy->name)))
-			return NULL;
-		data = purple_buddy_icon_get_data(icon, &len);
+		if (buddy) {
+			/* Not sure I like this...*/
+			if (!(icon = purple_buddy_icons_find(buddy->account, buddy->name)))
+				return NULL;
+			data = purple_buddy_icon_get_data(icon, &len);
+		}
 
 		if(data == NULL)
 			return NULL;
@@ -2555,56 +2625,68 @@
 		g_object_ref(G_OBJECT(buf));
 	g_object_unref(G_OBJECT(loader));
 
-	if (buf) {
-		int orig_width, orig_height;
-		int scale_width, scale_height;
-
-		if (greyed) {
+	if (!buf) {
+		return NULL;
+	}
+
+	if (greyed) {
+		gboolean offline = FALSE, idle = FALSE;
+
+		if (buddy) {
 			PurplePresence *presence = purple_buddy_get_presence(buddy);
 			if (!PURPLE_BUDDY_IS_ONLINE(buddy))
-				gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.0, FALSE);
+				offline = TRUE;
 			if (purple_presence_is_idle(presence))
-				gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.25, FALSE);
+				idle = TRUE;
+		} else if (group) {
+			if (purple_blist_get_group_online_count(group) == 0)
+				offline = TRUE;
 		}
 
-		/* i'd use the pidgin_buddy_icon_get_scale_size() thing,
-		 * but it won't tell me the original size, which I need for scaling
-		 * purposes */
-		scale_width = orig_width = gdk_pixbuf_get_width(buf);
-		scale_height = orig_height = gdk_pixbuf_get_height(buf);
-
-		if (prpl_info && prpl_info->icon_spec.scale_rules & PURPLE_ICON_SCALE_DISPLAY)
-			purple_buddy_icon_get_scale_size(&prpl_info->icon_spec, &scale_width, &scale_height);
-
-		if (scaled || scale_height > 200 || scale_width > 200) {
-			GdkPixbuf *tmpbuf;
-			float scale_size = scaled ? 32.0 : 200.0;
-			if(scale_height > scale_width) {
-				scale_width = scale_size * (double)scale_width / (double)scale_height;
-				scale_height = scale_size;
-			} else {
-				scale_height = scale_size * (double)scale_height / (double)scale_width;
-				scale_width = scale_size;
-			}
-			/* scale & round before making square, so rectangular (but non-square)
-			 * images get rounded corners too */
-			tmpbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, scale_width, scale_height);
-			gdk_pixbuf_fill(tmpbuf, 0x00000000);
-			gdk_pixbuf_scale(buf, tmpbuf, 0, 0, scale_width, scale_height, 0, 0, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR);
-			if (pidgin_gdk_pixbuf_is_opaque(tmpbuf))
-				pidgin_gdk_pixbuf_make_round(tmpbuf);
-			ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, scale_size, scale_size);
-			gdk_pixbuf_fill(ret, 0x00000000);
-			gdk_pixbuf_copy_area(tmpbuf, 0, 0, scale_width, scale_height, ret, (scale_size-scale_width)/2, (scale_size-scale_height)/2);
-			g_object_unref(G_OBJECT(tmpbuf));
+		if (offline)
+			gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.0, FALSE);
+
+		if (idle)
+			gdk_pixbuf_saturate_and_pixelate(buf, buf, 0.25, FALSE);
+	}
+
+	/* I'd use the pidgin_buddy_icon_get_scale_size() thing, but it won't
+	 * tell me the original size, which I need for scaling purposes. */
+	scale_width = orig_width = gdk_pixbuf_get_width(buf);
+	scale_height = orig_height = gdk_pixbuf_get_height(buf);
+
+	if (prpl_info && prpl_info->icon_spec.scale_rules & PURPLE_ICON_SCALE_DISPLAY)
+		purple_buddy_icon_get_scale_size(&prpl_info->icon_spec, &scale_width, &scale_height);
+
+	if (scaled || scale_height > 200 || scale_width > 200) {
+		GdkPixbuf *tmpbuf;
+		float scale_size = scaled ? 32.0 : 200.0;
+		if(scale_height > scale_width) {
+			scale_width = scale_size * (double)scale_width / (double)scale_height;
+			scale_height = scale_size;
 		} else {
-			ret = gdk_pixbuf_scale_simple(buf,scale_width,scale_height, GDK_INTERP_BILINEAR);
+			scale_height = scale_size * (double)scale_height / (double)scale_width;
+			scale_width = scale_size;
 		}
-		g_object_unref(G_OBJECT(buf));
-	}
+		/* Scale & round before making square, so rectangular (but
+		 * non-square) images get rounded corners too. */
+		tmpbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, scale_width, scale_height);
+		gdk_pixbuf_fill(tmpbuf, 0x00000000);
+		gdk_pixbuf_scale(buf, tmpbuf, 0, 0, scale_width, scale_height, 0, 0, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR);
+		if (pidgin_gdk_pixbuf_is_opaque(tmpbuf))
+			pidgin_gdk_pixbuf_make_round(tmpbuf);
+		ret = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, scale_size, scale_size);
+		gdk_pixbuf_fill(ret, 0x00000000);
+		gdk_pixbuf_copy_area(tmpbuf, 0, 0, scale_width, scale_height, ret, (scale_size-scale_width)/2, (scale_size-scale_height)/2);
+		g_object_unref(G_OBJECT(tmpbuf));
+	} else {
+		ret = gdk_pixbuf_scale_simple(buf,scale_width,scale_height, GDK_INTERP_BILINEAR);
+	}
+	g_object_unref(G_OBJECT(buf));
 
 	return ret;
 }
+
 /* # - Status Icon
  * P - Protocol Icon
  * A - Buddy Icon
@@ -2653,6 +2735,7 @@
 	int name_width;
 	int width;
 	int height;
+	int padding;
 };
 
 static PangoLayout * create_pango_layout(const char *markup, int *width, int *height)
@@ -2681,6 +2764,7 @@
 	if (purple_account_is_disconnected(account))
 		gdk_pixbuf_saturate_and_pixelate(td->status_icon, td->status_icon, 0.0, FALSE);
 	td->layout = create_pango_layout(purple_account_get_username(account), &td->width, &td->height);
+	td->padding = SMALL_SPACE;
 	return td;
 }
 
@@ -2696,6 +2780,7 @@
 		account = ((PurpleChat*)(node))->account;
 	}
 
+	td->padding = TOOLTIP_BORDER;
 	td->status_icon = pidgin_blist_get_status_icon(node, PIDGIN_STATUS_ICON_LARGE);
 	td->avatar = pidgin_blist_get_buddy_icon(node, !full, FALSE);
 	if (account != NULL) {
@@ -2861,7 +2946,7 @@
 			}
 		}
 
-		current_height += MAX(td->name_height + td->height, td->avatar_height) + TOOLTIP_BORDER;
+		current_height += MAX(td->name_height + td->height, td->avatar_height) + td->padding;
 	}
 	return FALSE;
 }
@@ -2952,8 +3037,7 @@
 		struct tooltip_data *td = list->data;
 		max_text_width = MAX(max_text_width, MAX(td->width, td->name_width));
 		max_avatar_width = MAX(max_avatar_width, td->avatar_width);
-		height += MAX(TOOLTIP_BORDER + MAX(STATUS_SIZE, td->avatar_height),
-				TOOLTIP_BORDER + td->height + td->name_height);
+		height += MAX(MAX(STATUS_SIZE, td->avatar_height), td->height + td->name_height) + td->padding;
 		if (td->status_icon)
 			status_size = MAX(status_size, STATUS_SIZE);
 	}
@@ -3155,7 +3239,7 @@
 	/* Buddies menu */
 	{ N_("/_Buddies"), NULL, NULL, 0, "<Branch>", NULL },
 	{ N_("/Buddies/New Instant _Message..."), "<CTL>M", pidgin_dialogs_im, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW },
-	{ N_("/Buddies/Join a _Chat..."), "<CTL>C", pidgin_blist_joinchat_show, 0, "<Item>", NULL },
+	{ N_("/Buddies/Join a _Chat..."), "<CTL>C", pidgin_blist_joinchat_show, 0, "<StockItem>", PIDGIN_STOCK_CHAT },
 	{ N_("/Buddies/Get User _Info..."), "<CTL>I", pidgin_dialogs_info, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO },
 	{ N_("/Buddies/View User _Log..."), "<CTL>L", pidgin_dialogs_log, 0, "<Item>", NULL },
 	{ "/Buddies/sep1", NULL, NULL, 0, "<Separator>", NULL },
@@ -3175,7 +3259,7 @@
 
 	/* Accounts menu */
 	{ N_("/_Accounts"), NULL, NULL, 0, "<Branch>", NULL },
-	{ N_("/Accounts/Manage"), "<CTL>A", pidgin_accounts_window_show, 0, "<Item>", NULL },
+	{ N_("/Accounts/Manage Accounts"), "<CTL>A", pidgin_accounts_window_show, 0, "<Item>", NULL },
 
 	/* Tools */
 	{ N_("/_Tools"), NULL, NULL, 0, "<Branch>", NULL },
@@ -3184,8 +3268,9 @@
 	{ N_("/Tools/Plu_gins"), "<CTL>U", pidgin_plugin_dialog_show, 2, "<StockItem>", PIDGIN_STOCK_TOOLBAR_PLUGINS },
 	{ N_("/Tools/Pr_eferences"), "<CTL>P", pidgin_prefs_show, 0, "<StockItem>", GTK_STOCK_PREFERENCES },
 	{ N_("/Tools/Pr_ivacy"), NULL, pidgin_privacy_dialog_show, 0, "<Item>", NULL },
+	{ N_("/Tools/Smile_y"), "<CTL>Y", pidgin_smiley_manager_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SMILEY },
 	{ "/Tools/sep2", NULL, NULL, 0, "<Separator>", NULL },
-	{ N_("/Tools/_File Transfers"), "<CTL>T", pidgin_xfer_dialog_show, 0, "<Item>", NULL },
+	{ N_("/Tools/_File Transfers"), "<CTL>T", pidgin_xfer_dialog_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_TRANSFER },
 	{ N_("/Tools/R_oom List"), NULL, pidgin_roomlist_dialog_show, 0, "<Item>", NULL },
 	{ N_("/Tools/System _Log"), NULL, gtk_blist_show_systemlog_cb, 3, "<Item>", NULL },
 	{ "/Tools/sep3", NULL, NULL, 0, "<Separator>", NULL },
@@ -3251,7 +3336,8 @@
 					g_list_length(purple_conv_chat_get_users(PURPLE_CONV_CHAT(conv))));
 
 			if (prpl_info && (prpl_info->options & OPT_PROTO_CHAT_TOPIC)) {
-				char *topic = g_markup_escape_text(purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv)), -1);
+				const char *chattopic = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv));
+				char *topic = chattopic ? g_markup_escape_text(chattopic, -1) : NULL;
 				g_string_append_printf(str, _("\n<b>Topic:</b> %s"), topic ? topic : _("(no topic set)"));
 				g_free(topic);
 			}
@@ -5219,7 +5305,7 @@
 	tmp = g_strdup_printf(_("<span weight='bold' size='larger'>Welcome to %s!</span>\n\n"
 
 					       "You have no accounts enabled. Enable your IM accounts from the "
-					       "<b>Accounts</b> window at <b>Accounts->Manage</b>. Once you "
+					       "<b>Accounts</b> window at <b>Accounts->Manage Accounts</b>. Once you "
 					       "enable accounts, you'll be able to sign on, set your status, "
 					       "and talk to your friends."), PIDGIN_NAME);
 	pretty = pidgin_make_pretty_arrows(tmp);
@@ -5820,14 +5906,16 @@
 	return FALSE;
 }
 
-/*This version of pidgin_blist_update_group can take the original buddy
-or a group, but has much better algorithmic performance with a pre-known buddy*/
-static void pidgin_blist_update_group(PurpleBuddyList *list, PurpleBlistNode *node)
-{
+/* This version of pidgin_blist_update_group can take the original buddy or a
+ * group, but has much better algorithmic performance with a pre-known buddy.
+ */
+static void pidgin_blist_update_group(PurpleBuddyList *list,
+                                      PurpleBlistNode *node)
+{
+	gint count;
 	PurpleGroup *group;
-	int count;
+	PurpleBlistNode* gnode;
 	gboolean show = FALSE, show_offline = FALSE;
-	PurpleBlistNode* gnode;
 
 	g_return_if_fail(node != NULL);
 
@@ -5862,12 +5950,13 @@
 	}
 
 	if (show) {
+		gchar *title;
+		gboolean biglist;
 		GtkTreeIter iter;
 		GtkTreePath *path;
 		gboolean expanded;
 		GdkColor bgcolor;
-		char *title;
-
+		GdkPixbuf *avatar = NULL;
 
 		if(!insert_node(list, gnode, &iter))
 			return;
@@ -5879,17 +5968,23 @@
 		gtk_tree_path_free(path);
 
 		title = pidgin_get_group_title(gnode, expanded);
+		biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
+
+		if (biglist) {
+			avatar = pidgin_blist_get_buddy_icon(gnode, TRUE, TRUE);
+		}
 
 		gtk_tree_store_set(gtkblist->treemodel, &iter,
 				   STATUS_ICON_VISIBLE_COLUMN, FALSE,
 				   STATUS_ICON_COLUMN, NULL,
 				   NAME_COLUMN, title,
 				   NODE_COLUMN, gnode,
-	/* 			   BGCOLOR_COLUMN, &bgcolor,     */
+	/*			   BGCOLOR_COLUMN, &bgcolor,     */
 				   GROUP_EXPANDER_COLUMN, TRUE,
 				   GROUP_EXPANDER_VISIBLE_COLUMN, TRUE,
 				   CONTACT_EXPANDER_VISIBLE_COLUMN, FALSE,
-				   BUDDY_ICON_VISIBLE_COLUMN, FALSE,
+				   BUDDY_ICON_COLUMN, avatar,
+				   BUDDY_ICON_VISIBLE_COLUMN, biglist,
 				   IDLE_VISIBLE_COLUMN, FALSE,
 				   EMBLEM_VISIBLE_COLUMN, FALSE,
 				   -1);
@@ -6179,7 +6274,7 @@
 				STATUS_ICON_COLUMN, status,
 				STATUS_ICON_VISIBLE_COLUMN, TRUE,
 				BUDDY_ICON_COLUMN, avatar ? avatar : gtkblist->empty_avatar,
-				BUDDY_ICON_VISIBLE_COLUMN,  purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"),
+				BUDDY_ICON_VISIBLE_COLUMN, showicons,
 				EMBLEM_COLUMN, emblem,
 				EMBLEM_VISIBLE_COLUMN, emblem != NULL,
 				PROTOCOL_ICON_COLUMN, prpl_icon,
@@ -6379,6 +6474,10 @@
 		purple_blist_add_buddy(b, NULL, g, NULL);
 		purple_account_add_buddy(data->account, b);
 
+		/* Offer to merge people with the same alias. */
+		if (whoalias != NULL)
+			gtk_blist_auto_personize((PurpleBlistNode *)g, whoalias);
+
 		/*
 		 * XXX
 		 * It really seems like it would be better if the call to
@@ -7514,12 +7613,58 @@
 	for (l = gtk_container_get_children(GTK_CONTAINER(accountmenu)); l; l = g_list_delete_link(l, l)) {
 		menuitem = l->data;
 
-		if (menuitem != gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts/Manage")))
+		if (menuitem != gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts/Manage Accounts")))
 			gtk_widget_destroy(menuitem);
 	}
 
 	for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) {
 		char *buf = NULL;
+		GtkWidget *image = NULL;
+		PurpleAccount *account = NULL;
+		GdkPixbuf *pixbuf = NULL;
+
+		account = accounts->data;
+
+		if(!purple_account_get_enabled(account, PIDGIN_UI)) {
+			if (!disabled_accounts) {
+				menuitem = gtk_menu_item_new_with_label(_("Enable Account"));
+				gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
+				gtk_widget_show(menuitem);
+
+				submenu = gtk_menu_new();
+				gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
+				gtk_menu_set_accel_path(GTK_MENU(submenu), N_("<PurpleMain>/Accounts/Enable Account"));
+				gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
+				gtk_widget_show(submenu);
+
+				disabled_accounts = TRUE;
+			}
+
+			buf = g_strconcat(purple_account_get_username(account), " (",
+				purple_account_get_protocol_name(account), ")", NULL);
+			menuitem = gtk_image_menu_item_new_with_label(buf);
+			g_free(buf);
+			pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
+			if (pixbuf != NULL)
+			{
+				if (!purple_account_is_connected(account))
+					gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
+				image = gtk_image_new_from_pixbuf(pixbuf);
+				g_object_unref(G_OBJECT(pixbuf));
+				gtk_widget_show(image);
+				gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
+			}
+			g_signal_connect(G_OBJECT(menuitem), "activate",
+				G_CALLBACK(enable_account_cb), account);
+			gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
+			gtk_widget_show(menuitem);
+		}
+	}
+
+	pidgin_separator(accountmenu);
+
+	for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) {
+		char *buf = NULL;
 		char *accel_path_buf = NULL;
 		GtkWidget *image = NULL;
 		PurpleConnection *gc = NULL;
@@ -7589,51 +7734,6 @@
 		}
 	}
 
-	if(disabled_accounts) {
-		pidgin_separator(accountmenu);
-		menuitem = gtk_menu_item_new_with_label(_("Enable Account"));
-		gtk_menu_shell_append(GTK_MENU_SHELL(accountmenu), menuitem);
-		gtk_widget_show(menuitem);
-
-		submenu = gtk_menu_new();
-		gtk_menu_set_accel_group(GTK_MENU(submenu), accel_group);
-		gtk_menu_set_accel_path(GTK_MENU(submenu), N_("<PurpleMain>/Accounts/Enable Account"));
-		gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
-		gtk_widget_show(submenu);
-
-		for (accounts = purple_accounts_get_all(); accounts; accounts = accounts->next) {
-			char *buf = NULL;
-			GtkWidget *image = NULL;
-			PurpleAccount *account = NULL;
-			GdkPixbuf *pixbuf = NULL;
-
-			account = accounts->data;
-
-			if(!purple_account_get_enabled(account, PIDGIN_UI)) {
-
-				disabled_accounts = TRUE;
-
-				buf = g_strconcat(purple_account_get_username(account), " (",
-						purple_account_get_protocol_name(account), ")", NULL);
-				menuitem = gtk_image_menu_item_new_with_label(buf);
-				g_free(buf);
-				pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
-				if (pixbuf != NULL)
-				{
-					if (!purple_account_is_connected(account))
-						gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
-					image = gtk_image_new_from_pixbuf(pixbuf);
-					g_object_unref(G_OBJECT(pixbuf));
-					gtk_widget_show(image);
-					gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
-				}
-				g_signal_connect(G_OBJECT(menuitem), "activate",
-						G_CALLBACK(enable_account_cb), account);
-				gtk_menu_shell_append(GTK_MENU_SHELL(submenu), menuitem);
-				gtk_widget_show(menuitem);
-			}
-		}
-	}
 }
 
 static GList *plugin_submenus = NULL;
--- a/pidgin/gtkconv.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkconv.c	Thu Jun 26 09:07:56 2008 +0000
@@ -96,10 +96,10 @@
 
 #define	PIDGIN_CONV_ALL	((1 << 7) - 1)
 
+/* XXX: These color defines shouldn't really be here. But the nick-color
+ * generation algorithm uses them, so keeping these around until we fix that. */
 #define DEFAULT_SEND_COLOR "#204a87"
-#define DEFAULT_RECV_COLOR "#cc0000"
 #define DEFAULT_HIGHLIGHT_COLOR "#AF7F00"
-#define DEFAULT_ACTION_COLOR "#062585"
 
 #define BUDDYICON_SIZE_MIN    32
 #define BUDDYICON_SIZE_MAX    96
@@ -159,10 +159,9 @@
 static void update_typing_message(PidginConversation *gtkconv, const char *message);
 static const char *item_factory_translate_func (const char *path, gpointer func_data);
 gboolean pidgin_conv_has_focus(PurpleConversation *conv);
-static void pidgin_conv_custom_smiley_allocated(GdkPixbufLoader *loader, gpointer user_data);
-static void pidgin_conv_custom_smiley_closed(GdkPixbufLoader *loader, gpointer user_data);
 static GdkColor* generate_nick_colors(guint *numcolors, GdkColor background);
 static gboolean color_is_visible(GdkColor foreground, GdkColor background, int color_contrast, int brightness_contrast);
+static GtkTextTag *get_buddy_tag(PurpleConversation *conv, const char *who, gboolean create);
 static void pidgin_conv_update_fields(PurpleConversation *conv, PidginConvFields fields);
 static void focus_out_from_menubar(GtkWidget *wid, PidginWindow *win);
 static void pidgin_conv_tab_pack(PidginWindow *win, PidginConversation *gtkconv);
@@ -1482,7 +1481,7 @@
 	PurpleAccount *account;
 	PurpleConnection *gc;
 	PurplePluginProtocolInfo *prpl_info = NULL;
-	char *real_who;
+	gchar *real_who = NULL;
 
 	account = purple_conversation_get_account(conv);
 	g_return_if_fail(account != NULL);
@@ -1495,13 +1494,11 @@
 	if (prpl_info && prpl_info->get_cb_real_name)
 		real_who = prpl_info->get_cb_real_name(gc,
 				purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), who);
-	else
-		real_who = g_strdup(who);
-
-	if(!real_who)
+
+	if(!who && !real_who)
 		return;
 
-	pidgin_dialogs_im_with_user(account, real_who);
+	pidgin_dialogs_im_with_user(account, real_who ? real_who : who);
 
 	g_free(real_who);
 }
@@ -1540,11 +1537,22 @@
 static void
 menu_chat_send_file_cb(GtkWidget *w, PidginConversation *gtkconv)
 {
+	PurplePluginProtocolInfo *prpl_info;
 	PurpleConversation *conv = gtkconv->active_conv;
 	const char *who = g_object_get_data(G_OBJECT(w), "user_data");
 	PurpleConnection *gc  = purple_conversation_get_gc(conv);
-
-	serv_send_file(gc, who, NULL);
+	gchar *real_who = NULL;
+
+	g_return_if_fail(gc != NULL);
+
+	prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
+
+	if (prpl_info && prpl_info->get_cb_real_name)
+		real_who = prpl_info->get_cb_real_name(gc,
+				purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), who);
+
+	serv_send_file(gc, real_who ? real_who : who, NULL);
+	g_free(real_who);
 }
 
 static void
@@ -1660,23 +1668,34 @@
 
 		if (gc == NULL)
 			gtk_widget_set_sensitive(button, FALSE);
-
-		g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
+		else
+			g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
 
 
 		if (prpl_info && prpl_info->send_file)
 		{
+			gboolean can_receive_file = TRUE;
+
 			button = pidgin_new_item_from_stock(menu, _("Send File"),
 				PIDGIN_STOCK_TOOLBAR_SEND_FILE, G_CALLBACK(menu_chat_send_file_cb),
 				PIDGIN_CONVERSATION(conv), 0, 0, NULL);
 
-			if (gc == NULL || prpl_info == NULL ||
-			    !(!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, who)))
-			{
+			if (gc == NULL || prpl_info == NULL)
+				can_receive_file = FALSE;
+			else {
+				gchar *real_who = NULL;
+				if (prpl_info->get_cb_real_name)
+					real_who = prpl_info->get_cb_real_name(gc,
+						purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), who);
+				if (!(!prpl_info->can_receive_file || prpl_info->can_receive_file(gc, real_who ? real_who : who)))
+					can_receive_file = FALSE;
+				g_free(real_who);
+			}
+
+			if (!can_receive_file)
 				gtk_widget_set_sensitive(button, FALSE);
-			}
-
-			g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
+			else
+				g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
 		}
 
 
@@ -1689,8 +1708,8 @@
 
 		if (gc == NULL)
 			gtk_widget_set_sensitive(button, FALSE);
-
-		g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
+		else
+			g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
 	}
 
 	if (prpl_info && (prpl_info->get_info || prpl_info->get_cb_info)) {
@@ -1699,8 +1718,8 @@
 
 		if (gc == NULL)
 			gtk_widget_set_sensitive(button, FALSE);
-
-		g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
+		else
+			g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
 	}
 
 	if (prpl_info && prpl_info->get_cb_away) {
@@ -1709,8 +1728,8 @@
 
 		if (gc == NULL)
 			gtk_widget_set_sensitive(button, FALSE);
-
-		g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
+		else
+			g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
 	}
 
 	if (!is_me && prpl_info && !(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) {
@@ -1723,8 +1742,8 @@
 
 		if (gc == NULL)
 			gtk_widget_set_sensitive(button, FALSE);
-
-		g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
+		else
+			g_object_set_data_full(G_OBJECT(button), "user_data", g_strdup(who), g_free);
 	}
 
 	button = pidgin_new_item_from_stock(menu, _("Last said"), GTK_STOCK_INDEX,
@@ -2513,10 +2532,6 @@
 		PurpleBuddy *b = purple_find_buddy(conv->account, conv->name);
 		if (b)
 			emblem = pidgin_blist_get_emblem((PurpleBlistNode*)b);
-	} else {
-		PurpleChat *c = purple_blist_find_chat(conv->account, conv->name);
-		if (c)
-			emblem = pidgin_blist_get_emblem((PurpleBlistNode*)c);
 	}
 
 	g_return_if_fail(status != NULL);
@@ -2724,10 +2739,22 @@
 custom_icon_sel_cb(const char *filename, gpointer data)
 {
 	if (filename) {
+		const gchar *name;
+		PurpleBuddy *buddy;
+		PurpleContact *contact;
 		PidginConversation *gtkconv = data;
 		PurpleConversation *conv = gtkconv->active_conv;
 		PurpleAccount *account = purple_conversation_get_account(conv);
-		pidgin_set_custom_buddy_icon(account, purple_conversation_get_name(conv), filename);
+
+		name = purple_conversation_get_name(conv);
+		buddy = purple_find_buddy(account, name);
+		if (!buddy) {
+			purple_debug_info("custom-icon", "You can only set custom icons for people on your buddylist.\n");
+			return;
+		}
+		contact = purple_buddy_get_contact(buddy);
+
+		purple_buddy_icons_node_set_custom_icon_from_file((PurpleBlistNode*)contact, filename);
 	}
 }
 
@@ -2769,12 +2796,21 @@
 static void
 remove_custom_icon_cb(GtkWidget *widget, PidginConversation *gtkconv)
 {
-	PurpleConversation *conv;
+	const gchar *name;
+	PurpleBuddy *buddy;
 	PurpleAccount *account;
-
-	conv = gtkconv->active_conv;
+	PurpleContact *contact;
+	PurpleConversation *conv = gtkconv->active_conv;
+
 	account = purple_conversation_get_account(conv);
-	pidgin_set_custom_buddy_icon(account, purple_conversation_get_name(conv), NULL);
+	name = purple_conversation_get_name(conv);
+	buddy = purple_find_buddy(account, name);
+	if (!buddy) {
+		return;
+	}
+	contact = purple_buddy_get_contact(buddy);
+
+	purple_buddy_icons_node_set_custom_icon_from_file((PurpleBlistNode*)contact, NULL);
 }
 
 static void
@@ -2875,7 +2911,7 @@
 	if (buddy)
 	{
 		PurpleContact *contact = purple_buddy_get_contact(buddy);
-		if (contact && purple_buddy_icons_has_custom_icon(contact))
+		if (contact && purple_buddy_icons_node_has_custom_icon((PurpleBlistNode*)contact))
 		{
 			pidgin_new_item_from_stock(menu, _("Remove Custom Icon"), NULL,
 			                           G_CALLBACK(remove_custom_icon_cb), gtkconv,
@@ -3137,10 +3173,19 @@
 
 		if ((chat == NULL) && (gtkconv->imhtml != NULL)) {
 			GHashTable *components;
-			components = g_hash_table_new_full(g_str_hash, g_str_equal,
-					g_free, g_free);
-			g_hash_table_replace(components, g_strdup("channel"),
-					g_strdup(conv->name));
+			PurpleAccount *account = purple_conversation_get_account(conv);
+			PurplePlugin *prpl = purple_find_prpl(purple_account_get_protocol_id(account));
+			PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+			if (purple_account_get_connection(account) != NULL &&
+					PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, chat_info_defaults)) {
+				components = prpl_info->chat_info_defaults(purple_account_get_connection(account),
+						purple_conversation_get_name(conv));
+			} else {
+				components = g_hash_table_new_full(g_str_hash, g_str_equal,
+						g_free, g_free);
+				g_hash_table_replace(components, g_strdup("channel"),
+						g_strdup(purple_conversation_get_name(conv)));
+			}
 			chat = purple_chat_new(conv->account, NULL, components);
 			purple_blist_node_set_flags((PurpleBlistNode *)chat,
 					PURPLE_BLIST_NODE_FLAG_NO_SAVE);
@@ -3875,6 +3920,7 @@
 	gboolean is_buddy;
 	gchar *tmp, *alias_key, *name, *alias;
 	int flags;
+	GdkColor *color = NULL;
 
 	alias = cb->alias;
 	name  = cb->name;
@@ -3901,71 +3947,50 @@
 	alias_key = g_utf8_collate_key(tmp, -1);
 	g_free(tmp);
 
-	if (is_me)
-	{
-		GdkColor send_color;
-		gdk_color_parse(DEFAULT_SEND_COLOR, &send_color);
+	if (is_me) {
+		GtkTextTag *tag = gtk_text_tag_table_lookup(
+				gtk_text_buffer_get_tag_table(GTK_IMHTML(gtkconv->imhtml)->text_buffer),
+				"send-name");
+		g_object_get(tag, "foreground-gdk", &color, NULL);
+	} else {
+		color = (GdkColor*)get_nick_color(gtkconv, name);
+	}
 
 #if GTK_CHECK_VERSION(2,6,0)
-		gtk_list_store_insert_with_values(ls, &iter,
+	gtk_list_store_insert_with_values(ls, &iter,
 /*
- * The GTK docs are mute about the effects of the "row" value for performance.
- * X-Chat hardcodes their value to 0 (prepend) and -1 (append), so we will too.
- * It *might* be faster to search the gtk_list_store and set row accurately,
- * but no one in #gtk+ seems to know anything about it either.
- * Inserting in the "wrong" location has no visible ill effects. - F.P.
- */
-		                                  -1, /* "row" */
-		                                  CHAT_USERS_ICON_COLUMN,  pixbuf,
-		                                  CHAT_USERS_ALIAS_COLUMN, alias,
-		                                  CHAT_USERS_ALIAS_KEY_COLUMN, alias_key,
-		                                  CHAT_USERS_NAME_COLUMN,  name,
-		                                  CHAT_USERS_FLAGS_COLUMN, flags,
-		                                  CHAT_USERS_COLOR_COLUMN, &send_color,
-		                                  CHAT_USERS_WEIGHT_COLUMN, is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
-		                                  -1);
-	}
-	else
-	{
-		gtk_list_store_insert_with_values(ls, &iter,
-		                                  -1, /* "row" */
-		                                  CHAT_USERS_ICON_COLUMN,  pixbuf,
-		                                  CHAT_USERS_ALIAS_COLUMN, alias,
-		                                  CHAT_USERS_ALIAS_KEY_COLUMN, alias_key,
-		                                  CHAT_USERS_NAME_COLUMN,  name,
-		                                  CHAT_USERS_FLAGS_COLUMN, flags,
-		                                  CHAT_USERS_COLOR_COLUMN, get_nick_color(gtkconv, name),
-		                                  CHAT_USERS_WEIGHT_COLUMN, is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
-		                                  -1);
+* The GTK docs are mute about the effects of the "row" value for performance.
+* X-Chat hardcodes their value to 0 (prepend) and -1 (append), so we will too.
+* It *might* be faster to search the gtk_list_store and set row accurately,
+* but no one in #gtk+ seems to know anything about it either.
+* Inserting in the "wrong" location has no visible ill effects. - F.P.
+*/
+			-1, /* "row" */
+			CHAT_USERS_ICON_COLUMN,  pixbuf,
+			CHAT_USERS_ALIAS_COLUMN, alias,
+			CHAT_USERS_ALIAS_KEY_COLUMN, alias_key,
+			CHAT_USERS_NAME_COLUMN,  name,
+			CHAT_USERS_FLAGS_COLUMN, flags,
+			CHAT_USERS_COLOR_COLUMN, color,
+			CHAT_USERS_WEIGHT_COLUMN, is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
+			-1);
 #else
-		gtk_list_store_append(ls, &iter);
-		gtk_list_store_set(ls, &iter,
-		                   CHAT_USERS_ICON_COLUMN,  pixbuf,
-		                   CHAT_USERS_ALIAS_COLUMN, alias,
-		                   CHAT_USERS_ALIAS_KEY_COLUMN, alias_key,
-		                   CHAT_USERS_NAME_COLUMN,  name,
-		                   CHAT_USERS_FLAGS_COLUMN, flags,
-		                   CHAT_USERS_COLOR_COLUMN, &send_color,
-		                   CHAT_USERS_WEIGHT_COLUMN, is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
-		                   -1);
-	}
-	else
-	{
-		gtk_list_store_append(ls, &iter);
-		gtk_list_store_set(ls, &iter,
-		                   CHAT_USERS_ICON_COLUMN,  pixbuf,
-		                   CHAT_USERS_ALIAS_COLUMN, alias,
-		                   CHAT_USERS_ALIAS_KEY_COLUMN, alias_key,
-		                   CHAT_USERS_NAME_COLUMN,  name,
-		                   CHAT_USERS_FLAGS_COLUMN, flags,
-		                   CHAT_USERS_COLOR_COLUMN, get_nick_color(gtkconv, name),
-		                   CHAT_USERS_WEIGHT_COLUMN, is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
-		                   -1);
+	gtk_list_store_append(ls, &iter);
+	gtk_list_store_set(ls, &iter,
+			CHAT_USERS_ICON_COLUMN,  pixbuf,
+			CHAT_USERS_ALIAS_COLUMN, alias,
+			CHAT_USERS_ALIAS_KEY_COLUMN, alias_key,
+			CHAT_USERS_NAME_COLUMN,  name,
+			CHAT_USERS_FLAGS_COLUMN, flags,
+			CHAT_USERS_COLOR_COLUMN, color,
+			CHAT_USERS_WEIGHT_COLUMN, is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
+			-1);
 #endif
-	}
 
 	if (pixbuf)
 		g_object_unref(pixbuf);
+	if (is_me && color)
+		gdk_color_free(color);
 	g_free(alias_key);
 }
 
@@ -4359,6 +4384,7 @@
 	GtkTreeModel *model;
 	char *normalized_name;
 	GtkTreeIter iter;
+	GtkTextTag *texttag;
 	int f;
 
 	g_return_if_fail(buddy != NULL);
@@ -4396,6 +4422,11 @@
 	g_free(normalized_name);
 
 	blist_node_aliased_cb((PurpleBlistNode *)buddy, NULL, conv);
+
+	texttag = get_buddy_tag(conv, purple_buddy_get_name(buddy), FALSE); /* XXX: do we want the normalized name? */
+	if (texttag) {
+		g_object_set(texttag, "weight", is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL, NULL);
+	}
 }
 
 static void
@@ -5180,6 +5211,9 @@
 		nbr_nick_colors = NUM_NICK_COLORS;
 		nick_colors = generate_nick_colors(&nbr_nick_colors, gtk_widget_get_style(gtkconv->imhtml)->base[GTK_STATE_NORMAL]);
 	}
+
+	if (conv->features & PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY)
+		pidgin_themes_smiley_themeize_custom(gtkconv->entry);
 }
 
 static void
@@ -5356,7 +5390,8 @@
 	return FALSE;
 }
 
-static GtkTextTag *get_buddy_tag(PurpleConversation *conv, const char *who) {
+static GtkTextTag *get_buddy_tag(PurpleConversation *conv, const char *who, gboolean create)
+{
 	PidginConversation *gtkconv = PIDGIN_CONVERSATION(conv);
 	GtkTextTag *buddytag;
 	gchar *str;
@@ -5367,9 +5402,12 @@
 			gtk_text_buffer_get_tag_table(
 				GTK_IMHTML(gtkconv->imhtml)->text_buffer), str);
 
-	if (buddytag == NULL) {
+	if (buddytag == NULL && create) {
 		buddytag = gtk_text_buffer_create_tag(
-				GTK_IMHTML(gtkconv->imhtml)->text_buffer, str, NULL);
+				GTK_IMHTML(gtkconv->imhtml)->text_buffer, str,
+				"foreground-gdk", get_nick_color(gtkconv, who),
+				"weight", purple_find_buddy(purple_conversation_get_account(conv), who) ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
+				NULL);
 
 		g_signal_connect(G_OBJECT(buddytag), "event",
 				G_CALLBACK(buddytag_event), conv);
@@ -5475,7 +5513,6 @@
 	char buf2[BUF_LONG];
 	gboolean show_date;
 	char *mdate;
-	char color[10];
 	char *str;
 	char *with_font_tag;
 	char *sml_attrib = NULL;
@@ -5486,8 +5523,6 @@
 	char *bracket;
 	int tag_count = 0;
 	gboolean is_rtl_message = FALSE;
-	GtkSmileyTree *tree = NULL;
-	GHashTable *smiley_data = NULL;
 
 	g_return_if_fail(conv != NULL);
 	gtkconv = PIDGIN_CONVERSATION(conv);
@@ -5644,16 +5679,10 @@
 		gtk_font_options |= GTK_IMHTML_USE_POINTSIZE;
 	}
 
-	if (!(flags & PURPLE_MESSAGE_RECV))
+	if (!(flags & PURPLE_MESSAGE_RECV) && (conv->features & PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY))
 	{
-		/* Temporarily revert to the original smiley-data to avoid showing up
-		 * custom smileys of the buddy when sending message
-		 */
-		tree = GTK_IMHTML(gtkconv->imhtml)->default_smilies;
-		GTK_IMHTML(gtkconv->imhtml)->default_smilies =
-								GTK_IMHTML(gtkconv->entry)->default_smilies;
-		smiley_data = GTK_IMHTML(gtkconv->imhtml)->smiley_data;
-		GTK_IMHTML(gtkconv->imhtml)->smiley_data = GTK_IMHTML(gtkconv->entry)->smiley_data;
+		/* We want to see our own smileys. Need to revert it after send*/
+		pidgin_themes_smiley_themeize_custom(gtkconv->imhtml);
 	}
 
 	/* TODO: These colors should not be hardcoded so log.c can use them */
@@ -5684,169 +5713,109 @@
 		char *alias_escaped = (alias ? g_markup_escape_text(alias, strlen(alias)) : g_strdup(""));
 		/* The initial offset is to deal with
 		 * escaped entities making the string longer */
-		int tag_start_offset = alias ? (strlen(alias_escaped) - strlen(alias)) : 0;
+		int tag_start_offset = 0;
 		int tag_end_offset = 0;
+		const char *tagname = NULL;
+
+		GtkTextIter start, end;
+		GtkTextMark *mark;
+		GtkTextTag *tag;
+		GtkTextBuffer *buffer = GTK_IMHTML(gtkconv->imhtml)->text_buffer;
 
 		/* Enforce direction on alias */
 		if (is_rtl_message)
 			str_embed_direction_chars(&alias_escaped);
 
+		str = g_malloc(1024);
 		if (flags & PURPLE_MESSAGE_WHISPER) {
-			str = g_malloc(1024);
-
 			/* If we're whispering, it's not an autoresponse. */
 			if (purple_message_meify(new_message, -1 )) {
 				g_snprintf(str, 1024, "***%s", alias_escaped);
-				strcpy(color, "#6C2585");
 				tag_start_offset += 3;
+				tagname = "whisper-action-name";
 			}
 			else {
 				g_snprintf(str, 1024, "*%s*:", alias_escaped);
 				tag_start_offset += 1;
 				tag_end_offset = 2;
-				strcpy(color, "#00FF00");
+				tagname = "whisper-name";
 			}
-		}
-		else {
+		} else {
 			if (purple_message_meify(new_message, -1)) {
-				GdkColor *col;
-				str = g_malloc(1024);
-
 				if (flags & PURPLE_MESSAGE_AUTO_RESP) {
 					g_snprintf(str, 1024, "%s ***%s", AUTO_RESPONSE, alias_escaped);
-					tag_start_offset += 4
-						+ strlen(AUTO_RESPONSE);
+					tag_start_offset += strlen(AUTO_RESPONSE) - 6 + 4;
 				} else {
 					g_snprintf(str, 1024, "***%s", alias_escaped);
 					tag_start_offset += 3;
 				}
 
 				if (flags & PURPLE_MESSAGE_NICK)
-					gtk_widget_style_get(GTK_WIDGET(gtkconv->imhtml), "highlight-name-color", &col, NULL);
+					tagname = "highlight-name";
 				else
-					gtk_widget_style_get(GTK_WIDGET(gtkconv->imhtml), "action-name-color", &col, NULL);
-
-				if(col) {
-					g_snprintf(color, sizeof(color), "#%02X%02X%02X",
-						col->red >> 8, col->green >> 8, col->blue >> 8);
-					gdk_color_free(col);
-				} else {
-					if (flags & PURPLE_MESSAGE_NICK)
-						strcpy(color, DEFAULT_HIGHLIGHT_COLOR);
-					else
-						strcpy(color, DEFAULT_ACTION_COLOR);
-				}
-			}
-			else {
-				str = g_malloc(1024);
+					tagname = "action-name";
+			} else {
 				if (flags & PURPLE_MESSAGE_AUTO_RESP) {
 					g_snprintf(str, 1024, "%s %s", alias_escaped, AUTO_RESPONSE);
-					tag_start_offset += 1
-						+ strlen(AUTO_RESPONSE);
+					tag_start_offset += strlen(AUTO_RESPONSE) - 6 + 1;
 				} else {
 					g_snprintf(str, 1024, "%s:", alias_escaped);
 					tag_end_offset = 1;
 				}
+
 				if (flags & PURPLE_MESSAGE_NICK) {
-					GdkColor *col;
-					gtk_widget_style_get(GTK_WIDGET(gtkconv->imhtml), "highlight-name-color", &col, NULL);
-					if(col) {
-						g_snprintf(color, sizeof(color), "#%02X%02X%02X",
-							col->red >> 8, col->green >> 8, col->blue >> 8);
-						gdk_color_free(col);
-					} else {
-						strcpy(color, DEFAULT_HIGHLIGHT_COLOR);
+					tagname = "highlight-name";
+				} else if (flags & PURPLE_MESSAGE_RECV) {
+					/* The tagname for chats is handled by get_buddy_tag */
+					if (type == PURPLE_CONV_TYPE_IM) {
+						tagname = "receive-name";
 					}
-				}
-				else if (flags & PURPLE_MESSAGE_RECV) {
-					if (type == PURPLE_CONV_TYPE_CHAT) {
-						const GdkColor *col = get_nick_color(gtkconv, name);
-
-						g_snprintf(color, sizeof(color), "#%02X%02X%02X",
-							   col->red >> 8, col->green >> 8, col->blue >> 8);
-					} else {
-						GdkColor *col;
-						gtk_widget_style_get(GTK_WIDGET(gtkconv->imhtml), "receive-name-color", &col, NULL);
-						if(col) {
-							g_snprintf(color, sizeof(color), "#%02X%02X%02X",
-								col->red >> 8, col->green >> 8, col->blue >> 8);
-							gdk_color_free(col);
-						} else {
-							strcpy(color, DEFAULT_RECV_COLOR);
-						}
-					}
-				}
-				else if (flags & PURPLE_MESSAGE_SEND) {
-					GdkColor *col;
-					gtk_widget_style_get(GTK_WIDGET(gtkconv->imhtml), "send-name-color", &col, NULL);
-					if(col) {
-						g_snprintf(color, sizeof(color), "#%02X%02X%02X",
-							col->red >> 8, col->green >> 8, col->blue >> 8);
-						gdk_color_free(col);
-					} else {
-						strcpy(color, DEFAULT_SEND_COLOR);
-					}
-				}
-				else {
+				} else if (flags & PURPLE_MESSAGE_SEND) {
+					tagname = "send-name";
+				} else {
 					purple_debug_error("gtkconv", "message missing flags\n");
-					strcpy(color, "#000000");
 				}
 			}
 		}
 
 		g_free(alias_escaped);
 
-		/* Are we in a chat where we can tell which users are buddies? */
-		if  (prpl_info && !(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME) &&
-		     purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) {
-
-			/* Bold buddies to make them stand out from non-buddies. */
-			if (flags & PURPLE_MESSAGE_SEND ||
-			    flags & PURPLE_MESSAGE_NICK ||
-			    purple_find_buddy(account, name) != NULL) {
-				g_snprintf(buf2, BUF_LONG,
-					   "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--%s --></FONT>"
-					   "<B>%s</B></FONT> ",
-					   color, sml_attrib ? sml_attrib : "", mdate, str);
-			} else {
-				g_snprintf(buf2, BUF_LONG,
-					   "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--%s --></FONT>"
-					   "%s</FONT> ",
-					   color, sml_attrib ? sml_attrib : "", mdate, str);
-
-			}
-		} else {
-			/* Bold everyone's name to make the name stand out from the message. */
-			g_snprintf(buf2, BUF_LONG,
-				   "<FONT COLOR=\"%s\" %s><FONT SIZE=\"2\"><!--%s --></FONT>"
-				   "<B>%s</B></FONT> ",
-				   color, sml_attrib ? sml_attrib : "", mdate, str);
-		}
-
+		if (tagname)
+			tag = gtk_text_tag_table_lookup(gtk_text_buffer_get_tag_table(buffer), tagname);
+		else
+			tag = get_buddy_tag(conv, name, TRUE);
+
+		if (GTK_IMHTML(gtkconv->imhtml)->show_comments) {
+			/* The color for the timestamp has to be set in the font-tags, unfortunately.
+			 * Applying the nick-tag to timestamps would work, but that can make it
+			 * bold. I thought applying the "comment" tag again, which has "weight" set
+			 * to PANGO_WEIGHT_NORMAL, would remove the boldness. But it doesn't. So
+			 * this will have to do. I don't terribly like it.  -- sadrul */
+			GdkColor *color = NULL;
+			gboolean set = FALSE;
+			char colcode[] = "COLOR=\"#XXXXXX\"";
+			g_object_get(G_OBJECT(tag), "foreground-set", &set, "foreground-gdk", &color, NULL);
+			if (set && color)
+				g_snprintf(colcode, sizeof(colcode), "COLOR=\"#%02x%02x%02x\"",
+						color->red >> 8, color->green >> 8, color->blue >> 8);
+			else
+				colcode[0] = '\0';
+			g_snprintf(buf2, BUF_LONG, "<FONT %s SIZE=\"2\"><!--%s --></FONT>", colcode, mdate);
+			gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, gtk_font_options_all | GTK_IMHTML_NO_SCROLL);
+			if (color)
+				gdk_color_free(color);
+		}
+
+		gtk_text_buffer_get_end_iter(buffer, &end);
+		mark = gtk_text_buffer_create_mark(buffer, NULL, &end, TRUE);
+
+		g_snprintf(buf2, BUF_LONG, "<FONT %s>%s</FONT> ", sml_attrib ? sml_attrib : "", str);
 		gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), buf2, gtk_font_options_all | GTK_IMHTML_NO_SCROLL);
 
-		if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT &&
-		    !(flags & PURPLE_MESSAGE_SEND)) {
-
-			GtkTextIter start, end;
-			GtkTextTag *buddytag = get_buddy_tag(conv, name);
-
-			gtk_text_buffer_get_end_iter(
-					GTK_IMHTML(gtkconv->imhtml)->text_buffer,
-					&end);
-			gtk_text_iter_backward_chars(&end,
-					tag_end_offset + 1);
-
-			gtk_text_buffer_get_end_iter(
-					GTK_IMHTML(gtkconv->imhtml)->text_buffer,
-					&start);
-			gtk_text_iter_backward_chars(&start,
-					strlen(str) + 1 - tag_start_offset);
-
-			gtk_text_buffer_apply_tag(
-					GTK_IMHTML(gtkconv->imhtml)->text_buffer,
-					buddytag, &start, &end);
-		}
+		gtk_text_buffer_get_end_iter(buffer, &end);
+		gtk_text_buffer_get_iter_at_mark(buffer, &start, mark);
+		gtk_text_buffer_apply_tag(buffer, tag, &start, &end);
+		gtk_text_buffer_delete_mark(buffer, mark);
 
 		g_free(str);
 
@@ -5864,8 +5833,7 @@
 
 			length += pre_len + post_len;
 			g_free(pre);
-		}
-		else
+		} else
 			with_font_tag = g_memdup(new_message, length);
 
 		gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml),
@@ -5896,11 +5864,10 @@
 		gtkconv_set_unseen(gtkconv, unseen);
 	}
 
-	if (!(flags & PURPLE_MESSAGE_RECV))
+	if (!(flags & PURPLE_MESSAGE_RECV) && (conv->features & PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY))
 	{
 		/* Restore the smiley-data */
-		GTK_IMHTML(gtkconv->imhtml)->default_smilies = tree;
-		GTK_IMHTML(gtkconv->imhtml)->smiley_data = smiley_data;
+		pidgin_themes_smiley_themeize(gtkconv->imhtml);
 	}
 
 	purple_signal_emit(pidgin_conversations_get_handle(),
@@ -6128,119 +6095,24 @@
 	return FALSE;
 }
 
-static void pidgin_conv_custom_smiley_allocated(GdkPixbufLoader *loader, gpointer user_data)
-{
-	GtkIMHtmlSmiley *smiley;
-
-	smiley = (GtkIMHtmlSmiley *)user_data;
-	smiley->icon = gdk_pixbuf_loader_get_animation(loader);
-
-	if (smiley->icon)
-		g_object_ref(G_OBJECT(smiley->icon));
-#ifdef DEBUG_CUSTOM_SMILEY
-	purple_debug_info("custom-smiley", "pidgin_conv_custom_smiley_allocated(): got GdkPixbufAnimation %p for smiley '%s'\n", smiley->icon, smiley->smile);
-#endif
-}
-
-static void pidgin_conv_custom_smiley_closed(GdkPixbufLoader *loader, gpointer user_data)
-{
-	GtkIMHtmlSmiley *smiley;
-	GtkWidget *icon = NULL;
-	GtkTextChildAnchor *anchor = NULL;
-	GSList *current = NULL;
-
-	smiley = (GtkIMHtmlSmiley *)user_data;
-	if (!smiley->imhtml) {
-#ifdef DEBUG_CUSTOM_SMILEY
-		purple_debug_error("custom-smiley", "pidgin_conv_custom_smiley_closed(): orphan smiley found: %p\n", smiley);
-#endif
-		g_object_unref(G_OBJECT(loader));
-		smiley->loader = NULL;
-		return;
-	}
-
-	for (current = smiley->anchors; current; current = g_slist_next(current)) {
-
-		icon = gtk_image_new_from_animation(smiley->icon);
-
-#ifdef DEBUG_CUSTOM_SMILEY
-		purple_debug_info("custom-smiley", "pidgin_conv_custom_smiley_closed(): got GtkImage %p from GtkPixbufAnimation %p for smiley '%s'\n",
-				icon, smiley->icon, smiley->smile);
-#endif
-		if (icon) {
-			GList *wids;
-			gtk_widget_show(icon);
-
-			anchor = GTK_TEXT_CHILD_ANCHOR(current->data);
-			wids = gtk_text_child_anchor_get_widgets(anchor);
-
-			g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_plaintext", purple_unescape_html(smiley->smile), g_free);
-			g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_htmltext", g_strdup(smiley->smile), g_free);
-
-			if (smiley->imhtml) {
-				if (wids) {
-					GList *children = gtk_container_get_children(GTK_CONTAINER(wids->data));
-					g_list_foreach(children, (GFunc)gtk_widget_destroy, NULL);
-					g_list_free(children);
-					gtk_container_add(GTK_CONTAINER(wids->data), icon);
-				} else
-					gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(smiley->imhtml), icon, anchor);
-			}
-			g_list_free(wids);
-		}
-
-	}
-
-	g_slist_free(smiley->anchors);
-	smiley->anchors = NULL;
-
-	g_object_unref(G_OBJECT(loader));
-	smiley->loader = NULL;
-}
-
 static gboolean
 add_custom_smiley_for_imhtml(GtkIMHtml *imhtml, const char *sml, const char *smile)
 {
 	GtkIMHtmlSmiley *smiley;
-	GdkPixbufLoader *loader;
 
 	smiley = gtk_imhtml_smiley_get(imhtml, sml, smile);
 
 	if (smiley) {
-
 		if (!(smiley->flags & GTK_IMHTML_SMILEY_CUSTOM)) {
 			return FALSE;
 		}
-
-		/* Close the old GdkPixbufAnimation, then create a new one for
-		 * the smiley we are about to receive */
-		g_object_unref(G_OBJECT(smiley->icon));
-
-		/* XXX: Is it necessary to _unref the loader first? */
-		smiley->loader = gdk_pixbuf_loader_new();
-		smiley->icon = NULL;
-
-		g_signal_connect(smiley->loader, "area_prepared", G_CALLBACK(pidgin_conv_custom_smiley_allocated), smiley);
-		g_signal_connect(smiley->loader, "closed", G_CALLBACK(pidgin_conv_custom_smiley_closed), smiley);
-
+		gtk_imhtml_smiley_reload(smiley);
 		return TRUE;
 	}
 
-	loader = gdk_pixbuf_loader_new();
-
-	/* this is wrong, this file ought not call g_new on GtkIMHtmlSmiley */
-	/* Let gtk_imhtml have a gtk_imhtml_smiley_new function, and let
-	   GtkIMHtmlSmiley by opaque */
-	smiley = g_new0(GtkIMHtmlSmiley, 1);
-	smiley->file   = NULL;
-	smiley->smile  = g_strdup(smile);
-	smiley->loader = loader;
-	smiley->flags  = smiley->flags | GTK_IMHTML_SMILEY_CUSTOM;
-
-	g_signal_connect(smiley->loader, "area_prepared", G_CALLBACK(pidgin_conv_custom_smiley_allocated), smiley);
-	g_signal_connect(smiley->loader, "closed", G_CALLBACK(pidgin_conv_custom_smiley_closed), smiley);
-
+	smiley = gtk_imhtml_smiley_create(NULL, smile, FALSE, GTK_IMHTML_SMILEY_CUSTOM);
 	gtk_imhtml_associate_smiley(imhtml, sml, smiley);
+	g_signal_connect_swapped(imhtml, "destroy", G_CALLBACK(gtk_imhtml_smiley_destroy), smiley);
 
 	return TRUE;
 }
@@ -6465,6 +6337,11 @@
 		if(conv->features & PURPLE_CONNECTION_NO_IMAGES)
 			buttons &= ~GTK_IMHTML_IMAGE;
 
+		if (conv->features & PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY)
+			buttons |= GTK_IMHTML_CUSTOM_SMILEY;
+		else
+			buttons &= ~GTK_IMHTML_CUSTOM_SMILEY;
+
 		gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons);
 		if (account != NULL)
 			gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(gtkconv->toolbar), purple_account_get_protocol_id(account));
@@ -6912,7 +6789,7 @@
 	{
 		PurpleContact *contact = purple_buddy_get_contact(buddy);
 		if (contact) {
-			custom_img = purple_buddy_icons_find_custom_icon(contact);
+			custom_img = purple_buddy_icons_node_find_custom_icon((PurpleBlistNode*)contact);
 			if (custom_img) {
 				/* There is a custom icon for this user */
 				data = purple_imgstore_get_data(custom_img);
--- a/pidgin/gtkdialogs.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkdialogs.c	Thu Jun 26 09:07:56 2008 +0000
@@ -67,16 +67,16 @@
 	char *email;
 };
 
-/* Order: Lead Developer, then Alphabetical by Last Name */
+/* Order: Alphabetical by Last Name */
 static const struct developer developers[] = {
-	{"Sean Egan",					N_("lead developer"), "sean.egan@gmail.com"},
 	{"Daniel 'datallah' Atallah",	N_("developer"), NULL},
 	{"John 'rekkanoryo' Bailey",	N_("developer"), NULL},
 	{"Ethan 'Paco-Paco' Blanton",	N_("developer"), NULL},
 	{"Thomas Butter",				N_("developer"), NULL},
 	{"Ka-Hing Cheung",				N_("developer"), NULL},
 	{"Sadrul Habib Chowdhury",		N_("developer"), NULL},
-	{"Mark 'KingAnt' Doliner",		N_("developer"), NULL},
+	{"Mark 'KingAnt' Doliner",		N_("developer"), "mark@kingant.net"},
+	{"Sean Egan",					N_("developer"), "sean.egan@gmail.com"},
 	{"Casey Harkins",               N_("developer"),   NULL},
 	{"Gary 'grim' Kramlich",		N_("developer"), NULL},
 	{"Richard 'rlaager' Laager",	N_("developer"), NULL},
@@ -194,7 +194,7 @@
 	{N_("Nepali"),              "ne", "Shyam Krishna Bal", "shyamkrishna_bal@yahoo.com"},
 	{N_("Dutch, Flemish"),      "nl", "Vincent van Adrighem", "V.vanAdrighem@dirck.mine.nu"},
 	{N_("Norwegian Nynorsk"),   "nn", "Yngve Spjeld Landro", "nynorsk@strilen.net"},
-	{"Occitan",					"oc", "Yannig Marchegay", "yannig@marchegay.org"},
+	{N_("Occitan"),             "oc", "Yannig Marchegay", "yannig@marchegay.org"},
 	{N_("Punjabi"),             "pa", "Amanpreet Singh Alam", "aalam@users.sf.net"},
 	{N_("Polish"),              "pl", "Emil Nowak", "emil5@go2.pl"},
 	{N_("Polish"),              "pl", "Paweł Godlewski", "pawel@bajk.pl"},
@@ -686,7 +686,7 @@
 #ifdef LIBZEPHYR_EXT
 	g_string_append(str, "    <b>Zephyr library (libzephyr):</b> External<br/>");
 #else
-	g_string_append(str, "    <b>Zephyr library (libzephyr):</b> Not External<br/>");
+	g_string_append(str, "    <b>Zephyr library (libzephyr):</b> Internal<br/>");
 #endif
 
 #ifdef ZEPHYR_USES_KERBEROS
--- a/pidgin/gtkdocklet.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkdocklet.c	Thu Jun 26 09:07:56 2008 +0000
@@ -530,7 +530,7 @@
 	PidginStatusBox *statusbox = NULL;
 
 	submenu = gtk_menu_new();
-	menuitem = gtk_menu_item_new_with_label(_("Change Status"));
+	menuitem = gtk_menu_item_new_with_mnemonic(_("_Change Status"));
 	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
 
 	if(pidgin_blist_get_default_gtk_blist() != NULL) {
@@ -678,12 +678,12 @@
 
 	menu = gtk_menu_new();
 
-	menuitem = gtk_check_menu_item_new_with_label(_("Show Buddy List"));
+	menuitem = gtk_check_menu_item_new_with_mnemonic(_("Show Buddy _List"));
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/list_visible"));
 	g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blist), NULL);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 
-	menuitem = gtk_menu_item_new_with_label(_("Unread Messages"));
+	menuitem = gtk_menu_item_new_with_mnemonic(_("_Unread Messages"));
 
 	if (pending) {
 		GtkWidget *submenu = gtk_menu_new();
@@ -704,7 +704,7 @@
 
 	pidgin_separator(menu);
 
-	menuitem = pidgin_new_item_from_stock(menu, _("New Message..."), PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, G_CALLBACK(pidgin_dialogs_im), NULL, 0, 0, NULL);
+	menuitem = pidgin_new_item_from_stock(menu, _("New _Message..."), PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, G_CALLBACK(pidgin_dialogs_im), NULL, 0, 0, NULL);
 	if (status == PURPLE_STATUS_OFFLINE)
 		gtk_widget_set_sensitive(menuitem, FALSE);
 
@@ -713,20 +713,20 @@
 
 	pidgin_separator(menu);
 
-	pidgin_new_item_from_stock(menu, _("Accounts"), NULL, G_CALLBACK(pidgin_accounts_window_show), NULL, 0, 0, NULL);
-	pidgin_new_item_from_stock(menu, _("Plugins"), PIDGIN_STOCK_TOOLBAR_PLUGINS, G_CALLBACK(pidgin_plugin_dialog_show), NULL, 0, 0, NULL);
-	pidgin_new_item_from_stock(menu, _("Preferences"), GTK_STOCK_PREFERENCES, G_CALLBACK(pidgin_prefs_show), NULL, 0, 0, NULL);
+	pidgin_new_item_from_stock(menu, _("_Accounts"), NULL, G_CALLBACK(pidgin_accounts_window_show), NULL, 0, 0, NULL);
+	pidgin_new_item_from_stock(menu, _("Plu_gins"), PIDGIN_STOCK_TOOLBAR_PLUGINS, G_CALLBACK(pidgin_plugin_dialog_show), NULL, 0, 0, NULL);
+	pidgin_new_item_from_stock(menu, _("Pr_eferences"), GTK_STOCK_PREFERENCES, G_CALLBACK(pidgin_prefs_show), NULL, 0, 0, NULL);
 
 	pidgin_separator(menu);
 
-	menuitem = gtk_check_menu_item_new_with_label(_("Mute Sounds"));
+	menuitem = gtk_check_menu_item_new_with_mnemonic(_("Mute _Sounds"));
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/mute"));
 	if (!strcmp(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/method"), "none"))
 		gtk_widget_set_sensitive(GTK_WIDGET(menuitem), FALSE);
 	g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_mute), NULL);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
 
-	menuitem = gtk_check_menu_item_new_with_label(_("Blink on New Message"));
+	menuitem = gtk_check_menu_item_new_with_mnemonic(_("_Blink on New Message"));
 	gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/docklet/blink"));
 	g_signal_connect(G_OBJECT(menuitem), "toggled", G_CALLBACK(docklet_toggle_blink), NULL);
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
@@ -736,7 +736,7 @@
 	/* add plugin actions */
 	docklet_plugin_actions(menu);
 
-	pidgin_new_item_from_stock(menu, _("Quit"), GTK_STOCK_QUIT, G_CALLBACK(purple_core_quit), NULL, 0, 0, NULL);
+	pidgin_new_item_from_stock(menu, _("_Quit"), GTK_STOCK_QUIT, G_CALLBACK(purple_core_quit), NULL, 0, 0, NULL);
 
 #ifdef _WIN32
 	g_signal_connect(menu, "leave-notify-event", G_CALLBACK(docklet_menu_leave_enter), NULL);
--- a/pidgin/gtkft.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkft.c	Thu Jun 26 09:07:56 2008 +0000
@@ -226,8 +226,10 @@
 			total_pct = 100 * total_bytes_xferred / total_file_size;
 		}
 
-		title = g_strdup_printf(_("File Transfers - %d%% of %d files"),
-				total_pct, num_active_xfers);
+		title = g_strdup_printf(ngettext("File Transfers - %d%% of %d file",
+						 "File Transfers - %d%% of %d files",
+						 num_active_xfers),
+					total_pct, num_active_xfers);
 		gtk_window_set_title(GTK_WINDOW(dialog->window), title);
 		g_free(title);
 	} else {
--- a/pidgin/gtkimhtml.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkimhtml.c	Thu Jun 26 09:07:56 2008 +0000
@@ -32,10 +32,14 @@
 #include "internal.h"
 #include "pidgin.h"
 #include "pidginstock.h"
+#include "gtkutils.h"
+#include "smiley.h"
+#include "imgstore.h"
 
 #include "debug.h"
 #include "util.h"
 #include "gtkimhtml.h"
+#include "gtksmiley.h"
 #include "gtksourceiter.h"
 #include "gtksourceundomanager.h"
 #include "gtksourceview-marshal.h"
@@ -393,6 +397,55 @@
 		gtk_imhtml_scroll_to_end(imhtml, FALSE);
 }
 
+#define DEFAULT_SEND_COLOR "#204a87"
+#define DEFAULT_RECV_COLOR "#cc0000"
+#define DEFAULT_HIGHLIGHT_COLOR "#AF7F00"
+#define DEFAULT_ACTION_COLOR "#062585"
+#define DEFAULT_WHISPER_ACTION_COLOR "#6C2585"
+#define DEFAULT_WHISPER_COLOR "#00FF00"
+
+static void (*parent_style_set)(GtkWidget *widget, GtkStyle *prev_style);
+
+static void
+gtk_imhtml_style_set(GtkWidget *widget, GtkStyle *prev_style)
+{
+	int i;
+	struct {
+		const char *tag;
+		const char *color;
+		const char *def;
+	} styles[] = {
+		{"send-name", "send-name-color", DEFAULT_SEND_COLOR},
+		{"receive-name", "receive-name-color", DEFAULT_RECV_COLOR},
+		{"highlight-name", "highlight-name-color", DEFAULT_HIGHLIGHT_COLOR},
+		{"action-name", "action-name-color", DEFAULT_ACTION_COLOR},
+		{"whisper-action-name", "whisper-action-name-color", DEFAULT_WHISPER_ACTION_COLOR},
+		{"whisper-name", "whisper-name-color", DEFAULT_WHISPER_COLOR},
+		{NULL, NULL, NULL}
+	};
+	GtkIMHtml *imhtml = GTK_IMHTML(widget);
+	GtkTextTagTable *table = gtk_text_buffer_get_tag_table(imhtml->text_buffer);
+
+	for (i = 0; styles[i].tag; i++) {
+		GdkColor *color = NULL;
+		GtkTextTag *tag = gtk_text_tag_table_lookup(table, styles[i].tag);
+		if (!tag) {
+			purple_debug_warning("gtkimhtml", "Cannot find tag '%s'. This should never happen. Please file a bug.\n", styles[i].tag);
+			continue;
+		}
+		gtk_widget_style_get(widget, styles[i].color, &color, NULL);
+		if (color) {
+			g_object_set(tag, "foreground-gdk", color, NULL);
+			gdk_color_free(color);
+		} else {
+			GdkColor defcolor;
+			gdk_color_parse(styles[i].def, &defcolor);
+			g_object_set(tag, "foreground-gdk", &defcolor, NULL);
+		}
+	}
+	parent_style_set(widget, prev_style);
+}
+
 static gint
 gtk_imhtml_tip_paint (GtkIMHtml *imhtml)
 {
@@ -950,19 +1003,14 @@
 		char *selection;
 #ifndef _WIN32
 		gsize len;
-		GString *str = g_string_new(NULL);
 		if (primary) {
 			text = gtk_imhtml_get_markup_range(imhtml, &start, &end);
 		} else
 			text = html_clipboard;
 
 		/* Mozilla asks that we start our text/html with the Unicode byte order mark */
-		str = g_string_append_unichar(str, 0xfeff);
-		str = g_string_append(str, text);
-		str = g_string_append_unichar(str, 0x0000);
-		selection = g_convert(str->str, str->len, "UTF-16", "UTF-8", NULL, &len, NULL);
+		selection = g_convert(text, -1, "UTF-16", "UTF-8", NULL, &len, NULL);
 		gtk_selection_data_set(selection_data, gdk_atom_intern("text/html", FALSE), 16, (const guchar *)selection, len);
-		g_string_free(str, TRUE);
 #else
 		selection = clipboard_html_to_win32(html_clipboard);
 		gtk_selection_data_set(selection_data, gdk_atom_intern("HTML Format", FALSE), 8, (const guchar *)selection, strlen(selection));
@@ -1427,6 +1475,8 @@
 	widget_class->expose_event = gtk_imhtml_expose_event;
 	parent_size_allocate = widget_class->size_allocate;
 	widget_class->size_allocate = gtk_imhtml_size_allocate;
+	parent_style_set = widget_class->style_set;
+	widget_class->style_set = gtk_imhtml_style_set;
 
 	gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("hyperlink-color",
 	                                        _("Hyperlink color"),
@@ -1452,6 +1502,14 @@
 	                                        _("Action Message Name Color"),
 	                                        _("Color to draw the name of an action message."),
 	                                        GDK_TYPE_COLOR, G_PARAM_READABLE));
+	gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("whisper-action-name-color",
+	                                        _("Action Message Name Color for Whispered Message"),
+	                                        _("Color to draw the name of an action message."),
+	                                        GDK_TYPE_COLOR, G_PARAM_READABLE));
+	gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("whisper-name-color",
+	                                        _("Whisper Message Name Color"),
+	                                        _("Color to draw the name of an action message."),
+	                                        GDK_TYPE_COLOR, G_PARAM_READABLE));
 
 	/* Customizable typing notification ... sort of. Example:
 	 *   GtkIMHtml::typing-notification-font = "monospace italic light 8.0"
@@ -1513,9 +1571,18 @@
 	gtk_text_buffer_create_tag(imhtml->text_buffer, "SUP", "rise", 5000, NULL);
 	gtk_text_buffer_create_tag(imhtml->text_buffer, "PRE", "family", "Monospace", NULL);
 	gtk_text_buffer_create_tag(imhtml->text_buffer, "search", "background", "#22ff00", "weight", "bold", NULL);
+	gtk_text_buffer_create_tag(imhtml->text_buffer, "comment", "weight", PANGO_WEIGHT_NORMAL,
 #if FALSE && GTK_CHECK_VERSION(2,10,10)
-	gtk_text_buffer_create_tag(imhtml->text_buffer, "comment", "invisible", FALSE, NULL);
+			"invisible", FALSE,
 #endif
+			NULL);
+
+	gtk_text_buffer_create_tag(imhtml->text_buffer, "send-name", "weight", PANGO_WEIGHT_BOLD, NULL);
+	gtk_text_buffer_create_tag(imhtml->text_buffer, "receive-name", "weight", PANGO_WEIGHT_BOLD, NULL);
+	gtk_text_buffer_create_tag(imhtml->text_buffer, "highlight-name", "weight", PANGO_WEIGHT_BOLD, NULL);
+	gtk_text_buffer_create_tag(imhtml->text_buffer, "action-name", "weight", PANGO_WEIGHT_BOLD, NULL);
+	gtk_text_buffer_create_tag(imhtml->text_buffer, "whisper-action-name", "weight", PANGO_WEIGHT_BOLD, NULL);
+	gtk_text_buffer_create_tag(imhtml->text_buffer, "whisper-name", "weight", PANGO_WEIGHT_BOLD, NULL);
 
 	/* When hovering over a link, we show the hand cursor--elsewhere we show the plain ol' pointer cursor */
 	imhtml->hand_cursor = gdk_cursor_new (GDK_HAND2);
@@ -1683,11 +1750,11 @@
 
 			if (!strncmp(tempdata->url, "mailto:", 7))
 			{
-				/* Copy E-Mail Address */
+				/* Copy Email Address */
 				img = gtk_image_new_from_stock(GTK_STOCK_COPY,
 											   GTK_ICON_SIZE_MENU);
 				item = gtk_image_menu_item_new_with_mnemonic(
-					_("_Copy E-Mail Address"));
+					_("_Copy Email Address"));
 				gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
 				g_signal_connect(G_OBJECT(item), "activate",
 								 G_CALLBACK(url_copy), tempdata->url + 7);
@@ -3056,7 +3123,7 @@
 #else
 					if (imhtml->show_comments && !(options & GTK_IMHTML_NO_COMMENTS)) {
 						wpos = g_snprintf (ws, len, "%s", tag);
-						gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
+						gtk_text_buffer_insert_with_tags_by_name(imhtml->text_buffer, iter, ws, wpos, "comment", NULL);
 					}
 #endif
 					ws[0] = '\0'; wpos = 0;
@@ -3623,6 +3690,15 @@
 	gtk_widget_show(image->filesel);
 }
 
+static void
+gtk_imhtml_custom_smiley_save(GtkWidget *w, GtkIMHtmlImage *image)
+{
+	/* Create an add dialog */
+	PidginSmiley *editor = pidgin_smiley_edit(NULL, NULL);
+	pidgin_smiley_editor_set_shortcut(editor, image->filename);
+	pidgin_smiley_editor_set_image(editor, image->pixbuf);
+}
+
 /*
  * So, um, AIM Direct IM lets you send any file, not just images.  You can
  * just insert a sound or a file or whatever in a conversation.  It's
@@ -3647,6 +3723,19 @@
 			g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_image_save), image);
 			gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
 
+			/* Add menu item for adding custom smiley to local smileys */
+			/* we only add the menu if the image is of "custom smiley size"
+			  <= 96x96 pixels */
+			if (image->width <= 96 && image->height <= 96) {
+				text = g_strdup_printf(_("_Add Custom Smiley..."));
+				img = gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU);
+				item = gtk_image_menu_item_new_with_mnemonic(text);
+				gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
+				g_signal_connect(G_OBJECT(item), "activate",
+								 G_CALLBACK(gtk_imhtml_custom_smiley_save), image);
+				gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+			}
+
 			gtk_widget_show_all(menu);
 			gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL,
 							event_button->button, event_button->time);
@@ -3668,7 +3757,7 @@
 	GdkPixbufAnimation *anim = NULL;
 	GtkIMHtmlScalable *image = NULL;
 	gboolean ret;
-	
+
 	if (event->type != GDK_BUTTON_RELEASE || ((GdkEventButton*)event)->button != 3)
 		return FALSE;
 
@@ -4777,7 +4866,7 @@
 		gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(imhtml), ebox ? ebox : icon, anchor);
 	} else if (imhtml_smiley != NULL && (imhtml->format_functions & GTK_IMHTML_SMILEY)) {
 		anchor = gtk_text_buffer_create_child_anchor(imhtml->text_buffer, iter);
-		imhtml_smiley->anchors = g_slist_append(imhtml_smiley->anchors, anchor);
+		imhtml_smiley->anchors = g_slist_append(imhtml_smiley->anchors, g_object_ref(anchor));
 		if (ebox) {
 			GtkWidget *img = gtk_image_new_from_stock(GTK_STOCK_MISSING_IMAGE, GTK_ICON_SIZE_MENU);
 			char *text = g_strdup(unescaped);
@@ -4904,7 +4993,68 @@
 		g_snprintf(buf, sizeof(buf), "<font size=\"%s\">", &name[10]);
 		return buf;
 	} else {
-		return "";
+		char *str = buf;
+		gboolean isset;
+		int ivalue = 0;
+		GdkColor *color = NULL;
+		GObject *obj = G_OBJECT(tag);
+		gboolean empty = TRUE;
+
+		str += g_snprintf(str, sizeof(buf) - (str - buf), "<span style='");
+
+		/* Weight */
+		g_object_get(obj, "weight-set", &isset, "weight", &ivalue, NULL);
+		if (isset) {
+			const char *weight = "";
+			if (ivalue >= PANGO_WEIGHT_ULTRABOLD)
+				weight = "bolder";
+			else if (ivalue >= PANGO_WEIGHT_BOLD)
+				weight = "bold";
+			else if (ivalue >= PANGO_WEIGHT_NORMAL)
+				weight = "normal";
+			else
+				weight = "lighter";
+
+			str += g_snprintf(str, sizeof(buf) - (str - buf), "font-weight: %s;", weight);
+			empty = FALSE;
+		}
+
+		/* Foreground color */
+		g_object_get(obj, "foreground-set", &isset, "foreground-gdk", &color, NULL);
+		if (isset && color) {
+			str += g_snprintf(str, sizeof(buf) - (str - buf),
+					"color: #%02x%02x%02x;",
+					color->red >> 8, color->green >> 8, color->blue >> 8);
+			empty = FALSE;
+		}
+		gdk_color_free(color);
+
+		/* Background color */
+		g_object_get(obj, "background-set", &isset, "background-gdk", &color, NULL);
+		if (isset && color) {
+			str += g_snprintf(str, sizeof(buf) - (str - buf),
+					"background: #%02x%02x%02x;",
+					color->red >> 8, color->green >> 8, color->blue >> 8);
+			empty = FALSE;
+		}
+		gdk_color_free(color);
+
+		/* Underline */
+		g_object_get(obj, "underline-set", &isset, "underline", &ivalue, NULL);
+		if (isset) {
+			switch (ivalue) {
+				case PANGO_UNDERLINE_NONE:
+				case PANGO_UNDERLINE_ERROR:
+					break;
+				default:
+					str += g_snprintf(str, sizeof(buf) - (str - buf), "text-decoration: underline;");
+					empty = FALSE;
+			}
+		}
+
+		g_snprintf(str, sizeof(buf) - (str - buf), "'>");
+
+		return (empty ? "" : buf);
 	}
 }
 
@@ -4936,10 +5086,52 @@
 	} else if (strncmp(name, "FONT SIZE ", 10) == 0) {
 		return "</font>";
 	} else {
+		const char *props[] = {"weight-set", "foreground-set", "background-set",
+			"size-set", "underline-set", NULL};
+		int i;
+		for (i = 0; props[i]; i++) {
+			gboolean set = FALSE;
+			g_object_get(G_OBJECT(tag), props[i], &set, NULL);
+			if (set)
+				return "</span>";
+		}
+
 		return "";
 	}
 }
 
+typedef struct {
+	GtkTextTag *tag;
+	char *end;
+	char *start;
+} PidginTextTagData;
+
+static PidginTextTagData *text_tag_data_new(GtkTextTag *tag)
+{
+	const char *start, *end;
+	PidginTextTagData *ret = NULL;
+
+	start = tag_to_html_start(tag);
+	if (!start || !*start)
+		return NULL;
+	end = tag_to_html_end(tag);
+	if (!end || !*end)
+		return NULL;
+
+	ret = g_new0(PidginTextTagData, 1);
+	ret->start = g_strdup(start);
+	ret->end = g_strdup(end);
+	ret->tag = tag;
+	return ret;
+}
+
+static void text_tag_data_destroy(PidginTextTagData *data)
+{
+	g_free(data->start);
+	g_free(data->end);
+	g_free(data);
+}
+
 static gboolean tag_ends_here(GtkTextTag *tag, GtkTextIter *iter, GtkTextIter *niter)
 {
 	return ((gtk_text_iter_has_tag(iter, GTK_TEXT_TAG(tag)) &&
@@ -4960,12 +5152,11 @@
 	gboolean is_rtl_message = FALSE;
 	GString *str = g_string_new("");
 	GSList *tags, *sl;
-	GQueue *q, *r;
+	GQueue *q;
 	GtkTextTag *tag;
+	PidginTextTagData *tagdata;
 
 	q = g_queue_new();
-	r = g_queue_new();
-
 
 	gtk_text_iter_order(start, end);
 	non_neutral_iter = next_iter = iter = *start;
@@ -4988,9 +5179,11 @@
 	for (sl = tags; sl; sl = sl->next) {
 		tag = sl->data;
 		if (!gtk_text_iter_toggles_tag(start, GTK_TEXT_TAG(tag))) {
-			if (strlen(tag_to_html_end(tag)) > 0)
-				g_string_append(str, tag_to_html_start(tag));
-			g_queue_push_tail(q, tag);
+			PidginTextTagData *data = text_tag_data_new(tag);
+			if (data) {
+				g_string_append(str, data->start);
+				g_queue_push_tail(q, data);
+			}
 		}
 	}
 	g_slist_free(tags);
@@ -5002,13 +5195,14 @@
 		for (sl = tags; sl; sl = sl->next) {
 			tag = sl->data;
 			if (gtk_text_iter_begins_tag(&iter, GTK_TEXT_TAG(tag))) {
-				if (strlen(tag_to_html_end(tag)) > 0)
-					g_string_append(str, tag_to_html_start(tag));
-				g_queue_push_tail(q, tag);
+				PidginTextTagData *data = text_tag_data_new(tag);
+				if (data) {
+					g_string_append(str, data->start);
+					g_queue_push_tail(q, data);
+				}
 			}
 		}
 
-
 		if (c == 0xFFFC) {
 			GtkTextChildAnchor* anchor = gtk_text_iter_get_child_anchor(&iter);
 			if (anchor) {
@@ -5034,28 +5228,33 @@
 		for (sl = tags; sl; sl = sl->next) {
 			tag = sl->data;
 			/** don't worry about non-printing tags ending */
-			if (tag_ends_here(tag, &iter, &next_iter) && strlen(tag_to_html_end(tag)) > 0) {
-
-				GtkTextTag *tmp;
-
-				while ((tmp = g_queue_pop_tail(q)) != tag) {
-					if (tmp == NULL)
-						break;
-
-					if (!tag_ends_here(tmp, &iter, &next_iter) && strlen(tag_to_html_end(tmp)) > 0)
+			if (tag_ends_here(tag, &iter, &next_iter) &&
+					strlen(tag_to_html_end(tag)) > 0 &&
+					strlen(tag_to_html_start(tag)) > 0) {
+
+				PidginTextTagData *tmp;
+				GQueue *r = g_queue_new();
+
+				while ((tmp = g_queue_pop_tail(q)) && tmp->tag != tag) {
+					g_string_append(str, tmp->end);
+					if (!tag_ends_here(tmp->tag, &iter, &next_iter))
 						g_queue_push_tail(r, tmp);
-					g_string_append(str, tag_to_html_end(GTK_TEXT_TAG(tmp)));
+					else
+						text_tag_data_destroy(tmp);
 				}
 
 				if (tmp == NULL)
 					purple_debug_warning("gtkimhtml", "empty queue, more closing tags than open tags!\n");
-				else
-					g_string_append(str, tag_to_html_end(GTK_TEXT_TAG(tag)));
+				else {
+					g_string_append(str, tmp->end);
+					text_tag_data_destroy(tmp);
+				}
 
 				while ((tmp = g_queue_pop_head(r))) {
-					g_string_append(str, tag_to_html_start(GTK_TEXT_TAG(tmp)));
+					g_string_append(str, tmp->start);
 					g_queue_push_tail(q, tmp);
 				}
+				g_queue_free(r);
 			}
 		}
 
@@ -5064,15 +5263,16 @@
 		gtk_text_iter_forward_char(&next_iter);
 	}
 
-	while ((tag = g_queue_pop_tail(q)))
-		g_string_append(str, tag_to_html_end(GTK_TEXT_TAG(tag)));
+	while ((tagdata = g_queue_pop_tail(q))) {
+		g_string_append(str, tagdata->end);
+		text_tag_data_destroy(tagdata);
+	}
 
 	/* Bi-directional text support - close tags */
 	if (is_rtl_message)
 		g_string_append(str, "</SPAN>");
 
 	g_queue_free(q);
-	g_queue_free(r);
 	return g_string_free(str, FALSE);
 }
 
@@ -5265,7 +5465,152 @@
 	if (flags & PURPLE_CONNECTION_NO_IMAGES)
 		buttons &= ~GTK_IMHTML_IMAGE;
 
+	if (flags & PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY)
+		buttons |= GTK_IMHTML_CUSTOM_SMILEY;
+	else
+		buttons &= ~GTK_IMHTML_CUSTOM_SMILEY;
+
 	gtk_imhtml_set_format_functions(imhtml, buttons);
 }
 
-
+/*******
+ * GtkIMHtmlSmiley functions
+ *******/
+static void gtk_custom_smiley_allocated(GdkPixbufLoader *loader, gpointer user_data)
+{
+	GtkIMHtmlSmiley *smiley;
+
+	smiley = (GtkIMHtmlSmiley *)user_data;
+	smiley->icon = gdk_pixbuf_loader_get_animation(loader);
+
+	if (smiley->icon)
+		g_object_ref(G_OBJECT(smiley->icon));
+#ifdef DEBUG_CUSTOM_SMILEY
+	purple_debug_info("custom-smiley", "gtk_custom_smiley_allocated(): got GdkPixbufAnimation %p for smiley '%s'\n", smiley->icon, smiley->smile);
+#endif
+}
+
+static void gtk_custom_smiley_closed(GdkPixbufLoader *loader, gpointer user_data)
+{
+	GtkIMHtmlSmiley *smiley;
+	GtkWidget *icon = NULL;
+	GtkTextChildAnchor *anchor = NULL;
+	GSList *current = NULL;
+
+	smiley = (GtkIMHtmlSmiley *)user_data;
+	if (!smiley->imhtml) {
+#ifdef DEBUG_CUSTOM_SMILEY
+		purple_debug_error("custom-smiley", "gtk_custom_smiley_closed(): orphan smiley found: %p\n", smiley);
+#endif
+		g_object_unref(G_OBJECT(loader));
+		smiley->loader = NULL;
+		return;
+	}
+
+	for (current = smiley->anchors; current; current = g_slist_next(current)) {
+		anchor = GTK_TEXT_CHILD_ANCHOR(current->data);
+		if (gtk_text_child_anchor_get_deleted(anchor))
+			icon = NULL;
+		else
+			icon = gtk_image_new_from_animation(smiley->icon);
+
+#ifdef DEBUG_CUSTOM_SMILEY
+		purple_debug_info("custom-smiley", "gtk_custom_smiley_closed(): got GtkImage %p from GtkPixbufAnimation %p for smiley '%s'\n",
+				icon, smiley->icon, smiley->smile);
+#endif
+		if (icon) {
+			GList *wids;
+			gtk_widget_show(icon);
+
+			wids = gtk_text_child_anchor_get_widgets(anchor);
+
+			g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_plaintext", purple_unescape_html(smiley->smile), g_free);
+			g_object_set_data_full(G_OBJECT(anchor), "gtkimhtml_htmltext", g_strdup(smiley->smile), g_free);
+
+			if (smiley->imhtml) {
+				if (wids) {
+					GList *children = gtk_container_get_children(GTK_CONTAINER(wids->data));
+					g_list_foreach(children, (GFunc)gtk_widget_destroy, NULL);
+					g_list_free(children);
+					gtk_container_add(GTK_CONTAINER(wids->data), icon);
+				} else
+					gtk_text_view_add_child_at_anchor(GTK_TEXT_VIEW(smiley->imhtml), icon, anchor);
+			}
+			g_list_free(wids);
+		}
+		g_object_unref(anchor);
+	}
+
+	g_slist_free(smiley->anchors);
+	smiley->anchors = NULL;
+
+	g_object_unref(G_OBJECT(loader));
+	smiley->loader = NULL;
+}
+
+static void
+gtk_custom_smiley_size_prepared(GdkPixbufLoader *loader, gint width, gint height, gpointer data)
+{
+#define CUSTOM_SMILEY_SIZE 96	/* XXX: Should this be a theme setting? */
+	if (width <= CUSTOM_SMILEY_SIZE && height <= CUSTOM_SMILEY_SIZE)
+		return;
+
+	if (width >= height) {
+		height = height * CUSTOM_SMILEY_SIZE / width;
+		width = CUSTOM_SMILEY_SIZE;
+	} else {
+		width = width * CUSTOM_SMILEY_SIZE / height;
+		height = CUSTOM_SMILEY_SIZE;
+	}
+
+	gdk_pixbuf_loader_set_size(loader, width, height);
+}
+
+void
+gtk_imhtml_smiley_reload(GtkIMHtmlSmiley *smiley)
+{
+	if (smiley->icon)
+		g_object_unref(smiley->icon);
+	if (smiley->loader)
+		g_object_unref(smiley->loader);  /* XXX: does this crash? */
+
+	smiley->icon = NULL;
+	smiley->loader = NULL;
+
+	if (smiley->file) {
+		/* We do not use the pixbuf loader for a smiley that can be loaded
+		 * from a file. (e.g., local custom smileys)
+		 */
+		return;
+	}
+
+	smiley->loader = gdk_pixbuf_loader_new();
+
+	g_signal_connect(smiley->loader, "area_prepared", G_CALLBACK(gtk_custom_smiley_allocated), smiley);
+	g_signal_connect(smiley->loader, "closed", G_CALLBACK(gtk_custom_smiley_closed), smiley);
+	g_signal_connect(smiley->loader, "size_prepared", G_CALLBACK(gtk_custom_smiley_size_prepared), smiley);
+}
+
+GtkIMHtmlSmiley *gtk_imhtml_smiley_create(const char *file, const char *shortcut, gboolean hide,
+		GtkIMHtmlSmileyFlags flags)
+{
+	GtkIMHtmlSmiley *smiley = g_new0(GtkIMHtmlSmiley, 1);
+	smiley->file = g_strdup(file);
+	smiley->smile = g_strdup(shortcut);
+	smiley->hidden = hide;
+	smiley->flags = flags;
+	gtk_imhtml_smiley_reload(smiley);
+	return smiley;
+}
+
+void gtk_imhtml_smiley_destroy(GtkIMHtmlSmiley *smiley)
+{
+	g_free(smiley->smile);
+	g_free(smiley->file);
+	if (smiley->icon)
+		g_object_unref(smiley->icon);
+	if (smiley->loader)
+		g_object_unref(smiley->loader);
+	g_free(smiley);
+}
+
--- a/pidgin/gtkimhtml.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkimhtml.h	Thu Jun 26 09:07:56 2008 +0000
@@ -76,6 +76,8 @@
 	GTK_IMHTML_SMILEY =     1 << 11,
 	GTK_IMHTML_LINKDESC =   1 << 12,
 	GTK_IMHTML_STRIKE =     1 << 13,
+	/** Show custom smileys when appropriate. @since 2.5.0 */
+	GTK_IMHTML_CUSTOM_SMILEY = 1 << 14,
 	GTK_IMHTML_ALL =       -1
 } GtkIMHtmlButtons;
 
@@ -852,6 +854,37 @@
  */
 void gtk_imhtml_setup_entry(GtkIMHtml *imhtml, PurpleConnectionFlags flags);
 
+/**
+ * Create a new GtkIMHtmlSmiley.
+ *
+ * @param file       The image file for the smiley
+ * @param shortcut   The key shortcut for the smiley
+ * @param hide       @c TRUE if the smiley should be hidden in the smiley dialog, @c FALSE otherwise
+ * @param flags      The smiley flags
+ *
+ * @return The newly created smiley
+ * @since 2.5.0
+ */
+GtkIMHtmlSmiley *gtk_imhtml_smiley_create(const char *file, const char *shortcut, gboolean hide,
+		GtkIMHtmlSmileyFlags flags);
+
+/**
+ * Reload the image data for the smiley.
+ *
+ * @param smiley   The smiley to reload
+ *
+ * @since 2.5.0
+ */
+void gtk_imhtml_smiley_reload(GtkIMHtmlSmiley *smiley);
+
+/**
+ * Destroy a GtkIMHtmlSmiley.
+ *
+ * @param smiley   The smiley to destroy
+ *
+ * @since 2.5.0
+ */
+void gtk_imhtml_smiley_destroy(GtkIMHtmlSmiley *smiley);
 /*@}*/
 
 #ifdef __cplusplus
--- a/pidgin/gtkimhtmltoolbar.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkimhtmltoolbar.c	Thu Jun 26 09:07:56 2008 +0000
@@ -36,6 +36,7 @@
 
 #include "gtkdialogs.h"
 #include "gtkimhtmltoolbar.h"
+#include "gtksmiley.h"
 #include "gtkthemes.h"
 #include "gtkutils.h"
 
@@ -579,8 +580,7 @@
 }
 
 static gboolean
-close_smiley_dialog(GtkWidget *widget, GdkEvent *event,
-					GtkIMHtmlToolbar *toolbar)
+close_smiley_dialog(GtkIMHtmlToolbar *toolbar)
 {
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->smiley), FALSE);
 	return FALSE;
@@ -601,24 +601,30 @@
 
 	g_free(escaped_smiley);
 
-	close_smiley_dialog(NULL, NULL, toolbar);
+	close_smiley_dialog(toolbar);
 }
 
 /* smiley buttons list */
 struct smiley_button_list {
 	int width, height;
 	GtkWidget *button;
+	const GtkIMHtmlSmiley *smiley;
 	struct smiley_button_list *next;
 };
 
 static struct smiley_button_list *
-sort_smileys(struct smiley_button_list *ls, GtkIMHtmlToolbar *toolbar, int *width, char *filename, char *face)
+sort_smileys(struct smiley_button_list *ls, GtkIMHtmlToolbar *toolbar,
+			 int *width, const GtkIMHtmlSmiley *smiley)
 {
 	GtkWidget *image;
 	GtkWidget *button;
 	GtkRequisition size;
 	struct smiley_button_list *cur;
 	struct smiley_button_list *it, *it_last;
+	const gchar *filename = smiley->file;
+	gchar *face = smiley->smile;
+	PurpleSmiley *psmiley = NULL;
+	gboolean supports_custom = (gtk_imhtml_get_format_functions(GTK_IMHTML(toolbar->imhtml)) & GTK_IMHTML_CUSTOM_SMILEY);
 
 	cur = g_new0(struct smiley_button_list, 1);
 	it = ls;
@@ -626,6 +632,35 @@
 	image = gtk_image_new_from_file(filename);
 
 	gtk_widget_size_request(image, &size);
+
+	if (size.width > 24 &&
+			smiley->flags & GTK_IMHTML_SMILEY_CUSTOM) { /* This is a custom smiley, let's scale it */
+		GdkPixbuf *pixbuf = NULL;
+		GtkImageType type;
+
+		type = gtk_image_get_storage_type(GTK_IMAGE(image));
+
+		if (type == GTK_IMAGE_PIXBUF) {
+			pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(image));
+		} else if (type == GTK_IMAGE_ANIMATION) {
+			GdkPixbufAnimation *animation;
+
+			animation = gtk_image_get_animation(GTK_IMAGE(image));
+
+			pixbuf = gdk_pixbuf_animation_get_static_image(animation);
+		}
+
+		if (pixbuf != NULL) {
+			GdkPixbuf *resized;
+			resized = gdk_pixbuf_scale_simple(pixbuf, 24, 24,
+					GDK_INTERP_HYPER);
+
+			gtk_image_set_from_pixbuf(GTK_IMAGE(image), resized); /* This unrefs pixbuf */
+			gtk_widget_size_request(image, &size);
+			g_object_unref(G_OBJECT(resized));
+		}
+	}
+
 	(*width) += size.width;
 
 	button = gtk_button_new();
@@ -639,10 +674,28 @@
 	/* these look really weird with borders */
 	gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
 
+	psmiley = purple_smileys_find_by_shortcut(smiley->smile);
+	/* If this is a "non-custom" smiley, check to see if its shortcut is
+	  "shadowed" by any custom smiley. This can only happen if the connection
+	  is custom smiley-enabled */
+	if (supports_custom && psmiley && !(smiley->flags & GTK_IMHTML_SMILEY_CUSTOM)) {
+		gchar tip[128];
+		g_snprintf(tip, sizeof(tip), 
+			_("This smiley is disabled because a custom smiley exists for this shortcut:\n %s"),
+			face);
+		gtk_tooltips_set_tip(toolbar->tooltips, button, tip, NULL);
+		gtk_widget_set_sensitive(button, FALSE);
+	} else if (psmiley) {
+		/* Remove the button if the smiley is destroyed */
+		g_signal_connect_object(G_OBJECT(psmiley), "destroy", G_CALLBACK(gtk_widget_destroy),
+				button, G_CONNECT_SWAPPED);
+	}
+
 	/* set current element to add */
 	cur->height = size.height;
 	cur->width = size.width;
 	cur->button = button;
+	cur->smiley = smiley;
 	cur->next = ls;
 
 	/* check where to insert by height */
@@ -661,7 +714,7 @@
 smiley_is_unique(GSList *list, GtkIMHtmlSmiley *smiley)
 {
 	while (list) {
-		GtkIMHtmlSmiley *cur = list->data;
+		GtkIMHtmlSmiley *cur = (GtkIMHtmlSmiley *) list->data;
 		if (!strcmp(cur->file, smiley->file))
 			return FALSE;
 		list = list->next;
@@ -675,7 +728,7 @@
 	if ((event->type == GDK_KEY_PRESS && event->key.keyval == GDK_Escape) ||
 	    (event->type == GDK_BUTTON_PRESS && event->button.button == 1))
 	{
-		close_smiley_dialog(NULL, NULL, toolbar);
+		close_smiley_dialog(toolbar);
 		return TRUE;
 	}
 
@@ -683,11 +736,43 @@
 }
 
 static void
+add_smiley_list(GtkWidget *container, struct smiley_button_list *list,
+		int max_width, gboolean custom)
+{
+	GtkWidget *line;
+	int line_width = 0;
+
+	if (!list)
+		return;
+
+	line = gtk_hbox_new(FALSE, 0);
+	gtk_box_pack_start(GTK_BOX(container), line, FALSE, FALSE, 0);
+	for (; list; list = list->next) {
+		if (custom != !!(list->smiley->flags & GTK_IMHTML_SMILEY_CUSTOM))
+			continue;
+		gtk_box_pack_start(GTK_BOX(line), list->button, FALSE, FALSE, 0);
+		gtk_widget_show(list->button);
+		line_width += list->width;
+		if (line_width >= max_width) {
+			if (list->next) {
+				line = gtk_hbox_new(FALSE, 0);
+				gtk_box_pack_start(GTK_BOX(container), line, FALSE, FALSE, 0);
+			}
+			line_width = 0;
+		}
+	}
+}
+
+static void
 insert_smiley_cb(GtkWidget *smiley, GtkIMHtmlToolbar *toolbar)
 {
-	GtkWidget *dialog;
+	GtkWidget *dialog, *vbox;
 	GtkWidget *smiley_table = NULL;
 	GSList *smileys, *unique_smileys = NULL;
+	const GSList *custom_smileys = NULL;
+	gboolean supports_custom = FALSE;
+	GtkRequisition req;
+	GtkWidget *scrolled, *viewport;
 
 	if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smiley))) {
 		destroy_smiley_dialog(toolbar);
@@ -700,62 +785,81 @@
 	else
 		smileys = pidgin_themes_get_proto_smileys(NULL);
 
+	/* Note: prepend smileys to list to avoid O(n^2) overhead when there is
+	  a large number of smileys... need to revers the list after for the dialog
+	  work... */
 	while(smileys) {
-		GtkIMHtmlSmiley *smiley = smileys->data;
+		GtkIMHtmlSmiley *smiley = (GtkIMHtmlSmiley *) smileys->data;
 		if(!smiley->hidden) {
-			if(smiley_is_unique(unique_smileys, smiley))
-				unique_smileys = g_slist_append(unique_smileys, smiley);
+			if(smiley_is_unique(unique_smileys, smiley)) {
+				unique_smileys = g_slist_prepend(unique_smileys, smiley);
+			}
 		}
 		smileys = smileys->next;
 	}
+	supports_custom = (gtk_imhtml_get_format_functions(GTK_IMHTML(toolbar->imhtml)) & GTK_IMHTML_CUSTOM_SMILEY);
+	if (toolbar->imhtml && supports_custom) {
+		const GSList *iterator = NULL;
+		custom_smileys = pidgin_smileys_get_all();
+
+		for (iterator = custom_smileys ; iterator ;
+			 iterator = g_slist_next(iterator)) {
+			GtkIMHtmlSmiley *smiley = (GtkIMHtmlSmiley *) iterator->data;
+			unique_smileys = g_slist_prepend(unique_smileys, smiley);
+		}
+	}
+	
+	/* we need to reverse the list to get the smileys in the correct order */
+	unique_smileys = g_slist_reverse(unique_smileys);
 
 	dialog = pidgin_create_dialog(_("Smile!"), 0, "smiley_dialog", FALSE);
-
 	gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_MOUSE);
+	vbox = pidgin_dialog_get_vbox_with_properties(GTK_DIALOG(dialog), FALSE, 0);
 
 	if (unique_smileys != NULL) {
-		struct smiley_button_list *ls, *it, *it_tmp;
-		GtkWidget *line;
-		int line_width = 0;
-		int max_line_width, num_lines;
-		int col=0;
+		struct smiley_button_list *ls;
+		int max_line_width, num_lines, button_width = 0;
 
 		/* We use hboxes packed in a vbox */
 		ls = NULL;
-		line = gtk_hbox_new(FALSE, 0);
-		line_width = 0;
 		max_line_width = 0;
 		num_lines = floor(sqrt(g_slist_length(unique_smileys)));
 		smiley_table = gtk_vbox_new(FALSE, 0);
 
+		if (supports_custom) {
+			GtkWidget *manage = gtk_button_new_with_mnemonic(_("_Manage custom smileys"));
+			GtkRequisition req;
+			g_signal_connect(G_OBJECT(manage), "clicked",
+					G_CALLBACK(pidgin_smiley_manager_show), NULL);
+			g_signal_connect_swapped(G_OBJECT(manage), "clicked",
+					G_CALLBACK(gtk_widget_destroy), dialog);
+			gtk_box_pack_end(GTK_BOX(vbox), manage, FALSE, TRUE, 0);
+			gtk_widget_size_request(manage, &req);
+			button_width = req.width;
+		}
+
 		/* create list of smileys sorted by height */
 		while (unique_smileys) {
-			GtkIMHtmlSmiley *smiley = unique_smileys->data;
+			GtkIMHtmlSmiley *smiley = (GtkIMHtmlSmiley *) unique_smileys->data;
 			if (!smiley->hidden) {
-				ls = sort_smileys(ls, toolbar, &max_line_width, smiley->file, smiley->smile);
+				ls = sort_smileys(ls, toolbar, &max_line_width, smiley);
 			}
 			unique_smileys = g_slist_delete_link(unique_smileys, unique_smileys);
 		}
+		/* The window will be at least as wide as the 'Manage ..' button */
+		max_line_width = MAX(button_width, max_line_width / num_lines);
+
 		/* pack buttons of the list */
-		max_line_width = max_line_width / num_lines;
-		it = ls;
-		while (it != NULL)
-		{
-			it_tmp = it;
-			gtk_box_pack_start(GTK_BOX(line), it->button, FALSE, FALSE, 0);
-			gtk_widget_show(it->button);
-			line_width += it->width;
-			if (line_width >= max_line_width) {
-				gtk_box_pack_start(GTK_BOX(smiley_table), line, FALSE, FALSE, 0);
-				line = gtk_hbox_new(FALSE, 0);
-				line_width = 0;
-				col = 0;
-			}
-			col++;
-			it = it->next;
-			g_free(it_tmp);
+		add_smiley_list(smiley_table, ls, max_line_width, FALSE);
+		if (supports_custom) {
+			gtk_box_pack_start(GTK_BOX(smiley_table), gtk_hseparator_new(), TRUE, FALSE, 0);
+			add_smiley_list(smiley_table, ls, max_line_width, TRUE);
 		}
-		gtk_box_pack_start(GTK_BOX(smiley_table), line, FALSE, TRUE, 0);
+		while (ls) {
+			struct smiley_button_list *tmp = ls->next;
+			g_free(ls);
+			ls = tmp;
+		}
 
 		gtk_widget_add_events(dialog, GDK_KEY_PRESS_MASK);
 	}
@@ -765,19 +869,41 @@
 		g_signal_connect(G_OBJECT(dialog), "button-press-event", (GCallback)smiley_dialog_input_cb, toolbar);
 	}
 
-	g_signal_connect(G_OBJECT(dialog), "key-press-event", (GCallback)smiley_dialog_input_cb, toolbar);
-	gtk_container_add(GTK_CONTAINER(pidgin_dialog_get_vbox(GTK_DIALOG(dialog))), smiley_table);
+	scrolled = gtk_scrolled_window_new (NULL, NULL);
+	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scrolled), GTK_SHADOW_NONE);
+	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled),
+			GTK_POLICY_NEVER, GTK_POLICY_NEVER);
+	gtk_box_pack_start(GTK_BOX(vbox), scrolled, TRUE, TRUE, 0);
+	gtk_widget_show(scrolled);
 
+	gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled), smiley_table);
 	gtk_widget_show(smiley_table);
 
+	viewport = gtk_widget_get_parent(smiley_table);
+	gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
+
 	/* connect signals */
-	g_signal_connect(G_OBJECT(dialog), "delete_event",
-					 G_CALLBACK(close_smiley_dialog), toolbar);
+	g_signal_connect_swapped(G_OBJECT(dialog), "destroy", G_CALLBACK(close_smiley_dialog), toolbar);
+	g_signal_connect(G_OBJECT(dialog), "key-press-event", G_CALLBACK(smiley_dialog_input_cb), toolbar);
+
+	gtk_window_set_transient_for(GTK_WINDOW(dialog),
+			GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(toolbar))));
 
 	/* show everything */
 	gtk_widget_show_all(dialog);
-	gtk_window_set_transient_for(GTK_WINDOW(dialog),
-			GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(toolbar))));
+
+	gtk_widget_size_request(viewport, &req);
+	gtk_widget_set_size_request(scrolled, MIN(300, req.width), MIN(290, req.height));
+
+	/* The window has to be made resizable, and the scrollbars in the scrolled window
+	 * enabled only after setting the desired size of the window. If we do either of
+	 * these tasks before now, GTK+ miscalculates the required size, and erronously
+	 * makes one or both scrollbars visible (sometimes).
+	 * I too think this hack is gross. But I couldn't find a better way -- sadrul */
+	gtk_window_set_resizable(GTK_WINDOW(dialog), TRUE);
+	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled),
+			GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
 #ifdef _WIN32
 	winpidgin_ensure_onscreen(dialog);
 #endif
--- a/pidgin/gtkmain.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkmain.c	Thu Jun 26 09:07:56 2008 +0000
@@ -62,6 +62,7 @@
 #include "gtkroomlist.h"
 #include "gtksavedstatuses.h"
 #include "gtksession.h"
+#include "gtksmiley.h"
 #include "gtksound.h"
 #include "gtkthemes.h"
 #include "gtkutils.h"
@@ -186,7 +187,6 @@
 	switch (sig) {
 	case SIGHUP:
 		purple_debug_warning("sighandler", "Caught signal %d\n", sig);
-		purple_connections_disconnect_all();
 		break;
 	case SIGSEGV:
 		fprintf(stderr, "%s", segfault_message);
@@ -216,13 +216,7 @@
 		break;
 	default:
 		purple_debug_warning("sighandler", "Caught signal %d\n", sig);
-		purple_connections_disconnect_all();
-
-		purple_plugins_unload_all();
-
-		if (gtk_main_level())
-			gtk_main_quit();
-		exit(0);
+		purple_core_quit();
 	}
 }
 #endif
@@ -315,6 +309,7 @@
 	pidgin_roomlist_init();
 	pidgin_log_init();
 	pidgin_docklet_init();
+	pidgin_smileys_init();
 }
 
 static GHashTable *ui_info = NULL;
@@ -331,6 +326,7 @@
 	pidgin_plugins_save();
 
 	/* Uninit */
+	pidgin_smileys_uninit();
 	pidgin_conversations_uninit();
 	pidgin_status_uninit();
 	pidgin_docklet_uninit();
--- a/pidgin/gtknotify.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtknotify.c	Thu Jun 26 09:07:56 2008 +0000
@@ -596,8 +596,8 @@
 	if (!GTK_WIDGET_VISIBLE(dialog)) {
 		GdkPixbuf *pixbuf = gtk_widget_render_icon(dialog, PIDGIN_STOCK_DIALOG_MAIL,
 							   gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL), NULL);
-		char *label_text = g_strdup_printf(ngettext("<b>%d new e-mail.</b>",
-							    "<b>%d new e-mails.</b>",
+		char *label_text = g_strdup_printf(ngettext("<b>%d new email.</b>",
+							    "<b>%d new emails.</b>",
 							    mail_dialog->total_count), mail_dialog->total_count);
 		mail_dialog->in_use = TRUE;     /* So that _set_headline doesn't accidentally
 										   remove the notifications when replacing an
--- a/pidgin/gtkpounce.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkpounce.c	Thu Jun 26 09:07:56 2008 +0000
@@ -100,6 +100,7 @@
 	GtkWidget *play_sound_entry;
 	GtkWidget *play_sound_browse;
 	GtkWidget *play_sound_test;
+	GtkWidget *play_sound_reset;
 
 	GtkWidget *save_pounce;
 
@@ -166,13 +167,26 @@
 pounce_test_sound(GtkWidget *w, GtkWidget *entry)
 {
 	const char *filename;
+	gboolean temp_mute;
+
+	temp_mute = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/mute");
+
+	if (temp_mute) purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/sound/mute", FALSE);
 
 	filename = gtk_entry_get_text(GTK_ENTRY(entry));
 
-	if (filename != NULL && *filename != '\0')
+	if (filename != NULL && *filename != '\0' && strcmp(filename, _("(default)")))
 		purple_sound_play_file(filename, NULL);
 	else
 		purple_sound_play_event(PURPLE_SOUND_POUNCE_DEFAULT, NULL);
+
+	if (temp_mute) purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/sound/mute", TRUE);
+}
+
+static void
+pounce_reset_sound(GtkWidget *w, GtkWidget *entry)
+{
+	gtk_entry_set_text(GTK_ENTRY(entry), _("(default)"));
 }
 
 static void
@@ -304,7 +318,7 @@
 		message = NULL;
 	}
 	if (*command == '\0') command = NULL;
-	if (*sound   == '\0') sound   = NULL;
+	if (*sound   == '\0' || !strcmp(sound, _("(default)"))) sound   = NULL;
 
 	/* If the pounce has already been triggered, let's pretend it is a new one */
 	if (dialog->pounce != NULL
@@ -652,7 +666,7 @@
 	/* Create the "Action" frame. */
 	frame = pidgin_make_frame(vbox2, _("Action"));
 
-	table = gtk_table_new(3, 5, FALSE);
+	table = gtk_table_new(3, 6, FALSE);
 	gtk_container_add(GTK_CONTAINER(frame), table);
 	gtk_table_set_col_spacings(GTK_TABLE(table), PIDGIN_HIG_BORDER);
 	gtk_widget_show(table);
@@ -674,8 +688,11 @@
 	dialog->popup_entry       = gtk_entry_new();
 	dialog->exec_cmd_browse   = gtk_button_new_with_mnemonic(_("Brows_e..."));
 	dialog->play_sound_entry  = gtk_entry_new();
+	gtk_entry_set_text(GTK_ENTRY(dialog->play_sound_entry), _("(default)"));
+	gtk_editable_set_editable(GTK_EDITABLE(dialog->play_sound_entry), FALSE);
 	dialog->play_sound_browse = gtk_button_new_with_mnemonic(_("Br_owse..."));
 	dialog->play_sound_test   = gtk_button_new_with_mnemonic(_("Pre_view"));
+	dialog->play_sound_reset  = gtk_button_new_with_mnemonic(_("Reset"));
 
 	gtk_widget_set_sensitive(send_msg_imhtml,           FALSE);
 	gtk_widget_set_sensitive(dialog->exec_cmd_entry,    FALSE);
@@ -684,6 +701,7 @@
 	gtk_widget_set_sensitive(dialog->play_sound_entry,  FALSE);
 	gtk_widget_set_sensitive(dialog->play_sound_browse, FALSE);
 	gtk_widget_set_sensitive(dialog->play_sound_test,   FALSE);
+	gtk_widget_set_sensitive(dialog->play_sound_reset,  FALSE);
 
 	g_object_unref(sg);
 
@@ -698,6 +716,7 @@
 	gtk_size_group_add_widget(sg, dialog->play_sound_entry);
 	gtk_size_group_add_widget(sg, dialog->play_sound_browse);
 	gtk_size_group_add_widget(sg, dialog->play_sound_test);
+	gtk_size_group_add_widget(sg, dialog->play_sound_reset);
 
 	g_object_unref(sg);
 	sg = NULL;
@@ -706,11 +725,11 @@
 					 GTK_FILL, 0, 0, 0);
 	gtk_table_attach(GTK_TABLE(table), dialog->popup,            0, 1, 1, 2,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), dialog->popup_entry,      1, 4, 1, 2,
+	gtk_table_attach(GTK_TABLE(table), dialog->popup_entry,      1, 5, 1, 2,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), dialog->send_msg,         0, 4, 2, 3,
+	gtk_table_attach(GTK_TABLE(table), dialog->send_msg,         0, 5, 2, 3,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), send_msg_imhtml,          0, 4, 3, 4,
+	gtk_table_attach(GTK_TABLE(table), send_msg_imhtml,          0, 5, 3, 4,
 					 GTK_FILL, 0, 0, 0);
 	gtk_table_attach(GTK_TABLE(table), dialog->exec_cmd,         0, 1, 4, 5,
 					 GTK_FILL, 0, 0, 0);
@@ -726,6 +745,8 @@
 					 GTK_FILL | GTK_EXPAND, 0, 0, 0);
 	gtk_table_attach(GTK_TABLE(table), dialog->play_sound_test,  3, 4, 5, 6,
 					 GTK_FILL | GTK_EXPAND, 0, 0, 0);
+	gtk_table_attach(GTK_TABLE(table), dialog->play_sound_reset, 4, 5, 5, 6,
+					 GTK_FILL | GTK_EXPAND, 0, 0, 0);
 
 	gtk_table_set_row_spacings(GTK_TABLE(table), PIDGIN_HIG_BOX_SPACE / 2);
 
@@ -741,6 +762,7 @@
 	gtk_widget_show(dialog->play_sound_entry);
 	gtk_widget_show(dialog->play_sound_browse);
 	gtk_widget_show(dialog->play_sound_test);
+	gtk_widget_show(dialog->play_sound_reset);
 
 	g_signal_connect(G_OBJECT(dialog->message_recv), "clicked",
 					 G_CALLBACK(message_recv_toggle),
@@ -771,6 +793,7 @@
 	g_ptr_array_add(sound_widgets,dialog->play_sound_entry);
 	g_ptr_array_add(sound_widgets,dialog->play_sound_browse);
 	g_ptr_array_add(sound_widgets,dialog->play_sound_test);
+	g_ptr_array_add(sound_widgets,dialog->play_sound_reset);
 
 	g_signal_connect(G_OBJECT(dialog->play_sound), "clicked",
 					 G_CALLBACK(pidgin_toggle_sensitive_array),
@@ -781,6 +804,9 @@
 	g_signal_connect(G_OBJECT(dialog->play_sound_test), "clicked",
 					 G_CALLBACK(pounce_test_sound),
 					 dialog->play_sound_entry);
+	g_signal_connect(G_OBJECT(dialog->play_sound_reset), "clicked",
+					 G_CALLBACK(pounce_reset_sound),
+					 dialog->play_sound_entry);
 	g_object_set_data_full(G_OBJECT(dialog->window), "sound-widgets",
 				sound_widgets, (GDestroyNotify)g_ptr_array_free);
 
@@ -795,8 +821,6 @@
 					 G_CALLBACK(save_pounce_cb), dialog);
 	g_signal_connect(G_OBJECT(dialog->exec_cmd_entry), "activate",
 					 G_CALLBACK(save_pounce_cb), dialog);
-	g_signal_connect(G_OBJECT(dialog->play_sound_entry), "activate",
-					 G_CALLBACK(save_pounce_cb), dialog);
 
 	/* Create the "Options" frame. */
 	frame = pidgin_make_frame(vbox2, _("Options"));
@@ -924,7 +948,7 @@
 													  "play-sound",
 													  "filename")) != NULL)
 		{
-			gtk_entry_set_text(GTK_ENTRY(dialog->play_sound_entry), value);
+			gtk_entry_set_text(GTK_ENTRY(dialog->play_sound_entry), (value && *value != '\0') ? value : _("(default)"));
 		}
 	}
 	else
--- a/pidgin/gtkprefs.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkprefs.c	Thu Jun 26 09:07:56 2008 +0000
@@ -2001,18 +2001,18 @@
 	gtk_editable_set_editable(GTK_EDITABLE(sound_entry), FALSE);
 	gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, PIDGIN_HIG_BOX_SPACE);
 
-	button = gtk_button_new_with_label(_("Test"));
+	button = gtk_button_new_with_mnemonic(_("_Browse..."));
+	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_sound), NULL);
+	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
+
+	button = gtk_button_new_with_mnemonic(_("Pre_view"));
 	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(test_sound), NULL);
 	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
 
-	button = gtk_button_new_with_label(_("Reset"));
+	button = gtk_button_new_with_mnemonic(_("_Reset"));
 	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(reset_sound), NULL);
 	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
 
-	button = gtk_button_new_with_label(_("Choose..."));
-	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(select_sound), NULL);
-	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 1);
-
 	gtk_widget_show_all(ret);
 	g_object_unref(sg);
 
--- a/pidgin/gtksavedstatuses.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtksavedstatuses.c	Thu Jun 26 09:07:56 2008 +0000
@@ -59,6 +59,7 @@
 	STATUS_WINDOW_COLUMN_MESSAGE,
 	/** A hidden column containing a pointer to the editor for this saved status. */
 	STATUS_WINDOW_COLUMN_WINDOW,
+	STATUS_WINDOW_COLUMN_ICON,
 	STATUS_WINDOW_NUM_COLUMNS
 };
 
@@ -80,6 +81,7 @@
 	STATUS_EDITOR_COLUMN_STATUS_ID,
 	STATUS_EDITOR_COLUMN_STATUS_NAME,
 	STATUS_EDITOR_COLUMN_STATUS_MESSAGE,
+	STATUS_EDITOR_COLUMN_STATUS_ICON,
 	STATUS_EDITOR_NUM_COLUMNS
 };
 
@@ -392,12 +394,35 @@
     g_list_free(sel_paths);
 }
 
+static const gchar *
+get_stock_icon_from_primitive(PurpleStatusPrimitive type)
+{
+	switch (type) {
+		case PURPLE_STATUS_AVAILABLE:
+			return PIDGIN_STOCK_STATUS_AVAILABLE;
+		case PURPLE_STATUS_AWAY:
+			return PIDGIN_STOCK_STATUS_AWAY;
+		case PURPLE_STATUS_EXTENDED_AWAY:
+			return PIDGIN_STOCK_STATUS_XA;
+		case PURPLE_STATUS_INVISIBLE:
+			return PIDGIN_STOCK_STATUS_INVISIBLE;
+		case PURPLE_STATUS_OFFLINE:
+			return PIDGIN_STOCK_STATUS_OFFLINE;
+		case PURPLE_STATUS_UNAVAILABLE:
+			return PIDGIN_STOCK_STATUS_BUSY;
+		default:
+			/* this shouldn't happen */
+			return NULL;
+	}
+}
+
 static void
 add_status_to_saved_status_list(GtkListStore *model, PurpleSavedStatus *saved_status)
 {
 	GtkTreeIter iter;
 	const char *title;
 	const char *type;
+	const gchar *icon;
 	char *message;
 
 	if (purple_savedstatus_is_transient(saved_status))
@@ -406,14 +431,16 @@
 	title = purple_savedstatus_get_title(saved_status);
 	type = purple_primitive_get_name_from_type(purple_savedstatus_get_type(saved_status));
 	message = purple_markup_strip_html(purple_savedstatus_get_message(saved_status));
+	icon = get_stock_icon_from_primitive(purple_savedstatus_get_type(saved_status));
 
 	gtk_list_store_append(model, &iter);
 	gtk_list_store_set(model, &iter,
+					   STATUS_WINDOW_COLUMN_ICON, icon,
 					   STATUS_WINDOW_COLUMN_TITLE, title,
 					   STATUS_WINDOW_COLUMN_TYPE, type,
 					   STATUS_WINDOW_COLUMN_MESSAGE, message,
 					   -1);
-	free(message);
+	g_free(message);
 }
 
 static void
@@ -479,7 +506,8 @@
 									   G_TYPE_STRING,
 									   G_TYPE_STRING,
 									   G_TYPE_STRING,
-									   G_TYPE_POINTER);
+									   G_TYPE_POINTER,
+									   G_TYPE_STRING);
 
 	/* Create the treeview */
 	treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dialog->model));
@@ -517,6 +545,10 @@
 	gtk_tree_view_column_set_sort_column_id(column,
 											STATUS_WINDOW_COLUMN_TYPE);
 	gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+	renderer = gtk_cell_renderer_pixbuf_new();
+	gtk_tree_view_column_pack_start(column, renderer, TRUE);
+	gtk_tree_view_column_add_attribute(column, renderer, "stock-id",
+									   STATUS_WINDOW_COLUMN_ICON);
 	renderer = gtk_cell_renderer_text_new();
 	gtk_tree_view_column_pack_start(column, renderer, TRUE);
 	gtk_tree_view_column_add_attribute(column, renderer, "text",
@@ -717,8 +749,8 @@
 }
 
 
-static gboolean
-status_editor_destroy_cb(GtkWidget *widget, GdkEvent *event, gpointer user_data)
+static void
+status_editor_destroy_cb(GtkWidget *widget, gpointer user_data)
 {
 	StatusEditor *dialog = user_data;
 
@@ -726,19 +758,13 @@
 	g_free(dialog->original_title);
 	g_object_unref(G_OBJECT(dialog->model));
 	g_free(dialog);
-
-	return FALSE;
 }
 
 static void
 status_editor_cancel_cb(GtkButton *button, gpointer user_data)
 {
 	StatusEditor *dialog = user_data;
-
-	status_editor_remove_dialog(dialog);
 	gtk_widget_destroy(dialog->window);
-	g_free(dialog->original_title);
-	g_free(dialog);
 }
 
 static void
@@ -842,20 +868,11 @@
 	g_free(message);
 	g_free(unformatted);
 
-	status_editor_remove_dialog(dialog);
-	gtk_widget_destroy(dialog->window);
-	g_free(dialog->original_title);
-
-/*
-	if (status_window != NULL)
-	  add_status_to_saved_status_list(status_window->model, saved_status);
-*/
-
 	/* If they clicked on "Save & Use" or "Use," then activate the status */
 	if (button != dialog->save_button)
 		purple_savedstatus_activate(saved_status);
 
-	g_free(dialog);
+	gtk_widget_destroy(dialog->window);
 }
 
 static void
@@ -871,6 +888,26 @@
 }
 
 static GtkWidget *
+create_stock_item(const gchar *str, const gchar *icon)
+{
+	GtkWidget *menuitem = gtk_menu_item_new();
+	GtkWidget *label = gtk_label_new_with_mnemonic(str);
+	GtkWidget *hbox = gtk_hbox_new(FALSE, 4);
+	GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
+	GtkWidget *image = gtk_image_new_from_stock(icon, icon_size);;
+
+	gtk_widget_show(label);
+	gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
+	gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+	gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
+	gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
+
+	gtk_container_add(GTK_CONTAINER(menuitem), hbox);
+
+	return menuitem;
+}
+
+static GtkWidget *
 create_status_type_menu(PurpleStatusPrimitive type)
 {
 	int i;
@@ -889,7 +926,9 @@
 			 * status types, so don't show them in the list.
 			 */
 			continue;
-		item = gtk_menu_item_new_with_label(purple_primitive_get_name_from_type(i));
+
+		item = create_stock_item(purple_primitive_get_name_from_type(i),
+					get_stock_icon_from_primitive(i));
 		gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
 	}
 
@@ -945,6 +984,7 @@
 						   STATUS_EDITOR_COLUMN_STATUS_ID, NULL,
 						   STATUS_EDITOR_COLUMN_STATUS_NAME, NULL,
 						   STATUS_EDITOR_COLUMN_STATUS_MESSAGE, NULL,
+						   STATUS_EDITOR_COLUMN_STATUS_ICON, NULL,
 						   -1);
 	}
 }
@@ -990,6 +1030,10 @@
 	gtk_tree_view_column_set_title(column, _("Status"));
 	gtk_tree_view_insert_column(GTK_TREE_VIEW(dialog->treeview), column, -1);
 	gtk_tree_view_column_set_resizable(column, TRUE);
+	renderer = gtk_cell_renderer_pixbuf_new();
+	gtk_tree_view_column_pack_start(column, renderer, FALSE);
+	gtk_tree_view_column_add_attribute(column, renderer, "stock-id",
+			STATUS_EDITOR_COLUMN_STATUS_ICON);
 	renderer = gtk_cell_renderer_text_new();
 	gtk_tree_view_column_pack_start(column, renderer, TRUE);
 	gtk_tree_view_column_add_attribute(column, renderer, "text",
@@ -1016,6 +1060,7 @@
 {
 	GdkPixbuf *pixbuf;
 	const char *id = NULL, *name = NULL, *message = NULL;
+	PurpleStatusPrimitive prim = PURPLE_STATUS_UNSET;
 
 	pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM);
 	if ((pixbuf != NULL) && !purple_account_is_connected(account))
@@ -1030,6 +1075,7 @@
 		type = purple_savedstatus_substatus_get_type(substatus);
 		id = purple_status_type_get_id(type);
 		name = purple_status_type_get_name(type);
+		prim = purple_status_type_get_primitive(type);
 		if (purple_status_type_get_attr(type, "message"))
 			message = purple_savedstatus_substatus_get_message(substatus);
 	}
@@ -1042,6 +1088,7 @@
 			STATUS_EDITOR_COLUMN_STATUS_ID, id,
 			STATUS_EDITOR_COLUMN_STATUS_NAME, name,
 			STATUS_EDITOR_COLUMN_STATUS_MESSAGE, message,
+			STATUS_EDITOR_COLUMN_STATUS_ICON, get_stock_icon_from_primitive(prim),
 			-1);
 
 	if (pixbuf != NULL)
@@ -1133,7 +1180,7 @@
 
 	dialog->window = win = pidgin_create_dialog(_("Status"), PIDGIN_HIG_BORDER, "status", TRUE);
 
-	g_signal_connect(G_OBJECT(win), "delete_event",
+	g_signal_connect(G_OBJECT(win), "destroy",
 					 G_CALLBACK(status_editor_destroy_cb), dialog);
 
 	/* Setup the vbox */
@@ -1198,6 +1245,7 @@
 									   G_TYPE_STRING,
 									   G_TYPE_STRING,
 									   G_TYPE_STRING,
+									   G_TYPE_STRING,
 									   G_TYPE_STRING);
 
 	/* Create the treeview */
@@ -1325,25 +1373,20 @@
 	}
 }
 
-static gboolean
-substatus_editor_destroy_cb(GtkWidget *widget, GdkEvent *event, gpointer user_data)
+static void
+substatus_editor_destroy_cb(GtkWidget *widget, gpointer user_data)
 {
 	SubStatusEditor *dialog = user_data;
 
 	substatus_editor_remove_dialog(dialog);
 	g_free(dialog);
-
-	return FALSE;
 }
 
 static void
 substatus_editor_cancel_cb(GtkButton *button, gpointer user_data)
 {
 	SubStatusEditor *dialog = user_data;
-
-	substatus_editor_remove_dialog(dialog);
 	gtk_widget_destroy(dialog->window);
-	g_free(dialog);
 }
 
 
@@ -1356,12 +1399,11 @@
 	PurpleStatusType *type;
 	char *id = NULL;
 	char *message = NULL;
-	const char *name = NULL;
+	const char *name = NULL, *stock = NULL;
 
 	if (!gtk_combo_box_get_active_iter(dialog->box, &iter))
 	{
 		gtk_widget_destroy(dialog->window);
-		g_free(dialog);
 		return;
 	}
 
@@ -1372,6 +1414,7 @@
 	if (purple_status_type_get_attr(type, "message") != NULL)
 		message = gtk_imhtml_get_markup(GTK_IMHTML(dialog->message));
 	name = purple_status_type_get_name(type);
+	stock = get_stock_icon_from_primitive(purple_status_type_get_primitive(type));
 
 	status_editor = dialog->status_editor;
 
@@ -1383,13 +1426,13 @@
 						   STATUS_EDITOR_COLUMN_STATUS_NAME, name,
 						   STATUS_EDITOR_COLUMN_STATUS_MESSAGE, message,
 						   STATUS_EDITOR_COLUMN_WINDOW, NULL,
+						   STATUS_EDITOR_COLUMN_STATUS_ICON, stock,
 						   -1);
 	}
 
 	gtk_widget_destroy(dialog->window);
 	g_free(id);
 	g_free(message);
-	g_free(dialog);
 }
 
 static void
@@ -1438,7 +1481,7 @@
 	dialog->window = win = pidgin_create_dialog(tmp, PIDGIN_HIG_BORDER, "substatus", TRUE);
 	g_free(tmp);
 
-	g_signal_connect(G_OBJECT(win), "delete_event",
+	g_signal_connect(G_OBJECT(win), "destroy",
 					 G_CALLBACK(substatus_editor_destroy_cb), dialog);
 
 	/* Setup the vbox */
@@ -1679,6 +1722,96 @@
 	return currently_selected;
 }
 
+static void
+pidgin_status_menu_update_iter(GtkWidget *combobox, GtkListStore *store, GtkTreeIter *iter,
+		PurpleSavedStatus *status)
+{
+	GdkPixbuf *pixbuf;
+
+	if (store == NULL)
+		store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)));
+
+	pixbuf = pidgin_create_status_icon(purple_savedstatus_get_type(status),
+			combobox, PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
+	gtk_list_store_set(store, iter,
+			SS_MENU_TYPE_COLUMN, SS_MENU_ENTRY_TYPE_SAVEDSTATUS,
+			SS_MENU_ICON_COLUMN, pixbuf,
+			SS_MENU_TEXT_COLUMN, purple_savedstatus_get_title(status),
+			SS_MENU_DATA_COLUMN, GINT_TO_POINTER(purple_savedstatus_get_creation_time(status)),
+			SS_MENU_EMBLEM_COLUMN, GTK_STOCK_SAVE,
+			SS_MENU_EMBLEM_VISIBLE_COLUMN, TRUE,
+			-1);
+	if (pixbuf)
+		g_object_unref(G_OBJECT(pixbuf));
+}
+
+static gboolean
+pidgin_status_menu_find_iter(GtkListStore *store, GtkTreeIter *iter, PurpleSavedStatus *find)
+{
+	int type;
+	gpointer data;
+	time_t creation_time = purple_savedstatus_get_creation_time(find);
+	GtkTreeModel *model = GTK_TREE_MODEL(store);
+
+	if (!gtk_tree_model_get_iter_first(model, iter))
+		return FALSE;
+
+	do {
+		gtk_tree_model_get(model, iter,
+				SS_MENU_TYPE_COLUMN, &type,
+				SS_MENU_DATA_COLUMN, &data,
+				-1);
+		if (type == SS_MENU_ENTRY_TYPE_PRIMITIVE)
+			continue;
+		if (GPOINTER_TO_INT(data) == creation_time)
+			return TRUE;
+	} while (gtk_tree_model_iter_next(model, iter));
+
+	return FALSE;
+}
+
+static void
+savedstatus_added_cb(PurpleSavedStatus *status, GtkWidget *combobox)
+{
+	GtkListStore *store;
+	GtkTreeIter iter;
+
+	if (purple_savedstatus_is_transient(status))
+		return;
+
+	store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)));
+	gtk_list_store_append(store, &iter);
+	pidgin_status_menu_update_iter(combobox, store, &iter, status);
+}
+
+static void
+savedstatus_deleted_cb(PurpleSavedStatus *status, GtkWidget *combobox)
+{
+	GtkListStore *store;
+	GtkTreeIter iter;
+
+	if (purple_savedstatus_is_transient(status))
+		return;
+
+	store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)));
+	if (pidgin_status_menu_find_iter(store, &iter, status))
+		gtk_list_store_remove(store, &iter);
+}
+
+static void
+savedstatus_modified_cb(PurpleSavedStatus *status, GtkWidget *combobox)
+{
+	GtkListStore *store;
+	GtkTreeIter iter;
+
+	if (purple_savedstatus_is_transient(status))
+		return;
+
+	store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combobox)));
+	if (pidgin_status_menu_find_iter(store, &iter, status))
+		pidgin_status_menu_update_iter(combobox, store, &iter, status);
+}
+
 GtkWidget *pidgin_status_menu(PurpleSavedStatus *current_status, GCallback callback)
 {
 	GtkWidget *combobox;
@@ -1686,7 +1819,6 @@
 	GList *sorted, *cur;
 	int i = 0;
 	int index = -1;
-	GdkPixbuf *pixbuf;
 	GtkTreeIter iter;
 	GtkCellRenderer *text_rend;
 	GtkCellRenderer *icon_rend;
@@ -1720,18 +1852,9 @@
 		PurpleSavedStatus *status = (PurpleSavedStatus *) cur->data;
 		if (!purple_savedstatus_is_transient(status))
 		{
-			pixbuf = pidgin_create_status_icon(purple_savedstatus_get_type(status),
-							combobox, PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
 			gtk_list_store_append(model, &iter);
-			gtk_list_store_set(model, &iter,
-				SS_MENU_TYPE_COLUMN, SS_MENU_ENTRY_TYPE_SAVEDSTATUS,
-				SS_MENU_ICON_COLUMN, pixbuf,
-				SS_MENU_TEXT_COLUMN, purple_savedstatus_get_title(status),
-				SS_MENU_DATA_COLUMN, GINT_TO_POINTER(purple_savedstatus_get_creation_time(status)),
-				SS_MENU_EMBLEM_COLUMN, GTK_STOCK_SAVE,
-				SS_MENU_EMBLEM_VISIBLE_COLUMN, TRUE,
-				-1);
-			g_object_unref(G_OBJECT(pixbuf));
+
+			pidgin_status_menu_update_iter(combobox, model, &iter, status);
 
 			if (status == current_status)
 				index = i;
@@ -1756,6 +1879,17 @@
 	gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), index);
 	g_signal_connect(G_OBJECT(combobox), "changed", G_CALLBACK(status_menu_cb), callback);
 
+	/* Make sure the list is updated dynamically when a substatus is changed/deleted
+	 * or a new one is added. */
+	purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-added",
+			combobox, G_CALLBACK(savedstatus_added_cb), combobox);
+	purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-deleted",
+			combobox, G_CALLBACK(savedstatus_deleted_cb), combobox);
+	purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-modified",
+			combobox, G_CALLBACK(savedstatus_modified_cb), combobox);
+	g_signal_connect(G_OBJECT(combobox), "destroy",
+			G_CALLBACK(purple_signals_disconnect_by_handle), NULL);
+
 	return combobox;
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtksmiley.c	Thu Jun 26 09:07:56 2008 +0000
@@ -0,0 +1,721 @@
+/**
+ * @file gtksmiley.c GTK+ Smiley Manager API
+ * @ingroup pidgin
+ */
+
+/*
+ * pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+
+#include "internal.h"
+#include "pidgin.h"
+
+#include "debug.h"
+#include "notify.h"
+#include "smiley.h"
+
+#include "gtkimhtml.h"
+#include "gtksmiley.h"
+#include "gtkutils.h"
+#include "pidginstock.h"
+
+#define PIDGIN_RESPONSE_EDIT 1000
+
+struct _PidginSmiley
+{
+	PurpleSmiley *smiley;
+	GtkWidget *parent;
+	GtkWidget *smile;
+	GtkWidget *smiley_image;
+	gchar *filename;
+	GdkPixbuf *custom_pixbuf;
+};
+
+typedef struct
+{
+	GtkWidget *window;
+
+	GtkWidget *treeview;
+	GtkListStore *model;
+} SmileyManager;
+
+enum
+{
+	ICON,
+	SHORTCUT,
+	SMILEY,
+	N_COL
+};
+
+static SmileyManager *smiley_manager = NULL;
+static GSList *gtk_smileys = NULL;
+
+static void
+pidgin_smiley_destroy(PidginSmiley *smiley)
+{
+	gtk_widget_destroy(smiley->parent);
+	g_free(smiley->filename);
+	if (smiley->custom_pixbuf)
+		gdk_pixbuf_unref(smiley->custom_pixbuf);
+	g_free(smiley);
+}
+
+/******************************************************************************
+ * GtkIMHtmlSmileys stuff
+ *****************************************************************************/
+/* Perhaps these should be in gtkimhtml.c instead. -- sadrul */
+static void add_gtkimhtml_to_list(GtkIMHtmlSmiley *gtksmiley)
+{
+	gtk_smileys = g_slist_prepend(gtk_smileys, gtksmiley);
+
+	purple_debug_info("gtksmiley", "adding %s to gtk_smileys\n", gtksmiley->smile);
+}
+
+static void
+shortcut_changed_cb(PurpleSmiley *smiley, gpointer dontcare, GtkIMHtmlSmiley *gtksmiley)
+{
+	g_free(gtksmiley->smile);
+	gtksmiley->smile = g_strdup(purple_smiley_get_shortcut(smiley));
+}
+
+static void
+image_changed_cb(PurpleSmiley *smiley, gpointer dontcare, GtkIMHtmlSmiley *gtksmiley)
+{
+	const char *file;
+
+	g_free(gtksmiley->file);
+
+	file = purple_imgstore_get_filename(purple_smiley_get_stored_image(smiley));
+	gtksmiley->file = g_build_filename(purple_smileys_get_storing_dir(), file, NULL);
+	gtk_imhtml_smiley_reload(gtksmiley);
+}
+
+static GtkIMHtmlSmiley *smiley_purple_to_gtkimhtml(PurpleSmiley *smiley)
+{
+	GtkIMHtmlSmiley *gtksmiley;
+	gchar *filename;
+	const gchar *file;
+
+	file = purple_imgstore_get_filename(purple_smiley_get_stored_image(smiley));
+
+	filename = g_build_filename(purple_smileys_get_storing_dir(), file, NULL);
+
+	gtksmiley = gtk_imhtml_smiley_create(filename, purple_smiley_get_shortcut(smiley),
+			FALSE, GTK_IMHTML_SMILEY_CUSTOM);
+	g_free(filename);
+
+	/* Make sure the shortcut for the GtkIMHtmlSmiley is updated with the PurpleSmiley */
+	g_signal_connect(G_OBJECT(smiley), "notify::shortcut",
+			G_CALLBACK(shortcut_changed_cb), gtksmiley);
+
+	/* And update the pixbuf too when the image is changed */
+	g_signal_connect(G_OBJECT(smiley), "notify::image",
+			G_CALLBACK(image_changed_cb), gtksmiley);
+
+	return gtksmiley;
+}
+
+void pidgin_smiley_del_from_list(PurpleSmiley *smiley)
+{
+	GSList *list = NULL;
+	GtkIMHtmlSmiley *gtksmiley;
+
+	if (gtk_smileys == NULL)
+		return;
+
+	list = gtk_smileys;
+
+	for (; list; list = list->next) {
+		gtksmiley = (GtkIMHtmlSmiley*)list->data;
+
+		if (strcmp(gtksmiley->smile, purple_smiley_get_shortcut(smiley)))
+			continue;
+
+		gtk_imhtml_smiley_destroy(gtksmiley);
+		g_signal_handlers_disconnect_matched(G_OBJECT(smiley), G_SIGNAL_MATCH_DATA,
+				0, 0, NULL, NULL, gtksmiley);
+		break;
+	}
+
+	if (list)
+		gtk_smileys = g_slist_delete_link(gtk_smileys, list);
+}
+
+void pidgin_smiley_add_to_list(PurpleSmiley *smiley)
+{
+	GtkIMHtmlSmiley *gtksmiley;
+
+	gtksmiley = smiley_purple_to_gtkimhtml(smiley);
+	add_gtkimhtml_to_list(gtksmiley);
+	g_signal_connect(G_OBJECT(smiley), "destroy", G_CALLBACK(pidgin_smiley_del_from_list), NULL);
+}
+
+void pidgin_smileys_init(void)
+{
+	GList *smileys;
+	PurpleSmiley *smiley;
+
+	if (gtk_smileys != NULL)
+		return;
+
+	smileys = purple_smileys_get_all();
+
+	for (; smileys; smileys = g_list_delete_link(smileys, smileys)) {
+		smiley = (PurpleSmiley*)smileys->data;
+
+		pidgin_smiley_add_to_list(smiley);
+	}
+}
+
+void pidgin_smileys_uninit(void)
+{
+	GSList *list;
+	GtkIMHtmlSmiley *gtksmiley;
+
+	list = gtk_smileys;
+
+	if (list == NULL)
+		return;
+
+	for (; list; list = g_slist_delete_link(list, list)) {
+		gtksmiley = (GtkIMHtmlSmiley*)list->data;
+		gtk_imhtml_smiley_destroy(gtksmiley);
+	}
+
+	gtk_smileys = NULL;
+}
+
+GSList *pidgin_smileys_get_all(void)
+{
+	return gtk_smileys;
+}
+
+/******************************************************************************
+ * Manager stuff
+ *****************************************************************************/
+
+static void refresh_list(void);
+
+/******************************************************************************
+ * The Add dialog
+ ******************************************************************************/
+
+static void do_add(GtkWidget *widget, PidginSmiley *s)
+{
+	const gchar *entry;
+	PurpleSmiley *emoticon;
+
+	entry = gtk_entry_get_text(GTK_ENTRY(s->smile));
+	emoticon = purple_smileys_find_by_shortcut(entry);
+	if (emoticon && emoticon != s->smiley) {
+		purple_notify_error(s->parent, _("Custom Smiley"),
+				_("Duplicate Shortcut"),
+				_("A custom smiley for the selected shortcut already exists. Please specify a different shortcut."));
+		return;
+	}
+
+	if (s->smiley) {
+		if (s->filename) {
+			gchar *data = NULL;
+			size_t len;
+			GError *err = NULL;
+
+			if (!g_file_get_contents(s->filename, &data, &len, &err)) {
+				purple_debug_error("gtksmiley", "Error reading %s: %s\n",
+						s->filename, err->message);
+				g_error_free(err);
+
+				return;
+			}
+			purple_smiley_set_data(s->smiley, (guchar*)data, len);
+		}
+		purple_smiley_set_shortcut(s->smiley, entry);
+	} else {
+		if ((s->filename == NULL && s->custom_pixbuf == NULL)
+				|| *entry == 0) {
+			purple_notify_error(s->parent, _("Custom Smiley"),
+					_("More Data needed"),
+					s->filename ? _("Please provide a shortcut to associate with the smiley.")
+					: _("Please select an image for the smiley."));
+			return;
+		}
+
+		purple_debug_info("gtksmiley", "adding a new smiley\n");
+
+		if (s->filename == NULL) {
+			/* Get the smiley from the custom pixbuf */
+			gchar *buffer = NULL;
+			gsize size = 0;
+			gchar *filename;
+
+			gdk_pixbuf_save_to_bufferv(s->custom_pixbuf, &buffer, &size,
+									   "png", NULL, NULL, NULL);
+			filename = purple_util_get_image_filename(buffer, size);
+			s->filename = g_build_filename(purple_smileys_get_storing_dir(), filename, NULL);
+			purple_util_write_data_to_file_absolute(s->filename, buffer, size);
+			g_free(filename);
+			g_free(buffer);
+		}
+		emoticon = purple_smiley_new_from_file(entry, s->filename);
+		pidgin_smiley_add_to_list(emoticon);
+	}
+
+	if (smiley_manager != NULL)
+		refresh_list();
+
+	gtk_widget_destroy(s->parent);
+}
+
+static void do_add_select_cb(GtkWidget *widget, gint resp, PidginSmiley *s)
+{
+	switch (resp) {
+		case GTK_RESPONSE_ACCEPT:
+			do_add(widget, s);
+			break;
+		case GTK_RESPONSE_DELETE_EVENT:
+		case GTK_RESPONSE_CANCEL:
+			gtk_widget_destroy(s->parent);
+			break;
+		default:
+			purple_debug_error("gtksmiley", "no valid response\n");
+			break;
+	}
+}
+
+static void do_add_file_cb(const char *filename, gpointer data)
+{
+	PidginSmiley *s = data;
+	GdkPixbuf *pixbuf;
+
+	if (!filename)
+		return;
+
+	g_free(s->filename);
+	s->filename = g_strdup(filename);
+	pixbuf = gdk_pixbuf_new_from_file_at_scale(filename, 64, 64, FALSE, NULL);
+	gtk_image_set_from_pixbuf(GTK_IMAGE(s->smiley_image), pixbuf);
+	if (pixbuf)
+		gdk_pixbuf_unref(pixbuf);
+	gtk_widget_grab_focus(s->smile);
+}
+
+static void
+open_image_selector(GtkWidget *widget, PidginSmiley *psmiley)
+{
+	GtkWidget *file_chooser;
+	file_chooser = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(widget)),
+			do_add_file_cb, psmiley);
+	gtk_window_set_title(GTK_WINDOW(file_chooser), _("Custom Smiley"));
+	gtk_window_set_role(GTK_WINDOW(file_chooser), "file-selector-custom-smiley");
+	gtk_widget_show_all(file_chooser);
+}
+
+PidginSmiley *
+pidgin_smiley_edit(GtkWidget *widget, PurpleSmiley *smiley)
+{
+	GtkWidget *vbox;
+	GtkWidget *hbox;
+	GtkWidget *label;
+	GtkWidget *filech;
+	GtkWidget *window;
+	GdkPixbuf *pixbuf = NULL;
+	PurpleStoredImage *stored_img;
+
+	PidginSmiley *s = g_new0(PidginSmiley, 1);
+	s->smiley = smiley;
+
+	window = gtk_dialog_new_with_buttons(smiley ? _("Edit Smiley") : _("Add Smiley"),
+			widget ? GTK_WINDOW(widget) : NULL,
+			GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR,
+			GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,							 
+			smiley ? GTK_STOCK_SAVE : GTK_STOCK_ADD, GTK_RESPONSE_ACCEPT,
+			NULL);
+	s->parent = window;
+
+	gtk_container_set_border_width(GTK_CONTAINER(window), PIDGIN_HIG_BORDER);
+
+	g_signal_connect(window, "response", G_CALLBACK(do_add_select_cb), s);
+
+	/* The vbox */
+	vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
+	gtk_container_add(GTK_CONTAINER(GTK_DIALOG(window)->vbox), vbox);
+	gtk_widget_show(vbox);
+
+	/* The hbox */
+	hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
+	gtk_container_add(GTK_CONTAINER(GTK_VBOX(vbox)), hbox);
+
+	label = gtk_label_new_with_mnemonic(_("Smiley _Image"));
+	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+	gtk_widget_show(label);
+
+	filech = gtk_button_new();
+	gtk_box_pack_end(GTK_BOX(hbox), filech, FALSE, FALSE, 0);
+	pidgin_set_accessible_label(filech, label);
+
+	s->smiley_image = gtk_image_new();
+	gtk_container_add(GTK_CONTAINER(filech), s->smiley_image);
+	if (smiley && (stored_img = purple_smiley_get_stored_image(smiley))) {
+		pixbuf = pidgin_pixbuf_from_imgstore(stored_img);
+		purple_imgstore_unref(stored_img);
+	} else {
+		GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL);
+		pixbuf = gtk_widget_render_icon(window, PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR,
+				icon_size, "PidginSmiley");
+	}
+
+	gtk_image_set_from_pixbuf(GTK_IMAGE(s->smiley_image), pixbuf);
+	if (pixbuf != NULL)
+		g_object_unref(G_OBJECT(pixbuf));
+	g_signal_connect(G_OBJECT(filech), "clicked", G_CALLBACK(open_image_selector), s);
+
+	gtk_widget_show_all(hbox);
+
+	/* info */
+	hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BORDER);
+	gtk_container_add(GTK_CONTAINER(GTK_VBOX(vbox)),hbox);
+
+	/* Smiley shortcut */
+	label = gtk_label_new_with_mnemonic(_("Smiley S_hortcut"));
+	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+	gtk_widget_show(label);
+
+	s->smile = gtk_entry_new();
+	gtk_entry_set_activates_default(GTK_ENTRY(s->smile), TRUE);
+	pidgin_set_accessible_label(s->smile, label);
+	if (smiley)
+		gtk_entry_set_text(GTK_ENTRY(s->smile), purple_smiley_get_shortcut(smiley));
+
+	g_signal_connect(s->smile, "activate", G_CALLBACK(do_add), s);
+
+	gtk_box_pack_end(GTK_BOX(hbox), s->smile, FALSE, FALSE, 0);
+	gtk_widget_show(s->smile);
+
+	gtk_widget_show(hbox);
+
+	gtk_widget_show(GTK_WIDGET(window));
+	g_signal_connect_swapped(G_OBJECT(window), "destroy", G_CALLBACK(pidgin_smiley_destroy), s);
+	g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(purple_notify_close_with_handle), s);
+
+	return s;
+}
+
+void
+pidgin_smiley_editor_set_shortcut(PidginSmiley *editor, const gchar *shortcut)
+{
+	gtk_entry_set_text(GTK_ENTRY(editor->smile), shortcut ? shortcut : "");
+}
+
+void
+pidgin_smiley_editor_set_image(PidginSmiley *editor, GdkPixbuf *image)
+{
+	if (editor->custom_pixbuf)
+		gdk_pixbuf_unref(editor->custom_pixbuf);
+	editor->custom_pixbuf = image ? gdk_pixbuf_ref(image) : NULL;
+	if (image)
+		gtk_image_set_from_pixbuf(GTK_IMAGE(editor->smiley_image), image);
+}
+
+/******************************************************************************
+ * Delete smiley
+ *****************************************************************************/
+static void delete_foreach(GtkTreeModel *model, GtkTreePath *path,
+		GtkTreeIter *iter, gpointer data)
+{
+	PurpleSmiley *smiley = NULL;
+	SmileyManager *dialog;
+
+	dialog = (SmileyManager*)data;
+
+	gtk_tree_model_get(model, iter,
+			SMILEY, &smiley,
+			-1);
+
+	if(smiley != NULL) {
+		g_object_unref(G_OBJECT(smiley));
+		pidgin_smiley_del_from_list(smiley);
+		purple_smiley_delete(smiley);
+	}
+}
+
+static void append_to_list(GtkTreeModel *model, GtkTreePath *path,
+		GtkTreeIter *iter, gpointer data)
+{
+	GList **list = data;
+	*list = g_list_prepend(*list, gtk_tree_path_copy(path));
+}
+
+static void smiley_delete(SmileyManager *dialog)
+{
+	GtkTreeSelection *selection;
+	GList *list = NULL;
+
+	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
+	gtk_tree_selection_selected_foreach(selection, delete_foreach, dialog);
+	gtk_tree_selection_selected_foreach(selection, append_to_list, &list);
+
+	while (list) {
+		GtkTreeIter iter;
+		if (gtk_tree_model_get_iter(GTK_TREE_MODEL(dialog->model), &iter, list->data))
+			gtk_list_store_remove(GTK_LIST_STORE(dialog->model), &iter);
+		gtk_tree_path_free(list->data);
+		list = g_list_delete_link(list, list);
+	}
+}
+/******************************************************************************
+ * The Smiley Manager
+ *****************************************************************************/
+static void add_columns(GtkWidget *treeview, SmileyManager *dialog)
+{
+	GtkCellRenderer *rend;
+	GtkTreeViewColumn *column;
+
+	/* Icon */
+	column = gtk_tree_view_column_new();
+	gtk_tree_view_column_set_title(column, _("Smiley"));
+	gtk_tree_view_column_set_resizable(column, TRUE);
+	gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+
+	rend = gtk_cell_renderer_pixbuf_new();
+	gtk_tree_view_column_pack_start(column, rend, FALSE);
+	gtk_tree_view_column_add_attribute(column, rend, "pixbuf", ICON);
+
+	/* Shortcut */
+	column = gtk_tree_view_column_new();
+	gtk_tree_view_column_set_title(column, _("Shortcut"));
+	gtk_tree_view_column_set_resizable(column, TRUE);
+	gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+
+	rend = gtk_cell_renderer_text_new();
+	gtk_tree_view_column_pack_start(column, rend, TRUE);
+	gtk_tree_view_column_add_attribute(column, rend, "text", SHORTCUT);
+}
+
+static void store_smiley_add(PurpleSmiley *smiley)
+{
+	GtkTreeIter iter;
+	PurpleStoredImage *img;
+	GdkPixbuf *sized_smiley = NULL;
+
+	if (smiley_manager == NULL)
+		return;
+
+	img = purple_smiley_get_stored_image(smiley);
+
+	if (img != NULL) {
+		GdkPixbuf *smiley_image = pidgin_pixbuf_from_imgstore(img);
+		purple_imgstore_unref(img);
+
+		if (smiley_image != NULL)
+			sized_smiley = gdk_pixbuf_scale_simple(smiley_image,
+					22, 22, GDK_INTERP_HYPER);
+		g_object_unref(G_OBJECT(smiley_image));
+	}
+
+
+	gtk_list_store_append(smiley_manager->model, &iter);
+
+	gtk_list_store_set(smiley_manager->model, &iter,
+			ICON, sized_smiley,
+			SHORTCUT, purple_smiley_get_shortcut(smiley),
+			SMILEY, smiley,
+			-1);
+
+	if (sized_smiley != NULL)
+		g_object_unref(G_OBJECT(sized_smiley));
+}
+
+static void populate_smiley_list(SmileyManager *dialog)
+{
+	GList *list;
+	PurpleSmiley *emoticon;
+
+	gtk_list_store_clear(dialog->model);
+
+	for(list = purple_smileys_get_all(); list != NULL;
+			list = g_list_delete_link(list, list)) {
+		emoticon = (PurpleSmiley*)list->data;
+
+		store_smiley_add(emoticon);
+	}
+}
+
+static void smile_selected_cb(GtkTreeSelection *sel, SmileyManager *dialog)
+{
+	gint selected;
+
+	selected = gtk_tree_selection_count_selected_rows(sel);
+
+	gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog->window),
+			GTK_RESPONSE_NO, selected > 0);
+
+	gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog->window),
+			PIDGIN_RESPONSE_EDIT, selected > 0);
+}
+
+static void
+smiley_edit_iter(SmileyManager *dialog, GtkTreeIter *iter)
+{
+	PurpleSmiley *smiley = NULL;
+	gtk_tree_model_get(GTK_TREE_MODEL(dialog->model), iter, SMILEY, &smiley, -1);
+	pidgin_smiley_edit(gtk_widget_get_toplevel(GTK_WIDGET(dialog->treeview)), smiley);
+	g_object_unref(G_OBJECT(smiley));
+}
+
+static void smiley_edit_cb(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data)
+{
+	GtkTreeIter iter;
+	SmileyManager *dialog = data;
+
+	gtk_tree_model_get_iter(GTK_TREE_MODEL(dialog->model), &iter, path);
+	smiley_edit_iter(dialog, &iter);
+}
+
+static void
+edit_selected_cb(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
+{
+	smiley_edit_iter(data, iter);
+}
+
+static GtkWidget *smiley_list_create(SmileyManager *dialog)
+{
+	GtkWidget *sw;
+	GtkWidget *treeview;
+	GtkTreeSelection *sel;
+
+	sw = gtk_scrolled_window_new(NULL, NULL);
+	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
+			GTK_POLICY_AUTOMATIC,
+			GTK_POLICY_AUTOMATIC);
+	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
+			GTK_SHADOW_IN);
+	gtk_widget_show(sw);
+
+	/* Create the list model */
+	dialog->model = gtk_list_store_new(N_COL,
+			GDK_TYPE_PIXBUF,	/* ICON */
+			G_TYPE_STRING,		/* SHORTCUT */
+			G_TYPE_OBJECT		/* SMILEY */
+			);
+
+	/* the actual treeview */
+	treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(dialog->model));
+	dialog->treeview = treeview;
+	gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE);
+	gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(dialog->model), SHORTCUT, GTK_SORT_ASCENDING);
+	g_object_unref(G_OBJECT(dialog->model));
+
+	sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+	gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE);
+	gtk_container_add(GTK_CONTAINER(sw), treeview);
+
+	g_signal_connect(G_OBJECT(sel), "changed", G_CALLBACK(smile_selected_cb), dialog);
+	g_signal_connect(G_OBJECT(treeview), "row_activated", G_CALLBACK(smiley_edit_cb), dialog);
+
+	gtk_widget_show(treeview);
+
+	add_columns(treeview, dialog);
+	populate_smiley_list(dialog);
+
+	return sw;
+}
+
+static void refresh_list()
+{
+	populate_smiley_list(smiley_manager);
+}
+
+static void smiley_manager_select_cb(GtkWidget *widget, gint resp, SmileyManager *dialog)
+{
+	GtkTreeSelection *selection = NULL;
+
+	switch (resp) {
+		case GTK_RESPONSE_YES:
+			pidgin_smiley_edit(dialog->window, NULL);
+			break;
+		case GTK_RESPONSE_NO:
+			smiley_delete(dialog);
+			break;
+		case GTK_RESPONSE_DELETE_EVENT:
+		case GTK_RESPONSE_CLOSE:
+			gtk_widget_destroy(dialog->window);
+			g_free(smiley_manager);
+			smiley_manager = NULL;
+			break;
+		case PIDGIN_RESPONSE_EDIT:
+			/* Find smiley of selection... */
+			selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(dialog->treeview));
+			gtk_tree_selection_selected_foreach(selection, edit_selected_cb, dialog);
+			break;
+		default:
+			purple_debug_info("gtksmiley", "No valid selection\n");
+			break;
+	}
+}
+
+void pidgin_smiley_manager_show(void)
+{
+	SmileyManager *dialog;
+	GtkWidget *win;
+	GtkWidget *sw;
+	GtkWidget *vbox;
+
+	if (smiley_manager) {
+		gtk_window_present(GTK_WINDOW(smiley_manager->window));
+		return;
+	}
+
+	dialog = g_new0(SmileyManager, 1);
+	smiley_manager = dialog;
+
+	dialog->window = win = gtk_dialog_new_with_buttons(
+			_("Custom Smiley Manager"),
+			NULL,
+			GTK_DIALOG_DESTROY_WITH_PARENT,
+			GTK_STOCK_ADD, GTK_RESPONSE_YES,
+			GTK_STOCK_EDIT, PIDGIN_RESPONSE_EDIT,
+			GTK_STOCK_DELETE, GTK_RESPONSE_NO,
+			GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
+			NULL);
+
+	gtk_window_set_default_size(GTK_WINDOW(win), 50, 400);
+	gtk_window_set_role(GTK_WINDOW(win), "custom_smiley_manager");
+	gtk_container_set_border_width(GTK_CONTAINER(win),PIDGIN_HIG_BORDER);
+	gtk_dialog_set_response_sensitive(GTK_DIALOG(win), GTK_RESPONSE_NO, FALSE);
+	gtk_dialog_set_response_sensitive(GTK_DIALOG(win), PIDGIN_RESPONSE_EDIT,
+									  FALSE);
+
+	g_signal_connect(win, "response", G_CALLBACK(smiley_manager_select_cb),
+			dialog);
+
+	/* The vbox */
+	vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BORDER);
+	gtk_container_add(GTK_CONTAINER(GTK_DIALOG(win)->vbox), vbox);
+	gtk_widget_show(vbox);
+
+	/* get the scrolled window with all stuff */
+	sw = smiley_list_create(dialog);
+	gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
+	gtk_widget_show(sw);
+
+	gtk_widget_show(win);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtksmiley.h	Thu Jun 26 09:07:56 2008 +0000
@@ -0,0 +1,103 @@
+/**
+ * @file gtksmiley.h GTK+ Custom Smiley API
+ * @ingroup pidgin
+ * @since 2.5.0
+ */
+
+/* pidgin
+ *
+ * Pidgin is the legal property of its developers, whose names are too numerous
+ * to list here.  Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ */
+
+#ifndef _PIDGIN_GTKSMILEY_H_
+#define _PIDGIN_GTKSMILEY_H_
+
+#include "smiley.h"
+
+typedef struct _PidginSmiley PidginSmiley;
+
+/**
+ * Add a PurpleSmiley to the GtkIMHtmlSmiley's list to be able to use it
+ * in pidgin
+ *
+ * @param smiley	The smiley to be added.
+ */
+void pidgin_smiley_add_to_list(PurpleSmiley *smiley);
+
+/**
+ * Delete a PurpleSmiley from the GtkIMHtmlSmiley's list
+ *
+ * @param smiley	The smiley to be deleted.
+ */
+void pidgin_smiley_del_from_list(PurpleSmiley *smiley);
+
+/**
+ * Load the GtkIMHtml list
+ */
+void pidgin_smileys_init(void);
+
+/**
+ * Uninit the GtkIMHtml list
+ */
+void pidgin_smileys_uninit(void);
+
+/**
+ * Returns a GSList with the GtkIMHtmlSmiley of each custom smiley
+ *
+ * @constreturn A GtkIMHmlSmiley list
+ */
+GSList* pidgin_smileys_get_all(void);
+
+/******************************************************************************
+ * Smiley Manager
+ *****************************************************************************/
+/**
+ * Displays the Smiley Manager Window
+ */
+void pidgin_smiley_manager_show(void);
+
+/**
+ * Shows an editor for a smiley.
+ *
+ * @param widget The parent widget to be linked or @c NULL
+ * @param smiley The PurpleSmiley to be edited, or @c NULL for a new smiley
+ * @return The smiley add dialog
+ *
+ * @see pidgin_smiley_editor_set_shortcut
+ * @see pidgin_smiley_editor_set_image
+ */
+PidginSmiley *pidgin_smiley_edit(GtkWidget *widget, PurpleSmiley *smiley);
+
+/**
+ * Set the shortcut in a smiley add dialog
+ *
+ * @param editor A smiley editor dialog (created by pidgin_smiley_edit)
+ * @param shortcut The shortcut to set
+ */
+void pidgin_smiley_editor_set_shortcut(PidginSmiley *editor, const gchar *shortcut);
+
+/**
+ * Set the image in a smiley add dialog
+ *
+ * @param editor A smiley editor dialog
+ * @param image A GdkPixbuf image
+ */
+void pidgin_smiley_editor_set_image(PidginSmiley *editor, GdkPixbuf *image);
+
+#endif /* _PIDGIN_GTKSMILEY_H_*/
--- a/pidgin/gtksound.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtksound.c	Thu Jun 26 09:07:56 2008 +0000
@@ -488,29 +488,13 @@
 		return;
 	volume = (float)(CLAMP(purple_prefs_get_int(PIDGIN_PREFS_ROOT "/sound/volume"),0,100)) / 50;
 	if (!strcmp(method, "automatic")) {
-		if (purple_running_gnome()) {
-			sink = gst_element_factory_make("gconfaudiosink", "sink");
-		}
-		if (!sink)
-			sink = gst_element_factory_make("autoaudiosink", "sink");
-		if (!sink) {
-			purple_debug_error("sound", "Unable to create GStreamer audiosink.\n");
-			return;
-		}
+		sink = gst_element_factory_make("gconfaudiosink", "sink");
 	}
 #ifndef _WIN32
 	else if (!strcmp(method, "esd")) {
 		sink = gst_element_factory_make("esdsink", "sink");
-		if (!sink) {
-			purple_debug_error("sound", "Unable to create GStreamer audiosink.\n");
-			return;
-		}
 	} else if (!strcmp(method, "alsa")) {
 		sink = gst_element_factory_make("alsasink", "sink");
-		if (!sink) {
-			purple_debug_error("sound", "Unable to create GStreamer audiosink.\n");
-			return;
-		}
 	}
 #endif
 	else {
@@ -518,6 +502,11 @@
 		return;
 	}
 
+	if (strcmp(method, "automatic") != 0 && !sink) {
+		purple_debug_error("sound", "Unable to create GStreamer audiosink.\n");
+		return;
+	}
+
 	play = gst_element_factory_make("playbin", "play");
 
 	if (play == NULL) {
--- a/pidgin/gtkstatusbox.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkstatusbox.c	Thu Jun 26 09:07:56 2008 +0000
@@ -209,7 +209,8 @@
 	for (l = purple_account_get_status_types(account); l != NULL; l = l->next) {
 		PurpleStatusType *status_type = (PurpleStatusType *)l->data;
 
-		if (!purple_status_type_is_user_settable(status_type))
+		if (!purple_status_type_is_user_settable(status_type) ||
+				purple_status_type_is_independent(status_type))
 			continue;
 		status_no++;
 		if (statustype == status_type)
@@ -769,7 +770,8 @@
 
 	for (i = 0; l; l = l->next) {
 		PurpleStatusType *status_type = l->data;
-		if (!purple_status_type_is_user_settable(status_type))
+		if (!purple_status_type_is_user_settable(status_type) ||
+				purple_status_type_is_independent(status_type))
 			continue;
 
 		if (active == i)
@@ -1030,12 +1032,13 @@
 		PurpleStatusType *status_type = (PurpleStatusType *)l->data;
 		PurpleStatusPrimitive prim;
 
-		if (!purple_status_type_is_user_settable(status_type))
+		if (!purple_status_type_is_user_settable(status_type) ||
+				purple_status_type_is_independent(status_type))
 			continue;
 
-            	prim = purple_status_type_get_primitive(status_type);
-
-                pixbuf = pidgin_status_box_get_pixbuf(status_box, prim);
+		prim = purple_status_type_get_primitive(status_type);
+
+		pixbuf = pidgin_status_box_get_pixbuf(status_box, prim);
 
 		pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box),
 					PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, pixbuf,
@@ -1706,6 +1709,48 @@
 }
 
 static void
+treeview_cursor_changed_cb(GtkTreeView *treeview, gpointer data)
+{
+	GtkTreeSelection *sel = gtk_tree_view_get_selection (treeview);
+	GtkTreeModel *model = GTK_TREE_MODEL (data);
+	GtkTreeIter iter;
+	GtkTreePath *cursor;
+	GtkTreePath *selection;
+	gint cmp;
+
+	if (gtk_tree_selection_get_selected (sel, NULL, &iter)) {
+		if ((selection = gtk_tree_model_get_path (model, &iter)) == NULL) {
+			/* Shouldn't happen, but ignore anyway */
+			return;
+		}
+	} else {
+		/* I don't think this can happen, but we'll just ignore it */
+		return;
+	}
+
+	gtk_tree_view_get_cursor (treeview, &cursor, NULL);
+	if (cursor == NULL) {
+		/* Probably won't happen in a 'cursor-changed' event? */
+		gtk_tree_path_free (selection);
+		return;
+	}
+
+	cmp = gtk_tree_path_compare (cursor, selection);
+	if (cmp < 0) {
+		/* The cursor moved up without moving the selection, so move it up again */
+		gtk_tree_path_prev (cursor);
+		gtk_tree_view_set_cursor (treeview, cursor, NULL, FALSE);
+	} else if (cmp > 0) {
+		/* The cursor moved down without moving the selection, so move it down again */
+		gtk_tree_path_next (cursor);
+		gtk_tree_view_set_cursor (treeview, cursor, NULL, FALSE);
+	}
+
+	gtk_tree_path_free (selection);
+	gtk_tree_path_free (cursor);
+}
+
+static void
 pidgin_status_box_init (PidginStatusBox *status_box)
 {
 	GtkCellRenderer *text_rend;
@@ -1869,6 +1914,8 @@
 					G_CALLBACK(imhtml_scroll_event_cb), status_box->imhtml);
 	g_signal_connect(G_OBJECT(status_box->popup_window), "button_release_event", G_CALLBACK(treeview_button_release_cb), status_box);
 	g_signal_connect(G_OBJECT(status_box->popup_window), "key_press_event", G_CALLBACK(treeview_key_press_event), status_box);
+	g_signal_connect(G_OBJECT(status_box->tree_view), "cursor-changed",
+					 G_CALLBACK(treeview_cursor_changed_cb), status_box->dropdown_store);
 
 #if GTK_CHECK_VERSION(2,6,0)
 	gtk_tree_view_set_row_separator_func(GTK_TREE_VIEW(status_box->tree_view), dropdown_store_row_separator_func, NULL, NULL);
--- a/pidgin/gtkthemes.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkthemes.c	Thu Jun 26 09:07:56 2008 +0000
@@ -31,6 +31,7 @@
 #include "gtkconv.h"
 #include "gtkdialogs.h"
 #include "gtkimhtml.h"
+#include "gtksmiley.h"
 #include "gtkthemes.h"
 
 GSList *smiley_themes = NULL;
@@ -119,7 +120,7 @@
 	g_free(theme_dir);
 }
 
-void pidgin_themes_smiley_themeize(GtkWidget *imhtml)
+static void _pidgin_themes_smiley_themeize(GtkWidget *imhtml, gboolean custom)
 {
 	struct smiley_list *list;
 	if (!current_smiley_theme)
@@ -134,10 +135,30 @@
 			gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), sml, icons->data);
 			icons = icons->next;
 		}
+
+		if (custom == TRUE) {
+			icons = pidgin_smileys_get_all();
+
+			while (icons) {
+				gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), sml, icons->data);
+				icons = icons->next;
+			}
+		}
+
 		list = list->next;
 	}
 }
 
+void pidgin_themes_smiley_themeize(GtkWidget *imhtml)
+{
+	_pidgin_themes_smiley_themeize(imhtml, FALSE);
+}
+
+void pidgin_themes_smiley_themeize_custom(GtkWidget *imhtml)
+{
+	_pidgin_themes_smiley_themeize(imhtml, TRUE);
+}
+
 static void
 pidgin_themes_destroy_smiley_theme_smileys(struct smiley_theme *theme)
 {
@@ -274,7 +295,6 @@
 		} else if (load && list) {
 			gboolean hidden = FALSE;
 			char *sfile = NULL;
-			gboolean have_used_sfile = FALSE;
 
 			if (*i == '!' && *(i + 1) == ' ') {
 				hidden = TRUE;
@@ -288,17 +308,12 @@
 						i++;
 					l[li++] = *(i++);
 				}
+				l[li] = 0;
 				if (!sfile) {
-					l[li] = 0;
 					sfile = g_build_filename(dirname, l, NULL);
 				} else {
-					GtkIMHtmlSmiley *smiley = g_new0(GtkIMHtmlSmiley, 1);
-					l[li] = 0;
-					smiley->file = sfile;
-					smiley->smile = g_strdup(l);
-					smiley->hidden = hidden;
+					GtkIMHtmlSmiley *smiley = gtk_imhtml_smiley_create(sfile, l, hidden, 0);
 					list->smileys = g_slist_prepend(list->smileys, smiley);
-					have_used_sfile = TRUE;
 				}
 				while (isspace(*i))
 					i++;
@@ -306,8 +321,7 @@
 			}
 
 
-			if (!have_used_sfile)
-				g_free(sfile);
+			g_free(sfile);
 		}
 	}
 
@@ -340,8 +354,9 @@
 			PurpleConversation *conv = cnv->data;
 
 			if (PIDGIN_IS_PIDGIN_CONVERSATION(conv)) {
+				/* We want to see our custom smileys on our entry if we write the shortcut */
 				pidgin_themes_smiley_themeize(PIDGIN_CONVERSATION(conv)->imhtml);
-				pidgin_themes_smiley_themeize(PIDGIN_CONVERSATION(conv)->entry);
+				pidgin_themes_smiley_themeize_custom(PIDGIN_CONVERSATION(conv)->entry);
 			}
 		}
 	}
--- a/pidgin/gtkthemes.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkthemes.h	Thu Jun 26 09:07:56 2008 +0000
@@ -51,6 +51,11 @@
 
 void pidgin_themes_smiley_themeize(GtkWidget *);
 
+/**
+ * @since 2.5.0
+ */
+void pidgin_themes_smiley_themeize_custom(GtkWidget *);
+
 void pidgin_themes_smiley_theme_probe(void);
 
 void pidgin_themes_load_smiley_theme(const char *file, gboolean load);
--- a/pidgin/gtkutils.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkutils.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1001,13 +1001,14 @@
 	}
 
 	prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(conn->prpl);
+	if (prpl_info != NULL && prpl_info->get_cb_real_name)
+		who = prpl_info->get_cb_real_name(conn, chat, name);
 	if (prpl_info == NULL || prpl_info->get_cb_info == NULL) {
-		pidgin_retrieve_user_info(conn, name);
+		pidgin_retrieve_user_info(conn, who ? who : name);
+		g_free(who);
 		return;
 	}
 
-	if (prpl_info->get_cb_real_name)
-		who = prpl_info->get_cb_real_name(conn, chat, name);
 	show_retrieveing_info(conn, who ? who : name);
 	prpl_info->get_cb_info(conn, chat, name);
 	g_free(who);
@@ -1436,7 +1437,7 @@
 
 static void dnd_image_ok_callback(_DndData *data, int choice)
 {
-	char *filedata;
+	gchar *filedata;
 	size_t size;
 	struct stat st;
 	GError *err = NULL;
@@ -1444,6 +1445,8 @@
 	PidginConversation *gtkconv;
 	GtkTextIter iter;
 	int id;
+	PurpleBuddy *buddy;
+	PurpleContact *contact;
 	switch (choice) {
 	case DND_BUDDY_ICON:
 		if (g_stat(data->filename, &st)) {
@@ -1459,7 +1462,13 @@
 			return;
 		}
 
-		pidgin_set_custom_buddy_icon(data->account, data->who, data->filename);
+		buddy = purple_find_buddy(data->account, data->who);
+		if (!buddy) {
+			purple_debug_info("custom-icon", "You can only set custom icons for people on your buddylist.\n");
+			break;
+		}
+		contact = purple_buddy_get_contact(buddy);
+		purple_buddy_icons_node_set_custom_icon_from_file((PurpleBlistNode*)contact, data->filename);
 		break;
 	case DND_FILE_TRANSFER:
 		serv_send_file(purple_account_get_connection(data->account), data->who, data->filename);
@@ -2869,12 +2878,11 @@
 }
 #endif /* ! Gtk 2.6.0 */
 
+#ifndef PURPLE_DISABLE_DEPRECATED
 void pidgin_set_custom_buddy_icon(PurpleAccount *account, const char *who, const char *filename)
 {
 	PurpleBuddy *buddy;
 	PurpleContact *contact;
-	gpointer data = NULL;
-	size_t len = 0;
 
 	buddy = purple_find_buddy(account, who);
 	if (!buddy) {
@@ -2883,20 +2891,9 @@
 	}
 
 	contact = purple_buddy_get_contact(buddy);
-
-	if (filename) {
-		const char *prpl_id = purple_account_get_protocol_id(account);
-		PurplePlugin *prpl = purple_find_prpl(prpl_id);
-
-		data = pidgin_convert_buddy_icon(prpl, filename, &len);
-
-		/* We don't want to delete the old icon if the new one didn't load. */
-		if (data == NULL)
-			return;
-	}
-
-	purple_buddy_icons_set_custom_icon(contact, data, len);
+	purple_buddy_icons_node_set_custom_icon_from_file((PurpleBlistNode*)contact, filename);
 }
+#endif
 
 char *pidgin_make_pretty_arrows(const char *str)
 {
@@ -3469,3 +3466,17 @@
 #endif
 }
 
+GdkPixbuf * pidgin_pixbuf_from_imgstore(PurpleStoredImage *image)
+{
+	GdkPixbuf *pixbuf;
+	GdkPixbufLoader *loader = gdk_pixbuf_loader_new();
+	gdk_pixbuf_loader_write(loader, purple_imgstore_get_data(image),
+			purple_imgstore_get_size(image), NULL);
+	gdk_pixbuf_loader_close(loader, NULL);
+	pixbuf = gdk_pixbuf_loader_get_pixbuf(loader);
+	if (pixbuf)
+		g_object_ref(pixbuf);
+	g_object_unref(loader);
+	return pixbuf;
+}
+
--- a/pidgin/gtkutils.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/gtkutils.h	Thu Jun 26 09:07:56 2008 +0000
@@ -638,6 +638,7 @@
 											 GError **error);
 #endif
 
+#ifndef PURPLE_DISABLE_DEPRECATED
 /**
  * Set or unset a custom buddyicon for a user.
  *
@@ -645,8 +646,10 @@
  * @param who       The name of the user.
  * @param filename  The path of the custom icon. If this is @c NULL, then any
  *                  previously set custom buddy icon for the user is removed.
+ * @deprecated See purple_buddy_icons_node_set_custom_icon_from_file()
  */
 void pidgin_set_custom_buddy_icon(PurpleAccount *account, const char *who, const char *filename);
+#endif
 
 /**
  * Converts "->" and "<-" in strings to Unicode arrow characters, for use in referencing
@@ -689,7 +692,7 @@
  */
 GtkWidget *pidgin_make_mini_dialog(PurpleConnection *handle,
 	const char* stock_id, const char *primary, const char *secondary,
-	void *user_data, ...);
+	void *user_data, ...) G_GNUC_NULL_TERMINATED;
 
 /**
  * This is a callback function to be used for Ctrl+F searching in treeviews.
@@ -809,5 +812,15 @@
  */
 GtkWidget *pidgin_add_widget_to_vbox(GtkBox *vbox, const char *widget_label, GtkSizeGroup *sg, GtkWidget *widget, gboolean expand, GtkWidget **p_label);
 
+/**
+ * Create a GdkPixbuf from a PurpleStoredImage.
+ *
+ * @param  image   A PurpleStoredImage.
+ *
+ * @return   A GdkPixbuf created from the stored image.
+ * @since 2.5.0
+ */
+GdkPixbuf * pidgin_pixbuf_from_imgstore(PurpleStoredImage *image);
+
 #endif /* _PIDGINUTILS_H_ */
 
--- a/pidgin/pidginstock.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/pidginstock.c	Thu Jun 26 09:07:56 2008 +0000
@@ -168,6 +168,7 @@
 	{ PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_TOOLBAR_SEND_FILE, "toolbar", "send-file.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_TRANSFER, "toolbar", "transfer.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 
 	{ PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_TRAY_INVISIBLE, "tray", "tray-invisible.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
--- a/pidgin/pidginstock.h	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/pidginstock.h	Thu Jun 26 09:07:56 2008 +0000
@@ -129,6 +129,7 @@
 #define PIDGIN_STOCK_TOOLBAR_UNBLOCK      "pidgin-unblock"
 #define PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR "pidgin-select-avatar"
 #define PIDGIN_STOCK_TOOLBAR_SEND_FILE    "pidgin-send-file"
+#define PIDGIN_STOCK_TOOLBAR_TRANSFER     "pidgin-transfer"
 
 /* Tray icons */
 #define PIDGIN_STOCK_TRAY_AVAILABLE       "pidgin-tray-available"
--- a/pidgin/pixmaps/Makefile.am	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/pixmaps/Makefile.am	Thu Jun 26 09:07:56 2008 +0000
@@ -565,6 +565,7 @@
 		toolbar/16/message-new.png \
 		toolbar/16/plugins.png \
 		toolbar/16/send-file.png \
+		toolbar/16/transfer.png \
 		toolbar/16/unblock.png
 
 TOOLBAR_22_SCALABLE = \
Binary file pidgin/pixmaps/status/16/available.png has changed
Binary file pidgin/pixmaps/status/16/away.png has changed
Binary file pidgin/pixmaps/status/16/busy.png has changed
Binary file pidgin/pixmaps/status/16/chat.png has changed
Binary file pidgin/pixmaps/status/16/offline.png has changed
Binary file pidgin/pixmaps/status/16/person.png has changed
--- a/pidgin/pixmaps/status/16/scalable/available.svg	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/pixmaps/status/16/scalable/available.svg	Thu Jun 26 09:07:56 2008 +0000
@@ -2,7 +2,7 @@
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
@@ -13,9 +13,9 @@
    height="16"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.45"
+   inkscape:version="0.46+devel"
    version="1.0"
-   inkscape:export-filename="/home/hbons/GUI/Tango/Gaim Refresh/status/16/available.png"
+   inkscape:export-filename="/home/hbons/Desktop/available.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90"
    sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable"
@@ -26,6 +26,25 @@
      id="defs4">
     <linearGradient
        inkscape:collect="always"
+       id="linearGradient3286">
+      <stop
+         style="stop-color:#459000;stop-opacity:1"
+         offset="0"
+         id="stop3288" />
+      <stop
+         style="stop-color:#204300;stop-opacity:1"
+         offset="1"
+         id="stop3290" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 8 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="16 : 8 : 1"
+       inkscape:persp3d-origin="8 : 5.3333333 : 1"
+       id="perspective43" />
+    <linearGradient
+       inkscape:collect="always"
        id="linearGradient2898">
       <stop
          style="stop-color:white;stop-opacity:1;"
@@ -50,10 +69,10 @@
        xlink:href="#linearGradient3149"
        id="linearGradient4740"
        gradientUnits="userSpaceOnUse"
-       x1="15.498499"
-       y1="9.4211226"
-       x2="24.240097"
-       y2="36.603138" />
+       x1="11.127699"
+       y1="10.823074"
+       x2="30.341434"
+       y2="31.325201" />
     <linearGradient
        inkscape:collect="always"
        xlink:href="#linearGradient3149"
@@ -230,6 +249,39 @@
        fx="31.112698"
        fy="19.008621"
        r="8.6620579" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3286"
+       id="linearGradient3292"
+       x1="15.893391"
+       y1="15.213944"
+       x2="26.533659"
+       y2="28.579245"
+       gradientUnits="userSpaceOnUse" />
+    <filter
+       inkscape:collect="always"
+       id="filter3360"
+       x="-0.13093077"
+       width="1.2618615"
+       y="-0.11042095"
+       height="1.2208419">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.19314814"
+         id="feGaussianBlur3362" />
+    </filter>
+    <filter
+       inkscape:collect="always"
+       id="filter3374"
+       x="-0.13117394"
+       width="1.2623479"
+       y="-0.11015608"
+       height="1.2203122">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.19309804"
+         id="feGaussianBlur3376" />
+    </filter>
   </defs>
   <sodipodi:namedview
      id="base"
@@ -239,16 +291,27 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="25.992076"
-     inkscape:cx="4.1907826"
-     inkscape:cy="8.6773979"
+     inkscape:cx="12.058565"
+     inkscape:cy="10.562588"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
      fill="#eeeeec"
-     inkscape:window-width="1274"
-     inkscape:window-height="844"
-     inkscape:window-x="3"
-     inkscape:window-y="25" />
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="0"
+     inkscape:window-y="22"
+     inkscape:snap-bbox="true"
+     inkscape:snap-nodes="false"
+     objecttolerance="13"
+     gridtolerance="10">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3284"
+       empspacing="5"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -265,14 +328,24 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       transform="matrix(0.538297,0,0,0.538297,-1.630177,-1.459246)"
-       style="fill:url(#linearGradient4738);fill-opacity:1;fill-rule:evenodd;stroke:#306300;stroke-width:1.85770929;stroke-miterlimit:4;stroke-opacity:1"
+       style="fill:url(#linearGradient4738);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3292);stroke-width:1.85770929000000007;stroke-miterlimit:4;stroke-opacity:1"
        d="M 31.822886,17.572527 C 31.822886,25.263442 25.580983,31.505344 17.890068,31.505344 C 10.199153,31.505344 3.9572506,25.263442 3.9572506,17.572527 C 3.9572506,9.8816117 10.199153,3.6397095 17.890068,3.6397095 C 25.580983,3.6397095 31.822886,9.8816117 31.822886,17.572527 z "
-       id="path4331" />
+       id="path4331"
+       transform="matrix(0.538297,0,0,0.538297,-1.630177,-1.459246)" />
+    <path
+       style="opacity:0.59999999999999998;fill:url(#linearGradient4740);fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.14350747999999980;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 31.822886,17.572527 C 31.822886,25.263442 25.580983,31.505344 17.890068,31.505344 C 10.199153,31.505344 3.9572506,25.263442 3.9572506,17.572527 C 3.9572506,9.8816117 10.199153,3.6397095 17.890068,3.6397095 C 25.580983,3.6397095 31.822886,9.8816117 31.822886,17.572527 z "
+       id="path4333"
+       transform="matrix(0.466524,0,0,0.466525,-0.346154,-0.198015)" />
     <path
-       transform="matrix(0.466524,0,0,0.466525,-0.346154,-0.198015)"
-       style="opacity:0.6;fill:url(#linearGradient4740);fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.14350748;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 31.822886,17.572527 C 31.822886,25.263442 25.580983,31.505344 17.890068,31.505344 C 10.199153,31.505344 3.9572506,25.263442 3.9572506,17.572527 C 3.9572506,9.8816117 10.199153,3.6397095 17.890068,3.6397095 C 25.580983,3.6397095 31.822886,9.8816117 31.822886,17.572527 z "
-       id="path4333" />
+       sodipodi:type="arc"
+       style="opacity:0.19499996000000000;fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter3374)"
+       id="path3302"
+       sodipodi:cx="11.484269"
+       sodipodi:cy="4.7465701"
+       sodipodi:rx="1.8659533"
+       sodipodi:ry="1.9428998"
+       d="m 13.350222,4.7465701 a 1.8659533,1.9428998 0 1 1 -3.7319067,0 A 1.8659533,1.9428998 0 1 1 13.350222,4.7465701 z"
+       transform="matrix(2.2014717,-1.281888,0.9447394,1.6503281,-23.266565,12.888149)" />
   </g>
 </svg>
--- a/pidgin/pixmaps/status/16/scalable/away.svg	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/pixmaps/status/16/scalable/away.svg	Thu Jun 26 09:07:56 2008 +0000
@@ -2,7 +2,7 @@
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
@@ -13,9 +13,9 @@
    height="16"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.45"
+   inkscape:version="0.46+devel"
    version="1.0"
-   inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/status/16/available16.png"
+   inkscape:export-filename="/home/hbons/Desktop/away.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90"
    sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable"
@@ -26,6 +26,37 @@
      id="defs4">
     <linearGradient
        inkscape:collect="always"
+       id="linearGradient3284">
+      <stop
+         style="stop-color:#173867;stop-opacity:1;"
+         offset="0"
+         id="stop3286" />
+      <stop
+         style="stop-color:#173867;stop-opacity:0;"
+         offset="1"
+         id="stop3288" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3276">
+      <stop
+         style="stop-color:#2863b7;stop-opacity:1"
+         offset="0"
+         id="stop3278" />
+      <stop
+         style="stop-color:#14325c;stop-opacity:1"
+         offset="1"
+         id="stop3280" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 8 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="16 : 8 : 1"
+       inkscape:persp3d-origin="8 : 5.3333333 : 1"
+       id="perspective35" />
+    <linearGradient
+       inkscape:collect="always"
        id="linearGradient2812">
       <stop
          style="stop-color:#2e3436;stop-opacity:1;"
@@ -94,9 +125,9 @@
        xlink:href="#linearGradient2804"
        id="linearGradient2810"
        x1="4.5264969"
-       y1="2.7991772"
-       x2="10.623409"
-       y2="11.024895"
+       y1="2.6807978"
+       x2="9.7444448"
+       y2="9.9594812"
        gradientUnits="userSpaceOnUse" />
     <radialGradient
        inkscape:collect="always"
@@ -108,6 +139,24 @@
        fy="19.008621"
        r="8.6620579"
        gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3276"
+       id="linearGradient3282"
+       x1="15.377563"
+       y1="12.744186"
+       x2="22.868998"
+       y2="29.821121"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3284"
+       id="linearGradient3290"
+       x1="23.221344"
+       y1="24.700239"
+       x2="8.2601509"
+       y2="0.92288947"
+       gradientUnits="userSpaceOnUse" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -117,8 +166,8 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="25.992076"
-     inkscape:cx="14.729231"
-     inkscape:cy="2.7799575"
+     inkscape:cx="13.286484"
+     inkscape:cy="9.6281985"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
@@ -126,11 +175,22 @@
      inkscape:window-width="1434"
      inkscape:window-height="840"
      inkscape:window-x="3"
-     inkscape:window-y="25"
+     inkscape:window-y="27"
      inkscape:object-paths="false"
      inkscape:grid-bbox="true"
      inkscape:guide-bbox="false"
-     inkscape:grid-points="true" />
+     inkscape:grid-points="true"
+     objecttolerance="14"
+     gridtolerance="18"
+     inkscape:snap-bbox="true"
+     inkscape:snap-nodes="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3274"
+       empspacing="5"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -148,7 +208,7 @@
      id="layer1">
     <path
        sodipodi:type="arc"
-       style="opacity:1;color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#173867;stroke-width:1.91314828px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       style="opacity:1;color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3282);stroke-width:1.91314827999999992px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        id="path1339"
        sodipodi:cx="15.590227"
        sodipodi:cy="16.57217"
@@ -168,7 +228,7 @@
        transform="matrix(2.192102,0,0,2.091316,16.34939,1.090661)" />
     <path
        sodipodi:type="arc"
-       style="opacity:0.40340911;color:black;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:#173867;stroke-width:2.60821199px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       style="opacity:0.40340911000000002;color:black;fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3290);stroke-width:2.60821199000000004px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        id="path1341"
        sodipodi:cx="15.590227"
        sodipodi:cy="16.57217"
@@ -188,7 +248,7 @@
        transform="matrix(3.094296,0,0,3.766968,-10.69048,-20.45989)" />
     <path
        sodipodi:type="arc"
-       style="opacity:0.76704544;fill:none;fill-opacity:1;stroke:url(#linearGradient2810);stroke-width:0.80677563;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:0.76704543999999986;fill:none;fill-opacity:1;stroke:url(#linearGradient2810);stroke-width:0.80677562999999985;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path2802"
        sodipodi:cx="7.5"
        sodipodi:cy="7"
@@ -197,7 +257,7 @@
        d="M 13 7 A 5.5 5 0 1 1  2,7 A 5.5 5 0 1 1  13 7 z"
        transform="matrix(1.18182,0,0,1.3,-0.86365,-1.1)" />
     <rect
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:1;fill:#888a85;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="rect2820"
        width="1"
        height="1"
@@ -231,7 +291,7 @@
        y="-10"
        transform="matrix(0,1,-1,0,0,0)" />
     <rect
-       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:1;fill:#888a85;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="rect2846"
        width="1"
        height="1"
--- a/pidgin/pixmaps/status/16/scalable/busy.svg	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/pixmaps/status/16/scalable/busy.svg	Thu Jun 26 09:07:56 2008 +0000
@@ -2,7 +2,7 @@
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
@@ -13,9 +13,9 @@
    height="16"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.45"
+   inkscape:version="0.46+devel"
    version="1.0"
-   inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/status/16/available16.png"
+   inkscape:export-filename="/home/hbons/Desktop/busy.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90"
    sodipodi:docbase="/home/hbons/Desktop/2.1.1/status/16/scalable"
@@ -26,6 +26,37 @@
      id="defs4">
     <linearGradient
        inkscape:collect="always"
+       id="linearGradient3290">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop3292" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3294" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3280">
+      <stop
+         style="stop-color:#a60000;stop-opacity:1"
+         offset="0"
+         id="stop3282" />
+      <stop
+         style="stop-color:#460000;stop-opacity:1"
+         offset="1"
+         id="stop3284" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 8 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="16 : 8 : 1"
+       inkscape:persp3d-origin="8 : 5.3333333 : 1"
+       id="perspective39" />
+    <linearGradient
+       inkscape:collect="always"
        id="linearGradient2898">
       <stop
          style="stop-color:white;stop-opacity:1;"
@@ -71,28 +102,6 @@
        r="8.6620579" />
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient2186">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop2188" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop2190" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient2186"
-       id="linearGradient2194"
-       x1="9.2594385"
-       y1="-1.5641226"
-       x2="11.226587"
-       y2="17.697369"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.684526,0,0,0.687171,-0.20455,-0.253325)" />
-    <linearGradient
-       inkscape:collect="always"
        id="linearGradient2239">
       <stop
          style="stop-color:#ffffff;stop-opacity:1;"
@@ -107,12 +116,12 @@
        inkscape:collect="always"
        xlink:href="#linearGradient2239"
        id="linearGradient2245"
-       x1="8.7505674"
-       y1="4.5934086"
-       x2="31.18539"
-       y2="39.834526"
+       x1="-1.5418521"
+       y1="-6.2826729"
+       x2="63.127094"
+       y2="59.183727"
        gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.482882,0,0,0.482874,0.269812,0.26982)" />
+       gradientTransform="matrix(0.482882,0,0,0.482874,0.269812,0.2698205)" />
     <linearGradient
        inkscape:collect="always"
        xlink:href="#linearGradient3149"
@@ -177,6 +186,240 @@
        x2="12.233074"
        y2="27.77807"
        gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3280"
+       id="linearGradient3286"
+       x1="11.549973"
+       y1="7.078577"
+       x2="33.836056"
+       y2="45.494511"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3290"
+       id="linearGradient3282"
+       x1="5.8424845"
+       y1="-1.2794704"
+       x2="10.945268"
+       y2="11.145247"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="28.579245"
+       x2="26.533659"
+       y1="15.213944"
+       x1="15.893391"
+       id="linearGradient3292"
+       xlink:href="#linearGradient3280"
+       inkscape:collect="always" />
+    <radialGradient
+       r="8.6620579"
+       fy="19.008621"
+       fx="31.112698"
+       cy="19.008621"
+       cx="31.112698"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2621"
+       xlink:href="#linearGradient2812"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="11.024895"
+       x2="10.623409"
+       y1="2.7991772"
+       x1="4.5264969"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3007"
+       xlink:href="#linearGradient2804"
+       inkscape:collect="always" />
+    <radialGradient
+       r="8.6620579"
+       fy="19.008621"
+       fx="31.112698"
+       cy="19.008621"
+       cx="31.112698"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3005"
+       xlink:href="#linearGradient2812"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2804">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop2806" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop2808" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3149"
+       id="linearGradient2949"
+       gradientUnits="userSpaceOnUse"
+       x1="17.890068"
+       y1="8.0617304"
+       x2="17.890068"
+       y2="40.032413" />
+    <linearGradient
+       id="linearGradient2951">
+      <stop
+         style="stop-color:#73d216;stop-opacity:1;"
+         offset="0"
+         id="stop2953" />
+      <stop
+         style="stop-color:#5ca911;stop-opacity:1;"
+         offset="1"
+         id="stop2955" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2851"
+       id="linearGradient2963"
+       x1="6.878005"
+       y1="11.789385"
+       x2="12.233074"
+       y2="27.77807"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2804"
+       id="linearGradient2810"
+       x1="4.5264969"
+       y1="2.7991772"
+       x2="10.623409"
+       y2="11.024895"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2812"
+       id="radialGradient2818"
+       cx="31.112698"
+       cy="19.008621"
+       fx="31.112698"
+       fy="19.008621"
+       r="8.6620579"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.018423,0.664359,-1.388844,4.257661,-0.134567,-26.02469)"
+       r="0.8078171"
+       fy="6.9473476"
+       fx="4.8470273"
+       cy="6.9473476"
+       cx="4.8470273"
+       id="radialGradient2601"
+       xlink:href="#linearGradient2898"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="27.77807"
+       x2="12.233074"
+       y1="11.789385"
+       x1="6.878005"
+       id="linearGradient2599"
+       xlink:href="#linearGradient2851"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientTransform="matrix(0.914124,-3.896132e-15,-2.475021e-18,1.631747,2.671799,-12.00863)"
+       gradientUnits="userSpaceOnUse"
+       r="8.6620579"
+       fy="19.008621"
+       fx="31.112698"
+       cy="19.008621"
+       cx="31.112698"
+       id="radialGradient2597"
+       xlink:href="#linearGradient3816"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2579">
+      <stop
+         id="stop2581"
+         offset="0"
+         style="stop-color:#73d216;stop-opacity:1;" />
+      <stop
+         id="stop2583"
+         offset="1"
+         style="stop-color:#5ca911;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="40.032413"
+       x2="17.890068"
+       y1="8.0617304"
+       x1="17.890068"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2577"
+       xlink:href="#linearGradient3149"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="31.325201"
+       x2="30.341434"
+       y1="10.823074"
+       x1="11.127699"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4740"
+       xlink:href="#linearGradient3149"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="27.77807"
+       x2="12.233074"
+       y1="11.789385"
+       x1="6.878005"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4738"
+       xlink:href="#linearGradient2851"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective43"
+       inkscape:persp3d-origin="8 : 5.3333333 : 1"
+       inkscape:vp_z="16 : 8 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 8 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3149"
+       id="linearGradient2635"
+       gradientUnits="userSpaceOnUse"
+       x1="11.127699"
+       y1="10.823074"
+       x2="30.341434"
+       y2="31.325201"
+       gradientTransform="matrix(0.466524,0,0,0.466525,-23.253129,0.8019768)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2851"
+       id="linearGradient2638"
+       gradientUnits="userSpaceOnUse"
+       x1="6.878005"
+       y1="11.789385"
+       x2="12.233074"
+       y2="27.77807"
+       gradientTransform="matrix(0.538297,0,0,0.538297,-24.537152,-0.4592542)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3280"
+       id="linearGradient2640"
+       gradientUnits="userSpaceOnUse"
+       x1="15.893391"
+       y1="15.213944"
+       x2="26.533659"
+       y2="28.579245"
+       gradientTransform="matrix(0.538297,0,0,0.538297,-24.537152,-0.4592542)" />
+    <filter
+       inkscape:collect="always"
+       id="filter3416"
+       x="-0.13117394"
+       width="1.2623479"
+       y="-0.11015608"
+       height="1.2203122">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.19309804"
+         id="feGaussianBlur3418" />
+    </filter>
   </defs>
   <sodipodi:namedview
      id="base"
@@ -185,17 +428,21 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="25.992076"
-     inkscape:cx="8.3811422"
-     inkscape:cy="5.1075896"
+     inkscape:zoom="18.379173"
+     inkscape:cx="0.35485832"
+     inkscape:cy="7.0130435"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
      fill="#eeeeec"
-     inkscape:window-width="1268"
-     inkscape:window-height="844"
-     inkscape:window-x="3"
-     inkscape:window-y="25" />
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="0"
+     inkscape:window-y="22">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2508" />
+  </sodipodi:namedview>
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -223,7 +470,7 @@
        transform="matrix(0.468971,0,0,0.468971,0.730372,0.26987)" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;color:#000000;fill:#f24747;fill-opacity:1;fill-rule:evenodd;stroke:#820000;stroke-width:1.91298747px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       style="opacity:1;color:#000000;fill:#f13d3d;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3286);stroke-width:1.91298747000000002px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
        id="path1339"
        sodipodi:cx="15.590227"
        sodipodi:cy="16.57217"
@@ -232,17 +479,27 @@
        d="M 29.935402 16.57217 A 14.345175 14.345175 0 1 1  1.2450523,16.57217 A 14.345175 14.345175 0 1 1  29.935402 16.57217 z"
        transform="matrix(0.522706,0,0,0.522779,-0.14857,-0.663013)" />
     <path
-       style="opacity:0.6;color:#000000;fill:url(#linearGradient2194);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2245);stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       d="M 14.525974,7.9894993 C 14.525974,11.598577 11.608166,14.527685 8.0130095,14.527685 C 4.4178543,14.527685 1.500047,11.598577 1.500047,7.9894993 C 1.500047,4.3804219 4.4178543,1.4513155 8.0130095,1.4513155 C 11.608166,1.4513155 14.525974,4.3804219 14.525974,7.9894993 z "
+       style="opacity:0.75000000000000000;color:#000000;fill:url(#linearGradient3282);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2245);stroke-width:1.00000011999999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       d="m 14.525974,7.9894993 c 0,3.6090777 -2.917808,6.5381857 -6.5129645,6.5381857 -3.5951552,0 -6.5129625,-2.929108 -6.5129625,-6.5381857 0,-3.6090774 2.9178073,-6.5381838 6.5129625,-6.5381838 3.5951565,0 6.5129645,2.9291064 6.5129645,6.5381838 z"
        id="path2220" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.19499996000000000;fill:#ffffff;fill-opacity:1;stroke:none;filter:url(#filter3416)"
+       id="path3302"
+       sodipodi:cx="11.484269"
+       sodipodi:cy="4.7465701"
+       sodipodi:rx="1.8659533"
+       sodipodi:ry="1.9428998"
+       d="m 13.350222,4.7465701 a 1.8659533,1.9428998 0 1 1 -3.7319067,0 A 1.8659533,1.9428998 0 1 1 13.350222,4.7465701 z"
+       transform="matrix(2.2014717,-1.281888,0.9447394,1.6503281,-23.212768,12.908772)" />
     <rect
-       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#a40000;stroke-width:1.00000024;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#a40000;stroke-width:1.00000024000000010;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
        id="rect3207"
        width="11.000004"
        height="2.9999959"
        x="2.500001"
        y="6.5000038"
-       rx="0.96183157"
-       ry="0.96183157" />
+       rx="1.0387781"
+       ry="1.0387781" />
   </g>
 </svg>
--- a/pidgin/pixmaps/status/16/scalable/chat.svg	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/pixmaps/status/16/scalable/chat.svg	Thu Jun 26 09:07:56 2008 +0000
@@ -2,92 +2,313 @@
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    width="16"
    height="16"
-   id="svg13306"
+   id="svg7380"
    sodipodi:version="0.32"
-   inkscape:version="0.43"
-   version="1.0"
-   inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/status/16/irc16.png"
+   inkscape:version="0.46+devel"
+   sodipodi:docbase="/home/hbons/Desktop"
+   sodipodi:docname="person.svg"
+   inkscape:export-filename="/home/hbons/Desktop/person.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90"
-   sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/status/16/scalable"
-   sodipodi:docname="irc16.svg">
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
   <defs
-     id="defs13308">
+     id="defs7382">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3301">
+      <stop
+         style="stop-color:#46284e;stop-opacity:1;"
+         offset="0"
+         id="stop3303" />
+      <stop
+         style="stop-color:#7a4588;stop-opacity:1"
+         offset="1"
+         id="stop3305" />
+    </linearGradient>
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient2280">
+       id="linearGradient3483">
+      <stop
+         style="stop-color:#c17802;stop-opacity:1"
+         offset="0"
+         id="stop3485" />
       <stop
-         style="stop-color:#d3d7cf;stop-opacity:1;"
+         style="stop-color:#935a00;stop-opacity:1"
+         offset="1"
+         id="stop3487" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3475">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
          offset="0"
-         id="stop2282" />
+         id="stop3477" />
       <stop
-         style="stop-color:#d3d7cf;stop-opacity:0;"
+         style="stop-color:#eeeeec;stop-opacity:0;"
          offset="1"
-         id="stop2284" />
+         id="stop3479" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3451">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1"
+         offset="0"
+         id="stop3453" />
+      <stop
+         style="stop-color:#15325b;stop-opacity:1"
+         offset="1"
+         id="stop3455" />
     </linearGradient>
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient3150">
+       id="linearGradient3335">
+      <stop
+         style="stop-color:#b2730d;stop-opacity:1;"
+         offset="0"
+         id="stop3337" />
       <stop
-         style="stop-color:#2e3436;stop-opacity:1;"
+         style="stop-color:#935f0a;stop-opacity:1"
+         offset="1"
+         id="stop3339" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3327">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
          offset="0"
-         id="stop3152" />
+         id="stop3329" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3331" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 5.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="11 : 5.5 : 1"
+       inkscape:persp3d-origin="5.5 : 3.6666667 : 1"
+       id="perspective28" />
+    <linearGradient
+       id="linearGradient3800">
+      <stop
+         style="stop-color:#f4d9b1;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop3802" />
       <stop
-         style="stop-color:#2e3436;stop-opacity:0;"
+         style="stop-color:#df9725;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop3804" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3800"
+       id="radialGradient4171"
+       gradientUnits="userSpaceOnUse"
+       cx="27.702486"
+       cy="14.540437"
+       fx="27.702486"
+       fy="14.540437"
+       r="9.1620579"
+       gradientTransform="matrix(1.191087,0,0,1.124022,-5.086983,-1.361697)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient7300">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop7302" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:0;"
          offset="1"
-         id="stop3154" />
+         id="stop7304" />
     </linearGradient>
     <radialGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient3150"
-       id="radialGradient3156"
-       cx="10.748654"
-       cy="10.457643"
-       fx="10.748654"
-       fy="10.457643"
-       r="6.6449099"
-       gradientTransform="matrix(-0.842757,5.698892e-16,-4.565819e-9,-0.35721,19.80716,14.19321)"
+       xlink:href="#linearGradient7300"
+       id="radialGradient7306"
+       cx="24.248138"
+       cy="27.184834"
+       fx="24.248138"
+       fy="27.184834"
+       r="12.499089"
+       gradientTransform="matrix(0.964825,0,0,0.631898,0.954495,11.94073)"
        gradientUnits="userSpaceOnUse" />
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient3131">
+       id="linearGradient3816">
       <stop
-         style="stop-color:#eeeeec;stop-opacity:1;"
+         style="stop-color:#000000;stop-opacity:1;"
          offset="0"
-         id="stop3133" />
+         id="stop3818" />
       <stop
-         style="stop-color:#d3d7cf"
+         style="stop-color:#000000;stop-opacity:0;"
          offset="1"
-         id="stop3135" />
+         id="stop3820" />
     </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3816"
+       id="radialGradient4179"
+       gradientUnits="userSpaceOnUse"
+       cx="31.112698"
+       cy="19.008621"
+       fx="31.112698"
+       fy="19.008621"
+       r="8.6620579" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7300"
+       id="radialGradient4244"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.964825,0,0,0.631898,0.954495,11.94073)"
+       cx="24.248138"
+       cy="27.184834"
+       fx="24.248138"
+       fy="27.184834"
+       r="12.499089" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3800"
+       id="radialGradient4246"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.191087,0,0,1.124022,-5.086983,-1.361697)"
+       cx="27.702486"
+       cy="14.540437"
+       fx="27.702486"
+       fy="14.540437"
+       r="9.1620579" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7300"
+       id="radialGradient2631"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.964825,0,0,0.631898,0.954495,11.94073)"
+       cx="24.248138"
+       cy="27.184834"
+       fx="24.248138"
+       fy="27.184834"
+       r="12.499089" />
+    <inkscape:perspective
+       id="perspective2506"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
     <linearGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient3131"
-       id="linearGradient3137"
-       x1="18.206755"
-       y1="4.8468447"
-       x2="18.150391"
-       y2="13.775416"
+       xlink:href="#linearGradient3327"
+       id="linearGradient3333"
+       x1="32.26284"
+       y1="18.39094"
+       x2="40.463146"
+       y2="28.908117"
+       gradientUnits="userSpaceOnUse" />
+    <inkscape:perspective
+       id="perspective3358"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       r="9.1620579"
+       fy="14.809424"
+       fx="26.819485"
+       cy="14.809424"
+       cx="26.819485"
+       gradientTransform="matrix(0.9647715,0.3755394,-0.3764009,0.966985,7.9289748,-9.623708)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3376"
+       xlink:href="#linearGradient3800"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="25.307449"
+       x2="33.637684"
+       y1="20.449879"
+       x1="30.189112"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3378"
+       xlink:href="#linearGradient3335"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3327"
+       id="linearGradient3409"
+       gradientUnits="userSpaceOnUse"
+       x1="32.26284"
+       y1="18.39094"
+       x2="40.463146"
+       y2="28.908117" />
+    <inkscape:perspective
+       id="perspective3418"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7300"
+       id="radialGradient3449"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.964825,0,0,0.631898,0.954495,11.94073)"
+       cx="24.248138"
+       cy="27.184834"
+       fx="24.248138"
+       fy="27.184834"
+       r="12.499089" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3451"
+       id="linearGradient3457"
+       x1="5.0000005"
+       y1="11.446214"
+       x2="8.2252016"
+       y2="16.493296"
        gradientUnits="userSpaceOnUse" />
     <radialGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient2280"
-       id="radialGradient2286"
-       cx="10.332581"
-       cy="6.9103003"
-       fx="10.332581"
-       fy="6.9103003"
-       r="9.5"
-       gradientTransform="matrix(1.895669,2.346468e-16,-3.526656e-16,2.238626,-11.89066,-12.56638)"
+       xlink:href="#linearGradient3475"
+       id="radialGradient3481"
+       cx="28.779234"
+       cy="14.68485"
+       fx="28.779234"
+       fy="14.68485"
+       r="9.8994964"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1189106,0,0,1.1189106,-3.422157,-1.7461848)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3483"
+       id="linearGradient3489"
+       x1="30.669531"
+       y1="17.247086"
+       x2="34.812038"
+       y2="24.987169"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3301"
+       id="linearGradient3307"
+       x1="16.510134"
+       y1="13.467242"
+       x2="13.781501"
+       y2="9.1689024"
        gradientUnits="userSpaceOnUse" />
   </defs>
   <sodipodi:namedview
@@ -97,20 +318,34 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="39.59798"
-     inkscape:cx="14.115129"
-     inkscape:cy="9.9583634"
+     inkscape:zoom="36.060436"
+     inkscape:cx="12.472661"
+     inkscape:cy="7.0601917"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:grid-bbox="true"
      inkscape:document-units="px"
-     fill="#eeeeec"
-     inkscape:window-width="1268"
-     inkscape:window-height="971"
-     inkscape:window-x="6"
-     inkscape:window-y="21" />
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="0"
+     inkscape:window-y="22"
+     width="11px"
+     height="11px"
+     inkscape:snap-nodes="false"
+     inkscape:snap-bbox="true"
+     objecttolerance="7"
+     gridtolerance="7"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2497"
+       empspacing="5"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
   <metadata
-     id="metadata13311">
+     id="metadata7385">
     <rdf:RDF>
       <cc:Work
          rdf:about="">
@@ -125,91 +360,80 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <path
-       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.00000095;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 0.49919572,3.436028 L 0.49919572,8.024108 C 0.49919572,10.030365 0.43094041,12.50277 3.4779698,12.50277 L 3.5190997,14.938304 L 6.2391563,12.547388 L 10.144168,12.531827 C 13.477975,12.531827 15.5,11.518177 15.5,9.379431 L 15.484468,3.556577 C 15.484468,1.4311219 14.423292,0.51556128 12.453894,0.51556128 L 3.4753207,0.50000048 C 1.4741104,0.50000048 0.49919572,1.561826 0.49919572,3.436028 z "
-       id="path2199"
-       sodipodi:nodetypes="ccccccccccc" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0020103"
-       inkscape:original="M 10.03125 5.5 C 5.2809556 5.6861502 1.5 8.7231084 1.5 12.4375 C 1.5 14.570281 2.4139213 16.850503 4.375 18.125 C 4.790921 19.906271 3.5825788 21.282326 3.375 21.5 C 3.7506605 21.398222 6.7302843 20.58004 7.84375 19.375 C 8.9660824 19.328744 9.5914383 19.40625 10.5 19.40625 C 15.465015 19.40625 19.500001 16.271711 19.5 12.4375 C 19.499999 8.6032883 15.465015 5.5 10.5 5.5 C 10.344844 5.4999998 10.184486 5.4939951 10.03125 5.5 z "
-       xlink:href="#path13316"
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path2288"
-       inkscape:href="#path13316"
-       d="M 10.0625,6.5 C 7.8900031,6.5851338 5.9762716,7.3427975 4.625,8.4375 C 3.2737284,9.5322025 2.5,10.920293 2.5,12.4375 C 2.5,14.284032 3.2837785,16.226812 4.90625,17.28125 C 5.1287835,17.423752 5.2860248,17.648382 5.34375,17.90625 C 5.4955807,18.556498 5.4707531,19.125743 5.375,19.65625 C 6.0781419,19.333618 6.8270886,18.976092 7.09375,18.6875 C 7.2809756,18.490079 7.540428,18.377274 7.8125,18.375 C 8.9961476,18.326217 9.6484235,18.40625 10.5,18.40625 C 12.771643,18.40625 14.815021,17.674738 16.25,16.5625 C 17.684979,15.450262 18.5,14.003112 18.5,12.4375 C 18.5,10.871887 17.684227,9.4172787 16.25,8.3125 C 14.815773,7.2077213 12.773745,6.5 10.5,6.5 C 10.318992,6.4999998 10.162289,6.4960896 10.0625,6.5 z "
-       transform="matrix(-1,0,0,1,23.99247,-3.990738)" />
-    <path
-       style="opacity:1;fill:url(#radialGradient2286);fill-opacity:1;stroke:#555753;stroke-width:1.00000095;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 0.49919572,3.436028 L 0.49919572,8.024108 C 0.49919572,10.030365 0.43094041,12.50277 3.4779698,12.50277 L 3.5190997,14.938304 L 6.2391563,12.547388 L 10.144168,12.531827 C 13.477975,12.531827 15.5,11.518177 15.5,9.379431 L 15.484468,3.556577 C 15.484468,1.4311219 14.423292,0.51556128 12.453894,0.51556128 L 3.4753207,0.50000048 C 1.4741104,0.50000048 0.49919572,1.561826 0.49919572,3.436028 z "
-       id="rect1326"
-       sodipodi:nodetypes="ccccccccccc" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-0.99553573"
-       inkscape:original="M 3.46875 0.5 C 1.4675396 0.5 0.5 1.563298 0.5 3.4375 L 0.5 8.03125 C 0.5 10.037507 0.42172061 12.5 3.46875 12.5 L 3.53125 14.9375 L 6.25 12.5625 L 10.15625 12.53125 C 13.490057 12.53125 15.5 11.513746 15.5 9.375 L 15.5 3.5625 C 15.5 1.4370449 14.438148 0.5 12.46875 0.5 L 3.46875 0.5 z "
-       xlink:href="#rect1326"
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#eeeeec;stroke-width:1.03363752;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2248"
-       inkscape:href="#rect1326"
-       d="M 3.96875,9.0625 C 3.1444632,9.0625002 2.7022172,9.2621947 2.4375,9.53125 C 2.1727828,9.8003053 2,10.234211 2,11 L 2,15.59375 C 2,16.609826 2.0106197,17.613475 2.25,18.1875 C 2.4893803,18.761525 2.71342,19.0625 3.96875,19.0625 C 4.5099878,19.05993 4.9541408,19.490203 4.96875,20.03125 L 4.96875,20.34375 L 6.09375,19.34375 C 6.2748748,19.183476 6.5081463,19.094611 6.75,19.09375 L 10.65625,19.09375 C 12.221872,19.09375 13.413842,18.823397 14.09375,18.4375 C 14.773658,18.051603 15,17.695013 15,16.9375 L 15,11.125 C 15,10.228058 14.802621,9.7651678 14.53125,9.5 C 14.259879,9.2348322 13.795556,9.0625 12.96875,9.0625 L 3.96875,9.0625 z "
-       transform="matrix(0.997403,0,0,0.938411,3.636372e-2,0.123235)" />
-    <path
-       sodipodi:type="arc"
-       style="opacity:0.2;fill:url(#radialGradient3156);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path3140"
-       sodipodi:cx="10.748654"
-       sodipodi:cy="10.457643"
-       sodipodi:rx="6.6449099"
-       sodipodi:ry="2.3675451"
-       d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1  4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1  17.393564 10.457643 z"
-       transform="matrix(1.655402,0,0,1.267134,-5.793347,6.748769)" />
+       style="opacity:1;color:#000000;fill:#855b8c;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3307);stroke-width:0.99999987999999995px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       d="m 9.2852706,13.499999 3.6531493,0 c 1.0350584,0 2.059811,-0.3777864 2.4354322,-1.4545452 C 15.730548,11.022944 15.434737,9.0757587 13.121077,7.5000022 l -4.3228932,0 C 6.4845226,8.9545462 6.1953886,10.943768 6.7280666,12.106061 7.2707356,13.290156 8.1893256,13.5 9.2852706,13.5 z"
+       id="path3443"
+       sodipodi:nodetypes="cczcczc" />
     <path
        sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0020103"
-       inkscape:original="M 10.03125 5.5 C 5.2809556 5.6861502 1.5 8.7231084 1.5 12.4375 C 1.5 14.570281 2.4139213 16.850503 4.375 18.125 C 4.790921 19.906271 3.5825788 21.282326 3.375 21.5 C 3.7506605 21.398222 6.7302843 20.58004 7.84375 19.375 C 8.9660824 19.328744 9.5914383 19.40625 10.5 19.40625 C 15.465015 19.40625 19.500001 16.271711 19.5 12.4375 C 19.499999 8.6032883 15.465015 5.5 10.5 5.5 C 10.344844 5.4999998 10.184486 5.4939951 10.03125 5.5 z "
-       xlink:href="#path13316"
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path13434"
-       inkscape:href="#path13316"
-       d="M 10.0625,6.5 C 7.8900031,6.5851338 5.9762716,7.3427975 4.625,8.4375 C 3.2737284,9.5322025 2.5,10.920293 2.5,12.4375 C 2.5,14.284032 3.2837785,16.226812 4.90625,17.28125 C 5.1287835,17.423752 5.2860248,17.648382 5.34375,17.90625 C 5.4955807,18.556498 5.4707531,19.125743 5.375,19.65625 C 6.0781419,19.333618 6.8270886,18.976092 7.09375,18.6875 C 7.2809756,18.490079 7.540428,18.377274 7.8125,18.375 C 8.9961476,18.326217 9.6484235,18.40625 10.5,18.40625 C 12.771643,18.40625 14.815021,17.674738 16.25,16.5625 C 17.684979,15.450262 18.5,14.003112 18.5,12.4375 C 18.5,10.871887 17.684227,9.4172787 16.25,8.3125 C 14.815773,7.2077213 12.773745,6.5 10.5,6.5 C 10.318992,6.4999998 10.162289,6.4960896 10.0625,6.5 z "
-       transform="matrix(-1,0,0,1,32,-8.84375)" />
+       inkscape:radius="-1.1784238"
+       inkscape:original="M 24.5625 24.125 C 17.844986 28.367641 17.015916 34.172303 18.5625 37.5625 C 20.138096 41.016289 22.818019 41.625 26 41.625 L 36.59375 41.625 C 39.598953 41.624999 42.565667 40.546959 43.65625 37.40625 C 44.691891 34.423774 43.842514 28.721194 37.125 24.125 L 24.5625 24.125 z "
+       style="opacity:0.5;color:#000000;fill:url(#radialGradient3449);fill-opacity:1;fill-rule:evenodd;stroke:#eeeeec;stroke-width:3.58186674000000016px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       id="path3445"
+       d="m 24.96875,25.3125 c -6.080867,3.980556 -6.594767,9.007702 -5.34375,11.75 0.693936,1.521145 1.541625,2.278662 2.5625,2.75 1.020875,0.471338 2.296653,0.625 3.8125,0.625 l 10.59375,0 c 1.361692,0 2.658712,-0.23791 3.6875,-0.78125 1.028788,-0.54334 1.79962,-1.327976 2.25,-2.625 0.804003,-2.315397 0.274744,-7.39869 -5.8125,-11.71875 z"
+       transform="matrix(0.2947246,0,0,0.2644629,1.8788978,1.8057826)" />
+    <path
+       style="opacity:0.78977272;fill:#eeeeec;fill-opacity:1;stroke:none"
+       d="m 12.999999,10.150001 c 0,1.0212 -1.053115,1.320578 -2,1.85 -1.339673,-0.49828 -2,-0.8288 -2,-1.85 0,-1.0212014 0.8959998,-1.8500014 2,-1.8500014 1.104,0 2,0.8288 2,1.8500014 z"
+       id="path3447"
+       sodipodi:nodetypes="ccssc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#d28812;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3489);stroke-width:1.92490505999999995px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       id="path2549"
+       sodipodi:cx="31.112698"
+       sodipodi:cy="19.008621"
+       sodipodi:rx="8.6620579"
+       sodipodi:ry="8.6620579"
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324116,0 A 8.6620579,8.6620579 0 1 1 39.774755,19.008621 z"
+       transform="matrix(0.5195068,0,0,0.5195069,-5.1632599,-4.8751084)" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324116,0 A 8.6620579,8.6620579 0 1 1 39.774755,19.008621 z"
+       sodipodi:ry="8.6620579"
+       sodipodi:rx="8.6620579"
+       sodipodi:cy="19.008621"
+       sodipodi:cx="31.112698"
+       id="path2551"
+       style="opacity:0.625;color:#000000;fill:url(#radialGradient3481);fill-opacity:1;stroke:url(#linearGradient3333);stroke-width:2.47487712px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc"
+       transform="matrix(0.4040609,0,0,0.4040609,-1.5714252,-2.6806412)" />
+    <path
+       style="opacity:1;color:#000000;fill:#3465a4;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3457);stroke-width:0.99999987999999995px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       d="m 3.2852716,15.499999 3.6531493,0 c 1.0350584,0 2.059811,-0.3777864 2.4354322,-1.4545452 C 9.7305489,13.022944 9.4347379,11.075758 7.1210779,9.5000014 l -4.3228932,0 c -2.3136607,1.454544 -2.6027951,3.443766 -2.0701172,4.606059 0.54266971,1.184095 1.4612592,1.393939 2.5572041,1.393939 z"
+       id="path4308"
+       sodipodi:nodetypes="cczcczc" />
     <path
        sodipodi:type="inkscape:offset"
-       inkscape:radius="-1.0020103"
-       inkscape:original="M 10.03125 5.5 C 5.2809556 5.6861502 1.5 8.7231084 1.5 12.4375 C 1.5 14.570281 2.4139213 16.850503 4.375 18.125 C 4.790921 19.906271 3.5825788 21.282326 3.375 21.5 C 3.7506605 21.398222 6.7302843 20.58004 7.84375 19.375 C 8.9660824 19.328744 9.5914383 19.40625 10.5 19.40625 C 15.465015 19.40625 19.500001 16.271711 19.5 12.4375 C 19.499999 8.6032883 15.465015 5.5 10.5 5.5 C 10.344844 5.4999998 10.184486 5.4939951 10.03125 5.5 z "
-       xlink:href="#path13316"
-       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path13323"
-       inkscape:href="#path13316"
-       d="M 10.0625,6.5 C 7.8900031,6.5851338 5.9762716,7.3427975 4.625,8.4375 C 3.2737284,9.5322025 2.5,10.920293 2.5,12.4375 C 2.5,14.284032 3.2837785,16.226812 4.90625,17.28125 C 5.1287835,17.423752 5.2860248,17.648382 5.34375,17.90625 C 5.4955807,18.556498 5.4707531,19.125743 5.375,19.65625 C 6.0781419,19.333618 6.8270886,18.976092 7.09375,18.6875 C 7.2809756,18.490079 7.540428,18.377274 7.8125,18.375 C 8.9961476,18.326217 9.6484235,18.40625 10.5,18.40625 C 12.771643,18.40625 14.815021,17.674738 16.25,16.5625 C 17.684979,15.450262 18.5,14.003112 18.5,12.4375 C 18.5,10.871887 17.684227,9.4172787 16.25,8.3125 C 14.815773,7.2077213 12.773745,6.5 10.5,6.5 C 10.318992,6.4999998 10.162289,6.4960896 10.0625,6.5 z "
-       transform="matrix(0.750603,0,0,0.750603,0.123492,-2.625632)" />
-    <rect
-       style="opacity:1;fill:#9a9b96;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2207"
-       width="9"
-       height="1"
-       x="3"
-       y="4"
-       rx="0.5"
-       ry="0.5" />
-    <rect
-       style="opacity:1;fill:#9a9b96;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect1343"
-       width="8"
-       height="1"
-       x="3"
-       y="8"
-       rx="0.5"
-       ry="0.5" />
-    <rect
-       style="opacity:1;fill:#9a9b96;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect1345"
-       width="7"
-       height="1"
-       x="3"
-       y="6"
-       rx="0.5"
-       ry="0.5" />
+       inkscape:radius="-1.1784238"
+       inkscape:original="M 24.5625 24.125 C 17.844986 28.367641 17.015916 34.172303 18.5625 37.5625 C 20.138096 41.016289 22.818019 41.625 26 41.625 L 36.59375 41.625 C 39.598953 41.624999 42.565667 40.546959 43.65625 37.40625 C 44.691891 34.423774 43.842514 28.721194 37.125 24.125 L 24.5625 24.125 z "
+       style="opacity:0.5;color:#000000;fill:url(#radialGradient2631);fill-opacity:1;fill-rule:evenodd;stroke:#eeeeec;stroke-width:3.58186674000000016px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       id="path7281"
+       d="m 24.96875,25.3125 c -6.080867,3.980556 -6.594767,9.007702 -5.34375,11.75 0.693936,1.521145 1.541625,2.278662 2.5625,2.75 1.020875,0.471338 2.296653,0.625 3.8125,0.625 l 10.59375,0 c 1.361692,0 2.658712,-0.23791 3.6875,-0.78125 1.028788,-0.54334 1.79962,-1.327976 2.25,-2.625 0.804003,-2.315397 0.274744,-7.39869 -5.8125,-11.71875 z"
+       transform="matrix(0.2947246,0,0,0.2644629,-4.1211012,3.8057819)" />
+    <path
+       style="opacity:0.78977272;fill:#eeeeec;fill-opacity:1;stroke:none"
+       d="M 7,12.15 C 7,13.1712 5.9468852,13.470578 5.0000003,14 3.6603268,13.50172 2.9999998,13.1712 2.9999998,12.15 c 0,-1.021201 0.896,-1.850001 2.000001,-1.850001 1.1039998,0 1.9999997,0.8288 1.9999997,1.850001 z"
+       id="path7285"
+       sodipodi:nodetypes="ccssc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:url(#radialGradient3376);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3378);stroke-width:1.92490506px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       id="path3405"
+       sodipodi:cx="31.112698"
+       sodipodi:cy="19.008621"
+       sodipodi:rx="8.6620579"
+       sodipodi:ry="8.6620579"
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324116,0 A 8.6620579,8.6620579 0 1 1 39.774755,19.008621 z"
+       transform="matrix(0.5195068,0,0,0.5195069,-11.163257,-2.8751094)" />
+    <path
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324116,0 A 8.6620579,8.6620579 0 1 1 39.774755,19.008621 z"
+       sodipodi:ry="8.6620579"
+       sodipodi:rx="8.6620579"
+       sodipodi:cy="19.008621"
+       sodipodi:cx="31.112698"
+       id="path3407"
+       style="opacity:0.625;color:#000000;fill:none;stroke:url(#linearGradient3409);stroke-width:2.47487712px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       sodipodi:type="arc"
+       transform="matrix(0.4040609,0,0,0.4040609,-7.5714222,-0.6806422)" />
   </g>
 </svg>
--- a/pidgin/pixmaps/status/16/scalable/offline.svg	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/pixmaps/status/16/scalable/offline.svg	Thu Jun 26 09:07:56 2008 +0000
@@ -2,7 +2,7 @@
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
@@ -13,7 +13,7 @@
    height="16"
    id="svg2"
    sodipodi:version="0.32"
-   inkscape:version="0.45"
+   inkscape:version="0.46+devel"
    version="1.0"
    inkscape:export-filename="/home/hbons/Desktop/offline.png"
    inkscape:export-xdpi="90"
@@ -26,25 +26,47 @@
      id="defs4">
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient2225">
+       id="linearGradient3303">
       <stop
-         style="stop-color:#eeeeec;stop-opacity:1;"
+         style="stop-color:#ffffff;stop-opacity:1;"
          offset="0"
-         id="stop2227" />
+         id="stop3305" />
       <stop
-         style="stop-color:#eeeeec;stop-opacity:0;"
+         style="stop-color:#ffffff;stop-opacity:0;"
          offset="1"
-         id="stop2229" />
+         id="stop3307" />
     </linearGradient>
     <linearGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient2225"
-       id="linearGradient2231"
-       x1="11.802028"
-       y1="1.9986149"
-       x2="11.802028"
-       y2="14.895812"
-       gradientUnits="userSpaceOnUse" />
+       id="linearGradient3295">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop3297" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop3299" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3275">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3277" />
+      <stop
+         style="stop-color:#61635f;stop-opacity:1"
+         offset="1"
+         id="stop3279" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 8 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="16 : 8 : 1"
+       inkscape:persp3d-origin="8 : 5.3333333 : 1"
+       id="perspective34" />
     <linearGradient
        inkscape:collect="always"
        id="linearGradient2186">
@@ -153,6 +175,33 @@
        x2="12.233074"
        y2="27.77807"
        gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3275"
+       id="linearGradient3281"
+       x1="14.345539"
+       y1="14.69435"
+       x2="6.8097677"
+       y2="4.3450422"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3295"
+       id="linearGradient3301"
+       x1="4.8374491"
+       y1="3.565635"
+       x2="12.060304"
+       y2="13.821809"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3303"
+       id="linearGradient3309"
+       x1="6.8490844"
+       y1="8.6799088"
+       x2="-3.3852992"
+       y2="-4.1349444"
+       gradientUnits="userSpaceOnUse" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -161,17 +210,28 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="25.992076"
-     inkscape:cx="26.27121"
-     inkscape:cy="5.5692688"
+     inkscape:zoom="8"
+     inkscape:cx="1.3444167"
+     inkscape:cy="3.0859953"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
      fill="#eeeeec"
-     inkscape:window-width="1434"
-     inkscape:window-height="844"
-     inkscape:window-x="3"
-     inkscape:window-y="25" />
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="0"
+     inkscape:window-y="22"
+     inkscape:snap-nodes="false"
+     inkscape:snap-bbox="true"
+     objecttolerance="11"
+     gridtolerance="10">
+    <inkscape:grid
+       type="xygrid"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       id="grid2503" />
+  </sodipodi:namedview>
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -188,7 +248,7 @@
      inkscape:groupmode="layer"
      id="layer1">
     <path
-       style="fill:#888a85;fill-opacity:1;stroke:#2e3436;stroke-width:0.99999827;stroke-miterlimit:4;stroke-opacity:1"
+       style="fill:url(#linearGradient3301);fill-opacity:1;stroke:url(#linearGradient3281);stroke-width:0.99999826999999997;stroke-miterlimit:4;stroke-opacity:1"
        d="M 13.307074,13.307079 C 10.376958,16.237198 5.6213214,16.237693 2.6918157,13.308187 C -0.23769028,10.378679 -0.23719421,5.623042 2.692923,2.6929237 C 5.62304,-0.23719442 10.378675,-0.23769056 13.308181,2.6918165 C 16.237687,5.6213234 16.237192,10.376962 13.307074,13.307079 z "
        id="path2187" />
     <path
@@ -196,15 +256,22 @@
        inkscape:radius="-1.0137641"
        inkscape:original="M 8 0.5 C 6.0786384 0.50020041 4.1525585 1.2224409 2.6875 2.6875 C -0.24261721 5.6176183 -0.24200589 10.382992 2.6875 13.3125 C 5.6170057 16.242006 10.382384 16.242619 13.3125 13.3125 C 16.242618 10.382383 16.242006 5.6170068 13.3125 2.6875 C 11.847747 1.2227465 9.9213616 0.49979959 8 0.5 z "
        xlink:href="#path2187"
-       style="opacity:0.4;fill:url(#linearGradient2231);fill-opacity:1;stroke:#ffffff;stroke-width:0.99995583;stroke-miterlimit:4;stroke-opacity:1"
+       style="opacity:0.40000000000000002;fill:none;fill-opacity:1;stroke:url(#linearGradient3309);stroke-width:0.99995583000000021;stroke-miterlimit:4;stroke-opacity:1"
        id="path2215"
        inkscape:href="#path2187"
-       d="M 8,1.5 C 6.3326173,1.5001739 4.674966,2.1375335 3.40625,3.40625 C 0.86479124,5.9477097 0.86538373,10.052882 3.40625,12.59375 C 5.9471154,15.134616 10.052293,15.135209 12.59375,12.59375 C 15.135209,10.052292 15.134616,5.9471167 12.59375,3.40625 C 11.325315,2.1378146 9.6669929,1.4998261 8,1.5 z "
-       transform="matrix(1.000056,0,0,1.000028,-4.353349e-4,-2.926381e-5)" />
+       d="M 8,1.5 C 6.3326173,1.5001739 4.674966,2.1375335 3.40625,3.40625 c -2.5414588,2.5414597 -2.5408663,6.646632 0,9.1875 2.5408654,2.540866 6.646043,2.541459 9.1875,0 2.541459,-2.541458 2.540866,-6.6466333 0,-9.1875 C 11.325315,2.1378146 9.6669929,1.4998261 8,1.5 z"
+       transform="matrix(-1.000056,0,0,-1.000028,16.000461,16.000041)" />
     <path
-       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#555753;stroke-width:1.00000036;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 11.54182,4.2658182 C 10.931116,3.6551131 10.447965,3.347327 9.8372602,3.9580321 L 8.0000001,5.7952921 L 6.1627401,3.9580321 C 5.5520351,3.3473271 4.9919392,3.7705329 4.381234,4.381238 C 3.770529,4.991943 3.347323,5.5520393 3.9580281,6.1627441 L 5.7952881,8.0000041 L 3.9580281,9.8372641 C 3.3473229,10.447969 3.6935827,10.969592 4.3042875,11.580298 C 4.9149927,12.191002 5.5520349,12.652681 6.1627401,12.041977 L 8.0000001,10.204716 L 9.8372602,12.041977 C 10.447965,12.652681 11.046535,12.306422 11.657239,11.695718 C 12.267944,11.085012 12.652677,10.447969 12.041972,9.8372641 L 10.204713,8.0000041 L 12.041972,6.1627441 C 12.652677,5.552039 12.152526,4.8765236 11.54182,4.2658182 z "
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#555753;stroke-width:1.00000036;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 11.85704,4.0822721 C 11.226174,3.4531102 10.534706,3.2129687 9.903839,3.8421305 L 8.0059223,5.7349162 6.1080057,3.8421305 C 5.4771385,3.2129688 4.7446581,3.5335449 4.1137906,4.1627068 3.4829234,4.7918685 3.1996385,5.4843118 3.8305058,6.1134733 L 5.7284224,8.006259 3.8305058,9.8990447 C 3.1996384,10.528207 3.4803833,11.334907 4.1112504,11.96407 4.7421178,12.59323 5.4771383,12.799549 6.1080057,12.170389 L 8.0059223,10.277602 9.903839,12.170389 C 10.534706,12.799549 11.306931,12.596719 11.937797,11.967558 12.568664,11.338395 12.812206,10.528207 12.181339,9.8990449 L 10.283423,8.0062592 12.181339,6.1134736 C 12.812206,5.4843115 12.487908,4.7114342 11.85704,4.0822721 z"
        id="rect2920"
        sodipodi:nodetypes="ccccscccscccscccc" />
+    <rect
+       style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none"
+       id="rect3285"
+       width="4"
+       height="4"
+       x="6"
+       y="6" />
   </g>
 </svg>
--- a/pidgin/pixmaps/status/16/scalable/person.svg	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/pixmaps/status/16/scalable/person.svg	Thu Jun 26 09:07:56 2008 +0000
@@ -2,26 +2,107 @@
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
    xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16px"
-   height="16px"
+   width="16"
+   height="16"
    id="svg7380"
    sodipodi:version="0.32"
-   inkscape:version="0.44.1"
-   sodipodi:docbase="/home/hbons/GUI/Tango/Gaim Refresh/status/16/scalable"
+   inkscape:version="0.46+devel"
+   sodipodi:docbase="/home/hbons/Desktop"
    sodipodi:docname="person.svg"
-   inkscape:export-filename="/home/hbons/GUI/Tango/Gaim Refresh/status/16/person.png"
+   inkscape:export-filename="/home/hbons/Desktop/person.png"
    inkscape:export-xdpi="90"
-   inkscape:export-ydpi="90">
+   inkscape:export-ydpi="90"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
   <defs
      id="defs7382">
     <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3301">
+      <stop
+         style="stop-color:#46284e;stop-opacity:1;"
+         offset="0"
+         id="stop3303" />
+      <stop
+         style="stop-color:#7a4588;stop-opacity:1"
+         offset="1"
+         id="stop3305" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3483">
+      <stop
+         style="stop-color:#c17802;stop-opacity:1"
+         offset="0"
+         id="stop3485" />
+      <stop
+         style="stop-color:#935a00;stop-opacity:1"
+         offset="1"
+         id="stop3487" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3475">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3477" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:0;"
+         offset="1"
+         id="stop3479" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3451">
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1"
+         offset="0"
+         id="stop3453" />
+      <stop
+         style="stop-color:#15325b;stop-opacity:1"
+         offset="1"
+         id="stop3455" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3335">
+      <stop
+         style="stop-color:#b2730d;stop-opacity:1;"
+         offset="0"
+         id="stop3337" />
+      <stop
+         style="stop-color:#935f0a;stop-opacity:1"
+         offset="1"
+         id="stop3339" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3327">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3329" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3331" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 5.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="11 : 5.5 : 1"
+       inkscape:persp3d-origin="5.5 : 3.6666667 : 1"
+       id="perspective28" />
+    <linearGradient
        id="linearGradient3800">
       <stop
          style="stop-color:#f4d9b1;stop-opacity:1.0000000;"
@@ -110,6 +191,160 @@
        fx="27.702486"
        fy="14.540437"
        r="9.1620579" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7300"
+       id="radialGradient2631"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.964825,0,0,0.631898,0.954495,11.94073)"
+       cx="24.248138"
+       cy="27.184834"
+       fx="24.248138"
+       fy="27.184834"
+       r="12.499089" />
+    <inkscape:perspective
+       id="perspective2506"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3327"
+       id="linearGradient3333"
+       x1="32.26284"
+       y1="18.39094"
+       x2="40.463146"
+       y2="28.908117"
+       gradientUnits="userSpaceOnUse" />
+    <inkscape:perspective
+       id="perspective3358"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       r="9.1620579"
+       fy="14.809424"
+       fx="26.819485"
+       cy="14.809424"
+       cx="26.819485"
+       gradientTransform="matrix(0.9647715,0.3755394,-0.3764009,0.966985,7.9289748,-9.623708)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3376"
+       xlink:href="#linearGradient3800"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="25.307449"
+       x2="33.637684"
+       y1="20.449879"
+       x1="30.189112"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3378"
+       xlink:href="#linearGradient3335"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3327"
+       id="linearGradient3409"
+       gradientUnits="userSpaceOnUse"
+       x1="32.26284"
+       y1="18.39094"
+       x2="40.463146"
+       y2="28.908117" />
+    <inkscape:perspective
+       id="perspective3418"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3451"
+       id="linearGradient3457"
+       x1="5.0000005"
+       y1="11.446214"
+       x2="8.2252016"
+       y2="16.493296"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3475"
+       id="radialGradient3481"
+       cx="28.779234"
+       cy="14.68485"
+       fx="28.779234"
+       fy="14.68485"
+       r="9.8994964"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1189106,0,0,1.1189106,-3.422157,-1.7461848)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3483"
+       id="linearGradient3489"
+       x1="30.669531"
+       y1="17.247086"
+       x2="34.812038"
+       y2="24.987169"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3301"
+       id="linearGradient3307"
+       x1="13.753093"
+       y1="16.35816"
+       x2="11.875512"
+       y2="10.748822"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1111113,0,0,1.1666667,-4.7222232,-0.2500063)" />
+    <inkscape:perspective
+       id="perspective2538"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       r="9.1620579"
+       fy="14.809424"
+       fx="26.819485"
+       cy="14.809424"
+       cx="26.819485"
+       gradientTransform="matrix(0.9647715,0.3755394,-0.3764009,0.966985,7.9289748,-9.623708)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2556"
+       xlink:href="#linearGradient3800"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="25.307449"
+       x2="33.637684"
+       y1="20.449879"
+       x1="30.189112"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2558"
+       xlink:href="#linearGradient3335"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3327"
+       id="linearGradient2587"
+       gradientUnits="userSpaceOnUse"
+       x1="32.26284"
+       y1="18.39094"
+       x2="40.463146"
+       y2="28.908117" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7300"
+       id="linearGradient3300"
+       x1="17.57398"
+       y1="32.875"
+       x2="44.321774"
+       y2="32.875"
+       gradientUnits="userSpaceOnUse" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -118,17 +353,32 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="36.060436"
-     inkscape:cx="13.280605"
-     inkscape:cy="9.4853742"
+     inkscape:zoom="25.498579"
+     inkscape:cx="8.3447229"
+     inkscape:cy="9.4891345"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:grid-bbox="true"
      inkscape:document-units="px"
-     inkscape:window-width="1274"
-     inkscape:window-height="972"
-     inkscape:window-x="6"
-     inkscape:window-y="25" />
+     inkscape:window-width="1440"
+     inkscape:window-height="847"
+     inkscape:window-x="0"
+     inkscape:window-y="22"
+     width="11px"
+     height="11px"
+     inkscape:snap-nodes="false"
+     inkscape:snap-bbox="true"
+     objecttolerance="7"
+     gridtolerance="7"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2497"
+       empspacing="5"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
   <metadata
      id="metadata7385">
     <rdf:RDF>
@@ -145,44 +395,42 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <path
-       style="opacity:1;color:black;fill:#ad7fa8;fill-opacity:1;fill-rule:evenodd;stroke:#5c3566;stroke-width:2.39089775px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       d="M 25.986174,41.636039 L 36.592776,41.636039 C 39.59798,41.636039 42.57326,40.534107 43.663843,37.393398 C 44.699482,34.410922 43.84062,28.73134 37.123106,24.135146 L 24.57196,24.135146 C 17.854446,28.377786 17.014969,34.179977 18.561553,37.570174 C 20.137148,41.023964 22.804193,41.636039 25.986174,41.636039 z "
-       id="path4308"
-       sodipodi:nodetypes="cczcczc"
-       transform="matrix(0.382691,0,0,0.457119,-3.349933,-3.532635)" />
+       style="opacity:1;color:#000000;fill:#855b8c;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3307);stroke-width:0.99999963999999997px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       d="m 5.5947456,15.499992 4.0590553,0 c 1.1500651,0 2.2886792,-0.44075079 2.7060362,-1.6969693 C 12.756166,12.610095 12.427487,10.338379 9.856753,8.4999962 l -4.8032154,0 C 2.4828029,10.196964 2.1615429,12.517723 2.7534074,13.873731 c 0.6029656,1.381444 1.6236213,1.626262 2.8413382,1.626262 z"
+       id="path3443"
+       sodipodi:nodetypes="cczcczc" />
     <path
        sodipodi:type="inkscape:offset"
        inkscape:radius="-1.1784238"
        inkscape:original="M 24.5625 24.125 C 17.844986 28.367641 17.015916 34.172303 18.5625 37.5625 C 20.138096 41.016289 22.818019 41.625 26 41.625 L 36.59375 41.625 C 39.598953 41.624999 42.565667 40.546959 43.65625 37.40625 C 44.691891 34.423774 43.842514 28.721194 37.125 24.125 L 24.5625 24.125 z "
-       style="opacity:0.45454544;color:black;fill:url(#radialGradient7306);fill-opacity:1;fill-rule:evenodd;stroke:#eeeeec;stroke-width:2.73569775px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path7281"
-       d="M 24.96875,25.3125 C 18.887883,29.293056 18.373983,34.320202 19.625,37.0625 C 20.318936,38.583645 21.166625,39.341162 22.1875,39.8125 C 23.208375,40.283838 24.484153,40.4375 26,40.4375 L 36.59375,40.4375 C 37.955442,40.4375 39.252462,40.19959 40.28125,39.65625 C 41.310038,39.11291 42.08087,38.328274 42.53125,37.03125 C 43.335253,34.715853 42.805994,29.63256 36.71875,25.3125 L 24.96875,25.3125 z "
-       transform="matrix(0.336828,0,0,0.396695,-1.924113,-1.54134)" />
+       style="opacity:0.5;color:#000000;fill:url(#linearGradient3300);fill-opacity:1;fill-rule:evenodd;stroke:#eeeeec;stroke-width:2.99680495px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       id="path3445"
+       d="m 24.96875,25.3125 c -6.080867,3.980556 -6.594767,9.007702 -5.34375,11.75 0.693936,1.521145 1.541625,2.278662 2.5625,2.75 1.020875,0.471338 2.296653,0.625 3.8125,0.625 l 10.59375,0 c 1.361692,0 2.658712,-0.23791 3.6875,-0.78125 1.028788,-0.54334 1.79962,-1.327976 2.25,-2.625 0.804003,-2.315397 0.274744,-7.39869 -5.8125,-11.71875 z"
+       transform="matrix(-0.3368281,0,0,0.3305786,17.924115,1.1322288)" />
     <path
-       transform="matrix(0.761596,0,0,0.870395,-3.301291,-7.391088)"
-       style="opacity:0.78977272;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 20.091094,19.980694 C 20.091094,21.249084 17.671238,21.620929 15.495478,22.278502 C 12.417166,21.65961 10.899861,21.249084 10.899861,19.980694 C 10.899861,18.712304 12.958697,17.682885 15.495478,17.682885 C 18.032258,17.682885 20.091094,18.712304 20.091094,19.980694 z "
-       id="path7285"
+       style="opacity:0.78977272;fill:#eeeeec;fill-opacity:1;stroke:none"
+       d="M 10,10.500001 C 10,11.88 8.6836063,12.284565 7.5,13 5.8254087,12.326649 5,11.88 5,10.500001 5,9.1200001 6.1199997,8 7.5,8 8.88,8 10,9.1199996 10,10.500001 z"
+       id="path3447"
        sodipodi:nodetypes="ccssc" />
     <path
        sodipodi:type="arc"
-       style="opacity:1;color:black;fill:url(#radialGradient4171);fill-opacity:1;fill-rule:evenodd;stroke:#b2730d;stroke-width:1.73241472px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
-       id="path4320"
+       style="opacity:1;color:#000000;fill:url(#radialGradient2556);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient2558);stroke-width:1.73241425px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
+       id="path3405"
        sodipodi:cx="31.112698"
        sodipodi:cy="19.008621"
        sodipodi:rx="8.6620579"
        sodipodi:ry="8.6620579"
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
-       transform="matrix(0.57723,0,0,0.57723,-9.459179,-5.472346)" />
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324116,0 A 8.6620579,8.6620579 0 1 1 39.774755,19.008621 z"
+       transform="matrix(0.57723,0,0,0.5772299,-10.459182,-5.4723453)" />
     <path
-       d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1  22.45064,19.008621 A 8.6620579 8.6620579 0 1 1  39.774755 19.008621 z"
+       d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324116,0 A 8.6620579,8.6620579 0 1 1 39.774755,19.008621 z"
        sodipodi:ry="8.6620579"
        sodipodi:rx="8.6620579"
        sodipodi:cy="19.008621"
        sodipodi:cx="31.112698"
-       id="path4322"
-       style="opacity:0.25;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:2.165519px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+       id="path3407"
+       style="opacity:0.625;color:#000000;fill:none;stroke:url(#linearGradient2587);stroke-width:2.16551685px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
        sodipodi:type="arc"
-       transform="matrix(0.461783,0,0,0.461784,-5.867326,-3.277881)" />
+       transform="matrix(0.461784,0,0,0.461784,-6.8673454,-3.2778773)" />
   </g>
 </svg>
Binary file pidgin/pixmaps/toolbar/16/send-file.png has changed
Binary file pidgin/pixmaps/toolbar/16/transfer.png has changed
--- a/pidgin/plugins/cap/cap.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/plugins/cap/cap.c	Thu Jun 26 09:07:56 2008 +0000
@@ -333,7 +333,7 @@
 
 static gboolean max_message_difference_cb(gpointer data) {
 	CapStatistics *stats = data;
-	purple_debug_info("cap", "Max Message Difference timeout occured\n");
+	purple_debug_info("cap", "Max Message Difference timeout occurred\n");
 	insert_cap_failure(stats);
 	stats->timeout_source_id = 0;
 	return FALSE;
--- a/pidgin/plugins/gevolution/gevolution.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/plugins/gevolution/gevolution.c	Thu Jun 26 09:07:56 2008 +0000
@@ -239,14 +239,14 @@
 		}
 		else
 		{
-			purple_notify_error(NULL, NULL, _("Unable to send e-mail"),
+			purple_notify_error(NULL, NULL, _("Unable to send email"),
 							  _("The evolution executable was not found in the PATH."));
 		}
 	}
 	else
 	{
-		purple_notify_error(NULL, NULL, _("Unable to send e-mail"),
-						  _("An e-mail address was not found for this buddy."));
+		purple_notify_error(NULL, NULL, _("Unable to send email"),
+						  _("An email address was not found for this buddy."));
 	}
 }
 
@@ -284,7 +284,7 @@
 
 	if (mail != NULL)
 	{
-		act = purple_menu_action_new(_("Send E-Mail"),
+		act = purple_menu_action_new(_("Send Email"),
 			PURPLE_CALLBACK(menu_item_send_mail_activate_cb), NULL, NULL);
 		*menu = g_list_append(*menu, act);
 		g_free(mail);
--- a/pidgin/plugins/gevolution/new_person_dialog.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/plugins/gevolution/new_person_dialog.c	Thu Jun 26 09:07:56 2008 +0000
@@ -375,9 +375,9 @@
 						 G_CALLBACK(person_info_changed_cb), dialog);
 	}
 
-	/* E-Mail address field */
+	/* Email address field */
 	dialog->email = gtk_entry_new();
-	add_pref_box(sg2, vbox2, _("E-mail:"), dialog->email);
+	add_pref_box(sg2, vbox2, _("Email:"), dialog->email);
 
 	if (contact != NULL)
 	{
--- a/pidgin/plugins/spellchk.c	Thu Jun 26 08:42:49 2008 +0000
+++ b/pidgin/plugins/spellchk.c	Thu Jun 26 09:07:56 2008 +0000
@@ -1740,6 +1740,7 @@
 			"BAD wroking\nGOOD working\n"
 			"BAD wtih\nGOOD with\n"
 			"BAD wuould\nGOOD would\n"
+			"BAD wud\nGOOD would\n"
 			"BAD wut\nGOOD what\n"
 			"BAD wya\nGOOD way\n"
 			"BAD y\nGOOD why\n"
--- a/po/POTFILES.in	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/POTFILES.in	Thu Jun 26 09:07:56 2008 +0000
@@ -180,6 +180,7 @@
 libpurple/request.h
 libpurple/savedstatuses.c
 libpurple/server.c
+libpurple/smiley.c
 libpurple/sslconn.c
 libpurple/status.c
 libpurple/util.c
@@ -209,6 +210,7 @@
 pidgin/gtkrequest.c
 pidgin/gtkroomlist.c
 pidgin/gtksavedstatuses.c
+pidgin/gtksmiley.c
 pidgin/gtksound.c
 pidgin/gtkstatusbox.c
 pidgin/gtkutils.c
--- a/po/af.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/af.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2773,7 +2773,7 @@
 msgid "Last name"
 msgstr "Van"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-pos"
 
 msgid "AIM Account"
@@ -2798,9 +2798,6 @@
 msgid "Purple Person"
 msgstr "Pers persoon"
 
-msgid "E-mail"
-msgstr "E-pos"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3880,7 +3877,7 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "Vul een of meer velde in om te soek vir passende XMPP-gebruikers."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "E-posadres"
 
 msgid "Search for XMPP users"
@@ -4614,7 +4611,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "Sintaksfout (dalk 'n kliëntfout)"
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Ongeldige e-posadres"
 
 msgid "User does not exist"
@@ -4971,7 +4968,7 @@
 msgid "Home Fax"
 msgstr "Huisfaks"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Persoonlike e-pos"
 
 msgid "Personal IM"
@@ -5014,7 +5011,7 @@
 msgid "Work Fax"
 msgstr "Werkfaks"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Werks-e-pos"
 
 msgid "Work IM"
@@ -6357,7 +6354,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6501,11 +6498,11 @@
 msgstr[1] "Die volgende skermname word met %s geassosieer"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Geen resultate gekry vir e-posadres %s nie"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "U behoort 'n e-pos te ontvang wat vra dat u %s bevestig."
 
 msgid "Account Confirmation Requested"
@@ -6534,7 +6531,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Fout 0x%04x: Kan nie die e-posadres verander nie omdat daar reeds 'n versoek "
@@ -6542,7 +6539,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Fout 0x%04x: Kon nie e-posadres verander nie omdat die gegewe adres te veel "
@@ -6550,7 +6547,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Fout 0x%04x: Kon nie e-posadres verander nie omdat die gegewe adres ongeldig "
@@ -6564,7 +6561,7 @@
 msgstr "Kon nie rekeninginligting verander nie"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Die e-posadres vir %s is %s"
 
 msgid "Account Info"
@@ -6779,13 +6776,13 @@
 "U kan magtiging van hierdie vriende weer aanvra, deur op hulle te regskliek "
 "en \"Vra weer magtiging aan\" te kies."
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Vind vriend volgens e-pos"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Soek vir 'n vriend volgens e-posadres"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Gee die e-posadres van die vriend waarvoor u soek."
 
 msgid "_Search"
@@ -6808,16 +6805,16 @@
 msgid "Confirm Account"
 msgstr "Bevestig rekening"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Wys e-posadres wat tans geregistreer is"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Verander e-posadres wat tans geregistreer is..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Wys vriende wat op magtiging wag"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Soek vir vriend met e-posadres..."
 
 msgid "Search for Buddy by Information"
@@ -6883,9 +6880,6 @@
 msgid "College"
 msgstr "Kollege"
 
-msgid "Email"
-msgstr "E-pos"
-
 msgid "Zipcode"
 msgstr "Poskode"
 
@@ -8645,7 +8639,7 @@
 msgstr "Gebruikernaam: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-pos: \t\t%s\n"
 
 #, c-format
@@ -8883,7 +8877,7 @@
 msgid "Dir service temporarily unavailable."
 msgstr "Gidsdiens is tydelik nie beskikbaar nie."
 
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "E-posopsoek ingeperk."
 
 msgid "Keyword ignored."
@@ -11207,7 +11201,7 @@
 msgid "Enable typing notification"
 msgstr "Aktiveer tikkennisgewings"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopieer e-posadres"
 
 msgid "_Open Link in Browser"
@@ -11561,8 +11555,8 @@
 msgstr[1] "%s het %d nuwe boodskappe."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d nuwe e-pos.</b>"
 msgstr[1] "<b>%d nuwe e-posse.</b>"
 
@@ -12597,19 +12591,19 @@
 msgid "_Associate Buddy"
 msgstr "_Assosieer vriend"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Kan nie e-pos stuur nie"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Die evolution-programlêer is nie in die PATH gevind nie."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Daar is nie 'n e-posadres vir hierdie vriend gevind nie."
 
 msgid "Add to Address Book"
 msgstr "Voeg by adresboek"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Stuur e-pos"
 
 #. Configuration frame
@@ -12655,7 +12649,7 @@
 msgid "Last name:"
 msgstr "Van:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-pos:"
 
 #. *< type
--- a/po/am.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/am.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3553,7 +3553,7 @@
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
 #, fuzzy
-msgid "E-Mail"
+msgid "Email"
 msgstr "ኢሜይል"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3592,17 +3592,6 @@
 msgid "Purple Person"
 msgstr "<አዲስ ተጠቃሚ>"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "ኢሜይል"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5297,7 +5286,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
 #, fuzzy
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "ኢሜያል አድራሻ"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6387,7 +6376,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, fuzzy, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "ኢሜያል አድራሻ"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6949,7 +6938,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "ድረ-ገጽ፦"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7020,7 +7009,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "ኢሜይል"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8650,7 +8639,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8842,12 +8831,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8881,21 +8870,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -8906,7 +8895,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9158,15 +9147,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9197,11 +9186,11 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9210,7 +9199,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "የቢሮ መረጃ፦"
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9298,10 +9287,6 @@
 msgid "College"
 msgstr ""
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "ኢሜይል"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr ""
@@ -12079,7 +12064,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "ኢሜይል"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12427,7 +12412,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15374,7 +15359,7 @@
 
 #: ../pidgin/gtkimhtml.c:1598
 #, fuzzy
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "ኢሜያል አድራሻ"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15767,8 +15752,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17039,7 +17024,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "ተገናኝቷል"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17047,7 +17032,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17056,7 +17041,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "ኢሜይል"
 
 #. Configuration frame
@@ -17119,7 +17104,7 @@
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
 #, fuzzy
-msgid "E-mail:"
+msgid "Email:"
 msgstr "ኢሜይል"
 
 #. *< type
--- a/po/ar.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ar.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3808,7 +3808,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:555
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1068
-msgid "E-Mail"
+msgid "Email"
 msgstr "البريد الإلكتروني"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:401
@@ -3840,16 +3840,6 @@
 msgid "Purple Person"
 msgstr "شخص أرجواني"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:704
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:998
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "البريد الإلكتروني"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "بونجور"
@@ -5531,7 +5521,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3761
 #: ../libpurple/protocols/oscar/oscar.c:3770
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "عنوان البريد الالكتروني"
 
 #: ../libpurple/protocols/jabber/buddy.c:2470
@@ -6594,7 +6584,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "عنوان بريد إلكترونى غير صالح"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7204,7 +7194,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1826
 #: ../libpurple/protocols/msnp9/msn.c:1667
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "البريد الإلكتروني الشخصي"
 
 #: ../libpurple/protocols/msn/msn.c:1827
@@ -7280,7 +7270,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1857
 #: ../libpurple/protocols/msnp9/msn.c:1698
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "البريد الإلكتروني للعمل"
 
 #: ../libpurple/protocols/msn/msn.c:1858
@@ -9086,7 +9076,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2507
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9293,12 +9283,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3995
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "لا توجد نتائج لعنوان البريد الإلكتروني %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4016
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "ستتسلم بريدا إلكترونيا يسألك توكيد %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:4018
@@ -9327,14 +9317,14 @@
 #: ../libpurple/protocols/oscar/oscar.c:4057
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr "خطأ 0x%04x: تعذّر تغيير عنوان البريد الإلكتروني لوجود طلب سابق لهذا الاسم."
 
 #: ../libpurple/protocols/oscar/oscar.c:4059
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "خطأ 0x%04x: تعذّر تغيير عنوان البريد الإلكتروني لأن العنوان المعطى توجد أسماء "
@@ -9343,7 +9333,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4061
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "خطأ 0x%04x: تعذّر تغيير عنوان البريد الإلكتروني لأن العنوان المعطى غير صالح."
 
@@ -9358,7 +9348,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4071
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "عنوان البريد الإلكتروني لـ %s هو %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4073
@@ -9622,15 +9612,15 @@
 "اختيار \"أعِد طلب التصريح.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6361
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "ابحث عن صديق بالبريد"
 
 #: ../libpurple/protocols/oscar/oscar.c:6362
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "ابحث عن صديق بواسطة عنوان بريده الإلكتروني"
 
 #: ../libpurple/protocols/oscar/oscar.c:6363
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "أدخل عنوان البريد الإلكتروني للصديق الذي تبحث عنه."
 
 #: ../libpurple/protocols/oscar/oscar.c:6366
@@ -9660,11 +9650,11 @@
 msgstr "أكّد الحساب"
 
 #: ../libpurple/protocols/oscar/oscar.c:6560
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "اعرض عناوين البريد الإلكتروني المسجلة حاليًا"
 
 #: ../libpurple/protocols/oscar/oscar.c:6564
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "غيّر عناوين البريد الإلكتروني المسجلة حاليًا..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6571
@@ -9672,7 +9662,7 @@
 msgstr "اعرض الأصدقاء الذين ينتظرون تصريحات"
 
 #: ../libpurple/protocols/oscar/oscar.c:6577
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "ابحث عن صديق بواسطة عنوان البريد الإلكتروني..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6582
@@ -9753,10 +9743,6 @@
 msgid "College"
 msgstr "الكليّة"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "البريد الإلكتروني"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "الرّمز البريديّ"
@@ -12503,7 +12489,7 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "البريد الإلكتروني: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:370
@@ -12820,7 +12806,7 @@
 msgstr "خدمة الدليل غير متاحة مؤقتا."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "البحث في البريد مقيد."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15893,7 +15879,7 @@
 msgstr "لون رسم اسم رسالة إجراء."
 
 #: ../pidgin/gtkimhtml.c:1636
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "ا_نسخ عنوان البريد الإلكتروني"
 
 #: ../pidgin/gtkimhtml.c:1648
@@ -16310,8 +16296,8 @@
 
 #: ../pidgin/gtknotify.c:575
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>لا بريد جديد.</b>"
 msgstr[1] "<b>لديك رسالة بريد واحدة جديدة.</b>"
 msgstr[2] "<b>لديك رسالتي بريد جديدتين.</b>"
@@ -17597,7 +17583,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:242
 #: ../pidgin/plugins/gevolution/gevolution.c:248
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "تعذّر إرسال بريد إلكتروني"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:243
@@ -17605,7 +17591,7 @@
 msgstr "لم يُعثر على ملف التشغيل لبرمجية إفلوشن في المسار (PATH)"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:249
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "لم يُعثر على عنوان بريد إلكتروني لهذا الصديق."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:275
@@ -17613,7 +17599,7 @@
 msgstr "أضف إلى دفتر العناوين"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:287
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "أرسل بريدا إلكترونيا"
 
 #. Configuration frame
@@ -17671,7 +17657,7 @@
 msgstr "الاسم الأخير:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:380
-msgid "E-mail:"
+msgid "Email:"
 msgstr "البريد الإلكتروني:"
 
 #. *< type
--- a/po/az.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/az.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3563,7 +3563,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr ""
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3599,17 +3599,6 @@
 msgid "Purple Person"
 msgstr "Yeni Şəxs"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "E-poçt:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5292,8 +5281,8 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
-msgstr "E-Poçt Ünvanı"
+msgid "Email Address"
+msgstr "Epoçt Ünvanı"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
 #: ../libpurple/protocols/jabber/buddy.c:2411
@@ -6350,7 +6339,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr ""
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6905,7 +6894,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Faylı Göndər"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6971,7 +6960,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Faylı Göndər"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8584,7 +8573,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8768,12 +8757,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8807,21 +8796,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -8832,7 +8821,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9081,15 +9070,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9121,11 +9110,11 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9133,7 +9122,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9222,10 +9211,6 @@
 msgid "College"
 msgstr "_Yığcamlaşdır"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Epoçt"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr ""
@@ -11962,8 +11947,8 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-poçt:"
+msgid "Email: \t\t%s\n"
+msgstr "Epoçt:"
 
 #: ../libpurple/protocols/silc/util.c:364
 #: ../libpurple/protocols/silc10/util.c:361
@@ -12310,7 +12295,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15245,7 +15230,7 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15647,8 +15632,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -16927,7 +16912,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Soket açıla bilmədi"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16935,7 +16920,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16944,7 +16929,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Faylı Göndər"
 
 #. Configuration frame
@@ -17003,8 +16988,8 @@
 msgstr "Soyad:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-poçt:"
+msgid "Email:"
+msgstr "Epoçt:"
 
 #. *< type
 #. *< ui_requirement
@@ -18138,7 +18123,7 @@
 #~ msgid "%s (%d new/%d total)"
 #~ msgstr "%s (%d yeni/%d toplam)"
 
-#~ msgid "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
 #~ msgstr "Poçtu hər X saniyədə bir yoxla.\n"
 
 #~ msgid "Auto-login"
--- a/po/be@latin.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/be@latin.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2766,8 +2766,8 @@
 msgid "Last name"
 msgstr "Proźvišča"
 
-msgid "E-Mail"
-msgstr "E-mail"
+msgid "Email"
+msgstr "Email"
 
 msgid "AIM Account"
 msgstr "Kont AIM"
@@ -2791,9 +2791,6 @@
 msgid "Purple Person"
 msgstr "Asoba Purple"
 
-msgid "E-mail"
-msgstr "E-mail"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3869,8 +3866,8 @@
 msgstr ""
 "Zapoŭni adno ci niekalki paloŭ, kab šukać adpaviednych karystalnikaŭ XMPP."
 
-msgid "E-Mail Address"
-msgstr "Adras e-mail"
+msgid "Email Address"
+msgstr "Adras email"
 
 msgid "Search for XMPP users"
 msgstr "Šukaj karystalnikaŭ XMPP"
@@ -4599,8 +4596,8 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "Syntaksyčnaja pamyłka (mahčyma, pamyłka klijenta)"
 
-msgid "Invalid e-mail address"
-msgstr "Niapravilny adras e-mail"
+msgid "Invalid email address"
+msgstr "Niapravilny adras email"
 
 msgid "User does not exist"
 msgstr "Karystalnik nie isnuje"
@@ -4957,8 +4954,8 @@
 msgid "Home Fax"
 msgstr "Chatni faks"
 
-msgid "Personal E-Mail"
-msgstr "Persanalny E-mail"
+msgid "Personal Email"
+msgstr "Persanalny Email"
 
 msgid "Personal IM"
 msgstr "Persanalny kont chutkich paviedamleńniaŭ"
@@ -5000,8 +4997,8 @@
 msgid "Work Fax"
 msgstr "Pracoŭny faks"
 
-msgid "Work E-Mail"
-msgstr "Pracoŭny E-mail"
+msgid "Work Email"
+msgstr "Pracoŭny Email"
 
 msgid "Work IM"
 msgstr "Pracoŭny kont chutkich paviedamleńniaŭ"
@@ -6214,7 +6211,7 @@
 "only letters, numbers and spaces, or contain only numbers."
 msgstr ""
 "Niemahčyma ŭvajści: niemahčyma ŭvajści jak %s, bo nazva karystalnika "
-"niapravilnaja. Nazvy karystalnikaŭ musiać być pravilnymi adrasami e-mail "
+"niapravilnaja. Nazvy karystalnikaŭ musiać być pravilnymi adrasami email "
 "albo pačynacca ź litary i ŭtrymlivać tolki litary, ličby j prabieły, albo "
 "tolki ličby."
 
@@ -6352,12 +6349,12 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Ty atrymaŭ/atrymała e-mail ICQ ad %s [%s]\n"
+"Ty atrymaŭ/atrymała email ICQ ad %s [%s]\n"
 "\n"
 "Paviedamleńnie:\n"
 "%s"
@@ -6504,11 +6501,11 @@
 msgstr[2] "Nastupnyja nazvy karystalnikaŭ źviazanyja z %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Ničoha nia znojdziena dla adrasu e-maila %s"
-
-#, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "No results found for email address %s"
+msgstr "Ničoha nia znojdziena dla adrasu emaila %s"
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
 msgstr "Ty pavinny atrymać list z prośbaj paćvierdzić %s."
 
 msgid "Account Confirmation Requested"
@@ -6538,26 +6535,26 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
-"Pamyłka 0x%04x: Niemahčyma źmianić adras e-mail, bo ŭžo adzin zapyt čakaje "
+"Pamyłka 0x%04x: Niemahčyma źmianić adras email, bo ŭžo adzin zapyt čakaje "
 "raźviazańnia dla hetaj nazvy karystalnika."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
-"Pamyłka 0x%04x: Niemahčyma źmianić adras e-mail, bo akreśleny adras maje "
+"Pamyłka 0x%04x: Niemahčyma źmianić adras email, bo akreśleny adras maje "
 "nadta šmat nazvaŭ karystalnikaŭ, źviazanych ź im."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Pamyłka 0x%04x: Niemahčyma źmianić adras e-mail, bo akreśleny adras "
+"Pamyłka 0x%04x: Niemahčyma źmianić adras email, bo akreśleny adras "
 "niapravilny."
 
 #, c-format
@@ -6568,8 +6565,8 @@
 msgstr "Pamyłka źmieny źviestak kontu"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "Adras e-mail dla %s - %s"
+msgid "The email address for %s is %s"
+msgstr "Adras email dla %s - %s"
 
 msgid "Account Info"
 msgstr "Źviestki kontu"
@@ -6639,7 +6636,7 @@
 "numbers and spaces, or contain only numbers."
 msgstr ""
 "Niemahčyma dadać siabra %s, bo nazva karystalnika niapravilnaja. Hetyja "
-"nazvy pavinny być albo pravilnym adrasam e-mail, albo pačynacca ź litary i "
+"nazvy pavinny być albo pravilnym adrasam email, albo pačynacca ź litary i "
 "ŭtrymlivać tolki litary, ličby j prabieły, albo ŭtrymlivać tolki ličby."
 
 msgid "Unable To Add"
@@ -6793,14 +6790,14 @@
 "Ty možaš pierazapytać aŭtaryzacyi ŭ hetych siabroŭ, praz pravy klik i "
 "abraŭšy \"Pierazapytaj aŭtaryzacyi\"."
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Šukaj siabra pavodle e-maiłu"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Šukaj siabra pavodle adrasu e-maiłu"
 
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Akreśl adras e-mail siabra, jakoha ty šukaješ."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Akreśl adras email siabra, jakoha ty šukaješ."
 
 msgid "_Search"
 msgstr "Š_ukaj"
@@ -6822,17 +6819,17 @@
 msgid "Confirm Account"
 msgstr "Paćvierdź kont"
 
-msgid "Display Currently Registered E-Mail Address"
-msgstr "Pakažy dziejna zarehistravany adras e-mail"
-
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "Źmiani dziejna zarehistravany adras e-mail..."
+msgid "Display Currently Registered Email Address"
+msgstr "Pakažy dziejna zarehistravany adras email"
+
+msgid "Change Currently Registered Email Address..."
+msgstr "Źmiani dziejna zarehistravany adras email..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Pakažy siabroŭ, što čakajuć aŭtaryzacyi"
 
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Šukaj siabra pavodle adrasu e-mail..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Šukaj siabra pavodle adrasu email..."
 
 msgid "Search for Buddy by Information"
 msgstr "Šukaj siabra pavodle źviestak"
@@ -6896,9 +6893,6 @@
 msgid "College"
 msgstr "Kaledž"
 
-msgid "Email"
-msgstr "E-mail"
-
 msgid "Zipcode"
 msgstr "Zip-kod"
 
@@ -8657,8 +8651,8 @@
 msgstr "Nazva karystalnika: %s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-mail: %s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: %s\n"
 
 #, c-format
 msgid "Host Name: \t%s\n"
@@ -8895,7 +8889,7 @@
 msgid "Dir service temporarily unavailable."
 msgstr "Servis katalohu časova niedastupny."
 
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Pošuk pavodle e-maiłu abmiežavany."
 
 msgid "Keyword ignored."
@@ -11234,8 +11228,8 @@
 msgid "Enable typing notification"
 msgstr "Uklučy infarmavańni pra nabor tekstu"
 
-msgid "_Copy E-Mail Address"
-msgstr "_Skapijuj adras e-mail"
+msgid "_Copy Email Address"
+msgstr "_Skapijuj adras email"
 
 msgid "_Open Link in Browser"
 msgstr "_Adčyni spasyłku ŭ hartačy"
@@ -11587,8 +11581,8 @@
 msgstr[2] "%s maje %d novych paviedamleńniaŭ."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d novy list.</b>"
 msgstr[1] "<b>%d novyja listy.</b>"
 msgstr[2] "<b>%d novych listoŭ.</b>"
@@ -12618,19 +12612,19 @@
 msgid "_Associate Buddy"
 msgstr "_Asacyjuj siabra"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Niemahčyma dasłać list"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Prahrama evolution nia znojdzienaja ŭ ściežcy pošuku prahram PATH."
 
-msgid "An e-mail address was not found for this buddy."
-msgstr "Adras e-mail dla hetaha siabra nia znojdzieny."
+msgid "An email address was not found for this buddy."
+msgstr "Adras email dla hetaha siabra nia znojdzieny."
 
 msgid "Add to Address Book"
 msgstr "Dadaj u adrasnuju knihu"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Dašli list"
 
 #. Configuration frame
@@ -12676,8 +12670,8 @@
 msgid "Last name:"
 msgstr "Proźvišča:"
 
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/bg.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/bg.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3592,7 +3592,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Е-поща"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3627,17 +3627,6 @@
 msgid "Purple Person"
 msgstr "Нов потребител"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "Е-поща:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5308,7 +5297,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Е-поща"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6379,7 +6368,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Неправилен адрес на е-поща"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6936,7 +6925,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Лична страница в Интернет"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7005,7 +6994,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Е-поща"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8646,7 +8635,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8834,12 +8823,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Няма резултати за електронен адрес %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 "Трябва да получите електронно съобщение, в което се иска да потвърдите %s."
 
@@ -8877,21 +8866,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Грешка 0x%04x: Електронният адрес не може да бъде сменен, тъй като "
@@ -8904,7 +8893,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Е-пощата на %s е %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9179,15 +9168,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Търсене потребител по електронен адрес"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Търсене на потребител по електронен адрес"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Задаване електронен адрес на потребителя, когото търсите."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9220,12 +9209,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Показване на регистрираните до момента адреси"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Промяна на регистрираните до момента адреси..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9234,7 +9223,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Търсене на потребител по електронен адрес..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9329,10 +9318,6 @@
 msgid "College"
 msgstr "_Разгръщане"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Е-поща"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12107,7 +12092,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Е-поща: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12460,7 +12445,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15407,7 +15392,7 @@
 msgstr "Цвят за оцветяване на хипер-връзките."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Копиране на адреса на ел. поща"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15820,8 +15805,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>Настройки на приставката</b>"
 msgstr[1] "<b>Настройки на приставката</b>"
 
@@ -17100,7 +17085,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Писмото не може да бъде изпратено"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17108,7 +17093,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17116,7 +17101,7 @@
 msgstr "Добавяне към адресника"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Изпращане на е-поща"
 
 #. Configuration frame
@@ -17176,7 +17161,7 @@
 msgstr "Фамилия:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Е-поща:"
 
 #. *< type
--- a/po/bn.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/bn.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3557,19 +3557,6 @@
 msgid "Last name"
 msgstr "পদবী"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:357
-#: ../libpurple/protocols/jabber/buddy.c:295
-#: ../libpurple/protocols/jabber/buddy.c:1325
-#: ../libpurple/protocols/jabber/buddy.c:1335
-#: ../libpurple/protocols/jabber/buddy.c:2216
-#: ../libpurple/protocols/silc/ops.c:1041
-#: ../libpurple/protocols/silc/util.c:555
-#: ../libpurple/protocols/silc10/ops.c:1075
-#: ../libpurple/protocols/silc10/util.c:551
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
-msgstr "ইমেইল"
-
 #: ../libpurple/protocols/bonjour/bonjour.c:360
 #: ../libpurple/protocols/bonjour/bonjour.c:665
 msgid "AIM Account"
@@ -3601,16 +3588,6 @@
 msgid "Purple Person"
 msgstr "নতুন ব্যক্তি"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "ই-মেইল"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5278,7 +5255,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "ইমেইল"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6342,7 +6319,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "অবৈধ ই‌মেইল ঠিকানা"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6887,7 +6864,7 @@
 msgstr "বাসার ফ্যাক্স"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "ব্যক্তিগত ইমেইল"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6949,7 +6926,7 @@
 msgstr "অফিস ফ্যাক্স"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "অফিস ইমেইল"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8573,7 +8550,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8754,12 +8731,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8793,21 +8770,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -8818,7 +8795,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9067,15 +9044,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9105,11 +9082,11 @@
 msgstr "অ্যাকাউন্ট নিশ্চিতকরণ"
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9117,7 +9094,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -11877,7 +11854,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "ইমেইল: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12216,7 +12193,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15079,7 +15056,7 @@
 msgstr "হাইপারলিঙ্কের ওপর মাউস থাকাকালীন রং"
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "ইমেইল ঠিকানা কপি করো (_C)"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15507,8 +15484,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>আপনার %d গুলো নতুন ই-মেইল আছে।</b>"
 msgstr[1] "<b>আপনার %d গুলো নতুন ই-মেইল আছে।</b>"
 
@@ -16754,7 +16731,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "ইমেইল পাঠাতে ব্যর্থ"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16762,7 +16739,7 @@
 msgstr "PATH-এর মধ্যে ইভোল্যুশনের এক্সেকিউটিবল্‌টি পাওয়া যায়নি। "
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16770,7 +16747,7 @@
 msgstr "ঠিকানার বইয়ে যোগ করুন"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "ইমেইল পাঠান"
 
 #. Configuration frame
@@ -16829,7 +16806,7 @@
 msgstr "পদবী:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "ইমেইল:"
 
 #. *< type
--- a/po/bs.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/bs.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3617,7 +3617,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3653,17 +3653,6 @@
 msgid "Purple Person"
 msgstr "Nova osoba"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "Email:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5424,7 +5413,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Email adresa"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6509,8 +6498,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Pogrešna e-mail adresa"
+msgid "Invalid email address"
+msgstr "Pogrešna email adresa"
 
 #: ../libpurple/protocols/msn/error.c:49
 #, c-format
@@ -7073,7 +7062,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Titula"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7142,7 +7131,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Email"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8828,12 +8817,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Primili ste ICQ e-mail od %s [%s]\n"
+"Primili ste ICQ email od %s [%s]\n"
 "\n"
 "Poruka je:\n"
 "%s"
@@ -9019,13 +9008,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Nema pronadenih rezultata za e-mail adresu %s"
+msgid "No results found for email address %s"
+msgstr "Nema pronadenih rezultata za email adresu %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Trebali biste dobiti e-mail da potvrdite %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "Trebali biste dobiti email da potvrdite %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
 msgid "Account Confirmation Requested"
@@ -9064,28 +9053,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
-"Greška 0x%04x: Nije moguce promjeniti e-mail adresu, jer vec postoji zahtjev "
+"Greška 0x%04x: Nije moguce promjeniti email adresu, jer vec postoji zahtjev "
 "u toku za ovo ime."
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
-"Greška 0x%04x: Nije moguce promjeniti e-mail adresu, jer data adresa ima i "
+"Greška 0x%04x: Nije moguce promjeniti email adresu, jer data adresa ima i "
 "suviše imena asociranih s njom."
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Greška 0x%04x: Nije moguce promjeniti e-mail adresu, jer je data adresa "
+"Greška 0x%04x: Nije moguce promjeniti email adresu, jer je data adresa "
 "pogrešna."
 
 #: ../libpurple/protocols/oscar/oscar.c:4023
@@ -9095,7 +9084,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Email adresa za %s je %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9378,16 +9367,16 @@
 "cete na njih desno-kliknuti i izabrati \"Ponovni zahtjev autorizacije.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
-msgstr "Potražite prijatelja preko e-maila"
+msgid "Find Buddy by Email"
+msgstr "Potražite prijatelja preko emaila"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
-msgstr "Pretraga za prijateljem preko e-mail adrese"
+msgid "Search for a buddy by email address"
+msgstr "Pretraga za prijateljem preko email adrese"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Ukucajte e-mail adresu prijatelja, kojeg tražite."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Ukucajte email adresu prijatelja, kojeg tražite."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
 #, fuzzy
@@ -9419,12 +9408,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Prikaži trenutno registrovanu adresu"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Promjeni trenutno registrovanu adresu..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9433,8 +9422,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Traži prijatelja preko e-maila..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Traži prijatelja preko emaila..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
 msgid "Search for Buddy by Information"
@@ -9526,10 +9515,6 @@
 msgid "College"
 msgstr "_Collapse"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12373,7 +12358,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12728,8 +12713,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "Pregledanje e-maila zabranjeno."
+msgid "Email lookup restricted."
+msgstr "Pregledanje emaila zabranjeno."
 
 #: ../libpurple/protocols/toc/toc.c:533
 #, c-format
@@ -15750,8 +15735,8 @@
 msgstr "Boja za bojenje hiperlinkova."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
-msgstr "_Kopiraj e-mail adresu"
+msgid "_Copy Email Address"
+msgstr "_Kopiraj email adresu"
 
 #: ../pidgin/gtkimhtml.c:1610
 msgid "_Open Link in Browser"
@@ -16149,8 +16134,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17472,7 +17457,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Nije moguce poslati poruku."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17480,7 +17465,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17489,7 +17474,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Email"
 
 #. Configuration frame
@@ -17549,7 +17534,7 @@
 msgstr "Prezime:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Email:"
 
 #. *< type
@@ -18473,7 +18458,7 @@
 #~ msgid "%s (%d new/%d total)"
 #~ msgstr "%s (%d novo/%d totalno)"
 
-#~ msgid "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
 #~ msgstr "Provjeri mail svakih X sekundi.\n"
 
 #~ msgid "Use last matching buddy"
--- a/po/ca.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ca.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2804,7 +2804,7 @@
 msgid "Last name"
 msgstr "Cognoms"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "Correu electrònic"
 
 msgid "AIM Account"
@@ -2830,9 +2830,6 @@
 msgid "Purple Person"
 msgstr "Persona porpra"
 
-msgid "E-mail"
-msgstr "Correu electrònic"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3924,7 +3921,7 @@
 msgstr ""
 "Introduïu un o més camps per cercar usuaris de XMPP que hi coincideixin."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Adreça de correu electrònic"
 
 msgid "Search for XMPP users"
@@ -4662,7 +4659,7 @@
 msgstr "Error de sintaxi (probablement errada del client)"
 
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "L'adreça de correu no és vàlida"
 
 #, c-format
@@ -5068,7 +5065,7 @@
 msgid "Home Fax"
 msgstr "Fax de casa"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Correu electrònic personal"
 
 msgid "Personal IM"
@@ -5112,7 +5109,7 @@
 msgid "Work Fax"
 msgstr "Fax de la feina"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Correu electrònic de la feina"
 
 msgid "Work IM"
@@ -6497,7 +6494,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6640,11 +6637,11 @@
 msgstr[1] "Els següents noms d'usuari estan associats amb %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "No s'han obtingut resultats per a l'adreça de correu %s"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Hauríeu de rebre un correu demanant-vos confirmar %s."
 
 msgid "Account Confirmation Requested"
@@ -6673,7 +6670,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Error 0x%04x: no s'ha pogut canviar l'adreça de correu electrònic perquè ja "
@@ -6681,7 +6678,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Error 0x%04x: no s'ha pogut canviar l'adreça de correu electrònic perquè "
@@ -6689,7 +6686,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Error 0x%04x: No s'ha pogut canviar l'adreça de correu perquè l'adreça "
@@ -6703,7 +6700,7 @@
 msgstr "S'ha produït un error en canviar la informació del compte"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "L'adreça de correu per a %s és %s"
 
 msgid "Account Info"
@@ -6918,13 +6915,13 @@
 "Podeu tornar a demanar l'autorització d'aquests amics fent-hi clic a sobre "
 "amb el botó dret del ratolí, i seleccionant «Torna a demanar l'autorització»."
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Troba un amic per l'adreça de correu"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Cerca un amic per l'adreça de correu"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Escriviu l'adreça de correu de l'amic que estigueu cercant."
 
 msgid "_Search"
@@ -6947,16 +6944,16 @@
 msgid "Confirm Account"
 msgstr "Confirma el compte"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Mostra l'adreça actualment registrada"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Canvia l'adreça actualment registrada..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Mostra els amics pendents d'autorització"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Cerca un amic per l'adreça de correu..."
 
 msgid "Search for Buddy by Information"
@@ -7024,9 +7021,6 @@
 msgid "College"
 msgstr "Col·legi"
 
-msgid "Email"
-msgstr "Correu electrònic"
-
 msgid "Zipcode"
 msgstr "Codi postal"
 
@@ -8789,7 +8783,7 @@
 msgstr "Nom d'usuari: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Correu electrònic: \t\t%s\n"
 
 #, c-format
@@ -9048,7 +9042,7 @@
 msgstr "Servei de directori no disponible temporalment."
 
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Recerca per adreça de correu electrònic restringida."
 
 #, c-format
@@ -11433,7 +11427,7 @@
 msgid "Enable typing notification"
 msgstr "Habilita les notificacions de que s'està escrivint"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Copia l'adreça de correu"
 
 msgid "_Open Link in Browser"
@@ -11796,8 +11790,8 @@
 msgstr[1] "%s té %d missatges nous."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>Teniu %d correu electrònic.</b>"
 msgstr[1] "<b>Teniu %d correus electrònics.</b>"
 
@@ -12845,20 +12839,20 @@
 msgid "_Associate Buddy"
 msgstr "_Associa l'amic"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "No s'ha pogut enviar el correu electrònic."
 
 msgid "The evolution executable was not found in the PATH."
 msgstr ""
 "No s'ha trobat l'executable de l'Evolution a la variable d'entorn PATH."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "No s'ha trobat cap adreça de correu electrònic per a aquest amic."
 
 msgid "Add to Address Book"
 msgstr "Afegeix a la llibreta d'adreces"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Envia un correu"
 
 #. Configuration frame
@@ -12906,7 +12900,7 @@
 msgid "Last name:"
 msgstr "Cognoms:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Correu electrònic:"
 
 #. *< type
@@ -14971,7 +14965,7 @@
 #~ msgid "Check Mail"
 #~ msgstr "Comprova el correu"
 
-#~ msgid "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
 #~ msgstr "Comprova el correu electrònic cada X segons.\n"
 
 #~ msgid "Auto-login"
--- a/po/ca@valencia.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ca@valencia.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3586,7 +3586,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Adreça electrònica"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3618,16 +3618,6 @@
 msgid "Purple Person"
 msgstr "Persona Purple"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "Adreça electrònica"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5328,7 +5318,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Adreça electrònica"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6404,7 +6394,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "L'adreça electrònica no és vàlida"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6946,7 +6936,7 @@
 msgstr "Fax de casa"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Adreça electrònica personal"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7009,7 +6999,7 @@
 msgstr "Fax faena"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Adreça electrònica faena"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8704,7 +8694,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8892,12 +8882,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "No s'han obtingut resultats per a l'adreça electrònica %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Hauríeu de rebre un correu demanant-vos confirmar %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8936,7 +8926,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "Error 0x%04x: no s'ha pogut canviar l'adreça electrònica perquè ja hi ha una "
@@ -8945,7 +8935,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "Error 0x%04x: no s'ha pogut canviar l'adreça electrònica perquè l'adreça "
@@ -8954,7 +8944,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Error 0x%04x: No s'ha pogut canviar l'adreça electrònica perquè l'adreça "
@@ -8967,7 +8957,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "L'adreça electrònica per a %s és %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9246,15 +9236,15 @@
 "amb el botó dret del ratolí, i seleccionant «Torna a demanar l'autorització»."
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Troba un amic per l'adreça electrònica"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Cerca un amic per l'adreça electrònica"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Escriviu l'adreça electrònica de l'amic que estigueu cercant."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9284,11 +9274,11 @@
 msgstr "Confirma el compte"
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Mostra l'adreça actualment registrada"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Canvia l'adreça actualment registrada..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9296,7 +9286,7 @@
 msgstr "Mostra els amics pendents d'autorització"
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Cerca un amic per l'adreça electrònica..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9387,10 +9377,6 @@
 msgid "College"
 msgstr "Col·legi"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Adreça electrònica"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Codi postal"
@@ -12153,7 +12139,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Adreça electrònica: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12498,7 +12484,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "La consulta d'adreces electròniques està restringida."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15422,7 +15408,7 @@
 "sobre."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Copia l'adreça electrònica"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15870,8 +15856,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>Teniu %d correu electrònic nou.</b>"
 msgstr[1] "<b>Teniu %d correus electrònics nous.</b>"
 
@@ -17129,7 +17115,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "No s'ha pogut enviar el correu electrònic."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17138,7 +17124,7 @@
 "No s'ha trobat l'executable de l'Evolution a la variable d'entorn PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "No s'ha trobat cap adreça electrònica per a este amic."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17146,7 +17132,7 @@
 msgstr "Afig a la llibreta d'adreces"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Envia un correu"
 
 #. Configuration frame
@@ -17205,7 +17191,7 @@
 msgstr "Cognoms:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Adreça electrònica:"
 
 #. *< type
--- a/po/cs.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/cs.po	Thu Jun 26 09:07:56 2008 +0000
@@ -819,7 +819,7 @@
 msgstr "Systémový záznam"
 
 msgid "Emails"
-msgstr "E-maily"
+msgstr "Emaily"
 
 msgid "You have mail!"
 msgstr "Přišla vám pošta!"
@@ -838,7 +838,7 @@
 msgstr[2] "%s (%s) má %d nových zpráv."
 
 msgid "New Mail"
-msgstr "Nový e-mail"
+msgstr "Nový email"
 
 #, c-format
 msgid "Info for %s"
@@ -2744,7 +2744,7 @@
 msgid "Last name"
 msgstr "Příjmení"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "Email"
 
 msgid "AIM Account"
@@ -2769,9 +2769,6 @@
 msgid "Purple Person"
 msgstr "Osoba Purple"
 
-msgid "E-mail"
-msgstr "E-mail"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3845,8 +3842,8 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "Hledejte odpovídající uživatele XMPP vyplněním jedno nebo více polí."
 
-msgid "E-Mail Address"
-msgstr "E-mailová adresa"
+msgid "Email Address"
+msgstr "Emailová adresa"
 
 msgid "Search for XMPP users"
 msgstr "Hledat uživatele XMPP"
@@ -4572,8 +4569,8 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "Syntaktická chyba (pravděpodobně chyba v klientovi)"
 
-msgid "Invalid e-mail address"
-msgstr "Neplatná e-mailová adresa"
+msgid "Invalid email address"
+msgstr "Neplatná emailová adresa"
 
 msgid "User does not exist"
 msgstr "Uživatel neexistuje"
@@ -4930,8 +4927,8 @@
 msgid "Home Fax"
 msgstr "Osobní fax"
 
-msgid "Personal E-Mail"
-msgstr "Osobní e-mail"
+msgid "Personal Email"
+msgstr "Osobní email"
 
 msgid "Personal IM"
 msgstr "Osobní IM"
@@ -4973,8 +4970,8 @@
 msgid "Work Fax"
 msgstr "Pracovní fax"
 
-msgid "Work E-Mail"
-msgstr "Pracovní e-mail"
+msgid "Work Email"
+msgstr "Pracovní email"
 
 msgid "Work IM"
 msgstr "Pracovní IM"
@@ -6173,7 +6170,7 @@
 "only letters, numbers and spaces, or contain only numbers."
 msgstr ""
 "Nemohu se přihlásit: Nemohu se přihlásit jako %s, protože jméno uživatele "
-"není platné. Jméno uživatele musí být platná e-mailová adresa nebo začínat "
+"není platné. Jméno uživatele musí být platná emailová adresa nebo začínat "
 "písmenem a obsahovat jen číslice, písmena a mezery, nebo obsahovat jen "
 "číslice."
 
@@ -6313,12 +6310,12 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Přijali jste e-mail ICQ od %s [%s]\n"
+"Přijali jste email ICQ od %s [%s]\n"
 "\n"
 "Zpráva je:\n"
 "%s"
@@ -6465,12 +6462,12 @@
 msgstr[2] "Následující jména uživatele jsou asociována s %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Pro e-mailovou adresu %s nebyly nalezeny žádné výsledky"
-
-#, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Měli byste dostat e-mail žádající o potvrzení %s."
+msgid "No results found for email address %s"
+msgstr "Pro emailovou adresu %s nebyly nalezeny žádné výsledky"
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
+msgstr "Měli byste dostat email žádající o potvrzení %s."
 
 msgid "Account Confirmation Requested"
 msgstr "Požadováno potvrzení účtu"
@@ -6498,26 +6495,26 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
-"Chyba 0x%04x: Nemohu změnit e-mailovou adresu, protože pro toto jméno "
+"Chyba 0x%04x: Nemohu změnit emailovou adresu, protože pro toto jméno "
 "uživatele již existuje požadavek."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
-"Chyba 0x%04x: Nemohu změnit e-mailovou adresu, protože zadaná adresa má "
+"Chyba 0x%04x: Nemohu změnit emailovou adresu, protože zadaná adresa má "
 "asociováno příliš mnoho jmen uživatelů."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Chyba 0x%04x: Nemohu změnit e-mailovou adresu, protože zadaná adresa je "
+"Chyba 0x%04x: Nemohu změnit emailovou adresu, protože zadaná adresa je "
 "neplatná."
 
 #, c-format
@@ -6528,7 +6525,7 @@
 msgstr "Chyba při změně informací o účtu"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Emailová adresa pro %s je %s"
 
 msgid "Account Info"
@@ -6595,7 +6592,7 @@
 "numbers and spaces, or contain only numbers."
 msgstr ""
 "Nemohu přidat kamaráda %s, protože jméno uživatele není platné. Jméno "
-"uživatele musí být platná e-mailová adresa, nebo začínat písmenem a "
+"uživatele musí být platná emailová adresa, nebo začínat písmenem a "
 "obsahovat jen číslice, písmena a mezery, nebo obsahovat jen číslice."
 
 msgid "Unable To Add"
@@ -6745,14 +6742,14 @@
 "Můžete znovu požádat o autorizaci od těchto kamarádů kliknutím na ně pravým "
 "tlačítkem a zvolením \"Znovu požádat o autorizaci.\""
 
-msgid "Find Buddy by E-Mail"
-msgstr "Hledat kamaráda podle e-mailu"
-
-msgid "Search for a buddy by e-mail address"
-msgstr "Hledat kamaráda podle e-mailové adresy"
-
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Zadejte e-mailovou adresu kamaráda, kterého hledáte."
+msgid "Find Buddy by Email"
+msgstr "Hledat kamaráda podle emailu"
+
+msgid "Search for a buddy by email address"
+msgstr "Hledat kamaráda podle emailové adresy"
+
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Zadejte emailovou adresu kamaráda, kterého hledáte."
 
 msgid "_Search"
 msgstr "_Hledat"
@@ -6774,17 +6771,17 @@
 msgid "Confirm Account"
 msgstr "Potvrdit účet"
 
-msgid "Display Currently Registered E-Mail Address"
-msgstr "Zobrazit momentálně zaregistrovanou e-mailovou adresu"
-
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "Změnit momentálně zaregistrovanou e-mailovou adresu..."
+msgid "Display Currently Registered Email Address"
+msgstr "Zobrazit momentálně zaregistrovanou emailovou adresu"
+
+msgid "Change Currently Registered Email Address..."
+msgstr "Změnit momentálně zaregistrovanou emailovou adresu..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Zobrazit kamarády čekající na autorizaci"
 
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Hledat kamaráda podle e-mailové adresy..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Hledat kamaráda podle emailové adresy..."
 
 msgid "Search for Buddy by Information"
 msgstr "Hledat kamaráda podle informací"
@@ -6849,9 +6846,6 @@
 msgid "College"
 msgstr "Vysoká škola"
 
-msgid "Email"
-msgstr "E-mail"
-
 msgid "Zipcode"
 msgstr "PSČ"
 
@@ -8601,8 +8595,8 @@
 msgstr "Jméno uživatele: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #, c-format
 msgid "Host Name: \t%s\n"
@@ -8837,8 +8831,8 @@
 msgid "Dir service temporarily unavailable."
 msgstr "Adresářová služba momentálně není k dispozici."
 
-msgid "E-mail lookup restricted."
-msgstr "Vyhledávání podle e-mailu omezeno."
+msgid "Email lookup restricted."
+msgstr "Vyhledávání podle emailu omezeno."
 
 msgid "Keyword ignored."
 msgstr "Klíčové slovo ignorováno."
@@ -11167,8 +11161,8 @@
 msgid "Enable typing notification"
 msgstr "Povolit upozornění na psaní"
 
-msgid "_Copy E-Mail Address"
-msgstr "_Kopírovat e-mailovou adresu"
+msgid "_Copy Email Address"
+msgstr "_Kopírovat emailovou adresu"
 
 msgid "_Open Link in Browser"
 msgstr "_Otevřít odkaz v prohlížeči"
@@ -11518,11 +11512,11 @@
 msgstr[2] "%s má %d nových zpráv."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
-msgstr[0] "<b>%d nový e-mail</b>"
-msgstr[1] "<b>%d nové e-maily</b>"
-msgstr[2] "<b>%d nových e-mailů</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>%d nový email</b>"
+msgstr[1] "<b>%d nové emaily</b>"
+msgstr[2] "<b>%d nových emailů</b>"
 
 #, c-format
 msgid "The browser command \"%s\" is invalid."
@@ -12543,20 +12537,20 @@
 msgid "_Associate Buddy"
 msgstr "_Přiřadit kamaráda"
 
-msgid "Unable to send e-mail"
-msgstr "Nemohu odeslat e-mail"
+msgid "Unable to send email"
+msgstr "Nemohu odeslat email"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Program evolution nebyl nalezen v PATH."
 
-msgid "An e-mail address was not found for this buddy."
-msgstr "Pro tohoto kamaráda nebyla nalezena e-mailová adresa."
+msgid "An email address was not found for this buddy."
+msgstr "Pro tohoto kamaráda nebyla nalezena emailová adresa."
 
 msgid "Add to Address Book"
 msgstr "Přidat do adresáře"
 
-msgid "Send E-Mail"
-msgstr "Odeslat e-mail"
+msgid "Send Email"
+msgstr "Odeslat email"
 
 #. Configuration frame
 msgid "Evolution Integration Configuration"
@@ -12601,8 +12595,8 @@
 msgid "Last name:"
 msgstr "Příjmení:"
 
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
@@ -13875,7 +13869,7 @@
 #~ msgstr "<b>Stav</b>: %s"
 
 #~ msgid "EMail"
-#~ msgstr "E-mail"
+#~ msgstr "Email"
 
 #~ msgid "Re-type Passphrase"
 #~ msgstr "Heslo (znovu)"
--- a/po/da.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/da.po	Thu Jun 26 09:07:56 2008 +0000
@@ -1162,7 +1162,7 @@
 
 #: ../finch/gntnotify.c:225 ../pidgin/gtknotify.c:341
 msgid "New Mail"
-msgstr "Ny e-mail"
+msgstr "Ny email"
 
 #: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:940
 #, c-format
@@ -3605,8 +3605,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
-msgstr "E-mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
 #: ../libpurple/protocols/bonjour/bonjour.c:665
@@ -3639,16 +3639,6 @@
 msgid "Purple Person"
 msgstr "Ny person"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5063,7 +5053,7 @@
 #: ../libpurple/protocols/jabber/buddy.c:1025
 #, fuzzy
 msgid "Reachability Address"
-msgstr "E-mail adresse"
+msgstr "Email adresse"
 
 #: ../libpurple/protocols/jabber/buddy.c:867
 #: ../libpurple/protocols/jabber/buddy.c:1027
@@ -5348,8 +5338,8 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
-msgstr "E-mail adresse"
+msgid "Email Address"
+msgstr "Email adresse"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
 #: ../libpurple/protocols/jabber/buddy.c:2411
@@ -6431,8 +6421,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Ugyldig e-mail adresse"
+msgid "Invalid email address"
+msgstr "Ugyldig email adresse"
 
 #: ../libpurple/protocols/msn/error.c:49
 #, c-format
@@ -6976,8 +6966,8 @@
 msgstr "Hjemmefax"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
-msgstr "Personlig e-mail"
+msgid "Personal Email"
+msgstr "Personlig email"
 
 #: ../libpurple/protocols/msn/msn.c:1657
 msgid "Personal IM"
@@ -7038,8 +7028,8 @@
 msgstr "Arbejdsfax"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
-msgstr "Arbejds e-mail"
+msgid "Work Email"
+msgstr "Arbejds email"
 
 #: ../libpurple/protocols/msn/msn.c:1688
 msgid "Work IM"
@@ -8709,12 +8699,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Du har modtaget en ICQ e-mail fra %s [%s]\n"
+"Du har modtaget en ICQ email fra %s [%s]\n"
 "\n"
 "Beskeden er:\n"
 "%s"
@@ -8899,13 +8889,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Ingen resultater fundet for post-adressen %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Du bør modtage en e-mail for at acceptere %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "Du bør modtage en email for at acceptere %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
 msgid "Account Confirmation Requested"
@@ -8942,28 +8932,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
-"Fejl 0x%04x: UDe i stand til at ændre e-mail adresse, fordi der allerede er "
+"Fejl 0x%04x: UDe i stand til at ændre email adresse, fordi der allerede er "
 "en anmodning ventende for dette brugernavn."
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
-"Fejl 0x%04x: Ikke i stand til at ændre e-mail adresse, fordi den angivne "
+"Fejl 0x%04x: Ikke i stand til at ændre email adresse, fordi den angivne "
 "adresse har for mange brugernavne tilknyttet til sig."
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Fejl 0x%04x: Ikke i stand til at ændre e-mail adresse, fordi den angivne "
+"Fejl 0x%04x: Ikke i stand til at ændre email adresse, fordi den angivne "
 "adresse er ugyldig."
 
 #: ../libpurple/protocols/oscar/oscar.c:4023
@@ -8973,7 +8963,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s's post-adresse er %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9252,16 +9242,16 @@
 "og vælge \"Anmod om ny godkendelse\"."
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
-msgstr "Find ven udfra e-mail adresse"
+msgid "Find Buddy by Email"
+msgstr "Find ven udfra email adresse"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
-msgstr "Søg efter en ven udfra e-mail adresse"
+msgid "Search for a buddy by email address"
+msgstr "Søg efter en ven udfra email adresse"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Indtast e-mail adressen på vennen du søger efter."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Indtast email adressen på vennen du søger efter."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
 msgid "_Search"
@@ -9290,11 +9280,11 @@
 msgstr "Bekræft Konto"
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Vis nuværende registrede e-post adresse"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Skift nuværende registrede e-post adresse..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9302,7 +9292,7 @@
 msgstr "Vis venner der afventer godkendelse"
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Søg efter ven udfra e-post adresse..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9391,10 +9381,6 @@
 msgid "College"
 msgstr "Fold sammen"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "E-post"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Postnummer"
@@ -12157,8 +12143,8 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
 #: ../libpurple/protocols/silc10/util.c:361
@@ -12500,8 +12486,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "E-mail søgning er begrænset."
+msgid "Email lookup restricted."
+msgstr "Email søgning er begrænset."
 
 #: ../libpurple/protocols/toc/toc.c:533
 #, c-format
@@ -15419,8 +15405,8 @@
 msgstr "Farve som hyperlinks skal være når musen er over dem."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
-msgstr "_Kopier e-mail adresse"
+msgid "_Copy Email Address"
+msgstr "_Kopier email adresse"
 
 #: ../pidgin/gtkimhtml.c:1610
 msgid "_Open Link in Browser"
@@ -15860,8 +15846,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>Du har %d nye meddelelser.</b>"
 msgstr[1] "<b>Du har %d nye meddelelser.</b>"
 
@@ -17117,15 +17103,15 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
-msgstr "Kunne ikke sende e-mail."
+msgid "Unable to send email"
+msgstr "Kunne ikke sende email."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
 msgid "The evolution executable was not found in the PATH."
 msgstr "Den ekskvebar Evolution fil blev ikke fundet i PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "En e-post-adresse blev ikke fundet for denne ven."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17133,8 +17119,8 @@
 msgstr "Tilføj til adressebog"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
-msgstr "Send e-mail"
+msgid "Send Email"
+msgstr "Send email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:412
@@ -17191,8 +17177,8 @@
 msgstr "Efternavn:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/de.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/de.po	Thu Jun 26 09:07:56 2008 +0000
@@ -11,9 +11,9 @@
 msgstr ""
 "Project-Id-Version: de\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-05-15 22:36+0200\n"
-"PO-Revision-Date: 2008-05-15 22:35+0200\n"
-"Last-Translator: Björn Voigt <bjoern@cs.tu-berlin.de>\n"
+"POT-Creation-Date: 2008-06-25 23:30+0200\n"
+"PO-Revision-Date: 2008-06-25 23:27+0200\n"
+"Last-Translator: Bjoern Voigt <bjoern@cs.tu-berlin.de>\n"
 "Language-Team: Deutsch <de@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -100,6 +100,10 @@
 msgid "Alias:"
 msgstr "Alias:"
 
+#. Register checkbox
+msgid "Create this account on the server"
+msgstr "Dieses Konto auf dem Server anlegen"
+
 #. Cancel button
 #. Cancel
 msgid "Cancel"
@@ -409,6 +413,9 @@
 msgid "View Log..."
 msgstr "Mitschnitt anzeigen..."
 
+msgid "View All Logs"
+msgstr "Alle Mitschnitte anzeigen"
+
 msgid "Show"
 msgstr "Anzeigen"
 
@@ -608,6 +615,19 @@
 msgid "Send To"
 msgstr "Senden an"
 
+msgid "Invite message"
+msgstr "Einladungsnachricht"
+
+msgid "Invite"
+msgstr "Einladen"
+
+msgid ""
+"Please enter the name of the user you wish to invite,\n"
+"along with an optional invite message."
+msgstr ""
+"Bitte geben Sie den Benutzernamen der Person ein, die Sie einladen möchten "
+"zusammen mit einer optionalen Einladungsnachricht."
+
 msgid "Conversation"
 msgstr "Unterhaltung"
 
@@ -620,6 +640,9 @@
 msgid "Add Buddy Pounce..."
 msgstr "Buddy-Alarm hinzufügen..."
 
+msgid "Invite..."
+msgstr "Einladen..."
+
 msgid "Enable Logging"
 msgstr "Mitschnitt einschalten"
 
@@ -647,6 +670,20 @@
 "zu erhalten.\n"
 "Die folgenden Kommandos sind in diesem Kontext verfügbar:\n"
 
+#, c-format
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+"%s ist keine gültige Nachrichtenklasse. Die gültigen Nachrichtenklassen "
+"finden Sie unter '/help msgcolor'."
+
+#, c-format
+msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
+msgstr ""
+"%s ist keine gültige Farbe. Die gültigen Farben finden Sie unter '/help "
+"msgcolor'."
+
 msgid ""
 "say &lt;message&gt;:  Send a message normally as if you weren't using a "
 "command."
@@ -693,6 +730,20 @@
 msgid "statuses: Show the savedstatuses window."
 msgstr "statuses: Das Fenster mit gespeicherten Status-Infos anzeigen."
 
+msgid ""
+"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: Set the color "
+"for different classes of messages in the conversation window.<br>    &lt;"
+"class&gt;: receive, send, highlight, action, timestamp<br>    &lt;foreground/"
+"background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
+"cyan, default<br><br>EXAMPLE:<br>    msgcolor send cyan default"
+msgstr ""
+"msgcolor &lt;Klasse&gt; &lt;Vordergrund&gt; &lt;Hintergrund&gt;: Die Farbe "
+"für verschiedene Klassen von Nachrichten im Gesprächsfenster festlegen."
+"<br>    &lt;Klasse&gt;: receive, send, highlight, action, timestamp<br>    "
+"&lt;Vordergrund/Hintergrund&gt;: black, red, green, blue, white, gray, "
+"darkgray, magenta, cyan, default<br><br>BEISPIEL:<br>    msgcolor send cyan "
+"default"
+
 msgid "Unable to open file."
 msgstr "Konnte die Datei nicht öffnen."
 
@@ -713,8 +764,10 @@
 msgstr "Pause"
 
 #, c-format
-msgid "File Transfers - %d%% of %d files"
-msgstr "Dateiübertragungen - %d%% von %d Dateien"
+msgid "File Transfers - %d%% of %d file"
+msgid_plural "File Transfers - %d%% of %d files"
+msgstr[0] "Dateiübertragungen - %d%% von %d Datei"
+msgstr[1] "Dateiübertragungen - %d%% von %d Dateien"
 
 #. Create the window.
 msgid "File Transfers"
@@ -829,6 +882,9 @@
 msgid "Conversations with %s"
 msgstr "Unterhaltung mit %s"
 
+msgid "All Conversations"
+msgstr "Alle Unterhaltungen"
+
 msgid "System Log"
 msgstr "System-Mitschnitt"
 
@@ -866,9 +922,6 @@
 msgid "IM"
 msgstr "Nachricht"
 
-msgid "Invite"
-msgstr "Einladen"
-
 msgid "(none)"
 msgstr "(kein)"
 
@@ -2092,8 +2145,10 @@
 msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
 msgstr "ABI Versionskonflikt %d.%d.x (brauche %d.%d.x)"
 
-msgid "Plugin does not implement all required functions"
-msgstr "Plugin enthält nicht alle benötigten Funktionen"
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr ""
+"Plugin enthält nicht alle benötigten Funktionen (list_icon, login und close)"
 
 #, c-format
 msgid ""
@@ -2757,13 +2812,11 @@
 "dann installieren Sie ActiveTCL von http://www.activestate.com\n"
 
 msgid ""
-"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://"
-"developer.pidgin.im/wiki/Using%20Pidgin#CanIusePidginforBonjourLink-"
-"LocalMessaging for more information."
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
 msgstr ""
 "Apples Bonjour-Toolkit für Windows konnte nicht gefunden werden, für weitere "
-"Informationen besuchen Sie die FAQ unter: http://developer.pidgin.im/wiki/"
-"Using%20Pidgin#CanIusePidginforBonjourLink-LocalMessaging."
+"Informationen besuchen Sie die FAQ unter: http://d.pidgin.im/BonjourWindows"
 
 msgid "Unable to listen for incoming IM connections\n"
 msgstr "Kann nicht auf eingehende IM-Verbindungen hören\n"
@@ -2780,7 +2833,7 @@
 msgid "Last name"
 msgstr "Nachname"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-Mail"
 
 msgid "AIM Account"
@@ -2805,9 +2858,6 @@
 msgid "Purple Person"
 msgstr "Purple-Person"
 
-msgid "E-mail"
-msgstr "E-Mail"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -2874,6 +2924,9 @@
 msgid "Save buddylist..."
 msgstr "Buddy-Liste speichern..."
 
+msgid "Load buddylist from file..."
+msgstr "Buddy-Liste aus Datei laden..."
+
 msgid "Fill in the registration fields."
 msgstr "Füllen Sie die Registrierungsfelder aus."
 
@@ -3050,9 +3103,6 @@
 msgid "Save buddylist to file..."
 msgstr "Buddy-Liste in Datei speichern..."
 
-msgid "Load buddylist from file..."
-msgstr "Buddy-Liste aus Datei laden..."
-
 #. magic
 #. major_version
 #. minor_version
@@ -3182,8 +3232,10 @@
 msgstr "Falscher Modus"
 
 #, c-format
-msgid "Ban on %s by %s, set %ld seconds ago"
-msgstr "Verbot zu %s von %s, gesetzt vor %ld Sekunden"
+msgid "Ban on %s by %s, set %ld second ago"
+msgid_plural "Ban on %s by %s, set %ld seconds ago"
+msgstr[0] "Verbot zu %s von %s, gesetzt vor %ld Sekunde"
+msgstr[1] "Verbot zu %s von %s, gesetzt vor %ld Sekunden"
 
 #, c-format
 msgid "Ban on %s"
@@ -3619,6 +3671,8 @@
 msgid "Country"
 msgstr "Land"
 
+#. lots of clients (including purple) do this, but it's
+#. * out of spec
 msgid "Telephone"
 msgstr "Telefon"
 
@@ -3806,12 +3860,12 @@
 msgid "Capabilities"
 msgstr "Fähigkeiten"
 
+msgid "Priority"
+msgstr "Priorität"
+
 msgid "Resource"
 msgstr "Ressource"
 
-msgid "Priority"
-msgstr "Priorität"
-
 msgid "Middle Name"
 msgstr "Zweiter Name"
 
@@ -3895,7 +3949,7 @@
 "Füllen sie ein oder mehrere Felder aus, um nach entsprechenden XMPP-"
 "Benutzern zu suchen."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "E-Mail-Adresse"
 
 msgid "Search for XMPP users"
@@ -4507,8 +4561,8 @@
 msgstr "XMPP-Nachrichtenfehler"
 
 #, c-format
-msgid " (Code %s)"
-msgstr " (Code %s)"
+msgid "(Code %s)"
+msgstr "(Code %s)"
 
 msgid "XML Parse error"
 msgstr "Fehler bei Einlesen von XML-Daten"
@@ -4533,14 +4587,14 @@
 msgstr "Standards _akzeptieren"
 
 #, c-format
+msgid "Error joining chat %s"
+msgstr "Fehler beim Betreten des Chats %s"
+
+#, c-format
 msgid "Error in chat %s"
 msgstr "Fehler im Chat %s"
 
 #, c-format
-msgid "Error joining chat %s"
-msgstr "Fehler beim Betreten des Chats %s"
-
-#, c-format
 msgid "Unable to send file to %s, user does not support file transfers"
 msgstr ""
 "Kann die Datei nicht an %s senden, da der Client des Benutzers keine "
@@ -4633,7 +4687,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "Syntaxfehler (wahrscheinlich ein Client-Bug)"
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Ungültige E-Mail-Adresse"
 
 msgid "User does not exist"
@@ -4806,6 +4860,9 @@
 msgid "Nudging %s..."
 msgstr "%s anstoßen..."
 
+msgid "Email Address..."
+msgstr "E-Mail-Adresse..."
+
 msgid "Your new MSN friendly name is too long."
 msgstr "Ihr neuer MSN-Benutzername zu lang."
 
@@ -4992,7 +5049,7 @@
 msgid "Home Fax"
 msgstr "Fax (privat)"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "E-Mail (privat)"
 
 msgid "Personal IM"
@@ -5035,7 +5092,7 @@
 msgid "Work Fax"
 msgstr "Fax (geschäftlich)"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "E-Mail (geschäftlich)"
 
 msgid "Work IM"
@@ -5363,8 +5420,11 @@
 msgstr "Logge ein"
 
 #, c-format
-msgid "Connection to server lost (no data received within %d seconds)"
-msgstr ""
+msgid "Connection to server lost (no data received within %d second)"
+msgid_plural "Connection to server lost (no data received within %d seconds)"
+msgstr[0] ""
+"Verbindung zum Server verloren (seit %d Sekunde keine Daten empfangen)"
+msgstr[1] ""
 "Verbindung zum Server verloren (seit %d Sekunden keine Daten empfangen)"
 
 #. Can't write _()'d strings in array initializers. Workaround.
@@ -5464,9 +5524,15 @@
 
 #, c-format
 msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
 "%d buddies were added or updated from the server (including buddies already "
 "on the server-side list)"
-msgstr ""
+msgstr[0] ""
+"%d Buddy wurde vom Server hinzugefügt oder aktualisiert (inklusive der "
+"Buddys, die schon auf der Serverliste sind)"
+msgstr[1] ""
 "%d Buddys wurden vom Server hinzugefügt oder aktualisiert (inklusive der "
 "Buddys, die schon auf der Serverliste sind)"
 
@@ -6106,11 +6172,11 @@
 msgid "In local permit/deny"
 msgstr "In lokaler erlaubt/verboten-Liste"
 
-msgid "Too evil (sender)"
-msgstr "Zu boshaft (Sender)"
-
-msgid "Too evil (receiver)"
-msgstr "Zu boshaft (Empfänger)"
+msgid "Warning level too high (sender)"
+msgstr "Warnstufe zu hoch (Absender)"
+
+msgid "Warning level too high (receiver)"
+msgstr "Warnstufe zu hoch (Empfänger)"
 
 msgid "User temporarily unavailable"
 msgstr "Benutzer ist temporär nicht verfügbar"
@@ -6214,6 +6280,9 @@
 msgid "Camera"
 msgstr "Kamera"
 
+msgid "Screen Sharing"
+msgstr "Gemeinsamer Bildschirm"
+
 msgid "Free For Chat"
 msgstr "Bereit zum Chatten"
 
@@ -6346,6 +6415,7 @@
 msgid "Unable to get a valid login hash."
 msgstr "Konnte keinen gültigen Login-Hash bekommen."
 
+#. allow multple logins?
 msgid "Password sent"
 msgstr "Passwort gesendet"
 
@@ -6415,7 +6485,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6465,20 +6535,26 @@
 "überschritten wurde."
 
 #, c-format
-msgid "You missed %hu message from %s because he/she was too evil."
-msgid_plural "You missed %hu messages from %s because he/she was too evil."
+msgid ""
+"You missed %hu message from %s because his/her warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because his/her warning level is too high."
 msgstr[0] ""
-"Sie haben %hu Nachricht von %s nicht erhalten, da er/sie zu boshaft war."
+"Sie haben %hu Nachricht von %s nicht erhalten, da seine/ihre Warnstufe zu "
+"hoch ist."
 msgstr[1] ""
-"Sie haben %hu Nachrichten von %s nicht erhalten,/sie zu boshaft war."
-
-#, c-format
-msgid "You missed %hu message from %s because you are too evil."
-msgid_plural "You missed %hu messages from %s because you are too evil."
+"Sie haben %hu Nachrichten von %s nicht erhalten, da seine/ihre Warnstufe zu "
+"hoch ist."
+
+#, c-format
+msgid "You missed %hu message from %s because your warning level is too high."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
 msgstr[0] ""
-"Sie haben %hu Nachricht von %s nicht erhalten, da Sie zu boshaft sind."
+"Sie haben %hu Nachricht von %s nicht erhalten, da Ihre Warnstufe zu hoch ist."
 msgstr[1] ""
-"Sie haben %hu Nachrichten von %s nicht erhalten, da Sie zu boshaft sind."
+"Sie haben %hu Nachrichten von %s nicht erhalten, da Ihre Warnstufe zu hoch "
+"ist."
 
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
@@ -6510,9 +6586,6 @@
 msgid "Member Since"
 msgstr "Mitglied seit"
 
-msgid "Available Message"
-msgstr "Verfügbarkeitsnachricht"
-
 msgid "Your AIM connection may be lost."
 msgstr "Ihre AIM-Verbindung könnte unterbrochen sein."
 
@@ -6542,12 +6615,17 @@
 msgid "Personal Web Page"
 msgstr "Persönliche Webseite"
 
+#. aim_userinfo_t
+#. strip_html_tags
 msgid "Additional Information"
 msgstr "Zusätzliche Informationen"
 
 msgid "Zip Code"
 msgstr "PLZ"
 
+msgid "Work Information"
+msgstr "Information (Arbeit)"
+
 msgid "Division"
 msgstr "Abteilung"
 
@@ -6557,9 +6635,6 @@
 msgid "Web Page"
 msgstr "Webseite"
 
-msgid "Work Information"
-msgstr "Information (Arbeit)"
-
 msgid "Pop-Up Message"
 msgstr "Pop-Up Nachricht"
 
@@ -6570,11 +6645,11 @@
 msgstr[1] "Die folgenden Benutzernamen sind verbunden mit %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Keine Ergebnisse für die E-Mail-Adresse %s gefunden"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 "Sie sollten eine E-Mail erhalten, in der Sie aufgefordert werden, %s zu "
 "bestätigen."
@@ -6606,7 +6681,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Error 0x%04x: Kann die E-Mail-Adresse nicht ändern, weil es schon eine "
@@ -6614,7 +6689,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Fehler 0x%04x: Kann die E-Mail-Adresse nicht ändern, weil zu dieser Adresse "
@@ -6622,7 +6697,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Fehler 0x%04x: Kann die E-Mail-Adresse nicht ändern, weil die angegebene "
@@ -6636,7 +6711,7 @@
 msgstr "Fehler beim Ändern der Konten-Information"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Die E-Mail-Adresse für %s ist %s"
 
 msgid "Account Info"
@@ -6780,12 +6855,6 @@
 "Ihr IM-Bild wurde nicht gesendet. Sie können keine IM-Bilder in AIM-Chats "
 "senden."
 
-msgid "Away Message"
-msgstr "Abwesenheitsnachricht"
-
-msgid "<i>(retrieving)</i>"
-msgstr "<i>(empfange)</i>"
-
 msgid "iTunes Music Store Link"
 msgstr "iTunes Music Store Link"
 
@@ -6859,13 +6928,13 @@
 "den Buddy mit einem Rechtsklick anklicken und „Nochmal nach Autorisierung "
 "fragen“ auswählen."
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Suche Buddys nach E-Mail-Adresse"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Suche nach einem Buddy mit einer bestimmten E-Mail-Adresse"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Geben Sie die E-Mail-Adresse des Buddys ein, nach dem Sie suchen."
 
 msgid "_Search"
@@ -6888,16 +6957,16 @@
 msgid "Confirm Account"
 msgstr "Konto bestätigen"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Zeige die aktuell registrierte E-Mail-Adresse"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Ändere die aktuell registrierte E-Mail-Adresse..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Zeige Buddys, von denen Sie Autorisierung erwarten"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Suche Buddys nach E-Mail-Adresse..."
 
 msgid "Search for Buddy by Information"
@@ -6912,6 +6981,9 @@
 "Dateiübertragungen und Direkt-IM (langsamer,\n"
 "aber zeigt Ihre IP-Adresse nicht)"
 
+msgid "Allow multiple simultaneous logins"
+msgstr "Mehrere gleichzeitige Logins erlauben"
+
 #, c-format
 msgid "Asking %s to connect to us at %s:%hu for Direct IM."
 msgstr "Frage %s, ob er sich zu uns auf %s:%hu für Direkt-IM verbinden möchte."
@@ -6963,9 +7035,6 @@
 msgid "College"
 msgstr "College"
 
-msgid "Email"
-msgstr "E-Mail"
-
 msgid "Zipcode"
 msgstr "PLZ"
 
@@ -8738,7 +8807,7 @@
 msgstr "Benutzername: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-Mail: \t\t%s\n"
 
 #, c-format
@@ -8986,7 +9055,7 @@
 msgid "Dir service temporarily unavailable."
 msgstr "Verzeichnis-Dienst ist zur Zeit nicht verfügbar."
 
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "E-Mail-Suche eingeschränkt."
 
 msgid "Keyword ignored."
@@ -9683,6 +9752,20 @@
 msgid "Accept chat invitation?"
 msgstr "Akzeptieren Sie die Chat-Einladung?"
 
+#. Shortcut
+msgid "Shortcut"
+msgstr "Tastenkombination"
+
+msgid "The text-shortcut for the smiley"
+msgstr "Die Tastenkombination für den Smiley"
+
+#. Stored Image
+msgid "Stored Image"
+msgstr "Gespeichertes Bild"
+
+msgid "Stored Image. (that'll have to do for now)"
+msgstr "Gespeichertes Bild. (Das muss erstmal reichen)"
+
 msgid "SSL Connection Failed"
 msgstr "SSL-Verbindung gescheitert"
 
@@ -9957,8 +10040,8 @@
 msgid "_Basic"
 msgstr "_Einfach"
 
-msgid "Create this new account on the server"
-msgstr "Dieses neue Konto auf dem Server anlegen"
+msgid "Create _this new account on the server"
+msgstr "Dieses _neue Konto auf dem Server anlegen"
 
 msgid "_Advanced"
 msgstr "_Erweitert"
@@ -10064,6 +10147,12 @@
 msgid "_Remove"
 msgstr "_Entfernen"
 
+msgid "Set Custom Icon"
+msgstr "Setze benutzerdefiniertes Icon"
+
+msgid "Remove Custom Icon"
+msgstr "Benutzerdefiniertes Icon entfernen"
+
 msgid "Add _Buddy..."
 msgstr "_Buddy hinzufügen..."
 
@@ -10163,8 +10252,8 @@
 msgid "/_Accounts"
 msgstr "/_Konten"
 
-msgid "/Accounts/Manage"
-msgstr "/Konten/Verwalten"
+msgid "/Accounts/Manage Accounts"
+msgstr "/Konten/Konten verwalten"
 
 #. Tools
 msgid "/_Tools"
@@ -10185,6 +10274,9 @@
 msgid "/Tools/Pr_ivacy"
 msgstr "/Werkzeuge/Pri_vatsphäre"
 
+msgid "/Tools/Smile_y"
+msgstr "/Werkzeuge/Smile_y"
+
 msgid "/Tools/_File Transfers"
 msgstr "/Werkzeuge/_Dateiübertragungen"
 
@@ -10351,13 +10443,13 @@
 "<span weight='bold' size='larger'>Welcome to %s!</span>\n"
 "\n"
 "You have no accounts enabled. Enable your IM accounts from the <b>Accounts</"
-"b> window at <b>Accounts->Manage</b>. Once you enable accounts, you'll be "
-"able to sign on, set your status, and talk to your friends."
+"b> window at <b>Accounts->Manage Accounts</b>. Once you enable accounts, "
+"you'll be able to sign on, set your status, and talk to your friends."
 msgstr ""
 "<span weight='bold' size='larger'>Willkommen bei %s!</span>\n"
 "\n"
 "Sie haben keine Konten aktiviert. Aktivieren Sie Ihre IM-Konten vom "
-"<b>Konten</b>-Fenster über <b>Konten->Verwalten</b>. Wenn Sie Konten "
+"<b>Konten</b>-Fenster über <b>Konten->Konten verwalten</b>. Wenn Sie Konten "
 "aktiviert haben, können Sie sich anmelden, Ihren Status setzen und mit Ihren "
 "Freunden reden."
 
@@ -10418,6 +10510,12 @@
 msgid "Please enter the name of the group to be added."
 msgstr "Bitte geben Sie den Namen der Gruppe ein, die hinzugefügt werden soll."
 
+msgid "Enable Account"
+msgstr "Konten aktivieren"
+
+msgid "<PurpleMain>/Accounts/Enable Account"
+msgstr "<PurpleMain>/Konten/Konto aktivieren"
+
 msgid "<PurpleMain>/Accounts/"
 msgstr "<PurpleMain>/Konten/"
 
@@ -10430,12 +10528,6 @@
 msgid "_Disable"
 msgstr "_Deaktivieren"
 
-msgid "Enable Account"
-msgstr "Konten aktivieren"
-
-msgid "<PurpleMain>/Accounts/Enable Account"
-msgstr "<PurpleMain>/Konten/Konto aktivieren"
-
 msgid "/Tools"
 msgstr "/Werkzeuge"
 
@@ -10521,9 +10613,6 @@
 msgid "Change Size"
 msgstr "Ändere Größe"
 
-msgid "Remove Custom Icon"
-msgstr "Benutzerdefiniertes Icon entfernen"
-
 msgid "Show All"
 msgstr "Alle anzeigen"
 
@@ -10791,9 +10880,6 @@
 msgid "Fatal Error"
 msgstr "Schwerer Fehler"
 
-msgid "lead developer"
-msgstr "Hauptentwickler"
-
 msgid "developer"
 msgstr "Entwickler"
 
@@ -10828,6 +10914,9 @@
 msgid "original author"
 msgstr "Originalautor"
 
+msgid "lead developer"
+msgstr "Hauptentwickler"
+
 msgid "Afrikaans"
 msgstr "Afrikaans"
 
@@ -10963,6 +11052,9 @@
 msgid "Norwegian Nynorsk"
 msgstr "Norwegisch (Nynorsk)"
 
+msgid "Occitan"
+msgstr "Okzitanisch"
+
 msgid "Punjabi"
 msgstr "Pandschabi"
 
@@ -11204,23 +11296,35 @@
 msgid "Right-click for more unread messages...\n"
 msgstr "Rechtsklicken für weitere ungelesene Nachrichten...\n"
 
-msgid "Change Status"
-msgstr "Ändere Status"
-
-msgid "Show Buddy List"
-msgstr "Buddy-Liste anzeigen"
-
-msgid "New Message..."
-msgstr "Neue Nachricht..."
-
-msgid "Mute Sounds"
-msgstr "Stummschalten"
-
-msgid "Blink on New Message"
-msgstr "Bei neuen Nachrichten blinken"
-
-msgid "Quit"
-msgstr "Beenden"
+msgid "_Change Status"
+msgstr "Ändere _Status"
+
+msgid "Show Buddy _List"
+msgstr "Buddy-_Liste anzeigen"
+
+msgid "_Unread Messages"
+msgstr "_Ungelesene Nachrichten"
+
+msgid "New _Message..."
+msgstr "_Neue Nachricht..."
+
+msgid "_Accounts"
+msgstr "_Konten"
+
+msgid "Plu_gins"
+msgstr "_Plugins"
+
+msgid "Pr_eferences"
+msgstr "_Einstellungen"
+
+msgid "Mute _Sounds"
+msgstr "Stu_mmschalten"
+
+msgid "_Blink on New Message"
+msgstr "Be_i neuen Nachrichten blinken"
+
+msgid "_Quit"
+msgstr "_Beenden"
 
 msgid "Not started"
 msgstr "Nicht gestartet"
@@ -11338,6 +11442,12 @@
 msgid "Color to draw the name of an action message."
 msgstr "Farbe, mit der der Name in einer Aktions-Nachricht dargestellt wird."
 
+msgid "Action Message Name Color for Whispered Message"
+msgstr "Farbe des Absendernamens für geflüsterte Aktions-Nachrichten"
+
+msgid "Whisper Message Name Color"
+msgstr "Farbe des Absendernamens für Flüster-Nachrichten"
+
 msgid "Typing notification color"
 msgstr "Farbe der Tipp-Benachrichtigung"
 
@@ -11355,7 +11465,7 @@
 msgid "Enable typing notification"
 msgstr "Tipp-Benachrichtigung aktivieren"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "Kopiere _E-Mail-Adresse"
 
 msgid "_Open Link in Browser"
@@ -11408,6 +11518,9 @@
 msgid "_Save Image..."
 msgstr "Bild _speichern..."
 
+msgid "_Add Custom Smiley..."
+msgstr "Benutzerdefinierten Smiley _hinzufügen..."
+
 msgid "Select Font"
 msgstr "Schriftart wählen"
 
@@ -11446,9 +11559,21 @@
 msgid "Insert Image"
 msgstr "Bild einfügen"
 
+#, c-format
+msgid ""
+"This smiley is disabled because a custom smiley exists for this shortcut:\n"
+" %s"
+msgstr ""
+"Dieser Smiley ist deaktiviert, da ein benutzerdefinierter Smiley für diese "
+"Tastenkombination existiert:\n"
+" %s"
+
 msgid "Smile!"
 msgstr "Lächeln!"
 
+msgid "_Manage custom smileys"
+msgstr "Benutzerdefinierte Smileys _verwalten"
+
 msgid "This theme has no available smileys."
 msgstr "Dieses Thema verfügt über keine Smileys."
 
@@ -11711,8 +11836,8 @@
 msgstr[1] "%s hat %d neue Nachrichten."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d neue E-Mail.</b>"
 msgstr[1] "<b>%d neue E-Mails.</b>"
 
@@ -12164,6 +12289,12 @@
 msgid "Play"
 msgstr "Abspielen"
 
+msgid "_Browse..."
+msgstr "Aus_wählen..."
+
+msgid "_Reset"
+msgstr "_Zurücksetzen"
+
 msgid "_Report idle time:"
 msgstr "Inaktivitätszei_ten anzeigen:"
 
@@ -12342,6 +12473,47 @@
 msgid "Status for %s"
 msgstr "Status für %s"
 
+msgid "Custom Smiley"
+msgstr "Benutzerdefinierter Smiley"
+
+msgid "Duplicate Shortcut"
+msgstr "Doppelte Tastenkombination"
+
+msgid ""
+"A custom smiley for the selected shortcut already exists. Please specify a "
+"different shortcut."
+msgstr ""
+"Für diese Tastenkombination existiert bereits ein benutzerdefinierter "
+"Smiley. Bitten wählen Sie eine andere Tastenkombination."
+
+msgid "More Data needed"
+msgstr "Weitere Daten benötigt"
+
+msgid "Please provide a shortcut to associate with the smiley."
+msgstr "Bitte geben Sie eine Tastenkombination für den Smiley an."
+
+msgid "Please select an image for the smiley."
+msgstr "Bitte wählen Sie ein Bild für den Smiley."
+
+msgid "Edit Smiley"
+msgstr "Smiley bearbeiten"
+
+msgid "Add Smiley"
+msgstr "Smiley hinzufügen"
+
+msgid "Smiley _Image"
+msgstr "Smiley-_Bild"
+
+#. Smiley shortcut
+msgid "Smiley S_hortcut"
+msgstr "_Tastenkombination"
+
+msgid "Smiley"
+msgstr "Smiley"
+
+msgid "Custom Smiley Manager"
+msgstr "Verwaltung für benutzerdefinierte Smileys"
+
 msgid "Waiting for network connection"
 msgstr "Warte auf Netzwerkverbindung"
 
@@ -12751,19 +12923,19 @@
 msgid "_Associate Buddy"
 msgstr "_Assoziiere den Buddy"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "E-Mail konnte nicht gesendet werden"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Die ausführbare Evolution-Datei wurde nicht im Pfad (PATH) gefunden."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Für diesen Buddy wurde keine E-Mail-Adresse gefunden."
 
 msgid "Add to Address Book"
 msgstr "Zum Adressbuch hinzufügen"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "E-Mail senden"
 
 #. Configuration frame
@@ -12813,7 +12985,7 @@
 msgid "Last name:"
 msgstr "Nachname:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-Mail:"
 
 #. *< type
@@ -13153,8 +13325,8 @@
 "You are using %s version %s.  The current version is %s.  You can get it "
 "from <a href=\"%s\">%s</a><hr>"
 msgstr ""
-"Sie verwenden %s Version %s.  Die aktuelle Version ist %s.Download unter <a "
-"href=\"%s\">%s</a><hr>"
+"Sie verwenden gerade %s Version %s.  Die aktuelle Version ist %s.  Sie "
+"können Pidgin von <a href=\"%s\">%s</a> herunterladen.<hr>"
 
 #, c-format
 msgid "<b>ChangeLog:</b><br>%s"
--- a/po/dz.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/dz.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3608,7 +3608,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "གློག་འཕྲིན།"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3642,16 +3642,6 @@
 msgid "Purple Person"
 msgstr "གང་ཟག་གསརཔ།"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "གློག་-འཕྲིན།"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "བཱོན་ཇོར།"
@@ -5357,7 +5347,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "གློག་འཕྲིན་ཁ་བྱང་།"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6437,7 +6427,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "གློག་-འཕྲིན་ཁ་བྱང་ནུས་མེད།"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6985,7 +6975,7 @@
 msgstr "ཁྱིམ་དཔར་འཕྲིན།"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "རང་དོན་གློག་-འཕྲིན།"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7048,7 +7038,7 @@
 msgstr "ལཱ་གཡོག་ དཔར་འཕྲིན།"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "གློག་འཕྲིན་ ལཱ་གཡོག"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8723,7 +8713,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8921,12 +8911,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "གློག་འཕྲིན་ཁ་བྱང་ %s ལུ་ གྲུབ་འབྲས་ཚུ་མ་ཐོབ་པས།"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "%s ངེས་དཔྱད་ལུ་འདྲི་དཔྱད་འབད་ཟེར་བའི་གློག་-འཕྲིན་གཅིག་ཐོབ་དགོཔ་ཨིན།"
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8964,7 +8954,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "འཛོལ་བ་ 0x%04x: འ་ནི་གསལ་གཞི་ལུ་ཧེ་མ་ལས་རང་ཞུ་བ་གཅིག་བསྣར་ཏེ་ཡོདཔ་ལས་ གློག་-འཕྲིན་ཁ་བྱང་བསྒྱུར་"
@@ -8973,7 +8963,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "འཛོལ་བ་ 0x%04x: གློག་འཕྲིན་ཁ་བྱང་བསྒྱུར་བཅོས་འབད་མི་ཚུགས་པས་ག་ཅི་སྦེ་ཟེར་བ་ཅིན་ བྱིན་ཏེ་ཡོད་པའི་ཁ་"
@@ -8982,7 +8972,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "འཛོལ་བ་ 0x%04x: བྱིན་ཏེ་ཡོད་པའི་ཁ་བྱང་འདི་ནུས་མེད་གཅིག་ཨིནམ་ལས་ གློག་-འཕྲིན་ཁ་བྱང་བསྒྱུར་བཅོས་འབད་"
@@ -8995,7 +8985,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s ལུ་གློག་འཕྲིན་ཁ་བྱང་འདི་ %s ཨིན།"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9274,15 +9264,15 @@
 "ཀྱིས་ཆ་རོགས་ཚུ་ནང་ལས་ དབང་སྤྲོད་སླར་ཞུ་ཚུགས།"
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "གློག་-འཕྲིན་གྱི་ཐོག་ལས་ ཆ་རོགས་འཚོལ།"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "གློག་འཕྲིན་གྱི་ཐོག་ལས་ཆ་རོགས་ཅིག་གི་དོན་ལུ་འཚོལ་ཞིབ་འབད།"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "ཁྱོད་ཀྱིས་འཚོལ་ཞིབ་འབད་བའི་བསྒང་གི་  ཆ་རོགས་ཀྱི་གློག་འཕྲིན་ཁ་བྱང་འདི་ཡིག་དཔར་རྐྱབས།"
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9313,11 +9303,11 @@
 msgstr "རྩིས་ཐོ་ངེས་གཏན་བཟོ།"
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "ད་ལྟོ་ ཐོ་འགོད་འབད་ཡོད་པའི་གློག་-འཕྲིན་ཁ་བྱང་འདི་ བཀྲམ་སྟོན་འབད།"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "ད་ལྟོ་ ཐོ་འགོད་འབད་ཡོད་པའི་གློག་-འཕྲིན་ཁ་བྱང་འདི་ བསྒྱུར་བཅོས་འབད།..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9325,7 +9315,7 @@
 msgstr "དབང་སྤྲོད་བསྒུག་བཞིན་དུའི་ཆ་རོགས་ཚུ་སྟོན།"
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "གློག་འཕྲིན་ཁ་བྱང་གིས་ཐོག་ལས་ ཆ་རོགས་ཀྱི་དོན་ལུ་ འཚོལ་ཞིབ་འབད།..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9415,10 +9405,6 @@
 msgid "College"
 msgstr "མཐོ་རིམ་སློབ་གྲྭ།"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "གློག་འཕྲིན།"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "གནས་ཨང་།"
@@ -12187,7 +12173,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "གློག་-འཕྲིན་: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12534,7 +12520,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "གློག་འཕྲིན་བལྟ་ནི་བཀག་དམ་འབད་ཡོདཔ།"
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15460,7 +15446,7 @@
 msgstr "མཱའུསི་འདི་ ཁོང་རའི་གུ་ལུ་ཡོདཔ་ད་ ཚད་བརྒལ་འབྲེལ་ལམ་ཚུ་འབྲི་ནིའི་ཚོས་གཞི།"
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "གློག་འཕྲིན་འདྲ་བཤུས་རྐྱབས(_C)"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15899,8 +15885,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>པ་ལག་ཨིན་རྒྱས་བཤད་ཚུ།</b>"
 msgstr[1] "<b>པ་ལག་ཨིན་རྒྱས་བཤད་ཚུ།</b>"
 
@@ -17173,7 +17159,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "གློག་-འཕྲིན་གཏང་མ་ཚུགས།"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17181,7 +17167,7 @@
 msgstr "ལག་ལེན་འཐབ་བཏུབ་པའི་ཨི་བོ་ལུ་ཤཱན་འདི་ འགྲུལ་ལམ་ནང་བ་ཐོབ་པས།"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17189,7 +17175,7 @@
 msgstr "ཁ་བྱང་ཀི་དེབ་ལུ་ཁ་སྐོང་རྐྱབས།"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "གློག་-འཕྲིན་གཏང་།"
 
 #. Configuration frame
@@ -17247,7 +17233,7 @@
 msgstr "མཇུག་མིང་:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "གློག་འཕྲིན།"
 
 #. *< type
--- a/po/el.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/el.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3856,8 +3856,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1067
-msgid "E-Mail"
-msgstr "E-Mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:401
 #: ../libpurple/protocols/bonjour/bonjour.c:707
@@ -3888,16 +3888,6 @@
 msgid "Purple Person"
 msgstr ""
 
-#: ../libpurple/protocols/bonjour/bonjour.c:704
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:988
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5559,8 +5549,8 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3747
 #: ../libpurple/protocols/oscar/oscar.c:3756
-msgid "E-Mail Address"
-msgstr "Διεύθυνση e-mail"
+msgid "Email Address"
+msgstr "Διεύθυνση email"
 
 #: ../libpurple/protocols/jabber/buddy.c:2427
 #: ../libpurple/protocols/jabber/buddy.c:2428
@@ -6606,8 +6596,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
-msgstr "Μη έγκυρη διεύθυνση e-mail"
+msgid "Invalid email address"
+msgstr "Μη έγκυρη διεύθυνση email"
 
 #: ../libpurple/protocols/msn/error.c:49
 #: ../libpurple/protocols/msnp9/error.c:49
@@ -7218,8 +7208,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1812
 #: ../libpurple/protocols/msnp9/msn.c:1668
-msgid "Personal E-Mail"
-msgstr "Προσωπικό E-Mail"
+msgid "Personal Email"
+msgstr "Προσωπικό Email"
 
 #: ../libpurple/protocols/msn/msn.c:1813
 #: ../libpurple/protocols/msnp9/msn.c:1669
@@ -7294,8 +7284,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1843
 #: ../libpurple/protocols/msnp9/msn.c:1699
-msgid "Work E-Mail"
-msgstr "E-mail εργασίας"
+msgid "Work Email"
+msgstr "Email εργασίας"
 
 #: ../libpurple/protocols/msn/msn.c:1844
 #: ../libpurple/protocols/msnp9/msn.c:1700
@@ -9125,12 +9115,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2500
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Λάβατε ένα ICQ e-mail από %s [%s]\n"
+"Λάβατε ένα ICQ email από %s [%s]\n"
 "\n"
 "Το μήνυμα είναι:\n"
 "%s"
@@ -9310,13 +9300,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3981
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Δε βρέθηκαν αποτελέσματα για τη διεύθυνση e-mail %s"
+msgid "No results found for email address %s"
+msgstr "Δε βρέθηκαν αποτελέσματα για τη διεύθυνση email %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4002
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Πρέπει να λάβετε ένα e-mail επιβεβαίωσης του %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "Πρέπει να λάβετε ένα email επιβεβαίωσης του %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:4004
 msgid "Account Confirmation Requested"
@@ -9354,7 +9344,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4047
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "Σφάλμα 0x%04x: Αδυναμία αλλαγής της ηλ. διεύθυνσης επειδή υπάρχει μία αίτηση "
@@ -9363,7 +9353,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4050
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "Σφάλμα 0x%04x: Αδυναμία αλλαγής της ηλ. διεύθυνσης επειδή η διεύθυνση που "
@@ -9372,7 +9362,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4053
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Error 0x%04x: Αδυναμία αλλαγής της ηλ. διεύθυνσης επειδή η διεύθυνση που "
@@ -9385,8 +9375,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4066
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "Η διεύθυνση e-mail του %s είναι %s"
+msgid "The email address for %s is %s"
+msgstr "Η διεύθυνση email του %s είναι %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4068
 msgid "Account Info"
@@ -9662,16 +9652,16 @@
 "επάνω τους και επιλέγοντας \"Αίτηση έγκρισης (ξανά).\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6334
-msgid "Find Buddy by E-Mail"
-msgstr "Εύρεση φίλου με e-mail"
+msgid "Find Buddy by Email"
+msgstr "Εύρεση φίλου με email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6335
-msgid "Search for a buddy by e-mail address"
-msgstr "Αναζήτηση ενός φίλου με e-mail"
+msgid "Search for a buddy by email address"
+msgstr "Αναζήτηση ενός φίλου με email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6336
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Πληκτρολογείστε το e-mail του φίλου που ψάχνετε."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Πληκτρολογείστε το email του φίλου που ψάχνετε."
 
 #: ../libpurple/protocols/oscar/oscar.c:6339
 msgid "_Search"
@@ -9700,20 +9690,20 @@
 msgstr "Επιβεβαίωση λογαριασμού"
 
 #: ../libpurple/protocols/oscar/oscar.c:6533
-msgid "Display Currently Registered E-Mail Address"
-msgstr "Εμφάνιση καταχωρημένης διεύθυνσης e-mail"
+msgid "Display Currently Registered Email Address"
+msgstr "Εμφάνιση καταχωρημένης διεύθυνσης email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6537
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "Αλλαγή καταχωρημένης διεύθυνσης e-mail..."
+msgid "Change Currently Registered Email Address..."
+msgstr "Αλλαγή καταχωρημένης διεύθυνσης email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6544
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Εμφάνιση φίλων που περιμένουν έγκριση"
 
 #: ../libpurple/protocols/oscar/oscar.c:6550
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Αναζήτηση φίλου με e-mail..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Αναζήτηση φίλου με email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6555
 msgid "Search for Buddy by Information"
@@ -9794,10 +9784,6 @@
 msgid "College"
 msgstr "Κολέγιο"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Ταχ. Κώδικας"
@@ -12521,8 +12507,8 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:370
 #: ../libpurple/protocols/silc10/util.c:361
@@ -12842,8 +12828,8 @@
 msgstr "Η υπηρεσία καταλόγου είναι προσωρινά μη διαθέσιμη."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
-msgstr "Απαγορεύεται η εύρεση e-mail."
+msgid "Email lookup restricted."
+msgstr "Απαγορεύεται η εύρεση email."
 
 #: ../libpurple/protocols/toc/toc.c:533
 msgid "Keyword ignored."
@@ -15868,8 +15854,8 @@
 msgstr "Χρώμα που θα ζωγραφίζεται το όνομα ενός μηνύματος ενέργειας."
 
 #: ../pidgin/gtkimhtml.c:1632
-msgid "_Copy E-Mail Address"
-msgstr "_Αντιγραφή διεύθυνσης e-mail"
+msgid "_Copy Email Address"
+msgstr "_Αντιγραφή διεύθυνσης email"
 
 #: ../pidgin/gtkimhtml.c:1644
 msgid "_Open Link in Browser"
@@ -16277,10 +16263,10 @@
 
 #: ../pidgin/gtknotify.c:575
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
-msgstr[0] "<b>Έχετε %d νέο e-mail.</b>"
-msgstr[1] "<b>Έχετε %d νέα e-mail.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>Έχετε %d νέο email.</b>"
+msgstr[1] "<b>Έχετε %d νέα email.</b>"
 
 #: ../pidgin/gtknotify.c:1008
 #, c-format
@@ -17596,24 +17582,24 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
-msgstr "Αδυναμία αποστολής e-mail"
+msgid "Unable to send email"
+msgstr "Αδυναμία αποστολής email"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
 msgid "The evolution executable was not found in the PATH."
 msgstr "Το εκτελέσιμο evolution δε βρέθηκε στη ΔΙΑΔΡΟΜΉ."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
-msgstr "Δε βρέθηκε διεύθυνση e-mail για αυτόν το φίλο."
+msgid "An email address was not found for this buddy."
+msgstr "Δε βρέθηκε διεύθυνση email για αυτόν το φίλο."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
 msgid "Add to Address Book"
 msgstr "Προσθήκη στο βιβλίο διευθύνσεων"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
-msgstr "Αποστολή e-mail"
+msgid "Send Email"
+msgstr "Αποστολή email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:412
@@ -17674,8 +17660,8 @@
 msgstr "Επώνυμο:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/en_AU.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/en_AU.po	Thu Jun 26 09:07:56 2008 +0000
@@ -1173,7 +1173,7 @@
 #: ../finch/gntnotify.c:225 ../pidgin/gtknotify.c:341
 #, fuzzy
 msgid "New Mail"
-msgstr "E-Mail"
+msgstr "Email"
 
 #: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:940
 #, c-format
@@ -3631,8 +3631,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
-msgstr "E-Mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
 #: ../libpurple/protocols/bonjour/bonjour.c:665
@@ -3667,17 +3667,6 @@
 msgid "Purple Person"
 msgstr "New Person"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "E-mail:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5443,14 +5432,14 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
-msgstr "E-Mail Address"
+msgid "Email Address"
+msgstr "Email Address"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
 #: ../libpurple/protocols/jabber/buddy.c:2411
 #, fuzzy
 msgid "Search for XMPP users"
-msgstr "Search for a buddy by e-mail address"
+msgstr "Search for a buddy by email address"
 
 #. "Search"
 #: ../libpurple/protocols/jabber/buddy.c:2412
@@ -6519,8 +6508,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Invalid e-mail address"
+msgid "Invalid email address"
+msgstr "Invalid email address"
 
 #: ../libpurple/protocols/msn/error.c:49
 #, c-format
@@ -7084,7 +7073,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Personal Title"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7153,8 +7142,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
-msgstr "E-Mail"
+msgid "Work Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/msn/msn.c:1688
 msgid "Work IM"
@@ -8849,12 +8838,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9040,13 +9029,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "No results found for e-mail address %s"
+msgid "No results found for email address %s"
+msgstr "No results found for email address %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "You should receive an email asking to confirm %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
 msgid "Account Confirmation Requested"
@@ -9085,28 +9074,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 
 #: ../libpurple/protocols/oscar/oscar.c:4023
@@ -9116,8 +9105,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
+msgstr "The email address for %s is %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
 msgid "Account Info"
@@ -9402,16 +9391,16 @@
 "them and selecting \"Re-request Authorisation.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
-msgstr "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
+msgstr "Find Buddy by Email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
-msgstr "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
+msgstr "Search for a buddy by email address"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Type the email address of the buddy you are searching for."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
 #, fuzzy
@@ -9443,12 +9432,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Display Currently Registered Address"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Change Currently Registered Address..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9457,8 +9446,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Search for Buddy by E-Mail..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Search for Buddy by Email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
 msgid "Search for Buddy by Information"
@@ -9550,10 +9539,6 @@
 msgid "College"
 msgstr "_Collapse"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12399,7 +12384,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "EMail: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12754,8 +12739,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "E-mail lookup restricted."
+msgid "Email lookup restricted."
+msgstr "Email lookup restricted."
 
 #: ../libpurple/protocols/toc/toc.c:533
 #, c-format
@@ -14911,7 +14896,7 @@
 msgid "%d person in room"
 msgid_plural "%d people in room"
 msgstr[0] "%d person in room"
-msgstr[1] "%d person in room"
+msgstr[1] "%d people in room"
 
 #: ../pidgin/gtkconv.c:6486 ../pidgin/gtkstatusbox.c:660
 #, fuzzy
@@ -15779,8 +15764,8 @@
 msgstr "Colour to draw hyperlinks."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
-msgstr "_Copy E-Mail Address"
+msgid "_Copy Email Address"
+msgstr "_Copy Email Address"
 
 #: ../pidgin/gtkimhtml.c:1610
 msgid "_Open Link in Browser"
@@ -16186,8 +16171,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17507,7 +17492,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Unable to send message."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17515,7 +17500,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17524,8 +17509,8 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
-msgstr "E-Mail"
+msgid "Send Email"
+msgstr "Email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:412
@@ -17583,8 +17568,8 @@
 msgstr "Last name:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
@@ -19165,8 +19150,8 @@
 #~ msgid "Check Mail"
 #~ msgstr "Check Mail"
 
-#~ msgid "Check e-mail every X seconds.\n"
-#~ msgstr "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
+#~ msgstr "Check email every X seconds.\n"
 
 #~ msgid "Auto-login"
 #~ msgstr "Auto-login"
--- a/po/en_CA.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/en_CA.po	Thu Jun 26 09:07:56 2008 +0000
@@ -1173,7 +1173,7 @@
 #: ../finch/gntnotify.c:225 ../pidgin/gtknotify.c:341
 #, fuzzy
 msgid "New Mail"
-msgstr "E-Mail"
+msgstr "Email"
 
 #: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:940
 #, c-format
@@ -3631,8 +3631,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
-msgstr "E-Mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
 #: ../libpurple/protocols/bonjour/bonjour.c:665
@@ -3667,17 +3667,6 @@
 msgid "Purple Person"
 msgstr "New Person"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "E-mail:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5445,14 +5434,14 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
-msgstr "E-Mail Address"
+msgid "Email Address"
+msgstr "Email Address"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
 #: ../libpurple/protocols/jabber/buddy.c:2411
 #, fuzzy
 msgid "Search for XMPP users"
-msgstr "Search for a buddy by e-mail address"
+msgstr "Search for a buddy by email address"
 
 #. "Search"
 #: ../libpurple/protocols/jabber/buddy.c:2412
@@ -6521,8 +6510,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Invalid e-mail address"
+msgid "Invalid email address"
+msgstr "Invalid email address"
 
 #: ../libpurple/protocols/msn/error.c:49
 #, c-format
@@ -7085,7 +7074,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Personal Title"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7154,8 +7143,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
-msgstr "E-Mail"
+msgid "Work Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/msn/msn.c:1688
 msgid "Work IM"
@@ -8839,12 +8828,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9032,13 +9021,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "No results found for e-mail address %s"
+msgid "No results found for email address %s"
+msgstr "No results found for email address %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "You should receive an email asking to confirm %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
 msgid "Account Confirmation Requested"
@@ -9077,28 +9066,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 
 #: ../libpurple/protocols/oscar/oscar.c:4023
@@ -9108,8 +9097,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
+msgstr "The email address for %s is %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
 msgid "Account Info"
@@ -9390,16 +9379,16 @@
 "them and selecting \"Re-request Authorization.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
-msgstr "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
+msgstr "Find Buddy by Email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
-msgstr "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
+msgstr "Search for a buddy by email address"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Type the email address of the buddy you are searching for."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
 #, fuzzy
@@ -9431,12 +9420,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Display Currently Registered Address"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Change Currently Registered Address..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9445,8 +9434,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Search for Buddy by E-Mail..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Search for Buddy by Email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
 msgid "Search for Buddy by Information"
@@ -9538,10 +9527,6 @@
 msgid "College"
 msgstr "_Collapse"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12387,7 +12372,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "EMail: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12742,8 +12727,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "E-mail lookup restricted."
+msgid "Email lookup restricted."
+msgstr "Email lookup restricted."
 
 #: ../libpurple/protocols/toc/toc.c:533
 #, c-format
@@ -15767,8 +15752,8 @@
 msgstr "Colour to draw hyperlinks."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
-msgstr "_Copy E-Mail Address"
+msgid "_Copy Email Address"
+msgstr "_Copy Email Address"
 
 #: ../pidgin/gtkimhtml.c:1610
 msgid "_Open Link in Browser"
@@ -16174,8 +16159,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17495,7 +17480,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Unable to send message."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17503,7 +17488,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17512,8 +17497,8 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
-msgstr "E-Mail"
+msgid "Send Email"
+msgstr "Email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:412
@@ -17571,8 +17556,8 @@
 msgstr "Last name:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
@@ -19147,8 +19132,8 @@
 #~ msgid "Check Mail"
 #~ msgstr "Check Mail"
 
-#~ msgid "Check e-mail every X seconds.\n"
-#~ msgstr "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
+#~ msgstr "Check email every X seconds.\n"
 
 #~ msgid "Auto-login"
 #~ msgstr "Auto-login"
--- a/po/en_GB.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/en_GB.po	Thu Jun 26 09:07:56 2008 +0000
@@ -818,7 +818,7 @@
 msgstr "Emails"
 
 msgid "You have mail!"
-msgstr "You have e-mail!"
+msgstr "You have email!"
 
 msgid "Sender"
 msgstr "Sender"
@@ -2753,8 +2753,8 @@
 msgid "Last name"
 msgstr "Surname"
 
-msgid "E-Mail"
-msgstr "E-Mail"
+msgid "Email"
+msgstr "Email"
 
 msgid "AIM Account"
 msgstr "AIM Account"
@@ -2778,9 +2778,6 @@
 msgid "Purple Person"
 msgstr "Purple Person"
 
-msgid "E-mail"
-msgstr "E-mail"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -2914,7 +2911,7 @@
 msgstr "Your current password is different from the one that you specified."
 
 msgid "Unable to change password. Error occurred.\n"
-msgstr "Unable to change password. An error occured.\n"
+msgstr "Unable to change password. An error occurred.\n"
 
 msgid "Change password for the Gadu-Gadu account"
 msgstr "Change password for the Gadu-Gadu account"
@@ -3854,8 +3851,8 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "Fill in one or more fields to search for any matching XMPP users."
 
-msgid "E-Mail Address"
-msgstr "E-Mail Address"
+msgid "Email Address"
+msgstr "Email Address"
 
 msgid "Search for XMPP users"
 msgstr "Search for XMPP users"
@@ -4585,8 +4582,8 @@
 msgstr "Syntax Error (probably a client bug)"
 
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Invalid e-mail address"
+msgid "Invalid email address"
+msgstr "Invalid email address"
 
 #, c-format
 msgid "User does not exist"
@@ -4991,8 +4988,8 @@
 msgid "Home Fax"
 msgstr "Home Fax"
 
-msgid "Personal E-Mail"
-msgstr "Personal E-mail"
+msgid "Personal Email"
+msgstr "Personal Email"
 
 msgid "Personal IM"
 msgstr "Personal IM"
@@ -5034,8 +5031,8 @@
 msgid "Work Fax"
 msgstr "Work Fax"
 
-msgid "Work E-Mail"
-msgstr "Work E-mail"
+msgid "Work Email"
+msgstr "Work Email"
 
 msgid "Work IM"
 msgstr "Work IM"
@@ -5273,7 +5270,7 @@
 msgstr "Message could not be sent because the user is offline:"
 
 msgid "Message could not be sent because a connection error occurred:"
-msgstr "Message could not be sent because a connection error occured:"
+msgstr "Message could not be sent because a connection error occurred:"
 
 msgid "Message could not be sent because we are sending too quickly:"
 msgstr "Message could not be sent because we are sending too quickly:"
@@ -6380,12 +6377,12 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6524,12 +6521,12 @@
 msgstr[1] "The following usernames are associated with %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "No results found for e-mail address %s"
-
-#, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "You should receive an e-mail asking to confirm %s."
+msgid "No results found for email address %s"
+msgstr "No results found for email address %s"
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
+msgstr "You should receive an email asking to confirm %s."
 
 msgid "Account Confirmation Requested"
 msgstr "Account Confirmation Requested"
@@ -6556,26 +6553,26 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 
 #, c-format
@@ -6586,8 +6583,8 @@
 msgstr "Error Changing Account Info"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
+msgstr "The email address for %s is %s"
 
 msgid "Account Info"
 msgstr "Account Info"
@@ -6799,14 +6796,14 @@
 "You can re-request authorisation from these buddies by right-clicking on "
 "them and selecting \"Re-request Authorisation.\""
 
-msgid "Find Buddy by E-Mail"
-msgstr "Find Buddy by E-Mail"
-
-msgid "Search for a buddy by e-mail address"
-msgstr "Search for a buddy by e-mail address"
-
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Type the e-mail address of the buddy you are searching for."
+msgid "Find Buddy by Email"
+msgstr "Find Buddy by Email"
+
+msgid "Search for a buddy by email address"
+msgstr "Search for a buddy by email address"
+
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Type the email address of the buddy you are searching for."
 
 msgid "_Search"
 msgstr "_Search"
@@ -6828,17 +6825,17 @@
 msgid "Confirm Account"
 msgstr "Confirm Account"
 
-msgid "Display Currently Registered E-Mail Address"
-msgstr "Display Currently Registered E-mail Address"
-
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "Change Currently Registered E-mail Address"
+msgid "Display Currently Registered Email Address"
+msgstr "Display Currently Registered Email Address"
+
+msgid "Change Currently Registered Email Address..."
+msgstr "Change Currently Registered Email Address"
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Show Buddies Awaiting Authorisation"
 
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Search for Buddy by E-mail Address..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Search for Buddy by Email Address..."
 
 msgid "Search for Buddy by Information"
 msgstr "Search for Buddy by Information"
@@ -6904,9 +6901,6 @@
 msgid "College"
 msgstr "College/University"
 
-msgid "Email"
-msgstr "Email"
-
 msgid "Zipcode"
 msgstr "Postcode"
 
@@ -8655,8 +8649,8 @@
 msgstr "User Name: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #, c-format
 msgid "Host Name: \t%s\n"
@@ -8909,8 +8903,8 @@
 msgstr "Dir service temporarily unavailable."
 
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "E-mail lookup restricted."
+msgid "Email lookup restricted."
+msgstr "Email lookup restricted."
 
 #, c-format
 msgid "Keyword ignored."
@@ -11251,8 +11245,8 @@
 msgid "Enable typing notification"
 msgstr "Enable typing notification"
 
-msgid "_Copy E-Mail Address"
-msgstr "_Copy E-Mail Address"
+msgid "_Copy Email Address"
+msgstr "_Copy Email Address"
 
 msgid "_Open Link in Browser"
 msgstr "_Open Link in Browser"
@@ -11605,10 +11599,10 @@
 msgstr[1] "%s has %d new messages."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
-msgstr[0] "<b>%d new e-mail.</b>"
-msgstr[1] "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>%d new email.</b>"
+msgstr[1] "<b>%d new emails.</b>"
 
 #, c-format
 msgid "The browser command \"%s\" is invalid."
@@ -12637,20 +12631,20 @@
 msgid "_Associate Buddy"
 msgstr "_Associate Buddy"
 
-msgid "Unable to send e-mail"
-msgstr "Unable to send e-mail"
+msgid "Unable to send email"
+msgstr "Unable to send email"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "The evolution executable was not found in the PATH."
 
-msgid "An e-mail address was not found for this buddy."
-msgstr "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
+msgstr "An email address was not found for this buddy."
 
 msgid "Add to Address Book"
 msgstr "Add to Address Book"
 
-msgid "Send E-Mail"
-msgstr "Send E-Mail"
+msgid "Send Email"
+msgstr "Send Email"
 
 #. Configuration frame
 msgid "Evolution Integration Configuration"
@@ -12695,8 +12689,8 @@
 msgid "Last name:"
 msgstr "Surname"
 
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/eo.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/eo.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3739,7 +3739,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:555
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1067
-msgid "E-Mail"
+msgid "Email"
 msgstr "Retadreso"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:401
@@ -3771,16 +3771,6 @@
 msgid "Purple Person"
 msgstr "Purpura Persono"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:704
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:995
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "Retadreso"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5389,7 +5379,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3761
 #: ../libpurple/protocols/oscar/oscar.c:3770
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Retadreso"
 
 #: ../libpurple/protocols/jabber/buddy.c:2427
@@ -6418,7 +6408,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Malvalida retadreso"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7026,7 +7016,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1812
 #: ../libpurple/protocols/msnp9/msn.c:1668
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Persona Retadreso"
 
 #: ../libpurple/protocols/msn/msn.c:1813
@@ -7102,7 +7092,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1843
 #: ../libpurple/protocols/msnp9/msn.c:1699
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Laboro Retadreso"
 
 #: ../libpurple/protocols/msn/msn.c:1844
@@ -8845,7 +8835,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2507
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9022,12 +9012,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3995
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4016
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4018
@@ -9060,21 +9050,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4061
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4064
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4067
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -9085,7 +9075,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4080
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "La retadreso de %s estas %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4082
@@ -9333,15 +9323,15 @@
 "elekti \"Re-petu aŭtentigon.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6355
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Trovu kunulon laŭ Retadreso"
 
 #: ../libpurple/protocols/oscar/oscar.c:6356
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Serĉu kunulon laŭ retadreso"
 
 #: ../libpurple/protocols/oscar/oscar.c:6357
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Tajpu retadreson de la kunul kiun vi serĉas."
 
 #: ../libpurple/protocols/oscar/oscar.c:6360
@@ -9371,11 +9361,11 @@
 msgstr "Konfirmu Konton"
 
 #: ../libpurple/protocols/oscar/oscar.c:6554
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Vidigu Aktualajn Aliĝintajn Retadresojn"
 
 #: ../libpurple/protocols/oscar/oscar.c:6558
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Ŝanĝu Aktualajn Aliĝintajn Retadresojn.."
 
 #: ../libpurple/protocols/oscar/oscar.c:6565
@@ -9383,7 +9373,7 @@
 msgstr "Montru Kunulojn Atendante Permeso"
 
 #: ../libpurple/protocols/oscar/oscar.c:6571
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Serĉu Kunulon laŭ Retadreso..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6576
@@ -9462,10 +9452,6 @@
 msgid "College"
 msgstr "Kolegio"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Retadreso"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Poŝtkodo"
@@ -12100,7 +12086,7 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr ""
 
 #: ../libpurple/protocols/silc/util.c:370
@@ -12414,7 +12400,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15368,7 +15354,7 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1632
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopiu Retadreson"
 
 #: ../pidgin/gtkimhtml.c:1644
@@ -15764,8 +15750,8 @@
 
 #: ../pidgin/gtknotify.c:575
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d nova retmesaĝo.</b>"
 msgstr[1] "<b>%d novaj retmesaĝoj.</b>"
 
@@ -17033,7 +17019,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Ne eblas sendi retmesaĝon"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17041,7 +17027,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17049,7 +17035,7 @@
 msgstr "Aldonu al adresaro"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Sendu retmesaĝon"
 
 #. Configuration frame
@@ -17107,7 +17093,7 @@
 msgstr "Familia nomo:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Retadreso:"
 
 #. *< type
--- a/po/es.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/es.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3972,7 +3972,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:555
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1068
-msgid "E-Mail"
+msgid "Email"
 msgstr "Correo electrónico"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:402
@@ -4004,16 +4004,6 @@
 msgid "Purple Person"
 msgstr "Persona morada"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:705
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:998
-#: ../libpurple/protocols/silc/silc.c:986
-#: ../libpurple/protocols/silc/silc.c:1227
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "Correo electrónico"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5671,7 +5661,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3753
 #: ../libpurple/protocols/oscar/oscar.c:3762
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Dirección de correo electrónico"
 
 #: ../libpurple/protocols/jabber/buddy.c:2471
@@ -6726,7 +6716,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Dirección de correo electrónico inválida"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7342,7 +7332,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1826
 #: ../libpurple/protocols/msnp9/msn.c:1667
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Correo-e personal"
 
 #: ../libpurple/protocols/msn/msn.c:1827
@@ -7420,7 +7410,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1857
 #: ../libpurple/protocols/msnp9/msn.c:1698
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Correo-e del trabajo"
 
 #: ../libpurple/protocols/msn/msn.c:1858
@@ -9264,7 +9254,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2495
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9449,12 +9439,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3987
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "No se encontraron resultados para la dirección de correo %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4008
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Debería recibir un mensaje solicitando confirmación de %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:4010
@@ -9489,7 +9479,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4049
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Error 0x%04x: No se puede cambiar la dirección de correo electrónico porque "
@@ -9498,7 +9488,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4051
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Error 0x%04x: No se puede cambiar la dirección de correo electrónico porque "
@@ -9507,7 +9497,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4053
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Error 0x%04x: No se puede cambiar la dirección de correo electrónico porque "
@@ -9524,7 +9514,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4063
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "La dirección de correo electrónico para %s es %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4065
@@ -9797,15 +9787,15 @@
 "del ratón sobre ellos y escogiendo «Solicitar autorización otra vez.»"
 
 #: ../libpurple/protocols/oscar/oscar.c:6347
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Buscar un amigo en base a su correo electrónico"
 
 #: ../libpurple/protocols/oscar/oscar.c:6348
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Buscar amigo por la dirección correo electrónico"
 
 #: ../libpurple/protocols/oscar/oscar.c:6349
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 "Escriba la dirección de correo electrónico del amigo que está buscando."
 
@@ -9836,11 +9826,11 @@
 msgstr "Confirmar cuenta"
 
 #: ../libpurple/protocols/oscar/oscar.c:6546
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Mostrar direcciones de correo registradas actualmente"
 
 #: ../libpurple/protocols/oscar/oscar.c:6550
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Cambiar la dirección de correo registrada actualmente..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6557
@@ -9848,7 +9838,7 @@
 msgstr "Mostrar amigos pendientes de autorización"
 
 #: ../libpurple/protocols/oscar/oscar.c:6563
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Buscar un amigo por correo electrónico..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6568
@@ -9931,10 +9921,6 @@
 msgid "College"
 msgstr "Universidad"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Correo electrónico"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Código postal"
@@ -12684,7 +12670,7 @@
 #: ../libpurple/protocols/silc/util.c:367
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Correo electrónico:     %s\n"
 
 #: ../libpurple/protocols/silc/util.c:369
@@ -13010,7 +12996,7 @@
 msgstr "Servicio de directorio temporalmente no disponible."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Búsqueda de direcciones de correo electrónico restringida."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -16073,7 +16059,7 @@
 msgstr "Activar la notificación de tecleo"
 
 #: ../pidgin/gtkimhtml.c:1688
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Copiar dirección de correo electrónico"
 
 #: ../pidgin/gtkimhtml.c:1700
@@ -16504,8 +16490,8 @@
 
 #: ../pidgin/gtknotify.c:599
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>Tiene %d nuevo correo.</b>"
 msgstr[1] "<b>Tiene %d nuevos correos.</b>"
 
@@ -17831,7 +17817,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:242
 #: ../pidgin/plugins/gevolution/gevolution.c:248
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "No se pudo enviar el correo electrónico"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:243
@@ -17839,7 +17825,7 @@
 msgstr "No se encontró el ejecutable de Evolution en la ruta."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:249
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "No se ha encontrado una dirección de correo para este amigo."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:275
@@ -17847,7 +17833,7 @@
 msgstr "Añadir a la agenda"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:287
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Enviar correo electrónico"
 
 #. Configuration frame
@@ -17907,7 +17893,7 @@
 msgstr "Apellidos:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:380
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Correo electrónico:"
 
 #. *< type
--- a/po/et.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/et.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3832,7 +3832,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-post"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:401
@@ -3864,16 +3864,6 @@
 msgid "Purple Person"
 msgstr ""
 
-#: ../libpurple/protocols/bonjour/bonjour.c:704
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:988
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "E-post"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5500,7 +5490,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3747
 #: ../libpurple/protocols/oscar/oscar.c:3756
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "E-posti aadress"
 
 #: ../libpurple/protocols/jabber/buddy.c:2427
@@ -6542,7 +6532,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Vigane e-posti aadress"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7150,7 +7140,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1812
 #: ../libpurple/protocols/msnp9/msn.c:1668
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Isiklik e-post"
 
 #: ../libpurple/protocols/msn/msn.c:1813
@@ -7226,7 +7216,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1843
 #: ../libpurple/protocols/msnp9/msn.c:1699
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Töö e-post"
 
 #: ../libpurple/protocols/msn/msn.c:1844
@@ -9005,7 +8995,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2500
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9184,12 +9174,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3981
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4002
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4004
@@ -9225,7 +9215,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4047
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "Viga 0x%04x: E-postiaadressi pole võimalik muuta kuna selle ekraaninime alt "
@@ -9234,7 +9224,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4050
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "Viga 0x%04x: E-posti aadressi pole võimalik muuta kuna määratud aadressiga "
@@ -9243,7 +9233,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4053
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Viga 0x%04x: E-posti aadressi pole võimalik muuta kuna määratud aadress on "
@@ -9256,7 +9246,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4066
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Kasutaja %s e-posti aadress on %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4068
@@ -9502,15 +9492,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6334
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6335
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Sõbra otsimine e-posti aadressi järgi"
 
 #: ../libpurple/protocols/oscar/oscar.c:6336
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Sisesta otsitava sõbra e-posti aadress."
 
 #: ../libpurple/protocols/oscar/oscar.c:6339
@@ -9540,11 +9530,11 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6533
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6537
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6544
@@ -9552,7 +9542,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6550
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6555
@@ -9631,10 +9621,6 @@
 msgid "College"
 msgstr ""
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "E-post"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Indeks"
@@ -12302,7 +12288,7 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-post: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:370
@@ -12619,7 +12605,7 @@
 msgstr "Kataloogiteenus pole ajutiselt saadaval."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15592,7 +15578,7 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1632
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopeeri e-posti aadress"
 
 #: ../pidgin/gtkimhtml.c:1644
@@ -15993,8 +15979,8 @@
 
 #: ../pidgin/gtknotify.c:575
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d uus e-sõnum.</b>"
 msgstr[1] "<b>%d uut e-sõnumit.</b>"
 
@@ -17268,7 +17254,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "E-kirja pole võimalik saata"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17276,7 +17262,7 @@
 msgstr "Evolutioni programmi pole võimalik PATH radadel leida."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Selle sõbra e-posti aadressi ei leitud."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17284,7 +17270,7 @@
 msgstr "Lisa aadressiraamatusse"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Saada e-kiri"
 
 #. Configuration frame
@@ -17342,7 +17328,7 @@
 msgstr "Perekonnanimi:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-post:"
 
 #. *< type
--- a/po/eu.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/eu.po	Thu Jun 26 09:07:56 2008 +0000
@@ -1,246 +1,3 @@
-# translation of eu.po to 
-# translation of eu.po to
-# translation of eu.po to
-# translation of eu.po to
-# translation of eu.po to
-# translation of eu.po to
-# translation of eu.po to
-# translation of gaim-2.0_eu.po to
-# translation of gaim-2.0_eu.po to
-# translation of gaim-2.0_eu.po to
-# translation of gaim-2.0_eu.po to
-# translation of gaim-2.0_eu.po to Basque
-# translation of gaim.po to Basque
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
-# tamax, 2006.
 # Hizkuntza Politikarako Sailburuordetza <hizkpol@ej-gv.es>, 2005.
 # Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2006.
 # tamax, 2006.
@@ -3887,7 +3644,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Helb. el."
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3922,16 +3679,6 @@
 msgid "Purple Person"
 msgstr "Pertsona berria"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "Helbide elektronikoa"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5649,7 +5396,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Helbide elektronikoa"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6734,7 +6481,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Helbide elektronikoa ez da zuzena"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7282,7 +7029,7 @@
 msgstr "Etxeko Fax-a"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Norberaren posta elektronikoa"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7346,7 +7093,7 @@
 msgstr "Laneko Fax-a"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Laneko helbide elektronikoa"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -9039,7 +8786,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9241,12 +8988,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Emaitzarik ez %s helbide elektronikoarentzat "
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "%s berrestea eskatzeko posta-mezu bat jaso beharko zenuke. "
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -9286,7 +9033,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "0x%04x errorea: ezin da helbide elektronikoa aldatu,  lehendik "
@@ -9295,7 +9042,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "0x%04x errorea: ezin da helbide elektronikoa aldatu, emandako helbideak "
@@ -9304,7 +9051,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "0x%04x errorea: ezin da helbide elektronikoa aldatu, emandako helbidea ez "
@@ -9317,7 +9064,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s erabiltzailearen helbide elektronikoa %s da "
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9602,15 +9349,15 @@
 "gainean, eta hautatu \"Eskatu baimena berriro.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Bilatu laguna helbide elektronikoaren arabera "
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Bilatu laguna helbide elektronikoaren arabera"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Idatzi aurkitu nahi duzun lagunaren helbide elektronikoa."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9642,12 +9389,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Bistaratu une honetan erregistratuta dagoen helbidea"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Aldatu une honetan erregistratuta dagoen helbidea..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9656,7 +9403,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Bilatu laguna helbide elektronikoaren arabera... "
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9749,11 +9496,6 @@
 msgid "College"
 msgstr "_Tolestu"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-#, fuzzy
-msgid "Email"
-msgstr "Helbide elektronikoa"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12578,7 +12320,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Helbide elektronikoa.: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12931,7 +12673,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Helbide elektronikoaren bilaketa murriztu da. "
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15881,7 +15623,7 @@
 msgstr "Kolorea hiperestekak marrazteko sagua gainetik pasatzean."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopiatu helbide elektronikoa"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -16308,8 +16050,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>Plugin ezaugarriak</b>"
 msgstr[1] "<b>Plugin ezaugarriak</b>"
 
@@ -17590,7 +17332,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Ezin da posta-mezua bidali."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17598,7 +17340,7 @@
 msgstr "Evolution-en Exukatagarria ez da bere helbidean topatu. "
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17606,7 +17348,7 @@
 msgstr "Gehitu helbide-liburuan"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Posta bidali"
 
 #. Configuration frame
@@ -17664,7 +17406,7 @@
 msgstr "Deitura:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Helbide elektronikoa:"
 
 #. *< type
--- a/po/fa.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/fa.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3537,7 +3537,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "پست الکترونیکی"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3571,16 +3571,6 @@
 msgid "Purple Person"
 msgstr "شخص جدید"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "پست الکترونیکی"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5278,7 +5268,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "نشانی پست الکترونیکی"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6355,7 +6345,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "نشانی پست الکترونیکی نامعتبر"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6898,7 +6888,7 @@
 msgstr "نمابر خانه"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "پست الکترونیکی شخصی"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6960,7 +6950,7 @@
 msgstr "نمابر محل کار"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "پست الکترونیکی کاری"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8625,7 +8615,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8802,12 +8792,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "نتیجه‌ای برای نشانی پست الکترونیکی %s پیدا نشد"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "شما باید یک نامهٔ الکترونیکی برای تأیید %s دریافت کنید."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8845,7 +8835,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "خطای 0x%04x: تغییر نشانی پست الکترونیکی ممکن نیست چون یک درخواست معلق دیگر "
@@ -8854,7 +8844,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "خطای 0x%04x: تغییر نشانی پست الکترونیکی ممکن نیست چون نشانی داده شده با "
@@ -8863,7 +8853,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "خطای 0x%04x: تغییر نشانی پست الکترونیکی ممکن نیست چون نشانی داده شده نامعتبر "
@@ -8876,7 +8866,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "نشانی پست الکترونیکی %s، %s است"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9148,15 +9138,15 @@
 "اعطای اجازه» را انتخاب کنید."
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "پیدا کردن رفیق از روی پست الکترونیکی"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "جستجو به دنبال رفیق از روی نشانی پست الکترونیکی"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "نشانی پست الکترونیکی رفیقی را که دنبالش می‌گردید وارد کنید."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9186,11 +9176,11 @@
 msgstr "تأیید حساب"
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "نمایش نشانی پست الکترونیک ثبت شدهٔ فعلی"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "تغییر نشانی پست الکترونیک ثبت شدهٔ فعلی..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9198,7 +9188,7 @@
 msgstr "نمایش رفقای در انتظار اجازه"
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "جستجو به دنبال رفیق از روی پست الکترونیکی..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9289,10 +9279,6 @@
 msgid "College"
 msgstr "مدرسه"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "پست الکترونیکی"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "کُد پستی"
@@ -12042,7 +12028,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "پست الکترونیکی: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12384,7 +12370,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "گشتن به دنبال نشانی پست الکترونیکی محدود شده است."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15262,7 +15248,7 @@
 msgstr "رنگ پیوندهای اینترنتی وقتی موشی روی آنها قرار می‌گیرد."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_نسخه‌برداری از نشانی پست الکترونیکی"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15705,8 +15691,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>جزئیات متصل شونده</b>"
 
 #: ../pidgin/gtknotify.c:989
@@ -16957,7 +16943,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "نمی‌توان نامهٔ الکترونیکی فرستاد"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16965,7 +16951,7 @@
 msgstr "اوولوشن قابل اجرا در PATH پیدا نشد."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16973,7 +16959,7 @@
 msgstr "اضافه کردن به دفترچهٔ نشانی"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "ارسال نامهٔ الکترونیکی"
 
 #. Configuration frame
@@ -17033,7 +17019,7 @@
 msgstr "نام خانوادگی:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "پست الکترونیکی:"
 
 #. *< type
--- a/po/fi.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/fi.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3909,7 +3909,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:555
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1068
-msgid "E-Mail"
+msgid "Email"
 msgstr "Sähköposti"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:401
@@ -3941,16 +3941,6 @@
 msgid "Purple Person"
 msgstr "Purple-henkilö"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:704
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:998
-#: ../libpurple/protocols/silc/silc.c:986
-#: ../libpurple/protocols/silc/silc.c:1227
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "Sähköposti"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5599,7 +5589,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3751
 #: ../libpurple/protocols/oscar/oscar.c:3760
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Sähköpostiosoite"
 
 #: ../libpurple/protocols/jabber/buddy.c:2470
@@ -6650,7 +6640,7 @@
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Epäkelpo sähköpostiosoite"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7310,7 +7300,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1826
 #: ../libpurple/protocols/msnp9/msn.c:1667
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Oma sähköposti"
 
 #: ../libpurple/protocols/msn/msn.c:1827
@@ -7386,7 +7376,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1857
 #: ../libpurple/protocols/msnp9/msn.c:1698
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Työsähköposti"
 
 #: ../libpurple/protocols/msn/msn.c:1858
@@ -9217,7 +9207,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2493
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9400,12 +9390,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3985
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Ei hakutuloksia sähköpostiosoitteelle %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4006
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Sinun tulisi saada sähköpostiviesti %s:n varmistusta varten."
 
 #: ../libpurple/protocols/oscar/oscar.c:4008
@@ -9440,7 +9430,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4047
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Virhe 0x%04x: Sähköpostiosoitetta ei voi muuttaa koska tälle käyttäjänimelle "
@@ -9449,7 +9439,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4049
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Virhe 0x%04x: Sähköpostiosoitetta ei voi muuttaa koska annettu osoite on "
@@ -9458,7 +9448,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4051
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Virhe 0x%04x: Sähköpostiosoitetta ei voi muuttaa koska annettu osoite on "
@@ -9475,7 +9465,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4061
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s:n sähköpostiosoite on %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4063
@@ -9748,15 +9738,15 @@
 "nappia heihin ja valitsemalla \"Pyydä valtuutus uudelleen\"."
 
 #: ../libpurple/protocols/oscar/oscar.c:6345
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Etsi tuttava sähköpostiosoitteen perusteella"
 
 #: ../libpurple/protocols/oscar/oscar.c:6346
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Etsi tuttava sähköpostiosoitteen perusteella"
 
 #: ../libpurple/protocols/oscar/oscar.c:6347
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Syötä etsimäsi tuttavan sähköpostiosoite."
 
 #: ../libpurple/protocols/oscar/oscar.c:6350
@@ -9786,11 +9776,11 @@
 msgstr "Vahvista tili"
 
 #: ../libpurple/protocols/oscar/oscar.c:6544
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Näytä tällä hetkellä rekisteröity sähköpostiosoite"
 
 #: ../libpurple/protocols/oscar/oscar.c:6548
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Muuta tällä hetkellä rekisteröityä sähköpostiosoitetta..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6555
@@ -9798,7 +9788,7 @@
 msgstr "Näytä tuttavat jotka odottavat valtuutusta"
 
 #: ../libpurple/protocols/oscar/oscar.c:6561
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Etsi tuttavaa sähköpostiosoitteen perusteella..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6566
@@ -9883,10 +9873,6 @@
 msgid "College"
 msgstr "Yliopisto"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Sähköposti"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Postinumero"
@@ -12619,7 +12605,7 @@
 #: ../libpurple/protocols/silc/util.c:367
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Sähköposti: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:369
@@ -12957,7 +12943,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Sähköpostin katsominen rajoitettu."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -16026,7 +16012,7 @@
 msgstr "Ota kirjoittamishuomautus käyttöön"
 
 #: ../pidgin/gtkimhtml.c:1688
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopioi sähköpostiosoite"
 
 #: ../pidgin/gtkimhtml.c:1700
@@ -16447,8 +16433,8 @@
 
 #: ../pidgin/gtknotify.c:587
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d uusi sähköposti.</b>"
 msgstr[1] "<b>%d uutta sähköpostia.</b>"
 
@@ -17768,7 +17754,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:242
 #: ../pidgin/plugins/gevolution/gevolution.c:248
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Sähköpostia ei voi lähettää."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:243
@@ -17776,7 +17762,7 @@
 msgstr "Suoritettava evolution-tiedosto ei löytynyt PATH-muuttujasta."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:249
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Tälle tuttavalle ei löytynyt sähköpostiosoitetta."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:275
@@ -17784,7 +17770,7 @@
 msgstr "Lisää osoitekirjaan"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:287
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Lähetä sähköposti"
 
 #. Configuration frame
@@ -17842,7 +17828,7 @@
 msgstr "Sukunimi:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:380
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Sähköposti:"
 
 #. *< type
@@ -20279,7 +20265,7 @@
 #~ msgid "Check Mail"
 #~ msgstr "Tarkista posti"
 
-#~ msgid "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
 #~ msgstr "Tarkista posti x sekunnin välein.\n"
 
 #~ msgid "Auto-login"
--- a/po/fr.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/fr.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2801,7 +2801,7 @@
 msgid "Last name"
 msgstr "Nom :"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "Courriel"
 
 msgid "AIM Account"
@@ -2826,9 +2826,6 @@
 msgid "Purple Person"
 msgstr "Personne Purple"
 
-msgid "E-mail"
-msgstr "Adresse électronique"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3915,7 +3912,7 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "Saisissez un ou plusieurs critères de recherche d'utilisateurs XMPP."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Adresse électronique"
 
 msgid "Search for XMPP users"
@@ -4659,7 +4656,7 @@
 msgstr "Erreur de syntaxe (probablement un bug de l'application)"
 
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Adresse de courrier électronique non valide"
 
 #, c-format
@@ -5067,7 +5064,7 @@
 msgid "Home Fax"
 msgstr "Télécopie personnelle"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Adresse électronique personnelle"
 
 msgid "Personal IM"
@@ -5110,7 +5107,7 @@
 msgid "Work Fax"
 msgstr "Télécopie professionnelle"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Adresse électronique professionnelle"
 
 msgid "Work IM"
@@ -6473,7 +6470,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6618,11 +6615,11 @@
 msgstr[1] "Les noms d'utilisateur suivants sont associés à %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Aucun résultat pour l'adresse électronique %s"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Vous devriez recevoir un courrier électronique pour confirmer %s"
 
 msgid "Account Confirmation Requested"
@@ -6652,7 +6649,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Erreur 0x%04x : Impossible de changer l'adresse électronique parce qu'il y a "
@@ -6660,7 +6657,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Erreur 0x%04x : Impossible de changer l'adresse électronique parce qu'il y a "
@@ -6668,7 +6665,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Erreur 0x%04x : Impossible de changer l'adresse électronique parce qu'elle "
@@ -6682,7 +6679,7 @@
 msgstr "Erreur en changeant les informations du compte"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "L'adresse électronique de %s est %s"
 
 msgid "Account Info"
@@ -6904,13 +6901,13 @@
 "Vous pouvez redemander une autorisation de ces contacts en choisissant "
 "« Redemander autorisation » sur un clic droit du contact."
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Chercher un contact par adresse électronique"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Rechercher par adresse électronique"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Saisissez l'adresse électronique du contact que vous cherchez"
 
 msgid "_Search"
@@ -6933,16 +6930,16 @@
 msgid "Confirm Account"
 msgstr "Confirmer le compte"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Afficher l'adresse courante enregistrée"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Changer l'adresse courante enregistrée..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Afficher les demandes d'autorisation"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Chercher un contact par adresse électronique..."
 
 msgid "Search for Buddy by Information"
@@ -7009,9 +7006,6 @@
 msgid "College"
 msgstr "Éducation"
 
-msgid "Email"
-msgstr "Courrier électronique"
-
 msgid "Zipcode"
 msgstr "Code postal"
 
@@ -8776,7 +8770,7 @@
 msgstr "Nom d'utilisateur : %s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Adresse électronique : %s\n"
 
 #, c-format
@@ -9035,7 +9029,7 @@
 msgstr "L'annuaire est temporairement indisponible."
 
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "La recherche par adresse électronique est restreinte."
 
 #, c-format
@@ -11409,7 +11403,7 @@
 msgid "Enable typing notification"
 msgstr "Activer la notification de saise"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Copier l'adresse électronique"
 
 msgid "_Open Link in Browser"
@@ -11770,8 +11764,8 @@
 msgstr[1] "%s a reçu %d nouveaux messages."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d nouveau courrier.</b>"
 msgstr[1] "<b>%d nouveaux courriers.</b>"
 
@@ -12818,7 +12812,7 @@
 msgid "_Associate Buddy"
 msgstr "_Associer un contact"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Impossible d'envoyer un courrier électronique"
 
 msgid "The evolution executable was not found in the PATH."
@@ -12826,13 +12820,13 @@
 "Le binaire « evolution » n'a pas été trouvé dans les dossiers par défaut du "
 "PATH."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "L'adresse électronique du contact n'a pas été trouvée."
 
 msgid "Add to Address Book"
 msgstr "Ajouter au carnet d'adresses"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Envoyer un courrier"
 
 #. Configuration frame
@@ -12879,7 +12873,7 @@
 msgid "Last name:"
 msgstr "Nom :"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Adresse électronique :"
 
 #. *< type
--- a/po/gl.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/gl.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3562,7 +3562,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Correo electrónico"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3594,16 +3594,6 @@
 msgid "Purple Person"
 msgstr "Persoa Purple"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "Correo electrónico"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5306,7 +5296,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Enderezo de correo electrónico"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6381,7 +6371,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Enderezo de correo electrónico non válido"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6925,7 +6915,7 @@
 msgstr "Fax de casa"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Correo electrónico persoal"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6987,7 +6977,7 @@
 msgstr "Fax do traballo"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Correo electrónico do traballo"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8672,7 +8662,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8859,12 +8849,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Non se atoparon resultados para o enderezo de correo electrónico %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Debería recibir un correo electrónico. solicitando confirmación de %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8903,7 +8893,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "Erro 0x%04x: Non se pode cambiar o enderezo de correo electrónico porque xa "
@@ -8912,7 +8902,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "Erro 0x%04x: Non se pode cambiar o enderezo de correo electrónico porque o "
@@ -8921,7 +8911,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Erro 0x%04x: Non se pode cambiar o enderezo de correo electrónico porque o "
@@ -8934,7 +8924,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "O enderezo de correo electrónico de %s é %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9216,15 +9206,15 @@
 "do rato sobre eles e escoller\"Solicitar autorización outra vez.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Buscar un contacto polo correo electrónico"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Buscar un contacto polo enderezo de correo electrónico"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 "Escriba o enderezo de correo electrónico do contacto que está a buscar."
 
@@ -9255,11 +9245,11 @@
 msgstr "Confirmar conta"
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Mostrar o enderezo rexistrado actualmente"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Cambiar o enderezo de correo actualmente rexistrado..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9267,7 +9257,7 @@
 msgstr "Mostrar contactos pendentes de autorización"
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Buscar un contacto polo enderezo de correo electrónico..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9356,10 +9346,6 @@
 msgid "College"
 msgstr "Escola"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Correo electrónico"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Código postal"
@@ -12098,7 +12084,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Correo electrónico: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12441,7 +12427,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Busca de enderezos de correo electrónico restrinxida."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15350,7 +15336,7 @@
 msgstr "Cor para debuxar ligazóns cando o rato estea enriba."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Copiar o enderezo de correo"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15781,8 +15767,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>Ten %d correo electrónico novo.</b>"
 msgstr[1] "<b>Ten %d correo electrónico novo.</b>"
 
@@ -17036,7 +17022,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Imposible enviar o correo electrónico"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17044,7 +17030,7 @@
 msgstr "O executable de evolution non se atopou no PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Non se atopou un enderezo de correo electrónico para este amigo."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17052,7 +17038,7 @@
 msgstr "Engadir á axenda de enderezos"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Enviar un correo"
 
 #. Configuration frame
@@ -17112,7 +17098,7 @@
 msgstr "Apelidos:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Correo electrónico:"
 
 #. *< type
--- a/po/gu.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/gu.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3625,7 +3625,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "ઇ-મેઇલ"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3660,17 +3660,6 @@
 msgid "Purple Person"
 msgstr "નવી વ્યક્તિ"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "ઈ-મેઈલ:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "બોનજોર"
@@ -5395,7 +5384,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "ઇ-મેઇલ સરનામું"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6474,7 +6463,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "અયોગ્ય ઈ-મેઈલ સરનામું"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7038,7 +7027,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "ખાનગી શીર્ષક"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7107,7 +7096,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "ઇ-મેઇલ"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8786,7 +8775,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8975,12 +8964,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "ઈ-મેઈલ સરનામા %s માટે કોઈ પરિણામો મળ્યા નથી"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "તમને %s ની ખાતરી કરવા માટે પૂછતો ઈ-મેઈલ મળવો જોઈએ."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -9020,7 +9009,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "ક્ષતિ 0x%04x: ઈ-મેઈલ સરનામું બદલવામાં અસમર્થ કારણ કે આ સ્ક્રીન નામ માટેની અરજી પહેલાથી "
@@ -9029,7 +9018,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "ક્ષતિ 0x%04x: ઈ-મેઈલ સરનામું બદલવામાં અસમર્થ કારણ કે આપેલ સરનામાના ઘણા સ્ક્રીન નામો "
@@ -9038,7 +9027,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "ક્ષતિ 0x%04x: ઈ-મેઈલ સરનામું બદલવામાં અસમર્થ કારણ કે આપેલ સરનામું અગોગ્ય છે."
 
@@ -9049,7 +9038,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s માટેનું ઈ-મેઈલ સરનામું %s છે"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9326,15 +9315,15 @@
 "પુનઃ-અરજી કરો\" પસંદ કરીને."
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "ઈ-મેઈલ દ્વારા વ્યક્તિ શોધો"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "ઈ-મેઈલ સરનામા દ્વારા વ્યક્તિ માટે શોધ"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "તમે જે વ્યક્તિ માટે શોધ કરી રહ્યા હોય તેનું ઈ-મેઈલ સરનામું લખો."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9367,12 +9356,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "વર્તમાનમાં રજીસ્ટર થયેલ સરનામાને દર્શાવો"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "વર્તમાનમાં રજીસ્ટર થયેલ સરનામાને બદલો..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9381,7 +9370,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "ઈ-મેઈલ દ્વારા વ્યક્તિ માટે શોધ કરો..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9471,10 +9460,6 @@
 msgid "College"
 msgstr "ભેગું કરો (_C)"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "ઈમેઈલ"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12308,7 +12293,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "ઈમેઈલ: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12659,7 +12644,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "ઈ-મેઈલ જોવાનું પ્રતિબંધિત છે."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15623,7 +15608,7 @@
 msgstr "જ્યારે માઉસ તેના પર લઇ જવાય ત્યારનો હાયપરલીંકો દોરવા માટેનો રંગ."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "ઈ-મેઈલ સરનામાની નકલ કરો (_C)"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -16055,8 +16040,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17358,7 +17343,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "ઇ-મેલ મોકલવામાં અસમર્થ."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17366,7 +17351,7 @@
 msgstr "PATHમાં ઇવોલ્યુશન કાર્યક્રમ મળ્યો નહી."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17374,7 +17359,7 @@
 msgstr "સરનામા પુસ્તિકામાં ઉમેરો"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "ઇ-મેઇલ મોકલો"
 
 #. Configuration frame
@@ -17432,7 +17417,7 @@
 msgstr "છેલ્લું નામ:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "ઈ-મેઈલ:"
 
 #. *< type
@@ -19029,7 +19014,7 @@
 #~ msgid "Check Mail"
 #~ msgstr "મેઈલ ચકાસો"
 
-#~ msgid "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
 #~ msgstr "દર X સેકન્ડે ઈ-મેઈલ ચકાસો.\n"
 
 #~ msgid "Auto-login"
--- a/po/he.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/he.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2699,7 +2699,7 @@
 msgid "Last name"
 msgstr "שם משפחה"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "דואר"
 
 msgid "AIM Account"
@@ -2724,9 +2724,6 @@
 msgid "Purple Person"
 msgstr "אדם סגול"
 
-msgid "E-mail"
-msgstr "דוא\"ל"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3783,7 +3780,7 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "יש להזין אחד או יותר מן השדות לביצוע חיפוש של משתמשי XMPP מתאימים."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "כתובת דוא\"ל"
 
 msgid "Search for XMPP users"
@@ -4504,7 +4501,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "שגיאת תחביר (כנראה באג בתוכנה)"
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "כתובת דוא\"ל לא תקפה"
 
 msgid "User does not exist"
@@ -4860,7 +4857,7 @@
 msgid "Home Fax"
 msgstr "פקס בבית"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "דוא\"ל אישי"
 
 msgid "Personal IM"
@@ -4903,7 +4900,7 @@
 msgid "Work Fax"
 msgstr "פקס בעבודה"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "דוא\"ל בעבודה"
 
 msgid "Work IM"
@@ -6217,7 +6214,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6357,11 +6354,11 @@
 msgstr[1] "שמות המשתמשים שלהלן מקושרים עם %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "לא נמצאו תוצאות עבור כתובת הדוא\"ל %s"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "ישלח דוא\"ל לאשר את %s."
 
 msgid "Account Confirmation Requested"
@@ -6386,7 +6383,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "שגיאה 0x%04x: לא ניתן לשנות את כתובת הדוא\"ל כיוון שיש כבר בקשה מחכה עבור "
@@ -6394,7 +6391,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "שגיאה 0x%04x: לא ניתן לשנות את כתובת הדוא\"ל כיוון שהכתובת הנתונה מיוחסת "
@@ -6402,7 +6399,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "שגיאה 0x%04x: לא ניתן לשנות את כתובת הדוא\"ל כיוון שהכתובת שניתנה לא חוקית."
@@ -6415,7 +6412,7 @@
 msgstr "שגיאה בשינוי המידע של החשבון"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "כתובת הדוא\"ל של %s היא %s"
 
 msgid "Account Info"
@@ -6615,13 +6612,13 @@
 "יש באפשרותך לבקש שוב הרשאה מאנשי קשר אלו ע\"י לחיצה ימנית עם העכבר עליהם "
 "ולבחור \"בקש הרשאה שוב\"."
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "מצא איש קשר לפי דוא\"ל"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "חפש איש קשר לפי כתובת בדואר האלרקטרוני שלו"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "הקלד את כתובת הדוא\"ל של איש הקשר אותו אתה מחפש."
 
 msgid "_Search"
@@ -6644,16 +6641,16 @@
 msgid "Confirm Account"
 msgstr "אשר חשבון"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "הצג את הכתובת הרשומה כרגע"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "שנה את הכתובת הרשומה כרגע..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "הצג את אנשי הקשר שמחכים לאישור"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "חפש איש-קשר עפ\"י כתובת דוא\"ל..."
 
 msgid "Search for Buddy by Information"
@@ -6719,9 +6716,6 @@
 msgid "College"
 msgstr "מכללה"
 
-msgid "Email"
-msgstr "דוא\"ל"
-
 msgid "Zipcode"
 msgstr "מיקוד"
 
@@ -8448,7 +8442,7 @@
 msgstr "שם משתמש: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "דוא\"ל: \t\t%s\n"
 
 #, c-format
@@ -8684,7 +8678,7 @@
 msgid "Dir service temporarily unavailable."
 msgstr "שירות המדריך אינו זמין זמנית."
 
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "חיפוש הדוא\"ל מוגבל."
 
 msgid "Keyword ignored."
@@ -10969,7 +10963,7 @@
 msgid "Enable typing notification"
 msgstr "הפעל התרעת הקלדה"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "העתק _כתובת הדוא\"ל"
 
 msgid "_Open Link in Browser"
@@ -11310,8 +11304,8 @@
 msgstr[1] "יש ל-%s %d הודעות חדשות."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>הודעה %d חדשה.</b>"
 msgstr[1] "<b>%d הודעות חדשות.</b>"
 
@@ -12328,19 +12322,19 @@
 msgid "_Associate Buddy"
 msgstr "שייך איש _קשר"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "לא ניתן לשלוח הודעת דוא\"ל"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "תוכנת ההרצה של evolution לא נמצאה בנתיבי ה-PATH."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "כתובת דוא\"ל לא נמצאה עבור חבר זה."
 
 msgid "Add to Address Book"
 msgstr "הוסף לפנקס הכתובות"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "שלח דוא\"ל"
 
 #. Configuration frame
@@ -12386,7 +12380,7 @@
 msgid "Last name:"
 msgstr "שם משפחה:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "דוא\"ל:"
 
 #. *< type
--- a/po/hi.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/hi.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3754,7 +3754,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "इमेल"
 
 #  And now for the buttons
@@ -3792,17 +3792,6 @@
 msgid "Purple Person"
 msgstr "नया व्यक्ति"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "इ-मेल:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5588,7 +5577,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "इमेल पता"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6691,7 +6680,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "अवैध इमेल पता"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7262,7 +7251,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "निजी उपाधि"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7331,7 +7320,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "इमेल"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -9023,7 +9012,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9214,12 +9203,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "%s इमेल पते के लिए कोइ भी नतीजा नहीं मिला"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "%s को निश्चित करने के लिए एक ईमेल मिलेगा।"
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -9259,7 +9248,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "त्रुटी 0x%04x: ईमेल बदलने में असमर्थ क्योंकि मांगे गये ईमेल पते के लिए पहले से एक आवेदन है।"
@@ -9267,7 +9256,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "त्रुटी 0x%04x: ईमेल बदलने में असमर्थ क्योंकि मांगे गये ईमेल पते के लिए पहले से बहुत से स्क्रीन-"
@@ -9276,7 +9265,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "त्रुटी 0x%04x:  ईमेल बदलने में असमर्थ क्योंकि दिया गया ईमेल पता अवैध है।"
 
@@ -9287,7 +9276,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s के लिए ईमेल पता है %s"
 
 #  And now for the buttons
@@ -9561,15 +9550,15 @@
 "लिए अनुरोध कर सकतें हैं।"
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "ईमेल के द्वारा बड्डी को ढूंढें"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "बड्डी की खोज ईमेल पता द्वारा करें"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "जिस बड्डी की खोज कर रहें हैं उसका ईमेल पता डालें।"
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9603,12 +9592,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "वर्तमान रजिस्टर करा पता दिखायें"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "वर्तमान रजिस्टर करा पता बदलें"
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9617,7 +9606,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "बड्डी की खोज ईमेल द्वारा करें..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9709,10 +9698,6 @@
 msgid "College"
 msgstr "सिकुड़िये(_C)"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "इमेल"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12589,7 +12574,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "इमेंल: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12948,7 +12933,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "इमेल का देखना सीमाबद्ध किया गया।"
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -16073,7 +16058,7 @@
 msgstr "हाइपरलिंक खींचना का रंग।"
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "इमेल पते की प्रतिलिपि बनायें(_C)"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -16489,8 +16474,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17865,7 +17850,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "संदेश भेजने में असमर्थ ।"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17873,7 +17858,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17882,7 +17867,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "इमेल"
 
 #. Configuration frame
@@ -17941,7 +17926,7 @@
 msgstr "अंतिम नाम"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "इ-मेल:"
 
 #  *< api_version
@@ -19620,7 +19605,7 @@
 #~ msgid "Check Mail"
 #~ msgstr "डाक देखें"
 
-#~ msgid "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
 #~ msgstr "हर X सेकण्ड मे डाक देखें.\n"
 
 #~ msgid "Auto-login"
--- a/po/hu.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/hu.po	Thu Jun 26 09:07:56 2008 +0000
@@ -825,7 +825,7 @@
 msgstr "Rendszernapló"
 
 msgid "Emails"
-msgstr "E-mailek"
+msgstr "Emailek"
 
 msgid "You have mail!"
 msgstr "Levele érkezett!"
@@ -843,7 +843,7 @@
 msgstr[1] "%s (%s) %d új üzenetet kapott."
 
 msgid "New Mail"
-msgstr "Új e-mail"
+msgstr "Új email"
 
 #, c-format
 msgid "Info for %s"
@@ -2773,8 +2773,8 @@
 msgid "Last name"
 msgstr "Vezetéknév"
 
-msgid "E-Mail"
-msgstr "E-mail"
+msgid "Email"
+msgstr "Email"
 
 msgid "AIM Account"
 msgstr "AIM fiók"
@@ -2798,9 +2798,6 @@
 msgid "Purple Person"
 msgstr "Purple személy"
 
-msgid "E-mail"
-msgstr "E-mail"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3891,8 +3888,8 @@
 msgstr ""
 "Töltsön ki legalább egy mezőt a megfelelő XMPP felhasználók kereséséhez."
 
-msgid "E-Mail Address"
-msgstr "E-mail cím"
+msgid "Email Address"
+msgstr "Email cím"
 
 msgid "Search for XMPP users"
 msgstr "XMPP felhasználók keresése"
@@ -4625,8 +4622,8 @@
 msgstr "Szintaktikai hiba (valószínűleg klienshiba)"
 
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Érvénytelen e-mail cím"
+msgid "Invalid email address"
+msgstr "Érvénytelen email cím"
 
 #, c-format
 msgid "User does not exist"
@@ -5033,8 +5030,8 @@
 msgid "Home Fax"
 msgstr "Otthoni fax"
 
-msgid "Personal E-Mail"
-msgstr "Saját e-mail"
+msgid "Personal Email"
+msgstr "Saját email"
 
 msgid "Personal IM"
 msgstr "Saját azonnali üzenő"
@@ -5076,8 +5073,8 @@
 msgid "Work Fax"
 msgstr "Munkahelyi fax"
 
-msgid "Work E-Mail"
-msgstr "Munkahelyi e-mail"
+msgid "Work Email"
+msgstr "Munkahelyi email"
 
 msgid "Work IM"
 msgstr "Munkahelyi azonnali üzenő"
@@ -6295,7 +6292,7 @@
 "only letters, numbers and spaces, or contain only numbers."
 msgstr ""
 "Nem lehet belépni: Sikertelen a belépés %s néven, mert a felhasználónév "
-"érvénytelen. A felhasználóneveknek érvényes e-mail címnek kell lennie, vagy "
+"érvénytelen. A felhasználóneveknek érvényes email címnek kell lennie, vagy "
 "betűvel kell kezdődniük és betűket, számokat, szóközöket, vagy csak számokat "
 "tartalmazhatnak."
 
@@ -6437,12 +6434,12 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"ICQ e-mail érkezett a következőtől: %s [%s]\n"
+"ICQ email érkezett a következőtől: %s [%s]\n"
 "\n"
 "Az üzenet:\n"
 "%s"
@@ -6598,11 +6595,11 @@
 msgstr[1] "A következő felhasználónevek a következőhöz vannak rendelve: %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Nem található eredmény a(z) %s e-mail címre"
-
-#, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "No results found for email address %s"
+msgstr "Nem található eredmény a(z) %s email címre"
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
 msgstr "Kapnia kell egy %s jóváhagyását kérő levelet."
 
 msgid "Account Confirmation Requested"
@@ -6632,26 +6629,26 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
-"Hiba 0x%04x: Nem sikerült megváltoztatni az e-mail címet, mert egy kérés már "
+"Hiba 0x%04x: Nem sikerült megváltoztatni az email címet, mert egy kérés már "
 "függőben van erre a felhasználónévre."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
-"Hiba 0x%04x: Nem sikerült megváltoztatni az e-mail címet, mert a megadott "
+"Hiba 0x%04x: Nem sikerült megváltoztatni az email címet, mert a megadott "
 "cím túl sok felhasználónévhez van társítva."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Hiba 0x%04x: Nem sikerült megváltoztatni az e-mail címet, mert a megadott "
+"Hiba 0x%04x: Nem sikerült megváltoztatni az email címet, mert a megadott "
 "cím érvénytelen."
 
 #, c-format
@@ -6662,8 +6659,8 @@
 msgstr "Hiba a fiókinformációk módosításakor"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "%s e-mail címe a következő: %s"
+msgid "The email address for %s is %s"
+msgstr "%s email címe a következő: %s"
 
 msgid "Account Info"
 msgstr "Fiókinformációk"
@@ -6725,7 +6722,7 @@
 "numbers and spaces, or contain only numbers."
 msgstr ""
 "Nem sikerült %s partner hozzáadása, mert a felhasználónév érvénytelen. A "
-"felhasználóneveknek érvényes e-mail címnek kell lenniük, vagy betűvel kell "
+"felhasználóneveknek érvényes email címnek kell lenniük, vagy betűvel kell "
 "kezdődniük, és betűket, számokat és szóközöket, vagy csak számokból "
 "állhatnak."
 
@@ -6879,14 +6876,14 @@
 "Újra kérheti engedélyezést ezektől a partnerektől a jobb egérgombbal "
 "kattintva a nevükön, és az „Engedélyezés újra kérése” választásával"
 
-msgid "Find Buddy by E-Mail"
-msgstr "Partnerek keresése e-mail cím szerint"
-
-msgid "Search for a buddy by e-mail address"
-msgstr "Partner keresése e-mail cím alapján"
-
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Adja meg annak a partnernek az e-mail címét, akit keres."
+msgid "Find Buddy by Email"
+msgstr "Partnerek keresése email cím szerint"
+
+msgid "Search for a buddy by email address"
+msgstr "Partner keresése email cím alapján"
+
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Adja meg annak a partnernek az email címét, akit keres."
 
 msgid "_Search"
 msgstr "_Keresés"
@@ -6908,17 +6905,17 @@
 msgid "Confirm Account"
 msgstr "Fiók jóváhagyása"
 
-msgid "Display Currently Registered E-Mail Address"
-msgstr "A jelenleg regisztrált e-mail cím megjelenítése"
-
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "A jelenleg regisztrált e-mail cím módosítása..."
+msgid "Display Currently Registered Email Address"
+msgstr "A jelenleg regisztrált email cím megjelenítése"
+
+msgid "Change Currently Registered Email Address..."
+msgstr "A jelenleg regisztrált email cím módosítása..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Engedélyezésre váró partnerek megjelenítése"
 
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Partner keresése e-mail cím szerint..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Partner keresése email cím szerint..."
 
 msgid "Search for Buddy by Information"
 msgstr "Partner keresése információ alapján"
@@ -6985,9 +6982,6 @@
 msgid "College"
 msgstr "Főiskola"
 
-msgid "Email"
-msgstr "E-mail"
-
 msgid "Zipcode"
 msgstr "Irányítószám"
 
@@ -8765,8 +8759,8 @@
 msgstr "Felhasználónév: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #, c-format
 msgid "Host Name: \t%s\n"
@@ -9025,8 +9019,8 @@
 msgstr "Könyvtárszolgáltatás átmenetileg nem érhető el."
 
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "E-mail keresés korlátozva."
+msgid "Email lookup restricted."
+msgstr "Email keresés korlátozva."
 
 #, c-format
 msgid "Keyword ignored."
@@ -11384,8 +11378,8 @@
 msgid "Enable typing notification"
 msgstr "Gépelésértesítés engedélyezése"
 
-msgid "_Copy E-Mail Address"
-msgstr "E-mail cím _másolása"
+msgid "_Copy Email Address"
+msgstr "Email cím _másolása"
 
 msgid "_Open Link in Browser"
 msgstr "Hivatk_ozás megnyitása böngészőben"
@@ -11736,10 +11730,10 @@
 msgstr[1] "%s %d új üzenetet kapott."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
-msgstr[0] "<b>%d új e-mail.</b>"
-msgstr[1] "<b>%d új e-mail.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>%d új email.</b>"
+msgstr[1] "<b>%d új email.</b>"
 
 #, c-format
 msgid "The browser command \"%s\" is invalid."
@@ -12774,22 +12768,22 @@
 msgid "_Associate Buddy"
 msgstr "_Partner összerendelése"
 
-msgid "Unable to send e-mail"
-msgstr "Nem küldhető e-mail"
+msgid "Unable to send email"
+msgstr "Nem küldhető email"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr ""
 "Az evolution végrehajtható állomány nem található a PATH változóban megadott "
 "útvonalon."
 
-msgid "An e-mail address was not found for this buddy."
-msgstr "Nem található e-mail cím ehhez a partnerhez."
+msgid "An email address was not found for this buddy."
+msgstr "Nem található email cím ehhez a partnerhez."
 
 msgid "Add to Address Book"
 msgstr "Hozzáadás a címjegyzékhez"
 
-msgid "Send E-Mail"
-msgstr "E-mail küldése"
+msgid "Send Email"
+msgstr "Email küldése"
 
 #. Configuration frame
 msgid "Evolution Integration Configuration"
@@ -12836,8 +12830,8 @@
 msgid "Last name:"
 msgstr "Vezetéknév:"
 
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/id.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/id.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3776,7 +3776,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3808,16 +3808,6 @@
 msgid "Purple Person"
 msgstr "Orang Ungu"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5429,7 +5419,7 @@
 #: ../libpurple/protocols/novell/novell.c:1490
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Alamat Email"
 
 #: ../libpurple/protocols/jabber/buddy.c:2413
@@ -6470,7 +6460,7 @@
 msgstr "Kesalahan Syntax (kemungkinan bug klien)"
 
 #: ../libpurple/protocols/msn/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Alamat email tidak valid"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6975,8 +6965,8 @@
 msgstr "Faksimili Rumah"
 
 #: ../libpurple/protocols/msn/msn.c:1766
-msgid "Personal E-Mail"
-msgstr "E-mail Pribadi"
+msgid "Personal Email"
+msgstr "Email Pribadi"
 
 #: ../libpurple/protocols/msn/msn.c:1767
 msgid "Personal IM"
@@ -7037,7 +7027,7 @@
 msgstr "Faksimili Kantor"
 
 #: ../libpurple/protocols/msn/msn.c:1797
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Email Kantor"
 
 #: ../libpurple/protocols/msn/msn.c:1798
@@ -8627,12 +8617,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Anda menerima e-mail ICQ dari %s [%s]\n"
+"Anda menerima email ICQ dari %s [%s]\n"
 "\n"
 "Pesannya adalah:\n"
 "%s"
@@ -8805,13 +8795,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Tidak ditemukan hasil untuk alamat e-mail %s"
+msgid "No results found for email address %s"
+msgstr "Tidak ditemukan hasil untuk alamat email %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Anda akan menerima e-mail menanyakan konfirmasi %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "Anda akan menerima email menanyakan konfirmasi %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
 msgid "Account Confirmation Requested"
@@ -8838,17 +8828,17 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because there is already a request pending for this screen name."
+msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this screen name."
 msgstr "Kesalahan 0x%04x: Tidak dapat merubah alamat email karena sudah terdapat permohonan tertunda untuk nama layar ini."
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address has too many screen names associated with it."
+msgid "Error 0x%04x: Unable to change email address because the given address has too many screen names associated with it."
 msgstr "Kesalahan 0x%04x: Tidak dapat merubah alamat email karena alamat yang diberikan memiliki terlalu banyak nama layar yang berasosiasi dengannya."
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address is invalid."
+msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
 msgstr "Kesalahan 0x%04x: Tidak dapat merubah alamat email karena alamat yang diberikan tidak valid."
 
 #: ../libpurple/protocols/oscar/oscar.c:4023
@@ -8858,7 +8848,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Alamat email untuk %s adalah %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9080,15 +9070,15 @@
 msgstr "Anda dapat mengajukan ulang otorisasi dari teman-teman ini dengan klik kanan pada mereka dan memilih \"Re-request Authorisation.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Cari Teman berdasarkan Email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6234
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Cari teman berdasarkan alamat email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6235
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Ketika alamat email dari teman yang sedang anda cari."
 
 #: ../libpurple/protocols/oscar/oscar.c:6238
@@ -9118,11 +9108,11 @@
 msgstr "Konfirmasi Akun"
 
 #: ../libpurple/protocols/oscar/oscar.c:6432
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Tampilkan Alamat Email yang Terdaftar Sekarang"
 
 #: ../libpurple/protocols/oscar/oscar.c:6436
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Ganti Alamat Email yang Terdaftar Sekarang"
 
 #: ../libpurple/protocols/oscar/oscar.c:6443
@@ -9130,7 +9120,7 @@
 msgstr "Tampilkan Teman yang Menunggu Otorisasi"
 
 #: ../libpurple/protocols/oscar/oscar.c:6449
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Cari Teman berdasarkan Alamat Email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6454
@@ -9212,10 +9202,6 @@
 msgid "College"
 msgstr "ST/Universitas"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Kode Pos"
@@ -11856,7 +11842,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12181,7 +12167,7 @@
 msgstr "Layanan dir sementara tidak tersedia."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Pencarian Email dibatasi."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15045,8 +15031,8 @@
 msgstr "Warna untuk menggambar hyperlink saat mouse berada di atasnya."
 
 #: ../pidgin/gtkimhtml.c:1583
-msgid "_Copy E-Mail Address"
-msgstr "_Salin Alamat E-Mail"
+msgid "_Copy Email Address"
+msgstr "_Salin Alamat Email"
 
 #: ../pidgin/gtkimhtml.c:1595
 msgid "_Open Link in Browser"
@@ -15452,10 +15438,10 @@
 
 #: ../pidgin/gtknotify.c:569
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
-msgstr[0] "<b>%d e-mail baru.</b>"
-msgstr[1] "<b>%d beberapa e-mails baru.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>%d email baru.</b>"
+msgstr[1] "<b>%d beberapa emails baru.</b>"
 
 #: ../pidgin/gtknotify.c:997
 #, c-format
@@ -16661,24 +16647,24 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
-msgstr "Tidak dapat mengirim e-mail"
+msgid "Unable to send email"
+msgstr "Tidak dapat mengirim email"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
 msgid "The evolution executable was not found in the PATH."
 msgstr "Eksekusi Evolution tidak ditemukan dalam PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
-msgstr "Alamat e-mail tidak ditemukan untuk teman ini."
+msgid "An email address was not found for this buddy."
+msgstr "Alamat email tidak ditemukan untuk teman ini."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
 msgid "Add to Address Book"
 msgstr "Tambahkan ke Buku Alamat"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
-msgstr "Kirim E-Mail"
+msgid "Send Email"
+msgstr "Kirim Email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:412
@@ -16735,8 +16721,8 @@
 msgstr "Nama belakang"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/it.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/it.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3869,7 +3869,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:378
@@ -3901,16 +3901,6 @@
 msgid "Purple Person"
 msgstr "Persona Purple"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:680
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:959
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "Email"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5284,7 +5274,7 @@
 #: ../libpurple/protocols/jabber/buddy.c:1025
 #, fuzzy
 msgid "Reachability Address"
-msgstr "Indirizzo e-mail"
+msgstr "Indirizzo email"
 
 #: ../libpurple/protocols/jabber/buddy.c:867
 #: ../libpurple/protocols/jabber/buddy.c:1027
@@ -5564,8 +5554,8 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3724
 #: ../libpurple/protocols/oscar/oscar.c:3733
-msgid "E-Mail Address"
-msgstr "Indirizzo e-mail"
+msgid "Email Address"
+msgstr "Indirizzo email"
 
 #: ../libpurple/protocols/jabber/buddy.c:2423
 #: ../libpurple/protocols/jabber/buddy.c:2424
@@ -6595,8 +6585,8 @@
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Indirizzo e-mail non valido"
+msgid "Invalid email address"
+msgstr "Indirizzo email non valido"
 
 #: ../libpurple/protocols/msn/error.c:49
 #: ../libpurple/protocols/msnp9/error.c:49
@@ -7272,7 +7262,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1804
 #: ../libpurple/protocols/msnp9/msn.c:1657
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Email personale"
 
 #: ../libpurple/protocols/msn/msn.c:1805
@@ -7348,7 +7338,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1835
 #: ../libpurple/protocols/msnp9/msn.c:1688
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Email ufficio"
 
 #: ../libpurple/protocols/msn/msn.c:1836
@@ -9073,12 +9063,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2449
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Hai ricevuto un'e-mail ICQ da %s [%s]\n"
+"Hai ricevuto un'email ICQ da %s [%s]\n"
 "\n"
 "Il messaggio è:\n"
 "%s"
@@ -9251,13 +9241,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3958
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Nessun risultato trovato per l'indirizzo e-mail %s"
+msgid "No results found for email address %s"
+msgstr "Nessun risultato trovato per l'indirizzo email %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3979
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Dovresti ricevere un'e-mail con la richiesta di conferma per %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "Dovresti ricevere un'email con la richiesta di conferma per %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3981
 msgid "Account Confirmation Requested"
@@ -9285,18 +9275,18 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4024
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because there is already a request pending for this screen name."
-msgstr "Errore 0x%04x: Impossibile cambiare l'indirizzo e-mail poiché c'è già una richiesta in corso per questo nome utente."
+msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this screen name."
+msgstr "Errore 0x%04x: Impossibile cambiare l'indirizzo email poiché c'è già una richiesta in corso per questo nome utente."
 
 #: ../libpurple/protocols/oscar/oscar.c:4027
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address has too many screen names associated with it."
-msgstr "Errore 0x%04x: Impossibile cambiare l'indirizzo e-mail poiché l'indirizzo fornito ha troppi nomi utente associati."
+msgid "Error 0x%04x: Unable to change email address because the given address has too many screen names associated with it."
+msgstr "Errore 0x%04x: Impossibile cambiare l'indirizzo email poiché l'indirizzo fornito ha troppi nomi utente associati."
 
 #: ../libpurple/protocols/oscar/oscar.c:4030
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address is invalid."
-msgstr "Errore 0x%04x: Impossibile cambiare l'indirizzo e-mail poiché l'indirizzo fornito non è valido."
+msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
+msgstr "Errore 0x%04x: Impossibile cambiare l'indirizzo email poiché l'indirizzo fornito non è valido."
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
@@ -9305,8 +9295,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4043
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "L'indirizzo e-mail di %s è %s"
+msgid "The email address for %s is %s"
+msgstr "L'indirizzo email di %s è %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4045
 msgid "Account Info"
@@ -9527,16 +9517,16 @@
 msgstr "Puoi richiedere nuovamente autorizzazione da questi contatti cliccando col tasto destro su di essi e scegliendo \"Richiedi nuovamente autorizzazione\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6281
-msgid "Find Buddy by E-Mail"
-msgstr "Cerca un contatto per e-mail"
+msgid "Find Buddy by Email"
+msgstr "Cerca un contatto per email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6282
-msgid "Search for a buddy by e-mail address"
-msgstr "Cerca un contatto attraverso il suo indirizzo e-mail"
+msgid "Search for a buddy by email address"
+msgstr "Cerca un contatto attraverso il suo indirizzo email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6283
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Inserisci l'indirizzo e-mail del contatto che stai cercando."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Inserisci l'indirizzo email del contatto che stai cercando."
 
 #: ../libpurple/protocols/oscar/oscar.c:6286
 msgid "_Search"
@@ -9565,11 +9555,11 @@
 msgstr "Conferma account"
 
 #: ../libpurple/protocols/oscar/oscar.c:6480
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Mostra gli attuali indirizzi email registrati"
 
 #: ../libpurple/protocols/oscar/oscar.c:6484
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Mostra gli attuali indirizzi email registrati..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6491
@@ -9577,7 +9567,7 @@
 msgstr "Mostra i contatti dai quali attendi autorizzazione"
 
 #: ../libpurple/protocols/oscar/oscar.c:6497
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Cerca un contatto per email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6502
@@ -9660,10 +9650,6 @@
 msgid "College"
 msgstr "Scuola superiore"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Codice postale"
@@ -12316,7 +12302,7 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:370
@@ -12660,8 +12646,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "Ricerca e-mail limitata."
+msgid "Email lookup restricted."
+msgstr "Ricerca email limitata."
 
 #: ../libpurple/protocols/toc/toc.c:533
 #, c-format
@@ -15572,8 +15558,8 @@
 msgstr "Colore per i collegamenti al passaggio del mouse."
 
 #: ../pidgin/gtkimhtml.c:1581
-msgid "_Copy E-Mail Address"
-msgstr "_Copia l'indirizzo e-mail"
+msgid "_Copy Email Address"
+msgstr "_Copia l'indirizzo email"
 
 #: ../pidgin/gtkimhtml.c:1593
 msgid "_Open Link in Browser"
@@ -15982,8 +15968,8 @@
 
 #: ../pidgin/gtknotify.c:570
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d nuovo messaggio di posta.</b>"
 msgstr[1] "<b>%d nuovi messaggi di posta.</b>"
 
@@ -17253,7 +17239,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Impossibile inviare l'email"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17261,7 +17247,7 @@
 msgstr "L'eseguibile di evolution non è stato trovato nel PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Non è stato trovato nessun indirizzo email per questo contatto."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17269,7 +17255,7 @@
 msgstr "Aggiungi alla rubrica"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Invia email"
 
 #. Configuration frame
@@ -17327,7 +17313,7 @@
 msgstr "Cognome:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Email:"
 
 #. *< type
--- a/po/ja.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ja.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3557,7 +3557,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-メール"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3589,16 +3589,6 @@
 msgid "Purple Person"
 msgstr "Purple な人物"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "E-メール:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5296,7 +5286,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "E-メール・アドレス"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6375,7 +6365,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "E-メール・アドレスが間違っています"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6919,7 +6909,7 @@
 msgstr "自宅の FAX"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "個人の E-メール"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6981,7 +6971,7 @@
 msgstr "勤務先の FAX"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "勤務先の E-メール"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8648,7 +8638,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8855,12 +8845,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "E-メール・アドレス %s に対する結果を得られませんでした"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "%s さんを確認するための問い合わせメールを受信して下さい"
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8896,7 +8886,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "エラー 0x%04x: このスクリーン名に対して既に要求がきているので E-メール・アド"
@@ -8905,7 +8895,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "エラー 0x%04x: たくさんのスクリーン名に割り当てられているので、この E-メー"
@@ -8914,7 +8904,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "エラー 0x%04x: このアドレスが間違っているので、この E-メール・アドレスに変更"
@@ -8927,7 +8917,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s さんの E-メール・アドレスは %s です"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9195,15 +9185,15 @@
 "う一度要求できます。"
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "E-メールから仲間を捜す"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "E-メール・アドレスから仲間を検索します"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "検索する仲間の E-メール・アドレスを入力して下さい"
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9233,11 +9223,11 @@
 msgstr "アカウントの確認"
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "現在登録されている E-メール・アドレスの表示"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "現在登録されている E-メール・アドレスの変更..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9245,7 +9235,7 @@
 msgstr "承認を待っている仲間を表示"
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "E-メールで仲間の検索..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9334,10 +9324,6 @@
 msgid "College"
 msgstr "学歴"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "E-メール"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "郵便番号"
@@ -12090,7 +12076,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-メール: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12436,7 +12422,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "E-メール検索が拒否されました"
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15342,7 +15328,7 @@
 msgstr "ハイパーリンクの上にマウスをのせた時の色です"
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "E-メール・アドレスのコピー(_C)"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15785,8 +15771,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>%d通の新しいメールがあります</b>"
 msgstr[1] "<b>%d通の新しいメールがあります</b>"
 
@@ -17033,7 +17019,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "E-メールを送信できません"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17041,7 +17027,7 @@
 msgstr "環境変数 PATH の中から Evolution の実行形式が見つかりませんでした。"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "この仲間の E-メール・アドレスがありません"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17049,7 +17035,7 @@
 msgstr "アドレス帳へ追加する"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "E-メールを送信する"
 
 #. Configuration frame
@@ -17107,7 +17093,7 @@
 msgstr "姓:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-メール"
 
 #. *< type
--- a/po/ka.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ka.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3550,8 +3550,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
-msgstr "E-Mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
 #: ../libpurple/protocols/bonjour/bonjour.c:665
@@ -3585,17 +3585,6 @@
 msgid "Purple Person"
 msgstr "ახალი პერსონა"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "ელ-ფოსტა"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5255,8 +5244,8 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
-msgstr "E-Mail მისამართი"
+msgid "Email Address"
+msgstr "Email მისამართი"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
 #: ../libpurple/protocols/jabber/buddy.c:2411
@@ -6329,8 +6318,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "არასწორი e-mail მისამართი"
+msgid "Invalid email address"
+msgstr "არასწორი email მისამართი"
 
 #: ../libpurple/protocols/msn/error.c:49
 #, c-format
@@ -6879,8 +6868,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
-msgstr "გააგზავნე E-Mail-ი"
+msgid "Personal Email"
+msgstr "გააგზავნე Email-ი"
 
 #: ../libpurple/protocols/msn/msn.c:1657
 #, fuzzy
@@ -6947,8 +6936,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
-msgstr "E-Mail"
+msgid "Work Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/msn/msn.c:1688
 msgid "Work IM"
@@ -8558,7 +8547,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8731,12 +8720,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "ელ.ფოსტის ძიების შედეგები %s-თვის არაა ნაპოვნი"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8771,21 +8760,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -8796,7 +8785,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "ელ.ფოსტის მისამართი %s-თვის არის  %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9046,15 +9035,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9085,11 +9074,11 @@
 msgstr "ანგარიშის დადასტურება"
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9097,7 +9086,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9184,10 +9173,6 @@
 msgid "College"
 msgstr ""
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "ელ.ფოსტა"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -11901,8 +11886,8 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-Mail"
+msgid "Email: \t\t%s\n"
+msgstr "Email"
 
 #: ../libpurple/protocols/silc/util.c:364
 #: ../libpurple/protocols/silc10/util.c:361
@@ -12241,7 +12226,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15106,8 +15091,8 @@
 msgstr "ლინკების ფერი მაუსის შეხებისას."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
-msgstr "_E-Mail მისამართის კოპირება"
+msgid "_Copy Email Address"
+msgstr "_Email მისამართის კოპირება"
 
 #: ../pidgin/gtkimhtml.c:1610
 msgid "_Open Link in Browser"
@@ -15496,8 +15481,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>პლაგინის დეტალები</b>"
 
 #: ../pidgin/gtknotify.c:989
@@ -16744,7 +16729,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "ვერ ვაგზავნი ელ-ფოსტას"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16752,7 +16737,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16760,8 +16745,8 @@
 msgstr "მისამართების წიგნში ჩამატება"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
-msgstr "გააგზავნე E-Mail-ი"
+msgid "Send Email"
+msgstr "გააგზავნე Email-ი"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:412
@@ -16818,7 +16803,7 @@
 msgstr "გვარი"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "ელ-ფოსტა"
 
 #. *< type
--- a/po/kn.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/kn.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3534,7 +3534,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "ವಿ-ಅಂಚೆ ವಿಳಾಸ"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3568,16 +3568,6 @@
 msgid "Purple Person"
 msgstr "ಹೊಸ ವ್ಯಕ್ತಿ"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "ವಿ-ಅಂಚೆ"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5223,7 +5213,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "ವಿ-ಅಂಚೆ ವಿಳಾಸ"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6281,7 +6271,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "ತಪ್ಪು ವಿ-ಅಂಚೆ ವಿಳಾಸ"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6823,7 +6813,7 @@
 msgstr "ಮನೆ ಫ್ಯಾಕ್ಸ"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "ಖಾಸಗಿ ವಿ-ಅಂಚೆ"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6886,7 +6876,7 @@
 msgstr "ಕಛೇರಿ ಫ್ಯಾಕ್ಸ"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "ಕಛೇರಿ  ವಿ-ಅಂಚೆ ವಿಳಾಸ"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8498,7 +8488,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8677,12 +8667,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8716,21 +8706,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -8741,7 +8731,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr " %s ಇವರ  ವಿ-ಅಂಚೆವಿಳಾಸ - %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -8991,15 +8981,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9030,11 +9020,11 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9042,7 +9032,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9128,10 +9118,6 @@
 msgid "College"
 msgstr "ಕಾಲೇಜು:"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "ವಿ-ಅಂಚೆ"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "ಝಿಪ್‍/ಪಿನ್ ಕೋಡ್"
@@ -11821,7 +11807,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "ವಿ-ಅಂಚೆ: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12158,7 +12144,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15017,7 +15003,7 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_ಇ-ಮೇಯ್ಲ್ ವಿಳಾಸವನ್ನು ನಕಲು ಮಾಡಿ"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15411,8 +15397,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>ಪ್ಲಗ್ಗಿನ್ ವಿವರಗಳು</b>"
 msgstr[1] "<b>ಪ್ಲಗ್ಗಿನ್ ವಿವರಗಳು</b>"
 
@@ -16637,7 +16623,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "ವಿ_ಅಂಚೆಯನ್ನು ಕಳಿಸಲಾಗಲಿಲ್ಲ"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16645,7 +16631,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16653,7 +16639,7 @@
 msgstr "ವಿಳಾಸಪುಸ್ತಕಕ್ಕೆ ಸೇರಿಸಿ"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "ವಿ-ಅಂಚೆ ಕಳುಹಿಸಿ"
 
 #. Configuration frame
@@ -16711,7 +16697,7 @@
 msgstr "ಕೊನೆಯ (ಅಡ್ಡ)ಹೆಸರು:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "ವಿ-ಅಂಚೆ:"
 
 #. *< type
--- a/po/ko.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ko.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3207,7 +3207,7 @@
 msgstr "하이퍼링크 위에 커서가 놓였을 때의 색상입니다."
 
 #: ../gtk/gtkimhtml.c:1516
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "이메일 주소 복사(_C)"
 
 #: ../gtk/gtkimhtml.c:1528
@@ -3602,8 +3602,8 @@
 
 #: ../gtk/gtknotify.c:511
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>%d 개의 새로운 메시지가 있습니다.</b>"
 #msgstr[1] "<b>%d 개의 새로운 메시지가 있습니다.</b>"
 
@@ -5183,7 +5183,7 @@
 
 #: ../gtk/plugins/gevolution/gevolution.c:239
 #: ../gtk/plugins/gevolution/gevolution.c:245
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "이메일을 보낼 수 없음"
 
 #: ../gtk/plugins/gevolution/gevolution.c:240
@@ -5191,7 +5191,7 @@
 msgstr "환경변수 PATH 로부터 Evolution의 실행 형식을 찾을 수 없습니다."
 
 #: ../gtk/plugins/gevolution/gevolution.c:246
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "이 친구의 이메일 주소가 없습니다."
 
 #: ../gtk/plugins/gevolution/gevolution.c:272
@@ -5199,7 +5199,7 @@
 msgstr "주소록에 추가"
 
 #: ../gtk/plugins/gevolution/gevolution.c:284
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "이메일 전송"
 
 #. Configuration frame
@@ -5257,7 +5257,7 @@
 msgstr "성:"
 
 #: ../gtk/plugins/gevolution/new_person_dialog.c:382
-msgid "E-mail:"
+msgid "Email:"
 msgstr "이메일:"
 
 #. *< type
@@ -7249,7 +7249,7 @@
 #: ../libgaim/protocols/jabber/jabber.c:797
 #: ../libgaim/protocols/silc/silc.c:695
 #: ../libgaim/protocols/silc/silc.c:935
-msgid "E-mail"
+msgid "Email"
 msgstr "이메일"
 
 #: ../libgaim/protocols/bonjour/bonjour.c:591
@@ -8309,16 +8309,6 @@
 msgid "Telephone"
 msgstr "전화"
 
-#: ../libgaim/protocols/jabber/buddy.c:283
-#: ../libgaim/protocols/jabber/buddy.c:898
-#: ../libgaim/protocols/jabber/buddy.c:906
-#: ../libgaim/protocols/jabber/buddy.c:1564
-#: ../libgaim/protocols/silc/ops.c:1075
-#: ../libgaim/protocols/silc/util.c:553
-#: ../libgaim/protocols/yahoo/yahoo_profile.c:1037
-msgid "E-Mail"
-msgstr "이메일"
-
 #: ../libgaim/protocols/jabber/buddy.c:284
 #: ../libgaim/protocols/jabber/buddy.c:921
 msgid "Organization Name"
@@ -8493,7 +8483,7 @@
 #: ../libgaim/protocols/novell/novell.c:1488
 #: ../libgaim/protocols/oscar/oscar.c:3708
 #: ../libgaim/protocols/oscar/oscar.c:3717
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "이메일 주소"
 
 #: ../libgaim/protocols/jabber/buddy.c:1758
@@ -9181,7 +9171,7 @@
 msgstr "문법 오류 (아마 클라이언트의 버그일 수 있습니다.)"
 
 #: ../libgaim/protocols/msn/error.c:42
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "이메일 주소가 잘못되었습니다."
 
 #: ../libgaim/protocols/msn/error.c:45
@@ -9659,7 +9649,7 @@
 msgstr "자택 팩스"
 
 #: ../libgaim/protocols/msn/msn.c:1607
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "개인 이메일"
 
 #: ../libgaim/protocols/msn/msn.c:1608
@@ -9720,7 +9710,7 @@
 msgstr "회사 팩스"
 
 #: ../libgaim/protocols/msn/msn.c:1638
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "회사 이메일"
 
 #: ../libgaim/protocols/msn/msn.c:1639
@@ -10903,7 +10893,7 @@
 #: ../libgaim/protocols/oscar/oscar.c:2436
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -11101,12 +11091,12 @@
 
 #: ../libgaim/protocols/oscar/oscar.c:3923
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "이메일 주소 %s 에 대한 결과를 찾을 수 없습니다."
 
 #: ../libgaim/protocols/oscar/oscar.c:3944
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "%s 님을 확인하기 위해 질의 메일을 수신해 주십시오."
 
 #: ../libgaim/protocols/oscar/oscar.c:3946
@@ -11134,17 +11124,17 @@
 
 #: ../libgaim/protocols/oscar/oscar.c:3989
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because there is already a request pending for this screen name."
+msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this screen name."
 msgstr "오류 0x%04x: 이 아이디에 대해 이미 요구가 있었기 때문에 이메일 주소를 변경할 수 없습니다."
 
 #: ../libgaim/protocols/oscar/oscar.c:3992
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address has too many screen names associated with it."
+msgid "Error 0x%04x: Unable to change email address because the given address has too many screen names associated with it."
 msgstr "오류 0x%04x: 많은 아이디에 할당되어 있기 때문에, 이 이메일 주소로는 변경할 수 없습니다."
 
 #: ../libgaim/protocols/oscar/oscar.c:3995
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address is invalid."
+msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
 msgstr "오류 0x%04x: 이 주소가 상이하기 때문에, 이 이메일 주소로는 변경할 수 없습니다."
 
 #: ../libgaim/protocols/oscar/oscar.c:3998
@@ -11168,7 +11158,7 @@
 
 #: ../libgaim/protocols/oscar/oscar.c:4014
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s 님의 이메일 주소는 %s 입니다."
 
 #: ../libgaim/protocols/oscar/oscar.c:4189
@@ -11386,15 +11376,15 @@
 msgstr "오른쪽 클릭하여 \"승인 재요청\" 을 선택하면, 이들의 친구로부터 인증을 재요청할 수 있습니다."
 
 #: ../libgaim/protocols/oscar/oscar.c:6187
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "이메일로부터 친구 찾기"
 
 #: ../libgaim/protocols/oscar/oscar.c:6188
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "이메일 주소로부터 친구를 찾습니다."
 
 #: ../libgaim/protocols/oscar/oscar.c:6189
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "검색할 친구의 이메일 주소를 입력해 주십시오."
 
 #: ../libgaim/protocols/oscar/oscar.c:6192
@@ -11428,11 +11418,11 @@
 msgstr "계정 확인"
 
 #: ../libgaim/protocols/oscar/oscar.c:6401
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "현재 등록되어 있는 이메일 주소 표시"
 
 #: ../libgaim/protocols/oscar/oscar.c:6405
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "현재 등록되어 있는 이메일 주소 변경..."
 
 #: ../libgaim/protocols/oscar/oscar.c:6412
@@ -11440,7 +11430,7 @@
 msgstr "승인을 기다리는 친구 표시"
 
 #: ../libgaim/protocols/oscar/oscar.c:6418
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "이메일로 친구 검색..."
 
 #: ../libgaim/protocols/oscar/oscar.c:6423
@@ -11518,10 +11508,6 @@
 msgid "College"
 msgstr "학력"
 
-#: ../libgaim/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "이메일"
-
 #: ../libgaim/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "우편번호"
@@ -13840,7 +13826,7 @@
 
 #: ../libgaim/protocols/silc/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "이메일: \t\t%s\n"
 
 #: ../libgaim/protocols/silc/util.c:361
@@ -14078,7 +14064,7 @@
 msgstr "일시적으로 디렉토리 서비스를 이용할 수 없습니다."
 
 #: ../libgaim/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "이메일 검색이 거부되었습니다."
 
 #: ../libgaim/protocols/toc/toc.c:533
--- a/po/lo.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/lo.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3407,7 +3407,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr ""
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3439,16 +3439,6 @@
 msgid "Purple Person"
 msgstr ""
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr ""
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5060,7 +5050,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6094,7 +6084,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr ""
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6634,7 +6624,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr ""
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6696,7 +6686,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr ""
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8270,7 +8260,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8449,12 +8439,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8488,21 +8478,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -8513,7 +8503,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -8759,15 +8749,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -8797,11 +8787,11 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -8809,7 +8799,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -8893,10 +8883,6 @@
 msgid "College"
 msgstr ""
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr ""
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr ""
@@ -11536,7 +11522,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr ""
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -11871,7 +11857,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -14640,7 +14626,7 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15010,8 +14996,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -16209,7 +16195,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16217,7 +16203,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16225,7 +16211,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr ""
 
 #. Configuration frame
@@ -16283,7 +16269,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr ""
 
 #. *< type
--- a/po/lt.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/lt.po	Thu Jun 26 09:07:56 2008 +0000
@@ -721,8 +721,11 @@
 msgstr "Pristabdyti"
 
 #, c-format
-msgid "File Transfers - %d%% of %d files"
-msgstr "Failų perdavimai – %d%% iš %d"
+msgid "File Transfers - %d%% of %d file"
+msgid_plural "File Transfers - %d%% of %d files"
+msgstr[0] "Failų perdavimai – %d%% iš %d failo"
+msgstr[1] "Failų perdavimai – %d%% iš %d failų"
+msgstr[2] "Failų perdavimai – %d%% iš %d failų"
 
 #. Create the window.
 msgid "File Transfers"
@@ -2849,7 +2852,7 @@
 msgid "Last name"
 msgstr "Pavardė"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "El. paštas"
 
 msgid "AIM Account"
@@ -2874,9 +2877,6 @@
 msgid "Purple Person"
 msgstr "(nežinomas vardas)"
 
-msgid "E-mail"
-msgstr "El. paštas"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3261,8 +3261,11 @@
 msgstr "Bloga būsena"
 
 #, c-format
-msgid "Ban on %s by %s, set %ld seconds ago"
-msgstr "Vartotojui %s uždraudė prisijungti %s prieš %ld sekundžių"
+msgid "Ban on %s by %s, set %ld second ago"
+msgid_plural "Ban on %s by %s, set %ld seconds ago"
+msgstr[0] "Vartotojui %s uždraudė prisijungti %s prieš %ld sekundę"
+msgstr[1] "Vartotojui %s uždraudė prisijungti %s prieš %ld sekundes"
+msgstr[2] "Vartotojui %s uždraudė prisijungti %s prieš %ld sekundžių"
 
 #, c-format
 msgid "Ban on %s"
@@ -3981,7 +3984,7 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "Užpildykite vieną ar daugiau laukų XMPP vartotojų paieškai."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "El. pašto adresas"
 
 msgid "Search for XMPP users"
@@ -4718,7 +4721,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "Sintaksės klaida (greičiausiai Gaim riktas)"
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Neteisingas el. pašto adresas"
 
 msgid "User does not exist"
@@ -5079,7 +5082,7 @@
 msgstr "Namų faksas"
 
 # Ar čia turima omeny „Mr.“, „Ms.“, „Dr.“ ???
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Asmeninis el. pašto adresas"
 
 # Ar čia turima omeny „Mr.“, „Ms.“, „Dr.“ ???
@@ -5123,7 +5126,7 @@
 msgid "Work Fax"
 msgstr "Darbo faksas"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Darbo el. pašto adresas"
 
 msgid "Work IM"
@@ -5442,8 +5445,11 @@
 msgstr "Prisijungiama"
 
 #, c-format
-msgid "Connection to server lost (no data received within %d seconds)"
-msgstr "Nutrūko ryšys su serveriu (negauta jokių duomenų per %d sekundžių)"
+msgid "Connection to server lost (no data received within %d second)"
+msgid_plural "Connection to server lost (no data received within %d seconds)"
+msgstr[0] "Nutrūko ryšys su serveriu (negauta jokių duomenų per %d sekundę)"
+msgstr[1] "Nutrūko ryšys su serveriu (negauta jokių duomenų per %d sekundes)"
+msgstr[2] "Nutrūko ryšys su serveriu (negauta jokių duomenų per %d sekundžių)"
 
 #. Can't write _()'d strings in array initializers. Workaround.
 msgid "New mail messages"
@@ -5541,9 +5547,18 @@
 
 #, c-format
 msgid ""
+"%d buddy was added or updated from the server (including buddies already on "
+"the server-side list)"
+msgid_plural ""
 "%d buddies were added or updated from the server (including buddies already "
 "on the server-side list)"
-msgstr ""
+msgstr[0] ""
+"%d bičiulis buvo pridėtas ar atnaujintas iš serverio (įskaitant ir "
+"bičiulius, jau esančius serverio sąraše)"
+msgstr[1] ""
+"%d bičiuliai buvo pridėti ar atnaujinti iš serverio (įskaitant ir bičiulius, "
+"jau esančius serverio sąraše)"
+msgstr[2] ""
 "%d bičiulių buvo pridėta ar atnaujinta iš serverio (įskaitant ir bičiulius, "
 "jau esančius serverio sąraše)"
 
@@ -6495,7 +6510,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6664,11 +6679,11 @@
 msgstr[2] "Tolesni naudotojų vardai yra susieti su %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Pagal el. pašto adresą %s jokių rezultatų nerasta"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Jūs turėtumėte gauti el. laišką, prašantį patvirtinti %s."
 
 msgid "Account Confirmation Requested"
@@ -6698,7 +6713,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Klaida 0x%04x: neįmanoma pakeisti el. pašto adreso, kadangi šiuo metu laukia "
@@ -6706,7 +6721,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Klaida 0x%04x: neįmanoma pakeisti el. pašto adreso, kadangi duotas adresas "
@@ -6714,7 +6729,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Klaida 0x%04x: neįmanoma pakeisti el. pašto adreso, kadangi duotas adresas "
@@ -6728,7 +6743,7 @@
 msgstr "Abonento informacijos keitimo klaida"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Vartotojo %s el. pašto adresas yra %s"
 
 msgid "Account Info"
@@ -6956,13 +6971,13 @@
 "spragtelėdamas dešiniuoju klavišu ant jų ir pasirinkdamas „Iš naujo "
 "paprašyti prieigos teisės“."
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Surasti bičiulį pagal el. pašto adresą"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Ieškoti bičiulio pagal el. pašto adresą"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Įveskite bičiulio, kurio ieškote, el. pašto adresą."
 
 msgid "_Search"
@@ -6985,16 +7000,16 @@
 msgid "Confirm Account"
 msgstr "Patvirtinti abonentą"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Parodyti šiuo metu registruotą el. pašto adresą"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Pakeisti šiuo metu registruotą el. pašto adresą..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Parodyti bičiulius, laukiančius prieigos suteikimo"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Ieškoti bičiulio pagal el. pašto adresą..."
 
 msgid "Search for Buddy by Information"
@@ -7060,9 +7075,6 @@
 msgid "College"
 msgstr "Koledžas"
 
-msgid "Email"
-msgstr "El. paštas"
-
 msgid "Zipcode"
 msgstr "Pašto kodas"
 
@@ -8847,7 +8859,7 @@
 msgstr "Vartotojo vardas: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "El. paštas: \t\t%s\n"
 
 #, c-format
@@ -9105,7 +9117,7 @@
 msgid "Dir service temporarily unavailable."
 msgstr "Katalogo tarnyba laikinai neprieinama."
 
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "El. pašto adresų paieška apribota."
 
 msgid "Keyword ignored."
@@ -11510,7 +11522,7 @@
 msgid "Enable typing notification"
 msgstr "Rodyti pranešimus apie pašnekovų renkamas žinutes"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "Kopijuoti _el. pašto adresą"
 
 msgid "_Open Link in Browser"
@@ -11863,8 +11875,8 @@
 msgstr[2] "%s turi %d naujų pranešimų."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d naujas laiškas.</b>"
 msgstr[1] "<b>%d nauji laiškai.</b>"
 msgstr[2] "<b>%d naujų laiškų.</b>"
@@ -12942,19 +12954,19 @@
 msgid "_Associate Buddy"
 msgstr "_Susieti bičiulį"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Negalima išsiųsti el. laiško"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Vykdomasis Evolution failas nerastas PATH kintamajame."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Nerastas šio bičiulio el. pašto adresas."
 
 msgid "Add to Address Book"
 msgstr "Įtraukti į adresų knygą"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Nusiųsti el. laišką"
 
 #  Configuration frame
@@ -13012,7 +13024,7 @@
 msgid "Last name:"
 msgstr "Pavardė:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "El. pašto adresas:"
 
 #  *< api_version
--- a/po/mk.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/mk.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2769,7 +2769,7 @@
 msgid "Last name"
 msgstr "Презиме"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "Е-пошта"
 
 msgid "AIM Account"
@@ -2794,9 +2794,6 @@
 msgid "Purple Person"
 msgstr "Лилакова личност"
 
-msgid "E-mail"
-msgstr "E-пошта"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3874,7 +3871,7 @@
 "Пополнете едно или повеќе полиња за да барате корисници на XMPP кои се "
 "совпаѓаат."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Адреса за е-пошта"
 
 msgid "Search for XMPP users"
@@ -4607,7 +4604,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "Синтаксна грешка (најверојатно грешка во клиентот)"
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Невалидна адреса за е-пошта"
 
 msgid "User does not exist"
@@ -4965,7 +4962,7 @@
 msgid "Home Fax"
 msgstr "Домашен факс"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Лична е-пошта"
 
 msgid "Personal IM"
@@ -5008,7 +5005,7 @@
 msgid "Work Fax"
 msgstr "Факс на работа"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Е-пошта на работа"
 
 msgid "Work IM"
@@ -6351,7 +6348,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6507,12 +6504,12 @@
 msgstr[2] "Следниве имиња од екранот се поврзани со %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Не се пронајдени резултати за адресата за е-пошта %s"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Ќе добиете e-mail за потврда на %s"
+msgid "You should receive an email asking to confirm %s."
+msgstr "Ќе добиете email за потврда на %s"
 
 msgid "Account Confirmation Requested"
 msgstr "Побарана е потврда за сметката"
@@ -6541,7 +6538,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Грешка 0x%04x: Не можам да ја променам адресата за е-пошта, бидејќи за ова "
@@ -6549,7 +6546,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Грешка 0x%04x: Не можам да ја променам адресата за е-пошта, бидејќи дадената "
@@ -6557,7 +6554,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Грешка 0x%04x: Не можам да ја променам адресата за е-пошта, бидејќи дадената "
@@ -6571,7 +6568,7 @@
 msgstr "Грешка при менување на информации за сметката"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Адресата за е-пошта за %s е %s"
 
 msgid "Account Info"
@@ -6799,13 +6796,13 @@
 "Можете одново да побарате авторизација од овие пријатели со десен клик врз "
 "нив и одбирање на \"Повторно побарај авторизација\""
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Барај пријател по е-поштата"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Барај пријател преку адресата за е-пошта"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Внесете ја адресата за е-пошта за пријателот кој го барате."
 
 msgid "_Search"
@@ -6828,16 +6825,16 @@
 msgid "Confirm Account"
 msgstr "Потврди ја сметката"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Прикажи ги тековно регистрираните адреси"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Промени ги тековно регистрираните адреси..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Прикажи ги пријателите кои чекаат авторизација"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Барај пријател преку е-пошта..."
 
 msgid "Search for Buddy by Information"
@@ -6903,9 +6900,6 @@
 msgid "College"
 msgstr "Колеџ"
 
-msgid "Email"
-msgstr "Е-пошта"
-
 msgid "Zipcode"
 msgstr "Поштенски код"
 
@@ -8667,7 +8661,7 @@
 msgstr "Корисничко име: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Е-пошта: \t\t%s\n"
 
 #, c-format
@@ -8907,7 +8901,7 @@
 msgid "Dir service temporarily unavailable."
 msgstr "Сервисот за директориуми е привремено недостапен."
 
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Барањето на е-пошта е ограничено."
 
 msgid "Keyword ignored."
@@ -11253,7 +11247,7 @@
 msgid "Enable typing notification"
 msgstr "Вклучи известување при куцање"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Копирај е-пошта"
 
 msgid "_Open Link in Browser"
@@ -11607,8 +11601,8 @@
 msgstr[2] "%s има %d нови пораки."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d нова порака.</b>"
 msgstr[1] "<b>%d нови пораки.</b>"
 msgstr[2] "<b>%d нови пораки.</b>"
@@ -12647,19 +12641,19 @@
 msgid "_Associate Buddy"
 msgstr "_Асоцирај пријател"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Не успеав да испратам е-пошта"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Извршливата датотека за Evolution не беше пронајдена на патеката."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Не беше пронајдена адреса за е-пошта за овој пријател."
 
 msgid "Add to Address Book"
 msgstr "Додај во адресар"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Испрати е-пошта"
 
 #. Configuration frame
@@ -12705,7 +12699,7 @@
 msgid "Last name:"
 msgstr "Презиме:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-пошта:"
 
 #. *< type
--- a/po/my_MM.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/my_MM.po	Thu Jun 26 09:07:56 2008 +0000
@@ -1173,7 +1173,7 @@
 #: ../finch/gntnotify.c:225 ../pidgin/gtknotify.c:341
 #, fuzzy
 msgid "New Mail"
-msgstr "E-Mail"
+msgstr "Email"
 
 #: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:940
 #, c-format
@@ -3631,8 +3631,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
-msgstr "E-Mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
 #: ../libpurple/protocols/bonjour/bonjour.c:665
@@ -3667,17 +3667,6 @@
 msgid "Purple Person"
 msgstr "လူသစ္‌"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "E-mail:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5447,8 +5436,8 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
-msgstr "E-Mail Address"
+msgid "Email Address"
+msgstr "Email Address"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
 #: ../libpurple/protocols/jabber/buddy.c:2411
@@ -6529,8 +6518,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Invalid e-mail address"
+msgid "Invalid email address"
+msgstr "Invalid email address"
 
 #: ../libpurple/protocols/msn/error.c:49
 #, c-format
@@ -7094,7 +7083,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Personal Title"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7163,8 +7152,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
-msgstr "E-Mail"
+msgid "Work Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/msn/msn.c:1688
 msgid "Work IM"
@@ -8854,12 +8843,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9047,13 +9036,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "No results found for e-mail address %s"
+msgid "No results found for email address %s"
+msgstr "No results found for email address %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "You should receive an email asking to confirm %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
 msgid "Account Confirmation Requested"
@@ -9092,28 +9081,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 
 #: ../libpurple/protocols/oscar/oscar.c:4023
@@ -9123,8 +9112,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
+msgstr "The email address for %s is %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
 msgid "Account Info"
@@ -9405,16 +9394,16 @@
 "them and selecting \"Re-request Authorisation.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
-msgstr "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
+msgstr "Find Buddy by Email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
-msgstr "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
+msgstr "Search for a buddy by email address"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Type the email address of the buddy you are searching for."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
 #, fuzzy
@@ -9446,12 +9435,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Display Currently Registered Address"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Change Currently Registered Address"
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9460,8 +9449,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Search for Buddy by E-Mail..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Search for Buddy by Email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
 msgid "Search for Buddy by Information"
@@ -9553,10 +9542,6 @@
 msgid "College"
 msgstr "(_C) ပ္ရန္‌စုလိုက္‌မယ္‌"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12402,8 +12387,8 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
 #: ../libpurple/protocols/silc10/util.c:361
@@ -12757,8 +12742,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "E-mail lookup restricted."
+msgid "Email lookup restricted."
+msgstr "Email lookup restricted."
 
 #: ../libpurple/protocols/toc/toc.c:533
 #, c-format
@@ -15779,8 +15764,8 @@
 msgstr "Colour to draw hyperlinks."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
-msgstr "_Copy E-Mail Address"
+msgid "_Copy Email Address"
+msgstr "_Copy Email Address"
 
 #: ../pidgin/gtkimhtml.c:1610
 msgid "_Open Link in Browser"
@@ -16186,8 +16171,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17507,7 +17492,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Message ပို့လို့ မရပာ။"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17515,7 +17500,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17524,8 +17509,8 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
-msgstr "E-Mail"
+msgid "Send Email"
+msgstr "Email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:412
@@ -17583,8 +17568,8 @@
 msgstr "Last name:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
@@ -18852,7 +18837,7 @@
 
 #, fuzzy
 #~ msgid "Search for Jabber users"
-#~ msgstr "Search for a buddy by e-mail address"
+#~ msgstr "Search for a buddy by email address"
 
 #~ msgid "Invalid Jabber ID"
 #~ msgstr "Invalid Jabber ID"
@@ -19045,7 +19030,7 @@
 #~ msgstr "Active"
 
 #~ msgid "EMail"
-#~ msgstr "E-Mail"
+#~ msgstr "Email"
 
 #~ msgid "Instant Messages"
 #~ msgstr "Instant Messages"
@@ -19170,8 +19155,8 @@
 #~ msgid "Check Mail"
 #~ msgstr "Mail စစ္‌မယ္‌"
 
-#~ msgid "Check e-mail every X seconds.\n"
-#~ msgstr "X စက္ကန့္တိုင္း e-mail စစ္‌မယ္‌\n"
+#~ msgid "Check email every X seconds.\n"
+#~ msgstr "X စက္ကန့္တိုင္း email စစ္‌မယ္‌\n"
 
 #~ msgid "Auto-login"
 #~ msgstr "Auto-login"
--- a/po/nb.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/nb.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3913,7 +3913,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-post"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:401
@@ -3947,16 +3947,6 @@
 msgid "Purple Person"
 msgstr "Ny Person"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:703
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:982
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "E-post"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5626,7 +5616,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3695
 #: ../libpurple/protocols/oscar/oscar.c:3704
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "E-postadresse"
 
 #
@@ -6688,7 +6678,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Ugyldig epostadresse"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7326,7 +7316,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1804
 #: ../libpurple/protocols/msnp9/msn.c:1657
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "E-post"
 
 #: ../libpurple/protocols/msn/msn.c:1805
@@ -7406,7 +7396,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1835
 #: ../libpurple/protocols/msnp9/msn.c:1688
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "E-post Arbeid"
 
 #: ../libpurple/protocols/msn/msn.c:1836
@@ -9144,7 +9134,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2444
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9322,12 +9312,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3929
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Ingen resultater funnet for e-postadresse %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3950
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Du vil motta en e-post hvor du blir bedt om å bekrefte %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3952
@@ -9355,17 +9345,17 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3995
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because there is already a request pending for this screen name."
+msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this screen name."
 msgstr "Feil 0x%04x: Kunne ikke endre e-postadressen fordi det finnes en utestående forespørsel for dette skjermnavnet."
 
 #: ../libpurple/protocols/oscar/oscar.c:3998
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address has too many screen names associated with it."
+msgid "Error 0x%04x: Unable to change email address because the given address has too many screen names associated with it."
 msgstr "Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen har for mange skjermnavn assosiert ved seg."
 
 #: ../libpurple/protocols/oscar/oscar.c:4001
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address is invalid."
+msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
 msgstr "Feil 0x%04x: Kunne ikke endre e-postadressen fordi den gitte adressen er ugyldig."
 
 #: ../libpurple/protocols/oscar/oscar.c:4004
@@ -9375,7 +9365,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "E-postadressen for %s er %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4016
@@ -9596,15 +9586,15 @@
 msgstr "Du kan spørre om godkjenning på nytt hos disse kontaktene ved å høyreklikke på dem og velge «Spør på nytt om godkjenning»."
 
 #: ../libpurple/protocols/oscar/oscar.c:6256
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Finn kontakt utifra e-post"
 
 #: ../libpurple/protocols/oscar/oscar.c:6257
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Søk etter en kontakt ved hjelp av e-postadresse"
 
 #: ../libpurple/protocols/oscar/oscar.c:6258
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Skriv inn e-postadressen til den du søker etter."
 
 #: ../libpurple/protocols/oscar/oscar.c:6261
@@ -9635,11 +9625,11 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6455
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Vis nåværende registrert adresse"
 
 #: ../libpurple/protocols/oscar/oscar.c:6459
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Endre Nåværende Registrert e-post Adresse..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6466
@@ -9647,7 +9637,7 @@
 msgstr "Vis kontakter som venter på godkjenning"
 
 #: ../libpurple/protocols/oscar/oscar.c:6472
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Søk etter kontakter ved hjelp av e-postadresser..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6477
@@ -9732,10 +9722,6 @@
 msgid "College"
 msgstr "Universitet"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "E-post"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Postnummer"
@@ -12479,7 +12465,7 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-post: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:370
@@ -12816,7 +12802,7 @@
 msgstr "Katalogtjenesten er midlertidig utilgjengelig."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "E-postoppslag er begrenset."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15780,7 +15766,7 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1631
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopier e-postadresse"
 
 #: ../pidgin/gtkimhtml.c:1643
@@ -16198,8 +16184,8 @@
 
 #: ../pidgin/gtknotify.c:570
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d ny e-post.</b>"
 msgstr[1] "<b>%d nye e-poster.</b>"
 
@@ -17486,7 +17472,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Klarte ikke å sende e-post"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17494,7 +17480,7 @@
 msgstr "Den kjørbare filen til Evolution ble ikke funnet i banen."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "En e-post adresse ble ikke funnet for denne kontakten."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17502,7 +17488,7 @@
 msgstr "Legg til i adresseboka"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Send E-post"
 
 #. Configuration frame
@@ -17561,7 +17547,7 @@
 msgstr "Etternavn:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-post:"
 
 #. *< type
--- a/po/ne.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ne.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3614,7 +3614,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "इमेल"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3650,17 +3650,6 @@
 msgid "Purple Person"
 msgstr "नयाँ व्यक्ति"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "इ-मेल:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5425,7 +5414,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "इमेल ठेगाना"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6510,7 +6499,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, fuzzy, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "अवैध इमेल ठेगाना"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7074,7 +7063,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "व्यक्तिगत शीर्षकहरू"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7143,7 +7132,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "इमेल"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8824,7 +8813,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, fuzzy, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9015,12 +9004,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, fuzzy, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "इमेल ठेगानाका लागि परिणाम फेला परेन %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, fuzzy, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "तपाईँले %s यकिन गर्न सोधेर एउटा इमेल प्राप्त गर्नुपर्दछ।"
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -9060,7 +9049,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, fuzzy, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "त्रुटि 0x%04x: इमेल ठेगाना परिवर्तन गर्न अक्षम भयो किनभने त्यहाँ पहिल्यै यो पर्दा नामका "
@@ -9069,7 +9058,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, fuzzy, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "त्रुटि 0x%04x: इमेल ठेगाना परिवर्तन गर्न अक्षम भयो किनभने दिएको ठेगानामा यो सँग  "
@@ -9078,7 +9067,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, fuzzy, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "त्रुटि 0x%04x: इमेल ठेगाना परिवर्तन गर्न अक्षम भयो किनभने दिएको ठेगाना अवैध छ ।"
 
@@ -9089,7 +9078,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, fuzzy, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s का लागि इमेल ठेगाना %s हो"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9367,15 +9356,15 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
 #, fuzzy
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "इमेल द्वारा साथी फेला पार्नुहोस्"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "इमेल ठेगाना द्वारा एउटा साथी खोजी गर्नुहोस्"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "तपाईँले खोजी रहनु भएको साथिको इमेल ठेगाना टाइप गर्नुहोस् ।"
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9408,12 +9397,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "हालै दर्ता गरेको ठेगाना प्रदर्शन गर्नुहोस्"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "हालै दर्ता गरेको ठेगाना परिवर्तन गर्नुहोस्..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9422,7 +9411,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "इमेल द्वारा साथीको खोजी गर्नुहोस्..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9514,10 +9503,6 @@
 msgid "College"
 msgstr "नष्ट गर्नुहोस्"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "इमेल"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12360,7 +12345,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "इमेल: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12715,7 +12700,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, fuzzy, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "इमेल खोजी प्रतिबन्धित भयो ।"
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15727,7 +15712,7 @@
 msgstr "हाइपरलिङ्कहरू कोर्न रङ्"
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "इ-मेल ठेगाना प्रतिलिपि गर्नुहोस्"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -16143,8 +16128,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17464,7 +17449,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "सन्देश पठाउन अक्षम भयो ।"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17472,7 +17457,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17481,7 +17466,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "इमेल"
 
 #. Configuration frame
@@ -17540,7 +17525,7 @@
 msgstr "अन्तिम नाम:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "इ-मेल:"
 
 #. *< type
--- a/po/nl.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/nl.po	Thu Jun 26 09:07:56 2008 +0000
@@ -91,7 +91,7 @@
 
 #: ../finch/gntaccount.c:437
 msgid "New mail notifications"
-msgstr "Nieuwe e-mail meldingen"
+msgstr "Nieuwe email meldingen"
 
 #: ../finch/gntaccount.c:447
 msgid "Remember password"
@@ -1345,11 +1345,11 @@
 
 #: ../finch/gntnotify.c:165
 msgid "Emails"
-msgstr "E-mails"
+msgstr "Emails"
 
 #: ../finch/gntnotify.c:171 ../finch/gntnotify.c:226
 msgid "You have mail!"
-msgstr "Er is e-mail!"
+msgstr "Er is email!"
 
 #: ../finch/gntnotify.c:174 ../pidgin/gtknotify.c:537
 msgid "Sender"
@@ -1368,7 +1368,7 @@
 
 #: ../finch/gntnotify.c:226 ../pidgin/gtknotify.c:352
 msgid "New Mail"
-msgstr "Nieuwe e-mail"
+msgstr "Nieuwe email"
 
 #: ../finch/gntnotify.c:291 ../pidgin/gtknotify.c:984
 #, c-format
@@ -3951,8 +3951,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:555
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1068
-msgid "E-Mail"
-msgstr "E-mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:402
 #: ../libpurple/protocols/bonjour/bonjour.c:708
@@ -3983,16 +3983,6 @@
 msgid "Purple Person"
 msgstr "Purple mens"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:705
-#: ../libpurple/protocols/gg/gg.c:487
-#: ../libpurple/protocols/jabber/jabber.c:998
-#: ../libpurple/protocols/silc/silc.c:986
-#: ../libpurple/protocols/silc/silc.c:1227
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5657,8 +5647,8 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3753
 #: ../libpurple/protocols/oscar/oscar.c:3762
-msgid "E-Mail Address"
-msgstr "E-mailadres"
+msgid "Email Address"
+msgstr "Emailadres"
 
 #: ../libpurple/protocols/jabber/buddy.c:2471
 #: ../libpurple/protocols/jabber/buddy.c:2472
@@ -6711,8 +6701,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
-msgstr "Ongeldig e-mail adres"
+msgid "Invalid email address"
+msgstr "Ongeldig email adres"
 
 #: ../libpurple/protocols/msn/error.c:49
 #: ../libpurple/protocols/msnp9/error.c:49
@@ -7321,8 +7311,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1826
 #: ../libpurple/protocols/msnp9/msn.c:1667
-msgid "Personal E-Mail"
-msgstr "Persoonlijke e-mail"
+msgid "Personal Email"
+msgstr "Persoonlijke email"
 
 #: ../libpurple/protocols/msn/msn.c:1827
 #: ../libpurple/protocols/msnp9/msn.c:1668
@@ -7397,8 +7387,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1857
 #: ../libpurple/protocols/msnp9/msn.c:1698
-msgid "Work E-Mail"
-msgstr "E-mail werk"
+msgid "Work Email"
+msgstr "Email werk"
 
 #: ../libpurple/protocols/msn/msn.c:1858
 #: ../libpurple/protocols/msnp9/msn.c:1699
@@ -7891,7 +7881,7 @@
 #. Can't write _()'d strings in array initializers. Workaround.
 #: ../libpurple/protocols/myspace/myspace.c:1374
 msgid "New mail messages"
-msgstr "Nieuwe e-mailberichten"
+msgstr "Nieuwe emailberichten"
 
 #: ../libpurple/protocols/myspace/myspace.c:1375
 msgid "New blog comments"
@@ -9061,7 +9051,7 @@
 "only letters, numbers and spaces, or contain only numbers."
 msgstr ""
 "Kan niet aanmelden: Kan niet aanmelden als %s omdat de gebruikersnaam "
-"ongeldig is. Gebruikersnamen moeten een geldig e-mailadres zijn, of beginnen "
+"ongeldig is. Gebruikersnamen moeten een geldig emailadres zijn, of beginnen "
 "met een letter en slechts cijfers, letters en spaties bevatten, of slechts "
 "nummers bevatten."
 
@@ -9248,12 +9238,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2495
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"U heeft een ICQ e-mail ontvangen van %s [%s]\n"
+"U heeft een ICQ email ontvangen van %s [%s]\n"
 "\n"
 "Bericht:\n"
 "%s"
@@ -9439,13 +9429,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3987
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Niets gevonden voor e-mailadres %s"
+msgid "No results found for email address %s"
+msgstr "Niets gevonden voor emailadres %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4008
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "U zou een e-mail moeten ontvangen met de vraag om %s te bevestigen."
+msgid "You should receive an email asking to confirm %s."
+msgstr "U zou een email moeten ontvangen met de vraag om %s te bevestigen."
 
 #: ../libpurple/protocols/oscar/oscar.c:4010
 msgid "Account Confirmation Requested"
@@ -9478,28 +9468,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4049
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
-"Fout 0x%04x: Kan e-mail adres niet veranderen omdat er al een aanvraag in "
+"Fout 0x%04x: Kan email adres niet veranderen omdat er al een aanvraag in "
 "behandeling is."
 
 #: ../libpurple/protocols/oscar/oscar.c:4051
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
-"Fout 0x%04x: Kan e-mail adres niet veranderen omdat het adres reeds te veel "
+"Fout 0x%04x: Kan email adres niet veranderen omdat het adres reeds te veel "
 "gebruikersnamen toegewezen heeft gekregen."
 
 #: ../libpurple/protocols/oscar/oscar.c:4053
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Fout 0x%04x: Kan e-mail adres niet veranderen omdat het adres ongeldig is."
+"Fout 0x%04x: Kan email adres niet veranderen omdat het adres ongeldig is."
 
 #: ../libpurple/protocols/oscar/oscar.c:4055
 #, c-format
@@ -9512,8 +9502,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4063
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "Het e-mail adres voor %s is %s"
+msgid "The email address for %s is %s"
+msgstr "Het email adres voor %s is %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4065
 msgid "Account Info"
@@ -9586,7 +9576,7 @@
 "numbers and spaces, or contain only numbers."
 msgstr ""
 "Kan het contact %s niet toevoegen omdat de gebruikersnaam ongeldig is. "
-"Gebruikersnamen moeten een geldig e-mailadres zijn, of beginnen met een "
+"Gebruikersnamen moeten een geldig emailadres zijn, of beginnen met een "
 "letter en slechts cijfers en letters bevatten, of slechts nummers bevatten."
 
 #: ../libpurple/protocols/oscar/oscar.c:4666
@@ -9789,16 +9779,16 @@
 "contacten te klikken en de optie \"Opnieuw toestemming vragen.\" te kiezen."
 
 #: ../libpurple/protocols/oscar/oscar.c:6347
-msgid "Find Buddy by E-Mail"
-msgstr "Contact zoeken op e-mail adres"
+msgid "Find Buddy by Email"
+msgstr "Contact zoeken op email adres"
 
 #: ../libpurple/protocols/oscar/oscar.c:6348
-msgid "Search for a buddy by e-mail address"
-msgstr "Contact zoeken op e-mail adres"
+msgid "Search for a buddy by email address"
+msgstr "Contact zoeken op email adres"
 
 #: ../libpurple/protocols/oscar/oscar.c:6349
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Geef het e-mail adres van de persoon waarnaar u zoekt."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Geef het email adres van de persoon waarnaar u zoekt."
 
 #: ../libpurple/protocols/oscar/oscar.c:6352
 msgid "_Search"
@@ -9828,20 +9818,20 @@
 msgstr "Account bevestigen"
 
 #: ../libpurple/protocols/oscar/oscar.c:6546
-msgid "Display Currently Registered E-Mail Address"
-msgstr "Huidige geregistreerde e-mailadres weergeven"
+msgid "Display Currently Registered Email Address"
+msgstr "Huidige geregistreerde emailadres weergeven"
 
 #: ../libpurple/protocols/oscar/oscar.c:6550
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "Huidige geregistreerde e-mailadres veranderen..."
+msgid "Change Currently Registered Email Address..."
+msgstr "Huidige geregistreerde emailadres veranderen..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6557
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Contacten weergeven die op toestemming wachten"
 
 #: ../libpurple/protocols/oscar/oscar.c:6563
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Contact zoeken door middel van e-mail..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Contact zoeken door middel van email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6568
 msgid "Search for Buddy by Information"
@@ -9923,10 +9913,6 @@
 msgid "College"
 msgstr "College"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Postcode"
@@ -12675,8 +12661,8 @@
 #: ../libpurple/protocols/silc/util.c:367
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:369
 #: ../libpurple/protocols/silc10/util.c:361
@@ -13002,7 +12988,7 @@
 msgstr "Profielen service is momenteel niet toegankelijk."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Email zoekfunctie beperkt."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -16077,8 +16063,8 @@
 msgstr "Schakel typmelding in"
 
 #: ../pidgin/gtkimhtml.c:1688
-msgid "_Copy E-Mail Address"
-msgstr "E-mail adres _kopiëren"
+msgid "_Copy Email Address"
+msgstr "Email adres _kopiëren"
 
 #: ../pidgin/gtkimhtml.c:1700
 msgid "_Open Link in Browser"
@@ -16483,7 +16469,7 @@
 
 #: ../pidgin/gtknotify.c:414
 msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">U heeft e-mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">U heeft email!</span>"
 
 #: ../pidgin/gtknotify.c:570
 #, c-format
@@ -16494,10 +16480,10 @@
 
 #: ../pidgin/gtknotify.c:599
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
-msgstr[0] "<b>%d nieuwe e-mail.</b>"
-msgstr[1] "<b>%d nieuwe e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>%d nieuwe email.</b>"
+msgstr[1] "<b>%d nieuwe emails.</b>"
 
 #: ../pidgin/gtknotify.c:1033
 #, c-format
@@ -17485,7 +17471,7 @@
 
 #: ../pidgin/pidginstock.c:94
 msgid "_Open Mail"
-msgstr "E-mail _openen"
+msgstr "Email _openen"
 
 #: ../pidgin/pidginstock.c:95
 msgid "_Pause"
@@ -17834,24 +17820,24 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:242
 #: ../pidgin/plugins/gevolution/gevolution.c:248
-msgid "Unable to send e-mail"
-msgstr "Kan geen e-mail verzenden"
+msgid "Unable to send email"
+msgstr "Kan geen email verzenden"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:243
 msgid "The evolution executable was not found in the PATH."
 msgstr "Kan evolution niet vinden."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:249
-msgid "An e-mail address was not found for this buddy."
-msgstr "Er is geen e-mailadres gevonden van dit contact"
+msgid "An email address was not found for this buddy."
+msgstr "Er is geen emailadres gevonden van dit contact"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:275
 msgid "Add to Address Book"
 msgstr "Toevoegen aan adresboek"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:287
-msgid "Send E-Mail"
-msgstr "E-mail sturen"
+msgid "Send Email"
+msgstr "Email sturen"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:432
@@ -17911,8 +17897,8 @@
 msgstr "Achternaam:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:380
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
@@ -17967,11 +17953,11 @@
 
 #: ../pidgin/plugins/mailchk.c:160
 msgid "Mail Checker"
-msgstr "E-mailcontrole"
+msgstr "Emailcontrole"
 
 #: ../pidgin/plugins/mailchk.c:162
 msgid "Checks for new local mail."
-msgstr "Controleert op lokale e-mail."
+msgstr "Controleert op lokale email."
 
 #: ../pidgin/plugins/mailchk.c:163
 msgid "Adds a small box to the buddy list that shows if you have new mail."
@@ -19065,7 +19051,7 @@
 #~ "\n"
 #~ "%s"
 #~ msgstr ""
-#~ "<span weight=\"bold\" size=\"larger\">U heeft e-mail!</span>\n"
+#~ "<span weight=\"bold\" size=\"larger\">U heeft email!</span>\n"
 #~ "\n"
 #~ "%s"
 
@@ -19584,16 +19570,16 @@
 #~ msgstr "Wanneer je offline wordt geschopt, herstelt dit de verbinding."
 
 #~ msgid "Mail Server"
-#~ msgstr "E-mailserver"
+#~ msgstr "Emailserver"
 
 #~ msgid "%s (%d new/%d total)"
 #~ msgstr "%s (%d nieuw/%d totaal)"
 
 #~ msgid "Check Mail"
-#~ msgstr "E-mail controleren"
+#~ msgstr "Email controleren"
 
 #~ msgid "Check email every X seconds.\n"
-#~ msgstr "E-mail iedere X seconden controleren.\n"
+#~ msgstr "Email iedere X seconden controleren.\n"
 
 #~ msgid "Buddy is offline:"
 #~ msgstr "Contact is off-line:"
@@ -20212,7 +20198,7 @@
 #~ "\n"
 #~ "%s%s%s%s"
 #~ msgstr ""
-#~ "<span weight=\"bold\" size=\"larger\">U heeft e-mail!</span>\n"
+#~ "<span weight=\"bold\" size=\"larger\">U heeft email!</span>\n"
 #~ "\n"
 #~ "%s%s%s%s"
 
@@ -20627,9 +20613,6 @@
 #~ msgid "Miscellaneous error"
 #~ msgstr "Onebeknde fout"
 
-#~ msgid "Invalid email address"
-#~ msgstr "Ongeldig e-mail adres"
-
 #~ msgid "Tried to add a contact to a group that doesn't exist"
 #~ msgstr "Probeerde een contact aan een niet bestaande groep toe te voegen"
 
@@ -20736,17 +20719,6 @@
 #~ "%s"
 
 #~ msgid ""
-#~ "You have received an ICQ email from %s [%s]\n"
-#~ "\n"
-#~ "Message is:\n"
-#~ "%s"
-#~ msgstr ""
-#~ "U heeft een ICQ e-mail ontvangen van %s [%s]\n"
-#~ "\n"
-#~ "Bericht:\n"
-#~ "%s"
-
-#~ msgid ""
 #~ "You have been disconnected because you have signed on with this screen "
 #~ "name at another location."
 #~ msgstr ""
@@ -20759,12 +20731,6 @@
 #~ msgid "The following screen names are associated with %s"
 #~ msgstr "De volgende gebruikersnamen zijn geassocieerd met %s"
 
-#~ msgid "No results found for email address %s"
-#~ msgstr "Niets gevonden voor e-mail adres %s"
-
-#~ msgid "You should receive an email asking to confirm %s."
-#~ msgstr "U zou een e-mail moeten ontvangen met de vraag om %s te bevestigen."
-
 #~ msgid ""
 #~ "Error 0x%04x: Unable to format screen name because the requested screen "
 #~ "name ends in a space."
@@ -20776,25 +20742,16 @@
 #~ "Error 0x%04x: Unable to change email address because there is already a "
 #~ "request pending for this screen name."
 #~ msgstr ""
-#~ "Fout 0x%04x: Kan e-mail adres niet veranderen omdat het adres al is "
+#~ "Fout 0x%04x: Kan email adres niet veranderen omdat het adres al is "
 #~ "aangevraagd door een ander."
 
 #~ msgid ""
 #~ "Error 0x%04x: Unable to change email address because the given address "
 #~ "has too many screen names associated with it."
 #~ msgstr ""
-#~ "Fout 0x%04x: Kan e-mail adres niet veranderen omdat het adres reeds te "
+#~ "Fout 0x%04x: Kan email adres niet veranderen omdat het adres reeds te "
 #~ "veel gebruikersnamen toegewezen heeft gekregen."
 
-#~ msgid ""
-#~ "Error 0x%04x: Unable to change email address because the given address is "
-#~ "invalid."
-#~ msgstr ""
-#~ "Fout 0x%04x: Kan e-mail adres niet veranderen omdat het adres ongeldig is."
-
-#~ msgid "The email address for %s is %s"
-#~ msgstr "Het e-mail adres vor %s is %s"
-
 #~ msgid "Unable to set AIM away message."
 #~ msgstr "Kan geen AIM afwezigheidsbericht instellen."
 
@@ -20816,9 +20773,6 @@
 #~ "volgende reden:\n"
 #~ "%s"
 
-#~ msgid "Find Buddy by E-mail"
-#~ msgstr "Contact zoeken op e-mail adres"
-
 #~ msgid "Display Currently Registered Address"
 #~ msgstr "Huidige geregistreerde adres weergeven"
 
@@ -20826,7 +20780,7 @@
 #~ msgstr "Huidige geregistreerde adres veranderen..."
 
 #~ msgid "Search for Buddy by Email..."
-#~ msgstr "Contact zoeken door middel van e-mail..."
+#~ msgstr "Contact zoeken door middel van email..."
 
 #~ msgid "Auth host"
 #~ msgstr "Host authoriseren"
@@ -20834,9 +20788,6 @@
 #~ msgid "Auth port"
 #~ msgstr "Auth-poort"
 
-#~ msgid "EMail"
-#~ msgstr "E-mail"
-
 #~ msgid "More..."
 #~ msgstr "Meer..."
 
@@ -20873,10 +20824,7 @@
 #~ msgstr "SILC Privésleutel"
 
 #~ msgid "EMail: \t\t%s\n"
-#~ msgstr "E-mail: \t\t%s\n"
-
-#~ msgid "Email lookup restricted."
-#~ msgstr "Email zoekfunctie beperkt."
+#~ msgstr "Email: \t\t%s\n"
 
 #~ msgid "TOC host"
 #~ msgstr "TOC host"
--- a/po/nn.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/nn.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2746,7 +2746,7 @@
 msgid "Last name"
 msgstr "Etternamn"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-post"
 
 msgid "AIM Account"
@@ -2771,9 +2771,6 @@
 msgid "Purple Person"
 msgstr "Purple-person"
 
-msgid "E-mail"
-msgstr "E-post"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3849,7 +3846,7 @@
 msgstr ""
 "Fyll ut eitt eller fleire felt for å søkja etter samsvarande XMPP-brukarar."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "E-postadresse"
 
 msgid "Search for XMPP users"
@@ -4577,7 +4574,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "Syntaksfeil (truleg feil i klienten)"
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Ugyldig e-postadresse"
 
 msgid "User does not exist"
@@ -4933,7 +4930,7 @@
 msgid "Home Fax"
 msgstr "Heimefaks"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Personleg e-postadresse"
 
 msgid "Personal IM"
@@ -4976,7 +4973,7 @@
 msgid "Work Fax"
 msgstr "Telefaks arbeid"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "E-postadresse jobb"
 
 msgid "Work IM"
@@ -6304,7 +6301,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6446,11 +6443,11 @@
 msgstr[1] "Desse brukarnamna er knytte til %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Ingen resultat funnen for e-postadressa %s"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Du vil få ei e-postmelding der du blir spurt om å stadfesta %s."
 
 msgid "Account Confirmation Requested"
@@ -6478,7 +6475,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Feil 0x%04x: kan ikkje endra e-postadressa sia det allereie finst ein "
@@ -6486,7 +6483,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Feil 0x%04x: kan ikkje endra e-postadressa sia den oppgjevne adressa har for "
@@ -6494,7 +6491,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Feil 0x%04x: kan ikkje endra e-postadressa sia den oppgjevne adressa er "
@@ -6508,7 +6505,7 @@
 msgstr "Feil ved endring av kontoinformasjon"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "E-postadressa til %s er %s"
 
 msgid "Account Info"
@@ -6725,13 +6722,13 @@
 "Du kan be om godkjenning frå desse vennane igjen ved å høgreklikka dei og "
 "velja \"Spør om ny godkjenning.\""
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Finn venn utfrå e-postadessa"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Bruk e-postadressa til å søkja etter ein venn"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Skriv inn e-postadressa til vennen du leiter etter."
 
 msgid "_Search"
@@ -6754,16 +6751,16 @@
 msgid "Confirm Account"
 msgstr "Stadfest konto"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Vis noverande registrerte e-postadresse"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Endra noverande registrerte e-postadresse…"
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Vis vennar som ventar på godkjenning"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Bruk e-postadressa til å søkja etter ein venn…"
 
 msgid "Search for Buddy by Information"
@@ -6829,9 +6826,6 @@
 msgid "College"
 msgstr "Universitet"
 
-msgid "Email"
-msgstr "E-post"
-
 msgid "Zipcode"
 msgstr "Postnummer"
 
@@ -8585,7 +8579,7 @@
 msgstr "Brukarnamn: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-post: \t\t%s\n"
 
 #, c-format
@@ -8829,7 +8823,7 @@
 msgid "Dir service temporarily unavailable."
 msgstr "Katalogtenesta er mellombels utilgjengeleg."
 
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "E-postoppslag er avgrensa."
 
 msgid "Keyword ignored."
@@ -11154,7 +11148,7 @@
 msgid "Enable typing notification"
 msgstr "Slå på skrivevarsel"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopier e-postadresse"
 
 msgid "_Open Link in Browser"
@@ -11508,8 +11502,8 @@
 msgstr[1] "%s har %d nye meldingar."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d ny e-postmelding.</b>"
 msgstr[1] "<b>%d nye e-postmeldingar.</b>"
 
@@ -12538,19 +12532,19 @@
 msgid "_Associate Buddy"
 msgstr "_Knyt til venn"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Klarte ikkje å senda e-postmeldinga"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Evolution si programfil blei ikkje funnen i filbana (PATH)."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Fann inga e-postadresse for denne vennen."
 
 msgid "Add to Address Book"
 msgstr "Legg til i adresseboka"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Send e-post"
 
 #. Configuration frame
@@ -12596,7 +12590,7 @@
 msgid "Last name:"
 msgstr "Etternamn:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-post:"
 
 #. *< type
--- a/po/oc.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/oc.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2610,7 +2610,7 @@
 msgid "Last name"
 msgstr ""
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "Corrièl"
 
 msgid "AIM Account"
@@ -2635,9 +2635,6 @@
 msgid "Purple Person"
 msgstr ""
 
-msgid "E-mail"
-msgstr "Corrièl"
-
 msgid "Bonjour"
 msgstr ""
 
@@ -3661,7 +3658,7 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr ""
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Adreça electronica"
 
 msgid "Search for XMPP users"
@@ -4372,7 +4369,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr ""
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr ""
 
 msgid "User does not exist"
@@ -4727,7 +4724,7 @@
 msgid "Home Fax"
 msgstr "Fax personal"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr ""
 
 msgid "Personal IM"
@@ -4770,7 +4767,7 @@
 msgid "Work Fax"
 msgstr ""
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr ""
 
 msgid "Work IM"
@@ -6029,7 +6026,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6163,11 +6160,11 @@
 msgstr[1] ""
 
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr ""
-
-#, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "No results found for email address %s"
+msgstr ""
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 msgid "Account Confirmation Requested"
@@ -6191,19 +6188,19 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -6215,7 +6212,7 @@
 msgstr ""
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr ""
 
 msgid "Account Info"
@@ -6400,13 +6397,13 @@
 "them and selecting \"Re-request Authorization.\""
 msgstr ""
 
-msgid "Find Buddy by E-Mail"
-msgstr ""
-
-msgid "Search for a buddy by e-mail address"
-msgstr ""
-
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Find Buddy by Email"
+msgstr ""
+
+msgid "Search for a buddy by email address"
+msgstr ""
+
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 msgid "_Search"
@@ -6429,16 +6426,16 @@
 msgid "Confirm Account"
 msgstr ""
 
-msgid "Display Currently Registered E-Mail Address"
-msgstr ""
-
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Display Currently Registered Email Address"
+msgstr ""
+
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr ""
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr ""
 
 msgid "Search for Buddy by Information"
@@ -6498,9 +6495,6 @@
 msgid "College"
 msgstr ""
 
-msgid "Email"
-msgstr "Adreça electronica"
-
 msgid "Zipcode"
 msgstr ""
 
@@ -8161,7 +8155,7 @@
 msgstr ""
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr ""
 
 #, c-format
@@ -8392,7 +8386,7 @@
 msgid "Dir service temporarily unavailable."
 msgstr ""
 
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 msgid "Keyword ignored."
@@ -10610,7 +10604,7 @@
 msgid "Enable typing notification"
 msgstr ""
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr ""
 
 msgid "_Open Link in Browser"
@@ -10901,8 +10895,8 @@
 msgstr[1] ""
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -11891,19 +11885,19 @@
 msgid "_Associate Buddy"
 msgstr ""
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr ""
 
 msgid "The evolution executable was not found in the PATH."
 msgstr ""
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 msgid "Add to Address Book"
 msgstr ""
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr ""
 
 #. Configuration frame
@@ -11949,7 +11943,7 @@
 msgid "Last name:"
 msgstr "Nom :"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr ""
 
 #. *< type
--- a/po/pa.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/pa.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3564,7 +3564,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "ਈਮੇਲ"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:374
@@ -3596,16 +3596,6 @@
 msgid "Purple Person"
 msgstr "ਪਰਪਲ ਵਿਅਕਤੀ"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:676
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:901
-#: ../libpurple/protocols/silc/silc.c:1142
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "ਈਮੇਲ"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "ਬੋਨਜੁਉਰ"
@@ -5258,7 +5248,7 @@
 #: ../libpurple/protocols/novell/novell.c:1490
 #: ../libpurple/protocols/oscar/oscar.c:3729
 #: ../libpurple/protocols/oscar/oscar.c:3738
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "ਈਮੇਲ ਐਡਰੈੱਸ"
 
 #: ../libpurple/protocols/jabber/buddy.c:2423
@@ -6309,7 +6299,7 @@
 msgstr "ਸੰਟੈਕਸ ਗਤੀ (ਇੱਕ ਕਲਾਇਟ ਬੱਗ ਹੈ)"
 
 #: ../libpurple/protocols/msn/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "ਗਲਤ ਈਮੇਲ ਐਡਰੈੱਸ"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6804,7 +6794,7 @@
 msgstr "ਘਰ ਫੈਕਸ"
 
 #: ../libpurple/protocols/msn/msn.c:1781
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "ਨਿੱਜੀ ਈਮੇਲ"
 
 #: ../libpurple/protocols/msn/msn.c:1782
@@ -6866,7 +6856,7 @@
 msgstr "ਕੰਮ ਫੈਕਸ"
 
 #: ../libpurple/protocols/msn/msn.c:1812
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "ਕੰਮ ਈਮੇਲ"
 
 #: ../libpurple/protocols/msn/msn.c:1813
@@ -8541,7 +8531,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2454
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8724,12 +8714,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3963
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "ਈਮੇਲ ਐਡਰੈੱਸ %s ਲਈ ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਮਿਲਿਆ ਹੈ"
 
 #: ../libpurple/protocols/oscar/oscar.c:3984
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "ਤੁਸੀਂ %s ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਇੱਕ ਈਮੇਲ ਛੇਤੀ ਹੀ ਪ੍ਰਾਪਤ ਕਰੋਗੇ।"
 
 #: ../libpurple/protocols/oscar/oscar.c:3986
@@ -8762,7 +8752,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4029
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਤਬਦੀਲ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਿਰਨਾਵੇਂ ਲਈ ਪਹਿਲਾਂ "
@@ -8771,7 +8761,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4032
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਤਬਦੀਲ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤੇ ਐਡਰੈੱਸ ਨਾਲ ਬਹੁਤ "
@@ -8780,7 +8770,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4035
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਤਬਦੀਲ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਐਡਰੈੱਸ ਗਲਤ ਹੈ।"
 
@@ -8791,7 +8781,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4048
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s ਦਾ ਈਮੇਲ ਐਡਰੈੱਸ %s ਹੈ"
 
 #: ../libpurple/protocols/oscar/oscar.c:4050
@@ -9052,15 +9042,15 @@
 "ਬੇਨਤੀ ਕਰ ਸਕਦੇ ਹੋ।"
 
 #: ../libpurple/protocols/oscar/oscar.c:6286
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "ਈਮੇਲ ਰਾਹੀਂ ਬੱਡੀ ਖੋਜ"
 
 #: ../libpurple/protocols/oscar/oscar.c:6287
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "ਈਮੇਲ ਐਡਰੈੱਸ ਰਾਹੀਂ ਬੱਡੀ ਖੋਜ"
 
 #: ../libpurple/protocols/oscar/oscar.c:6288
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "ਬੱਡੀ ਖੋਜਣ ਲਈ ਈਮੇਲ ਐਡਰੈੱਸ ਦਿਓ।"
 
 #: ../libpurple/protocols/oscar/oscar.c:6291
@@ -9090,11 +9080,11 @@
 msgstr "ਅਕਾਊਂਟ ਪੁਸ਼ਟੀ"
 
 #: ../libpurple/protocols/oscar/oscar.c:6485
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "ਮੌਜੂਦਾ ਰਜਿਸਟਰ ਹੋਇਆ ਈਮੇਲ ਐਡਰੈੱਸ ਵੇਖੋ"
 
 #: ../libpurple/protocols/oscar/oscar.c:6489
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "ਮੌਜੂਦਾ ਰਜਿਸਟਰ ਹੋਇਆ ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲੋ..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6496
@@ -9102,7 +9092,7 @@
 msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਵਿੱਚ ਬੱਡੀ ਵੇਖੋ"
 
 #: ../libpurple/protocols/oscar/oscar.c:6502
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "ਈ-ਮੇਲ ਰਾਹੀਂ ਬੱਡੀ ਖੋਜ..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6507
@@ -9189,10 +9179,6 @@
 msgid "College"
 msgstr "ਕਾਲਜ"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "ਈਮੇਲ"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "ਜ਼ਿਪ ਕੋਡ"
@@ -11883,7 +11869,7 @@
 #: ../libpurple/protocols/silc/util.c:366
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "ਈਮੇਲ: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:368
@@ -12207,7 +12193,7 @@
 msgstr "ਡਾਈ ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "ਈਮੇਲ ਖੋਜ ਪਾਬੰਦੀ ਹੈ।"
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15079,7 +15065,7 @@
 msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।"
 
 #: ../pidgin/gtkimhtml.c:1581
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "ਈਮੇਲ ਐਡਰੈੱਸ ਨਕਲ(_C)"
 
 #: ../pidgin/gtkimhtml.c:1593
@@ -15491,8 +15477,8 @@
 
 #: ../pidgin/gtknotify.c:569
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d ਨਵੀਂ ਮੇਲ ਆਈ ਹੈ।</b>"
 msgstr[1] "<b>%d ਨਵੀਂ ਮੇਲਾਂ ਆਈਆਂ ਹਨ।</b>"
 
@@ -16756,7 +16742,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "ਈ-ਮੇਲ ਭੇਜਣ ਲਈ ਫੇਲ੍ਹ"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16764,7 +16750,7 @@
 msgstr "ਮਾਰਗ 'ਚ ਈਵੇਲੂਸ਼ਨ ਚੱਲਣਯੋਗ ਨਹੀਂ ਮਿਲਿਆ ਹੈ।"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "ਇਹ ਬੱਡੀ ਲਈ ਇੱਕ ਈਮੇਲ ਐਡਰੈੱਸ ਨਹੀਂ ਲੱਭਿਆ ਹੈ।"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16772,7 +16758,7 @@
 msgstr "ਐਡਰੈੱਸ ਕਿਤਾਬ ਵਿੱਚ ਸ਼ਾਮਿਲ"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "ਈ-ਮੇਲ ਭੇਜੋ"
 
 #. Configuration frame
@@ -16830,7 +16816,7 @@
 msgstr "ਆਖਰੀ ਨਾਂ:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "ਈਮੇਲ:"
 
 #. *< type
--- a/po/pl.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/pl.po	Thu Jun 26 09:07:56 2008 +0000
@@ -1063,7 +1063,7 @@
 
 #: ../finch/gntnotify.c:1 ../pidgin/gtknotify.c:1
 msgid "New Mail"
-msgstr "Nowa wiadomość e-mail"
+msgstr "Nowa wiadomość email"
 
 #: ../finch/gntnotify.c:1 ../pidgin/gtknotify.c:1
 #, c-format
@@ -3462,8 +3462,8 @@
 #: ../libpurple/protocols/silc/util.c:1 ../libpurple/protocols/silc10/ops.c:1
 #: ../libpurple/protocols/silc10/util.c:1
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1
-msgid "E-Mail"
-msgstr "E-mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:1
 msgid "AIM Account"
@@ -3492,12 +3492,6 @@
 msgid "Purple Person"
 msgstr "Nowa osoba"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:1 ../libpurple/protocols/gg/gg.c:1
-#: ../libpurple/protocols/jabber/jabber.c:1
-#: ../libpurple/protocols/silc/silc.c:1 ../libpurple/protocols/silc10/silc.c:1
-msgid "E-mail"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:1
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -4782,7 +4776,7 @@
 #: ../libpurple/protocols/jabber/buddy.c:1
 #, fuzzy
 msgid "Reachability Address"
-msgstr "Adres e-mail"
+msgstr "Adres email"
 
 #: ../libpurple/protocols/jabber/buddy.c:1
 #, fuzzy
@@ -5028,8 +5022,8 @@
 #: ../libpurple/protocols/jabber/buddy.c:1
 #: ../libpurple/protocols/novell/novell.c:1
 #: ../libpurple/protocols/oscar/oscar.c:1
-msgid "E-Mail Address"
-msgstr "Adres e-mail"
+msgid "Email Address"
+msgstr "Adres email"
 
 #: ../libpurple/protocols/jabber/buddy.c:1
 msgid "Search for XMPP users"
@@ -6040,8 +6034,8 @@
 
 #: ../libpurple/protocols/msn/error.c:1 ../libpurple/protocols/msnp9/error.c:1
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Niepoprawny adres e-mail"
+msgid "Invalid email address"
+msgstr "Niepoprawny adres email"
 
 #: ../libpurple/protocols/msn/error.c:1 ../libpurple/protocols/msnp9/error.c:1
 #, c-format
@@ -6577,8 +6571,8 @@
 msgstr "Strona domowa"
 
 #: ../libpurple/protocols/msn/msn.c:1 ../libpurple/protocols/msnp9/msn.c:1
-msgid "Personal E-Mail"
-msgstr "E-mail osobisty"
+msgid "Personal Email"
+msgstr "Email osobisty"
 
 #: ../libpurple/protocols/msn/msn.c:1 ../libpurple/protocols/msnp9/msn.c:1
 #, fuzzy
@@ -6642,8 +6636,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1 ../libpurple/protocols/msnp9/msn.c:1
 #, fuzzy
-msgid "Work E-Mail"
-msgstr "E-mail"
+msgid "Work Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/msn/msn.c:1 ../libpurple/protocols/msnp9/msn.c:1
 #, fuzzy
@@ -8390,12 +8384,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:1
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Otrzymano e-mail ICQ od %s [%s]\n"
+"Otrzymano email ICQ od %s [%s]\n"
 "\n"
 "Treść wiadomości:\n"
 "%s"
@@ -8584,13 +8578,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:1
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Nie znaleziono żadnych wyników dla adresu e-mail %s"
-
-#: ../libpurple/protocols/oscar/oscar.c:1
-#, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Powinnaś/powinieneś otrzymać e-mail proszący o potwierdzenie %s."
+msgid "No results found for email address %s"
+msgstr "Nie znaleziono żadnych wyników dla adresu email %s"
+
+#: ../libpurple/protocols/oscar/oscar.c:1
+#, c-format
+msgid "You should receive an email asking to confirm %s."
+msgstr "Powinnaś/powinieneś otrzymać email proszący o potwierdzenie %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:1
 msgid "Account Confirmation Requested"
@@ -8629,28 +8623,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:1
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
-"Błąd 0x%04x: Nie można zmienić adresu e-mail, ponieważ w kolejce czeka inna "
+"Błąd 0x%04x: Nie można zmienić adresu email, ponieważ w kolejce czeka inna "
 "prośba dla tego samego identyfikatora."
 
 #: ../libpurple/protocols/oscar/oscar.c:1
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
-"Błąd 0x%04x: Nie można zmienić adresu e-mail, ponieważ podany adres jest "
+"Błąd 0x%04x: Nie można zmienić adresu email, ponieważ podany adres jest "
 "skojarzony ze zbyt wieloma identyfikatorami."
 
 #: ../libpurple/protocols/oscar/oscar.c:1
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Błąd 0x%04x: Nie można zmienić adresu e-mail, ponieważ podany adres jest "
+"Błąd 0x%04x: Nie można zmienić adresu email, ponieważ podany adres jest "
 "nieprawidłowy."
 
 #: ../libpurple/protocols/oscar/oscar.c:1
@@ -8660,8 +8654,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:1
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "Adres e-mail dla %s to %s"
+msgid "The email address for %s is %s"
+msgstr "Adres email dla %s to %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:1
 msgid "Account Info"
@@ -8929,16 +8923,16 @@
 "przyciskiem i wybierając \"Ponownie poproś o autoryzację\"."
 
 #: ../libpurple/protocols/oscar/oscar.c:1
-msgid "Find Buddy by E-Mail"
-msgstr "Wyszukiwanie użytkownika wg adresu e-mail"
-
-#: ../libpurple/protocols/oscar/oscar.c:1
-msgid "Search for a buddy by e-mail address"
-msgstr "Szukaj znajomych według adresu e-mail"
-
-#: ../libpurple/protocols/oscar/oscar.c:1
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Podaj adres e-mail znajomego, którego chcesz znaleźć."
+msgid "Find Buddy by Email"
+msgstr "Wyszukiwanie użytkownika wg adresu email"
+
+#: ../libpurple/protocols/oscar/oscar.c:1
+msgid "Search for a buddy by email address"
+msgstr "Szukaj znajomych według adresu email"
+
+#: ../libpurple/protocols/oscar/oscar.c:1
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Podaj adres email znajomego, którego chcesz znaleźć."
 
 #: ../libpurple/protocols/oscar/oscar.c:1
 msgid "_Search"
@@ -8967,20 +8961,20 @@
 msgstr "Potwierdzenie konta"
 
 #: ../libpurple/protocols/oscar/oscar.c:1
-msgid "Display Currently Registered E-Mail Address"
-msgstr "Wyświetl aktualnie zarejestrowany adres e-mail"
-
-#: ../libpurple/protocols/oscar/oscar.c:1
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "Zmień aktualnie zarejestrowany adres e-mail..."
+msgid "Display Currently Registered Email Address"
+msgstr "Wyświetl aktualnie zarejestrowany adres email"
+
+#: ../libpurple/protocols/oscar/oscar.c:1
+msgid "Change Currently Registered Email Address..."
+msgstr "Zmień aktualnie zarejestrowany adres email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:1
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Pokazuj użytkowników oczekujących na autoryzację"
 
 #: ../libpurple/protocols/oscar/oscar.c:1
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Szukaj znajomych według adresu e-mail..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Szukaj znajomych według adresu email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:1
 msgid "Search for Buddy by Information"
@@ -9076,10 +9070,6 @@
 msgstr "_Zwiń"
 
 #: ../libpurple/protocols/qq/buddy_info.c:1
-msgid "Email"
-msgstr "E-mail"
-
-#: ../libpurple/protocols/qq/buddy_info.c:1
 msgid "Zipcode"
 msgstr "Kod pocztowy"
 
@@ -11507,8 +11497,8 @@
 
 #: ../libpurple/protocols/silc/util.c:1 ../libpurple/protocols/silc10/util.c:1
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:1 ../libpurple/protocols/silc10/util.c:1
 #, c-format
@@ -11835,8 +11825,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:1
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "Zastrzeżone wyszukiwanie e-mail."
+msgid "Email lookup restricted."
+msgstr "Zastrzeżone wyszukiwanie email."
 
 #: ../libpurple/protocols/toc/toc.c:1
 #, c-format
@@ -14744,8 +14734,8 @@
 msgstr "Kolor odnośników pod kursorem myszki."
 
 #: ../pidgin/gtkimhtml.c:1
-msgid "_Copy E-Mail Address"
-msgstr "Skopiuj a_dres e-mail"
+msgid "_Copy Email Address"
+msgstr "Skopiuj a_dres email"
 
 #: ../pidgin/gtkimhtml.c:1
 msgid "_Open Link in Browser"
@@ -15137,7 +15127,7 @@
 
 #: ../pidgin/gtknotify.c:1
 msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Masz wiadomość e-mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Masz wiadomość email!</span>"
 
 #: ../pidgin/gtknotify.c:1
 #, c-format
@@ -15149,11 +15139,11 @@
 
 #: ../pidgin/gtknotify.c:1
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
-msgstr[0] "<b>Masz %d nowy e-mail.</b>"
-msgstr[1] "<b>Masz %d nowe e-maile.</b>"
-msgstr[2] "<b>Masz %d nowych e-maili.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>Masz %d nowy email.</b>"
+msgstr[1] "<b>Masz %d nowe emaile.</b>"
+msgstr[2] "<b>Masz %d nowych emaili.</b>"
 
 #: ../pidgin/gtknotify.c:1
 #, c-format
@@ -16459,24 +16449,24 @@
 msgstr "_Skojarzenie kontaktu"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:1
-msgid "Unable to send e-mail"
-msgstr "Wysłanie wiadomości e-mail nie powiodło się."
+msgid "Unable to send email"
+msgstr "Wysłanie wiadomości email nie powiodło się."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:1
 msgid "The evolution executable was not found in the PATH."
 msgstr "Plik wykonywalny programu evolution nie znajduje się w zmiennej PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:1
-msgid "An e-mail address was not found for this buddy."
-msgstr "Nie znaleziono adresu e-mail dla tego znajomego."
+msgid "An email address was not found for this buddy."
+msgstr "Nie znaleziono adresu email dla tego znajomego."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:1
 msgid "Add to Address Book"
 msgstr "Dodaj do książki adresowej"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:1
-msgid "Send E-Mail"
-msgstr "Wyślij E-mail"
+msgid "Send Email"
+msgstr "Wyślij Email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:1
@@ -16533,8 +16523,8 @@
 msgstr "Nazwisko:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:1
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/ps.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ps.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3465,7 +3465,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "برېښنالیک"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3499,16 +3499,6 @@
 msgid "Purple Person"
 msgstr "نوی کاس"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "برېښنالیک"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "بانجوړ"
@@ -5145,7 +5135,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "برېښنالیک پته"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6203,7 +6193,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr ""
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6743,7 +6733,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "شخصي برېښنالیک پته"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6805,7 +6795,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "د کارځای برېښنالیک پته"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8410,7 +8400,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8589,12 +8579,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8628,21 +8618,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -8653,7 +8643,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "د %s برېښنالیک پته د %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -8899,15 +8889,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -8937,11 +8927,11 @@
 msgstr "شمېرل ثابت که"
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "اوسنی ثبت شوی د برېښنالیک پته ښکاره که"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "اوسنی ثبت شوی د برېښنالیک پته بدله که..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -8949,7 +8939,7 @@
 msgstr "هغه ملګری ښکاره که چه د ته اجازه په انتظار کښی دي"
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "د برېشنالیک په توګه د ملګری لټون..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9033,10 +9023,6 @@
 msgid "College"
 msgstr "پوهنځی"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "برېښنالیک پته"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "زپ رمز"
@@ -11691,7 +11677,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "برېښنالیک پته: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12027,7 +12013,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -14845,7 +14831,7 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15230,8 +15216,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>تا ته %d نوی برېښناليک راغلي دی.</b>"
 msgstr[1] "<b>تا ته %d نوی برېښناليک راغلي دی.</b>"
 
@@ -16436,7 +16422,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16444,7 +16430,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16452,7 +16438,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "برېښنالیک استول"
 
 #. Configuration frame
@@ -16510,7 +16496,7 @@
 msgstr "اخری نوم:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "برېښنالیک"
 
 #. *< type
--- a/po/pt.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/pt.po	Thu Jun 26 09:07:56 2008 +0000
@@ -86,7 +86,7 @@
 
 #: ../finch/gntaccount.c:437
 msgid "New mail notifications"
-msgstr "Novas notificações de e-mail"
+msgstr "Novas notificações de email"
 
 #: ../finch/gntaccount.c:447
 msgid "Remember password"
@@ -3635,8 +3635,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
-msgstr "E-Mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
 #: ../libpurple/protocols/bonjour/bonjour.c:665
@@ -3670,17 +3670,6 @@
 msgid "Purple Person"
 msgstr "Nova Pessoa"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "E-mail:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5110,7 +5099,7 @@
 #: ../libpurple/protocols/jabber/buddy.c:1025
 #, fuzzy
 msgid "Reachability Address"
-msgstr "Endereço de e-mail"
+msgstr "Endereço de email"
 
 #: ../libpurple/protocols/jabber/buddy.c:867
 #: ../libpurple/protocols/jabber/buddy.c:1027
@@ -5397,8 +5386,8 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
-msgstr "Endereço de e-mail"
+msgid "Email Address"
+msgstr "Endereço de email"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
 #: ../libpurple/protocols/jabber/buddy.c:2411
@@ -6482,8 +6471,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Morada de e-mail inválida"
+msgid "Invalid email address"
+msgstr "Morada de email inválida"
 
 #: ../libpurple/protocols/msn/error.c:49
 #, c-format
@@ -7038,7 +7027,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Título Pessoal"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7107,8 +7096,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
-msgstr "E-Mail"
+msgid "Work Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/msn/msn.c:1688
 msgid "Work IM"
@@ -8802,12 +8791,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Recebeu um e-mail do ICQ de %s [%s]\n"
+"Recebeu um email do ICQ de %s [%s]\n"
 "\n"
 "A mensagem é: \n"
 "%s"
@@ -8992,13 +8981,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Nenhum resultado encontrado para o endereço de e-mail %s"
+msgid "No results found for email address %s"
+msgstr "Nenhum resultado encontrado para o endereço de email %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Deve receber um e-mail pedindo para confirmar %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "Deve receber um email pedindo para confirmar %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
 msgid "Account Confirmation Requested"
@@ -9035,28 +9024,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
-"Erro 0x%04x: Impossível mudar endereço de e-mail porque já existe um pedido "
+"Erro 0x%04x: Impossível mudar endereço de email porque já existe um pedido "
 "pendente para esse nome de utilizador."
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
-"Erro 0x%04x: Impossível mudar o endereço de e-mail porque este já possui "
+"Erro 0x%04x: Impossível mudar o endereço de email porque este já possui "
 "muitos nomes de utilizador associados a ele."
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Erro 0x%04x: Impossível mudar o endereço de e-mail porque este é inválido."
+"Erro 0x%04x: Impossível mudar o endereço de email porque este é inválido."
 
 #: ../libpurple/protocols/oscar/oscar.c:4023
 #, c-format
@@ -9065,8 +9054,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "O endereço de e-mail de %s é %s"
+msgid "The email address for %s is %s"
+msgstr "O endereço de email de %s é %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
 msgid "Account Info"
@@ -9351,16 +9340,16 @@
 "neles e seleccionando \"Re-requisitar autorização.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
-msgstr "Encontrar Contacto por E-mail"
+msgid "Find Buddy by Email"
+msgstr "Encontrar Contacto por Email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
-msgstr "Pesquisar Contactos por morada de e-mail"
+msgid "Search for a buddy by email address"
+msgstr "Pesquisar Contactos por morada de email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Digite a morada de e-mail do contacto que pesquisa."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Digite a morada de email do contacto que pesquisa."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
 #, fuzzy
@@ -9391,12 +9380,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Mostrar o Endereço Registado Actualmente"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Mudar o Endereço Registado Actualmente..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9405,7 +9394,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Procurar Contacto por Email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9498,10 +9487,6 @@
 msgid "College"
 msgstr "Co_lapsar"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12317,7 +12302,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "EMail: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12664,8 +12649,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "Pesquisa por e-mail restrita."
+msgid "Email lookup restricted."
+msgstr "Pesquisa por email restrita."
 
 #: ../libpurple/protocols/toc/toc.c:533
 #, c-format
@@ -13801,7 +13786,7 @@
 #: ../pidgin/gtkaccount.c:604
 #, fuzzy
 msgid "New _mail notifications"
-msgstr "Novas notificações de e-mail"
+msgstr "Novas notificações de email"
 
 #. Buddy icon
 #: ../pidgin/gtkaccount.c:609
@@ -15614,8 +15599,8 @@
 msgstr "Cor para desenhar elos quando o rato está sobre eles."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
-msgstr "_Copiar Endereço de E-Mail"
+msgid "_Copy Email Address"
+msgstr "_Copiar Endereço de Email"
 
 #: ../pidgin/gtkimhtml.c:1610
 msgid "_Open Link in Browser"
@@ -16054,8 +16039,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>Detalhes do Plugin</b>"
 msgstr[1] "<b>Detalhes do Plugin</b>"
 
@@ -16992,7 +16977,7 @@
 
 #: ../pidgin/pidginstock.c:94
 msgid "_Open Mail"
-msgstr "_Abrir e-mail"
+msgstr "_Abrir email"
 
 #: ../pidgin/pixmaps/emotes/default/24/default.theme.in.h:2
 msgid "Pidgin smileys"
@@ -17343,15 +17328,15 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
-msgstr "Impossível enviar e-mail"
+msgid "Unable to send email"
+msgstr "Impossível enviar email"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
 msgid "The evolution executable was not found in the PATH."
 msgstr "O programa evolution não foi encontrado no PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17359,8 +17344,8 @@
 msgstr "Adicionar ao Livro de Endereços"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
-msgstr "Enviar E-Mail"
+msgid "Send Email"
+msgstr "Enviar Email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:412
@@ -17421,8 +17406,8 @@
 msgstr "Último nome:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
@@ -17477,11 +17462,11 @@
 
 #: ../pidgin/plugins/mailchk.c:160
 msgid "Mail Checker"
-msgstr "Verificador de e-mail"
+msgstr "Verificador de email"
 
 #: ../pidgin/plugins/mailchk.c:162
 msgid "Checks for new local mail."
-msgstr "Verifica novos e-mails locais."
+msgstr "Verifica novos emails locais."
 
 #: ../pidgin/plugins/mailchk.c:163
 msgid "Adds a small box to the buddy list that shows if you have new mail."
--- a/po/pt_BR.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/pt_BR.po	Thu Jun 26 09:07:56 2008 +0000
@@ -1369,7 +1369,7 @@
 
 #: ../finch/gntnotify.c:226 ../pidgin/gtknotify.c:352
 msgid "New Mail"
-msgstr "Novo e-mail"
+msgstr "Novo email"
 
 #: ../finch/gntnotify.c:291 ../pidgin/gtknotify.c:972
 #, c-format
@@ -3925,7 +3925,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:555
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1068
-msgid "E-Mail"
+msgid "Email"
 msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:401
@@ -3957,16 +3957,6 @@
 msgid "Purple Person"
 msgstr "Pessoa púrpura"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:704
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:998
-#: ../libpurple/protocols/silc/silc.c:986
-#: ../libpurple/protocols/silc/silc.c:1227
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5624,8 +5614,8 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3751
 #: ../libpurple/protocols/oscar/oscar.c:3760
-msgid "E-Mail Address"
-msgstr "Endereço de e-mail"
+msgid "Email Address"
+msgstr "Endereço de email"
 
 #: ../libpurple/protocols/jabber/buddy.c:2470
 #: ../libpurple/protocols/jabber/buddy.c:2471
@@ -6684,8 +6674,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
-msgstr "Endereço de e-mail inválido"
+msgid "Invalid email address"
+msgstr "Endereço de email inválido"
 
 #: ../libpurple/protocols/msn/error.c:49
 #: ../libpurple/protocols/msnp9/error.c:49
@@ -7296,8 +7286,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1826
 #: ../libpurple/protocols/msnp9/msn.c:1667
-msgid "Personal E-Mail"
-msgstr "E-Mail pessoal"
+msgid "Personal Email"
+msgstr "Email pessoal"
 
 #: ../libpurple/protocols/msn/msn.c:1827
 #: ../libpurple/protocols/msnp9/msn.c:1668
@@ -7372,8 +7362,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1857
 #: ../libpurple/protocols/msnp9/msn.c:1698
-msgid "Work E-Mail"
-msgstr "E-Mail de trabalho"
+msgid "Work Email"
+msgstr "Email de trabalho"
 
 #: ../libpurple/protocols/msn/msn.c:1858
 #: ../libpurple/protocols/msnp9/msn.c:1699
@@ -9213,12 +9203,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2493
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Você recebeu um e-mail do ICQ de %s [%s]\n"
+"Você recebeu um email do ICQ de %s [%s]\n"
 "\n"
 "A mensagem é: \n"
 "%s"
@@ -9398,13 +9388,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3985
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Nenhum resultado encontrado para o endereço de e-mail %s"
+msgid "No results found for email address %s"
+msgstr "Nenhum resultado encontrado para o endereço de email %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4006
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Você deve receber um e-mail pedindo para confirmar %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "Você deve receber um email pedindo para confirmar %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:4008
 msgid "Account Confirmation Requested"
@@ -9437,28 +9427,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4047
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
-"Erro 0x%04x: Não foi possível mudar endereço de e-mail porque já existe um "
+"Erro 0x%04x: Não foi possível mudar endereço de email porque já existe um "
 "pedido pendente para esse nome de usuário."
 
 #: ../libpurple/protocols/oscar/oscar.c:4049
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
-"Erro 0x%04x: Não foi possível mudar o endereço de e-mail porque este já "
+"Erro 0x%04x: Não foi possível mudar o endereço de email porque este já "
 "possui muitos nomes de usuário associados a ele."
 
 #: ../libpurple/protocols/oscar/oscar.c:4051
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Erro 0x%04x: Não foi possível mudar o endereço de e-mail porque este é "
+"Erro 0x%04x: Não foi possível mudar o endereço de email porque este é "
 "inválido."
 
 #: ../libpurple/protocols/oscar/oscar.c:4053
@@ -9472,8 +9462,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4061
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "O endereço de e-mail de %s é %s"
+msgid "The email address for %s is %s"
+msgstr "O endereço de email de %s é %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4063
 msgid "Account Info"
@@ -9749,16 +9739,16 @@
 "direito neles e selecionando \"Re-requisitar autorização.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6345
-msgid "Find Buddy by E-Mail"
-msgstr "Encontrar amigo por e-mail"
+msgid "Find Buddy by Email"
+msgstr "Encontrar amigo por email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6346
-msgid "Search for a buddy by e-mail address"
-msgstr "Pesquisar por um amigo pelo endereço de e-mail"
+msgid "Search for a buddy by email address"
+msgstr "Pesquisar por um amigo pelo endereço de email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6347
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Digite o endereço de e-mail do amigo que você está procurando."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Digite o endereço de email do amigo que você está procurando."
 
 #: ../libpurple/protocols/oscar/oscar.c:6350
 msgid "_Search"
@@ -9787,20 +9777,20 @@
 msgstr "Confirmar conta"
 
 #: ../libpurple/protocols/oscar/oscar.c:6544
-msgid "Display Currently Registered E-Mail Address"
-msgstr "Mostrar o endereço de E-Mail registrado atualmente"
+msgid "Display Currently Registered Email Address"
+msgstr "Mostrar o endereço de Email registrado atualmente"
 
 #: ../libpurple/protocols/oscar/oscar.c:6548
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "Mudar o endereço de E-Mail registrado atualmente..."
+msgid "Change Currently Registered Email Address..."
+msgstr "Mudar o endereço de Email registrado atualmente..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6555
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Mostrar amigos esperando autorização"
 
 #: ../libpurple/protocols/oscar/oscar.c:6561
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Procurar por amigos pelo endereço de E-Mail..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Procurar por amigos pelo endereço de Email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6566
 msgid "Search for Buddy by Information"
@@ -9881,10 +9871,6 @@
 msgid "College"
 msgstr "Universidade"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Código Postal (CEP)"
@@ -12625,8 +12611,8 @@
 #: ../libpurple/protocols/silc/util.c:367
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:369
 #: ../libpurple/protocols/silc10/util.c:361
@@ -12951,8 +12937,8 @@
 msgstr "Serviço de diretório temporariamente indisponível."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
-msgstr "Pesquisa por e-mail restrita."
+msgid "Email lookup restricted."
+msgstr "Pesquisa por email restrita."
 
 #: ../libpurple/protocols/toc/toc.c:533
 msgid "Keyword ignored."
@@ -16024,8 +16010,8 @@
 msgstr "Habilitar notificação de digitação"
 
 #: ../pidgin/gtkimhtml.c:1688
-msgid "_Copy E-Mail Address"
-msgstr "_Copiar endereço de e-mail"
+msgid "_Copy Email Address"
+msgstr "_Copiar endereço de email"
 
 #: ../pidgin/gtkimhtml.c:1700
 msgid "_Open Link in Browser"
@@ -16436,7 +16422,7 @@
 
 #: ../pidgin/gtknotify.c:414
 msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
-msgstr "<span weight=\"bold\" size=\"larger\">Você tem e-mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">Você tem email!</span>"
 
 #: ../pidgin/gtknotify.c:563
 #, c-format
@@ -16447,10 +16433,10 @@
 
 #: ../pidgin/gtknotify.c:587
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
-msgstr[0] "<b>%d novo e-mail.</b>"
-msgstr[1] "<b>%d novos e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>%d novo email.</b>"
+msgstr[1] "<b>%d novos emails.</b>"
 
 #: ../pidgin/gtknotify.c:1021
 #, c-format
@@ -17436,7 +17422,7 @@
 
 #: ../pidgin/pidginstock.c:94
 msgid "_Open Mail"
-msgstr "_Abrir e-mail"
+msgstr "_Abrir email"
 
 #: ../pidgin/pidgintooltip.c:100
 msgid "Pidgin Tooltip"
@@ -17776,24 +17762,24 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:242
 #: ../pidgin/plugins/gevolution/gevolution.c:248
-msgid "Unable to send e-mail"
-msgstr "Não foi possível enviar e-mail."
+msgid "Unable to send email"
+msgstr "Não foi possível enviar email."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:243
 msgid "The evolution executable was not found in the PATH."
 msgstr "O executável do evolution não foi encontrado no PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:249
-msgid "An e-mail address was not found for this buddy."
-msgstr "Não foi encontrado um endereço de E-Mail para este amigo."
+msgid "An email address was not found for this buddy."
+msgstr "Não foi encontrado um endereço de Email para este amigo."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:275
 msgid "Add to Address Book"
 msgstr "Adicionar ao catálogo de endereços"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:287
-msgid "Send E-Mail"
-msgstr "Enviar e-mail"
+msgid "Send Email"
+msgstr "Enviar email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:414
@@ -17851,8 +17837,8 @@
 msgstr "Sobrenome:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:380
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
@@ -17908,11 +17894,11 @@
 
 #: ../pidgin/plugins/mailchk.c:160
 msgid "Mail Checker"
-msgstr "Verificador de e-mail"
+msgstr "Verificador de email"
 
 #: ../pidgin/plugins/mailchk.c:162
 msgid "Checks for new local mail."
-msgstr "Verifica novos e-mails locais."
+msgstr "Verifica novos emails locais."
 
 #: ../pidgin/plugins/mailchk.c:163
 msgid "Adds a small box to the buddy list that shows if you have new mail."
--- a/po/ro.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ro.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3916,7 +3916,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:555
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1068
-msgid "E-Mail"
+msgid "Email"
 msgstr "Mail"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:402
@@ -3948,16 +3948,6 @@
 msgid "Purple Person"
 msgstr "Persoană Purple"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:705
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:998
-#: ../libpurple/protocols/silc/silc.c:986
-#: ../libpurple/protocols/silc/silc.c:1227
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "Mail"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5626,7 +5616,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3753
 #: ../libpurple/protocols/oscar/oscar.c:3762
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Adresă de mail"
 
 #: ../libpurple/protocols/jabber/buddy.c:2471
@@ -6680,7 +6670,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Adresă de mail invalidă"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7291,7 +7281,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1826
 #: ../libpurple/protocols/msnp9/msn.c:1667
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Mail privat"
 
 #: ../libpurple/protocols/msn/msn.c:1827
@@ -7367,7 +7357,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1857
 #: ../libpurple/protocols/msnp9/msn.c:1698
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Mail serviciu"
 
 #: ../libpurple/protocols/msn/msn.c:1858
@@ -9229,7 +9219,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2495
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9424,12 +9414,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3987
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Nu s-a găsit nici un rezultat pentru adresa de mail %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4008
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Ar trebui să primiţi un mail care să vă ceară confirmarea %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:4010
@@ -9464,7 +9454,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4049
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Eroare 0x%04x: Nu se poate schimba adresa de mail pentru că există deja o "
@@ -9473,7 +9463,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4051
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Eroare 0x%04x: Nu se poate schimba adresa de mail pentru că adresa introdusă "
@@ -9482,7 +9472,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4053
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Eroare 0x%04x: Nu se poate schimba adresa de mail pentru că adresa introdusă "
@@ -9499,7 +9489,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4063
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Adresa de mail pentru %s este %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4065
@@ -9781,15 +9771,15 @@
 "din nou autorizare” după un click dreapta pe nume în lista contactelor."
 
 #: ../libpurple/protocols/oscar/oscar.c:6347
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Căutare contact după adresa de mail"
 
 #: ../libpurple/protocols/oscar/oscar.c:6348
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Căutare contact după adresa de mail"
 
 #: ../libpurple/protocols/oscar/oscar.c:6349
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Introduceţi adresa de mail a contactului căutat:"
 
 #: ../libpurple/protocols/oscar/oscar.c:6352
@@ -9819,11 +9809,11 @@
 msgstr "Confirmare cont"
 
 #: ../libpurple/protocols/oscar/oscar.c:6546
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Afişare adresă de mail înregistrată curent"
 
 #: ../libpurple/protocols/oscar/oscar.c:6550
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Schimbare adresă de mail înregistrată curent..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6557
@@ -9831,7 +9821,7 @@
 msgstr "Afişare contacte ce aşteaptă autorizarea"
 
 #: ../libpurple/protocols/oscar/oscar.c:6563
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Căutare contact după adresa de mail..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6568
@@ -9913,10 +9903,6 @@
 msgid "College"
 msgstr "Colegiu"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Mail"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Cod poştal"
@@ -12656,7 +12642,7 @@
 #: ../libpurple/protocols/silc/util.c:367
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Adresă de mail: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:369
@@ -12981,7 +12967,7 @@
 msgstr "Serviciul „Dir” este temporar indisponibil."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Căutarea după adresa de mail este restricţionată."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -16069,7 +16055,7 @@
 msgstr "Activează mesajele de notificare"
 
 #: ../pidgin/gtkimhtml.c:1688
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "C_opiază adresa de mail"
 
 #: ../pidgin/gtkimhtml.c:1700
@@ -16493,8 +16479,8 @@
 
 #: ../pidgin/gtknotify.c:599
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>un mail nou.</b>"
 msgstr[1] "<b>%d mailuri noi.</b>"
 msgstr[2] "<b>%d de mailuri noi.</b>"
@@ -17814,7 +17800,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:242
 #: ../pidgin/plugins/gevolution/gevolution.c:248
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Trimiterea mailului a eşuat."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:243
@@ -17822,7 +17808,7 @@
 msgstr "Executabilul „evolution” nu a fost găsit în PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:249
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Nu s-a găsit o adresă de mail pentru acest contact."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:275
@@ -17830,7 +17816,7 @@
 msgstr "Adaugă în agendă"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:287
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Trimite mail"
 
 #. Configuration frame
@@ -17889,7 +17875,7 @@
 msgstr "Nume de familie:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:380
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Mail:"
 
 #. *< type
--- a/po/ru.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ru.po	Thu Jun 26 09:07:56 2008 +0000
@@ -1331,7 +1331,7 @@
 
 #: ../finch/gntnotify.c:165
 msgid "Emails"
-msgstr "Адреса e-mail"
+msgstr "Адреса email"
 
 #: ../finch/gntnotify.c:171 ../finch/gntnotify.c:226
 msgid "You have mail!"
@@ -3852,8 +3852,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:555
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1068
-msgid "E-Mail"
-msgstr "E-mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:402
 #: ../libpurple/protocols/bonjour/bonjour.c:708
@@ -3884,16 +3884,6 @@
 msgid "Purple Person"
 msgstr ""
 
-#: ../libpurple/protocols/bonjour/bonjour.c:705
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:998
-#: ../libpurple/protocols/silc/silc.c:986
-#: ../libpurple/protocols/silc/silc.c:1227
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/silc.c:928
-msgid "E-mail"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5543,8 +5533,8 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3753
 #: ../libpurple/protocols/oscar/oscar.c:3762
-msgid "E-Mail Address"
-msgstr "Адрес e-mail"
+msgid "Email Address"
+msgstr "Адрес email"
 
 #: ../libpurple/protocols/jabber/buddy.c:2471
 #: ../libpurple/protocols/jabber/buddy.c:2472
@@ -6591,8 +6581,8 @@
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Неверный адрес e-mail"
+msgid "Invalid email address"
+msgstr "Неверный адрес email"
 
 #: ../libpurple/protocols/msn/error.c:49
 #: ../libpurple/protocols/msnp9/error.c:49
@@ -7250,8 +7240,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1826
 #: ../libpurple/protocols/msnp9/msn.c:1667
-msgid "Personal E-Mail"
-msgstr "Персональный e-mail"
+msgid "Personal Email"
+msgstr "Персональный email"
 
 #: ../libpurple/protocols/msn/msn.c:1827
 #: ../libpurple/protocols/msnp9/msn.c:1668
@@ -7326,8 +7316,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1857
 #: ../libpurple/protocols/msnp9/msn.c:1698
-msgid "Work E-Mail"
-msgstr "Рабочий e-mail"
+msgid "Work Email"
+msgstr "Рабочий email"
 
 #: ../libpurple/protocols/msn/msn.c:1858
 #: ../libpurple/protocols/msnp9/msn.c:1699
@@ -9137,12 +9127,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2495
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Вы получили ICQ e-mail от %s [%s]\n"
+"Вы получили ICQ email от %s [%s]\n"
 "\n"
 "Сообщение:\n"
 "%s"
@@ -9339,13 +9329,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3987
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Ничего не найдено для адреса e-mail %s"
+msgid "No results found for email address %s"
+msgstr "Ничего не найдено для адреса email %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4008
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Вы должны получить e-mail с просьбой подтвердить %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "Вы должны получить email с просьбой подтвердить %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:4010
 msgid "Account Confirmation Requested"
@@ -9379,28 +9369,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4049
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
-"Ошибка 0x%04x: Не удаётся изменить адрес e-mail, так как для этого имени "
+"Ошибка 0x%04x: Не удаётся изменить адрес email, так как для этого имени "
 "пользователя уже есть ожидающий запрос."
 
 #: ../libpurple/protocols/oscar/oscar.c:4051
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
-"Ошибка 0x%04x: Не удаётся изменить адрес e-mail, так как с заданным адресом "
+"Ошибка 0x%04x: Не удаётся изменить адрес email, так как с заданным адресом "
 "соотнесено слишком много имён пользователей."
 
 #: ../libpurple/protocols/oscar/oscar.c:4053
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Ошибка 0x%04x: Не удаётся изменить адрес e-mail, так как заданный адрес "
+"Ошибка 0x%04x: Не удаётся изменить адрес email, так как заданный адрес "
 "неверен."
 
 #: ../libpurple/protocols/oscar/oscar.c:4055
@@ -9414,8 +9404,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4063
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "Адрес e-mail для %s: %s"
+msgid "The email address for %s is %s"
+msgstr "Адрес email для %s: %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4065
 msgid "Account Info"
@@ -9690,16 +9680,16 @@
 "них правой кнопкой мыши и выбрав \"Повторный запрос авторизации\"."
 
 #: ../libpurple/protocols/oscar/oscar.c:6347
-msgid "Find Buddy by E-Mail"
-msgstr "Найти собеседника по e-mail"
+msgid "Find Buddy by Email"
+msgstr "Найти собеседника по email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6348
-msgid "Search for a buddy by e-mail address"
-msgstr "Искать собеседника по адресу e-mail"
+msgid "Search for a buddy by email address"
+msgstr "Искать собеседника по адресу email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6349
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Введите адрес e-mail собеседника, которого вы ищете."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Введите адрес email собеседника, которого вы ищете."
 
 #: ../libpurple/protocols/oscar/oscar.c:6352
 msgid "_Search"
@@ -9728,20 +9718,20 @@
 msgstr "Подтвердить учётную запись"
 
 #: ../libpurple/protocols/oscar/oscar.c:6546
-msgid "Display Currently Registered E-Mail Address"
-msgstr "Показать текущий зарегистрированный адрес e-mail"
+msgid "Display Currently Registered Email Address"
+msgstr "Показать текущий зарегистрированный адрес email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6550
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "Изменить текущий зарегистрированный адрес e-mail..."
+msgid "Change Currently Registered Email Address..."
+msgstr "Изменить текущий зарегистрированный адрес email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6557
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Показать собеседников без авторизации"
 
 #: ../libpurple/protocols/oscar/oscar.c:6563
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Искать собеседника по адресу e-mail..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Искать собеседника по адресу email..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6568
 msgid "Search for Buddy by Information"
@@ -9820,10 +9810,6 @@
 msgid "College"
 msgstr ""
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Индекс"
@@ -12516,8 +12502,8 @@
 #: ../libpurple/protocols/silc/util.c:367
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:369
 #: ../libpurple/protocols/silc10/util.c:361
@@ -12847,8 +12833,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "Поиск e-mail запрещён."
+msgid "Email lookup restricted."
+msgstr "Поиск email запрещён."
 
 #: ../libpurple/protocols/toc/toc.c:533
 #, c-format
@@ -15896,8 +15882,8 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1688
-msgid "_Copy E-Mail Address"
-msgstr "_Скопировать адрес e-mail"
+msgid "_Copy Email Address"
+msgstr "_Скопировать адрес email"
 
 #: ../pidgin/gtkimhtml.c:1700
 msgid "_Open Link in Browser"
@@ -16303,8 +16289,8 @@
 
 #: ../pidgin/gtknotify.c:599
 #, fuzzy, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>Подробности о модуле</b>"
 msgstr[1] "<b>Подробности о модуле</b>"
 msgstr[2] "<b>Подробности о модуле</b>"
@@ -17608,15 +17594,15 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:242
 #: ../pidgin/plugins/gevolution/gevolution.c:248
-msgid "Unable to send e-mail"
-msgstr "Не удаётся отправить e-mail"
+msgid "Unable to send email"
+msgstr "Не удаётся отправить email"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:243
 msgid "The evolution executable was not found in the PATH."
 msgstr "Исполняемый файл evolution не был найден в PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:249
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:275
@@ -17624,8 +17610,8 @@
 msgstr "Добавить в адресную книгу"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:287
-msgid "Send E-Mail"
-msgstr "Отправить e-mail"
+msgid "Send Email"
+msgstr "Отправить email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:414
@@ -17684,8 +17670,8 @@
 msgstr "Фамилия:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:380
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/si.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/si.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3496,7 +3496,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "විද්‍යුත් තැපැල:"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:385
@@ -3528,16 +3528,6 @@
 msgid "Purple Person"
 msgstr ""
 
-#: ../libpurple/protocols/bonjour/bonjour.c:687
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:961
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "විද්‍යුත් තැපෑල"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5155,7 +5145,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3724
 #: ../libpurple/protocols/oscar/oscar.c:3733
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "විද්‍යුත් තැපැල් ලිපිනය"
 
 #: ../libpurple/protocols/jabber/buddy.c:2423
@@ -6176,7 +6166,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr ""
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6765,7 +6755,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1804
 #: ../libpurple/protocols/msnp9/msn.c:1657
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr ""
 
 #: ../libpurple/protocols/msn/msn.c:1805
@@ -6841,7 +6831,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1835
 #: ../libpurple/protocols/msnp9/msn.c:1688
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr ""
 
 #: ../libpurple/protocols/msn/msn.c:1836
@@ -8544,7 +8534,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2449
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8721,12 +8711,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3958
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3979
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3981
@@ -8759,21 +8749,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4024
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4027
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4030
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -8784,7 +8774,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4043
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4045
@@ -9029,15 +9019,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6281
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6282
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6283
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6286
@@ -9067,11 +9057,11 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6480
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6484
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6491
@@ -9079,7 +9069,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6497
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6502
@@ -9162,10 +9152,6 @@
 msgid "College"
 msgstr ""
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "විද්‍යුත් තැපෑල"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr ""
@@ -11793,7 +11779,7 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr ""
 
 #: ../libpurple/protocols/silc/util.c:370
@@ -12111,7 +12097,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -14935,7 +14921,7 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1581
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1593
@@ -15304,8 +15290,8 @@
 
 #: ../pidgin/gtknotify.c:570
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -16550,7 +16536,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16558,7 +16544,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16566,7 +16552,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr ""
 
 #. Configuration frame
@@ -16624,7 +16610,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr ""
 
 #. *< type
--- a/po/sk.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/sk.po	Thu Jun 26 09:07:56 2008 +0000
@@ -823,7 +823,7 @@
 msgstr "Systémový záznam"
 
 msgid "Emails"
-msgstr "E-maily"
+msgstr "Emaily"
 
 msgid "You have mail!"
 msgstr "Máte poštu!"
@@ -2750,8 +2750,8 @@
 msgid "Last name"
 msgstr "Priezvisko"
 
-msgid "E-Mail"
-msgstr "E-mail"
+msgid "Email"
+msgstr "Email"
 
 msgid "AIM Account"
 msgstr "AIM účet"
@@ -2775,9 +2775,6 @@
 msgid "Purple Person"
 msgstr "Fialová osoba"
 
-msgid "E-mail"
-msgstr "E-mail"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3854,8 +3851,8 @@
 msgstr ""
 "Vyplňte jedno alebo viac políčok na hľadanie vyhovujúcich XMPP používateľov."
 
-msgid "E-Mail Address"
-msgstr "E-mailová adresa"
+msgid "Email Address"
+msgstr "Emailová adresa"
 
 msgid "Search for XMPP users"
 msgstr "Vyhľadávanie používateľov XMPP"
@@ -4588,8 +4585,8 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "Chyba syntaxe (pravdepodobne chyba v klientovi)"
 
-msgid "Invalid e-mail address"
-msgstr "Chybná e-mailová adresa"
+msgid "Invalid email address"
+msgstr "Chybná emailová adresa"
 
 msgid "User does not exist"
 msgstr "Používateľ neexistuje"
@@ -4946,8 +4943,8 @@
 msgid "Home Fax"
 msgstr "Fax domov"
 
-msgid "Personal E-Mail"
-msgstr "Osobný e-mail"
+msgid "Personal Email"
+msgstr "Osobný email"
 
 msgid "Personal IM"
 msgstr "Osobné IM"
@@ -4989,8 +4986,8 @@
 msgid "Work Fax"
 msgstr "Služobný fax"
 
-msgid "Work E-Mail"
-msgstr "Pracovný e-mail"
+msgid "Work Email"
+msgstr "Pracovný email"
 
 msgid "Work IM"
 msgstr "Pracovné IM"
@@ -6337,12 +6334,12 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Prišiel vám e-mail od používateľa %s [%s]\n"
+"Prišiel vám email od používateľa %s [%s]\n"
 "\n"
 "Správa je:\n"
 "%s"
@@ -6492,12 +6489,12 @@
 msgstr[2] "Nasledujúce používateľské mená sú asociované s %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Pre e-mailovú %s adresu neboli nájdené žiadne výsledky"
-
-#, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Mali by ste prijať e-mail so žiadosťou o potvrdenie %s."
+msgid "No results found for email address %s"
+msgstr "Pre emailovú %s adresu neboli nájdené žiadne výsledky"
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
+msgstr "Mali by ste prijať email so žiadosťou o potvrdenie %s."
 
 msgid "Account Confirmation Requested"
 msgstr "Bolo vyžiadané podvrdenie účtu"
@@ -6525,26 +6522,26 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
-"Chyba 0x%04x: Nepodarilo sa zmeniť e-mailovú adresu, pretože o toto "
+"Chyba 0x%04x: Nepodarilo sa zmeniť emailovú adresu, pretože o toto "
 "používateľské meno je daná žiadosť."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
-"Chyba 0x%04x: E-mailová adresa sa nedá zmeniť, pretože táto adresa má so "
+"Chyba 0x%04x: Emailová adresa sa nedá zmeniť, pretože táto adresa má so "
 "sebou asociovaných veľmi veľa používateľských mien."
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Chyba 0x%04x: Nepodarilo sa zmeniť e-mailovú adresu, pretože zadaná adresa "
+"Chyba 0x%04x: Nepodarilo sa zmeniť emailovú adresu, pretože zadaná adresa "
 "je chybná."
 
 #, c-format
@@ -6555,8 +6552,8 @@
 msgstr "Chyba pri zmene podrobností účtu"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "E-mailová adresa používateľa %s je %s"
+msgid "The email address for %s is %s"
+msgstr "Emailová adresa používateľa %s je %s"
 
 msgid "Account Info"
 msgstr "Podrobnosti o účte"
@@ -6626,7 +6623,7 @@
 "numbers and spaces, or contain only numbers."
 msgstr ""
 "Nepodarilo sa pridať priateľa %s, pretože používateľské meno je chybné.  "
-"Používateľské mená musia byť v tvare e-mailovej adresy, čísla, alebo musí "
+"Používateľské mená musia byť v tvare emailovej adresy, čísla, alebo musí "
 "byť prvý znak písmeno a ostatné znaky sú písmená, čísla a medzery."
 
 msgid "Unable To Add"
@@ -6778,14 +6775,14 @@
 "Týchto priateľov môžete znovu požiadať o autorizáciu, keď na nich kliknete "
 "pravým tlačidlom a vyberiete možnosť „Znovu požiadať o autorizáciu“."
 
-msgid "Find Buddy by E-Mail"
-msgstr "Nájsť priateľa podľa E-mailu"
-
-msgid "Search for a buddy by e-mail address"
-msgstr "Vyhľadávať priateľov podľa e-mailovej adresy"
-
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Zadajte e-mailovú adresu priateľa, ktorého hľadáte."
+msgid "Find Buddy by Email"
+msgstr "Nájsť priateľa podľa Emailu"
+
+msgid "Search for a buddy by email address"
+msgstr "Vyhľadávať priateľov podľa emailovej adresy"
+
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Zadajte emailovú adresu priateľa, ktorého hľadáte."
 
 msgid "_Search"
 msgstr "_Hľadať"
@@ -6807,16 +6804,16 @@
 msgid "Confirm Account"
 msgstr "Potvrdiť účet"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Zobraziť momentálne registrovanú e-maiovú adresu"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Zmeniť momentálne registrovanú e-maiovú adresu..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Zobraziť priateľov, ktorí čakajú na autorizáciu"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Hľadať priateľa podľa e-maiovej adresy..."
 
 msgid "Search for Buddy by Information"
@@ -6881,9 +6878,6 @@
 msgid "College"
 msgstr "Škola"
 
-msgid "Email"
-msgstr "E-mail"
-
 msgid "Zipcode"
 msgstr "PSČ"
 
@@ -8637,8 +8631,8 @@
 msgstr "Prihlasovacie meno: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #, c-format
 msgid "Host Name: \t%s\n"
@@ -8876,8 +8870,8 @@
 msgid "Dir service temporarily unavailable."
 msgstr "Služba dir je dočasne nedostupná"
 
-msgid "E-mail lookup restricted."
-msgstr "Vyhľadávanie e-mailu obmedzené."
+msgid "Email lookup restricted."
+msgstr "Vyhľadávanie emailu obmedzené."
 
 msgid "Keyword ignored."
 msgstr "Kľúčové slovo bolo ignorované."
@@ -11230,8 +11224,8 @@
 msgid "Enable typing notification"
 msgstr "Povoliť informáciu o písaní"
 
-msgid "_Copy E-Mail Address"
-msgstr "_Kopírovať e-mailovu adresu"
+msgid "_Copy Email Address"
+msgstr "_Kopírovať emailovu adresu"
 
 msgid "_Open Link in Browser"
 msgstr "_Otvoriť odkaz v prehliadači"
@@ -11578,11 +11572,11 @@
 msgstr[2] "Používateľ %s má %d nové správy."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
-msgstr[0] "<b>%d nových e-mailov.</b>"
-msgstr[1] "<b>%d nový e-mail.</b>"
-msgstr[2] "<b>%d nové e-maily.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>%d nových emailov.</b>"
+msgstr[1] "<b>%d nový email.</b>"
+msgstr[2] "<b>%d nové emaily.</b>"
 
 #, c-format
 msgid "The browser command \"%s\" is invalid."
@@ -12611,20 +12605,20 @@
 msgid "_Associate Buddy"
 msgstr "_Priradiť priateľa"
 
-msgid "Unable to send e-mail"
-msgstr "Nepodarilo sa odoslať e-mail"
+msgid "Unable to send email"
+msgstr "Nepodarilo sa odoslať email"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Spúšťač programu evolution nebol nájdený v premennej PATH."
 
-msgid "An e-mail address was not found for this buddy."
-msgstr "Nebola nájdená e-mailová adresa tohoto priateľa."
+msgid "An email address was not found for this buddy."
+msgstr "Nebola nájdená emailová adresa tohoto priateľa."
 
 msgid "Add to Address Book"
 msgstr "Pridať do adresára"
 
-msgid "Send E-Mail"
-msgstr "Odoslať E-mail"
+msgid "Send Email"
+msgstr "Odoslať Email"
 
 #. Configuration frame
 msgid "Evolution Integration Configuration"
@@ -12669,8 +12663,8 @@
 msgid "Last name:"
 msgstr "Priezvisko:"
 
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/sl.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/sl.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2787,7 +2787,7 @@
 msgid "Last name"
 msgstr "Priimek"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-pošta"
 
 msgid "AIM Account"
@@ -2812,9 +2812,6 @@
 msgid "Purple Person"
 msgstr "Vijolična oseba"
 
-msgid "E-mail"
-msgstr "E-pošta"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3889,7 +3886,7 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "Izpolnite eno ali več polj za iskanje uporabnikov XMPP."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "E-naslov"
 
 msgid "Search for XMPP users"
@@ -4621,7 +4618,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "Skladenjska napaka (verjetno hrošč v odjemalcu)"
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Neveljaven naslov e-pošte"
 
 msgid "User does not exist"
@@ -4978,7 +4975,7 @@
 msgid "Home Fax"
 msgstr "Domači faks"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Osebni e-naslov"
 
 msgid "Personal IM"
@@ -5021,7 +5018,7 @@
 msgid "Work Fax"
 msgstr "Službeni faks"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Službeni e-naslov"
 
 msgid "Work IM"
@@ -6378,7 +6375,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6536,11 +6533,11 @@
 msgstr[3] "Naslednja uporabniška imena so povezana z %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Za dani elektronski naslov %s ni zadetkov."
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Prejeti bi morali e-pošto, da potrdite %s. "
 
 msgid "Account Confirmation Requested"
@@ -6570,7 +6567,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Napaka 0x%04x: E-naslova ni mogoče spremeniti, ker je na čakanju za to "
@@ -6578,7 +6575,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Napaka 0x%04x: E-naslova ni mogoče spremeniti, ker ima podani naslov že "
@@ -6586,7 +6583,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Napaka 0x%04x: E-naslova ni mogoče spremeniti, ker je podani naslov "
@@ -6600,7 +6597,7 @@
 msgstr "Napaka pri spreminjanju podatkov o računu"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Elektronski naslov za %s je %s"
 
 msgid "Account Info"
@@ -6827,13 +6824,13 @@
 "Če želite, lahko ponovno zahtevate pooblastilo od teh prijateljev, tako da "
 "desno kliknete na njih in izberete \"Ponovno zahtevaj pooblastilo.\""
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Najdi prijatelja po e-pošti"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Išči prijatelje po naslovu e-pošte"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Vnesite naslov e-pošte prijatelja, ki ga želite najti"
 
 msgid "_Search"
@@ -6856,16 +6853,16 @@
 msgid "Confirm Account"
 msgstr "Potrdi račun"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Prikaži trenutno registriran e-naslov"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Spremeni trenutno registriran e-naslov ..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Pokaži prijatelje, ki čakajo na pooblastilo"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Išči prijatelja po e-naslovu ..."
 
 msgid "Search for Buddy by Information"
@@ -6931,9 +6928,6 @@
 msgid "College"
 msgstr "Srednja šola"
 
-msgid "Email"
-msgstr "E-naslov"
-
 msgid "Zipcode"
 msgstr "Poštna številka"
 
@@ -8681,7 +8675,7 @@
 msgstr "Uporabniško ime: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-pošta: \t\t%s\n"
 
 #, c-format
@@ -8918,7 +8912,7 @@
 msgid "Dir service temporarily unavailable."
 msgstr "Imeniška storitev je trenutno nedosegljiva."
 
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Poizvedba po e-poštnem naslovu je omejena."
 
 msgid "Keyword ignored."
@@ -11274,7 +11268,7 @@
 msgid "Enable typing notification"
 msgstr "Omogoči obveščanje o tipkanju"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopiraj naslov e-pošte"
 
 msgid "_Open Link in Browser"
@@ -11626,8 +11620,8 @@
 msgstr[3] "%s ima %d nova sporočila."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>Imate %d novih e-sporočil.</b>"
 msgstr[1] "<b>Imate %d novo e-sporočilo.</b>"
 msgstr[2] "<b>Imate %d novi e-sporočili.</b>"
@@ -12662,19 +12656,19 @@
 msgid "_Associate Buddy"
 msgstr "Pridruži prijatelj_a"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "E-sporočila ni mogoče poslati."
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Izvršilne datoteke Evolution ni v POTI."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Za tega prijatelja e-naslova ni mogoče najti."
 
 msgid "Add to Address Book"
 msgstr "Dodaj v adresar"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Pošlji e-sporočilo"
 
 #. Configuration frame
@@ -12720,7 +12714,7 @@
 msgid "Last name:"
 msgstr "Priimek:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-pošta:"
 
 #. *< type
--- a/po/sq.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/sq.po	Thu Jun 26 09:07:56 2008 +0000
@@ -1190,7 +1190,7 @@
 #: ../finch/gntnotify.c:225 ../pidgin/gtknotify.c:341
 #, fuzzy
 msgid "New Mail"
-msgstr "E-Mail"
+msgstr "Email"
 
 #: ../finch/gntnotify.c:290 ../pidgin/gtknotify.c:940
 #, c-format
@@ -3797,8 +3797,8 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
-msgstr "E-Mail"
+msgid "Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
 #: ../libpurple/protocols/bonjour/bonjour.c:665
@@ -3843,17 +3843,6 @@
 msgid "Purple Person"
 msgstr "Person i Ri"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "E-mail:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5636,13 +5625,13 @@
 "Plotësoni një ose më tepër fusha për kërkim të cilitdo përdorues Jabber që "
 "ka përputhje."
 
-#  E-Mail Address
+#  Email Address
 #: ../libpurple/protocols/jabber/buddy.c:2401
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
-msgstr "Vendndodhje E-Mail"
+msgid "Email Address"
+msgstr "Vendndodhje Email"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
 #: ../libpurple/protocols/jabber/buddy.c:2411
@@ -6747,8 +6736,8 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
-msgstr "Vendndodhje e-mail e pavlefshme"
+msgid "Invalid email address"
+msgstr "Vendndodhje email e pavlefshme"
 
 #: ../libpurple/protocols/msn/error.c:49
 #, c-format
@@ -7313,7 +7302,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Titullin Vetjak"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7382,8 +7371,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
-msgstr "E-Mail"
+msgid "Work Email"
+msgstr "Email"
 
 #: ../libpurple/protocols/msn/msn.c:1688
 msgid "Work IM"
@@ -9132,12 +9121,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"Keni marrë një e-mail ICQ prej %s [%s]\n"
+"Keni marrë një email ICQ prej %s [%s]\n"
 "\n"
 "Mesazhi thotë:\n"
 "%s"
@@ -9327,13 +9316,13 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr "Nuk u gjetën përfundime për vendndodhje e-mail %s"
+msgid "No results found for email address %s"
+msgstr "Nuk u gjetën përfundime për vendndodhje email %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
-msgstr "Duht t'ju vijë një e-mail me kërkesën për ripohim të %s."
+msgid "You should receive an email asking to confirm %s."
+msgstr "Duht t'ju vijë një email me kërkesën për ripohim të %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
 msgid "Account Confirmation Requested"
@@ -9371,28 +9360,28 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
-"Gabim 0x%04x: I pazoti të ndryshoj vendndodhje e-mail sepse për këtë emër "
+"Gabim 0x%04x: I pazoti të ndryshoj vendndodhje email sepse për këtë emër "
 "ekrani ka tashmë një kërkesë në pritje."
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
-"Gabim 0x%04x: I pazoti të ndryshoj vendndodhje e-mail sepse vendndodhja e "
+"Gabim 0x%04x: I pazoti të ndryshoj vendndodhje email sepse vendndodhja e "
 "dhënë ka shumë emra ekrani shoqëruar asaj."
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
-"Gabim 0x%04x: I pazoti të ndryshoj vendndodhje e-mail sepse vendndodhja e "
+"Gabim 0x%04x: I pazoti të ndryshoj vendndodhje email sepse vendndodhja e "
 "dhënë është e pavlefshme."
 
 #: ../libpurple/protocols/oscar/oscar.c:4023
@@ -9402,8 +9391,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
-msgstr "Vendndodhja e-mail për %s është %s"
+msgid "The email address for %s is %s"
+msgstr "Vendndodhja email për %s është %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
 msgid "Account Info"
@@ -9688,16 +9677,16 @@
 "dhe përzgjedhur \"Rikërko Autorizim.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
-msgstr "Gjej Shok nga E-mail-i"
+msgid "Find Buddy by Email"
+msgstr "Gjej Shok nga Email-i"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
-msgstr "Kërko një shok me vendndodhje e-mail"
+msgid "Search for a buddy by email address"
+msgstr "Kërko një shok me vendndodhje email"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Shtypni vendndodhjen e-mail të shokut që po kërkoni."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Shtypni vendndodhjen email të shokut që po kërkoni."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
 #, fuzzy
@@ -9729,12 +9718,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Shfaq Vendndodhje të Regjistruar për Çastin"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Ndrysho Vendndodhje të Regjistruar për Çastin..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9743,8 +9732,8 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "Kërko për Shokë sipas E-mail-i..."
+msgid "Search for Buddy by Email Address..."
+msgstr "Kërko për Shokë sipas Email-i..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
 msgid "Search for Buddy by Information"
@@ -9835,10 +9824,6 @@
 msgid "College"
 msgstr "_Tkurr"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Email"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12716,7 +12701,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "EMail: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -13089,8 +13074,8 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
-msgstr "Kërkim e-mail-i i ndaluar."
+msgid "Email lookup restricted."
+msgstr "Kërkim email-i i ndaluar."
 
 #: ../libpurple/protocols/toc/toc.c:533
 #, c-format
@@ -16129,8 +16114,8 @@
 msgstr "Ngjyrë për vizatim tejlidhjesh kur mbi to kalon miu."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
-msgstr "_Kopjo Vendndodhje E-Mail"
+msgid "_Copy Email Address"
+msgstr "_Kopjo Vendndodhje Email"
 
 #: ../pidgin/gtkimhtml.c:1610
 msgid "_Open Link in Browser"
@@ -16569,8 +16554,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17914,15 +17899,15 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
-msgstr "I pazoti të dërgoj e-mail."
+msgid "Unable to send email"
+msgstr "I pazoti të dërgoj email."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
 msgid "The evolution executable was not found in the PATH."
 msgstr "I ekzekutueshmi për Evolution nuk u gjet në PATH."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17930,8 +17915,8 @@
 msgstr "Shto te Libër Vendndodhjesh"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
-msgstr "Dërgo E-Mail"
+msgid "Send Email"
+msgstr "Dërgo Email"
 
 #. Configuration frame
 #: ../pidgin/plugins/gevolution/gevolution.c:412
@@ -18000,8 +17985,8 @@
 msgstr "Mbiemër:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #  *< api_version
 #  *< type
--- a/po/sr.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/sr.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3533,7 +3533,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Е-пошта"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3565,16 +3565,6 @@
 msgid "Purple Person"
 msgstr "Особа"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "Е-пошта"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Бонжур"
@@ -5244,7 +5234,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3707
 #: ../libpurple/protocols/oscar/oscar.c:3716
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Адреса е-поште"
 
 #: ../libpurple/protocols/jabber/buddy.c:2411
@@ -6294,7 +6284,7 @@
 msgstr "Синтаксна грешка (вероватно грешка у програму)"
 
 #: ../libpurple/protocols/msn/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Неисправна ел. адреса"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6789,7 +6779,7 @@
 msgstr "Факс"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Е-пошта"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6851,7 +6841,7 @@
 msgstr "Факс на послу"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Е-пошта на послу"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8499,7 +8489,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2432
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8692,12 +8682,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3941
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Није пронађено нити једно поклапање за адресу е-поште %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3962
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Требате да примите е-пошту ради потврђивања %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3964
@@ -8734,7 +8724,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4007
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "Грешка 0x%04x: Не могу променити адресу е-поште зато што је већ послат "
@@ -8743,7 +8733,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4010
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "Грешка 0x%04x: Не могу променити адресу е-поште зато што је превише "
@@ -8752,7 +8742,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4013
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Грешка 0x%04x: Не могу променити адресу е-поште зато што је унета адреса "
@@ -8765,7 +8755,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4026
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Адреса е-поште за %s је %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4028
@@ -9049,15 +9039,15 @@
 "избором „Понови захтев за овлашћење“."
 
 #: ../libpurple/protocols/oscar/oscar.c:6215
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Пронађи другара помоћу адресе е-поште"
 
 #: ../libpurple/protocols/oscar/oscar.c:6216
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Пронађи другара помоћу адресе е-поште"
 
 #: ../libpurple/protocols/oscar/oscar.c:6217
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Укуцајте е-поштанску адресу другара кога тражите."
 
 #: ../libpurple/protocols/oscar/oscar.c:6220
@@ -9087,11 +9077,11 @@
 msgstr "Потврдите налог"
 
 #: ../libpurple/protocols/oscar/oscar.c:6414
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Прикажи тренутно регистровану адресу е-поште"
 
 #: ../libpurple/protocols/oscar/oscar.c:6418
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Измени тренутно регистровану адресу е-поште..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6425
@@ -9099,7 +9089,7 @@
 msgstr "Прикажи другаре за које се чека овлашћење"
 
 #: ../libpurple/protocols/oscar/oscar.c:6431
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Пронађи другара према адреси е-поште..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6436
@@ -9187,10 +9177,6 @@
 msgid "College"
 msgstr "Факултет"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Е-пошта"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Поштански број"
@@ -11920,7 +11906,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Е-пошта: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12247,7 +12233,7 @@
 msgstr "Услуге именика тренутно нису доступне."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Ограничена претрага према адреси е-поште."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15149,7 +15135,7 @@
 msgstr "Боја за исцртавање над-веза кад је миш изнад њих."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Копирај адресу е-поште"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15572,8 +15558,8 @@
 
 #: ../pidgin/gtknotify.c:533
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
@@ -16817,7 +16803,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Не могу да пошаљем е-поруку."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16825,7 +16811,7 @@
 msgstr "Програм Еволуција није нађен на стази."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Адреса е-поште није нађена за овог другара."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16833,7 +16819,7 @@
 msgstr "Додај у адресар"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Пошаљи е-поруку"
 
 #. Configuration frame
@@ -16891,7 +16877,7 @@
 msgstr "Презиме:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Е-пошта"
 
 #. *< type
--- a/po/sr@latin.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/sr@latin.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3533,7 +3533,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-pošta"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3565,16 +3565,6 @@
 msgid "Purple Person"
 msgstr "Osoba"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "E-pošta"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonžur"
@@ -5244,7 +5234,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3707
 #: ../libpurple/protocols/oscar/oscar.c:3716
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Adresa e-pošte"
 
 #: ../libpurple/protocols/jabber/buddy.c:2411
@@ -6294,7 +6284,7 @@
 msgstr "Sintaksna greška (verovatno greška u programu)"
 
 #: ../libpurple/protocols/msn/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Neispravna el. adresa"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6789,7 +6779,7 @@
 msgstr "Faks"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "E-pošta"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6851,7 +6841,7 @@
 msgstr "Faks na poslu"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "E-pošta na poslu"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8499,7 +8489,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2432
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8692,12 +8682,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3941
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Nije pronađeno niti jedno poklapanje za adresu e-pošte %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3962
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Trebate da primite e-poštu radi potvrđivanja %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3964
@@ -8734,7 +8724,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4007
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "Greška 0x%04x: Ne mogu promeniti adresu e-pošte zato što je već poslat "
@@ -8743,7 +8733,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4010
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "Greška 0x%04x: Ne mogu promeniti adresu e-pošte zato što je previše "
@@ -8752,7 +8742,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4013
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Greška 0x%04x: Ne mogu promeniti adresu e-pošte zato što je uneta adresa "
@@ -8765,7 +8755,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4026
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Adresa e-pošte za %s je %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4028
@@ -9049,15 +9039,15 @@
 "izborom „Ponovi zahtev za ovlašćenje“."
 
 #: ../libpurple/protocols/oscar/oscar.c:6215
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Pronađi drugara pomoću adrese e-pošte"
 
 #: ../libpurple/protocols/oscar/oscar.c:6216
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Pronađi drugara pomoću adrese e-pošte"
 
 #: ../libpurple/protocols/oscar/oscar.c:6217
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Ukucajte e-poštansku adresu drugara koga tražite."
 
 #: ../libpurple/protocols/oscar/oscar.c:6220
@@ -9087,11 +9077,11 @@
 msgstr "Potvrdite nalog"
 
 #: ../libpurple/protocols/oscar/oscar.c:6414
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Prikaži trenutno registrovanu adresu e-pošte"
 
 #: ../libpurple/protocols/oscar/oscar.c:6418
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Izmeni trenutno registrovanu adresu e-pošte..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6425
@@ -9099,7 +9089,7 @@
 msgstr "Prikaži drugare za koje se čeka ovlašćenje"
 
 #: ../libpurple/protocols/oscar/oscar.c:6431
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Pronađi drugara prema adresi e-pošte..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6436
@@ -9187,10 +9177,6 @@
 msgid "College"
 msgstr "Fakultet"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "E-pošta"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Poštanski broj"
@@ -11920,7 +11906,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-pošta: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12247,7 +12233,7 @@
 msgstr "Usluge imenika trenutno nisu dostupne."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Ograničena pretraga prema adresi e-pošte."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15149,7 +15135,7 @@
 msgstr "Boja za iscrtavanje nad-veza kad je miš iznad njih."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopiraj adresu e-pošte"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15572,8 +15558,8 @@
 
 #: ../pidgin/gtknotify.c:533
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
@@ -16817,7 +16803,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Ne mogu da pošaljem e-poruku."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16825,7 +16811,7 @@
 msgstr "Program Evolucija nije nađen na stazi."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Adresa e-pošte nije nađena za ovog drugara."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16833,7 +16819,7 @@
 msgstr "Dodaj u adresar"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Pošalji e-poruku"
 
 #. Configuration frame
@@ -16891,7 +16877,7 @@
 msgstr "Prezime:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-pošta"
 
 #. *< type
--- a/po/sv.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/sv.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2754,7 +2754,7 @@
 msgid "Last name"
 msgstr "Efternamn"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-post"
 
 msgid "AIM Account"
@@ -2779,9 +2779,6 @@
 msgid "Purple Person"
 msgstr "Purple person"
 
-msgid "E-mail"
-msgstr "E-post"
-
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3885,7 +3882,7 @@
 msgstr ""
 "Fyll i ett eller flera fält för att söka efter matchande XMPPanvändare."
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "E-postadress"
 
 msgid "Search for XMPP users"
@@ -4619,7 +4616,7 @@
 msgstr "Syntaxfel (antagligen ett klient bug)"
 
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Ogiltig e-postadress"
 
 #, c-format
@@ -5030,7 +5027,7 @@
 msgid "Home Fax"
 msgstr "Hemfax"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Personlig E-Post"
 
 msgid "Personal IM"
@@ -5073,7 +5070,7 @@
 msgid "Work Fax"
 msgstr "Arbete Fax"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Arbete E-post"
 
 msgid "Work IM"
@@ -6425,7 +6422,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6571,11 +6568,11 @@
 msgstr[1] "Följande användarnamn är associerat med %s"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Inget resultat funnet för e-postadress %s"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Du borde få ett e-postmeddelande som ber dig bekräfta %s."
 
 msgid "Account Confirmation Requested"
@@ -6604,7 +6601,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
 "Fel 0x%04x: Kan inte ändra e-postadressen eftersom det redan finns en "
@@ -6612,7 +6609,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "Fel 0x%04x: Kan inte ändra e-postadress eftersom den angivna adressen har "
@@ -6620,7 +6617,7 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Fel 0x%04x: Kan inte ändra e-postadress eftersom den angivna adressen inte "
@@ -6634,7 +6631,7 @@
 msgstr "Fel vid ändring av kontoinformation"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "E-postaderssen för %s är %s"
 
 msgid "Account Info"
@@ -6856,13 +6853,13 @@
 "Du kan begära auktorisering igen från dessa kompisar genom att högerkilcka "
 "på dem och välja \"Begär auktorisering igen.\""
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Hitta kompis på e-postadress"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Sök efter en kompis på dess e-postadress"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Skriv in e-postadressen för den kompis du söker efter."
 
 msgid "_Search"
@@ -6885,16 +6882,16 @@
 msgid "Confirm Account"
 msgstr "Bekräfta konto"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Visa för tillfället registrerad epost-adress"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Ändra för tillfället registrerad epost-adress..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Visa kompisar som väntar på auktorisering"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Sök efter kompis på e-postadress..."
 
 msgid "Search for Buddy by Information"
@@ -6961,9 +6958,6 @@
 msgid "College"
 msgstr "Universitet"
 
-msgid "Email"
-msgstr "E-post"
-
 msgid "Zipcode"
 msgstr "Postnummer"
 
@@ -8722,7 +8716,7 @@
 msgstr "Användarnamn: \t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-Post: \t\t%s\n"
 
 #, c-format
@@ -8978,7 +8972,7 @@
 msgstr "Katalogtjänsten är tillfälligt onåbar."
 
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "E-postuppslagning är begränsad."
 
 #, c-format
@@ -11329,7 +11323,7 @@
 msgid "Enable typing notification"
 msgstr ""
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopiera e-postadress"
 
 msgid "_Open Link in Browser"
@@ -11686,8 +11680,8 @@
 msgstr[1] "%s har %d nya meddelanden."
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>Du har %d nytt epost.</b>"
 msgstr[1] "<b>Du har %d nya epost.</b>"
 
@@ -12718,19 +12712,19 @@
 msgid "_Associate Buddy"
 msgstr "_Associera kompis"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Kunde inte skicka e-post"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "Evolutions körfil hittades inte i sökvägarna."
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Ingen epostadress hittades för denna kompisen."
 
 msgid "Add to Address Book"
 msgstr "Lägg till i adressboken"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Skicka e-post"
 
 #. Configuration frame
@@ -12776,7 +12770,7 @@
 msgid "Last name:"
 msgstr "Efternamn:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "E-postadress:"
 
 #. *< type
--- a/po/ta.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ta.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3635,7 +3635,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "மின்னஞ்சல்"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3670,16 +3670,6 @@
 msgid "Purple Person"
 msgstr "புதிய நபர்"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "மின் அஞ்சல்"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "போன்ஜு"
@@ -5387,7 +5377,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "மின்னஞ்சல்"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6459,7 +6449,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "செல்லாத மின்னஞ்சல் முகவரி"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7006,7 +6996,7 @@
 msgstr "வீட்டு தொலைநகலி"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "சொந்த மின்னஞ்சல்"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7069,7 +7059,7 @@
 msgstr "அலுவலக தொலைநகலி"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "அலுவலக மின்னஞ்சல்"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8748,7 +8738,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8936,12 +8926,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "மின்னஞ்சல் %s க்கு எந்த முடிவும் இல்லை"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "%s ஐ உறுதி செய்யக்கோரி உங்களுக்கு மின்அஞ்சல் வரும்."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8979,7 +8969,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "பிழை 0x%04x: மின்னஞ்சலை மாற்ற இயலவில்லை ஏனென்றால் இந்த திரைப்பயருக்கு ஏற்கனவே ஒரு "
@@ -8988,7 +8978,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "பிழை 0x%04x: மின்னஞ்சலை மாற்ற இயலவில்லை ஏனென்றால் இந்த மின்னஞ்சலுக்கு நிறைய "
@@ -8997,7 +8987,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "பிழை 0x%04x: மின்னஞ்சலை மாற்ற இயலவில்லை ஏனென்றால் அந்த முகவரி செல்லாதது."
 
@@ -9008,7 +8998,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s யின் மின்அஞ்சல் முகவரி %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9288,15 +9278,15 @@
 "மீண்டும் கோருக.\" ஐ தேர்வு செய்யவும்."
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "தோழரை மின்னஞ்சல் கொண்டு தேடு"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "மின்னஞ்சல் முகவரி மூலம் தோழரை தேடு"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "நீங்கள் தேடும் நண்பரின் மின்னஞ்சல் முகவரியை கொடுக்கவும்.."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9328,12 +9318,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "தற்போதைய பதிவுசெய்த முகவரிகளை காட்டு"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "தற்போது பதியப்பட்ட முகவரிகளை மாற்று..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9342,7 +9332,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "தோழரை மின்னஞ்சல் மூலம் தேடுக..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9435,11 +9425,6 @@
 msgid "College"
 msgstr "_ச சுருக்கு"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-#, fuzzy
-msgid "Email"
-msgstr "மின் அஞ்சல்"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12241,7 +12226,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "மின்னஞ்சல்: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12585,7 +12570,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "மின்னஞ்சலை பார்ப்பது தடைசெய்யப்பட்டது."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15508,7 +15493,7 @@
 msgstr "சுட்டி மீத்தொடர்பின் மீது இருக்கும்பொழுது மீத்தொடர்பை வரைவதற்கான நிறம்"
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "மின்னஞ்சல் முகவரியை _நகலெடு"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15948,8 +15933,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>சொருகுபொருள் விவரம்</b>"
 msgstr[1] "<b>சொருகுபொருள் விவரம்</b>"
 
@@ -17223,7 +17208,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "மின்னஞ்சல் அனுப்ப இயலவில்லை"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17231,7 +17216,7 @@
 msgstr "எவல்யூஷன் செயலி பாதையில் இல்லை."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17239,7 +17224,7 @@
 msgstr "முகவரி புத்தகத்தில் சேர்க்கவும்"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "மின்னஞ்சல் அனுப்புக"
 
 #. Configuration frame
@@ -17297,7 +17282,7 @@
 msgstr "கடைசிப்பெயர்:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "மின்னஞ்சல்:"
 
 #. *< type
--- a/po/te.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/te.po	Thu Jun 26 09:07:56 2008 +0000
@@ -4095,7 +4095,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "ఇ-మెయిల్ "
 
 # And now for the buttons
@@ -4130,17 +4130,6 @@
 msgid "Purple Person"
 msgstr "Purple పర్సన్"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:681
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:959
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "ఇ-మెయిల్:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5844,7 +5833,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3724
 #: ../libpurple/protocols/oscar/oscar.c:3733
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "ఇ-మెయిల్ అడ్రస్ "
 
 #: ../libpurple/protocols/jabber/buddy.c:2423
@@ -6920,7 +6909,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "చెల్లని ఇ-మెయిల్ అడ్రస్ "
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7559,7 +7548,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1804
 #: ../libpurple/protocols/msnp9/msn.c:1657
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "వ్యక్తిగత ఇ-మెయిల్"
 
 #: ../libpurple/protocols/msn/msn.c:1805
@@ -7635,7 +7624,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1835
 #: ../libpurple/protocols/msnp9/msn.c:1688
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "పనిచేసేదగ్గరి ఇ-మెయిల్"
 
 #: ../libpurple/protocols/msn/msn.c:1836
@@ -9460,7 +9449,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2449
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9648,12 +9637,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3958
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "%s ఇ-మెయిల్ అడ్రస్‌కు ఫలితాలు కనిపించలేదు. "
 
 #: ../libpurple/protocols/oscar/oscar.c:3979
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "%s నిర్ధారించమని కోరుతూ మీరు ఒక ఇ-మెయిల్‌ను స్వీకరించాలి. "
 
 #: ../libpurple/protocols/oscar/oscar.c:3981
@@ -9681,17 +9670,17 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4024
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because there is already a request pending for this screen name."
+msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this screen name."
 msgstr "పొరపాటు 0x%04x: ఇ-మెయిల్ అడ్రస్‌ను మార్చడం సాధ్యం కాదు, ఎందుకంటే ఇదే స్క్రీన్‌పేరును మరొకరు మీకంటే ముందే కోరినారు. అది పెండింగ్‌లో ఉంది. "
 
 #: ../libpurple/protocols/oscar/oscar.c:4027
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address has too many screen names associated with it."
+msgid "Error 0x%04x: Unable to change email address because the given address has too many screen names associated with it."
 msgstr "పొరపాటు 0x%04x: ఇ-మెయిల్ అడ్రస్‌ను మార్చడం సాధ్యం కాదు, ఎందుకంటే ఇచ్చిన అడ్రసుకు చాలా స్క్రీన్‌పేరులు అనుబంధమై ఉన్నాయి. "
 
 #: ../libpurple/protocols/oscar/oscar.c:4030
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address is invalid."
+msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
 msgstr "పొరపాటు 0x%04x:  ఈ-మెయిల్ అడ్రసును మార్చలేము, ఎందుకంటే ఇచ్చిన అడ్రసుకు విలువ లేదు."
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
@@ -9701,7 +9690,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4043
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s ఇ-మెయిల్ అడ్రస్ %s"
 
 # And now for the buttons
@@ -9928,15 +9917,15 @@
 msgstr "ఈ క్రింది మిత్రులనుండి ఆథరైజేషన్ కొసం మీరు మరల మనవి చేయవచ్చును. వారిపేరుపై రైట్‌క్లిక్ చేసి \"ఆథరైజేషన్ కోసం మరోసారి మనవి.\" ని సెలక్ట్ చేయండి. "
 
 #: ../libpurple/protocols/oscar/oscar.c:6281
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "ఇ-మెయిల్ ద్వారా మిత్రుని కనుగొనండి. "
 
 #: ../libpurple/protocols/oscar/oscar.c:6282
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "ఇ-మెయిల్ అడ్రస్‌తో మిత్రుని కనుగొనండి. "
 
 #: ../libpurple/protocols/oscar/oscar.c:6283
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "మీరు అన్వేషిస్తున్న మిత్రుని ఇ-మెయిల్ అడ్రసును టైప్ చేయండి."
 
 # "Search"
@@ -9969,11 +9958,11 @@
 msgstr "అకౌంట్‌ను నిర్ధారించండి. "
 
 #: ../libpurple/protocols/oscar/oscar.c:6480
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "ప్రస్తుతం నమోదైన ఇ -మెయిల్ అడ్రసును చూపండి"
 
 #: ../libpurple/protocols/oscar/oscar.c:6484
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "ప్రస్తుతం నమోదైన ఇ - మెయిల్   అడ్రసును మార్చండి..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6491
@@ -9981,7 +9970,7 @@
 msgstr "ఆథరైజేషన్‌ కోసం ఎదురుచూస్తూ మిత్రులను ప్రదర్శించుము."
 
 #: ../libpurple/protocols/oscar/oscar.c:6497
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "ఇ-మెయిల్ అడ్రసు ద్వారా మిత్రాన్వేషణ ..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6502
@@ -10064,10 +10053,6 @@
 msgid "College"
 msgstr "కళాశాల"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "ఇ-మెయిల్ "
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12792,7 +12777,7 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "ఇ-మెయిల్: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:370
@@ -13115,7 +13100,7 @@
 msgstr "డైరెక్టరీ సేవ తాత్కాలికంగా అందుబాటులో లేదు."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "ఇ-మెయిల్‌ను చూడటంపై ఆంక్షలు."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -16250,7 +16235,7 @@
 msgstr "మౌస్ హైపర్ లింక్ లపై ఉన్నప్పుడు వాటిని చిత్రించడానికి రంగు."
 
 #: ../pidgin/gtkimhtml.c:1581
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_ఇ-మెయిల్ అడ్రసును కాపీ చేయండి. "
 
 #: ../pidgin/gtkimhtml.c:1593
@@ -16676,8 +16661,8 @@
 
 #: ../pidgin/gtknotify.c:570
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 #msgstr[0] "<b>ప్లగ్ ఇన్ వివరాలు</b>"
@@ -18051,7 +18036,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "ఇ-మెయిల్ పంపలేక పోతోంది"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -18059,7 +18044,7 @@
 msgstr "PATH లో ఎవల్యూషన్ ఎగ్జిక్యూటేబుల్ కనబడలేదు."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "ఈ మిత్రుడికి సంబంధించి ఇ-మెయిల్ అడ్రస్ కనబడలేదు. "
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -18067,7 +18052,7 @@
 msgstr "అడ్రస్ బుక్‌కు చేర్చండి."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "ఇ-మెయిల్ పంపించు"
 
 # Configuration frame
@@ -18134,7 +18119,7 @@
 msgstr "చివరి పేరు:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "ఇ-మెయిల్:"
 
 # *< api_version
--- a/po/th.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/th.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3538,7 +3538,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "อีเมล"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3572,16 +3572,6 @@
 msgid "Purple Person"
 msgstr ""
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "อีเมล"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5220,7 +5210,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "ที่อยู่อีเมล"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6274,7 +6264,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "อีเมลไม่ถูกต้อง"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6816,7 +6806,7 @@
 msgstr "แฟกซ์ที่บ้าน"
 
 #: ../libpurple/protocols/msn/msn.c:1656
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "อีเมลส่วนตัว"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -6879,7 +6869,7 @@
 msgstr "แฟกซ์ที่ทำงาน"
 
 #: ../libpurple/protocols/msn/msn.c:1687
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "อีเมลที่ทำงาน"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8477,7 +8467,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8657,12 +8647,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -8696,21 +8686,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 
@@ -8721,7 +8711,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -8970,15 +8960,15 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9009,11 +8999,11 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9021,7 +9011,7 @@
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr ""
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9110,11 +9100,6 @@
 msgid "College"
 msgstr "_ย่อ"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-#, fuzzy
-msgid "Email"
-msgstr "อีเมล"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr ""
@@ -11807,7 +11792,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr ""
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12146,7 +12131,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr ""
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -14991,7 +14976,7 @@
 msgstr ""
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "คัดลอก_อีเมล"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15385,8 +15370,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, fuzzy, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] "<b>รายละเอียดของปลั๊กอิน</b>"
 msgstr[1] "<b>รายละเอียดของปลั๊กอิน</b>"
 
@@ -16619,7 +16604,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "ไม่สามารถส่งอีเมลได้"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16627,7 +16612,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16635,7 +16620,7 @@
 msgstr "เพิ่มชื่อในสมุดที่อยู่"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "ส่งอีเมล"
 
 #. Configuration frame
@@ -16693,7 +16678,7 @@
 msgstr "นามสกุล:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "อีเมล:"
 
 #. *< type
--- a/po/tr.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/tr.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3558,7 +3558,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "E-Posta"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:374
@@ -3590,16 +3590,6 @@
 msgid "Purple Person"
 msgstr "Mor Kişi"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:676
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:901
-#: ../libpurple/protocols/silc/silc.c:1142
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "E-posta"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5250,7 +5240,7 @@
 #: ../libpurple/protocols/novell/novell.c:1490
 #: ../libpurple/protocols/oscar/oscar.c:3729
 #: ../libpurple/protocols/oscar/oscar.c:3738
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "E-Posta Adresi"
 
 #: ../libpurple/protocols/jabber/buddy.c:2423
@@ -6305,7 +6295,7 @@
 msgstr "Sözdizimi hatası (muhtemelen bir istemci hatası)"
 
 #: ../libpurple/protocols/msn/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Geçersiz e-posta adresi"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6798,7 +6788,7 @@
 msgstr "Ev Faksı"
 
 #: ../libpurple/protocols/msn/msn.c:1781
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Kişisel E-posta"
 
 #: ../libpurple/protocols/msn/msn.c:1782
@@ -6860,7 +6850,7 @@
 msgstr "İş Faksı"
 
 #: ../libpurple/protocols/msn/msn.c:1812
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "İş E-Postası"
 
 #: ../libpurple/protocols/msn/msn.c:1813
@@ -8528,7 +8518,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2454
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8706,12 +8696,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3963
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "%s e-posta adresi için sonuç bulunamadı"
 
 #: ../libpurple/protocols/oscar/oscar.c:3984
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "%s onayı soracak bir e-posta almalısınız."
 
 #: ../libpurple/protocols/oscar/oscar.c:3986
@@ -8746,7 +8736,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4029
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "Hata 0x%04x: E-posta adresi biçimlendirilemiyor çünkü zaten bir görüntü adı "
@@ -8755,7 +8745,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4032
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "Hata 0x%04x: E-posta adresi biçimlendirilemiyor çünkü birden fazla görüntü "
@@ -8764,7 +8754,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4035
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "Hata 0x%04x: E-posta adresi biçimlendirilemiyor çünkü geçersiz."
 
@@ -8775,7 +8765,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4048
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s için e-posta adresi %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4050
@@ -9036,15 +9026,15 @@
 "kullanıcıdan izin isteyebilirsiniz."
 
 #: ../libpurple/protocols/oscar/oscar.c:6286
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "E-Posta ile Arkadaş Bul"
 
 #: ../libpurple/protocols/oscar/oscar.c:6287
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "E-Posta adresiyle bir arkadaş ara"
 
 #: ../libpurple/protocols/oscar/oscar.c:6288
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Aradığınız arkadaşın e-posta adresini yazın."
 
 #: ../libpurple/protocols/oscar/oscar.c:6291
@@ -9074,11 +9064,11 @@
 msgstr "Hesabı Doğrula"
 
 #: ../libpurple/protocols/oscar/oscar.c:6485
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Halen Kayıtlı Olan E-posta Adreslerini Göster"
 
 #: ../libpurple/protocols/oscar/oscar.c:6489
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Şimdiki Katıtlı Olunan E-posta Adresini Değiştir..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6496
@@ -9086,7 +9076,7 @@
 msgstr "İzin Bekleyen Kişileri Göster"
 
 #: ../libpurple/protocols/oscar/oscar.c:6502
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "E-Posta Adresine Göre Kişi Ara..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6507
@@ -9174,10 +9164,6 @@
 msgid "College"
 msgstr "Kolej"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "E-Posta"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Posta Kodu"
@@ -11854,7 +11840,7 @@
 #: ../libpurple/protocols/silc/util.c:366
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "E-posta: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:368
@@ -12178,7 +12164,7 @@
 msgstr "Bu servis geçici olarak hizmet dışıdır."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "E-posta araması yasaklandı."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15064,7 +15050,7 @@
 msgstr "Bağlantıları fare üzerine geldiğinde renklendir."
 
 #: ../pidgin/gtkimhtml.c:1581
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "E-Posta Adresini _Kopyala"
 
 #: ../pidgin/gtkimhtml.c:1593
@@ -15467,8 +15453,8 @@
 
 #: ../pidgin/gtknotify.c:569
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d yeni e-posta.</b>"
 
 #: ../pidgin/gtknotify.c:997
@@ -16733,7 +16719,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "E-Posta gönderilemedi."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16741,7 +16727,7 @@
 msgstr "Evolution çalıştırılabilir dosyası PATH içerisinde bulunamadı."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Bu kişi için bir e-posta adresi bulunamadı."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16749,7 +16735,7 @@
 msgstr "Adres Defterine Ekle"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "E-Posta Yolla"
 
 #. Configuration frame
@@ -16807,8 +16793,8 @@
 msgstr "Soyad:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
-msgstr "E-mail:"
+msgid "Email:"
+msgstr "Email:"
 
 #. *< type
 #. *< ui_requirement
--- a/po/uk.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/uk.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3635,7 +3635,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Ел.пошта"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3671,17 +3671,6 @@
 msgid "Purple Person"
 msgstr "Нова особа"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "Ел.пошта:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5453,7 +5442,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Адреса ел.пошти"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6540,7 +6529,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Неправильна електронна адреса"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7105,7 +7094,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Особиста веб-сторінка"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7174,7 +7163,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Ел.пошта"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8872,7 +8861,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9081,12 +9070,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Нічого не знайдено для ел.адреси %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Ви повинні отримати ел. пошту із проханням підтвердити %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -9126,7 +9115,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "Помилка 0x%04x: Не вдається змінити адресу ел. пошти, тому що вже є "
@@ -9135,7 +9124,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "Помилка 0x%04x: Не вдається змінити адресу ел. пошти, тому що надана адреса "
@@ -9144,7 +9133,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Помилка 0x%04x: Не вдається змінити адресу ел. пошти назви облікового "
@@ -9157,7 +9146,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Адресою ел.пошти для %s є %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9440,16 +9429,16 @@
 "них правою кнопкою миші та вибравши \"Повторний запит авторизації\"."
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Знайти користувача за ел. поштою"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Шукати користувача за адресою ел.пошти"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Введіть адресу e-mail адресу, якого ви шукаєте."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Введіть адресу email адресу, якого ви шукаєте."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
 #, fuzzy
@@ -9481,12 +9470,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Відобразити поточну зареєстровану адресу"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Змінити поточну зареєстровану адресу..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9495,7 +9484,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Шукати користувача за адресою ел.пошти..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9588,10 +9577,6 @@
 msgid "College"
 msgstr "_Згорнути"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Ел.пошта"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12448,7 +12433,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Ел.пошта: \t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12804,7 +12789,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Пошук ел.пошти обмежений."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15841,7 +15826,7 @@
 msgstr "Колір для відображення гіперпосилань"
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Копіювати адресу ел.пошти"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -16257,8 +16242,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 msgstr[2] ""
@@ -17578,7 +17563,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Не вдається відправити повідомлення."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17586,7 +17571,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17595,7 +17580,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Ел.пошта"
 
 #. Configuration frame
@@ -17655,7 +17640,7 @@
 msgstr "Прізвище:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Ел.пошта:"
 
 #. *< type
@@ -19250,7 +19235,7 @@
 #~ msgid "Check Mail"
 #~ msgstr "Перевірити пошту"
 
-#~ msgid "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
 #~ msgstr "Перевіряти пошту кожні Х секунд.\n"
 
 #~ msgid "Auto-login"
--- a/po/ur.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/ur.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3927,7 +3927,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "ای- میل"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:379
@@ -3961,16 +3961,6 @@
 msgid "Purple Person"
 msgstr "نیا فرد"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:681
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:959
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "E-mail"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5629,7 +5619,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3724
 #: ../libpurple/protocols/oscar/oscar.c:3733
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "ای میل ایڈریس"
 
 #: ../libpurple/protocols/jabber/buddy.c:2423
@@ -6671,7 +6661,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "غیرمعتبرe-maiپتہ"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7302,8 +7292,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1804
 #: ../libpurple/protocols/msnp9/msn.c:1657
-msgid "Personal E-Mail"
-msgstr "ذاتیE-Mail"
+msgid "Personal Email"
+msgstr "ذاتیEmail"
 
 #: ../libpurple/protocols/msn/msn.c:1805
 #: ../libpurple/protocols/msnp9/msn.c:1658
@@ -7378,8 +7368,8 @@
 
 #: ../libpurple/protocols/msn/msn.c:1835
 #: ../libpurple/protocols/msnp9/msn.c:1688
-msgid "Work E-Mail"
-msgstr "ورك E-Mail"
+msgid "Work Email"
+msgstr "ورك Email"
 
 #: ../libpurple/protocols/msn/msn.c:1836
 #: ../libpurple/protocols/msnp9/msn.c:1689
@@ -9117,12 +9107,12 @@
 #: ../libpurple/protocols/oscar/oscar.c:2449
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
 msgstr ""
-"آپ نے ICQ e-mailموصول كیاہےسے %s [%s]\n"
+"آپ نے ICQ emailموصول كیاہےسے %s [%s]\n"
 "\n"
 "پیام ہے:\n"
 "%s"
@@ -9298,12 +9288,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3958
 #, c-format
-msgid "No results found for e-mail address %s"
-msgstr " e-mail address %sكےلیےكوئی نتائج نہیں ملے"
+msgid "No results found for email address %s"
+msgstr " email address %sكےلیےكوئی نتائج نہیں ملے"
 
 #: ../libpurple/protocols/oscar/oscar.c:3979
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "آپ كو%sكی تصدیق كےلیے ای۔میل حاصل كرناچاہیے۔"
 
 #: ../libpurple/protocols/oscar/oscar.c:3981
@@ -9331,17 +9321,17 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4024
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because there is already a request pending for this screen name."
+msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this screen name."
 msgstr "Error 0x%04x:ای۔میل ایڈریس تبدیل نہیں كرسكتا كیونكہ اس اسكرین نام كے لیے پہلے ہی سےدرخواست پڑی ہوئی ہے۔"
 
 #: ../libpurple/protocols/oscar/oscar.c:4027
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address has too many screen names associated with it."
+msgid "Error 0x%04x: Unable to change email address because the given address has too many screen names associated with it."
 msgstr "Error 0x%04x:ای۔میل ایڈریس تبدیل نہیں كرسكتا كیونكہ دیئےگئے ایڈریسیس كے ساتھ بہت سے اسكرین نام متصل ہے۔"
 
 #: ../libpurple/protocols/oscar/oscar.c:4030
 #, c-format
-msgid "Error 0x%04x: Unable to change e-mail address because the given address is invalid."
+msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
 msgstr "Error 0x%04x:ای۔میل ایڈریس تبدیل نہیں كرسكتا كیونكہ دیئےگئےایڈریسیس غیرمعتبرہے۔"
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
@@ -9351,7 +9341,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4043
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr " %s is %sكے لیےای۔میل ایڈریسیس"
 
 #: ../libpurple/protocols/oscar/oscar.c:4045
@@ -9577,15 +9567,15 @@
 msgstr "آپ ان بڈیز سے اتھورائزیشن کو دوبارہ - درخواست کر سکتے ہیں ان رائٹ- کلیک کرکےاور منتخب کرکے/\"دوبارہ- درخواست اتھورائزیشن۔/\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6281
-msgid "Find Buddy by E-Mail"
-msgstr "E-Mailكے ذریعے دوست كا نام تلاش كریں"
+msgid "Find Buddy by Email"
+msgstr "Emailكے ذریعے دوست كا نام تلاش كریں"
 
 #: ../libpurple/protocols/oscar/oscar.c:6282
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "ای - میل ایڈریس کے ذریعے بڈی کے لئۓ تلاش کریں"
 
 #: ../libpurple/protocols/oscar/oscar.c:6283
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "بڈی کا ای - میل ایڈریس ٹائپ کریں جس کے لئے آپ تلاش کررہے ہیں۔"
 
 #: ../libpurple/protocols/oscar/oscar.c:6286
@@ -9616,20 +9606,20 @@
 msgstr "اکاؤنٹ کی تصدیق کریں"
 
 #: ../libpurple/protocols/oscar/oscar.c:6480
-msgid "Display Currently Registered E-Mail Address"
-msgstr "حال ہی میں درج كیاگیاE-Mail ایڈریس ڈسپلے كریں"
+msgid "Display Currently Registered Email Address"
+msgstr "حال ہی میں درج كیاگیاEmail ایڈریس ڈسپلے كریں"
 
 #: ../libpurple/protocols/oscar/oscar.c:6484
-msgid "Change Currently Registered E-Mail Address..."
-msgstr "حال ہی میں درج كیاگیاE-Mail ایڈریس تبدیل كریں۔۔۔"
+msgid "Change Currently Registered Email Address..."
+msgstr "حال ہی میں درج كیاگیاEmail ایڈریس تبدیل كریں۔۔۔"
 
 #: ../libpurple/protocols/oscar/oscar.c:6491
 msgid "Show Buddies Awaiting Authorization"
 msgstr "بڈیز انتظار اتھورائزیشن دکھاؤ"
 
 #: ../libpurple/protocols/oscar/oscar.c:6497
-msgid "Search for Buddy by E-Mail Address..."
-msgstr "دوست كے لیے E-Mailایڈریس سے تلاش كریں۔۔۔"
+msgid "Search for Buddy by Email Address..."
+msgstr "دوست كے لیے Emailایڈریس سے تلاش كریں۔۔۔"
 
 #: ../libpurple/protocols/oscar/oscar.c:6502
 msgid "Search for Buddy by Information"
@@ -9711,10 +9701,6 @@
 msgid "College"
 msgstr "كولیگ"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "ای میل"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "زپ كوڈ"
@@ -12383,8 +12369,8 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
-msgstr "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
+msgstr "Email: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:370
 #: ../libpurple/protocols/silc10/util.c:361
@@ -12703,8 +12689,8 @@
 msgstr "براہ راست سروس عارضی طور پر غیر دستیاب۔"
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
-msgstr "E-mail پابند دكھائی دیتاہے۔"
+msgid "Email lookup restricted."
+msgstr "Email پابند دكھائی دیتاہے۔"
 
 #: ../libpurple/protocols/toc/toc.c:533
 msgid "Keyword ignored."
@@ -15672,7 +15658,7 @@
 msgstr "ہائپر لنکس ڈراؤ کرنے کے لئے رنگ جب ماؤس اس پر ہو۔"
 
 #: ../pidgin/gtkimhtml.c:1581
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_ای -میل ایڈریس نقل کریں"
 
 #: ../pidgin/gtkimhtml.c:1593
@@ -16091,8 +16077,8 @@
 
 #: ../pidgin/gtknotify.c:570
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17386,7 +17372,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "ای - میل بھیجنے میں ناقابل"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17394,7 +17380,7 @@
 msgstr "ارتقائ کا عمل درآمد  PATHمیں نہیں ملا۔"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "ایك ای  میل ایڈریس  اس بڈی كے لیے استعمال نہیں كیا گیا  تھا۔"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17402,7 +17388,7 @@
 msgstr "ایڈریس بک میں ملاؤ"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "ای میل بھیجو"
 
 #. Configuration frame
@@ -17460,7 +17446,7 @@
 msgstr "آخری نام:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "ای -میل:"
 
 #. *< type
--- a/po/vi.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/vi.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3952,7 +3952,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "Địa chỉ thư"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:401
@@ -3984,16 +3984,6 @@
 msgid "Purple Person"
 msgstr "Người Purple"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:703
-#: ../libpurple/protocols/gg/gg.c:478
-#: ../libpurple/protocols/jabber/jabber.c:982
-#: ../libpurple/protocols/silc/silc.c:913
-#: ../libpurple/protocols/silc/silc.c:1154
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "Địa chỉ thư"
-
 # Đây là tên của giao thức Apple: đừng dịch.
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
@@ -5690,7 +5680,7 @@
 #: ../libpurple/protocols/novell/novell.c:1497
 #: ../libpurple/protocols/oscar/oscar.c:3695
 #: ../libpurple/protocols/oscar/oscar.c:3704
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Địa chỉ thư"
 
 #: ../libpurple/protocols/jabber/buddy.c:2425
@@ -6736,7 +6726,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #: ../libpurple/protocols/msnp9/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "Địa chỉ thư điện tử không hợp lệ"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7367,7 +7357,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1804
 #: ../libpurple/protocols/msnp9/msn.c:1657
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Thư điện tử cá nhân"
 
 #: ../libpurple/protocols/msn/msn.c:1805
@@ -7443,7 +7433,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1835
 #: ../libpurple/protocols/msnp9/msn.c:1688
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "Thư điện tử việc làm"
 
 #: ../libpurple/protocols/msn/msn.c:1836
@@ -9202,7 +9192,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2444
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9379,12 +9369,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3929
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Không tìm thấy người nào có điạ chỉ thư %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3950
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Bạn sẽ nhận được một thư yêu cầu xác nhận %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3952
@@ -9417,21 +9407,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:3995
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr "Lỗi 0x%04x: Không đổi được địa chỉ thư vì đã có một yêu cầu bị hoãn cho tên hiển thị này."
 
 #: ../libpurple/protocols/oscar/oscar.c:3998
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr "Lỗi 0x%04x: Không đổi được địa chỉ thư vì có quá nhiều tên hiển thị có liên quan với địa chỉ này."
 
 #: ../libpurple/protocols/oscar/oscar.c:4001
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "Lỗi 0x%04x: Không thay đổi được địa chỉ thư vì địa chỉ đưa ra không hợp lệ."
 
@@ -9442,7 +9432,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Địa chỉ thư của %s là %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4016
@@ -9683,16 +9673,16 @@
 msgstr "Bạn có thể gửi lại yêu cầu sự cho phép của những bạn chát này bằng cách nhấn chuột phải vào tên người đó và chọn « Yêu cầu lại sự cho phép »."
 
 #: ../libpurple/protocols/oscar/oscar.c:6256
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Tìm bạn chát dựa theo địa chỉ thư"
 
 #: ../libpurple/protocols/oscar/oscar.c:6257
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Tìm kiếm bạn chát bằng địa chỉ thư điện tử"
 
 #: ../libpurple/protocols/oscar/oscar.c:6258
-msgid "Type the e-mail address of the buddy you are searching for."
-msgstr "Hãy nhập địa chỉ e-mail của bạn chát mà bạn cần tìm."
+msgid "Type the email address of the buddy you are searching for."
+msgstr "Hãy nhập địa chỉ email của bạn chát mà bạn cần tìm."
 
 #: ../libpurple/protocols/oscar/oscar.c:6261
 msgid "_Search"
@@ -9721,11 +9711,11 @@
 msgstr "Xác nhận tài khoản"
 
 #: ../libpurple/protocols/oscar/oscar.c:6455
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Hiển thị địa chỉ thư đăng ký hiện thời"
 
 #: ../libpurple/protocols/oscar/oscar.c:6459
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Đổi địa chỉ thư đăng ký hiện thời..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6466
@@ -9733,7 +9723,7 @@
 msgstr "Hiển thị các bạn chát chờ sự cho phép"
 
 #: ../libpurple/protocols/oscar/oscar.c:6472
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Tìm kiếm bạn chát theo địa chỉ thư..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6477
@@ -9820,10 +9810,6 @@
 msgid "College"
 msgstr "Cao đẳng"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "Địa chỉ thư"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "Mã bưu điện"
@@ -12529,7 +12515,7 @@
 #: ../libpurple/protocols/silc/util.c:368
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "Địa chỉ thư : \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:370
@@ -12853,7 +12839,7 @@
 msgstr "Tạm thời không có dịch vụ danh bạ."
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Khả năng tra tìm địa chỉ thư điện tử bị hạn chế."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15876,7 +15862,7 @@
 msgstr "Màu để vẽ tên của tin nhẳn hành động."
 
 #: ../pidgin/gtkimhtml.c:1630
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Chép địa chỉ thư"
 
 #: ../pidgin/gtkimhtml.c:1642
@@ -16322,8 +16308,8 @@
 
 #: ../pidgin/gtknotify.c:572
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d thư mới.</b>"
 
 #: ../pidgin/gtknotify.c:1004
@@ -17618,7 +17604,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Không thể gửi thư."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17626,7 +17612,7 @@
 msgstr "Không tìm thấy tập tin thực thi Evolution trên đường dẫn hệ thống mặc định (biến PATH)."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "Không tìm thấy địa chỉ thư cho bạn chát này."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17634,7 +17620,7 @@
 msgstr "Thêm vào sổ địa chỉ"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "Gửi thư"
 
 #.Configuration frame
@@ -17692,7 +17678,7 @@
 msgstr "Họ :"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "Địa chỉ thư :"
 
 #.*< type
--- a/po/xh.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/xh.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3644,7 +3644,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "I-imeyile"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:360
@@ -3680,17 +3680,6 @@
 msgid "Purple Person"
 msgstr "Umntu omTsha"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:662
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-#, fuzzy
-msgid "E-mail"
-msgstr "I-imeyile:"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr ""
@@ -5470,7 +5459,7 @@
 #: ../libpurple/protocols/novell/novell.c:1488
 #: ../libpurple/protocols/oscar/oscar.c:3714
 #: ../libpurple/protocols/oscar/oscar.c:3723
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "Idilesi ye-iMeyili"
 
 #: ../libpurple/protocols/jabber/buddy.c:2410
@@ -6560,7 +6549,7 @@
 
 #: ../libpurple/protocols/msn/error.c:46
 #, c-format
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "IDilesi ye-imeyile engasebenziyo"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -7127,7 +7116,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1656
 #, fuzzy
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "Isihloko Sobuqu"
 
 #: ../libpurple/protocols/msn/msn.c:1657
@@ -7196,7 +7185,7 @@
 
 #: ../libpurple/protocols/msn/msn.c:1687
 #, fuzzy
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "I-imeyile"
 
 #: ../libpurple/protocols/msn/msn.c:1688
@@ -8904,7 +8893,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2439
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -9099,12 +9088,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3948
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "Akukho ziphumo zifunyenweyo zedilesi ye-imeyile %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:3969
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "Uza kufumana i-imeyile ecela ukuba ungqine %s."
 
 #: ../libpurple/protocols/oscar/oscar.c:3971
@@ -9144,7 +9133,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4014
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr ""
 "Impazamo 0x%04x: Akukwazeki ukutshintsha idilesi ye-imeyile ngenxa yokuba "
@@ -9153,7 +9142,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4017
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr ""
 "Impazamo 0x%04x: Akukwazeki ukutshintsha idilesi ye-imeyile ngenxa yokuba "
@@ -9162,7 +9151,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:4020
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr ""
 "Impazamo 0x%04x: Akukwazeki ukutshintsha idilesi ye-imeyile ngenxa yokuba "
@@ -9175,7 +9164,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4033
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "Idilesi ye-imeyili ye %s yile %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
@@ -9463,15 +9452,15 @@
 "nokukhetha \"Isicelo soGunyaziso Kwakhona.\""
 
 #: ../libpurple/protocols/oscar/oscar.c:6231
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "Fumana umHlobo ngeI-meyile"
 
 #: ../libpurple/protocols/oscar/oscar.c:6232
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "Zingela umhlobo ngedilesi ye-imeyile"
 
 #: ../libpurple/protocols/oscar/oscar.c:6233
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "Chwetheza idilesi ye-imeyile yomhlobo omzingelayo."
 
 #: ../libpurple/protocols/oscar/oscar.c:6236
@@ -9504,12 +9493,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6430
 #, fuzzy
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "Bonisa iDilesi eBhalisiweyo ngeli thuba"
 
 #: ../libpurple/protocols/oscar/oscar.c:6434
 #, fuzzy
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "Tshintsha iDilesi eBhaliweyo Ngeli thuba..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6441
@@ -9518,7 +9507,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:6447
 #, fuzzy
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "Zingela umHlobo nge-Imeyile..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6452
@@ -9611,10 +9600,6 @@
 msgid "College"
 msgstr "_Ukudilika"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "I-imeyile"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 #, fuzzy
 msgid "Zipcode"
@@ -12487,7 +12472,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, fuzzy, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "I-iMeyile: \t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12844,7 +12829,7 @@
 
 #: ../libpurple/protocols/toc/toc.c:530
 #, c-format
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "Ukukhangela i-imeyile kunezithintelo."
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15877,7 +15862,7 @@
 msgstr "Umbala wokuzoba uqhagamshelwano."
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "_Kopa iDilesi ye-iMeyile"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -16284,8 +16269,8 @@
 
 #: ../pidgin/gtknotify.c:564
 #, c-format
-msgid "<b>You have %d new e-mail.</b>"
-msgid_plural "<b>You have %d new e-mails.</b>"
+msgid "<b>You have %d new email.</b>"
+msgid_plural "<b>You have %d new emails.</b>"
 msgstr[0] ""
 msgstr[1] ""
 
@@ -17609,7 +17594,7 @@
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
 #, fuzzy
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "Akukwazeki ukuthumela umyalezo."
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -17617,7 +17602,7 @@
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr ""
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -17626,7 +17611,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
 #, fuzzy
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "I-imeyile"
 
 #. Configuration frame
@@ -17685,7 +17670,7 @@
 msgstr "iFani:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "I-imeyile:"
 
 #. *< type
@@ -19289,7 +19274,7 @@
 #~ msgid "Check Mail"
 #~ msgstr "Khangela iMeyile"
 
-#~ msgid "Check e-mail every X seconds.\n"
+#~ msgid "Check email every X seconds.\n"
 #~ msgstr "Khangela i-imeyile njalo ngemizuzwana X.\n"
 
 #~ msgid "Auto-login"
--- a/po/zh_CN.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/zh_CN.po	Thu Jun 26 09:07:56 2008 +0000
@@ -3523,7 +3523,7 @@
 #: ../libpurple/protocols/silc10/ops.c:1075
 #: ../libpurple/protocols/silc10/util.c:551
 #: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
-msgid "E-Mail"
+msgid "Email"
 msgstr "电子邮件"
 
 #: ../libpurple/protocols/bonjour/bonjour.c:374
@@ -3555,16 +3555,6 @@
 msgid "Purple Person"
 msgstr "Purple 联系人"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:676
-#: ../libpurple/protocols/gg/gg.c:477
-#: ../libpurple/protocols/jabber/jabber.c:932
-#: ../libpurple/protocols/silc/silc.c:770
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/silc.c:922
-msgid "E-mail"
-msgstr "电子邮件"
-
 #: ../libpurple/protocols/bonjour/bonjour.h:33
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -5217,7 +5207,7 @@
 #: ../libpurple/protocols/novell/novell.c:1490
 #: ../libpurple/protocols/oscar/oscar.c:3729
 #: ../libpurple/protocols/oscar/oscar.c:3738
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "电子邮件地址"
 
 #: ../libpurple/protocols/jabber/buddy.c:2413
@@ -6303,7 +6293,7 @@
 msgstr "错误(可能是客户端的 bug)"
 
 #: ../libpurple/protocols/msn/error.c:46
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "无效的电子邮件地址"
 
 #: ../libpurple/protocols/msn/error.c:49
@@ -6798,7 +6788,7 @@
 msgstr "家庭传真"
 
 #: ../libpurple/protocols/msn/msn.c:1760
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "个人电子邮件"
 
 #: ../libpurple/protocols/msn/msn.c:1761
@@ -6860,7 +6850,7 @@
 msgstr "办公传真"
 
 #: ../libpurple/protocols/msn/msn.c:1791
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "办公电子邮件"
 
 #: ../libpurple/protocols/msn/msn.c:1792
@@ -8544,7 +8534,7 @@
 #: ../libpurple/protocols/oscar/oscar.c:2454
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -8722,12 +8712,12 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:3963
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "未找到与电子邮件地址 %s 匹配的结果"
 
 #: ../libpurple/protocols/oscar/oscar.c:3984
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "您应当收到询问确认 %s 的邮件。"
 
 #: ../libpurple/protocols/oscar/oscar.c:3986
@@ -8760,21 +8750,21 @@
 #: ../libpurple/protocols/oscar/oscar.c:4029
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this screen name."
 msgstr "错误 0x%04x:无法更改电子邮件地址,原因是此用户名已经有被推后的请求。"
 
 #: ../libpurple/protocols/oscar/oscar.c:4032
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many screen names associated with it."
 msgstr "错误 0x%04x:无法更改电子邮件地址,原因是给定的地址关联的用户名太多。"
 
 #: ../libpurple/protocols/oscar/oscar.c:4035
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "错误 0x%04x:无法更改电子邮件地址,原因是给定的地址无效。"
 
@@ -8785,7 +8775,7 @@
 
 #: ../libpurple/protocols/oscar/oscar.c:4048
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s 的电子邮件地址为 %s"
 
 #: ../libpurple/protocols/oscar/oscar.c:4050
@@ -9041,15 +9031,15 @@
 "求认证”。"
 
 #: ../libpurple/protocols/oscar/oscar.c:6285
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "按电子邮件查找好友"
 
 #: ../libpurple/protocols/oscar/oscar.c:6286
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "按电子邮件地址搜索好友"
 
 #: ../libpurple/protocols/oscar/oscar.c:6287
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "输入您想要搜索的好友的电子邮件地址。"
 
 #: ../libpurple/protocols/oscar/oscar.c:6290
@@ -9079,11 +9069,11 @@
 msgstr "确认账户"
 
 #: ../libpurple/protocols/oscar/oscar.c:6484
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "显示当前注册的电子邮件地址"
 
 #: ../libpurple/protocols/oscar/oscar.c:6488
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "更改当前注册的电子邮件地址..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6495
@@ -9091,7 +9081,7 @@
 msgstr "显示正在等候认证的好友"
 
 #: ../libpurple/protocols/oscar/oscar.c:6501
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "按电子邮件搜索好友..."
 
 #: ../libpurple/protocols/oscar/oscar.c:6506
@@ -9178,10 +9168,6 @@
 msgid "College"
 msgstr "大学"
 
-#: ../libpurple/protocols/qq/buddy_info.c:55
-msgid "Email"
-msgstr "电子邮件"
-
 #: ../libpurple/protocols/qq/buddy_info.c:57
 msgid "Zipcode"
 msgstr "邮政编码"
@@ -11860,7 +11846,7 @@
 #: ../libpurple/protocols/silc/util.c:362
 #: ../libpurple/protocols/silc10/util.c:359
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "电子邮件:\t\t%s\n"
 
 #: ../libpurple/protocols/silc/util.c:364
@@ -12184,7 +12170,7 @@
 msgstr "目录服务暂时不可用。"
 
 #: ../libpurple/protocols/toc/toc.c:530
-msgid "E-mail lookup restricted."
+msgid "Email lookup restricted."
 msgstr "电子邮件查阅被限制。"
 
 #: ../libpurple/protocols/toc/toc.c:533
@@ -15036,7 +15022,7 @@
 msgstr "绘制超级链接悬停时的颜色。"
 
 #: ../pidgin/gtkimhtml.c:1598
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "复制电子邮件地址(_C)"
 
 #: ../pidgin/gtkimhtml.c:1610
@@ -15427,8 +15413,8 @@
 
 #: ../pidgin/gtknotify.c:569
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d 封新邮件。</b>"
 
 #: ../pidgin/gtknotify.c:997
@@ -16646,7 +16632,7 @@
 
 #: ../pidgin/plugins/gevolution/gevolution.c:240
 #: ../pidgin/plugins/gevolution/gevolution.c:246
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "无法发送电子邮件。"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:241
@@ -16654,7 +16640,7 @@
 msgstr "Evolution 可执行文件未在 PATH 中找到。"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:247
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "此好友未发现电子邮件地址。"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:273
@@ -16662,7 +16648,7 @@
 msgstr "添加到地址簿"
 
 #: ../pidgin/plugins/gevolution/gevolution.c:285
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "发送电子邮件"
 
 #. Configuration frame
@@ -16720,7 +16706,7 @@
 msgstr "姓:"
 
 #: ../pidgin/plugins/gevolution/new_person_dialog.c:376
-msgid "E-mail:"
+msgid "Email:"
 msgstr "电子邮件:"
 
 #. *< type
--- a/po/zh_HK.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/zh_HK.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2837,7 +2837,7 @@
 msgid "Last name"
 msgstr "姓"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "電子郵件"
 
 msgid "AIM Account"
@@ -2864,9 +2864,6 @@
 msgid "Purple Person"
 msgstr "聯絡人"
 
-msgid "E-mail"
-msgstr "電子郵件"
-
 # NOTE 這是通訊協定名稱,不是問候語
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -3984,7 +3981,7 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "填入一個或多個欄位,以搜尋XMPP使用者。"
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "電子郵件"
 
 msgid "Search for XMPP users"
@@ -4808,7 +4805,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "語法錯誤(可能是用戶端的 Bug)"
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "電子郵件位址無效"
 
 msgid "User does not exist"
@@ -5176,7 +5173,7 @@
 msgid "Home Fax"
 msgstr "家用傳真"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "個人電子郵件"
 
 msgid "Personal IM"
@@ -5219,7 +5216,7 @@
 msgid "Work Fax"
 msgstr "商務傳真"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "商務電子郵件"
 
 msgid "Work IM"
@@ -6592,7 +6589,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6737,11 +6734,11 @@
 msgstr[1] "下列是 %s 的帳號"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "找不到和電子郵件地址 %s 相關的結果"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "你應該會收到一封要求對 %s 進行認證的電子郵件。"
 
 msgid "Account Confirmation Requested"
@@ -6765,20 +6762,20 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr "錯誤 0x%04x:無法改變電子郵件地址,因為這個帳號尚有要求等待處理。"
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "錯誤 0x%04x:無法改變電子郵件地址,因為這個電子郵件地址和太多的帳號產生關連。"
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "錯誤 0x%04x:無法改變電子郵件地址,因為這個電子郵件地址是無效的。"
 
@@ -6790,7 +6787,7 @@
 msgstr "更改帳號資訊錯誤"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s 的電子郵件地址為 %s"
 
 msgid "Account Info"
@@ -7001,13 +6998,13 @@
 "你可以重新要求這些好友的認證,只要在好友清單中以滑鼠右鍵點擊他們,然後選擇"
 "「要求重新認證」。"
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "以電子郵件地址來找尋好友"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "使用電子郵件地址搜尋好友"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "請輸入對方的電子郵件地址。"
 
 msgid "_Search"
@@ -7031,16 +7028,16 @@
 msgid "Confirm Account"
 msgstr "確認帳號"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "顯示目前所註冊的電子郵件位址"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "修改目前所註冊的電子郵件位址..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "顯示等待認證的好友"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "使用電子郵件地址搜尋好友..."
 
 msgid "Search for Buddy by Information"
@@ -7106,9 +7103,6 @@
 msgid "College"
 msgstr "大學/大專"
 
-msgid "Email"
-msgstr "電子郵件"
-
 msgid "Zipcode"
 msgstr "郵遞區號"
 
@@ -8889,7 +8883,7 @@
 msgstr "使用者名稱:\t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "電子郵件:\t\t%s\n"
 
 #, c-format
@@ -9131,8 +9125,8 @@
 msgid "Dir service temporarily unavailable."
 msgstr "暫時無法使用目錄服務。"
 
-msgid "E-mail lookup restricted."
-msgstr "禁止 E-Mail 檢查。"
+msgid "Email lookup restricted."
+msgstr "禁止 Email 檢查。"
 
 msgid "Keyword ignored."
 msgstr "關鍵字已被忽略。"
@@ -11573,7 +11567,7 @@
 msgid "Enable typing notification"
 msgstr "啟用輸入通知"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "複製電子郵件地址(_C)"
 
 msgid "_Open Link in Browser"
@@ -11917,8 +11911,8 @@
 msgstr[1] "%s 有 %d 封新郵件。"
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d 封新郵件。</b>"
 msgstr[1] "<b>%d 封新郵件。</b>"
 
@@ -12965,20 +12959,20 @@
 msgid "_Associate Buddy"
 msgstr "聯結好友 (_A)"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "無法送出電子郵件"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "在 PATH 裏找不到可執行的 Evolution 程式。"
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "找不到與這個好友相關的電郵地址。"
 
 #  NOTE 注意!evolution 本身的譯法是「目錄服務」而非「通訊錄」
 msgid "Add to Address Book"
 msgstr "增加到通訊錄"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "傳送電子郵件"
 
 #. Configuration frame
@@ -13031,7 +13025,7 @@
 msgid "Last name:"
 msgstr "姓:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "電子郵件:"
 
 #. *< type
--- a/po/zh_TW.po	Thu Jun 26 08:42:49 2008 +0000
+++ b/po/zh_TW.po	Thu Jun 26 09:07:56 2008 +0000
@@ -2835,7 +2835,7 @@
 msgid "Last name"
 msgstr "姓"
 
-msgid "E-Mail"
+msgid "Email"
 msgstr "電子郵件"
 
 msgid "AIM Account"
@@ -2862,9 +2862,6 @@
 msgid "Purple Person"
 msgstr "連絡人"
 
-msgid "E-mail"
-msgstr "電子郵件"
-
 # NOTE 這是通訊協定名稱,不是問候語
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -3982,7 +3979,7 @@
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "填入一個或多個欄位,以搜尋XMPP使用者。"
 
-msgid "E-Mail Address"
+msgid "Email Address"
 msgstr "電子郵件"
 
 msgid "Search for XMPP users"
@@ -4806,7 +4803,7 @@
 msgid "Syntax Error (probably a client bug)"
 msgstr "語法錯誤(可能是用戶端的 Bug)"
 
-msgid "Invalid e-mail address"
+msgid "Invalid email address"
 msgstr "電子郵件位址無效"
 
 msgid "User does not exist"
@@ -5174,7 +5171,7 @@
 msgid "Home Fax"
 msgstr "住家傳真"
 
-msgid "Personal E-Mail"
+msgid "Personal Email"
 msgstr "個人電子郵件"
 
 msgid "Personal IM"
@@ -5217,7 +5214,7 @@
 msgid "Work Fax"
 msgstr "商務傳真"
 
-msgid "Work E-Mail"
+msgid "Work Email"
 msgstr "商務電子郵件"
 
 msgid "Work IM"
@@ -6590,7 +6587,7 @@
 
 #, c-format
 msgid ""
-"You have received an ICQ e-mail from %s [%s]\n"
+"You have received an ICQ email from %s [%s]\n"
 "\n"
 "Message is:\n"
 "%s"
@@ -6735,11 +6732,11 @@
 msgstr[1] "下列是 %s 的帳號"
 
 #, c-format
-msgid "No results found for e-mail address %s"
+msgid "No results found for email address %s"
 msgstr "找不到和電子郵件地址 %s 相關的結果"
 
 #, c-format
-msgid "You should receive an e-mail asking to confirm %s."
+msgid "You should receive an email asking to confirm %s."
 msgstr "您應該會收到一封要求對 %s 進行認證的電子郵件。"
 
 msgid "Account Confirmation Requested"
@@ -6763,20 +6760,20 @@
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because there is already a "
+"Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr "錯誤 0x%04x:無法改變電子郵件地址,因為這個帳號尚有要求等待處理。"
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address has "
+"Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
 msgstr ""
 "錯誤 0x%04x:無法改變電子郵件地址,因為這個電子郵件地址和太多的帳號產生關連。"
 
 #, c-format
 msgid ""
-"Error 0x%04x: Unable to change e-mail address because the given address is "
+"Error 0x%04x: Unable to change email address because the given address is "
 "invalid."
 msgstr "錯誤 0x%04x:無法改變電子郵件地址,因為這個電子郵件地址是無效的。"
 
@@ -6788,7 +6785,7 @@
 msgstr "更改帳號資訊錯誤"
 
 #, c-format
-msgid "The e-mail address for %s is %s"
+msgid "The email address for %s is %s"
 msgstr "%s 的電子郵件地址為 %s"
 
 msgid "Account Info"
@@ -6999,13 +6996,13 @@
 "您可以重新要求這些好友的認證,只要在好友清單中以滑鼠右鍵點擊他們,然後選擇"
 "「要求重新認證」。"
 
-msgid "Find Buddy by E-Mail"
+msgid "Find Buddy by Email"
 msgstr "以電子郵件地址來找尋好友"
 
-msgid "Search for a buddy by e-mail address"
+msgid "Search for a buddy by email address"
 msgstr "使用電子郵件地址搜尋好友"
 
-msgid "Type the e-mail address of the buddy you are searching for."
+msgid "Type the email address of the buddy you are searching for."
 msgstr "請輸入對方的電子郵件地址。"
 
 msgid "_Search"
@@ -7029,16 +7026,16 @@
 msgid "Confirm Account"
 msgstr "確認帳號"
 
-msgid "Display Currently Registered E-Mail Address"
+msgid "Display Currently Registered Email Address"
 msgstr "顯示目前所註冊的電子郵件位址"
 
-msgid "Change Currently Registered E-Mail Address..."
+msgid "Change Currently Registered Email Address..."
 msgstr "修改目前所註冊的電子郵件位址..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "顯示等待認證的好友"
 
-msgid "Search for Buddy by E-Mail Address..."
+msgid "Search for Buddy by Email Address..."
 msgstr "使用電子郵件地址搜尋好友..."
 
 msgid "Search for Buddy by Information"
@@ -7104,9 +7101,6 @@
 msgid "College"
 msgstr "大學/大專"
 
-msgid "Email"
-msgstr "電子郵件"
-
 msgid "Zipcode"
 msgstr "郵遞區號"
 
@@ -8883,7 +8877,7 @@
 msgstr "使用者名稱:\t%s\n"
 
 #, c-format
-msgid "E-Mail: \t\t%s\n"
+msgid "Email: \t\t%s\n"
 msgstr "電子郵件:\t\t%s\n"
 
 #, c-format
@@ -9125,8 +9119,8 @@
 msgid "Dir service temporarily unavailable."
 msgstr "暫時無法使用目錄服務。"
 
-msgid "E-mail lookup restricted."
-msgstr "禁止 E-Mail 檢查。"
+msgid "Email lookup restricted."
+msgstr "禁止 Email 檢查。"
 
 msgid "Keyword ignored."
 msgstr "關鍵字已被忽略。"
@@ -11567,7 +11561,7 @@
 msgid "Enable typing notification"
 msgstr "啟用輸入通知"
 
-msgid "_Copy E-Mail Address"
+msgid "_Copy Email Address"
 msgstr "複製電子郵件地址(_C)"
 
 msgid "_Open Link in Browser"
@@ -11911,8 +11905,8 @@
 msgstr[1] "%s 有 %d 封新郵件。"
 
 #, c-format
-msgid "<b>%d new e-mail.</b>"
-msgid_plural "<b>%d new e-mails.</b>"
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
 msgstr[0] "<b>%d 封新郵件。</b>"
 msgstr[1] "<b>%d 封新郵件。</b>"
 
@@ -12959,20 +12953,20 @@
 msgid "_Associate Buddy"
 msgstr "聯結好友 (_A)"
 
-msgid "Unable to send e-mail"
+msgid "Unable to send email"
 msgstr "無法送出電子郵件"
 
 msgid "The evolution executable was not found in the PATH."
 msgstr "在 PATH 裡找不到可執行的 Evolution 程式。"
 
-msgid "An e-mail address was not found for this buddy."
+msgid "An email address was not found for this buddy."
 msgstr "找不到與這個好友相關的電郵地址。"
 
 #  NOTE 注意!evolution 本身的譯法是「目錄服務」而非「通訊錄」
 msgid "Add to Address Book"
 msgstr "增加到通訊錄"
 
-msgid "Send E-Mail"
+msgid "Send Email"
 msgstr "傳送電子郵件"
 
 #. Configuration frame
@@ -13025,7 +13019,7 @@
 msgid "Last name:"
 msgstr "姓:"
 
-msgid "E-mail:"
+msgid "Email:"
 msgstr "電子郵件:"
 
 #. *< type
--- a/share/ca-certs/Makefile.am	Thu Jun 26 08:42:49 2008 +0000
+++ b/share/ca-certs/Makefile.am	Thu Jun 26 09:07:56 2008 +0000
@@ -1,5 +1,4 @@
-cacertsdir =	$(datadir)/purple/ca-certs
-cacerts_DATA =	\
+CERTIFICATES = \
 		Equifax_Secure_CA.pem \
 		GTE_CyberTrust_Global_Root.pem \
 		Microsoft_Secure_Server_Authority.pem \
@@ -7,7 +6,12 @@
 		Verisign_RSA_Secure_Server_CA.pem \
 		Verisign_Class3_Primary_CA.pem
 
+if INSTALL_SSL_CERTIFICATES
+cacertsdir =	$(datadir)/purple/ca-certs
+cacerts_DATA =	$(CERTIFICATES)
+endif
+
 EXTRA_DIST =	\
 		Makefile.mingw \
-		$(cacerts_DATA)
+		$(CERTIFICATES)
 
--- a/share/ca-certs/Makefile.mingw	Thu Jun 26 08:42:49 2008 +0000
+++ b/share/ca-certs/Makefile.mingw	Thu Jun 26 09:07:56 2008 +0000
@@ -8,14 +8,17 @@
 include $(PIDGIN_TREE_TOP)/libpurple/win32/global.mak
 
 datadir := $(PIDGIN_INSTALL_DIR)
-include ./Makefile.am
+-include ./Makefile.am.mingw
 cacertsdir := $(PIDGIN_INSTALL_DIR)/ca-certs
 
 .PHONY: install
 
-install:
+install: ./Makefile.am.mingw
 	if test '$(cacerts_DATA)'; then \
 	  mkdir -p $(cacertsdir); \
 	  cp $(cacerts_DATA) $(cacertsdir); \
 	fi;
 
+./Makefile.am.mingw: ./Makefile.am
+	sed -e 's/^if\ INSTALL_SSL_CERTIFICATES/ifeq (\$$(INSTALL_SSL_CERTIFICATES), 1)/' ./Makefile.am > $@
+