changeset 26000:983311560ef9

merge of 'b7c7f0f5daca252711952e60e283dd18a1983d33' and 'e878814dfc99f1f0a681a2263488c75a068c7c8e'
author Peter Hjalmarsson <xake@rymdraket.net>
date Wed, 04 Mar 2009 16:52:47 +0000
parents d03177395ae0 (current diff) 4d758dcd5715 (diff)
children 15911f71e37f
files .todo
diffstat 288 files changed, 30077 insertions(+), 14898 deletions(-) [+]
line wrap: on
line diff
--- a/.mtn-ignore	Wed Feb 25 22:59:41 2009 +0000
+++ b/.mtn-ignore	Wed Mar 04 16:52:47 2009 +0000
@@ -10,6 +10,7 @@
 .*\.def$
 .*\.dll$
 .*\.exe$
+.*\.loT$
 intltool-.*
 Doxyfile(\.mingw)?$
 aclocal.m4
--- a/.todo	Wed Feb 25 22:59:41 2009 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<todo version="0.1.19">
-    <title>
-        Gaim TODO List
-    </title>
-    <link filename="./libpurple/protocols/oscar/.todo" priority="medium" time="0"/>
-    <link filename="./libpurple/protocols/jabber/.todo" priority="medium" time="1176995038"/>
-</todo>
--- a/AUTHORS	Wed Feb 25 22:59:41 2009 +0000
+++ b/AUTHORS	Wed Mar 04 16:52:47 2009 +0000
@@ -35,7 +35,7 @@
 
 Crazy Patch Writers:
 -------------------
-Paul Aurich
+Paul 'darkrain42' Aurich
 Marcus 'malu' Lundblad
 Dennis 'EvilDennisR' Ristuccia
 Peter 'Fmoo' Ruibal
--- a/COPYRIGHT	Wed Feb 25 22:59:41 2009 +0000
+++ b/COPYRIGHT	Wed Mar 04 16:52:47 2009 +0000
@@ -87,6 +87,7 @@
 Lorenzo Colitti
 Collabora Ltd.
 Jeff Connelly
+Chris Connett
 Nathan Conrad
 Felipe Contreras
 Alex Converse
@@ -219,6 +220,7 @@
 Gordian Klein
 Akuke Kok
 Kir Kolyshkin
+F.W. Kong
 Konstantin Korikov
 Cole Kowalski
 Matt Kramer
--- a/ChangeLog	Wed Feb 25 22:59:41 2009 +0000
+++ b/ChangeLog	Wed Mar 04 16:52:47 2009 +0000
@@ -1,6 +1,25 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
-version 2.5.5 (??/??/????):
+version 2.6.0 (??/??/2009):
+	General:
+	* Theme support in libpurple thanks to Justin Rodriguez's summer of code
+	  project.  With some minor additions and clean ups from Paul Aurich.
+
+	XMPP:
+	* Add support for in-band bytestreams (XEP-0047).
+	* Add support for attention (XEP-0224).
+
+	Pidgin:
+	* Added -f command line option to tell Pidgin to ignore NetworkManager
+	  and assume it has a valid network connection.
+	* Allow plugins to specify custom link types to the GtkIMHtml widget.
+	* The status message input box at the bottom of the buddy list expands
+	  correctly when starting a new line of text.
+	* Pressing the Enter key in the message entry box of the New Status
+	  dialog and various other dialogs now causes the cursor to move to
+	  the next line.
+
+version 2.5.5 (03/01/2009):
 	libpurple:
 	* Fix a crash when removing an account with an unknown protocol id.
 	* Beta support for SSL connections for AIM and ICQ accounts.  To
@@ -669,13 +688,13 @@
 version 2.2.0 (09/13/2007):
 	http://developer.pidgin.im/query?status=closed&milestone=2.2.0
 
-	Libpurple:
+	libpurple:
 	* New protocol plugin: MySpaceIM (Jeff Connelly, Google Summer of
 	  Code)
 	* XMPP enhancements. See
-	  http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas 
+	  http://www.adiumx.com/blog/2007/07/soc-xmpp-update.php (Andreas
 	  Monitzer, Google Summer of Code for Adium)
-	* Certificate management. Libpurple will validate certificates on
+	* Certificate management. libpurple will validate certificates on
 	  SSL-encrypted protocols (William Ehlhardt, Google Summer of Code)
 	* Some adjustments were made to fix sending messages when using
 	  the MSN HTTP method. (Laszlo Pandy)
--- a/ChangeLog.API	Wed Feb 25 22:59:41 2009 +0000
+++ b/ChangeLog.API	Wed Mar 04 16:52:47 2009 +0000
@@ -1,6 +1,74 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
-version 2.5.5 (??/??/2009):
+version 2.6.0 (??/??/2009):
+	libpurple:
+		Added:
+		* PURPLE_BLIST_NODE
+		* PURPLE_GROUP
+		* PURPLE_CONTACT
+		* PURPLE_BUDDY
+		* PURPLE_CHAT
+		* purple_buddy_get_protocol_data
+		* purple_buddy_set_protocol_data
+		* purple_buddy_get_local_buddy_alias
+		* purple_blist_get_buddies
+		* purple_blist_get_ui_data
+		* purple_blist_set_ui_data
+		* purple_blist_node_get_ui_data
+		* purple_blist_node_set_ui_data
+		* purple_connection_get_protocol_data
+		* purple_connection_set_protocol_data
+		* purple_global_proxy_set_info
+		* purple_log_get_activity_score
+		* purple_network_force_online
+		* purple_request_field_get_group
+		* purple_request_field_get_ui_data
+		* purple_request_field_set_ui_data
+		* purple_strequal
+		* xmlnode_from_file
+
+		Deprecated:
+		* purple_buddy_get_local_alias
+		* purple_notify_user_info_remove_entry
+		* purple_status_type_set_primary_attr
+		* purple_status_type_add_attr
+		* purple_status_type_add_attrs
+		* purple_status_type_add_attrs_vargs
+		* purple_status_type_get_primary_attr
+		* purple_status_set_attr_boolean
+		* purple_status_set_attr_int
+		* purple_status_set_attr_string
+		* purple_presence_add_status
+		* purple_presence_add_list
+
+	pidgin:
+		Added:
+		* gtk_imhtml_class_register_protocol
+		* gtk_imhtml_link_get_url, gtk_imhtml_link_get_text_tag,
+		  gtk_imhtml_link_activate functions to process GtkIMHtmlLink
+		  objects from GtkIMHtml protocol callbacks.
+		* gtk_imhtml_set_return_inserts_newline
+		* pidgin_blist_set_theme
+		* pidgin_blist_get_theme
+		* pidgin_sound_is_customized
+		* pidgin_utils_init, pidgin_utils_uninit
+
+	perl:
+		Changed:
+		* Made a bunch of functions act more perl-like. Call the new()
+		  functions as Class->new(...) instead of Class::new(...):
+			* Purple::Request::Fields::new
+			* Purple::Request::Field::new
+			* Purple::Request::Field::account_new
+			* Purple::Request::Field::bool_new
+			* Purple::Request::Field::choice_new
+			* Purple::Request::Field::int_new
+			* Purple::Request::Field::label_new
+			* Purple::Request::Field::list_new
+			* Purple::Request::Field::string_new
+			* Purple::Request::Field::group_new
+
+version 2.5.5 (03/01/2009):
 	libpurple:
 		Changed:
 		* purple_status_type_new now defaults "saveable" to TRUE.
--- a/ChangeLog.win32	Wed Feb 25 22:59:41 2009 +0000
+++ b/ChangeLog.win32	Wed Mar 04 16:52:47 2009 +0000
@@ -1,7 +1,10 @@
-version 2.5.5 (??/??/2009):
+version 2.6.0 (??/??/2009):
+
+version 2.5.5 (03/01/2009):
 	* Remove the "Flash window when chat messages are received" pref from
 	  the Windows Pidgin Options plugin - the Message Notification plugin
 	  does this (and much more).
+	* Updated GTK+ to 2.14.7
 
 version 2.5.4 (01/12/2009):
 	* Fix the "Hang on Exit" issue that a number of users encountered.
--- a/Makefile.am	Wed Feb 25 22:59:41 2009 +0000
+++ b/Makefile.am	Wed Mar 04 16:52:47 2009 +0000
@@ -10,6 +10,7 @@
 		README.mingw \
 		config.h.mingw \
 		doxy2devhelp.xsl \
+		fix-casts.sh \
 		gaim.pc.in \
 		gaim-uninstalled.pc.in \
 		intltool-extract.in \
--- a/Makefile.mingw	Wed Feb 25 22:59:41 2009 +0000
+++ b/Makefile.mingw	Wed Mar 04 16:52:47 2009 +0000
@@ -2,7 +2,7 @@
 #
 # Author: hermanator12002@yahoo.com
 # Date 9/11/02
-# Description: Top Makefile for win32 (mingw) port of Pidgin and LibPurple
+# Description: Top Makefile for win32 (mingw) port of Pidgin and libpurple
 #
 
 PIDGIN_TREE_TOP := .
--- a/NEWS	Wed Feb 25 22:59:41 2009 +0000
+++ b/NEWS	Wed Mar 04 16:52:47 2009 +0000
@@ -2,6 +2,17 @@
 
 Our development blog is available at: http://planet.pidgin.im
 
+2.5.5 (03/01/2009):
+	John: Well, yet another release with bug fixing and patches.  Hopefully
+	one of the fixed bugs is one that irritated you.  Also, thank Dimmuxx
+	for spending far too much time working on ICQ this release.
+
+	Elliott: Lots and lots of MSN bugfixes again (I hope they're fixed, at
+	least).  I think we finally have OCS/Yahoo!/federated buddies working
+	now.  And there should be some workarounds for some server things that
+	may or may not have been our fault (like buddies on Allow+Block) which
+	should make general usage a bit smoother.
+
 2.5.4 (01/12/2009):
 	John: Well, we fixed a few bugs for you this time around, I applied
 	a few patches, and we've dealt with what feels like a TON of tickets
--- a/configure.ac	Wed Feb 25 22:59:41 2009 +0000
+++ b/configure.ac	Wed Mar 04 16:52:47 2009 +0000
@@ -43,19 +43,19 @@
 #
 # Make sure to update finch/libgnt/configure.ac with libgnt version changes.
 #
-m4_define([purple_lt_current], [5])
+m4_define([purple_lt_current], [6])
 m4_define([purple_major_version], [2])
-m4_define([purple_minor_version], [5])
-m4_define([purple_micro_version], [5])
+m4_define([purple_minor_version], [6])
+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], [5])
+m4_define([gnt_lt_current], [6])
 m4_define([gnt_major_version], [2])
-m4_define([gnt_minor_version], [5])
-m4_define([gnt_micro_version], [5])
+m4_define([gnt_minor_version], [6])
+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])
@@ -144,7 +144,7 @@
 	;;
 esac
 
-ALL_LINGUAS="af am ar az be@latin bg bn bs ca ca@valencia cs da de dz el en_AU en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hu id it ja ka kn ko ku lo lt mk mn my_MM nb ne nl nn oc pa pl pt_BR pt ps ro ru si sk sl sq sr sr@latin sv ta te th tr uk ur vi xh zh_CN zh_HK zh_TW"
+ALL_LINGUAS="af am ar az be@latin bg bn bs ca ca@valencia cs da de dz el en_AU en_CA en_GB eo es et eu fa fi fr ga gl gu he hi hu id it ja ka km kn ko ku lo lt mk mn my_MM nb ne nl nn oc pa pl pt_BR pt ps ro ru si sk sl sq sr sr@latin sv ta te th tr uk ur vi xh zh_CN zh_HK zh_TW"
 AM_GLIB_GNU_GETTEXT
 
 dnl If we don't have msgfmt, then po/ is going to fail -- ensure that
@@ -1103,6 +1103,7 @@
 		msnp9)		dynamic_msn=yes ;;
 		myspace)	dynamic_myspace=yes ;;
 		novell)		dynamic_novell=yes ;;
+		null)		dynamic_null=yes ;;
 		oscar)		dynamic_oscar=yes ;;
 		aim)		dynamic_oscar=yes ;;
 		icq)		dynamic_oscar=yes ;;
@@ -1117,21 +1118,6 @@
 		*)			echo "Invalid dynamic protocol $i!!" ; exit ;;
 	esac
 done
-AM_CONDITIONAL(DYNAMIC_BONJOUR, test "x$dynamic_bonjour" = "xyes"  -a [ "x$avahiincludes" = "xyes" -a "x$avahilibs " = "xyes" ] )
-AM_CONDITIONAL(DYNAMIC_GG, test "x$dynamic_gg" = "xyes")
-AM_CONDITIONAL(DYNAMIC_IRC, test "x$dynamic_irc" = "xyes")
-AM_CONDITIONAL(DYNAMIC_JABBER, test "x$dynamic_jabber" = "xyes")
-AM_CONDITIONAL(DYNAMIC_MSN, test "x$dynamic_msn" = "xyes")
-AM_CONDITIONAL(DYNAMIC_MYSPACE, test "x$dynamic_myspace" = "xyes")
-AM_CONDITIONAL(DYNAMIC_NOVELL, test "x$dynamic_novell" = "xyes")
-AM_CONDITIONAL(DYNAMIC_OSCAR, test "x$dynamic_oscar" = "xyes")
-AM_CONDITIONAL(DYNAMIC_QQ, test "x$dynamic_qq" = "xyes")
-AM_CONDITIONAL(DYNAMIC_SAMETIME, test "x$dynamic_sametime" = "xyes" -a "x$have_meanwhile" = "xyes")
-AM_CONDITIONAL(DYNAMIC_SILC, test "x$dynamic_silc" = "xyes" -a "x$have_silc" = "xyes")
-AM_CONDITIONAL(DYNAMIC_SIMPLE, test "x$dynamic_simple" = "xyes")
-AM_CONDITIONAL(DYNAMIC_TOC, test "x$dynamic_toc" = "xyes")
-AM_CONDITIONAL(DYNAMIC_YAHOO, test "x$dynamic_yahoo" = "xyes")
-AM_CONDITIONAL(DYNAMIC_ZEPHYR, test "x$dynamic_zephyr" = "xyes")
 
 AC_ARG_ENABLE(plugins, [AC_HELP_STRING([--disable-plugins], [compile without plugin support])], , enable_plugins=yes)
 AC_ARG_WITH(krb4, [AC_HELP_STRING([--with-krb4=PREFIX], [compile Zephyr plugin with Kerberos 4 support])], kerberos="$withval", kerberos="no")
@@ -1702,6 +1688,22 @@
 AC_SUBST(GNUTLS_CFLAGS)
 AC_SUBST(GNUTLS_LIBS)
 
+if test "x$enable_gnutls" = "xyes"; then
+	AC_MSG_CHECKING(for gnutls_priority_set_direct)
+	LIBS_save="$LIBS"
+	LIBS="$LIBS $GNUTLS_LIBS"
+	CPPFLAGS_save="$CPPFLAGS"
+	CPPFLAGS="$CPPFLAGS $GNUTLS_CFLAGS"
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <gnutls/gnutls.h>],
+                                        [gnutls_session s; gnutls_priority_set_direct(s, NULL, NULL);])],
+	               [AC_DEFINE([HAVE_GNUTLS_PRIORITY_FUNCS], 1,
+                                  [Define if your gnutls has gnutls_priority_set_direct and friends])
+	                AC_MSG_RESULT(yes)],
+	               [AC_MSG_RESULT(no)])
+	CPPFLAGS="$CPPFLAGS_save"
+        LIBS="$LIBS_save"
+fi
+
 AM_CONDITIONAL(USE_GNUTLS, test "x$enable_gnutls" = "xyes")
 
 
--- a/doc/TCL-HOWTO.dox	Wed Feb 25 22:59:41 2009 +0000
+++ b/doc/TCL-HOWTO.dox	Wed Mar 04 16:52:47 2009 +0000
@@ -332,7 +332,7 @@
 callbacks will live in the namespace @c event underneath that
 namespace.  To briefly illustrate, the signal @c receiving-im-msg is
 provided with three arguments; the account on which the IM was
-received, the screen name of the user sending the IM, and the text of
+received, the name of the buddy sending the IM, and the text of
 the IM.  These arguments live in the variables @c event::account,
 @c event::sender, and @c event::buffer, respectively.  Therefore a callback
 which notifies the user of an incoming IM containing the word 'shizzle'
--- a/doc/funniest_home_convos.txt	Wed Feb 25 22:59:41 2009 +0000
+++ b/doc/funniest_home_convos.txt	Wed Mar 04 16:52:47 2009 +0000
@@ -565,3 +565,10 @@
              for using pidgen
 22:36 <user> why do they think this is a bad client? does it have history?
 
+--
+
+15:45 <deryni> We've had a Grand Plugin Database Plan for approximately forever.
+15:45 <SimGuy> ah, the GPDP
+15:46 <khc> well, there was a Grand Smiley Theme Database
+15:47 <SimGuy> the GSTD sounds like a bad acronym
+15:47 <khc> I realized after typing that
--- a/doc/notify-signals.dox	Wed Feb 25 22:59:41 2009 +0000
+++ b/doc/notify-signals.dox	Wed Mar 04 16:52:47 2009 +0000
@@ -18,7 +18,7 @@
   @note
     If adding a PurpleNotifyUserInfoEntry, be sure not to free it -- PurpleNotifyUserInfo assumes responsibility for its objects.
   @param account   The account on which the info was obtained.
-  @param who       The screen name of the user whose info is to be displayed.
+  @param who       The name of the buddy whose info is to be displayed.
   @param user_info The information to be displayed, as PurpleNotifyUserInfoEntry objects
  @endsignaldef
 
--- a/doc/pidgin.1.in	Wed Feb 25 22:59:41 2009 +0000
+++ b/doc/pidgin.1.in	Wed Mar 04 16:52:47 2009 +0000
@@ -128,11 +128,11 @@
 .TP
 .B Alias
 Create an alias for this buddy.  This will show an editable text field where
-the buddy's screen name was displayed.  In this field one can give this
+the buddy's name was displayed.  In this field one can give this
 buddy an alternate, more friendly name to appear on the buddy list and in
 conversations.
 
-For example, if a buddy's name screen name was jsmith1281xx and his real
+For example, if a buddy's name was jsmith1281xx and his real
 name was 'John Q. Smith,' one could create an alias as to identify the
 buddy by his common name.
 .LP
@@ -150,7 +150,7 @@
 Clicking \fIDelete\fR will delete the currently selected account.
 Clicking \fIAdd\fR or \fIModify\fR will invoke a \fBModify Account\fR
 window.  Here, the user  can add or alter account information.  When creating
-a new account, the user will submit a screen name and password.  The user will
+a new account, the user will submit a username and password.  The user will
 also choose the protocol for the account.
 
 If \fIRemember Password\fR is chosen, the password will be saved in
@@ -545,7 +545,7 @@
 .br
   \fI~/.purple/status.xml\fR: stores the user's away messages.
 .br
-  \fI~/.purple/logs/PROTOCOL/ACCOUNT/SCREENNAME/DATE.{html,txt}\fR: conversation logs.
+  \fI~/.purple/logs/PROTOCOL/ACCOUNT/BUDDYNAME/DATE.{html,txt}\fR: conversation logs.
 
 .SH DIRECTORIES
   \fI@prefix@/lib/pidgin/\fR: Pidgin's plugins directory.
--- a/finch/gntaccount.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/finch/gntaccount.c	Wed Mar 04 16:52:47 2009 +0000
@@ -65,7 +65,7 @@
 	GntWidget *window;
 
 	GntWidget *protocol;
-	GntWidget *screenname;
+	GntWidget *username;
 	GntWidget *password;
 	GntWidget *alias;
 
@@ -118,8 +118,8 @@
 	plugin = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(dialog->protocol));
 	prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
 
-	/* Screenname && user-splits */
-	value = gnt_entry_get_text(GNT_ENTRY(dialog->screenname));
+	/* Username && user-splits */
+	value = gnt_entry_get_text(GNT_ENTRY(dialog->username));
 
 	if (value == NULL || *value == '\0')
 	{
@@ -326,7 +326,7 @@
 	}
 
 	if (username != NULL)
-		gnt_entry_set_text(GNT_ENTRY(dialog->screenname), username);
+		gnt_entry_set_text(GNT_ENTRY(dialog->username), username);
 
 	g_free(username);
 }
@@ -546,7 +546,7 @@
 	gnt_box_set_pad(GNT_BOX(hbox), 0);
 	gnt_box_add_widget(GNT_BOX(window), hbox);
 
-	dialog->screenname = entry = gnt_entry_new(NULL);
+	dialog->username = entry = gnt_entry_new(NULL);
 	gnt_box_add_widget(GNT_BOX(hbox), gnt_label_new(_("Username:")));
 	gnt_box_add_widget(GNT_BOX(hbox), entry);
 
--- a/finch/gntblist.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/finch/gntblist.c	Wed Mar 04 16:52:47 2009 +0000
@@ -357,7 +357,7 @@
 	int color = 0;
 
 	if (PURPLE_BLIST_NODE_IS_CONTACT(node))
-		node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
+		node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
 	if (!PURPLE_BLIST_NODE_IS_BUDDY(node))
 		return 0;
 
@@ -388,7 +388,7 @@
 	if (fnode && fnode->signed_timer)
 		flag |= GNT_TEXT_FLAG_BLINK;
 	else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
-		node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact *)node);
+		node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
 		fnode = FINCH_GET_DATA(node);
 		if (fnode && fnode->signed_timer)
 			flag |= GNT_TEXT_FLAG_BLINK;
@@ -886,7 +886,7 @@
 	const char *name = NULL;
 
 	if (PURPLE_BLIST_NODE_IS_CONTACT(node))
-		node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);  /* XXX: this can return NULL?! */
+		node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));  /* XXX: this can return NULL?! */
 
 	if (node == NULL)
 		return NULL;
@@ -1027,7 +1027,7 @@
 		return;
 
 	if (PURPLE_BLIST_NODE_IS_CONTACT(node))
-		node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
+		node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
 
 	if (PURPLE_BLIST_NODE_IS_BUDDY(node))
 	{
@@ -1438,16 +1438,16 @@
 	if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
 		PurpleBuddy *b = (PurpleBuddy*) node;
 		type = PURPLE_LOG_IM;
-		name = g_strdup(b->name);
-		account = b->account;
+		name = g_strdup(purple_buddy_get_name(b));
+		account = purple_buddy_get_account(b);
 	} else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
 		PurpleChat *c = (PurpleChat*) node;
 		PurplePluginProtocolInfo *prpl_info = NULL;
 		type = PURPLE_LOG_CHAT;
-		account = c->account;
+		account = purple_chat_get_account(c);
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account)));
 		if (prpl_info && prpl_info->get_chat_name) {
-			name = prpl_info->get_chat_name(c->components);
+			name = prpl_info->get_chat_name(purple_chat_get_components(c));
 		}
 	} else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
 		finch_log_show_contact((PurpleContact *)node);
@@ -1571,8 +1571,8 @@
 		ggblist->tagged = g_list_prepend(ggblist->tagged, node);
 	}
 	if (PURPLE_BLIST_NODE_IS_CONTACT(node))
-		node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
-	if (PURPLE_BLIST_NODE_IS_BUDDY(node))
+		update_buddy_display(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)), ggblist);
+	else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
 		update_buddy_display((PurpleBuddy*)node, ggblist);
 	else
 		update_node_display(node, ggblist);
@@ -1612,7 +1612,7 @@
 				purple_blist_add_group((PurpleGroup*)node, (PurpleBlistNode*)tg);
 			} else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
 				update_buddy_display(purple_contact_get_priority_buddy((PurpleContact*)node), ggblist);
-				if ((PurpleBlistNode*)tg == target) {
+				if (PURPLE_BLIST_NODE(tg) == target) {
 					/* The target is a group, just add the contact to the group. */
 					purple_blist_add_contact((PurpleContact*)node, tg, NULL);
 				} else if (tc) {
@@ -1624,7 +1624,7 @@
 				}
 			} else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
 				update_buddy_display((PurpleBuddy*)node, ggblist);
-				if ((PurpleBlistNode*)tg == target) {
+				if (PURPLE_BLIST_NODE(tg) == target) {
 					/* The target is a group. Add this buddy in a new contact under this group. */
 					purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL);
 				} else if (PURPLE_BLIST_NODE_IS_CONTACT(target)) {
@@ -1639,7 +1639,7 @@
 				}
 			} else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
 				update_node_display(node, ggblist);
-				if ((PurpleBlistNode*)tg == target)
+				if (PURPLE_BLIST_NODE(tg) == target)
 					purple_blist_add_chat((PurpleChat*)node, tg, NULL);
 				else
 					purple_blist_add_chat((PurpleChat*)node, NULL, target);
@@ -1685,7 +1685,7 @@
 		create_group_menu(GNT_MENU(context), NULL);
 		title = g_strdup(_("Buddy List"));
 	} else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
-		ggblist->cnode = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
+		ggblist->cnode = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
 		create_buddy_menu(GNT_MENU(context), (PurpleBuddy*)ggblist->cnode);
 		title = g_strdup(purple_contact_get_alias((PurpleContact*)node));
 	} else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
@@ -2415,8 +2415,8 @@
 
 	switch (purple_blist_node_get_type(n1)) {
 		case PURPLE_BLIST_CONTACT_NODE:
-			n1 = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)n1);
-			n2 = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)n2);
+			n1 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n1)));
+			n2 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n2)));
 			/* now compare the presence of the priority buddies */
 		case PURPLE_BLIST_BUDDY_NODE:
 			ret = purple_presence_compare(purple_buddy_get_presence((PurpleBuddy*)n1),
--- a/finch/gntconv.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/finch/gntconv.c	Wed Mar 04 16:52:47 2009 +0000
@@ -496,8 +496,9 @@
 	buddies = purple_find_buddies(account, name);
 	for (cur = buddies; cur != NULL; cur = cur->next) {
 		PurpleBlistNode *node = cur->data;
-		if ((node != NULL) && ((node->prev != NULL) || (node->next != NULL))) {
-			finch_log_show_contact((PurpleContact *)node->parent);
+		if ((node != NULL) &&
+				(purple_blist_node_get_sibling_prev(node) || purple_blist_node_get_sibling_next(node))) {
+			finch_log_show_contact((PurpleContact *)purple_blist_node_get_parent(node));
 			g_slist_free(buddies);
 			return;
 		}
@@ -529,7 +530,7 @@
 	gnt_menuitem_set_submenu(item, GNT_MENU(sub));
 
 	for (; buds; buds = g_slist_delete_link(buds, buds)) {
-		PurpleBlistNode *node = (PurpleBlistNode *)purple_buddy_get_contact((PurpleBuddy *)buds->data);
+		PurpleBlistNode *node = PURPLE_BLIST_NODE(purple_buddy_get_contact(PURPLE_BUDDY(buds->data)));
 		for (node = purple_blist_node_get_first_child(node); node != NULL;
 				node = purple_blist_node_get_sibling_next(node)) {
 			PurpleBuddy *buddy = (PurpleBuddy *)node;
--- a/finch/gntlog.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/finch/gntlog.c	Wed Mar 04 16:52:47 2009 +0000
@@ -49,7 +49,7 @@
 
 struct log_viewer_hash_t {
 	PurpleLogType type;
-	char *screenname;
+	char *username;
 	PurpleAccount *account;
 	PurpleContact *contact;
 };
@@ -62,7 +62,7 @@
 		return g_direct_hash(viewer->contact);
 
 	if (viewer->account) {
-		return g_str_hash(viewer->screenname) +
+		return g_str_hash(viewer->username) +
 			g_str_hash(purple_account_get_username(viewer->account));
 	}
 
@@ -88,10 +88,10 @@
 			return FALSE;
 	}
 
-	if (a->screenname && b->screenname) {
-		normal = g_strdup(purple_normalize(a->account, a->screenname));
+	if (a->username && b->username) {
+		normal = g_strdup(purple_normalize(a->account, a->username));
 		ret = (a->account == b->account) &&
-			!strcmp(normal, purple_normalize(b->account, b->screenname));
+			!strcmp(normal, purple_normalize(b->account, b->username));
 		g_free(normal);
 	} else {
 		ret = (a == b);
@@ -155,7 +155,7 @@
 		lv = g_hash_table_lookup(log_viewers, ht);
 		g_hash_table_remove(log_viewers, ht);
 
-		g_free(ht->screenname);
+		g_free(ht->username);
 		g_free(ht);
 	} else
 		syslog_viewer = NULL;
@@ -284,7 +284,7 @@
 				if (!purple_prefs_get_bool("/purple/logging/log_chats"))
 					log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled.");
 			}
-			g_free(ht->screenname);
+			g_free(ht->username);
 			g_free(ht);
 		}
 
@@ -365,31 +365,31 @@
 	*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)
+void finch_log_show(PurpleLogType type, const char *username, PurpleAccount *account)
 {
 	struct log_viewer_hash_t *ht;
 	FinchLogViewer *lv = NULL;
-	const char *name = screenname;
+	const char *name = username;
 	char *title;
 	GList *logs = NULL;
 	int size = 0;
 
 	if (type != PURPLE_LOG_IM) {
 		g_return_if_fail(account != NULL);
-		g_return_if_fail(screenname != NULL);
+		g_return_if_fail(username != NULL);
 	}
 
 	ht = g_new0(struct log_viewer_hash_t, 1);
 
 	ht->type = type;
-	ht->screenname = g_strdup(screenname);
+	ht->username = g_strdup(username);
 	ht->account = account;
 
 	if (log_viewers == NULL) {
 		log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
 	} else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
 		gnt_window_present(lv->window);
-		g_free(ht->screenname);
+		g_free(ht->username);
 		g_free(ht);
 		return;
 	}
@@ -397,7 +397,7 @@
 	if (type == PURPLE_LOG_CHAT) {
 		PurpleChat *chat;
 
-		chat = purple_blist_find_chat(account, screenname);
+		chat = purple_blist_find_chat(account, username);
 		if (chat != NULL)
 			name = purple_chat_get_name(chat);
 
@@ -405,8 +405,8 @@
 	} else {
 		PurpleBuddy *buddy;
 
-		if (screenname) {
-			buddy = purple_find_buddy(account, screenname);
+		if (username) {
+			buddy = purple_find_buddy(account, username);
 			if (buddy != NULL)
 				name = purple_buddy_get_contact_alias(buddy);
 			title = g_strdup_printf(_("Conversations with %s"), name);
@@ -415,9 +415,9 @@
 		}
 	}
 
-	if (screenname) {
-		logs = purple_log_get_logs(type, screenname, account);
-		size = purple_log_get_total_size(type, screenname, account);
+	if (username) {
+		logs = purple_log_get_logs(type, username, account);
+		size = purple_log_get_total_size(type, username, account);
 	} else {
 		/* This will happen only for IMs */
 		GHashTable *table = purple_log_get_log_sets();
@@ -458,12 +458,16 @@
 
 	for (child = purple_blist_node_get_first_child((PurpleBlistNode*)contact); child;
 			child = purple_blist_node_get_sibling_next(child)) {
+		const char *name;
+		PurpleAccount *account;
 		if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
 			continue;
 
-		logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name,
-						((PurpleBuddy *)child)->account), logs);
-		total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, ((PurpleBuddy *)child)->account);
+		name = purple_buddy_get_name((PurpleBuddy *)child);
+		account = purple_buddy_get_account((PurpleBuddy *)child);
+		logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, name,
+						account), logs);
+		total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, name, account);
 	}
 	logs = g_list_sort(logs, purple_log_compare);
 
--- a/finch/gntlog.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/finch/gntlog.h	Wed Mar 04 16:52:47 2009 +0000
@@ -50,7 +50,7 @@
 
 
 
-void finch_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account);
+void finch_log_show(PurpleLogType type, const char *username, PurpleAccount *account);
 void finch_log_show_contact(PurpleContact *contact);
 
 void finch_syslog_show(void);
--- a/finch/gntrequest.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/finch/gntrequest.c	Wed Mar 04 16:52:47 2009 +0000
@@ -39,6 +39,12 @@
 #include "debug.h"
 #include "util.h"
 
+/* XXX: Until gobjectification ... */
+#undef FINCH_GET_DATA
+#undef FINCH_SET_DATA
+#define FINCH_GET_DATA(obj)  purple_request_field_get_ui_data(obj)
+#define FINCH_SET_DATA(obj, data)  purple_request_field_set_ui_data(obj, data)
+
 typedef struct
 {
 	void *user_data;
@@ -393,11 +399,11 @@
 }
 
 static void
-update_selected_account(GntEntry *screenname, const char *start, const char *end,
+update_selected_account(GntEntry *username, const char *start, const char *end,
 		GntComboBox *accountlist)
 {
 	GList *accounts = gnt_tree_get_rows(GNT_TREE(accountlist->dropdown));
-	const char *name = gnt_entry_get_text(screenname);
+	const char *name = gnt_entry_get_text(username);
 	while (accounts) {
 		if (purple_find_buddy(accounts->data, name)) {
 			gnt_combo_box_set_selected(accountlist, accounts->data);
@@ -419,7 +425,7 @@
 }
 
 static GntWidget*
-create_string_field(PurpleRequestField *field, GntWidget **screenname)
+create_string_field(PurpleRequestField *field, GntWidget **username)
 {
 	const char *hint = purple_request_field_get_type_hint(field);
 	GntWidget *entry = gnt_entry_new(
@@ -435,8 +441,8 @@
 			gnt_entry_add_suggest(GNT_ENTRY(entry), purple_buddy_get_name((PurpleBuddy*)node));
 		}
 		gnt_entry_set_always_suggest(GNT_ENTRY(entry), TRUE);
-		if (screenname)
-			*screenname = entry;
+		if (username)
+			*username = entry;
 	} else if (hint && !strcmp(hint, "group")) {
 		PurpleBlistNode *node;
 		for (node = purple_blist_get_root(); node;
@@ -569,7 +575,7 @@
 {
 	GntWidget *window, *box;
 	GList *grlist;
-	GntWidget *screenname = NULL, *accountlist = NULL;
+	GntWidget *username = NULL, *accountlist = NULL;
 
 	window = setup_request_window(title, primary, secondary, PURPLE_REQUEST_FIELDS);
 
@@ -617,7 +623,7 @@
 			}
 			else if (type == PURPLE_REQUEST_FIELD_STRING)
 			{
-				FINCH_SET_DATA(field, create_string_field(field, &screenname));
+				FINCH_SET_DATA(field, create_string_field(field, &username));
 			}
 			else if (type == PURPLE_REQUEST_FIELD_INTEGER)
 			{
@@ -633,7 +639,8 @@
 			}
 			else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
 			{
-				accountlist = FINCH_SET_DATA(field, create_account_field(field));
+				accountlist = create_account_field(field);
+				FINCH_SET_DATA(field, accountlist);
 			}
 			else
 			{
@@ -655,8 +662,8 @@
 	setup_default_callback(window, cancel_cb, userdata);
 	gnt_widget_show(window);
 
-	if (screenname && accountlist) {
-		g_signal_connect(screenname, "completion", G_CALLBACK(update_selected_account), accountlist);
+	if (username && accountlist) {
+		g_signal_connect(username, "completion", G_CALLBACK(update_selected_account), accountlist);
 	}
 
 	g_object_set_data(G_OBJECT(window), "fields", allfields);
--- a/finch/plugins/grouping.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/finch/plugins/grouping.c	Wed Mar 04 16:52:47 2009 +0000
@@ -87,7 +87,7 @@
 
 	switch (purple_blist_node_get_type(node)) {
 		case PURPLE_BLIST_CONTACT_NODE:
-			node = (PurpleBlistNode*)purple_contact_get_priority_buddy((PurpleContact*)node);
+			node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
 			ret = PURPLE_BUDDY_IS_ONLINE((PurpleBuddy*)node) ? &online : &offline;
 			break;
 		case PURPLE_BLIST_BUDDY_NODE:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fix-casts.sh	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+if [ $# -eq 0 ]; then
+	echo "Usage: `basename "$0"` PurpleFoo..."
+	echo
+	echo "This script searches the *current working directory* and replaces casts"
+	echo "with GObject-style type checking and casting macros."
+	echo 'For example, "(PurpleBuddy *)b" becomes "PURPLE_BUDDY(b)".'
+	exit 0
+fi
+
+for struct in $* ; do
+	cast=`echo $struct | sed "s|[A-Z]|_\0|g" | tr "a-z" "A-Z" | sed "s|^_||"`
+	for file in `grep -rl "([[:space:]]*$struct[[:space:]]*\*[[:space:]]*)" . --include=*.c --exclude=purple-client-bindings.c` ; do
+		sed -i "s|([[:space:]]*$struct[[:space:]]*\*[[:space:]]*)[[:space:]]*(|$cast(|g" $file
+		sed -i "s|([[:space:]]*$struct[[:space:]]*\*[[:space:]]*)[[:space:]]*\([^(][^,);]*\)|$cast(\1)|g" $file
+	done
+done
--- a/libpurple/Makefile.am	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/Makefile.am	Wed Mar 04 16:52:47 2009 +0000
@@ -75,7 +75,12 @@
 	stringref.c \
 	stun.c \
 	sound.c \
+	sound-theme.c \
+	sound-theme-loader.c \
 	sslconn.c \
+	theme.c \
+	theme-loader.c \
+	theme-manager.c \
 	upnp.c \
 	util.c \
 	value.c \
@@ -128,7 +133,12 @@
 	stringref.h \
 	stun.h \
 	sound.h \
+	sound-theme.h \
+	sound-theme-loader.h \
 	sslconn.h \
+	theme.h \
+	theme-loader.h \
+	theme-manager.h \
 	upnp.h \
 	util.h \
 	value.h \
--- a/libpurple/Makefile.mingw	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/Makefile.mingw	Wed Mar 04 16:52:47 2009 +0000
@@ -1,7 +1,7 @@
 #
 # Makefile.mingw
 #
-# Description: Makefile for win32 (mingw) version of LibPurple
+# Description: Makefile for win32 (mingw) version of libpurple
 #
 
 PIDGIN_TREE_TOP := ..
@@ -67,10 +67,15 @@
 			signals.c \
 			smiley.c \
 			sound.c \
+			sound-theme.c \
+			sound-theme-loader.c \
 			sslconn.c \
 			status.c \
 			stringref.c \
 			stun.c \
+			theme.c \
+			theme-loader.c \
+			theme-manager.c \
 			upnp.c \
 			util.c \
 			value.c \
--- a/libpurple/account.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/account.c	Wed Mar 04 16:52:47 2009 +0000
@@ -178,9 +178,7 @@
 	{
 		const char *string_value = purple_value_get_string(attr_value);
 		const char *default_string_value = purple_value_get_string(default_value);
-		if (((string_value == NULL) && (default_string_value == NULL)) ||
-			((string_value != NULL) && (default_string_value != NULL) &&
-			 !strcmp(string_value, default_string_value)))
+		if (purple_strequal(string_value, default_string_value))
 			return NULL;
 		value = g_strdup(purple_value_get_string(attr_value));
 	}
@@ -511,11 +509,11 @@
 			/* Ignore this setting */
 			continue;
 
-		if (!strcmp(str_type, "string"))
+		if (purple_strequal(str_type, "string"))
 			type = PURPLE_PREF_STRING;
-		else if (!strcmp(str_type, "int"))
+		else if (purple_strequal(str_type, "int"))
 			type = PURPLE_PREF_INT;
-		else if (!strcmp(str_type, "bool"))
+		else if (purple_strequal(str_type, "bool"))
 			type = PURPLE_PREF_BOOLEAN;
 		else
 			/* Ignore this setting */
@@ -660,17 +658,17 @@
 	child = xmlnode_get_child(node, "type");
 	if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL))
 	{
-		if (!strcmp(data, "global"))
+		if (purple_strequal(data, "global"))
 			purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_USE_GLOBAL);
-		else if (!strcmp(data, "none"))
+		else if (purple_strequal(data, "none"))
 			purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_NONE);
-		else if (!strcmp(data, "http"))
+		else if (purple_strequal(data, "http"))
 			purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_HTTP);
-		else if (!strcmp(data, "socks4"))
+		else if (purple_strequal(data, "socks4"))
 			purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_SOCKS4);
-		else if (!strcmp(data, "socks5"))
+		else if (purple_strequal(data, "socks5"))
 			purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_SOCKS5);
-		else if (!strcmp(data, "envvar"))
+		else if (purple_strequal(data, "envvar"))
 			purple_proxy_info_set_type(proxy_info, PURPLE_PROXY_USE_ENVVAR);
 		else
 		{
@@ -2027,7 +2025,7 @@
 	{
 		PurpleStatusType *status_type = (PurpleStatusType *)l->data;
 
-		if (!strcmp(purple_status_type_get_id(status_type), id))
+		if (purple_strequal(purple_status_type_get_id(status_type), id))
 			return status_type;
 	}
 
@@ -2238,9 +2236,9 @@
 	PurplePluginProtocolInfo *prpl_info = NULL;
 	PurpleConnection *gc = purple_account_get_connection(account);
 	PurplePlugin *prpl = NULL;
-	
+
 	if (gc != NULL)
-	        prpl = purple_connection_get_prpl(gc);      
+	        prpl = purple_connection_get_prpl(gc);
 
 	if (prpl != NULL)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -2255,20 +2253,20 @@
 	PurplePluginProtocolInfo *prpl_info = NULL;
 	PurpleConnection *gc = purple_account_get_connection(account);
 	PurplePlugin *prpl = NULL;
-	
+
 	if (gc != NULL)
-	        prpl = purple_connection_get_prpl(gc);      
+	        prpl = purple_connection_get_prpl(gc);
 
 	if (prpl != NULL)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-		
+
 	if (prpl_info) {
 		GList *cur, *groups = NULL;
 
 		/* Make a list of what group each buddy is in */
 		for (cur = buddies; cur != NULL; cur = cur->next) {
-			PurpleBlistNode *node = cur->data;
-			groups = g_list_append(groups, node->parent->parent);
+			PurpleBuddy *buddy = cur->data;
+			groups = g_list_append(groups, purple_buddy_get_group(buddy));
 		}
 
 		if (prpl_info->add_buddies != NULL)
@@ -2294,13 +2292,13 @@
 	PurplePluginProtocolInfo *prpl_info = NULL;
 	PurpleConnection *gc = purple_account_get_connection(account);
 	PurplePlugin *prpl = NULL;
-	
+
 	if (gc != NULL)
-	        prpl = purple_connection_get_prpl(gc);      
+	        prpl = purple_connection_get_prpl(gc);
 
 	if (prpl != NULL)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-		
+
 	if (prpl_info && prpl_info->remove_buddy)
 		prpl_info->remove_buddy(gc, buddy, group);
 }
@@ -2311,13 +2309,13 @@
 	PurplePluginProtocolInfo *prpl_info = NULL;
 	PurpleConnection *gc = purple_account_get_connection(account);
 	PurplePlugin *prpl = NULL;
-	
+
 	if (gc != NULL)
-	        prpl = purple_connection_get_prpl(gc);      
+	        prpl = purple_connection_get_prpl(gc);
 
 	if (prpl != NULL)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-		
+
 	if (prpl_info) {
 		if (prpl_info->remove_buddies)
 			prpl_info->remove_buddies(gc, buddies, groups);
@@ -2339,9 +2337,9 @@
 	PurplePluginProtocolInfo *prpl_info = NULL;
 	PurpleConnection *gc = purple_account_get_connection(account);
 	PurplePlugin *prpl = NULL;
-	
+
 	if (gc != NULL)
-	        prpl = purple_connection_get_prpl(gc);      
+	        prpl = purple_connection_get_prpl(gc);
 
 	if (prpl != NULL)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -2357,11 +2355,11 @@
 	PurplePluginProtocolInfo *prpl_info = NULL;
 	PurpleConnection *gc = purple_account_get_connection(account);
 	PurplePlugin *prpl = NULL;
-	
+
 	purple_account_set_password(account, new_pw);
-	
+
 	if (gc != NULL)
-	        prpl = purple_connection_get_prpl(gc);      
+	        prpl = purple_connection_get_prpl(gc);
 
 	if (prpl != NULL)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -2375,15 +2373,15 @@
 	PurpleConnection *gc;
 	PurplePluginProtocolInfo *prpl_info = NULL;
 	PurplePlugin *prpl = NULL;
-	
+
 	g_return_val_if_fail(account, FALSE);
 	g_return_val_if_fail(buddy, FALSE);
 
 	gc = purple_account_get_connection(account);
 	if (gc == NULL)
 		return FALSE;
-	
-	prpl = purple_connection_get_prpl(gc);      
+
+	prpl = purple_connection_get_prpl(gc);
 
 	if (prpl != NULL)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
@@ -2518,23 +2516,26 @@
 	purple_accounts_remove(account);
 
 	/* Remove this account's buddies */
-	for (gnode = purple_blist_get_root(); gnode != NULL; gnode = gnode->next) {
+	for (gnode = purple_blist_get_root();
+	     gnode != NULL;
+		 gnode = purple_blist_node_get_sibling_next(gnode))
+	{
 		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
 
-		cnode = gnode->child;
+		cnode = purple_blist_node_get_first_child(gnode);
 		while (cnode) {
-			PurpleBlistNode *cnode_next = cnode->next;
+			PurpleBlistNode *cnode_next = purple_blist_node_get_sibling_next(cnode);
 
 			if(PURPLE_BLIST_NODE_IS_CONTACT(cnode)) {
-				bnode = cnode->child;
+				bnode = purple_blist_node_get_first_child(cnode);
 				while (bnode) {
-					PurpleBlistNode *bnode_next = bnode->next;
+					PurpleBlistNode *bnode_next = purple_blist_node_get_sibling_next(bnode);
 
 					if (PURPLE_BLIST_NODE_IS_BUDDY(bnode)) {
 						PurpleBuddy *b = (PurpleBuddy *)bnode;
 
-						if (b->account == account)
+						if (purple_buddy_get_account(b) == account)
 							purple_blist_remove_buddy(b);
 					}
 					bnode = bnode_next;
@@ -2542,7 +2543,7 @@
 			} else if (PURPLE_BLIST_NODE_IS_CHAT(cnode)) {
 				PurpleChat *c = (PurpleChat *)cnode;
 
-				if (c->account == account)
+				if (purple_chat_get_account(c) == account)
 					purple_blist_remove_chat(c);
 			}
 			cnode = cnode_next;
@@ -2633,11 +2634,11 @@
 
 	for (l = purple_accounts_get_all(); l != NULL; l = l->next) {
 		account = (PurpleAccount *)l->data;
-		if (protocol_id && strcmp(account->protocol_id, protocol_id))
+		if (protocol_id && !purple_strequal(account->protocol_id, protocol_id))
 		  continue;
 
 		who = g_strdup(purple_normalize(account, name));
-		if (!strcmp(purple_normalize(account, purple_account_get_username(account)), who)) {
+		if (purple_strequal(purple_normalize(account, purple_account_get_username(account)), who)) {
 			g_free(who);
 			return account;
 		}
--- a/libpurple/account.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/account.h	Wed Mar 04 16:52:47 2009 +0000
@@ -260,7 +260,7 @@
  * Notifies the user that a remote user has wants to add the local user
  * to his or her buddy list and requires authorization to do so.
  *
- * This will present a dialog informing the user of this and ask if the 
+ * This will present a dialog informing the user of this and ask if the
  * user authorizes or denies the remote user from adding him.
  *
  * @param account      The account that was added
--- a/libpurple/blist.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/blist.c	Wed Mar 04 16:52:47 2009 +0000
@@ -82,7 +82,7 @@
 
 static guint _purple_blist_hbuddy_equal(struct _purple_hbuddy *hb1, struct _purple_hbuddy *hb2)
 {
-	return ((!strcmp(hb1->name, hb2->name)) && hb1->account == hb2->account && hb1->group == hb2->group);
+	return (purple_strequal(hb1->name, hb2->name) && hb1->account == hb2->account && hb1->group == hb2->group);
 }
 
 static void _purple_blist_hbuddy_free_key(struct _purple_hbuddy *hb)
@@ -382,11 +382,11 @@
 	if (!value)
 		return;
 
-	if (!type || !strcmp(type, "string"))
+	if (!type || purple_strequal(type, "string"))
 		purple_blist_node_set_string(node, name, value);
-	else if (!strcmp(type, "bool"))
+	else if (purple_strequal(type, "bool"))
 		purple_blist_node_set_bool(node, name, atoi(value));
-	else if (!strcmp(type, "int"))
+	else if (purple_strequal(type, "int"))
 		purple_blist_node_set_int(node, name, atoi(value));
 
 	g_free(value);
@@ -453,9 +453,9 @@
 	for (x = cnode->child; x; x = x->next) {
 		if (x->type != XMLNODE_TYPE_TAG)
 			continue;
-		if (!strcmp(x->name, "buddy"))
+		if (purple_strequal(x->name, "buddy"))
 			parse_buddy(group, contact, x);
-		else if (!strcmp(x->name, "setting"))
+		else if (purple_strequal(x->name, "setting"))
 			parse_setting((PurpleBlistNode*)contact, x);
 	}
 
@@ -528,12 +528,12 @@
 	for (cnode = groupnode->child; cnode; cnode = cnode->next) {
 		if (cnode->type != XMLNODE_TYPE_TAG)
 			continue;
-		if (!strcmp(cnode->name, "setting"))
+		if (purple_strequal(cnode->name, "setting"))
 			parse_setting((PurpleBlistNode*)group, cnode);
-		else if (!strcmp(cnode->name, "contact") ||
-				!strcmp(cnode->name, "person"))
+		else if (purple_strequal(cnode->name, "contact") ||
+				purple_strequal(cnode->name, "person"))
 			parse_contact(group, cnode);
-		else if (!strcmp(cnode->name, "chat"))
+		else if (purple_strequal(cnode->name, "chat"))
 			parse_chat(group, cnode);
 	}
 }
@@ -590,11 +590,11 @@
 				if (x->type != XMLNODE_TYPE_TAG)
 					continue;
 
-				if (!strcmp(x->name, "permit")) {
+				if (purple_strequal(x->name, "permit")) {
 					name = xmlnode_get_data(x);
 					purple_privacy_permit_add(account, name, TRUE);
 					g_free(name);
-				} else if (!strcmp(x->name, "block")) {
+				} else if (purple_strequal(x->name, "block")) {
 					name = xmlnode_get_data(x);
 					purple_privacy_deny_add(account, name, TRUE);
 					g_free(name);
@@ -699,6 +699,24 @@
 	return purplebuddylist ? purplebuddylist->root : NULL;
 }
 
+GHashTable *
+purple_blist_get_buddies()
+{
+	return purplebuddylist ? purplebuddylist->buddies : NULL;
+}
+
+void *
+purple_blist_get_ui_data()
+{
+	return purplebuddylist->ui_data;
+}
+
+void
+purple_blist_set_ui_data(void *ui_data)
+{
+	purplebuddylist->ui_data = ui_data;
+}
+
 void purple_blist_show()
 {
 	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
@@ -774,12 +792,28 @@
 	return node? node->prev : NULL;
 }
 
+void *
+purple_blist_node_get_ui_data(const PurpleBlistNode *node)
+{
+	g_return_val_if_fail(node, NULL);
+
+	return node->ui_data;
+}
+
+void
+purple_blist_node_set_ui_data(PurpleBlistNode *node, void *ui_data) {
+	g_return_if_fail(node);
+
+	node->ui_data = ui_data;
+}
+
 void
 purple_blist_update_buddy_status(PurpleBuddy *buddy, PurpleStatus *old_status)
 {
 	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
 	PurplePresence *presence;
 	PurpleStatus *status;
+	PurpleBlistNode *cnode;
 
 	g_return_if_fail(buddy != NULL);
 
@@ -794,16 +828,18 @@
 
 		purple_signal_emit(purple_blist_get_handle(), "buddy-signed-on", buddy);
 
-		((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online++;
-		if (((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online == 1)
-			((PurpleGroup *)((PurpleBlistNode *)buddy)->parent->parent)->online++;
+		cnode = buddy->node.parent;
+		if (++(PURPLE_CONTACT(cnode)->online) == 1)
+			PURPLE_GROUP(cnode->parent)->online++;
 	} else if (!purple_status_is_online(status) &&
 				purple_status_is_online(old_status)) {
+
 		purple_blist_node_set_int(&buddy->node, "last_seen", time(NULL));
 		purple_signal_emit(purple_blist_get_handle(), "buddy-signed-off", buddy);
-		((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online--;
-		if (((PurpleContact*)((PurpleBlistNode*)buddy)->parent)->online == 0)
-			((PurpleGroup *)((PurpleBlistNode *)buddy)->parent->parent)->online--;
+
+		cnode = buddy->node.parent;
+		if (--(PURPLE_CONTACT(cnode)->online) == 0)
+			PURPLE_GROUP(cnode->parent)->online--;
 	} else {
 		purple_signal_emit(purple_blist_get_handle(),
 		                 "buddy-status-changed", buddy, old_status,
@@ -1025,7 +1061,7 @@
 	g_return_if_fail(source != NULL);
 	g_return_if_fail(new_name != NULL);
 
-	if (*new_name == '\0' || !strcmp(new_name, source->name))
+	if (*new_name == '\0' || purple_strequal(new_name, source->name))
 		return;
 
 	dest = purple_find_group(new_name);
@@ -1092,7 +1128,7 @@
 
 	/* Notify all PRPLs */
 	/* TODO: Is this condition needed?  Seems like it would always be TRUE */
-	if(old_name && source && strcmp(source->name, old_name)) {
+	if(old_name && purple_strequal(source->name, old_name)) {
 		for (accts = purple_group_get_accounts(source); accts; accts = g_slist_remove(accts, accts->data)) {
 			PurpleAccount *account = accts->data;
 			PurpleConnection *gc = NULL;
@@ -1101,7 +1137,7 @@
 			GList *l = NULL, *buddies = NULL;
 
 			gc = purple_account_get_connection(account);
-			
+
 			if(gc)
 				prpl = purple_connection_get_prpl(gc);
 
@@ -1166,17 +1202,17 @@
 	return chat;
 }
 
-PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *screenname, const char *alias)
+PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *name, const char *alias)
 {
 	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
 	PurpleBuddy *buddy;
 
 	g_return_val_if_fail(account != NULL, FALSE);
-	g_return_val_if_fail(screenname != NULL, FALSE);
+	g_return_val_if_fail(name != NULL, FALSE);
 
 	buddy = g_new0(PurpleBuddy, 1);
 	buddy->account  = account;
-	buddy->name     = g_strdup(screenname);
+	buddy->name     = g_strdup(name);
 	buddy->alias    = g_strdup(alias);
 	buddy->presence = purple_presence_new_for_buddy(buddy);
 	((PurpleBlistNode *)buddy)->type = PURPLE_BLIST_BUDDY_NODE;
@@ -1232,6 +1268,23 @@
 	return buddy->icon;
 }
 
+gpointer
+purple_buddy_get_protocol_data(const PurpleBuddy *buddy)
+{
+	g_return_val_if_fail(buddy != NULL, NULL);
+
+	return buddy->proto_data;
+}
+
+void
+purple_buddy_set_protocol_data(PurpleBuddy *buddy, gpointer data)
+{
+	g_return_if_fail(buddy != NULL);
+
+	buddy->proto_data = data;
+}
+
+
 void purple_blist_add_chat(PurpleChat *chat, PurpleGroup *group, PurpleBlistNode *node)
 {
 	PurpleBlistNode *cnode = (PurpleBlistNode*)chat;
@@ -1339,7 +1392,7 @@
 		g = (PurpleGroup*)node->parent->parent;
 	} else if (contact) {
 		c = contact;
-		g = (PurpleGroup *)((PurpleBlistNode *)c)->parent;
+		g = PURPLE_GROUP(PURPLE_BLIST_NODE(c)->parent);
 	} else {
 		g = group;
 		if (g == NULL)
@@ -1421,16 +1474,14 @@
 	}
 
 	if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
-		((PurpleContact*)bnode->parent)->online++;
-		if (((PurpleContact*)bnode->parent)->online == 1)
-			((PurpleGroup*)bnode->parent->parent)->online++;
+		if (++(PURPLE_CONTACT(bnode->parent)->online) == 1)
+			PURPLE_GROUP(bnode->parent->parent)->online++;
 	}
 	if (purple_account_is_connected(buddy->account)) {
-		((PurpleContact*)bnode->parent)->currentsize++;
-		if (((PurpleContact*)bnode->parent)->currentsize == 1)
-			((PurpleGroup*)bnode->parent->parent)->currentsize++;
+		if (++(PURPLE_CONTACT(bnode->parent)->currentsize) == 1)
+			PURPLE_GROUP(bnode->parent->parent)->currentsize++;
 	}
-	((PurpleContact*)bnode->parent)->totalsize++;
+	PURPLE_CONTACT(bnode->parent)->totalsize++;
 
 	hb = g_new(struct _purple_hbuddy, 1);
 	hb->name = g_strdup(purple_normalize(buddy->account, buddy->name));
@@ -1546,7 +1597,7 @@
 	g_return_if_fail(contact != NULL);
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CONTACT((PurpleBlistNode*)contact));
 
-	if ((PurpleBlistNode*)contact == node)
+	if (PURPLE_BLIST_NODE(contact) == node)
 		return;
 
 	if (node && (PURPLE_BLIST_NODE_IS_CONTACT(node) ||
@@ -2056,6 +2107,12 @@
 	return buddy->name;
 }
 
+const char *purple_buddy_get_local_buddy_alias(PurpleBuddy *buddy)
+{
+	g_return_val_if_fail(buddy, NULL);
+	return buddy->alias;
+}
+
 const char *purple_buddy_get_server_alias(PurpleBuddy *buddy)
 {
         g_return_val_if_fail(buddy != NULL, NULL);
@@ -2300,7 +2357,7 @@
 {
 	g_return_val_if_fail(buddy != NULL, NULL);
 
-	return (PurpleContact*)((PurpleBlistNode*)buddy)->parent;
+	return PURPLE_CONTACT(PURPLE_BLIST_NODE(buddy)->parent);
 }
 
 PurplePresence *purple_buddy_get_presence(const PurpleBuddy *buddy)
--- a/libpurple/blist.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/blist.h	Wed Mar 04 16:52:47 2009 +0000
@@ -75,12 +75,37 @@
 
 } PurpleBlistNodeFlags;
 
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_BLIST_NODE(obj) ((PurpleBlistNode *)(obj))
+
 #define PURPLE_BLIST_NODE_HAS_FLAG(b, f) (purple_blist_node_get_flags((PurpleBlistNode*)(b)) & (f))
 #define PURPLE_BLIST_NODE_SHOULD_SAVE(b) (! PURPLE_BLIST_NODE_HAS_FLAG(b, PURPLE_BLIST_NODE_FLAG_NO_SAVE))
 
 #define PURPLE_BLIST_NODE_NAME(n) (purple_blist_node_get_type(n) == PURPLE_BLIST_CHAT_NODE  ? purple_chat_get_name((PurpleChat*)n) :        \
 				     purple_blist_node_get_type(n) == PURPLE_BLIST_BUDDY_NODE ? purple_buddy_get_name((PurpleBuddy*)n) : NULL)
 
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_GROUP(obj) ((PurpleGroup *)(obj))
+
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_CONTACT(obj) ((PurpleContact *)(obj))
+
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_BUDDY(obj) ((PurpleBuddy *)(obj))
+
+/**
+ * @since 2.6.0
+ */
+#define PURPLE_CHAT(obj) ((PurpleChat *)(obj))
+
 #include "account.h"
 #include "buddyicon.h"
 #include "status.h"
@@ -111,7 +136,7 @@
  */
 struct _PurpleBuddy {
 	PurpleBlistNode node;                     /**< The node that this buddy inherits from */
-	char *name;                             /**< The screenname of the buddy. */
+	char *name;                             /**< The name of the buddy. */
 	char *alias;                            /**< The user-set alias of the buddy */
 	char *server_alias;                     /**< The server-specified alias of the buddy.  (i.e. MSN "Friendly Names") */
 	void *proto_data;                       /**< This allows the prpl to associate whatever data it wants with a buddy */
@@ -156,9 +181,6 @@
 	PurpleAccount *account; /**< The account this chat is attached to */
 };
 
-#endif /* PURPLE_HIDE_STRUCTS && PURPLE_BLIST_STRUCTS */
-
-
 /**
  * The Buddy List
  */
@@ -168,6 +190,8 @@
 	void *ui_data;                /**< UI-specific data. */
 };
 
+#endif /* PURPLE_HIDE_STRUCTS && PURPLE_BLIST_STRUCTS */
+
 /**
  * Buddy list UI operations.
  *
@@ -236,6 +260,33 @@
 PurpleBlistNode *purple_blist_get_root(void);
 
 /**
+ * Returns the hash table of every buddy in the list.
+ *
+ * @return The hash table of every buddy in the list.
+ *
+ * @since 2.6.0
+ */
+GHashTable *purple_blist_get_buddies(void);
+
+/**
+ * Returns the UI data for the list.
+ *
+ * @return The UI data for the list.
+ *
+ * @since 2.6.0
+ */
+void *purple_blist_get_ui_data(void);
+
+/**
+ * Sets the UI data for the list.
+ *
+ * @param ui_data The UI data for the list.
+ *
+ * @since 2.6.0
+ */
+void purple_blist_set_ui_data(void *ui_data);
+
+/**
  * Returns the next node of a given node. This function is to be used to iterate
  * over the tree returned by purple_get_blist.
  *
@@ -302,6 +353,25 @@
 PurpleBlistNode *purple_blist_node_get_sibling_prev(PurpleBlistNode *node);
 
 /**
+ * Returns the UI data of a given node.
+ *
+ * @param node The node.
+ * @return The UI data.
+ * @since 2.6.0
+ */
+void *purple_blist_node_get_ui_data(const PurpleBlistNode *node);
+
+/**
+ * Sets the UI data of a given node.
+ *
+ * @param node The node.
+ * @param ui_data The UI data.
+ *
+ * @since 2.6.0
+ */
+void purple_blist_node_set_ui_data(PurpleBlistNode *node, void *ui_data);
+
+/**
  * Shows the buddy list, creating a new one if necessary.
  */
 void purple_blist_show(void);
@@ -331,6 +401,7 @@
  * 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);
@@ -423,11 +494,11 @@
  * Creates a new buddy
  *
  * @param account    The account this buddy will get added to
- * @param screenname The screenname of the new buddy
+ * @param name       The name of the new buddy
  * @param alias      The alias of the new buddy (or NULL if unaliased)
  * @return           A newly allocated buddy
  */
-PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *screenname, const char *alias);
+PurpleBuddy *purple_buddy_new(PurpleAccount *account, const char *name, const char *alias);
 
 /**
  * Sets a buddy's icon.
@@ -470,6 +541,32 @@
 PurpleBuddyIcon *purple_buddy_get_icon(const PurpleBuddy *buddy);
 
 /**
+ * Returns a buddy's protocol-specific data.
+ *
+ * This should only be called from the associated prpl.
+ *
+ * @param buddy The buddy.
+ * @return      The protocol data.
+ *
+ * @see purple_buddy_set_protocol_data()
+ * @since 2.6.0
+ */
+gpointer purple_buddy_get_protocol_data(const PurpleBuddy *buddy);
+
+/**
+ * Sets a buddy's protocol-specific data.
+ *
+ * This should only be called from the associated prpl.
+ *
+ * @param buddy The buddy.
+ * @param data  The data.
+ *
+ * @see purple_buddy_get_protocol_data()
+ * @since 2.6.0
+ */
+void purple_buddy_set_protocol_data(PurpleBuddy *buddy, gpointer data);
+
+/**
  * Returns a buddy's contact.
  *
  * @param buddy The buddy.
@@ -659,15 +756,18 @@
  */
 const char *purple_buddy_get_contact_alias(PurpleBuddy *buddy);
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_BLIST_C_)
 /**
  * Returns the correct alias for this user, ignoring server aliases.  Used
  * when a user-recognizable name is required.  In order: buddy's alias; buddy's
  * contact alias; buddy's user name.
- * 
+ *
  * @param buddy  The buddy whose alias will be returned.
  * @return       The appropriate name or alias.
+ * @deprecated   Try purple_buddy_get_alias(), if server aliases are okay.
  */
 const char *purple_buddy_get_local_alias(PurpleBuddy *buddy);
+#endif
 
 /**
  * Returns the correct name to display for a buddy. In order of precedence:
@@ -680,6 +780,16 @@
 const char *purple_buddy_get_alias(PurpleBuddy *buddy);
 
 /**
+ * Returns the local alias for the buddy, or @c NULL if none exists.
+ *
+ * @param buddy  The buddy
+ * @return       The local alias for the buddy
+ *
+ * @since 2.6.0
+ */
+const char *purple_buddy_get_local_buddy_alias(PurpleBuddy *buddy);
+
+/**
  * Returns the correct name to display for a blist chat.
  *
  * @param chat   The chat whose name will be returned.
@@ -688,19 +798,19 @@
 const char *purple_chat_get_name(PurpleChat *chat);
 
 /**
- * Finds the buddy struct given a screenname and an account
+ * Finds the buddy struct given a name and an account
  *
  * @param account The account this buddy belongs to
- * @param name    The buddy's screenname
+ * @param name    The buddy's name
  * @return        The buddy or NULL if the buddy does not exist
  */
 PurpleBuddy *purple_find_buddy(PurpleAccount *account, const char *name);
 
 /**
- * Finds the buddy struct given a screenname, an account, and a group
+ * Finds the buddy struct given a name, an account, and a group
  *
  * @param account The account this buddy belongs to
- * @param name    The buddy's screenname
+ * @param name    The buddy's name
  * @param group   The group to look in
  * @return        The buddy or NULL if the buddy does not exist in the group
  */
@@ -708,10 +818,10 @@
 		PurpleGroup *group);
 
 /**
- * Finds all PurpleBuddy structs given a screenname and an account
+ * Finds all PurpleBuddy structs given a name and an account
  *
  * @param account The account this buddy belongs to
- * @param name    The buddy's screenname (or NULL to return all buddies in the account)
+ * @param name    The buddy's name (or NULL to return all buddies in the account)
  *
  * @return        A GSList of buddies (which must be freed), or NULL if the buddy doesn't exist
  */
@@ -751,6 +861,7 @@
  * @param chat  The chat.
  *
  * @return  The account the chat belongs to.
+ *
  * @since 2.4.0
  */
 PurpleAccount *purple_chat_get_account(PurpleChat *chat);
@@ -761,6 +872,7 @@
  * @param chat  The chat.
  *
  * @constreturn  The hashtable.
+ *
  * @since 2.4.0
  */
 GHashTable *purple_chat_get_components(PurpleChat *chat);
@@ -979,6 +1091,7 @@
  * @param node The node.
  *
  * @return The type of the node.
+ *
  * @since 2.1.0
  */
 PurpleBlistNodeType purple_blist_node_get_type(PurpleBlistNode *node);
--- a/libpurple/buddyicon.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/buddyicon.c	Wed Mar 04 16:52:47 2009 +0000
@@ -153,7 +153,7 @@
 {
 	const char *dirname;
 	char *path;
-	
+
 	g_return_if_fail(img != NULL);
 
 	if (!purple_buddy_icons_is_caching())
@@ -175,7 +175,7 @@
 	}
 
 	purple_util_write_data_to_file_absolute(path, purple_imgstore_get_data(img),
-											purple_imgstore_get_size(img));	
+											purple_imgstore_get_size(img));
 	g_free(path);
 }
 
@@ -453,7 +453,7 @@
 
 	if (conv != NULL)
 		purple_conv_im_set_icon(PURPLE_CONV_IM(conv), icon_to_set);
-	
+
 	/* icon's refcount was incremented above */
 	if (icon) purple_buddy_icon_unref(icon);
 }
@@ -757,7 +757,7 @@
 		g_hash_table_insert(pointer_icon_cache, account, img);
 	else
 		g_hash_table_remove(pointer_icon_cache, account);
-	
+
 	if (purple_account_is_connected(account))
 	{
 		PurpleConnection *gc;
@@ -889,7 +889,9 @@
 
 	if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
 		PurpleBlistNode *child;
-		for (child = node->child ; child ; child = child->next)
+		for (child = purple_blist_node_get_first_child(node);
+		     child;
+			 child = purple_blist_node_get_sibling_next(child))
 		{
 			PurpleBuddy *buddy;
 			PurpleConversation *conv;
@@ -986,7 +988,7 @@
 {
 	purple_blist_node_remove_setting(node, setting_name);
 
-	if (!strcmp(setting_name, "buddy_icon"))
+	if (purple_strequal(setting_name, "buddy_icon"))
 	{
 		purple_blist_node_remove_setting(node, "avatar_hash");
 		purple_blist_node_remove_setting(node, "icon_checksum");
@@ -1083,7 +1085,7 @@
 
 		g_free(new_filename);
 
-		if (!strcmp(setting_name, "buddy_icon"))
+		if (purple_strequal(setting_name, "buddy_icon"))
 		{
 			const char *hash;
 
@@ -1098,7 +1100,7 @@
 				PurpleAccount *account = purple_buddy_get_account((PurpleBuddy *)node);
 				const char *prpl_id = purple_account_get_protocol_id(account);
 
-				if (!strcmp(prpl_id, "prpl-yahoo"))
+				if (purple_strequal(prpl_id, "prpl-yahoo"))
 				{
 					int checksum = purple_blist_node_get_int(node, "icon_checksum");
 					if (checksum != 0)
--- a/libpurple/certificate.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/certificate.c	Wed Mar 04 16:52:47 2009 +0000
@@ -51,7 +51,7 @@
 {
 	PurpleCertificateVerificationRequest *vrq;
 	PurpleCertificateScheme *scheme;
-	
+
 	g_return_if_fail(subject_name != NULL);
 	/* If you don't have a cert to check, why are you requesting that it
 	   be verified? */
@@ -97,10 +97,10 @@
 				  "Failed to verify certificate for %s\n",
 				  vrq->subject_name);
 	}
-		
-		
-		
-	
+
+
+
+
 	/* Pass the results on to the request's callback */
 	(vrq->cb)(st, vrq->cb_data);
 
@@ -154,7 +154,7 @@
 purple_certificate_destroy (PurpleCertificate *crt)
 {
 	PurpleCertificateScheme *scheme;
-	
+
 	if (NULL == crt) return;
 
 	scheme = crt->scheme;
@@ -206,7 +206,7 @@
 			  "Checking signature chain for uid=%s\n",
 			  uid);
 	g_free(uid);
-	
+
 	/* If this is a single-certificate chain, say that it is valid */
 	if (chain->next == NULL) {
 		purple_debug_info("certificate",
@@ -218,9 +218,9 @@
 	crt = (PurpleCertificate *)(chain->data);
 	/* And start with the second certificate in the chain */
 	for ( cur = chain->next; cur; cur = cur->next ) {
-		
+
 		issuer = (PurpleCertificate *)(cur->data);
-		
+
 		/* Check the signature for this link */
 		if (! purple_certificate_signed_by(crt, issuer) ) {
 			uid = purple_certificate_get_unique_id(issuer);
@@ -228,7 +228,7 @@
 					  "...Bad or missing signature by %s\nChain is INVALID\n",
 					  uid);
 			g_free(uid);
-		
+
 			return FALSE;
 		}
 
@@ -237,7 +237,7 @@
 				  "...Good signature by %s\n",
 				  uid);
 		g_free(uid);
-		
+
 		/* The issuer is now the next crt whose signature is to be
 		   checked */
 		crt = issuer;
@@ -283,7 +283,7 @@
 	g_return_val_if_fail(crt->scheme, NULL);
 
 	scheme = crt->scheme;
-	
+
 	g_return_val_if_fail(scheme->get_fingerprint_sha1, NULL);
 
 	fpr = (scheme->get_fingerprint_sha1)(crt);
@@ -354,7 +354,7 @@
 	g_return_val_if_fail(crt, FALSE);
 
 	scheme = crt->scheme;
-	
+
 	g_return_val_if_fail(scheme, FALSE);
 
 	/* If both provided references are NULL, what are you doing calling
@@ -371,7 +371,7 @@
 {
 	gchar *path;
 	gchar *esc_scheme_name, *esc_name, *esc_id;
-	
+
 	g_return_val_if_fail(pool, NULL);
 	g_return_val_if_fail(pool->scheme_name, NULL);
 	g_return_val_if_fail(pool->name, NULL);
@@ -380,7 +380,7 @@
 	esc_scheme_name = pool ? g_strdup(purple_escape_filename(pool->scheme_name)) : NULL;
 	esc_name = pool ? g_strdup(purple_escape_filename(pool->name)) : NULL;
 	esc_id = id ? g_strdup(purple_escape_filename(id)) : NULL;
-	
+
 	path = g_build_filename(purple_user_dir(),
 				"certificates", /* TODO: constantize this? */
 				esc_scheme_name,
@@ -404,7 +404,7 @@
 	if (purple_certificate_find_scheme(pool->scheme_name) == NULL) {
 		return FALSE;
 	}
-	
+
 	return TRUE;
 }
 
@@ -441,7 +441,7 @@
 purple_certificate_pool_store(PurpleCertificatePool *pool, const gchar *id, PurpleCertificate *crt)
 {
 	gboolean ret = FALSE;
-	
+
 	g_return_val_if_fail(pool, FALSE);
 	g_return_val_if_fail(id, FALSE);
 	g_return_val_if_fail(pool->put_cert, FALSE);
@@ -461,13 +461,13 @@
 	}
 
 	return ret;
-}	
+}
 
 gboolean
 purple_certificate_pool_delete(PurpleCertificatePool *pool, const gchar *id)
 {
 	gboolean ret = FALSE;
-	
+
 	g_return_val_if_fail(pool, FALSE);
 	g_return_val_if_fail(id, FALSE);
 	g_return_val_if_fail(pool->delete_cert, FALSE);
@@ -496,7 +496,7 @@
 purple_certificate_pool_destroy_idlist(GList *idlist)
 {
 	GList *l;
-	
+
 	/* Iterate through and free them strings */
 	for ( l = idlist; l; l = l->next ) {
 		g_free(l->data);
@@ -520,7 +520,7 @@
 			  vrq->subject_name, id);
 
 	/* Signal what happened back to the caller */
-	if (1 == id) {		
+	if (1 == id) {
 		/* Accepted! */
 		purple_certificate_verify_complete(vrq,
 						   PURPLE_CERTIFICATE_VALID);
@@ -557,11 +557,11 @@
 	} else {
 		cn_match = _("(DOES NOT MATCH)");
 	}
-	
+
 	/* Make messages */
 	primary = g_strdup_printf(_("%s has presented the following certificate for just-this-once use:"), vrq->subject_name);
 	secondary = g_strdup_printf(_("Common name: %s %s\nFingerprint (SHA1): %s"), cn, cn_match, sha_asc);
-	
+
 	/* Make a semi-pretty display */
 	purple_request_accept_cancel(
 		vrq->cb_data, /* TODO: Find what the handle ought to be */
@@ -575,7 +575,7 @@
 		vrq,
 		x509_singleuse_verify_cb,
 		x509_singleuse_verify_cb );
-	
+
 	/* Cleanup */
 	g_free(primary);
 	g_free(secondary);
@@ -644,13 +644,13 @@
 
 	/* lazy_init calls this function, so calling lazy_init here is a
 	   Bad Thing */
-	
+
 	g_return_val_if_fail(crt, FALSE);
 	g_return_val_if_fail(crt->scheme, FALSE);
 	/* Make sure that this is some kind of X.509 certificate */
 	/* TODO: Perhaps just check crt->scheme->name instead? */
 	g_return_val_if_fail(crt->scheme == purple_certificate_find_scheme(x509_ca.scheme_name), FALSE);
-	
+
 	el = g_new0(x509_ca_element, 1);
 	el->dn = purple_certificate_get_unique_id(crt);
 	el->crt = purple_certificate_copy(crt);
@@ -675,7 +675,7 @@
 	const gchar *entry;
 	GPatternSpec *pempat;
 	GList *iter = NULL;
-	
+
 	if (x509_ca_initialized) return TRUE;
 
 	/* Check that X.509 is registered */
@@ -791,7 +791,7 @@
 
 	for (cur = lst; cur; cur = cur->next) {
 		x509_ca_element *el = cur->data;
-		if (el->dn && !strcmp(dn, el->dn)) {
+		if (purple_strequal(dn, el->dn)) {
 			return el;
 		}
 	}
@@ -832,7 +832,7 @@
 	} else {
 		crt = NULL;
 	}
-	
+
 	return crt;
 }
 
@@ -840,7 +840,7 @@
 x509_ca_put_cert(const gchar *id, PurpleCertificate *crt)
 {
 	gboolean ret = FALSE;
-	
+
 	g_return_val_if_fail(x509_ca_lazy_init(), FALSE);
 
 	/* TODO: This is a quick way of doing this. At some point the change
@@ -854,7 +854,7 @@
 x509_ca_delete_cert(const gchar *id)
 {
 	x509_ca_element *el;
-	
+
 	g_return_val_if_fail(x509_ca_lazy_init(), FALSE);
 	g_return_val_if_fail(id, FALSE);
 
@@ -870,7 +870,7 @@
 	/* Unlink it from the memory cache and destroy it */
 	x509_ca_certs = g_list_remove(x509_ca_certs, el);
 	x509_ca_element_free(el);
-	
+
 	return TRUE;
 }
 
@@ -878,7 +878,7 @@
 x509_ca_get_idlist(void)
 {
 	GList *l, *idlist;
-	
+
 	g_return_val_if_fail(x509_ca_lazy_init(), NULL);
 
 	idlist = NULL;
@@ -886,7 +886,7 @@
 		x509_ca_element *el = l->data;
 		idlist = g_list_prepend(idlist, g_strdup(el->dn));
 	}
-	
+
 	return idlist;
 }
 
@@ -921,7 +921,7 @@
 {
 	gchar *poolpath;
 	int ret;
-	
+
 	/* Set up key cache here if it isn't already done */
 	poolpath = purple_certificate_pool_mkpath(&x509_tls_peers, NULL);
 	ret = purple_build_dir(poolpath, 0700); /* Make it this user only */
@@ -937,13 +937,13 @@
 {
 	gchar *keypath;
 	gboolean ret = FALSE;
-	
+
 	g_return_val_if_fail(id, FALSE);
 
 	keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id);
 
 	ret = g_file_test(keypath, G_FILE_TEST_IS_REGULAR);
-	
+
 	g_free(keypath);
 	return ret;
 }
@@ -954,14 +954,14 @@
 	PurpleCertificateScheme *x509;
 	PurpleCertificate *crt;
 	gchar *keypath;
-	
+
 	g_return_val_if_fail(id, NULL);
 
 	/* Is it in the pool? */
 	if ( !x509_tls_peers_cert_in_pool(id) ) {
 		return NULL;
 	}
-	
+
 	/* Look up the X.509 scheme */
 	x509 = purple_certificate_find_scheme("x509");
 	g_return_val_if_fail(x509, NULL);
@@ -990,7 +990,7 @@
 	/* Work out the filename and export */
 	keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id);
 	ret = purple_certificate_export(keypath, crt);
-	
+
 	g_free(keypath);
 	return ret;
 }
@@ -1012,7 +1012,7 @@
 	}
 
 	/* OK, so work out the keypath and delete the thing */
-	keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id);	
+	keypath = purple_certificate_pool_mkpath(&x509_tls_peers, id);
 	if ( unlink(keypath) != 0 ) {
 		purple_debug_error("certificate/tls_peers",
 				   "Unlink of %s failed!\n",
@@ -1047,7 +1047,7 @@
 	while ( (entry = g_dir_read_name(dir)) != NULL ) {
 		/* Unescape the filename */
 		const char *unescaped = purple_unescape_filename(entry);
-		
+
 		/* Copy the entry name into our list (GLib owns the original
 		   string) */
 		idlist = g_list_prepend(idlist, g_strdup(unescaped));
@@ -1055,7 +1055,7 @@
 
 	/* Release the directory */
 	g_dir_close(dir);
-	
+
 	return idlist;
 }
 
@@ -1143,7 +1143,7 @@
 
 	g_return_if_fail(c);
 	g_return_if_fail(c->vrq);
-	
+
 	vrq = c->vrq;
 
 	x509_tls_cached_ua_ctx_free(c);
@@ -1155,7 +1155,7 @@
 		purple_debug_info("certificate/x509/tls_cached",
 				  "User ACCEPTED cert\nCaching first in chain for future use as %s...\n",
 				  cache_id);
-		
+
 		purple_certificate_pool_store(tls_peers, cache_id,
 					      vrq->cert_chain->data);
 
@@ -1195,7 +1195,7 @@
 	/* Make messages */
 	primary = g_strdup_printf(_("Accept certificate for %s?"),
 				  vrq->subject_name);
-		
+
 	/* Make a semi-pretty display */
 	purple_request_action(
 		vrq->cb_data, /* TODO: Find what the handle ought to be */
@@ -1211,7 +1211,7 @@
 		_("Accept"), x509_tls_cached_user_auth_accept_cb,
 		_("Reject"),  x509_tls_cached_user_auth_reject_cb,
 		_("_View Certificate..."), x509_tls_cached_show_cert);
-	
+
 	/* Cleanup */
 	g_free(primary);
 }
@@ -1225,7 +1225,7 @@
 			  "Certificate for %s does not match cached. "
 			  "Auto-rejecting!\n",
 			  vrq->subject_name);
-	
+
 	purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_INVALID);
 	return;
 }
@@ -1245,7 +1245,7 @@
 	/* The peer's certificate should be the first in the list */
 	PurpleCertificate *peer_crt =
 		(PurpleCertificate *) vrq->cert_chain->data;
-	
+
 	PurpleCertificate *cached_crt;
 	GByteArray *peer_fpr, *cached_fpr;
 
@@ -1278,7 +1278,7 @@
 		/* vrq now becomes the problem of the user */
 		x509_tls_cached_unknown_peer(vrq);
 	}
-	
+
 	purple_certificate_destroy(cached_crt);
 	g_byte_array_free(peer_fpr, TRUE);
 	g_byte_array_free(cached_fpr, TRUE);
@@ -1305,7 +1305,7 @@
 	   "not self-signed" */
 	if ( purple_certificate_signed_by(peer_crt, peer_crt) ) {
 		gchar *msg;
-		
+
 		purple_debug_info("certificate/x509/tls_cached",
 				  "Certificate for %s is self-signed.\n",
 				  vrq->subject_name);
@@ -1316,13 +1316,13 @@
 					"is self-signed. It cannot be "
 					"automatically checked."),
 				      vrq->subject_name);
-				      
+
 		x509_tls_cached_user_auth(vrq,msg);
 
 		g_free(msg);
 		return;
 	} /* if (self signed) */
-	
+
 	/* Next, check that the certificate chain is valid */
 	if ( ! purple_certificate_check_signature_chain(chain) ) {
 		/* TODO: Tell the user where the chain broke? */
@@ -1390,7 +1390,7 @@
 	}
 
 	g_free(ca_id);
-	
+
 	/* Check the signature */
 	if ( !purple_certificate_signed_by(end_crt, ca_crt) ) {
 		/* TODO: If signed_by ever returns a reason, maybe mention
@@ -1406,7 +1406,7 @@
 					  "Authority from which it claims to "
 					  "have a signature."),
 					vrq->subject_name);
-		
+
 		purple_notify_error(NULL, /* TODO: Probably wrong */
 				    _("SSL Certificate Error"),
 				    _("Invalid certificate authority"
@@ -1425,7 +1425,7 @@
 						     vrq->subject_name) ) {
 		gchar *sn = purple_certificate_get_subject_name(peer_crt);
 		gchar *msg;
-		
+
 		purple_debug_info("certificate/x509/tls_cached",
 				  "Name mismatch: Certificate given for %s "
 				  "has a name of %s\n",
@@ -1441,7 +1441,7 @@
 					"connecting to the service you "
 					"believe you are."),
 				      vrq->subject_name, sn);
-				      
+
 		x509_tls_cached_user_auth(vrq,msg);
 
 		g_free(sn);
@@ -1465,7 +1465,7 @@
 				   "Unable to locate tls_peers certificate "
 				   "cache.\n");
 	}
-	
+
 	/* Whew! Done! */
 	purple_certificate_verify_complete(vrq, PURPLE_CERTIFICATE_VALID);
 }
@@ -1481,7 +1481,7 @@
 	purple_debug_info("certificate/x509/tls_cached",
 			  "Starting verify for %s\n",
 			  vrq->subject_name);
-	
+
 	tls_peers = purple_certificate_find_pool(x509_tls_cached.scheme_name,tls_peers_name);
 
 	if (!tls_peers) {
@@ -1494,7 +1494,7 @@
 		x509_tls_cached_unknown_peer(vrq);
 		return;
 	}
-	
+
 	/* Check if the peer has a certificate cached already */
 	purple_debug_info("certificate/x509/tls_cached",
 			  "Checking for cached cert...\n");
@@ -1583,7 +1583,7 @@
 			     name);
 
 	/* TODO: Signalling and such? */
-	
+
 	return NULL;
 }
 
@@ -1611,7 +1611,7 @@
 	purple_debug_info("certificate",
 			  "CertificateScheme %s registered\n",
 			  scheme->name);
-	
+
 	return TRUE;
 }
 
@@ -1664,7 +1664,7 @@
 			     scheme_name, ver_name);
 
 	/* TODO: Signalling and such? */
-	
+
 	return NULL;
 }
 
@@ -1742,7 +1742,7 @@
 			     scheme_name, pool_name);
 
 	/* TODO: Signalling and such? */
-	
+
 	return NULL;
 
 }
@@ -1830,11 +1830,11 @@
 	}
 
 	cert_pools = g_list_remove(cert_pools, pool);
-	
+
 	/* TODO: Signalling? */
 	purple_signal_unregister(pool, "certificate-stored");
 	purple_signal_unregister(pool, "certificate-deleted");
-		
+
 	purple_debug_info("certificate",
 			  "CertificatePool %s unregistered\n",
 			  pool->name);
--- a/libpurple/certificate.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/certificate.h	Wed Mar 04 16:52:47 2009 +0000
@@ -60,7 +60,7 @@
 typedef void (*PurpleCertificateVerifiedCallback)
 		(PurpleCertificateVerificationStatus st,
 		 gpointer userdata);
-							  
+
 /** A certificate instance
  *
  *  An opaque data structure representing a single certificate under some
@@ -96,7 +96,7 @@
 
 	/** Internal pool data */
 	gpointer data;
-	
+
 	/**
 	 * Set up the Pool's internal state
 	 *
@@ -249,7 +249,7 @@
 
 	/** Retrieve the certificate activation/expiration times */
 	gboolean (* get_times)(PurpleCertificate *crt, time_t *activation, time_t *expiration);
-	
+
 	void (*_purple_reserved1)(void);
 	void (*_purple_reserved2)(void);
 	void (*_purple_reserved3)(void);
@@ -276,7 +276,7 @@
 
 	/** Name of the Verifier - case insensitive */
 	gchar *name;
-	
+
 	/**
 	 * Start the verification process
 	 *
@@ -326,14 +326,14 @@
 	 * For X.509 certificates, this is the Common Name
 	 */
 	gchar *subject_name;
-	
+
 	/** List of certificates in the chain to be verified (such as that returned by purple_ssl_get_peer_certificates )
 	 *
 	 * This is most relevant for X.509 certificates used in SSL sessions.
 	 * The list order should be: certificate, issuer, issuer's issuer, etc.
 	 */
 	GList *cert_chain;
-	
+
 	/** Internal data used by the Verifier code */
 	gpointer data;
 
@@ -437,7 +437,7 @@
  *
  * @return TRUE if 'crt' has a valid signature made by 'issuer',
  *         otherwise FALSE
- * @todo Find a way to give the reason (bad signature, not the issuer, etc.) 
+ * @todo Find a way to give the reason (bad signature, not the issuer, etc.)
  */
 gboolean
 purple_certificate_signed_by(PurpleCertificate *crt, PurpleCertificate *issuer);
@@ -523,7 +523,7 @@
 /**
  * Check the subject name against that on the certificate
  * @param crt   Certificate instance
- * @param name  Name to check. 
+ * @param name  Name to check.
  * @return TRUE if it is a match, else FALSE
  */
 gboolean
--- a/libpurple/cipher.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/cipher.c	Wed Mar 04 16:52:47 2009 +0000
@@ -512,7 +512,7 @@
 }
 
 static void
-md4_append(PurpleCipherContext *context, const guchar *data, size_t len) 
+md4_append(PurpleCipherContext *context, const guchar *data, size_t len)
 {
 	struct MD4_Context *mctx = purple_cipher_context_get_data(context);
 	const guint32 avail = sizeof(mctx->block) - (mctx->byte_count & 0x3f);
@@ -551,7 +551,7 @@
 	char *p = (char *)mctx->block + offset;
 	int padding = 56 - (offset + 1);
 
-	
+
 	if(in_len<16) return FALSE;
 	if(out_len) *out_len = 16;
 	*p++ = 0x80;
@@ -659,7 +659,7 @@
 
 	hctx = purple_cipher_context_get_data(context);
 
-	if (!strcmp(name, "hash")) {
+	if (purple_strequal(name, "hash")) {
 		g_free(hctx->name);
 		if (hctx->hash)
 			purple_cipher_context_destroy(hctx->hash);
@@ -676,7 +676,7 @@
 
 	hctx = purple_cipher_context_get_data(context);
 
-	if (!strcmp(name, "hash")) {
+	if (purple_strequal(name, "hash")) {
 		return hctx->name;
 	}
 
@@ -684,7 +684,7 @@
 }
 
 static void
-hmac_append(PurpleCipherContext *context, const guchar *data, size_t len) 
+hmac_append(PurpleCipherContext *context, const guchar *data, size_t len)
 {
 	struct HMAC_Context *hctx = purple_cipher_context_get_data(context);
 
@@ -778,7 +778,7 @@
 	hmac_set_key_with_len(context, key, strlen((char *)key));
 }
 
-static size_t 
+static size_t
 hmac_get_block_size(PurpleCipherContext *context)
 {
 	struct HMAC_Context *hctx = purple_cipher_context_get_data(context);
@@ -1022,11 +1022,11 @@
  *			  16 encryption rounds.
  *			  To calculate subkeys for decryption the caller
  *    			  have to reorder the generated subkeys.
- *     
+ *
  *        rawkey:	    8 Bytes of key data
  *        subkey:	    Array of at least 32 guint32s. Will be filled
  *    		    with calculated subkeys.
- *     
+ *
  **/
 static void
 des_key_schedule (const guint8 * rawkey, guint32 * subkey)
@@ -1186,7 +1186,7 @@
 				buf,
 				output+offset,
 				0);
-	}	
+	}
 	return 0;
 }
 
@@ -1216,7 +1216,7 @@
 				buf,
 				output+offset,
 				1);
-	}	
+	}
 	return 0;
 }
 
@@ -1692,11 +1692,11 @@
 
 	ctx = purple_cipher_context_get_data(context);
 
-	if(!strcmp(name, "sizeHi")) {
+	if(purple_strequal(name, "sizeHi")) {
 		ctx->sizeHi = GPOINTER_TO_INT(value);
-	} else if(!strcmp(name, "sizeLo")) {
+	} else if(purple_strequal(name, "sizeLo")) {
 		ctx->sizeLo = GPOINTER_TO_INT(value);
-	} else if(!strcmp(name, "lenW")) {
+	} else if(purple_strequal(name, "lenW")) {
 		ctx->lenW = GPOINTER_TO_INT(value);
 	}
 }
@@ -1707,11 +1707,11 @@
 
 	ctx = purple_cipher_context_get_data(context);
 
-	if(!strcmp(name, "sizeHi")) {
+	if(purple_strequal(name, "sizeHi")) {
 		return GINT_TO_POINTER(ctx->sizeHi);
-	} else if(!strcmp(name, "sizeLo")) {
+	} else if(purple_strequal(name, "sizeLo")) {
 		return GINT_TO_POINTER(ctx->sizeLo);
-	} else if(!strcmp(name, "lenW")) {
+	} else if(purple_strequal(name, "lenW")) {
 		return GINT_TO_POINTER(ctx->lenW);
 	}
 
@@ -1942,12 +1942,12 @@
 
 	ctx = purple_cipher_context_get_data(context);
 
-	if(!strcmp(name, "key_len")) {
+	if(purple_strequal(name, "key_len")) {
 		ctx->key_len = GPOINTER_TO_INT(value);
 	}
 }
 
-static size_t 
+static size_t
 rc4_get_key_size (PurpleCipherContext *context)
 {
 	struct RC4Context *ctx;
@@ -1967,7 +1967,7 @@
 
 	ctx = purple_cipher_context_get_data(context);
 
-	if(!strcmp(name, "key_len")) {
+	if(purple_strequal(name, "key_len")) {
 		return GINT_TO_POINTER(ctx->key_len);
 	}
 
--- a/libpurple/cipher.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/cipher.h	Wed Mar 04 16:52:47 2009 +0000
@@ -422,7 +422,7 @@
 size_t purple_cipher_context_get_block_size(PurpleCipherContext *context);
 
 /**
- * Sets the key with a given length on a context 
+ * Sets the key with a given length on a context
  *
  * @param context The context whose key to set
  * @param key     The key
--- a/libpurple/circbuffer.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/circbuffer.c	Wed Mar 04 16:52:47 2009 +0000
@@ -44,7 +44,7 @@
 static void grow_circ_buffer(PurpleCircBuffer *buf, gsize len) {
 	int in_offset = 0, out_offset = 0;
 	int start_buflen;
-	
+
 	g_return_if_fail(buf != NULL);
 
 	start_buflen = buf->buflen;
@@ -94,7 +94,7 @@
 	int len_stored;
 
 	g_return_if_fail(buf != NULL);
-	
+
 	/* Grow the buffer, if necessary */
 	if ((buf->buflen - buf->bufused) < len)
 		grow_circ_buffer(buf, len);
--- a/libpurple/cmds.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/cmds.c	Wed Mar 04 16:52:47 2009 +0000
@@ -236,7 +236,7 @@
 	for (l = cmds; l; l = l->next) {
 		c = l->data;
 
-		if (strcmp(c->cmd, cmd) != 0)
+		if (!purple_strequal(c->cmd, cmd))
 			continue;
 
 		found = TRUE;
@@ -250,8 +250,8 @@
 
 		right_type = TRUE;
 
-		if ((c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id &&
-		    (strcmp(c->prpl_id, prpl_id) != 0))
+		if ((c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) &&
+		    !purple_strequal(c->prpl_id, prpl_id))
 			continue;
 
 		right_prpl = TRUE;
@@ -320,8 +320,8 @@
 			if (!(c->flags & PURPLE_CMD_FLAG_CHAT))
 				continue;
 
-		if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id &&
-		    (strcmp(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))) != 0))
+		if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) &&
+		    !purple_strequal(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))))
 			continue;
 
 		ret = g_list_append(ret, c->cmd);
@@ -342,7 +342,7 @@
 	for (l = cmds; l; l = l->next) {
 		c = l->data;
 
-		if (cmd && (strcmp(cmd, c->cmd) != 0))
+		if (cmd && !purple_strequal(cmd, c->cmd))
 			continue;
 
 		if (conv && (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM))
@@ -352,8 +352,8 @@
 			if (!(c->flags & PURPLE_CMD_FLAG_CHAT))
 				continue;
 
-		if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) && c->prpl_id &&
-		    (strcmp(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))) != 0))
+		if (conv && (c->flags & PURPLE_CMD_FLAG_PRPL_ONLY) &&
+		    !purple_strequal(c->prpl_id, purple_account_get_protocol_id(purple_conversation_get_account(conv))))
 			continue;
 
 		ret = g_list_append(ret, c->help);
--- a/libpurple/connection.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/connection.c	Wed Mar 04 16:52:47 2009 +0000
@@ -191,16 +191,16 @@
 	PurpleConnection *gc;
 	PurplePlugin *prpl;
 	PurplePluginProtocolInfo *prpl_info;
-	
+
 	g_return_if_fail(account != NULL);
-		
+
 	prpl = purple_find_prpl(purple_account_get_protocol_id(account));
-	
+
 	if (prpl != NULL)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
 	else {
 		gchar *message;
-		
+
 		message = g_strdup_printf(_("Missing protocol plugin for %s"),
 								  purple_account_get_username(account));
 		purple_notify_error(NULL, _("Unregistration Error"), message, NULL);
@@ -212,7 +212,7 @@
 		prpl_info->unregister_user(account, cb, user_data);
 		return;
 	}
-	
+
 	if (((password == NULL) || (*password == '\0')) &&
 		!(prpl_info->options & OPT_PROTO_NO_PASSWORD) &&
 		!(prpl_info->options & OPT_PROTO_PASSWORD_OPTIONAL))
@@ -221,10 +221,10 @@
 						   "a password.\n", purple_account_get_username(account));
 		return;
 	}
-	
+
 	gc = g_new0(PurpleConnection, 1);
 	PURPLE_DBUS_REGISTER_POINTER(gc, PurpleConnection);
-	
+
 	gc->prpl = prpl;
 	if ((password != NULL) && (*password != '\0'))
 		gc->password = g_strdup(password);
@@ -232,11 +232,11 @@
 	purple_connection_set_state(gc, PURPLE_CONNECTING);
 	connections = g_list_append(connections, gc);
 	purple_account_set_connection(account, gc);
-	
+
 	purple_signal_emit(purple_connections_get_handle(), "signing-on", gc);
-	
+
 	purple_debug_info("connection", "Unregistering.  gc = %p\n", gc);
-	
+
 	prpl_info->unregister_user(account, cb, user_data);
 }
 
@@ -285,7 +285,7 @@
 	buddies = purple_find_buddies(account, NULL);
 	while (buddies != NULL) {
 		PurpleBuddy *buddy = buddies->data;
-		buddy->proto_data = NULL;
+		purple_buddy_set_protocol_data(buddy, NULL);
 		buddies = g_slist_delete_link(buddies, buddies);
 	}
 
@@ -427,6 +427,13 @@
 	gc->display_name = g_strdup(name);
 }
 
+void
+purple_connection_set_protocol_data(PurpleConnection *connection, void *proto_data) {
+	g_return_if_fail(connection != NULL);
+
+	connection->proto_data = proto_data;
+}
+
 PurpleConnectionState
 purple_connection_get_state(const PurpleConnection *gc)
 {
@@ -467,6 +474,13 @@
 	return gc->display_name;
 }
 
+void *
+purple_connection_get_protocol_data(const PurpleConnection *connection) {
+	g_return_val_if_fail(connection != NULL, NULL);
+
+	return connection->proto_data;
+}
+
 void
 purple_connection_update_progress(PurpleConnection *gc, const char *text,
 								size_t step, size_t count)
--- a/libpurple/connection.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/connection.h	Wed Mar 04 16:52:47 2009 +0000
@@ -42,7 +42,7 @@
 	PURPLE_CONNECTION_FORMATTING_WBFO = 0x0008, /**< The text buffer must be formatted as a whole */
 	PURPLE_CONNECTION_NO_NEWLINES = 0x0010, /**< No new lines are allowed in outgoing messages */
 	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_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 */
 
@@ -56,7 +56,9 @@
 
 } PurpleConnectionState;
 
-/** Possible errors that can cause a connection to be closed.
+/**
+ * Possible errors that can cause a connection to be closed.
+ *
  *  @since 2.3.0
  */
 typedef enum
@@ -70,7 +72,7 @@
 	PURPLE_CONNECTION_ERROR_INVALID_USERNAME = 1,
 	/** The username, password or some other credential was incorrect.  Use
 	 *  #PURPLE_CONNECTION_ERROR_INVALID_USERNAME instead if the username
-         *  is known to be invalid.
+	 *  is known to be invalid.
 	 */
 	PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED = 2,
 	/** libpurple doesn't speak any of the authentication methods the
@@ -92,7 +94,7 @@
 	PURPLE_CONNECTION_ERROR_NAME_IN_USE = 6,
 
 	/** The username/server/other preference for the account isn't valid.
-	 *  For instance, on IRC the screen name cannot contain white space.
+	 *  For instance, on IRC the username cannot contain white space.
 	 *  This reason should not be used for incorrect passwords etc: use
 	 *  #PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED for that.
 	 *
@@ -148,71 +150,84 @@
 #include "status.h"
 #include "sslconn.h"
 
-/** Connection UI operations.  Used to notify the user of changes to
- *  connections, such as being disconnected, and to respond to the
- *  underlying network connection appearing and disappearing.  UIs should
- *  call #purple_connections_set_ui_ops() with an instance of this struct.
+/**
+ * Connection UI operations.  Used to notify the user of changes to
+ * connections, such as being disconnected, and to respond to the
+ * underlying network connection appearing and disappearing.  UIs should
+ * call #purple_connections_set_ui_ops() with an instance of this struct.
  *
- *  @see @ref ui-ops
+ * @see @ref ui-ops
  */
 typedef struct
 {
-	/** When an account is connecting, this operation is called to notify
-	 *  the UI of what is happening, as well as which @a step out of @a
-	 *  step_count has been reached (which might be displayed as a progress
-	 *  bar).
-	 *  @see #purple_connection_update_progress
+	/**
+	 * When an account is connecting, this operation is called to notify
+	 * the UI of what is happening, as well as which @a step out of @a
+	 * step_count has been reached (which might be displayed as a progress
+	 * bar).
+	 * @see #purple_connection_update_progress
 	 */
 	void (*connect_progress)(PurpleConnection *gc,
 	                         const char *text,
 	                         size_t step,
 	                         size_t step_count);
 
-	/** Called when a connection is established (just before the
-	 *  @ref signed-on signal).
+	/**
+	 * Called when a connection is established (just before the
+	 * @ref signed-on signal).
 	 */
 	void (*connected)(PurpleConnection *gc);
-	/** Called when a connection is ended (between the @ref signing-off
-	 *  and @ref signed-off signals).
+
+	/**
+	 * Called when a connection is ended (between the @ref signing-off
+	 * and @ref signed-off signals).
 	 */
 	void (*disconnected)(PurpleConnection *gc);
 
-	/** Used to display connection-specific notices.  (Pidgin's Gtk user
-	 *  interface implements this as a no-op; #purple_connection_notice(),
-	 *  which uses this operation, is not used by any of the protocols
-	 *  shipped with libpurple.)
+	/**
+	 * Used to display connection-specific notices.  (Pidgin's Gtk user
+	 * interface implements this as a no-op; #purple_connection_notice(),
+	 * which uses this operation, is not used by any of the protocols
+	 * shipped with libpurple.)
 	 */
 	void (*notice)(PurpleConnection *gc, const char *text);
 
-	/** Called when an error causes a connection to be disconnected.
-	 *  Called before #disconnected.
-	 *  @param text  a localized error message.
-	 *  @see #purple_connection_error
-	 *  @deprecated in favour of
-	 *              #PurpleConnectionUiOps.report_disconnect_reason.
+	/**
+	 * Called when an error causes a connection to be disconnected.
+	 * Called before #disconnected.
+	 * @param text  a localized error message.
+	 * @see #purple_connection_error
+	 * @deprecated in favour of
+	 *             #PurpleConnectionUiOps.report_disconnect_reason.
 	 */
 	void (*report_disconnect)(PurpleConnection *gc, const char *text);
 
-	/** Called when libpurple discovers that the computer's network
-	 *  connection is active.  On Linux, this uses Network Manager if
-	 *  available; on Windows, it uses Win32's network change notification
-	 *  infrastructure.
+	/**
+	 * Called when libpurple discovers that the computer's network
+	 * connection is active.  On Linux, this uses Network Manager if
+	 * available; on Windows, it uses Win32's network change notification
+	 * infrastructure.
 	 */
 	void (*network_connected)(void);
-	/** Called when libpurple discovers that the computer's network
-	 *  connection has gone away.
+
+	/**
+	 * Called when libpurple discovers that the computer's network
+	 * connection has gone away.
 	 */
 	void (*network_disconnected)(void);
 
-	/** Called when an error causes a connection to be disconnected.
+	/**
+	 * Called when an error causes a connection to be disconnected.
 	 *  Called before #disconnected.  This op is intended to replace
 	 *  #report_disconnect.  If both are implemented, this will be called
 	 *  first; however, there's no real reason to implement both.
+	 *
 	 *  @param reason  why the connection ended, if known, or
 	 *                 #PURPLE_CONNECTION_ERROR_OTHER_ERROR, if not.
 	 *  @param text  a localized message describing the disconnection
 	 *               in more detail to the user.
 	 *  @see #purple_connection_error_reason
+	 *
 	 *  @since 2.3.0
 	 */
 	void (*report_disconnect_reason)(PurpleConnection *gc,
@@ -354,6 +369,16 @@
 void purple_connection_set_display_name(PurpleConnection *gc, const char *name);
 
 /**
+ * Sets the protocol data for a connection.
+ *
+ * @param connection The PurpleConnection.
+ * @param proto_data The protocol data to set for the connection.
+ *
+ * @since 2.6.0
+ */
+void purple_connection_set_protocol_data(PurpleConnection *connection, void *proto_data);
+
+/**
  * Returns the connection state.
  *
  * @param gc The connection.
@@ -385,6 +410,7 @@
  * @param gc The connection.
  *
  * @return The protocol plugin.
+ *
  * @since 2.4.0
  */
 PurplePlugin * purple_connection_get_prpl(const PurpleConnection *gc);
@@ -408,6 +434,17 @@
 const char *purple_connection_get_display_name(const PurpleConnection *gc);
 
 /**
+ * Gets the protocol data from a connection.
+ *
+ * @param connection The PurpleConnection.
+ *
+ * @return The protocol data for the connection.
+ *
+ * @since 2.6.0
+ */
+void *purple_connection_get_protocol_data(const PurpleConnection *connection);
+
+/**
  * Updates the connection progress.
  *
  * @param gc    The connection.
@@ -450,6 +487,7 @@
  * @param gc          the connection which is closing.
  * @param reason      why the connection is closing.
  * @param description a non-@c NULL localized description of the error.
+ *
  * @since 2.3.0
  */
 void
@@ -461,6 +499,7 @@
  * Closes a connection due to an SSL error; this is basically a shortcut to
  * turning the #PurpleSslErrorType into a #PurpleConnectionError and a
  * human-readable string and then calling purple_connection_error_reason().
+ *
  * @since 2.3.0
  */
 void
@@ -484,6 +523,7 @@
  *
  * @return @c TRUE if the account should not be automatically reconnected, and
  *         @c FALSE otherwise.
+ *
  * @since 2.3.0
  */
 gboolean
--- a/libpurple/conversation.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/conversation.c	Wed Mar 04 16:52:47 2009 +0000
@@ -665,7 +665,7 @@
 			text = purple_buddy_get_contact_alias(b);
 	} else if(purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) {
 		if(account && ((chat = purple_blist_find_chat(account, name)) != NULL))
-			text = chat->alias;
+			text = purple_chat_get_name(chat);
 	}
 
 
@@ -912,7 +912,7 @@
 
 				if (purple_account_get_alias(account) != NULL)
 					alias = account->alias;
-				else if (b != NULL && strcmp(b->name, purple_buddy_get_contact_alias(b)))
+				else if (b != NULL && !purple_strequal(purple_buddy_get_name(b), purple_buddy_get_contact_alias(b)))
 					alias = purple_buddy_get_contact_alias(b);
 				else if (purple_connection_get_display_name(gc) != NULL)
 					alias = purple_connection_get_display_name(gc);
@@ -1480,7 +1480,7 @@
 
 		str = g_strdup(purple_normalize(account, who));
 
-		if (!strcmp(str, purple_normalize(account, chat->nick))) {
+		if (purple_strequal(str, purple_normalize(account, chat->nick))) {
 			flags |= PURPLE_MESSAGE_SEND;
 		} else {
 			flags |= PURPLE_MESSAGE_RECV;
@@ -1601,7 +1601,7 @@
 		const char *extra_msg = (extra_msgs ? extra_msgs->data : NULL);
 
 		if(!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) {
-			if (!strcmp(chat->nick, purple_normalize(conv->account, user))) {
+			if (purple_strequal(chat->nick, purple_normalize(conv->account, user))) {
 				const char *alias2 = purple_account_get_alias(conv->account);
 				if (alias2 != NULL)
 					alias = alias2;
@@ -1692,7 +1692,7 @@
 	prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
 	g_return_if_fail(prpl_info != NULL);
 
-	if (!strcmp(chat->nick, purple_normalize(conv->account, old_user))) {
+	if (purple_strequal(chat->nick, purple_normalize(conv->account, old_user))) {
 		const char *alias;
 
 		/* Note this for later. */
--- a/libpurple/conversation.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/conversation.h	Wed Mar 04 16:52:47 2009 +0000
@@ -1350,7 +1350,7 @@
  * Retrieves the extended menu items for the conversation.
  *
  * @param conv The conversation.
- * 
+ *
  * @return  A list of PurpleMenuAction items, harvested by the
  *          chat-extended-menu signal. The list and the menuaction
  *          items should be freed by the caller.
--- a/libpurple/core.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/core.c	Wed Mar 04 16:52:47 2009 +0000
@@ -46,9 +46,11 @@
 #include "signals.h"
 #include "smiley.h"
 #include "sound.h"
+#include "sound-theme-loader.h"
 #include "sslconn.h"
 #include "status.h"
 #include "stun.h"
+#include "theme-manager.h"
 #include "util.h"
 
 #ifdef HAVE_DBUS
@@ -143,6 +145,8 @@
 
 	purple_plugins_probe(G_MODULE_SUFFIX);
 
+	purple_theme_manager_init();
+
 	/* The buddy icon code uses the imgstore, so init it early. */
 	purple_imgstore_init();
 
@@ -171,7 +175,7 @@
 	purple_xfers_init();
 	purple_idle_init();
 	purple_smileys_init();
-
+	purple_theme_manager_init();
 	/*
 	 * Call this early on to try to auto-detect our IP address and
 	 * hopefully save some time later.
@@ -181,6 +185,9 @@
 	if (ops != NULL && ops->ui_init != NULL)
 		ops->ui_init();
 
+	/* The UI may have registered some theme types, so refresh them */
+	purple_theme_manager_refresh();
+
 	return TRUE;
 }
 
@@ -233,6 +240,7 @@
 	purple_savedstatuses_uninit();
 	purple_status_uninit();
 	purple_sound_uninit();
+	purple_theme_manager_uninit();
 	purple_xfers_uninit();
 	purple_proxy_uninit();
 	purple_dnsquery_uninit();
@@ -350,15 +358,7 @@
 			const char *user_dir = purple_user_dir();
 			char *dbus_owner_user_dir = purple_dbus_owner_user_dir();
 
-			if (NULL == user_dir && NULL != dbus_owner_user_dir)
-				is_single_instance = TRUE;
-			else if (NULL != user_dir && NULL == dbus_owner_user_dir)
-				is_single_instance = TRUE;
-			else if (NULL == user_dir && NULL == dbus_owner_user_dir)
-				is_single_instance = FALSE;
-			else
-				is_single_instance = strcmp(dbus_owner_user_dir, user_dir);
-
+			is_single_instance = !purple_strequal(dbus_owner_user_dir, user_dir);
 			g_free(dbus_owner_user_dir);
 		}
 	}
@@ -489,7 +489,7 @@
 		if (g_file_test(name, G_FILE_TEST_IS_SYMLINK))
 		{
 			/* We're only going to duplicate a logs symlink. */
-			if (!strcmp(entry, "logs"))
+			if (purple_strequal(entry, "logs"))
 			{
 				char *link;
 #if GLIB_CHECK_VERSION(2,4,0)
@@ -532,7 +532,8 @@
 
 				logs_dir = g_build_filename(user_dir, "logs", NULL);
 
-				if (!strcmp(link, "../.purple/logs") || !strcmp(link, logs_dir))
+				if (purple_strequal(link, "../.purple/logs") ||
+				    purple_strequal(link, logs_dir))
 				{
 					/* If the symlink points to the new directory, we're
 					 * likely just trying again after a failed migration,
@@ -577,7 +578,7 @@
 		/* Deal with directories... */
 		if (g_file_test(name, G_FILE_TEST_IS_DIR))
 		{
-			if (!strcmp(entry, "icons"))
+			if (purple_strequal(entry, "icons"))
 			{
 				/* This is a special case for the Album plugin, which
 				 * stores data in the icons folder.  We're not copying
@@ -646,7 +647,7 @@
 
 				g_dir_close(icons_dir);
 			}
-			else if (!strcmp(entry, "plugins"))
+			else if (purple_strequal(entry, "plugins"))
 			{
 				/* Do nothing, because we broke plugin compatibility.
 				 * This means that the plugins directory gets left behind. */
--- a/libpurple/core.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/core.h	Wed Mar 04 16:52:47 2009 +0000
@@ -90,17 +90,17 @@
 
 /**
  * <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 
+ * 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: 
+ * for an immediate exit, use a timeout value of 0:
  * </p>
  *
  * <code>purple_timeout_add(0, purple_core_quitcb, NULL);</code>
  *
  * <p>
- * This is ensures that code from your plugin is not being 
+ * 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
--- a/libpurple/dbus-bindings.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/dbus-bindings.h	Wed Mar 04 16:52:47 2009 +0000
@@ -84,7 +84,7 @@
 					int              first_arg_type,
 					va_list          var_args);
 
-dbus_int32_t* purple_dbusify_GList(GList *list, gboolean free_memory, 
+dbus_int32_t* purple_dbusify_GList(GList *list, gboolean free_memory,
 				 dbus_int32_t *len);
 dbus_int32_t* purple_dbusify_GSList(GSList *list, gboolean free_memory,
 				  dbus_int32_t *len);
--- a/libpurple/dbus-server.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/dbus-server.h	Wed Mar 04 16:52:47 2009 +0000
@@ -173,7 +173,7 @@
 
 /**
  * Determines whether this instance owns the DBus service name
- * 
+ *
  * @since 2.1.0
  */
 gboolean purple_dbus_is_owner(void);
--- a/libpurple/desktopitem.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/desktopitem.c	Wed Mar 04 16:52:47 2009 +0000
@@ -41,12 +41,12 @@
  * modify it under the terms of the GNU Library General Public License as
  * published by the Free Software Foundation; either version 2 of the
  * License, or (at your option) any later version.
- * 
+ *
  * The Gnome Library 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
  * Library General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Library General Public
  * License along with the Gnome Library; see the file COPYING.LIB.  If not,
  * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
@@ -67,7 +67,7 @@
 	GList *languages;
 
 	PurpleDesktopItemType type;
-	
+
 	/* `modified' means that the ditem has been
 	 * modified since the last save. */
 	gboolean modified;
@@ -108,30 +108,30 @@
 
 	switch (type [0]) {
 	case 'A':
-		if (!strcmp (type, "Application"))
+		if (purple_strequal (type, "Application"))
 			return PURPLE_DESKTOP_ITEM_TYPE_APPLICATION;
 		break;
 	case 'L':
-		if (!strcmp (type, "Link"))
+		if (purple_strequal (type, "Link"))
 			return PURPLE_DESKTOP_ITEM_TYPE_LINK;
 		break;
 	case 'F':
-		if (!strcmp (type, "FSDevice"))
+		if (purple_strequal (type, "FSDevice"))
 			return PURPLE_DESKTOP_ITEM_TYPE_FSDEVICE;
 		break;
 	case 'M':
-		if (!strcmp (type, "MimeType"))
+		if (purple_strequal (type, "MimeType"))
 			return PURPLE_DESKTOP_ITEM_TYPE_MIME_TYPE;
 		break;
 	case 'D':
-		if (!strcmp (type, "Directory"))
+		if (purple_strequal (type, "Directory"))
 			return PURPLE_DESKTOP_ITEM_TYPE_DIRECTORY;
 		break;
 	case 'S':
-		if (!strcmp (type, "Service"))
+		if (purple_strequal (type, "Service"))
 			return PURPLE_DESKTOP_ITEM_TYPE_SERVICE;
 
-		else if (!strcmp (type, "ServiceType"))
+		else if (purple_strequal (type, "ServiceType"))
 			return PURPLE_DESKTOP_ITEM_TYPE_SERVICE_TYPE;
 		break;
 	default:
@@ -149,12 +149,12 @@
 
 	if (section == NULL)
 		return NULL;
-	if (strcmp (section, "Desktop Entry") == 0)
+	if (purple_strequal (section, "Desktop Entry"))
 		return NULL;
 
 	for (li = item->sections; li != NULL; li = li->next) {
 		sec = li->data;
-		if (strcmp (sec->name, section) == 0)
+		if (purple_strequal (sec->name, section))
 			return sec;
 	}
 
@@ -235,7 +235,7 @@
 				item->keys = g_list_append (item->keys,
 							    g_strdup (key));
 
-			g_hash_table_replace (item->main_hash, 
+			g_hash_table_replace (item->main_hash,
 					      g_strdup (key),
 					      g_strdup (value));
 		} else {
@@ -264,7 +264,7 @@
 
 	set (item, attr, value);
 
-	if (strcmp (attr, PURPLE_DESKTOP_ITEM_TYPE) == 0)
+	if (purple_strequal (attr, PURPLE_DESKTOP_ITEM_TYPE))
 		item->type = type_from_string (value);
 }
 
@@ -280,7 +280,7 @@
 	retval->main_hash = g_hash_table_new_full (g_str_hash, g_str_equal,
 						   (GDestroyNotify) g_free,
 						   (GDestroyNotify) g_free);
-	
+
 	/* These are guaranteed to be set */
 	_purple_desktop_item_set_string (retval,
 				       PURPLE_DESKTOP_ITEM_NAME,
@@ -354,16 +354,16 @@
 			p++;
 			if (*p == ' ')
 				p++;
-			if (strcmp (p, "UTF-8") == 0) {
+			if (purple_strequal (p, "UTF-8")) {
 				return ENCODING_UTF8;
-			} else if (strcmp (p, "Legacy-Mixed") == 0) {
+			} else if (purple_strequal (p, "Legacy-Mixed")) {
 				return ENCODING_LEGACY_MIXED;
 			} else {
 				/* According to the spec we're not supposed
 				 * to read a file like this */
 				return ENCODING_UNKNOWN;
 			}
-		} else if (strcmp ("[KDE Desktop Entry]", buf) == 0) {
+		} else if (purple_strequal ("[KDE Desktop Entry]", buf)) {
 			old_kde = TRUE;
 			/* don't break yet, we still want to support
 			 * Encoding even here */
@@ -557,7 +557,7 @@
 		char *utf8_string;
 		if (char_encoding == NULL)
 			return NULL;
-		if (strcmp (char_encoding, "ASCII") == 0) {
+		if (purple_strequal (char_encoding, "ASCII")) {
 			return decode_string_and_dup (value);
 		}
 		utf8_string = g_convert (value, -1, "UTF-8", char_encoding,
@@ -673,7 +673,7 @@
 	char *val;
 	/* we always store everything in UTF-8 */
 	if (cur_section == NULL &&
-	    strcmp (key, PURPLE_DESKTOP_ITEM_ENCODING) == 0) {
+	    purple_strequal (key, PURPLE_DESKTOP_ITEM_ENCODING)) {
 		k = g_strdup (key);
 		val = g_strdup ("UTF-8");
 	} else {
@@ -690,14 +690,14 @@
 			g_free (locale);
 			return;
 		}
-		
+
 		g_strchomp (val);
 
 		/* For old KDE entries, we can also split by a comma
 		 * on sort order, so convert to semicolons */
 		if (old_kde &&
 		    cur_section == NULL &&
-		    strcmp (key, PURPLE_DESKTOP_ITEM_SORT_ORDER) == 0 &&
+		    purple_strequal (key, PURPLE_DESKTOP_ITEM_SORT_ORDER) &&
 		    strchr (val, ';') == NULL) {
 			int i;
 			for (i = 0; val[i] != '\0'; i++) {
@@ -720,7 +720,7 @@
 
 		/* Take care of the language part */
 		if (locale != NULL &&
-		    strcmp (locale, "C") == 0) {
+		    purple_strequal (locale, "C")) {
 			char *p;
 			/* Whack C locale */
 			p = strchr (k, '[');
@@ -791,11 +791,10 @@
 						PURPLE_DESKTOP_ITEM_TYPE);
 	if (type == NULL && uri != NULL) {
 		char *base = g_path_get_basename (uri);
-		if (base != NULL &&
-		    strcmp (base, ".directory") == 0) {
+		if (purple_strequal(base, ".directory")) {
 			/* This gotta be a directory */
 			g_hash_table_replace (item->main_hash,
-					      g_strdup (PURPLE_DESKTOP_ITEM_TYPE), 
+					      g_strdup (PURPLE_DESKTOP_ITEM_TYPE),
 					      g_strdup ("Directory"));
 			item->keys = g_list_prepend
 				(item->keys, g_strdup (PURPLE_DESKTOP_ITEM_TYPE));
@@ -813,7 +812,7 @@
 lookup_locale (const PurpleDesktopItem *item, const char *key, const char *locale)
 {
 	if (locale == NULL ||
-	    strcmp (locale, "C") == 0) {
+	    purple_strequal (locale, "C")) {
 		return lookup (item, key);
 	} else {
 		const char *ret;
@@ -857,7 +856,7 @@
 	type = lookup (item, PURPLE_DESKTOP_ITEM_TYPE);
 
 	/* understand old gnome style url exec thingies */
-	if (type != NULL && strcmp (type, "URL") == 0) {
+	if (purple_strequal(type, "URL")) {
 		const char *exec = lookup (item, PURPLE_DESKTOP_ITEM_EXEC);
 		set (item, PURPLE_DESKTOP_ITEM_TYPE, "Link");
 		if (exec != NULL) {
@@ -877,7 +876,7 @@
 		if (name == NULL)
 			name = g_strdup (_("No name"));
 		g_hash_table_replace (item->main_hash,
-				      g_strdup (PURPLE_DESKTOP_ITEM_NAME), 
+				      g_strdup (PURPLE_DESKTOP_ITEM_NAME),
 				      name);
 		item->keys = g_list_prepend
 			(item->keys, g_strdup (PURPLE_DESKTOP_ITEM_NAME));
@@ -885,7 +884,7 @@
 	if (lookup (item, PURPLE_DESKTOP_ITEM_ENCODING) == NULL) {
 		/* We store everything in UTF-8 so write that down */
 		g_hash_table_replace (item->main_hash,
-				      g_strdup (PURPLE_DESKTOP_ITEM_ENCODING), 
+				      g_strdup (PURPLE_DESKTOP_ITEM_ENCODING),
 				      g_strdup ("UTF-8"));
 		item->keys = g_list_prepend
 			(item->keys, g_strdup (PURPLE_DESKTOP_ITEM_ENCODING));
@@ -893,7 +892,7 @@
 	if (lookup (item, PURPLE_DESKTOP_ITEM_VERSION) == NULL) {
 		/* this is the version that we follow, so write it down */
 		g_hash_table_replace (item->main_hash,
-				      g_strdup (PURPLE_DESKTOP_ITEM_VERSION), 
+				      g_strdup (PURPLE_DESKTOP_ITEM_VERSION),
 				      g_strdup ("1.0"));
 		item->keys = g_list_prepend
 			(item->keys, g_strdup (PURPLE_DESKTOP_ITEM_VERSION));
@@ -954,7 +953,7 @@
 	while ((c = getc (df)) != EOF) {
 		if (c == '\r')		/* Ignore Carriage Return */
 			continue;
-		
+
 		switch (state) {
 
 		case OnSecHeader:
@@ -968,13 +967,11 @@
 					cur_section->keys = g_list_reverse
 						(cur_section->keys);
 				}
-				if (strcmp (CharBuffer,
-					    "KDE Desktop Entry") == 0) {
+				if (purple_strequal (CharBuffer, "KDE Desktop Entry")) {
 					/* Main section */
 					cur_section = NULL;
 					old_kde = TRUE;
-				} else if (strcmp (CharBuffer,
-						   "Desktop Entry") == 0) {
+				} else if (purple_strequal(CharBuffer, "Desktop Entry")) {
 					/* Main section */
 					cur_section = NULL;
 				} else {
@@ -1025,16 +1022,16 @@
 			/* On first pass, don't allow dangling keys */
 			if (state == FirstBrace)
 				break;
-	    
+
 			if ((c == ' ' && state != KeyDefOnKey) || c == '\t')
 				break;
-	    
+
 			if (c == '\n' || PURPLE_DESKTOP_ITEM_OVERFLOW) { /* Abort Definition */
 				next = CharBuffer;
 				state = KeyDef;
 				break;
 			}
-	    
+
 			if (c == '=' || PURPLE_DESKTOP_ITEM_OVERFLOW){
 				*next = '\0';
 
@@ -1067,7 +1064,7 @@
 			break;
 
 		} /* switch */
-	
+
 	} /* while ((c = getc_unlocked (f)) != EOF) */
 	if (c == EOF && state == KeyValue) {
 		*next = '\0';
@@ -1158,7 +1155,7 @@
 		printf ("Can't open %s: %s", filename, g_strerror(errno));
 		return NULL;
 	}
-	
+
 	retval = ditem_load(dfile, FALSE, filename);
 
 	return retval;
@@ -1203,7 +1200,7 @@
 	/* Languages */
 	retval->languages = g_list_copy (item->languages);
 	for (li = retval->languages; li != NULL; li = li->next)
-		li->data = g_strdup (li->data);	
+		li->data = g_strdup (li->data);
 
 	/* Keys */
 	retval->keys = g_list_copy (item->keys);
--- a/libpurple/desktopitem.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/desktopitem.h	Wed Mar 04 16:52:47 2009 +0000
@@ -41,12 +41,12 @@
  * modify it under the terms of the GNU Library General Public License as
  * published by the Free Software Foundation; either version 2 of the
  * License, or (at your option) any later version.
- * 
+ *
  * The Gnome Library 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
  * Library General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Library General Public
  * License along with the Gnome Library; see the file COPYING.LIB.  If not,
  * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
@@ -155,7 +155,7 @@
  *
  * @param item The item to be copied
  *
- * @return The new copy 
+ * @return The new copy
  */
 PurpleDesktopItem *purple_desktop_item_copy (const PurpleDesktopItem *item);
 
--- a/libpurple/eventloop.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/eventloop.h	Wed Mar 04 16:52:47 2009 +0000
@@ -119,8 +119,8 @@
 	 * @see purple_input_remove
 	 */
 	gboolean (*input_remove)(guint handle);
-	
-	
+
+
 	/**
 	 * If implemented, should get the current error status for an input.
 	 *
@@ -161,7 +161,7 @@
 /*@{*/
 /**
  * Creates a callback timer.
- * 
+ *
  * The timer will repeat until the function returns @c FALSE. The
  * first call will be at the end of the first interval.
  *
@@ -185,12 +185,12 @@
  *
  * This function allows UIs to group timers for better power efficiency.  For
  * this reason, @a interval may be rounded by up to a second.
- * 
+ *
  * @param interval	The time between calls of the function, in
  *                      seconds.
  * @param function	The function to call.
  * @param data		data to pass to @a function.
- * @return A handle to the timer which can be passed to 
+ * @return A handle to the timer which can be passed to
  *         purple_timeout_remove() to remove the timer.
  *
  * @since 2.1.0
--- a/libpurple/idle.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/idle.c	Wed Mar 04 16:52:47 2009 +0000
@@ -126,14 +126,14 @@
 	idle_reporting = purple_prefs_get_string("/purple/away/idle_reporting");
 	auto_away = purple_prefs_get_bool("/purple/away/away_when_idle");
 
-	if (!strcmp(idle_reporting, "system") &&
+	if (purple_strequal(idle_reporting, "system") &&
 		(idle_ui_ops != NULL) && (idle_ui_ops->get_time_idle != NULL))
 	{
 		/* Use system idle time (mouse or keyboard movement, etc.) */
 		time_idle = idle_ui_ops->get_time_idle();
 		idle_recheck_interval = 1;
 	}
-	else if (!strcmp(idle_reporting, "purple"))
+	else if (purple_strequal(idle_reporting, "purple"))
 	{
 		/* Use 'Purple idle' */
 		time_idle = time(NULL) - last_active_time;
@@ -214,7 +214,7 @@
 
 
 /*
- * Check idle and set the timer to fire at the next idle-worth event 
+ * Check idle and set the timer to fire at the next idle-worth event
  */
 static gboolean
 check_idleness_timer(void)
--- a/libpurple/internal.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/internal.h	Wed Mar 04 16:52:47 2009 +0000
@@ -102,7 +102,7 @@
 #include <gmodule.h>
 
 #ifdef PURPLE_PLUGINS
-# ifdef HAVE_DLFCN_H 
+# ifdef HAVE_DLFCN_H
 #  include <dlfcn.h>
 # endif
 #endif
--- a/libpurple/log.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/log.c	Wed Mar 04 16:52:47 2009 +0000
@@ -34,6 +34,7 @@
 #include "util.h"
 #include "stringref.h"
 #include "imgstore.h"
+#include "time.h"
 
 static GSList *loggers = NULL;
 
@@ -46,6 +47,7 @@
 	PurpleAccount *account;
 };
 static GHashTable *logsize_users = NULL;
+static GHashTable *logsize_users_decayed = NULL;
 
 static void log_get_log_sets_common(GHashTable *sets);
 
@@ -161,14 +163,27 @@
 	lu->account = log->account;
 
 	if(g_hash_table_lookup_extended(logsize_users, lu, NULL, &ptrsize)) {
+		char *tmp = lu->name;
+
 		total = GPOINTER_TO_INT(ptrsize);
 		total += written;
 		g_hash_table_replace(logsize_users, lu, GINT_TO_POINTER(total));
+
+		/* The hash table takes ownership of lu, so create a new one
+		 * for the logsize_users_decayed check below. */
+		lu = g_new(struct _purple_logsize_user, 1);
+		lu->name = g_strdup(tmp);
+		lu->account = log->account;
+	}
+
+	if(g_hash_table_lookup_extended(logsize_users_decayed, lu, NULL, &ptrsize)) {
+		total = GPOINTER_TO_INT(ptrsize);
+		total += written;
+		g_hash_table_replace(logsize_users_decayed, lu, GINT_TO_POINTER(total));
 	} else {
 		g_free(lu->name);
 		g_free(lu);
 	}
-
 }
 
 char *purple_log_read(PurpleLog *log, PurpleLogReadFlags *flags)
@@ -200,7 +215,7 @@
 static guint _purple_logsize_user_equal(struct _purple_logsize_user *lu1,
 		struct _purple_logsize_user *lu2)
 {
-	return (lu1->account == lu2->account && (!strcmp(lu1->name, lu2->name)));
+	return (lu1->account == lu2->account && purple_strequal(lu1->name, lu2->name));
 }
 
 static void _purple_logsize_user_free_key(struct _purple_logsize_user *lu)
@@ -250,6 +265,49 @@
 	return size;
 }
 
+gint purple_log_get_activity_score(PurpleLogType type, const char *name, PurpleAccount *account)
+{
+	gpointer ptrscore;
+	int score;
+	GSList *n;
+	struct _purple_logsize_user *lu;
+	time_t now;
+	time(&now);
+
+	lu = g_new(struct _purple_logsize_user, 1);
+	lu->name = g_strdup(purple_normalize(account, name));
+	lu->account = account;
+
+	if(g_hash_table_lookup_extended(logsize_users_decayed, lu, NULL, &ptrscore)) {
+		score = GPOINTER_TO_INT(ptrscore);
+		g_free(lu->name);
+		g_free(lu);
+	} else {
+		double score_double = 0.0;
+		for (n = loggers; n; n = n->next) {
+			PurpleLogLogger *logger = n->data;
+
+			if(logger->list) {
+				GList *logs = (logger->list)(type, name, account);
+
+				while (logs) {
+					PurpleLog *log = (PurpleLog*)(logs->data);
+					/* Activity score counts bytes in the log, exponentially
+					   decayed with a half-life of 14 days. */
+					score_double += purple_log_get_size(log) *
+						pow(0.5, difftime(now, log->time)/1209600.0);
+					purple_log_free(log);
+					logs = g_list_delete_link(logs, logs);
+				}
+			}
+		}
+
+		score = (gint)score_double;
+		g_hash_table_replace(logsize_users_decayed, lu, GINT_TO_POINTER(score));
+	}
+	return score;
+}
+
 gboolean purple_log_is_deletable(PurpleLog *log)
 {
 	g_return_val_if_fail(log != NULL, FALSE);
@@ -324,7 +382,7 @@
 	GSList *l = loggers;
 	while (l) {
 		logger = l->data;
-		if (!strcmp(logger->id, value)) {
+		if (purple_strequal(logger->id, value)) {
 			purple_log_logger_set(logger);
 			return;
 		}
@@ -406,7 +464,7 @@
 	if (g_slist_find(loggers, logger))
 		return;
 	loggers = g_slist_append(loggers, logger);
-	if (strcmp(purple_prefs_get_string("/purple/logging/format"), logger->id) == 0) {
+	if (purple_strequal(purple_prefs_get_string("/purple/logging/format"), logger->id)) {
 		purple_prefs_trigger_callback("/purple/logging/format");
 	}
 }
@@ -588,11 +646,11 @@
 	void *handle = purple_log_get_handle();
 
 	purple_prefs_add_none("/purple/logging");
-	purple_prefs_add_bool("/purple/logging/log_ims", FALSE);
-	purple_prefs_add_bool("/purple/logging/log_chats", FALSE);
+	purple_prefs_add_bool("/purple/logging/log_ims", TRUE);
+	purple_prefs_add_bool("/purple/logging/log_chats", TRUE);
 	purple_prefs_add_bool("/purple/logging/log_system", FALSE);
 
-	purple_prefs_add_string("/purple/logging/format", "txt");
+	purple_prefs_add_string("/purple/logging/format", "html");
 
 	html_logger = purple_log_logger_new("html", _("HTML"), 11,
 									  NULL,
@@ -661,6 +719,9 @@
 	logsize_users = g_hash_table_new_full((GHashFunc)_purple_logsize_user_hash,
 			(GEqualFunc)_purple_logsize_user_equal,
 			(GDestroyNotify)_purple_logsize_user_free_key, NULL);
+	logsize_users_decayed = g_hash_table_new_full((GHashFunc)_purple_logsize_user_hash,
+				(GEqualFunc)_purple_logsize_user_equal,
+				(GDestroyNotify)_purple_logsize_user_free_key, NULL);
 }
 
 void
@@ -679,6 +740,9 @@
 	purple_log_logger_remove(old_logger);
 	purple_log_logger_free(old_logger);
 	old_logger = NULL;
+
+	g_hash_table_destroy(logsize_users);
+	g_hash_table_destroy(logsize_users_decayed);
 }
 
 /****************************************************************************
@@ -1019,7 +1083,7 @@
 				continue;
 			prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
 
-			if (!strcmp(protocol_unescaped, prpl_info->list_icon((PurpleAccount *)account_iter->data, NULL)))
+			if (purple_strequal(protocol_unescaped, prpl_info->list_icon((PurpleAccount *)account_iter->data, NULL)))
 				accounts = g_list_prepend(accounts, account_iter->data);
 		}
 		g_free(protocol_unescaped);
@@ -1039,7 +1103,7 @@
 			/* Find the account for username in the list of accounts for protocol. */
 			username_unescaped = purple_unescape_filename(username);
 			for (account_iter = g_list_first(accounts) ; account_iter != NULL ; account_iter = account_iter->next) {
-				if (!strcmp(((PurpleAccount *)account_iter->data)->username, username_unescaped)) {
+				if (purple_strequal(((PurpleAccount *)account_iter->data)->username, username_unescaped)) {
 					account = account_iter->data;
 					break;
 				}
@@ -1068,14 +1132,14 @@
 				/* Chat for .chat or .system at the end of the name to determine the type. */
 				if (len >= 7) {
 					gchar *tmp = &name[len - 7];
-					if (!strcmp(tmp, ".system")) {
+					if (purple_strequal(tmp, ".system")) {
 						set->type = PURPLE_LOG_SYSTEM;
 						*tmp = '\0';
 					}
 				}
 				if (len > 5) {
 					gchar *tmp = &name[len - 5];
-					if (!strcmp(tmp, ".chat")) {
+					if (purple_strequal(tmp, ".chat")) {
 						set->type = PURPLE_LOG_CHAT;
 						*tmp = '\0';
 					}
@@ -1773,29 +1837,29 @@
 			sscanf(convostart, "%*s %s %d %d:%d:%d %d",
 			       month, &tm.tm_mday, &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &tm.tm_year);
 			/* Ugly hack, in case current locale is not English */
-			if (strcmp(month, "Jan") == 0) {
+			if (purple_strequal(month, "Jan")) {
 				tm.tm_mon= 0;
-			} else if (strcmp(month, "Feb") == 0) {
+			} else if (purple_strequal(month, "Feb")) {
 				tm.tm_mon = 1;
-			} else if (strcmp(month, "Mar") == 0) {
+			} else if (purple_strequal(month, "Mar")) {
 				tm.tm_mon = 2;
-			} else if (strcmp(month, "Apr") == 0) {
+			} else if (purple_strequal(month, "Apr")) {
 				tm.tm_mon = 3;
-			} else if (strcmp(month, "May") == 0) {
+			} else if (purple_strequal(month, "May")) {
 				tm.tm_mon = 4;
-			} else if (strcmp(month, "Jun") == 0) {
+			} else if (purple_strequal(month, "Jun")) {
 				tm.tm_mon = 5;
-			} else if (strcmp(month, "Jul") == 0) {
+			} else if (purple_strequal(month, "Jul")) {
 				tm.tm_mon = 6;
-			} else if (strcmp(month, "Aug") == 0) {
+			} else if (purple_strequal(month, "Aug")) {
 				tm.tm_mon = 7;
-			} else if (strcmp(month, "Sep") == 0) {
+			} else if (purple_strequal(month, "Sep")) {
 				tm.tm_mon = 8;
-			} else if (strcmp(month, "Oct") == 0) {
+			} else if (purple_strequal(month, "Oct")) {
 				tm.tm_mon = 9;
-			} else if (strcmp(month, "Nov") == 0) {
+			} else if (purple_strequal(month, "Nov")) {
 				tm.tm_mon = 10;
-			} else if (strcmp(month, "Dec") == 0) {
+			} else if (purple_strequal(month, "Dec")) {
 				tm.tm_mon = 11;
 			}
 			tm.tm_year -= 1900;
@@ -1930,7 +1994,7 @@
 
 		/* Make sure we're dealing with a log file. */
 		ext = &name[len - 4];
-		if (strcmp(ext, ".log")) {
+		if (!purple_strequal(ext, ".log")) {
 			g_free(name);
 			continue;
 		}
@@ -1943,7 +2007,7 @@
 		set->type = PURPLE_LOG_IM;
 		if (len > 9) {
 			char *tmp = &name[len - 9];
-			if (!strcmp(tmp, ".chat")) {
+			if (purple_strequal(tmp, ".chat")) {
 				set->type = PURPLE_LOG_CHAT;
 				*tmp = '\0';
 			}
@@ -1952,22 +2016,28 @@
 		set->name = set->normalized_name = name;
 
 		/* Search the buddy list to find the account and to determine if this is a buddy. */
-		for (gnode = purple_get_blist()->root; !found && gnode != NULL; gnode = gnode->next)
+		for (gnode = purple_blist_get_root();
+		     !found && gnode != NULL;
+			 gnode = purple_blist_node_get_sibling_next(gnode))
 		{
 			if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 				continue;
 
-			for (cnode = gnode->child; !found && cnode != NULL; cnode = cnode->next)
+			for (cnode = purple_blist_node_get_first_child(gnode);
+			     !found && cnode != NULL;
+				 cnode = purple_blist_node_get_sibling_next(cnode))
 			{
 				if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 					continue;
 
-				for (bnode = cnode->child; !found && bnode != NULL; bnode = bnode->next)
+				for (bnode = purple_blist_node_get_first_child(cnode);
+				     !found && bnode != NULL;
+					 bnode = purple_blist_node_get_sibling_next(bnode))
 				{
 					PurpleBuddy *buddy = (PurpleBuddy *)bnode;
 
-					if (!strcmp(buddy->name, name)) {
-						set->account = buddy->account;
+					if (purple_strequal(purple_buddy_get_name(buddy), name)) {
+						set->account = purple_buddy_get_account(buddy);
 						set->buddy = TRUE;
 						found = TRUE;
 					}
--- a/libpurple/log.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/log.h	Wed Mar 04 16:52:47 2009 +0000
@@ -194,7 +194,7 @@
  * Creates a new log
  *
  * @param type        The type of log this is.
- * @param name        The name of this conversation (screenname, chat name,
+ * @param name        The name of this conversation (buddy name, chat name,
  *                    etc.)
  * @param account     The account the conversation is occurring on
  * @param conv        The conversation being logged
@@ -294,6 +294,19 @@
 int purple_log_get_total_size(PurpleLogType type, const char *name, PurpleAccount *account);
 
 /**
+ * Returns the activity score of a log, based on total size in bytes,
+ * which is then decayed based on age
+ *
+ * @param type                The type of the log
+ * @param name                The name of the log
+ * @param account             The account
+ * @return                    The activity score
+ *
+ * @since 2.6.0
+ */
+int purple_log_get_activity_score(PurpleLogType type, const char *name, PurpleAccount *account);
+
+/**
  * Tests whether a log is deletable
  *
  * A return value of @c FALSE indicates that purple_log_delete() will fail on this
--- a/libpurple/nat-pmp.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/nat-pmp.c	Wed Mar 04 16:52:47 2009 +0000
@@ -126,7 +126,7 @@
 
 	for (i = 0; i < RTAX_MAX; i++)
 	{
-		if (bitmask & (1 << i)) 
+		if (bitmask & (1 << i))
 		{
 			addrs[i] = sa;
 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
@@ -139,7 +139,7 @@
 				sa = (struct sockaddr*)(sizeof(struct sockaddr_in6) + (char *)sa);
 #endif
 #endif
-		} 
+		}
 		else
 		{
 			addrs[i] = NULL;
@@ -192,7 +192,7 @@
     mib[5] = 0;
 
 	/* Determine the buffer side needed to get the full routing table */
-    if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) 
+    if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0)
 	{
 		purple_debug_warning("nat-pmp", "sysctl: net.route.0.0.dump estimate\n");
 		return NULL;
@@ -205,7 +205,7 @@
     }
 
 	/* Read the routing table into buf */
-    if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) 
+    if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0)
 	{
 		purple_debug_warning("nat-pmp", "sysctl: net.route.0.0.dump\n");
 		return NULL;
@@ -213,12 +213,12 @@
 
     lim = buf + needed;
 
-    for (next = buf; next < lim; next += rtm->rtm_msglen) 
+    for (next = buf; next < lim; next += rtm->rtm_msglen)
 	{
 		rtm = (struct rt_msghdr *)next;
 		sa = (struct sockaddr *)(rtm + 1);
-		
-		if (sa->sa_family == AF_INET) 
+
+		if (sa->sa_family == AF_INET)
 		{
 			sin = (struct sockaddr_in*) sa;
 
@@ -240,7 +240,7 @@
 					memcpy(&mask, rti_info[RTAX_NETMASK], sizeof(mask));
 
 				if (rtm->rtm_addrs & RTA_GATEWAY &&
-					is_default_route(&addr, &mask)) 
+					is_default_route(&addr, &mask))
 				{
 					if (rti_info[RTAX_GATEWAY]) {
 						struct sockaddr_in *rti_sin = (struct sockaddr_in *)rti_info[RTAX_GATEWAY];
@@ -263,7 +263,7 @@
 }
 
 /*!
- *	purple_pmp_get_public_ip() will return the publicly facing IP address of the 
+ *	purple_pmp_get_public_ip() will return the publicly facing IP address of the
  *	default NAT gateway. The function will return NULL if:
  *		- The gateway doesn't support NAT-PMP
  *		- The gateway errors in some other spectacular fashion
@@ -278,10 +278,10 @@
 	PurplePmpIpRequest req;
 	PurplePmpIpResponse resp;
 	int sendfd;
-	
+
 	if (pmp_info.status == PURPLE_PMP_STATUS_UNABLE_TO_DISCOVER)
 		return NULL;
-	
+
 	if ((pmp_info.status == PURPLE_PMP_STATUS_DISCOVERED) && (pmp_info.publicip != NULL))
 	{
 #ifdef PMP_DEBUG
@@ -318,7 +318,7 @@
 	/* The NAT-PMP spec says we should attempt to contact the gateway 9 times, doubling the time we wait each time.
 	 * Even starting with a timeout of 0.1 seconds, that means that we have a total waiting of 204.6 seconds.
 	 * With the recommended timeout of 0.25 seconds, we're talking 511.5 seconds (8.5 minutes).
-	 * 
+	 *
 	 * This seems really silly... if this were nonblocking, a couple retries might be in order, but it's not at present.
 	 */
 #ifdef PMP_DEBUG
@@ -327,7 +327,7 @@
 #endif
 
 	/* TODO: Non-blocking! */
-	
+
 	if (sendto(sendfd, &req, sizeof(req), 0, (struct sockaddr *)(gateway), sizeof(struct sockaddr)) < 0)
 	{
 		purple_debug_info("nat-pmp", "There was an error sending the NAT-PMP public IP request! (%s)\n", g_strerror(errno));
@@ -370,7 +370,7 @@
 
 	if (!publicsockaddr) {
 		g_free(gateway);
-		
+
 		pmp_info.status = PURPLE_PMP_STATUS_UNABLE_TO_DISCOVER;
 		return NULL;
 	}
@@ -437,7 +437,7 @@
 	/* The NAT-PMP spec says we should attempt to contact the gateway 9 times, doubling the time we wait each time.
 	 * Even starting with a timeout of 0.1 seconds, that means that we have a total waiting of 204.6 seconds.
 	 * With the recommended timeout of 0.25 seconds, we're talking 511.5 seconds (8.5 minutes).
-	 * 
+	 *
 	 * This seems really silly... if this were nonblocking, a couple retries might be in order, but it's not at present.
 	 * XXX Make this nonblocking.
 	 * XXX This code looks like the pmp_get_public_ip() code. Can it be consolidated?
--- a/libpurple/network.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/network.c	Wed Mar 04 16:52:47 2009 +0000
@@ -96,6 +96,10 @@
 static NMState nm_get_network_state(void);
 #endif
 
+#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32)
+static gboolean force_online;
+#endif
+
 const unsigned char *
 purple_network_ip_atoi(const char *ip)
 {
@@ -671,6 +675,9 @@
 purple_network_is_available(void)
 {
 #ifdef HAVE_NETWORKMANAGER
+	if (force_online)
+		return TRUE;
+
 	if (!have_nm_state)
 	{
 		have_nm_state = TRUE;
@@ -685,12 +692,20 @@
 	return FALSE;
 
 #elif defined _WIN32
-	return (current_network_count > 0);
+	return (current_network_count > 0 || force_online);
 #else
 	return TRUE;
 #endif
 }
 
+void
+purple_network_force_online()
+{
+#if defined(HAVE_NETWORKMANAGER) || defined(_WIN32)
+	force_online = TRUE;
+#endif
+}
+
 #ifdef HAVE_NETWORKMANAGER
 static void
 nm_update_state(NMState state)
--- a/libpurple/network.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/network.h	Wed Mar 04 16:52:47 2009 +0000
@@ -208,6 +208,17 @@
 gboolean purple_network_is_available(void);
 
 /**
+ * Makes purple_network_is_available() always return @c TRUE.
+ *
+ * This is what backs the --force-online command line argument in Pidgin,
+ * for example.  This is useful for offline testing, especially when
+ * combined with nullprpl.
+ *
+ * @since 2.6.0
+ */
+void purple_network_force_online(void);
+
+/**
  * Get the handle for the network system
  *
  * @return the handle to the network system
--- a/libpurple/notify.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/notify.c	Wed Mar 04 16:52:47 2009 +0000
@@ -444,7 +444,7 @@
 purple_notify_user_info_entry_new(const char *label, const char *value)
 {
 	PurpleNotifyUserInfoEntry *user_info_entry;
-	
+
 	user_info_entry = g_new0(PurpleNotifyUserInfoEntry, 1);
 	PURPLE_DBUS_REGISTER_POINTER(user_info_entry, PurpleNotifyUserInfoEntry);
 	user_info_entry->label = g_strdup(label);
@@ -458,7 +458,7 @@
 purple_notify_user_info_entry_destroy(PurpleNotifyUserInfoEntry *user_info_entry)
 {
 	g_return_if_fail(user_info_entry != NULL);
-	
+
 	g_free(user_info_entry->label);
 	g_free(user_info_entry->value);
 	PURPLE_DBUS_UNREGISTER_POINTER(user_info_entry);
@@ -469,11 +469,11 @@
 purple_notify_user_info_new()
 {
 	PurpleNotifyUserInfo *user_info;
-	
+
 	user_info = g_new0(PurpleNotifyUserInfo, 1);
 	PURPLE_DBUS_REGISTER_POINTER(user_info, PurpleNotifyUserInfo);
 	user_info->user_info_entries = NULL;
-	
+
 	return user_info;
 }
 
@@ -484,10 +484,10 @@
 
 	for (l = user_info->user_info_entries; l != NULL; l = l->next) {
 		PurpleNotifyUserInfoEntry *user_info_entry = l->data;
-		
+
 		purple_notify_user_info_entry_destroy(user_info_entry);
 	}
-	
+
 	g_list_free(user_info->user_info_entries);
 	PURPLE_DBUS_UNREGISTER_POINTER(user_info);
 	g_free(user_info);
@@ -506,7 +506,7 @@
 {
 	GList *l;
 	GString *text;
-	
+
 	text = g_string_new("");
 
 	for (l = user_info->user_info_entries; l != NULL; l = l->next) {
@@ -532,7 +532,7 @@
 		if ((user_info_entry->type != PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK) &&
 			(l->next && ((((PurpleNotifyUserInfoEntry *)(l->next->data))->type != PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_BREAK))))
 			g_string_append(text, newline);
-		
+
 		/* Add an extra newline after a section header */
 		if (user_info_entry->type == PURPLE_NOTIFY_USER_INFO_ENTRY_SECTION_HEADER)
 			g_string_append(text, newline);
@@ -563,7 +563,7 @@
 purple_notify_user_info_entry_get_value(PurpleNotifyUserInfoEntry *user_info_entry)
 {
 	g_return_val_if_fail(user_info_entry != NULL, NULL);
-	
+
 	return user_info_entry->value;
 }
 
@@ -596,7 +596,7 @@
 purple_notify_user_info_add_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value)
 {
 	PurpleNotifyUserInfoEntry *entry;
-	
+
 	entry = purple_notify_user_info_entry_new(label, value);
 	user_info->user_info_entries = g_list_append(user_info->user_info_entries, entry);
 }
@@ -623,7 +623,7 @@
 purple_notify_user_info_add_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;
 
@@ -634,10 +634,10 @@
 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);
 }
 
@@ -645,7 +645,7 @@
 purple_notify_user_info_add_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;
 
@@ -656,10 +656,10 @@
 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);
 }
 
--- a/libpurple/notify.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/notify.h	Wed Mar 04 16:52:47 2009 +0000
@@ -291,6 +291,7 @@
  */
 void purple_notify_searchresults_row_add(PurpleNotifySearchResults *results,
 									   GList *row);
+
 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_NOTIFY_C_)
 /**
  * Returns a number of the rows in the search results object.
@@ -558,14 +559,21 @@
  */
 void purple_notify_user_info_prepend_pair(PurpleNotifyUserInfo *user_info, const char *label, const char *value);
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_NOTIFY_C_)
 /**
  * Remove a PurpleNotifyUserInfoEntry from a PurpleNotifyUserInfo object
  * without freeing the entry.
  *
  * @param user_info        The PurpleNotifyUserInfo
  * @param user_info_entry  The PurpleNotifyUserInfoEntry
+ *
+ * @deprecated Nothing is using this function and it should be removed
+ *             in 3.0.0.  Or, if we decide we want to keep it in 3.0.0
+ *             then we should make purple_notify_user_info_entry_destroy
+ *             public so that entries can be free'd after they're removed.
  */
 void purple_notify_user_info_remove_entry(PurpleNotifyUserInfo *user_info, PurpleNotifyUserInfoEntry *user_info_entry);
+#endif
 
 /**
  * Create a new PurpleNotifyUserInfoEntry
--- a/libpurple/ntlm.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/ntlm.h	Wed Mar 04 16:52:47 2009 +0000
@@ -46,7 +46,7 @@
  *
  * @param type2 String containing the base64 encoded type2 message
  * @param flags If not @c NULL, this will store the flags for the message
- * 
+ *
  * @return The nonce for use in message type3.  This is a statically
  *         allocated 8 byte binary string.
  */
--- a/libpurple/plugin.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugin.c	Wed Mar 04 16:52:47 2009 +0000
@@ -218,7 +218,7 @@
 	g_free(basename);
 	if (plugin != NULL)
 	{
-		if (!strcmp(filename, plugin->path))
+		if (purple_strequal(filename, plugin->path))
 			return plugin;
 		else if (!purple_plugin_is_unloadable(plugin))
 		{
@@ -357,7 +357,7 @@
 		return NULL;
 	}
 	else if (plugin->info->ui_requirement &&
-			strcmp(plugin->info->ui_requirement, purple_core_get_ui()))
+			!purple_strequal(plugin->info->ui_requirement, purple_core_get_ui()))
 	{
 		plugin->error = g_strdup_printf(_("You are using %s, but this plugin requires %s."),
 					purple_core_get_ui(), plugin->info->ui_requirement);
@@ -1538,7 +1538,7 @@
 	for (l = plugins; l != NULL; l = l->next) {
 		plugin = l->data;
 
-		if (!strcmp(plugin->info->name, name))
+		if (purple_strequal(plugin->info->name, name))
 			return plugin;
 	}
 
@@ -1554,7 +1554,7 @@
 	for (l = plugins; l != NULL; l = l->next) {
 		plugin = l->data;
 
-		if (plugin->path != NULL && !strcmp(plugin->path, filename))
+		if (purple_strequal(plugin->path, filename))
 			return plugin;
 	}
 
@@ -1577,7 +1577,7 @@
 
 		if (plugin->path != NULL) {
 			tmp = purple_plugin_get_basename(plugin->path);
-			if (!strcmp(tmp, basename))
+			if (purple_strequal(tmp, basename))
 			{
 				g_free(tmp);
 				return plugin;
@@ -1603,7 +1603,7 @@
 	{
 		plugin = l->data;
 
-		if (plugin->info->id != NULL && !strcmp(plugin->info->id, id))
+		if (purple_strequal(plugin->info->id, id))
 			return plugin;
 	}
 
--- a/libpurple/plugin.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugin.h	Wed Mar 04 16:52:47 2009 +0000
@@ -188,7 +188,7 @@
 	/** NULL for plugin actions menu, set to the PurpleConnection for
 	    account actions menu */
 	gpointer context;
-	
+
 	gpointer user_data;
 };
 
@@ -363,7 +363,7 @@
  * Returns a plugin's name.
  *
  * @param plugin The plugin.
- * 
+ *
  * @return THe name of the plugin, or @c NULL.
  */
 const gchar *purple_plugin_get_name(const PurplePlugin *plugin);
--- a/libpurple/plugins/Makefile.am	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugins/Makefile.am	Wed Mar 04 16:52:47 2009 +0000
@@ -36,6 +36,7 @@
 newline_la_LDFLAGS          = -module -avoid-version
 notify_example_la_LDFLAGS   = -module -avoid-version
 offlinemsg_la_LDFLAGS       = -module -avoid-version
+one_time_password_la_LDFLAGS	= -module -avoid-version
 pluginpref_example_la_LDFLAGS = -module -avoid-version
 psychic_la_LDFLAGS          = -module -avoid-version
 signals_test_la_LDFLAGS		= -module -avoid-version
@@ -65,6 +66,7 @@
 	debug_example.la \
 	helloworld.la \
 	notify_example.la \
+	one_time_password.la \
 	pluginpref_example.la \
 	signals_test.la \
 	simple.la
@@ -81,6 +83,7 @@
 newline_la_SOURCES          = newline.c
 notify_example_la_SOURCES   = notify_example.c
 offlinemsg_la_SOURCES       = offlinemsg.c
+one_time_password_la_SOURCES	= one_time_password.c
 pluginpref_example_la_SOURCES = pluginpref_example.c
 psychic_la_SOURCES          = psychic.c
 signals_test_la_SOURCES		= signals-test.c
@@ -97,6 +100,7 @@
 newline_la_LIBADD           = $(GLIB_LIBS)
 notify_example_la_LIBADD    = $(GLIB_LIBS)
 offlinemsg_la_LIBADD        = $(GLIB_LIBS)
+one_time_password_la_LIBADD = $(GLIB_LIBS)
 pluginpref_example_la_LIBADD = $(GLIB_LIBS)
 psychic_la_LIBADD           = $(GLIB_LIBS)
 signals_test_la_LIBADD		= $(GLIB_LIBS)
--- a/libpurple/plugins/Makefile.mingw	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugins/Makefile.mingw	Wed Mar 04 16:52:47 2009 +0000
@@ -1,7 +1,7 @@
 #
 # Makefile.mingw
 #
-# Description: Makefile for win32 (mingw) version of LibPurple Plugins 
+# Description: Makefile for win32 (mingw) version of libpurple Plugins
 #
 
 PIDGIN_TREE_TOP := ../..
--- a/libpurple/plugins/autoaccept.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugins/autoaccept.c	Wed Mar 04 16:52:47 2009 +0000
@@ -95,7 +95,7 @@
 	char *dirname;
 
 	account = xfer->account;
-	node = (PurpleBlistNode *)purple_find_buddy(account, xfer->who);
+	node = PURPLE_BLIST_NODE(purple_find_buddy(account, xfer->who));
 
 	if (!node)
 	{
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/plugins/one_time_password.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,151 @@
+/*
+ * One Time Password support plugin for libpurple
+ *
+ * Copyright (C) 2009, Daniel Atallah <datallah@pidgin.im>
+ *
+ * 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 "debug.h"
+#include "plugin.h"
+#include "version.h"
+#include "account.h"
+#include "accountopt.h"
+
+#define PLUGIN_ID "core-one_time_password"
+#define PREF_NAME PLUGIN_ID "_enabled"
+
+static void
+signed_on_cb(PurpleConnection *conn, void *data)
+{
+	PurpleAccount *account = purple_connection_get_account(conn);
+
+	if (purple_account_get_bool(account, PREF_NAME, FALSE)) {
+		if(purple_account_get_remember_password(account))
+			purple_debug_error("One Time Password",
+					   "Unable to enforce one time password for account %s (%s).\n"
+					   "Account is set to remember the password.\n",
+					   purple_account_get_username(account),
+					   purple_account_get_protocol_name(account));
+		else {
+
+			purple_debug_info("One Time Password", "Clearing password for account %s (%s).\n",
+					  purple_account_get_username(account),
+					  purple_account_get_protocol_name(account));
+
+			purple_account_set_password(account, NULL);
+			/* TODO: Do we need to somehow clear conn->password ? */
+		}
+	}
+}
+
+static gboolean
+plugin_load(PurplePlugin *plugin)
+{
+	PurplePlugin *prpl;
+	PurplePluginProtocolInfo *prpl_info;
+	PurpleAccountOption *option;
+	GList *l;
+
+	/* Register protocol preference. */
+	for (l = purple_plugins_get_protocols(); l != NULL; l = l->next) {
+		prpl = (PurplePlugin *)l->data;
+		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+		if (prpl_info != NULL && !(prpl_info->options & OPT_PROTO_NO_PASSWORD)) {
+			option = purple_account_option_bool_new(_("One Time Password"),
+								PREF_NAME, FALSE);
+			prpl_info->protocol_options = g_list_append(prpl_info->protocol_options, option);
+		}
+	}
+
+	/* Register callback. */
+	purple_signal_connect(purple_connections_get_handle(), "signed-on",
+			      plugin, PURPLE_CALLBACK(signed_on_cb), NULL);
+
+	return TRUE;
+}
+
+static gboolean
+plugin_unload(PurplePlugin *plugin)
+{
+	PurplePlugin *prpl;
+	PurplePluginProtocolInfo *prpl_info;
+	PurpleAccountOption *option;
+	GList *l, *options;
+
+	/* Remove protocol preference. */
+	for (l = purple_plugins_get_protocols(); l != NULL; l = l->next) {
+		prpl = (PurplePlugin *)l->data;
+		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+		if (prpl_info != NULL && !(prpl_info->options & OPT_PROTO_NO_PASSWORD)) {
+			options = prpl_info->protocol_options;
+			while (options != NULL) {
+				option = (PurpleAccountOption *) options->data;
+				if (strcmp(PREF_NAME, purple_account_option_get_setting(option)) == 0) {
+					prpl_info->protocol_options = g_list_delete_link(prpl_info->protocol_options, options);
+					purple_account_option_destroy(option);
+					break;
+				}
+				options = options->next;
+			}
+		}
+	}
+
+	/* Callback will be automagically unregistered */
+
+	return TRUE;
+}
+
+static PurplePluginInfo info =
+{
+	PURPLE_PLUGIN_MAGIC,
+	PURPLE_MAJOR_VERSION,
+	PURPLE_MINOR_VERSION,
+	PURPLE_PLUGIN_STANDARD,				/**< type           */
+	NULL,						/**< ui_requirement */
+	0,						/**< flags          */
+	NULL,						/**< dependencies   */
+	PURPLE_PRIORITY_DEFAULT,			/**< priority       */
+	PLUGIN_ID,					/**< id             */
+	N_("One Time Password Support"),		/**< name           */
+	DISPLAY_VERSION,				/**< version        */
+							/**  summary        */
+	N_("Enforce that passwords are used only once."),
+							/**  description    */
+	N_("Allows you to enforce on a per-account basis that passwords not "
+	   "being saved are only used in a single successful connection.\n"
+	   "Note: The account password must not be saved for this to work."),
+	"Daniel Atallah <datallah@pidgin.im>",		/**< author         */
+	PURPLE_WEBSITE,					/**< homepage       */
+	plugin_load,					/**< load           */
+	plugin_unload,					/**< unload         */
+	NULL,						/**< destroy        */
+	NULL,						/**< ui_info        */
+	NULL,						/**< extra_info     */
+	NULL,						/**< prefs_info     */
+	NULL,						/**< actions        */
+	NULL,						/**< reserved 1     */
+	NULL,						/**< reserved 2     */
+	NULL,						/**< reserved 3     */
+	NULL						/**< reserved 4     */
+};
+
+static void
+init_plugin(PurplePlugin *plugin)
+{
+}
+
+PURPLE_INIT_PLUGIN(one_time_password, init_plugin, info)
--- a/libpurple/plugins/perl/common/BuddyList.xs	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugins/perl/common/BuddyList.xs	Wed Mar 04 16:52:47 2009 +0000
@@ -363,9 +363,9 @@
 PROTOTYPES: ENABLE
 
 Purple::BuddyList::Buddy
-purple_buddy_new(account, screenname, alias)
+purple_buddy_new(account, name, alias)
 	Purple::Account account
-	const char *screenname
+	const char *name
 	const char *alias
 
 const char *
--- a/libpurple/plugins/perl/common/Request.xs	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugins/perl/common/Request.xs	Wed Mar 04 16:52:47 2009 +0000
@@ -211,10 +211,11 @@
 PROTOTYPES: ENABLE
 
 Purple::Request::Field
-purple_request_field_account_new(id, text, account = NULL)
+purple_request_field_account_new(class, id, text, account = NULL)
 	const char *id
 	const char *text
 	Purple::Account account
+	C_ARGS: id, text, account
 
 Purple::Account
 purple_request_field_account_get_default_value(field)
@@ -255,10 +256,11 @@
 PROTOTYPES: ENABLE
 
 Purple::Request::Field
-purple_request_field_bool_new(id, text, default_value = TRUE)
+purple_request_field_bool_new(class, id, text, default_value = TRUE)
 	const char *id
 	const char *text
 	gboolean default_value
+	C_ARGS: id, text, default_value
 
 gboolean
 purple_request_field_bool_get_default_value(field)
@@ -282,10 +284,11 @@
 PROTOTYPES: ENABLE
 
 Purple::Request::Field
-purple_request_field_choice_new(id, text, default_value = 0)
+purple_request_field_choice_new(class, id, text, default_value = 0)
 	const char *id
 	const char *text
 	int default_value
+	C_ARGS: id, text, default_value
 
 void
 purple_request_field_choice_add(field, label)
@@ -324,10 +327,11 @@
 PROTOTYPES: ENABLE
 
 Purple::Request::Field
-purple_request_field_int_new(id, text, default_value = 0)
+purple_request_field_int_new(clas, id, text, default_value = 0)
 	const char *id
 	const char *text
 	int default_value
+	C_ARGS: id, text, default_value
 
 int
 purple_request_field_int_get_default_value(field)
@@ -355,17 +359,19 @@
 PROTOTYPES: ENABLE
 
 Purple::Request::Field
-purple_request_field_label_new(id, text)
+purple_request_field_label_new(class, id, text)
 	const char *id
 	const char *text
+	C_ARGS: id, text
 
 MODULE = Purple::Request  PACKAGE = Purple::Request::Field  PREFIX = purple_request_field_
 PROTOTYPES: ENABLE
 
 Purple::Request::Field
-purple_request_field_list_new(id, text)
+purple_request_field_list_new(class, id, text)
 	const char *id
 	const char *text
+	C_ARGS: id, text
 
 void
 purple_request_field_list_add(field, item, data)
@@ -425,10 +431,11 @@
 PROTOTYPES: ENABLE
 
 Purple::Request::Field
-purple_request_field_new(id, text, type)
+purple_request_field_new(class, id, text, type)
 	const char *id
 	const char *text
 	Purple::RequestFieldType type
+	C_ARGS: id, text, type
 
 void
 purple_request_field_set_label(field, label)
@@ -454,11 +461,12 @@
 PROTOTYPES: ENABLE
 
 Purple::Request::Field
-purple_request_field_string_new(id, text, default_value, multiline)
+purple_request_field_string_new(class, id, text, default_value, multiline)
 	const char *id
 	const char *text
 	const char *default_value
 	gboolean multiline
+	C_ARGS: id, text, default_value, multiline
 
 const char *
 purple_request_field_string_get_default_value(field)
@@ -527,8 +535,9 @@
 	Purple::Request::Field::Group group
 
 Purple::Request::Field::Group
-purple_request_field_group_new(title)
+purple_request_field_group_new(class, title)
 	const char *title
+	C_ARGS: title
 
 MODULE = Purple::Request  PACKAGE = Purple::Request::Field  PREFIX = purple_request_field_
 PROTOTYPES: ENABLE
@@ -561,7 +570,8 @@
 PROTOTYPES: ENABLE
 
 Purple::Request::Fields
-purple_request_fields_new()
+purple_request_fields_new(class)
+	C_ARGS: /* void */
 
 void
 purple_request_fields_add_group(fields, group)
--- a/libpurple/plugins/ssl/ssl-gnutls.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugins/ssl/ssl-gnutls.c	Wed Mar 04 16:52:47 2009 +0000
@@ -256,9 +256,13 @@
 	gsc->private_data = gnutls_data;
 
 	gnutls_init(&gnutls_data->session, GNUTLS_CLIENT);
+#ifdef HAVE_GNUTLS_PRIORITY_FUNCS
 	if (gnutls_priority_set_direct(gnutls_data->session,
 		                             "NORMAL:%SSL3_RECORD_VERSION", NULL))
 		gnutls_priority_set_direct(gnutls_data->session, "NORMAL", NULL);
+#else
+	gnutls_set_default_priority(gnutls_data->session);
+#endif
 
 	gnutls_certificate_type_set_priority(gnutls_data->session,
 		cert_type_priority);
--- a/libpurple/plugins/statenotify.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugins/statenotify.c	Wed Mar 04 16:52:47 2009 +0000
@@ -33,7 +33,7 @@
 	g_return_if_fail(conv->type == PURPLE_CONV_TYPE_IM);
 
 	/* Prevent duplicate notifications for buddies in multiple groups */
-	if (buddy != purple_find_buddy(buddy->account, buddy->name))
+	if (buddy != purple_find_buddy(account, buddy_name))
 		return;
 
 	who = purple_buddy_get_alias(buddy);
--- a/libpurple/plugins/tcl/tcl_cmds.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/plugins/tcl/tcl_cmds.c	Wed Mar 04 16:52:47 2009 +0000
@@ -401,9 +401,9 @@
 		return NULL;
 
 	if (!strcmp(type, "buddy")) {
-		node = (PurpleBlistNode *)purple_find_buddy(account, name);
+		node = PURPLE_BLIST_NODE(purple_find_buddy(account, name));
 	} else if (!strcmp(type, "group")) {
-		node = (PurpleBlistNode *)purple_blist_find_chat(account, name);
+		node = PURPLE_BLIST_NODE(purple_blist_find_chat(account, name));
 	}
 
 	return node;
@@ -1495,9 +1495,12 @@
 	enum { CMD_STATUS_ATTR, CMD_STATUS_TYPE } cmd;
 	PurpleStatus *status;
 	PurpleStatusType *status_type;
+	int error;
+#if !(defined PURPLE_DISABLE_DEPRECATED)
 	PurpleValue *value;
 	const char *attr;
-	int error, v;
+	int v;
+#endif
 
 	if (objc < 2) {
 		Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
@@ -1509,6 +1512,7 @@
 
 	switch (cmd) {
 	case CMD_STATUS_ATTR:
+#if !(defined PURPLE_DISABLE_DEPRECATED)
 		if (objc != 4 && objc != 5) {
 			Tcl_WrongNumArgs(interp, 2, objv, "status attr_id ?value?");
 			return TCL_ERROR;
@@ -1554,6 +1558,7 @@
                                          Tcl_NewStringObj("attribute has unknown type", -1));
 			return TCL_ERROR;
 		}
+#endif
 		break;
 	case CMD_STATUS_TYPE:
 		if (objc != 3) {
@@ -1727,6 +1732,7 @@
 						  (purple_status_type_get_primitive(status_type)), -1));
 		break;
 	case CMD_STATUS_TYPE_PRIMARY_ATTR:
+#if !(defined PURPLE_DISABLE_DEPRECATED)
 		if (objc != 3) {
 			Tcl_WrongNumArgs(interp, 2, objv, "statustype");
 			return TCL_ERROR;
@@ -1735,6 +1741,7 @@
 			return TCL_ERROR;
 		Tcl_SetObjResult(interp,
 				 Tcl_NewStringObj(purple_status_type_get_primary_attr(status_type), -1));
+#endif
 		break;
 	case CMD_STATUS_TYPE_SAVEABLE:
 		if (objc != 3) {
--- a/libpurple/pounce.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/pounce.c	Wed Mar 04 16:52:47 2009 +0000
@@ -326,7 +326,7 @@
 		data->buffer = NULL;
 	}
 
-	if (!strcmp(element_name, "pounce")) {
+	if (purple_strequal(element_name, "pounce")) {
 		const char *ui = g_hash_table_lookup(atts, "ui");
 
 		if (ui == NULL) {
@@ -338,7 +338,7 @@
 
 		data->events = 0;
 	}
-	else if (!strcmp(element_name, "account")) {
+	else if (purple_strequal(element_name, "account")) {
 		const char *protocol_id = g_hash_table_lookup(atts, "protocol");
 
 		if (protocol_id == NULL) {
@@ -348,7 +348,7 @@
 		else
 			data->protocol_id = g_strdup(protocol_id);
 	}
-	else if (!strcmp(element_name, "option")) {
+	else if (purple_strequal(element_name, "option")) {
 		const char *type = g_hash_table_lookup(atts, "type");
 
 		if (type == NULL) {
@@ -358,7 +358,7 @@
 		else
 			data->option_type = g_strdup(type);
 	}
-	else if (!strcmp(element_name, "event")) {
+	else if (purple_strequal(element_name, "event")) {
 		const char *type = g_hash_table_lookup(atts, "type");
 
 		if (type == NULL) {
@@ -368,7 +368,7 @@
 		else
 			data->event_type = g_strdup(type);
 	}
-	else if (!strcmp(element_name, "action")) {
+	else if (purple_strequal(element_name, "action")) {
 		const char *type = g_hash_table_lookup(atts, "type");
 
 		if (type == NULL) {
@@ -378,7 +378,7 @@
 		else
 			data->action_name = g_strdup(type);
 	}
-	else if (!strcmp(element_name, "param")) {
+	else if (purple_strequal(element_name, "param")) {
 		const char *param_name = g_hash_table_lookup(atts, "name");
 
 		if (param_name == NULL) {
@@ -404,7 +404,7 @@
 		data->buffer = NULL;
 	}
 
-	if (!strcmp(element_name, "account")) {
+	if (purple_strequal(element_name, "account")) {
 		char *tmp;
 		g_free(data->account_name);
 		data->account_name = g_strdup(buffer);
@@ -412,43 +412,43 @@
 		data->protocol_id = g_strdup(_purple_oscar_convert(buffer, tmp));
 		g_free(tmp);
 	}
-	else if (!strcmp(element_name, "pouncee")) {
+	else if (purple_strequal(element_name, "pouncee")) {
 		g_free(data->pouncee);
 		data->pouncee = g_strdup(buffer);
 	}
-	else if (!strcmp(element_name, "option")) {
-		if (!strcmp(data->option_type, "on-away"))
+	else if (purple_strequal(element_name, "option")) {
+		if (purple_strequal(data->option_type, "on-away"))
 			data->options |= PURPLE_POUNCE_OPTION_AWAY;
 
 		g_free(data->option_type);
 		data->option_type = NULL;
 	}
-	else if (!strcmp(element_name, "event")) {
-		if (!strcmp(data->event_type, "sign-on"))
+	else if (purple_strequal(element_name, "event")) {
+		if (purple_strequal(data->event_type, "sign-on"))
 			data->events |= PURPLE_POUNCE_SIGNON;
-		else if (!strcmp(data->event_type, "sign-off"))
+		else if (purple_strequal(data->event_type, "sign-off"))
 			data->events |= PURPLE_POUNCE_SIGNOFF;
-		else if (!strcmp(data->event_type, "away"))
+		else if (purple_strequal(data->event_type, "away"))
 			data->events |= PURPLE_POUNCE_AWAY;
-		else if (!strcmp(data->event_type, "return-from-away"))
+		else if (purple_strequal(data->event_type, "return-from-away"))
 			data->events |= PURPLE_POUNCE_AWAY_RETURN;
-		else if (!strcmp(data->event_type, "idle"))
+		else if (purple_strequal(data->event_type, "idle"))
 			data->events |= PURPLE_POUNCE_IDLE;
-		else if (!strcmp(data->event_type, "return-from-idle"))
+		else if (purple_strequal(data->event_type, "return-from-idle"))
 			data->events |= PURPLE_POUNCE_IDLE_RETURN;
-		else if (!strcmp(data->event_type, "start-typing"))
+		else if (purple_strequal(data->event_type, "start-typing"))
 			data->events |= PURPLE_POUNCE_TYPING;
-		else if (!strcmp(data->event_type, "typed"))
+		else if (purple_strequal(data->event_type, "typed"))
 			data->events |= PURPLE_POUNCE_TYPED;
-		else if (!strcmp(data->event_type, "stop-typing"))
+		else if (purple_strequal(data->event_type, "stop-typing"))
 			data->events |= PURPLE_POUNCE_TYPING_STOPPED;
-		else if (!strcmp(data->event_type, "message-received"))
+		else if (purple_strequal(data->event_type, "message-received"))
 			data->events |= PURPLE_POUNCE_MESSAGE_RECEIVED;
 
 		g_free(data->event_type);
 		data->event_type = NULL;
 	}
-	else if (!strcmp(element_name, "action")) {
+	else if (purple_strequal(element_name, "action")) {
 		if (data->pounce != NULL) {
 			purple_pounce_action_register(data->pounce, data->action_name);
 			purple_pounce_action_set_enabled(data->pounce, data->action_name, TRUE);
@@ -457,7 +457,7 @@
 		g_free(data->action_name);
 		data->action_name = NULL;
 	}
-	else if (!strcmp(element_name, "param")) {
+	else if (purple_strequal(element_name, "param")) {
 		if (data->pounce != NULL) {
 			purple_pounce_action_set_attribute(data->pounce, data->action_name,
 											 data->param_name, buffer);
@@ -466,7 +466,7 @@
 		g_free(data->param_name);
 		data->param_name = NULL;
 	}
-	else if (!strcmp(element_name, "events")) {
+	else if (purple_strequal(element_name, "events")) {
 		PurpleAccount *account;
 
 		account = purple_accounts_find(data->account_name, data->protocol_id);
@@ -499,11 +499,11 @@
 		g_free(data->pouncee);
 		data->pouncee = NULL;
 	}
-	else if (!strcmp(element_name, "save")) {
+	else if (purple_strequal(element_name, "save")) {
 		if (data->pounce != NULL)
 			purple_pounce_set_save(data->pounce, TRUE);
 	}
-	else if (!strcmp(element_name, "pounce")) {
+	else if (purple_strequal(element_name, "pounce")) {
 		data->pounce  = NULL;
 		data->events  = 0;
 		data->options = 0;
@@ -1023,7 +1023,7 @@
 
 	for (iter = pounces; iter; iter = iter->next) {
 		PurplePounce *pounce = iter->data;
-		if (pounce->ui_type && strcmp(pounce->ui_type, ui) == 0)
+		if (purple_strequal(pounce->ui_type, ui))
 			list = g_list_prepend(list, pounce);
 	}
 	list = g_list_reverse(list);
@@ -1042,35 +1042,39 @@
 static void
 buddy_state_cb(PurpleBuddy *buddy, PurplePounceEvent event)
 {
-	purple_pounce_execute(buddy->account, buddy->name, event);
+	PurpleAccount *account = purple_buddy_get_account(buddy);
+	const gchar *name = purple_buddy_get_name(buddy);
+
+	purple_pounce_execute(account, name, event);
 }
 
 static void
 buddy_status_changed_cb(PurpleBuddy *buddy, PurpleStatus *old_status,
                         PurpleStatus *status)
 {
+	PurpleAccount *account = purple_buddy_get_account(buddy);
+	const gchar *name = purple_buddy_get_name(buddy);
 	gboolean old_available, available;
 
 	available = purple_status_is_available(status);
 	old_available = purple_status_is_available(old_status);
 
 	if (available && !old_available)
-		purple_pounce_execute(buddy->account, buddy->name,
-		                    PURPLE_POUNCE_AWAY_RETURN);
+		purple_pounce_execute(account, name, PURPLE_POUNCE_AWAY_RETURN);
 	else if (!available && old_available)
-		purple_pounce_execute(buddy->account, buddy->name,
-		                    PURPLE_POUNCE_AWAY);
+		purple_pounce_execute(account, name, PURPLE_POUNCE_AWAY);
 }
 
 static void
 buddy_idle_changed_cb(PurpleBuddy *buddy, gboolean old_idle, gboolean idle)
 {
+	PurpleAccount *account = purple_buddy_get_account(buddy);
+	const gchar *name = purple_buddy_get_name(buddy);
+
 	if (idle && !old_idle)
-		purple_pounce_execute(buddy->account, buddy->name,
-		                    PURPLE_POUNCE_IDLE);
+		purple_pounce_execute(account, name, PURPLE_POUNCE_IDLE);
 	else if (!idle && old_idle)
-		purple_pounce_execute(buddy->account, buddy->name,
-		                    PURPLE_POUNCE_IDLE_RETURN);
+		purple_pounce_execute(account, name, PURPLE_POUNCE_IDLE_RETURN);
 }
 
 static void
--- a/libpurple/prefs.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/prefs.c	Wed Mar 04 16:52:47 2009 +0000
@@ -250,33 +250,34 @@
 	GString *pref_name_full;
 	GList *tmp;
 
-	if(strcmp(element_name, "pref") && strcmp(element_name, "item"))
+	if(!purple_strequal(element_name, "pref") &&
+	   !purple_strequal(element_name, "item"))
 		return;
 
 	for(i = 0; attribute_names[i]; i++) {
-		if(!strcmp(attribute_names[i], "name")) {
+		if(purple_strequal(attribute_names[i], "name")) {
 			pref_name = attribute_values[i];
-		} else if(!strcmp(attribute_names[i], "type")) {
-			if(!strcmp(attribute_values[i], "bool"))
+		} else if(purple_strequal(attribute_names[i], "type")) {
+			if(purple_strequal(attribute_values[i], "bool"))
 				pref_type = PURPLE_PREF_BOOLEAN;
-			else if(!strcmp(attribute_values[i], "int"))
+			else if(purple_strequal(attribute_values[i], "int"))
 				pref_type = PURPLE_PREF_INT;
-			else if(!strcmp(attribute_values[i], "string"))
+			else if(purple_strequal(attribute_values[i], "string"))
 				pref_type = PURPLE_PREF_STRING;
-			else if(!strcmp(attribute_values[i], "stringlist"))
+			else if(purple_strequal(attribute_values[i], "stringlist"))
 				pref_type = PURPLE_PREF_STRING_LIST;
-			else if(!strcmp(attribute_values[i], "path"))
+			else if(purple_strequal(attribute_values[i], "path"))
 				pref_type = PURPLE_PREF_PATH;
-			else if(!strcmp(attribute_values[i], "pathlist"))
+			else if(purple_strequal(attribute_values[i], "pathlist"))
 				pref_type = PURPLE_PREF_PATH_LIST;
 			else
 				return;
-		} else if(!strcmp(attribute_names[i], "value")) {
+		} else if(purple_strequal(attribute_names[i], "value")) {
 			pref_value = attribute_values[i];
 		}
 	}
 
-	if(!strcmp(element_name, "item")) {
+	if(purple_strequal(element_name, "item")) {
 		struct purple_pref *pref;
 
 		pref_name_full = g_string_new("");
@@ -301,7 +302,7 @@
 	} else {
 		char *decoded;
 
-		if(!pref_name || !strcmp(pref_name, "/"))
+		if(!pref_name || purple_strequal(pref_name, "/"))
 			return;
 
 		pref_name_full = g_string_new(pref_name);
@@ -352,7 +353,7 @@
 						  const gchar *element_name,
 						  gpointer user_data, GError **error)
 {
-	if(prefs_stack && !strcmp(element_name, "pref")) {
+	if(prefs_stack && purple_strequal(element_name, "pref")) {
 		g_free(prefs_stack->data);
 		prefs_stack = g_list_delete_link(prefs_stack, prefs_stack);
 	}
@@ -521,7 +522,7 @@
 	char *parent_name = get_path_dirname(name);
 	struct purple_pref *ret = &prefs;
 
-	if(strcmp(parent_name, "/")) {
+	if(!purple_strequal(parent_name, "/")) {
 		ret = find_pref(parent_name);
 	}
 
@@ -571,7 +572,7 @@
 	my_name = get_path_basename(name);
 
 	for(sibling = parent->first_child; sibling; sibling = sibling->sibling) {
-		if(!strcmp(sibling->name, my_name)) {
+		if(purple_strequal(sibling->name, my_name)) {
 			g_free(my_name);
 			return NULL;
 		}
@@ -849,10 +850,7 @@
 			return;
 		}
 
-		if((value && !pref->value.string) ||
-				(!value && pref->value.string) ||
-				(value && pref->value.string &&
-				 strcmp(pref->value.string, value))) {
+		if (!purple_strequal(pref->value.string, value)) {
 			g_free(pref->value.string);
 			pref->value.string = g_strdup(value);
 			do_callbacks(name, pref);
@@ -909,10 +907,7 @@
 			return;
 		}
 
-		if((value && !pref->value.string) ||
-				(!value && pref->value.string) ||
-				(value && pref->value.string &&
-				 strcmp(pref->value.string, value))) {
+		if (!purple_strequal(pref->value.string, value)) {
 			g_free(pref->value.string);
 			pref->value.string = g_strdup(value);
 			do_callbacks(name, pref);
@@ -1106,7 +1101,7 @@
 		next = child->sibling;
 		for(newchild = newpref->first_child; newchild != NULL; newchild = newchild->sibling)
 		{
-			if(!strcmp(child->name, newchild->name))
+			if(purple_strequal(child->name, newchild->name))
 			{
 				purple_prefs_rename_node(child, newchild);
 				break;
--- a/libpurple/prefs.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/prefs.h	Wed Mar 04 16:52:47 2009 +0000
@@ -67,8 +67,8 @@
 #endif
 
 /**************************************************************************/
-/** @name Prefs API                                                       
-    Preferences are named according to a directory-like structure.        
+/** @name Prefs API
+    Preferences are named according to a directory-like structure.
     Example: "/plugins/core/potato/is_from_idaho" (probably a boolean)    */
 /**************************************************************************/
 /*@{*/
--- a/libpurple/privacy.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/privacy.c	Wed Mar 04 16:52:47 2009 +0000
@@ -232,8 +232,10 @@
 	while (list != NULL)
 	{
 		PurpleBuddy *buddy = list->data;
-		if (!g_slist_find_custom(account->permit, buddy->name, (GCompareFunc)g_utf8_collate))
-			purple_privacy_permit_add(account, buddy->name, local);
+		const gchar *name = purple_buddy_get_name(buddy);
+
+		if (!g_slist_find_custom(account->permit, name, (GCompareFunc)g_utf8_collate))
+			purple_privacy_permit_add(account, name, local);
 		list = g_slist_delete_link(list, list);
 	}
 }
@@ -267,7 +269,7 @@
 				for (list = account->permit; list != NULL;) {
 					char *person = list->data;
 					list = list->next;
-					if (strcmp(norm, person) != 0)
+					if (!purple_strequal(norm, person))
 						purple_privacy_permit_remove(account, person, local);
 				}
 			}
@@ -311,7 +313,7 @@
 				for (list = account->deny; list != NULL; ) {
 					char *person = list->data;
 					list = list->next;
-					if (strcmp(norm, person) != 0)
+					if (!purple_strequal(norm, person))
 						purple_privacy_deny_remove(account, person, local);
 				}
 			}
--- a/libpurple/privacy.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/privacy.h	Wed Mar 04 16:52:47 2009 +0000
@@ -125,7 +125,7 @@
  *									changed to PURPLE_PRIVACY_ALLOW_USERS, all the
  *									buddies are added to the allow-list, and the
  *									user is also added to the allow-list.
- * 
+ *
  * @param account	The account.
  * @param who		The name of the user.
  * @param local		Whether the change is local-only.
--- a/libpurple/protocols/Makefile.mingw	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/Makefile.mingw	Wed Mar 04 16:52:47 2009 +0000
@@ -2,7 +2,7 @@
 #
 # Author: hermanator12002@yahoo.com
 # Date 9/11/02
-# Description: Protocols Makefile for win32 (mingw) port of LibPurple
+# Description: Protocols Makefile for win32 (mingw) port of libpurple
 #
 
 PIDGIN_TREE_TOP := ../..
--- a/libpurple/protocols/bonjour/bonjour.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/bonjour/bonjour.c	Wed Mar 04 16:52:47 2009 +0000
@@ -261,9 +261,10 @@
 
 
 static void bonjour_remove_buddy(PurpleConnection *pc, PurpleBuddy *buddy, PurpleGroup *group) {
-	if (buddy->proto_data) {
-		bonjour_buddy_delete(buddy->proto_data);
-		buddy->proto_data = NULL;
+	BonjourBuddy *bb = purple_buddy_get_protocol_data(buddy);
+	if (bb) {
+		bonjour_buddy_delete(bb);
+		purple_buddy_set_protocol_data(buddy, NULL);
 	}
 }
 
@@ -303,7 +304,7 @@
 	PurpleBuddy *buddy = purple_find_buddy(connection->account, who);
 	BonjourBuddy *bb;
 
-	if (buddy == NULL || buddy->proto_data == NULL)
+	if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL)
 	{
 		/*
 		 * This buddy is not in our buddy list, and therefore does not really
@@ -312,7 +313,6 @@
 		return;
 	}
 
-	bb = buddy->proto_data;
 	bonjour_jabber_close_conversation(bb->conversation);
 	bb->conversation = NULL;
 }
@@ -351,7 +351,7 @@
 {
 	PurplePresence *presence;
 	PurpleStatus *status;
-	BonjourBuddy *bb = buddy->proto_data;
+	BonjourBuddy *bb = purple_buddy_get_protocol_data(buddy);
 	const char *status_description;
 	const char *message;
 
@@ -417,8 +417,7 @@
 {
 	PurpleBuddy *buddy = purple_find_buddy(connection->account, who);
 
-	return (buddy != NULL && buddy->proto_data != NULL);
-
+	return (buddy != NULL && purple_buddy_get_protocol_data(buddy) != NULL);
 }
 
 static gboolean
--- a/libpurple/protocols/bonjour/bonjour_ft.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/bonjour/bonjour_ft.c	Wed Mar 04 16:52:47 2009 +0000
@@ -386,10 +386,9 @@
 
 	buddy = purple_find_buddy(xfer->account, xfer->who);
 	/* this buddy is offline. */
-	if (buddy == NULL || buddy->proto_data == NULL)
+	if (buddy == NULL || (bb = purple_buddy_get_protocol_data(buddy)) == NULL)
 		return;
 
-	bb = (BonjourBuddy *)buddy->proto_data;
 	/* Assume it is the first IP. We could do something like keep track of which one is in use or something. */
 	if (bb->ips)
 		xf->buddy_ip = g_strdup(bb->ips->data);
@@ -410,6 +409,7 @@
 	const char *type, *id;
 	BonjourData *bd;
 	PurpleXfer *xfer;
+	const gchar *name = NULL;
 
 	g_return_if_fail(pc != NULL);
 	g_return_if_fail(packet != NULL);
@@ -421,6 +421,8 @@
 
 	purple_debug_info("bonjour", "xep-si-parse.\n");
 
+	name = purple_buddy_get_name(pb);
+
 	type = xmlnode_get_attrib(packet, "type");
 	id = xmlnode_get_attrib(packet, "id");
 	if(type) {
@@ -448,31 +450,34 @@
 
 				/* TODO: Make sure that it is advertising a bytestreams transfer */
 
-				bonjour_xfer_receive(pc, id, sid, pb->name, filesize, filename, XEP_BYTESTREAMS);
+				bonjour_xfer_receive(pc, id, sid, name, filesize, filename, XEP_BYTESTREAMS);
 
 				parsed_receive = TRUE;
 			}
 
 			if (!parsed_receive) {
+				BonjourData *bd = purple_connection_get_protocol_data(pc);
+
 				purple_debug_info("bonjour", "rejecting unrecognized si SET offer.\n");
-				xep_ft_si_reject((BonjourData *)pc->proto_data, id, pb->name, "403", "cancel");
+				xep_ft_si_reject(bd, id, name, "403", "cancel");
 				/*TODO: Send Cancel (501) */
 			}
 		} else if(!strcmp(type, "result")) {
 			purple_debug_info("bonjour", "si offer Message type - RESULT.\n");
 
-			xfer = bonjour_si_xfer_find(bd, id, pb->name);
+			xfer = bonjour_si_xfer_find(bd, id, name);
 
 			if(xfer == NULL) {
+				BonjourData *bd = purple_connection_get_protocol_data(pc);
 				purple_debug_info("bonjour", "xfer find fail.\n");
-				xep_ft_si_reject((BonjourData *)pc->proto_data, id, pb->name, "403", "cancel");
+				xep_ft_si_reject(bd, id, name, "403", "cancel");
 			} else
 				bonjour_bytestreams_init(xfer);
 
 		} else if(!strcmp(type, "error")) {
 			purple_debug_info("bonjour", "si offer Message type - ERROR.\n");
 
-			xfer = bonjour_si_xfer_find(bd, id, pb->name);
+			xfer = bonjour_si_xfer_find(bd, id, name);
 
 			if(xfer == NULL)
 				purple_debug_info("bonjour", "xfer find fail.\n");
@@ -501,7 +506,7 @@
 	purple_debug_info("bonjour", "xep-bytestreams-parse.\n");
 
 	type = xmlnode_get_attrib(packet, "type");
-	from = pb->name;
+	from = purple_buddy_get_name(pb);
 	query = xmlnode_get_child(packet,"query");
 	if(type) {
 		if(!strcmp(type, "set")) {
@@ -841,8 +846,10 @@
 static void
 bonjour_bytestreams_connect(PurpleXfer *xfer, PurpleBuddy *pb)
 {
+	PurpleAccount *account = NULL;
 	XepXfer *xf;
 	char dstaddr[41];
+	const gchar *name = NULL;
 	unsigned char hashval[20];
 	char *p;
 	int i;
@@ -856,7 +863,10 @@
 	if(!xf)
 		return;
 
-	p = g_strdup_printf("%s%s%s", xf->sid, pb->name, purple_account_get_username(pb->account));
+	name = purple_buddy_get_name(pb);
+	account = purple_buddy_get_account(pb);
+
+	p = g_strdup_printf("%s%s%s", xf->sid, name, purple_account_get_username(account));
 	purple_cipher_digest_region("sha1", (guchar *)p, strlen(p),
 				    sizeof(hashval), hashval, NULL);
 	g_free(p);
--- a/libpurple/protocols/bonjour/buddy.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/bonjour/buddy.c	Wed Mar 04 16:52:47 2009 +0000
@@ -157,8 +157,8 @@
 		purple_blist_add_buddy(buddy, NULL, group, NULL);
 	}
 
-	buddy->proto_data = bonjour_buddy;
 	name = purple_buddy_get_name(buddy);
+	purple_buddy_set_protocol_data(buddy, bonjour_buddy);
 
 	/* Create the alias for the buddy using the first and the last name */
 	if (bonjour_buddy->nick && *bonjour_buddy->nick)
@@ -210,8 +210,8 @@
 	if (PURPLE_BLIST_NODE_SHOULD_SAVE(pb)) {
 		purple_prpl_got_user_status(purple_buddy_get_account(pb),
 					    purple_buddy_get_name(pb), "offline", NULL);
-		bonjour_buddy_delete(pb->proto_data);
-		pb->proto_data = NULL;
+		bonjour_buddy_delete(purple_buddy_get_protocol_data(pb));
+		purple_buddy_set_protocol_data(pb, NULL);
 	} else {
 		purple_account_remove_buddy(purple_buddy_get_account(pb), pb, NULL);
 		purple_blist_remove_buddy(pb);
--- a/libpurple/protocols/bonjour/jabber.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/bonjour/jabber.c	Wed Mar 04 16:52:47 2009 +0000
@@ -240,17 +240,21 @@
 _match_buddies_by_address(gpointer key, gpointer value, gpointer data)
 {
 	PurpleBuddy *pb = value;
+	PurpleAccount *account = NULL;
+	BonjourBuddy *bb = NULL;
 	struct _match_buddies_by_address_t *mbba = data;
 
+	account = purple_buddy_get_account(pb);
+	bb = purple_buddy_get_protocol_data(pb);
+
 	/*
 	 * If the current PurpleBuddy's data is not null and the PurpleBuddy's account
 	 * is the same as the account requesting the check then continue to determine
 	 * whether one of the buddies IPs matches the target IP.
 	 */
-	if (mbba->jdata->account == pb->account && pb->proto_data != NULL)
+	if (mbba->jdata->account == account && bb != NULL)
 	{
 		const char *ip;
-		BonjourBuddy *bb = pb->proto_data;
 		GSList *tmp = bb->ips;
 
 		while(tmp) {
@@ -268,7 +272,7 @@
 _send_data_write_cb(gpointer data, gint source, PurpleInputCondition cond)
 {
 	PurpleBuddy *pb = data;
-	BonjourBuddy *bb = pb->proto_data;
+	BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
 	BonjourJabberConversation *bconv = bb->conversation;
 	int ret, writelen;
 
@@ -285,13 +289,16 @@
 	if (ret < 0 && errno == EAGAIN)
 		return;
 	else if (ret <= 0) {
-		PurpleConversation *conv;
+		PurpleConversation *conv = NULL;
+		PurpleAccount *account = NULL;
 		const char *error = g_strerror(errno);
 
 		purple_debug_error("bonjour", "Error sending message to buddy %s error: %s\n",
 				   purple_buddy_get_name(pb), error ? error : "(null)");
 
-		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account);
+		account = purple_buddy_get_account(pb);
+
+		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account);
 		if (conv != NULL)
 			purple_conversation_write(conv, NULL,
 				  _("Unable to send message."),
@@ -310,7 +317,7 @@
 {
 	gint ret;
 	int len = strlen(message);
-	BonjourBuddy *bb = pb->proto_data;
+	BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
 	BonjourJabberConversation *bconv = bb->conversation;
 
 	/* If we're not ready to actually send, append it to the buffer */
@@ -329,12 +336,15 @@
 		ret = 0;
 	else if (ret <= 0) {
 		PurpleConversation *conv;
+		PurpleAccount *account;
 		const char *error = g_strerror(errno);
 
 		purple_debug_error("bonjour", "Error sending message to buddy %s error: %s\n",
 				   purple_buddy_get_name(pb), error ? error : "(null)");
 
-		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account);
+		account = purple_buddy_get_account(pb);
+
+		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account);
 		if (conv != NULL)
 			purple_conversation_write(conv, NULL,
 				  _("Unable to send message."),
@@ -373,11 +383,12 @@
 
 	/* Inform the user that the conversation has been closed */
 	BonjourBuddy *bb = NULL;
+	const gchar *name = bconv->pb ? purple_buddy_get_name(bconv->pb) : "(unknown)";
 
-	purple_debug_info("bonjour", "Recieved conversation close notification from %s.\n", bconv->pb ? bconv->pb->name : "(unknown)");
+	purple_debug_info("bonjour", "Recieved conversation close notification from %s.\n", name);
 
 	if(bconv->pb != NULL)
-		bb = bconv->pb->proto_data;
+		bb = purple_buddy_get_protocol_data(bconv->pb);
 #if 0
 	if(bconv->pb != NULL) {
 		PurpleConversation *conv;
@@ -411,9 +422,11 @@
 			purple_debug_warning("bonjour", "receive error: %s\n", err ? err : "(null)");
 
 			bonjour_jabber_close_conversation(bconv);
-			if (bconv->pb != NULL && bconv->pb->proto_data != NULL) {
-				BonjourBuddy *bb = bconv->pb->proto_data;
-				bb->conversation = NULL;
+			if (bconv->pb != NULL) {
+				BonjourBuddy *bb = purple_buddy_get_protocol_data(bconv->pb);
+				
+				if(bb != NULL)
+					bb->conversation = NULL;
 			}
 
 			/* I guess we really don't need to notify the user.
@@ -421,7 +434,8 @@
 		}
 		return;
 	} else if (len == 0) { /* The other end has closed the socket */
-		purple_debug_warning("bonjour", "Connection closed (without stream end) by %s.\n", (bconv->pb && bconv->pb->name) ? bconv->pb->name : "(unknown)");
+		const gchar *name = purple_buddy_get_name(bconv->pb);
+		purple_debug_warning("bonjour", "Connection closed (without stream end) by %s.\n", (name) ? name : "(unknown)");
 		bonjour_jabber_stream_ended(bconv);
 		return;
 	} else {
@@ -465,7 +479,7 @@
 		BonjourBuddy *bb = NULL;
 
 		if(bconv->pb) {
-			bb = bconv->pb->proto_data;
+			bb = purple_buddy_get_protocol_data(bconv->pb);
 			bname = purple_buddy_get_name(bconv->pb);
 		}
 
@@ -644,7 +658,7 @@
 	mbba = g_new0(struct _match_buddies_by_address_t, 1);
 	mbba->address = address_text;
 	mbba->jdata = jdata;
-	g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba);
+	g_hash_table_foreach(purple_blist_get_buddies(), _match_buddies_by_address, mbba);
 
 	if (mbba->matched_buddies == NULL) {
 		purple_debug_info("bonjour", "We don't like invisible buddies, this is not a superheros comic\n");
@@ -729,17 +743,20 @@
 _connected_to_buddy(gpointer data, gint source, const gchar *error)
 {
 	PurpleBuddy *pb = data;
-	BonjourBuddy *bb = pb->proto_data;
+	BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
 
 	bb->conversation->connect_data = NULL;
 
 	if (source < 0) {
-		PurpleConversation *conv;
+		PurpleConversation *conv = NULL;
+		PurpleAccount *account = NULL;
 
 		purple_debug_error("bonjour", "Error connecting to buddy %s at %s:%d error: %s\n",
 				   purple_buddy_get_name(pb), bb->conversation->ip, bb->port_p2pj, error ? error : "(null)");
 
-		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account);
+		account = purple_buddy_get_account(pb);
+
+		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account);
 		if (conv != NULL)
 			purple_conversation_write(conv, NULL,
 				  _("Unable to send the message, the conversation couldn't be started."),
@@ -752,12 +769,15 @@
 
 	if (!bonjour_jabber_send_stream_init(bb->conversation, source)) {
 		const char *err = g_strerror(errno);
-		PurpleConversation *conv;
+		PurpleConversation *conv = NULL;
+		PurpleAccount *account = NULL;
 
 		purple_debug_error("bonjour", "Error starting stream with buddy %s at %s:%d error: %s\n",
 				   purple_buddy_get_name(pb), bb->conversation->ip, bb->port_p2pj, err ? err : "(null)");
 
-		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, pb->account);
+		account = purple_buddy_get_account(pb);
+
+		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, bb->name, account);
 		if (conv != NULL)
 			purple_conversation_write(conv, NULL,
 				  _("Unable to send the message, the conversation couldn't be started."),
@@ -777,14 +797,14 @@
 
 void
 bonjour_jabber_conv_match_by_name(BonjourJabberConversation *bconv) {
-	PurpleBuddy *pb;
+	PurpleBuddy *pb = NULL;
+	BonjourBuddy *bb = NULL;
 
 	g_return_if_fail(bconv->ip != NULL);
 	g_return_if_fail(bconv->pb == NULL);
 
 	pb = purple_find_buddy(bconv->account, bconv->buddy_name);
-	if (pb && pb->proto_data) {
-		BonjourBuddy *bb = pb->proto_data;
+	if (pb && (bb = purple_buddy_get_protocol_data(pb))) {
 		const char *ip;
 		GSList *tmp = bb->ips;
 
@@ -834,7 +854,7 @@
 	mbba = g_new0(struct _match_buddies_by_address_t, 1);
 	mbba->address = bconv->ip;
 	mbba->jdata = jdata;
-	g_hash_table_foreach(purple_get_blist()->buddies, _match_buddies_by_address, mbba);
+	g_hash_table_foreach(purple_blist_get_buddies(), _match_buddies_by_address, mbba);
 
 	/* If there is exactly one match, use it */
 	if(mbba->matched_buddies != NULL) {
@@ -842,7 +862,7 @@
 			purple_debug_error("bonjour", "More than one buddy matched for ip %s.\n", bconv->ip);
 		else {
 			PurpleBuddy *pb = mbba->matched_buddies->data;
-			BonjourBuddy *bb = pb->proto_data;
+			BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
 
 			purple_debug_info("bonjour", "Matched buddy %s to incoming conversation using IP (%s)\n",
 				purple_buddy_get_name(pb), bconv->ip);
@@ -882,12 +902,10 @@
 	g_return_val_if_fail(to != NULL, NULL);
 
 	pb = purple_find_buddy(jdata->account, to);
-	if (pb == NULL || pb->proto_data == NULL)
+	if (pb == NULL || (bb = purple_buddy_get_protocol_data(pb)) == NULL)
 		/* You can not send a message to an offline buddy */
 		return NULL;
 
-	bb = (BonjourBuddy *) pb->proto_data;
-
 	/* Check if there is a previously open conversation */
 	if (bb->conversation == NULL)
 	{
@@ -934,7 +952,7 @@
 	int ret;
 
 	pb = _find_or_start_conversation(jdata, to);
-	if (pb == NULL || pb->proto_data == NULL) {
+	if (pb == NULL || (bb = purple_buddy_get_protocol_data(pb)) == NULL) {
 		purple_debug_info("bonjour", "Can't send a message to an offline buddy (%s).\n", to);
 		/* You can not send a message to an offline buddy */
 		return -10000;
@@ -942,8 +960,6 @@
 
 	purple_markup_html_to_xhtml(body, &xhtml, &message);
 
-	bb = pb->proto_data;
-
 	message_node = xmlnode_new("message");
 	xmlnode_set_attrib(message_node, "to", bb->name);
 	xmlnode_set_attrib(message_node, "from", purple_account_get_username(jdata->account));
@@ -993,7 +1009,7 @@
 
 	/* Disconnect this conv. from the buddy here so it can't be disposed of twice.*/
 	if(bconv->pb != NULL) {
-		BonjourBuddy *bb = bconv->pb->proto_data;
+		BonjourBuddy *bb = purple_buddy_get_protocol_data(bconv->pb);
 		if (bb->conversation == bconv)
 			bb->conversation = NULL;
 	}
@@ -1022,7 +1038,7 @@
 				tmp_next = xfers->next;
 				/* We only need to cancel this if it hasn't actually started transferring. */
 				/* This will change if we ever support IBB transfers. */
-				if (strcmp(xfer->who, bconv->pb->name) == 0
+				if (strcmp(xfer->who, purple_buddy_get_name(bconv->pb)) == 0
 						&& (purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_NOT_STARTED
 							|| purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_UNKNOWN)) {
 					purple_xfer_cancel_remote(xfer);
@@ -1081,7 +1097,7 @@
 
 		buddies = purple_find_buddies(jdata->account, NULL);
 		for (l = buddies; l; l = l->next) {
-			BonjourBuddy *bb = ((PurpleBuddy*) l->data)->proto_data;
+			BonjourBuddy *bb = purple_buddy_get_protocol_data((PurpleBuddy*) l->data);
 			if (bb != NULL) {
 				bonjour_jabber_close_conversation(bb->conversation);
 				bb->conversation = NULL;
@@ -1144,15 +1160,20 @@
 check_if_blocked(PurpleBuddy *pb)
 {
 	gboolean blocked = FALSE;
-	GSList *l;
+	GSList *l = NULL;
 	PurpleAccount *acc = purple_buddy_get_account(pb);
 
 	if(acc == NULL)
 		return FALSE;
 
+	acc = purple_buddy_get_account(pb);
+
 	for(l = acc->deny; l != NULL; l = l->next) {
-		if(!purple_utf8_strcasecmp(pb->name, (char *)l->data)) {
-			purple_debug_info("bonjour", "%s has been blocked by %s.\n", pb->name, acc->username);
+		const gchar *name = purple_buddy_get_name(pb);
+		const gchar *username = purple_account_get_username(acc);
+
+		if(!purple_utf8_strcasecmp(name, (char *)l->data)) {
+			purple_debug_info("bonjour", "%s has been blocked by %s.\n", name, username);
 			blocked = TRUE;
 			break;
 		}
@@ -1164,16 +1185,19 @@
 xep_iq_parse(xmlnode *packet, PurpleBuddy *pb)
 {
 	xmlnode *child;
+	PurpleAccount *account;
+	PurpleConnection *gc;
 
 	if(check_if_blocked(pb))
 		return;
 
+		account = purple_buddy_get_account(pb);
+		gc = purple_account_get_connection(account);
+
 	if ((child = xmlnode_get_child(packet, "si")) || (child = xmlnode_get_child(packet, "error")))
-		xep_si_parse(purple_account_get_connection(pb->account),
-			packet, pb);
+		xep_si_parse(gc, packet, pb);
 	else
-		xep_bytestreams_parse(purple_account_get_connection(pb->account),
-			packet, pb);
+		xep_bytestreams_parse(gc, packet, pb);
 }
 
 int
--- a/libpurple/protocols/bonjour/mdns_avahi.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/bonjour/mdns_avahi.c	Wed Mar 04 16:52:47 2009 +0000
@@ -124,7 +124,7 @@
 	g_return_if_fail(r != NULL);
 
 	pb = purple_find_buddy(account, name);
-	bb = (pb != NULL) ? pb->proto_data : NULL;
+	bb = (pb != NULL) ? purple_buddy_get_protocol_data(pb) : NULL;
 
 	switch (event) {
 		case AVAHI_RESOLVER_FAILURE:
@@ -252,7 +252,7 @@
 			purple_debug_info("bonjour", "_browser_callback - Remove service\n");
 			pb = purple_find_buddy(account, name);
 			if (pb != NULL) {
-				BonjourBuddy *bb = pb->proto_data;
+				BonjourBuddy *bb = purple_buddy_get_protocol_data(pb);
 				AvahiBuddyImplData *b_impl;
 				GSList *l;
 				AvahiSvcResolverData *rd_search;
--- a/libpurple/protocols/gg/buddylist.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/gg/buddylist.c	Wed Mar 04 16:52:47 2009 +0000
@@ -41,37 +41,46 @@
 	GGPInfo *info = gc->proto_data;
 	PurpleAccount *account = purple_connection_get_account(gc);
 
-	PurpleBuddyList *blist;
 	PurpleBlistNode *gnode, *cnode, *bnode;
 	PurpleBuddy *buddy;
 	uin_t *userlist = NULL;
 	gchar *types = NULL;
 	int size = 0, ret = 0;
 
-	if ((blist = purple_get_blist()) == NULL)
-	    return;
-
-	for (gnode = blist->root; gnode != NULL; gnode = gnode->next) {
+	for (gnode = purple_blist_get_root();
+	     gnode != NULL;
+	     gnode = purple_blist_node_get_sibling_next(gnode))
+	{
 		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
 
-		for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) {
+		for (cnode = purple_blist_node_get_first_child(gnode);
+		     cnode != NULL;
+		     cnode = purple_blist_node_get_sibling_next(cnode))
+		{
 			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
 
-			for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
+			for (bnode = purple_blist_node_get_first_child(cnode);
+			     bnode != NULL;
+			     bnode = purple_blist_node_get_sibling_next(bnode))
+			{
+				const gchar *name = NULL;
+
 				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
 
 				buddy = (PurpleBuddy *)bnode;
 
-				if (buddy->account != account)
+				if (purple_buddy_get_account(buddy) != account)
 					continue;
 
+				name = purple_buddy_get_name(buddy);
+
 				size++;
 				userlist = (uin_t *) g_renew(uin_t, userlist, size);
 				types    = (gchar *) g_renew(gchar, types, size);
-				userlist[size - 1] = ggp_str_to_uin(buddy->name);
+				userlist[size - 1] = ggp_str_to_uin(name);
 				types[size - 1]    = GG_USER_NORMAL;
 				purple_debug_info("gg", "ggp_buddylist_send: adding %d\n",
 						userlist[size - 1]);
@@ -173,36 +182,45 @@
 void ggp_buddylist_offline(PurpleConnection *gc)
 {
 	PurpleAccount *account = purple_connection_get_account(gc);
-	PurpleBuddyList *blist;
 	PurpleBlistNode *gnode, *cnode, *bnode;
 	PurpleBuddy *buddy;
 
-	if ((blist = purple_get_blist()) == NULL)
-		return;
-
-	for (gnode = blist->root; gnode != NULL; gnode = gnode->next) {
+	for (gnode = purple_blist_get_root();
+	     gnode != NULL;
+	     gnode = purple_blist_node_get_sibling_next(gnode))
+	{
 		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
 
-		for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) {
+		for (cnode = purple_blist_node_get_first_child(gnode);
+		     cnode != NULL;
+		     cnode = purple_blist_node_get_sibling_next(cnode))
+		{
 			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
 
-			for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
+			for (bnode = purple_blist_node_get_first_child(cnode);
+			     bnode != NULL;
+			     bnode = purple_blist_node_get_sibling_next(bnode))
+			{
+				const gchar *name = NULL;
+
 				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
 
 				buddy = (PurpleBuddy *)bnode;
+				
+				name = purple_buddy_get_name(buddy);
 
-				if (buddy->account != account)
+				if (purple_buddy_get_account(buddy) != account)
 					continue;
 
 				purple_prpl_got_user_status(
-					account, buddy->name, "offline", NULL);
+					account, name, "offline", NULL);
 
 				purple_debug_info("gg",
 					"ggp_buddylist_offline: gone: %s\n",
-					buddy->name);
+					name);
 			}
 		}
 	}
@@ -212,41 +230,46 @@
 /* char *ggp_buddylist_dump(PurpleAccount *account) {{{ */
 char *ggp_buddylist_dump(PurpleAccount *account)
 {
-	PurpleBuddyList *blist;
 	PurpleBlistNode *gnode, *cnode, *bnode;
 	PurpleGroup *group;
 	PurpleBuddy *buddy;
-	GString *buddylist;
+	GString *buddylist = g_string_sized_new(1024);
 	char *ptr;
 
-	if ((blist = purple_get_blist()) == NULL)
-		return NULL;
-
-	buddylist = g_string_sized_new(1024);
-
-	for (gnode = blist->root; gnode != NULL; gnode = gnode->next) {
+	for (gnode = purple_blist_get_root();
+	     gnode != NULL;
+	     gnode = purple_blist_node_get_sibling_next(gnode))
+	{
 		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
 
 		group = (PurpleGroup *)gnode;
 
-		for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) {
+		for (cnode = purple_blist_node_get_first_child(gnode);
+		     cnode != NULL;
+		     cnode = purple_blist_node_get_sibling_next(cnode))
+		{
 			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
 
-			for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
-				gchar *name, *alias, *gname;
+			for (bnode = purple_blist_node_get_first_child(cnode);
+			     bnode != NULL;
+			     bnode = purple_blist_node_get_sibling_next(bnode))
+			{
+				const gchar *name, *alias, *gname;
 
 				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
 
 				buddy = (PurpleBuddy *)bnode;
-				if (buddy->account != account)
+				if (purple_buddy_get_account(buddy) != account)
 					continue;
 
-				name = buddy->name;
-				alias = buddy->alias ? buddy->alias : buddy->name;
-				gname = group->name;
+				name = purple_buddy_get_name(buddy);
+				alias = purple_buddy_get_alias(buddy);
+				if(alias == NULL)
+					alias = name;
+				gname = purple_group_get_name(group);
 
 				g_string_append_printf(buddylist,
 						"%s;%s;%s;%s;%s;%s;%s;%s%s\r\n",
--- a/libpurple/protocols/gg/gg.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/gg/gg.c	Wed Mar 04 16:52:47 2009 +0000
@@ -2052,11 +2052,12 @@
 {
 	PurpleAccount *account;
 	GGPInfo *info = gc->proto_data;
+	const gchar *name = purple_buddy_get_name(buddy);
 
-	gg_add_notify(info->session, ggp_str_to_uin(buddy->name));
+	gg_add_notify(info->session, ggp_str_to_uin(name));
 
 	account = purple_connection_get_account(gc);
-	if (strcmp(purple_account_get_username(account), buddy->name) == 0) {
+	if (strcmp(purple_account_get_username(account), name) == 0) {
 		ggp_status_fake_to_self(account);
 	}
 }
@@ -2066,7 +2067,7 @@
 {
 	GGPInfo *info = gc->proto_data;
 
-	gg_remove_notify(info->session, ggp_str_to_uin(buddy->name));
+	gg_remove_notify(info->session, ggp_str_to_uin(purple_buddy_get_name(buddy)));
 }
 
 static void ggp_join_chat(PurpleConnection *gc, GHashTable *data)
--- a/libpurple/protocols/irc/irc.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/irc/irc.c	Wed Mar 04 16:52:47 2009 +0000
@@ -564,7 +564,7 @@
 {
 	struct irc_conn *irc = (struct irc_conn *)gc->proto_data;
 	struct irc_buddy *ib = g_new0(struct irc_buddy, 1);
-	ib->name = g_strdup(buddy->name);
+	ib->name = g_strdup(purple_buddy_get_name(buddy));
 	g_hash_table_insert(irc->buddies, ib->name, ib);
 
 	/* if the timer isn't set, this is during signon, so we don't want to flood
@@ -577,7 +577,7 @@
 static void irc_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
 {
 	struct irc_conn *irc = (struct irc_conn *)gc->proto_data;
-	g_hash_table_remove(irc->buddies, buddy->name);
+	g_hash_table_remove(irc->buddies, purple_buddy_get_name(buddy));
 }
 
 static void read_input(struct irc_conn *irc, int len)
--- a/libpurple/protocols/irc/msgs.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/irc/msgs.c	Wed Mar 04 16:52:47 2009 +0000
@@ -79,6 +79,7 @@
 	PurpleConnection *gc;
 	PurpleStatus *status;
 	PurpleBlistNode *gnode, *cnode, *bnode;
+	PurpleAccount *account;
 
 	if ((gc = purple_account_get_connection(irc->account)) == NULL
 	    || PURPLE_CONNECTION_IS_CONNECTED(gc))
@@ -86,6 +87,7 @@
 
 	purple_connection_set_display_name(gc, nick);
 	purple_connection_set_state(gc, PURPLE_CONNECTED);
+	account = purple_connection_get_account(gc);
 
 	/* If we're away then set our away message */
 	status = purple_account_get_active_status(irc->account);
@@ -95,20 +97,29 @@
 	}
 
 	/* this used to be in the core, but it's not now */
-	for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+	for (gnode = purple_blist_get_root();
+	     gnode;
+	     gnode = purple_blist_node_get_sibling_next(gnode))
+	{
 		if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
-		for(cnode = gnode->child; cnode; cnode = cnode->next) {
+		for(cnode = purple_blist_node_get_first_child(gnode);
+		    cnode;
+		    cnode = purple_blist_node_get_sibling_next(cnode))
+		{
 			if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			for(bnode = cnode->child; bnode; bnode = bnode->next) {
+			for(bnode = purple_blist_node_get_first_child(cnode);
+			    bnode;
+			    bnode = purple_blist_node_get_sibling_next(bnode))
+			{
 				PurpleBuddy *b;
 				if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
 				b = (PurpleBuddy *)bnode;
-				if(b->account == gc->account) {
+				if(purple_buddy_get_account(b) == account) {
 					struct irc_buddy *ib = g_new0(struct irc_buddy, 1);
-					ib->name = g_strdup(b->name);
+					ib->name = g_strdup(purple_buddy_get_name(b));
 					g_hash_table_insert(irc->buddies, ib->name, ib);
 				}
 			}
--- a/libpurple/protocols/jabber/Makefile.am	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/Makefile.am	Wed Mar 04 16:52:47 2009 +0000
@@ -17,6 +17,8 @@
 			  disco.h \
 			  google.c \
 			  google.h \
+			  ibb.c \
+			  ibb.h \
 			  iq.c \
 			  iq.h \
 			  jabber.c \
--- a/libpurple/protocols/jabber/Makefile.mingw	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/Makefile.mingw	Wed Mar 04 16:52:47 2009 +0000
@@ -51,6 +51,7 @@
 			data.c \
 			disco.c \
 			google.c \
+			ibb.c \
 			iq.c \
 			jabber.c \
 			jutil.c \
--- a/libpurple/protocols/jabber/adhoccommands.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/adhoccommands.c	Wed Mar 04 16:52:47 2009 +0000
@@ -47,26 +47,26 @@
 	JabberID *jabberid;
 	JabberBuddy *jb;
 	JabberBuddyResource *jbr = NULL;
-	
+
 	if(strcmp(type, "result"))
 		return;
-	
+
 	query = xmlnode_get_child_with_namespace(packet,"query","http://jabber.org/protocol/disco#items");
 	if(!query)
 		return;
 	node = xmlnode_get_attrib(query,"node");
 	if(!node || strcmp(node, "http://jabber.org/protocol/commands"))
 		return;
-	
+
 	if((jabberid = jabber_id_new(from))) {
 		if(jabberid->resource && (jb = jabber_buddy_find(js, from, TRUE)))
 			jbr = jabber_buddy_find_resource(jb, jabberid->resource);
 		jabber_id_free(jabberid);
 	}
-	
+
 	if(!jbr)
 		return;
-	
+
 	if(jbr->commands) {
 		/* since the list we just received is complete, wipe the old one */
 		while(jbr->commands) {
@@ -78,7 +78,7 @@
 			jbr->commands = g_list_delete_link(jbr->commands, jbr->commands);
 		}
 	}
-	
+
 	for(item = query->child; item; item = item->next) {
 		JabberAdHocCommands *cmd;
 		if(item->type != XMLNODE_TYPE_TAG)
@@ -86,11 +86,11 @@
 		if(strcmp(item->name, "item"))
 			continue;
 		cmd = g_new0(JabberAdHocCommands, 1);
-		
+
 		cmd->jid = g_strdup(xmlnode_get_attrib(item,"jid"));
 		cmd->node = g_strdup(xmlnode_get_attrib(item,"node"));
 		cmd->name = g_strdup(xmlnode_get_attrib(item,"name"));
-		
+
 		jbr->commands = g_list_append(jbr->commands,cmd);
 	}
 }
@@ -103,13 +103,13 @@
 	JabberAdHocActionInfo *actionInfo = user_data;
 	JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
 	jabber_iq_set_callback(iq, jabber_adhoc_parse, NULL);
-	
+
 	xmlnode_set_attrib(iq->node, "to", actionInfo->who);
 	command = xmlnode_new_child(iq->node,"command");
 	xmlnode_set_namespace(command,"http://jabber.org/protocol/commands");
 	xmlnode_set_attrib(command,"sessionid",actionInfo->sessionid);
 	xmlnode_set_attrib(command,"node",actionInfo->node);
-	
+
 	/* cancel is handled differently on ad-hoc commands than regular forms */
 	if(!strcmp(xmlnode_get_namespace(result),"jabber:x:data") && !strcmp(xmlnode_get_attrib(result, "type"),"cancel")) {
 		xmlnode_set_attrib(command,"action","cancel");
@@ -118,7 +118,7 @@
 			xmlnode_set_attrib(command,"action",actionhandle);
 		xmlnode_insert_child(command,result);
 	}
-	
+
 	for(action = actionInfo->actionslist; action; action = g_list_next(action)) {
 		char *handle = action->data;
 		g_free(handle);
@@ -127,7 +127,7 @@
 	g_free(actionInfo->sessionid);
 	g_free(actionInfo->who);
 	g_free(actionInfo->node);
-	
+
 	jabber_iq_send(iq);
 }
 
@@ -136,12 +136,12 @@
 	const char *status = xmlnode_get_attrib(command,"status");
 	xmlnode *xdata = xmlnode_get_child_with_namespace(command,"x","jabber:x:data");
 	const char *type = xmlnode_get_attrib(packet,"type");
-	
+
 	if(type && !strcmp(type,"error")) {
 		char *msg = jabber_parse_error(js, packet, NULL);
 		if(!msg)
 			msg = g_strdup(_("Unknown Error"));
-		
+
 		purple_notify_error(NULL, _("Ad-Hoc Command Failed"),
 							_("Ad-Hoc Command Failed"), msg);
 		g_free(msg);
@@ -149,20 +149,20 @@
 	}
 	if(!type || strcmp(type,"result"))
 		return;
-	
+
 	if(!status)
 		return;
-	
+
 	if(!strcmp(status,"completed")) {
 		/* display result */
 		xmlnode *note = xmlnode_get_child(command,"note");
-		
+
 		if(note) {
 			char *data = xmlnode_get_data(note);
 			purple_notify_info(NULL, xmlnode_get_attrib(packet, "from"), data, NULL);
 			g_free(data);
 		}
-		
+
 		if(xdata)
 			jabber_x_data_request(js, xdata, (jabber_x_data_cb)do_adhoc_ignoreme, NULL);
 		return;
@@ -175,7 +175,7 @@
 		JabberAdHocActionInfo *actionInfo;
 		if(!xdata)
 			return; /* shouldn't happen */
-		
+
 		actions = xmlnode_get_child(command,"actions");
 		if(!actions) {
 			JabberXDataAction *defaultaction = g_new0(JabberXDataAction, 1);
@@ -196,13 +196,13 @@
 				}
 			}
 		}
-		
+
 		actionInfo = g_new0(JabberAdHocActionInfo, 1);
 		actionInfo->sessionid = g_strdup(xmlnode_get_attrib(command,"sessionid"));
 		actionInfo->who = g_strdup(xmlnode_get_attrib(packet,"from"));
 		actionInfo->node = g_strdup(xmlnode_get_attrib(command,"node"));
 		actionInfo->actionslist = actionslist;
-		
+
 		jabber_x_data_request_with_actions(js,xdata,actionslist,actionindex,do_adhoc_action_cb,actionInfo);
 	}
 }
@@ -211,8 +211,9 @@
 	if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
 		JabberAdHocCommands *cmd = data;
 		PurpleBuddy *buddy = (PurpleBuddy *) node;
-		JabberStream *js = purple_account_get_connection(buddy->account)->proto_data;
-		
+		PurpleAccount *account = purple_buddy_get_account(buddy);
+		JabberStream *js = purple_account_get_connection(account)->proto_data;
+
 		jabber_adhoc_execute(js, cmd);
 	}
 }
@@ -220,7 +221,7 @@
 static void jabber_adhoc_server_got_list_cb(JabberStream *js, xmlnode *packet, gpointer data) {
 	xmlnode *query = xmlnode_get_child_with_namespace(packet, "query", "http://jabber.org/protocol/disco#items");
 	xmlnode *item;
-	
+
 	if(!query)
 		return;
 
@@ -233,7 +234,7 @@
 		g_free(cmd);
 		js->commands = g_list_delete_link(js->commands, js->commands);
 	}
-	
+
 	/* re-fill list */
 	for(item = query->child; item; item = item->next) {
 		JabberAdHocCommands *cmd;
@@ -245,7 +246,7 @@
 		cmd->jid = g_strdup(xmlnode_get_attrib(item,"jid"));
 		cmd->node = g_strdup(xmlnode_get_attrib(item,"node"));
 		cmd->name = g_strdup(xmlnode_get_attrib(item,"name"));
-		
+
 		js->commands = g_list_append(js->commands,cmd);
 	}
 }
@@ -253,10 +254,10 @@
 void jabber_adhoc_server_get_list(JabberStream *js) {
 	JabberIq *iq = jabber_iq_new_query(js,JABBER_IQ_GET,"http://jabber.org/protocol/disco#items");
 	xmlnode *query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#items");
-	
+
 	xmlnode_set_attrib(iq->node,"to",js->user->domain);
 	xmlnode_set_attrib(query,"node","http://jabber.org/protocol/commands");
-	
+
 	jabber_iq_set_callback(iq,jabber_adhoc_server_got_list_cb,NULL);
 	jabber_iq_send(iq);
 }
@@ -268,9 +269,9 @@
 	xmlnode_set_namespace(command,"http://jabber.org/protocol/commands");
 	xmlnode_set_attrib(command,"node",cmd->node);
 	xmlnode_set_attrib(command,"action","execute");
-	
+
 	jabber_iq_set_callback(iq,jabber_adhoc_parse,NULL);
-	
+
 	jabber_iq_send(iq);
 }
 
@@ -279,7 +280,7 @@
 	if(cmd) {
 		PurpleConnection *gc = (PurpleConnection *) action->context;
 		JabberStream *js = gc->proto_data;
-		
+
 		jabber_adhoc_execute(js, cmd);
 	}
 }
@@ -287,7 +288,7 @@
 void jabber_adhoc_init_server_commands(JabberStream *js, GList **m) {
 	GList *cmdlst;
 	JabberBuddy *jb;
-	
+
 	/* also add commands for other clients connected to the same account on another resource */
 	char *accountname = g_strdup_printf("%s@%s", js->user->node, js->user->domain);
 	if((jb = jabber_buddy_find(js, accountname, TRUE))) {
@@ -306,7 +307,7 @@
 		}
 	}
 	g_free(accountname);
-	
+
 	/* now add server commands */
 	for(cmdlst = js->commands; cmdlst; cmdlst = g_list_next(cmdlst)) {
 		JabberAdHocCommands *cmd = cmdlst->data;
--- a/libpurple/protocols/jabber/auth.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/auth.c	Wed Mar 04 16:52:47 2009 +0000
@@ -384,7 +384,7 @@
 					}
 					/* Remove space which separated this mech from the next */
 					if (strlen(js->sasl_mechs->str) > 0 && ((js->sasl_mechs->str)[0] == ' ')) {
-						g_string_erase(js->sasl_mechs, 0, 1);	
+						g_string_erase(js->sasl_mechs, 0, 1);
 					}
 					again = TRUE;
 				}
@@ -397,7 +397,7 @@
 		auth = xmlnode_new("auth");
 		xmlnode_set_namespace(auth, "urn:ietf:params:xml:ns:xmpp-sasl");
 		xmlnode_set_attrib(auth, "mechanism", js->current_mech);
-		
+
 		xmlnode_set_attrib(auth, "xmlns:ga", "http://www.google.com/talk/protocol/auth");
 		xmlnode_set_attrib(auth, "ga:client-uses-full-bind-result", "true");
 
@@ -1057,13 +1057,13 @@
 			}
 			/* Remove space which separated this mech from the next */
 			if (strlen(js->sasl_mechs->str) > 0 && ((js->sasl_mechs->str)[0] == ' ')) {
-				g_string_erase(js->sasl_mechs, 0, 1);	
-			}			
+				g_string_erase(js->sasl_mechs, 0, 1);
+			}
 		}
 		if (strlen(js->sasl_mechs->str)) {
 			/* If we have remaining mechs to try, do so */
 			sasl_dispose(&js->sasl);
-			
+
 			jabber_auth_start_cyrus(js);
 			return;
 		}
--- a/libpurple/protocols/jabber/buddy.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/buddy.c	Wed Mar 04 16:52:47 2009 +0000
@@ -170,7 +170,7 @@
 	g_return_if_fail(jbr != NULL);
 
 	jbr->jb->resources = g_list_remove(jbr->jb->resources, jbr);
-	
+
 	while(jbr->commands) {
 		JabberAdHocCommands *cmd = jbr->commands->data;
 		g_free(cmd->jid);
@@ -179,7 +179,7 @@
 		g_free(cmd);
 		jbr->commands = g_list_delete_link(jbr->commands, jbr->commands);
 	}
-	
+
 	jabber_caps_free_clientinfo(jbr->caps);
 
 	g_free(jbr->name);
@@ -422,7 +422,7 @@
 {
 	PurpleStoredImage *img;
 	JabberIq *iq;
-	JabberStream *js = gc->proto_data;
+	JabberStream *js = purple_connection_get_protocol_data(gc);
 	xmlnode *vc_node;
 	const struct tag_attr *tag_attr;
 
@@ -495,8 +495,8 @@
 {
 	PurplePresence *gpresence;
 	PurpleStatus *status;
-	
-	if(((JabberStream*)gc->proto_data)->pep) {
+
+	if(((JabberStream*)purple_connection_get_protocol_data(gc))->pep) {
 		/* XEP-0084: User Avatars */
 		if(img) {
 			/*
@@ -539,37 +539,37 @@
 				guint32 height = ntohl(png->ihdr.height);
 				xmlnode *publish, *item, *data, *metadata, *info;
 				char *lengthstring, *widthstring, *heightstring;
-				
+
 				/* compute the sha1 hash */
 				char *hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(img), purple_imgstore_get_size(img));
 				char *base64avatar;
-				
+
 				publish = xmlnode_new("publish");
 				xmlnode_set_attrib(publish,"node",AVATARNAMESPACEDATA);
-				
+
 				item = xmlnode_new_child(publish, "item");
 				xmlnode_set_attrib(item, "id", hash);
-				
+
 				data = xmlnode_new_child(item, "data");
 				xmlnode_set_namespace(data,AVATARNAMESPACEDATA);
-				
+
 				base64avatar = purple_base64_encode(purple_imgstore_get_data(img), purple_imgstore_get_size(img));
 				xmlnode_insert_data(data,base64avatar,-1);
 				g_free(base64avatar);
-				
+
 				/* publish the avatar itself */
-				jabber_pep_publish((JabberStream*)gc->proto_data, publish);
-				
+				jabber_pep_publish((JabberStream*)purple_connection_get_protocol_data(gc), publish);
+
 				/* next step: publish the metadata */
 				publish = xmlnode_new("publish");
 				xmlnode_set_attrib(publish,"node",AVATARNAMESPACEMETA);
-				
+
 				item = xmlnode_new_child(publish, "item");
 				xmlnode_set_attrib(item, "id", hash);
-				
+
 				metadata = xmlnode_new_child(item, "metadata");
 				xmlnode_set_namespace(metadata,AVATARNAMESPACEMETA);
-				
+
 				info = xmlnode_new_child(metadata, "info");
 				xmlnode_set_attrib(info, "id", hash);
 				xmlnode_set_attrib(info, "type", "image/png");
@@ -582,10 +582,10 @@
 				heightstring = g_strdup_printf("%u", height);
 				xmlnode_set_attrib(info, "height", heightstring);
 				g_free(heightstring);
-				
+
 				/* publish the metadata */
-				jabber_pep_publish((JabberStream*)gc->proto_data, publish);
-				
+				jabber_pep_publish((JabberStream*)purple_connection_get_protocol_data(gc), publish);
+
 				g_free(hash);
 			} else {
 				purple_debug_error("jabber", "jabber_set_buddy_icon received non-png data");
@@ -796,18 +796,18 @@
 								  (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_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);
@@ -825,7 +825,7 @@
 		} else {
 			purple_notify_user_info_prepend_pair(user_info, _("Status"), _("Unknown"));
 		}
-#if 0 
+#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
  		 * of particular interest (-vv jumps out as one). As it is now, I don't picture people getting all excited: "Oh sweet crap!
  		 * So-and-so supports 'jabber:x:data' AND 'Collaborative Data Objects'!"
@@ -836,7 +836,7 @@
 			GList *iter;
 			for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) {
 				const char *feature = iter->data;
-				
+
 				if(!strcmp(feature, "jabber:iq:last"))
 					feature = _("Last Activity");
 				else if(!strcmp(feature, "http://jabber.org/protocol/disco#info"))
@@ -945,7 +945,7 @@
 
 			if(strlen(tmp->str) > 0)
 				purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str);
-			
+
 			g_string_free(tmp, TRUE);
 		}
 #endif
@@ -965,7 +965,7 @@
 				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);
 				}
@@ -984,14 +984,14 @@
 				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);
@@ -1006,7 +1006,7 @@
 				GList *iter;
 				for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) {
 					const char *feature = iter->data;
-					
+
 					if(!strcmp(feature, "jabber:iq:last"))
 						feature = _("Last Activity");
 					else if(!strcmp(feature, "http://jabber.org/protocol/disco#info"))
@@ -1109,13 +1109,13 @@
 						feature = _("Hop Check");
 					else if(g_str_has_suffix(feature, "+notify"))
 						feature = NULL;
-					
+
 					if(feature)
 						g_string_append_printf(tmp, "%s\n", feature);
 				}
 				if(strlen(tmp->str) > 0)
 					purple_notify_user_info_prepend_pair(user_info, _("Capabilities"), tmp->str);
-				
+
 				g_string_free(tmp, TRUE);
 			}
 #endif
@@ -1183,7 +1183,7 @@
 void jabber_vcard_fetch_mine(JabberStream *js)
 {
 	JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET);
-	
+
 	xmlnode *vcard = xmlnode_new_child(iq->node, "vCard");
 	xmlnode_set_namespace(vcard, "vcard-temp");
 	jabber_iq_set_callback(iq, jabber_vcard_save_mine, NULL);
@@ -1257,13 +1257,13 @@
 					}
 					g_free(text2);
 				}
-			} else if(text && !strcmp(child->name, "NICKNAME")) {				
+			} else if(text && !strcmp(child->name, "NICKNAME")) {
 				/* Prefer the Nickcname to the Full Name as the serverside alias if it's not just part of the jid.
 				 * Ignore it if it's part of the jid. */
 				if (strstr(bare_jid, text) == NULL) {
 					g_free(serverside_alias);
 					serverside_alias = g_strdup(text);
-					
+
 					purple_notify_user_info_add_pair(user_info, _("Nickname"), text);
 				}
 			} else if(text && !strcmp(child->name, "BDAY")) {
@@ -1308,7 +1308,7 @@
 					}
 					g_free(text2);
 				}
-				
+
 				if (address_line_added)
 					purple_notify_user_info_add_section_break(user_info);
 
@@ -1350,8 +1350,8 @@
 					escaped = g_markup_escape_text(userid, -1);
 					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(mailto);
 					g_free(escaped);
 					g_free(userid);
 				}
@@ -1418,7 +1418,7 @@
 		if (b) {
 			purple_blist_node_set_string((PurpleBlistNode*)b, "servernick", serverside_alias);
 		}
-		
+
 		g_free(serverside_alias);
 	}
 
@@ -1440,7 +1440,7 @@
 					 "do_buddy_avatar_update_fromurl got error \"%s\"", error_message);
 		return;
 	}
-	
+
 	purple_buddy_icons_set_for_user(purple_connection_get_account(info->js->gc), info->from, (void*)url_text, len, info->id);
 	g_free(info->from);
 	g_free(info->id);
@@ -1455,29 +1455,29 @@
 	size_t size;
 	if(!items)
 		return;
-	
+
 	item = xmlnode_get_child(items, "item");
 	if(!item)
 		return;
-	
+
 	data = xmlnode_get_child_with_namespace(item,"data",AVATARNAMESPACEDATA);
 	if(!data)
 		return;
-	
+
 	checksum = xmlnode_get_attrib(item,"id");
 	if(!checksum)
 		return;
-	
+
 	b64data = xmlnode_get_data(data);
 	if(!b64data)
 		return;
-	
+
 	img = purple_base64_decode(b64data, &size);
 	if(!img) {
 		g_free(b64data);
 		return;
 	}
-	
+
 	purple_buddy_icons_set_for_user(purple_connection_get_account(js->gc), from, img, size, checksum);
 	g_free(b64data);
 }
@@ -1488,7 +1488,7 @@
 	xmlnode *item, *metadata;
 	if(!buddy)
 		return;
-	
+
 	checksum = purple_buddy_icons_get_checksum_for_user(buddy);
 	item = xmlnode_get_child(items,"item");
 	metadata = xmlnode_get_child_with_namespace(item, "metadata", AVATARNAMESPACEMETA);
@@ -1508,7 +1508,7 @@
 			if(info->type == XMLNODE_TYPE_TAG && !strcmp(info->name,"info")) {
 				const char *type = xmlnode_get_attrib(info,"type");
 				const char *id = xmlnode_get_attrib(info,"id");
-				
+
 				if(checksum && id && !strcmp(id, checksum)) {
 					/* we already have that avatar, so we don't have to do anything */
 					goodinfo = NULL;
@@ -1524,7 +1524,7 @@
 		} else if(goodinfo) {
 			const char *url = xmlnode_get_attrib(goodinfo, "url");
 			const char *id = xmlnode_get_attrib(goodinfo,"id");
-			
+
 			/* the avatar might either be stored in a pep node, or on a HTTP/HTTPS URL */
 			if(!url)
 				jabber_pep_request_item(js, from, AVATARNAMESPACEDATA, id, do_buddy_avatar_update_data);
@@ -1780,7 +1780,7 @@
 
 void jabber_buddy_get_info(PurpleConnection *gc, const char *who)
 {
-	JabberStream *js = gc->proto_data;
+	JabberStream *js = purple_connection_get_protocol_data(gc);
 	JabberID *jid = jabber_id_new(who);
 
 	if (!jid)
@@ -1840,10 +1840,10 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
-	js = gc->proto_data;
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+	js = purple_connection_get_protocol_data(gc);
 
-	jabber_buddy_set_invisibility(js, buddy->name, TRUE);
+	jabber_buddy_set_invisibility(js, purple_buddy_get_name(buddy), TRUE);
 }
 
 static void jabber_buddy_make_visible(PurpleBlistNode *node, gpointer data)
@@ -1855,10 +1855,10 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
-	js = gc->proto_data;
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+	js = purple_connection_get_protocol_data(gc);
 
-	jabber_buddy_set_invisibility(js, buddy->name, FALSE);
+	jabber_buddy_set_invisibility(js, purple_buddy_get_name(buddy), FALSE);
 }
 
 static void jabber_buddy_cancel_presence_notification(PurpleBlistNode *node,
@@ -1871,11 +1871,11 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
-	js = gc->proto_data;
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+	js = purple_connection_get_protocol_data(gc);
 
 	/* I wonder if we should prompt the user before doing this */
-	jabber_presence_subscription_set(js, buddy->name, "unsubscribed");
+	jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribed");
 }
 
 static void jabber_buddy_rerequest_auth(PurpleBlistNode *node, gpointer data)
@@ -1887,10 +1887,10 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
-	js = gc->proto_data;
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+	js = purple_connection_get_protocol_data(gc);
 
-	jabber_presence_subscription_set(js, buddy->name, "subscribe");
+	jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "subscribe");
 }
 
 
@@ -1903,18 +1903,18 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
-	js = gc->proto_data;
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+	js = purple_connection_get_protocol_data(gc);
 
-	jabber_presence_subscription_set(js, buddy->name, "unsubscribe");
+	jabber_presence_subscription_set(js, purple_buddy_get_name(buddy), "unsubscribe");
 }
 
 static void jabber_buddy_login(PurpleBlistNode *node, gpointer data) {
 	if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
 		/* simply create a directed presence of the current status */
 		PurpleBuddy *buddy = (PurpleBuddy *) node;
-		PurpleConnection *gc = purple_account_get_connection(buddy->account);
-		JabberStream *js = gc->proto_data;
+		PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+		JabberStream *js = purple_connection_get_protocol_data(gc);
 		PurpleAccount *account = purple_connection_get_account(gc);
 		PurplePresence *gpresence = purple_account_get_presence(account);
 		PurpleStatus *status = purple_presence_get_active_status(gpresence);
@@ -1922,14 +1922,14 @@
 		JabberBuddyState state;
 		char *msg;
 		int priority;
-		
+
 		purple_status_to_jabber(status, &state, &msg, &priority);
 		presence = jabber_presence_create_js(js, state, msg, priority);
-		
+
 		g_free(msg);
-		
-		xmlnode_set_attrib(presence, "to", buddy->name);
-		
+
+		xmlnode_set_attrib(presence, "to", purple_buddy_get_name(buddy));
+
 		jabber_send(js, presence);
 		xmlnode_free(presence);
 	}
@@ -1939,13 +1939,14 @@
 	if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
 		/* simply create a directed unavailable presence */
 		PurpleBuddy *buddy = (PurpleBuddy *) node;
-		JabberStream *js = purple_account_get_connection(buddy->account)->proto_data;
+		PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+		JabberStream *js = purple_connection_get_protocol_data(gc);
 		xmlnode *presence;
-		
+
 		presence = jabber_presence_create_js(js, JABBER_BUDDY_STATE_UNAVAILABLE, NULL, 0);
-		
-		xmlnode_set_attrib(presence, "to", buddy->name);
-		
+
+		xmlnode_set_attrib(presence, "to", purple_buddy_get_name(buddy));
+
 		jabber_send(js, presence);
 		xmlnode_free(presence);
 	}
@@ -1953,9 +1954,10 @@
 
 static GList *jabber_buddy_menu(PurpleBuddy *buddy)
 {
-	PurpleConnection *gc = purple_account_get_connection(buddy->account);
-	JabberStream *js = gc->proto_data;
-	JabberBuddy *jb = jabber_buddy_find(js, buddy->name, TRUE);
+	PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+	JabberStream *js = purple_connection_get_protocol_data(gc);
+	const char *name = purple_buddy_get_name(buddy);
+	JabberBuddy *jb = jabber_buddy_find(js, name, TRUE);
 	GList *jbrs;
 
 	GList *m = NULL;
@@ -2001,7 +2003,7 @@
 		                           NULL, NULL);
 		m = g_list_append(m, act);
 	}
-	
+
 	/*
 	 * This if-condition implements parts of XEP-0100: Gateway Interaction
 	 *
@@ -2010,7 +2012,7 @@
 	 * that gateways on the roster can be identified by having no '@' in their jid. This is a faily safe assumption, since
 	 * people don't tend to have a server or other service there.
 	 */
-	if (g_utf8_strchr(buddy->name, -1, '@') == NULL) {
+	if (g_utf8_strchr(name, -1, '@') == NULL) {
 		act = purple_menu_action_new(_("Log In"),
 									 PURPLE_CALLBACK(jabber_buddy_login),
 									 NULL, NULL);
@@ -2020,7 +2022,7 @@
 									 NULL, NULL);
 		m = g_list_append(m, act);
 	}
-	
+
 	/* add all ad hoc commands to the action menu */
 	for(jbrs = jb->resources; jbrs; jbrs = g_list_next(jbrs)) {
 		JabberBuddyResource *jbr = jbrs->data;
@@ -2478,7 +2480,7 @@
 void jabber_user_search_begin(PurplePluginAction *action)
 {
 	PurpleConnection *gc = (PurpleConnection *) action->context;
-	JabberStream *js = gc->proto_data;
+	JabberStream *js = purple_connection_get_protocol_data(gc);
 
 	purple_request_input(gc, _("Enter a User Directory"), _("Enter a User Directory"),
 			_("Select a user directory to search"),
--- a/libpurple/protocols/jabber/caps.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/caps.c	Wed Mar 04 16:52:47 2009 +0000
@@ -51,7 +51,7 @@
 	const JabberCapsKey *name = key;
 	guint nodehash = g_str_hash(name->node);
 	guint verhash = g_str_hash(name->ver);
-	
+
 	return nodehash ^ verhash;
 }
 
@@ -77,7 +77,7 @@
 		g_free(id->type);
 		g_free(id->name);
 		g_free(id);
-		
+
 		valuestruct->identities = g_list_delete_link(valuestruct->identities,valuestruct->identities);
 	}
 	while(valuestruct->features) {
@@ -96,7 +96,7 @@
 		g_free(id->type);
 		g_free(id->name);
 		g_free(id);
-		
+
 		valuestruct->identities = g_list_delete_link(valuestruct->identities,valuestruct->identities);
 	}
 	while(valuestruct->features) {
@@ -124,7 +124,7 @@
 		xmlnode_free(capsdata);
 		return;
 	}
-	
+
 	for(client = capsdata->child; client; client = client->next) {
 		if(client->type != XMLNODE_TYPE_TAG)
 			continue;
@@ -147,20 +147,20 @@
 					const char *category = xmlnode_get_attrib(child, "category");
 					const char *type = xmlnode_get_attrib(child, "type");
 					const char *name = xmlnode_get_attrib(child, "name");
-					
+
 					JabberCapsIdentity *id = g_new0(JabberCapsIdentity, 1);
 					id->category = g_strdup(category);
 					id->type = g_strdup(type);
 					id->name = g_strdup(name);
-					
+
 					value->identities = g_list_append(value->identities,id);
 				} else if(!strcmp(child->name,"ext")) {
 					const char *identifier = xmlnode_get_attrib(child, "identifier");
 					if(identifier) {
 						xmlnode *extchild;
-						
+
 						JabberCapsValueExt *extvalue = g_new0(JabberCapsValueExt, 1);
-						
+
 						for(extchild = child->child; extchild; extchild = extchild->next) {
 							if(extchild->type != XMLNODE_TYPE_TAG)
 								continue;
@@ -173,12 +173,12 @@
 								const char *category = xmlnode_get_attrib(extchild, "category");
 								const char *type = xmlnode_get_attrib(extchild, "type");
 								const char *name = xmlnode_get_attrib(extchild, "name");
-								
+
 								JabberCapsIdentity *id = g_new0(JabberCapsIdentity, 1);
 								id->category = g_strdup(category);
 								id->type = g_strdup(type);
 								id->name = g_strdup(name);
-								
+
 								extvalue->identities = g_list_append(extvalue->identities,id);
 							}
 						}
@@ -226,7 +226,7 @@
 
 	xmlnode_set_attrib(client,"node",clientinfo->node);
 	xmlnode_set_attrib(client,"ver",clientinfo->ver);
-	
+
 	for(iter = props->identities; iter; iter = g_list_next(iter)) {
 		JabberCapsIdentity *id = iter->data;
 		xmlnode *identity = xmlnode_new_child(client, "identity");
@@ -241,7 +241,7 @@
 		xmlnode *feature = xmlnode_new_child(client, "feature");
 		xmlnode_set_attrib(feature, "var", feat);
 	}
-	
+
 	g_hash_table_foreach(props->ext,jabber_caps_store_ext,client);
 }
 
@@ -281,20 +281,20 @@
 		newid->category = g_strdup(id->category);
 		newid->type = g_strdup(id->type);
 		newid->name = g_strdup(id->name);
-		
+
 		result->identities = g_list_append(result->identities,newid);
 	}
 	for(iter = caps->features; iter; iter = g_list_next(iter)) {
 		const char *feat = iter->data;
 		char *newfeat = g_strdup(feat);
-		
+
 		result->features = g_list_append(result->features,newfeat);
 	}
-	
+
 	for(iter = ext; iter; iter = g_list_next(iter)) {
 		const char *extname = iter->data;
 		JabberCapsValueExt *extinfo = g_hash_table_lookup(caps->ext,extname);
-		
+
 		if(extinfo) {
 			GList *iter2;
 			for(iter2 = extinfo->identities; iter2; iter2 = g_list_next(iter2)) {
@@ -303,13 +303,13 @@
 				newid->category = g_strdup(id->category);
 				newid->type = g_strdup(id->type);
 				newid->name = g_strdup(id->name);
-				
+
 				result->identities = g_list_append(result->identities,newid);
 			}
 			for(iter2 = extinfo->features; iter2; iter2 = g_list_next(iter2)) {
 				const char *feat = iter2->data;
 				char *newfeat = g_strdup(feat);
-				
+
 				result->features = g_list_append(result->features,newfeat);
 			}
 		}
@@ -326,23 +326,23 @@
 		g_free(id->type);
 		g_free(id->name);
 		g_free(id);
-		
+
 		clientinfo->identities = g_list_delete_link(clientinfo->identities,clientinfo->identities);
 	}
 	while(clientinfo->features) {
 		char *feat = clientinfo->features->data;
 		g_free(feat);
-		
+
 		clientinfo->features = g_list_delete_link(clientinfo->features,clientinfo->features);
 	}
-	
+
 	g_free(clientinfo);
 }
 
 typedef struct _jabber_caps_cbplususerdata {
 	jabber_caps_get_info_cb cb;
 	gpointer user_data;
-	
+
 	char *who;
 	char *node;
 	char *ver;
--- a/libpurple/protocols/jabber/chat.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/chat.c	Wed Mar 04 16:52:47 2009 +0000
@@ -353,7 +353,7 @@
 	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);
 }
@@ -685,7 +685,7 @@
 		xmlnode_insert_data(status, msg, -1);
 	}
 	jabber_send(chat->js, presence);
-	
+
 	xmlnode_free(presence);
 	g_free(room_jid);
 }
@@ -811,7 +811,7 @@
 			FALSE, FALSE, NULL,
 			_("Find Rooms"), PURPLE_CALLBACK(roomlist_ok_cb),
 			_("Cancel"), PURPLE_CALLBACK(roomlist_cancel_cb),
-			purple_connection_get_account(gc), NULL, NULL,			 
+			purple_connection_get_account(gc), NULL, NULL,
 			js);
 
 	return js->roomlist;
@@ -1033,7 +1033,7 @@
 	iq = jabber_iq_new_query(chat->js, JABBER_IQ_GET,
 			"http://jabber.org/protocol/disco#info");
 
-	xmlnode_set_attrib(iq->node, "to", room_jid); 
+	xmlnode_set_attrib(iq->node, "to", room_jid);
 
 	query = xmlnode_get_child(iq->node, "query");
 
--- a/libpurple/protocols/jabber/data.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/data.c	Wed Mar 04 16:52:47 2009 +0000
@@ -3,17 +3,17 @@
  * 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 Library 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 02110-1301,  USA
  */
- 
+
 #include <stdlib.h>
 #include <glib.h>
 #include <string.h>
@@ -71,7 +71,7 @@
 
 	data->cid = g_strdup(xmlnode_get_attrib(tag, "cid"));
 	data->type = g_strdup(xmlnode_get_attrib(tag, "type"));
-	
+
 	raw_data = xmlnode_get_data(tag);
 	data->data = purple_base64_decode(raw_data, &size);
 	data->size = size;
@@ -176,7 +176,7 @@
 jabber_data_find_remote_by_cid(const gchar *cid)
 {
 	purple_debug_info("jabber", "lookup remote smiley with cid = %s\n", cid);
-	
+
 	return g_hash_table_lookup(remote_data_by_cid, cid);
 }
 
@@ -186,7 +186,7 @@
 	purple_debug_info("jabber", "associating local smiley\n alt = %s, cid = %s\n",
 		alt, jabber_data_get_cid(data));
 	g_hash_table_insert(local_data_by_alt, g_strdup(alt), data);
-	g_hash_table_insert(local_data_by_cid, g_strdup(jabber_data_get_cid(data)), 
+	g_hash_table_insert(local_data_by_cid, g_strdup(jabber_data_get_cid(data)),
 		data);
 }
 
@@ -195,7 +195,7 @@
 {
 	purple_debug_info("jabber", "associating remote smiley, cid = %s\n",
 		jabber_data_get_cid(data));
-	g_hash_table_insert(remote_data_by_cid, g_strdup(jabber_data_get_cid(data)), 
+	g_hash_table_insert(remote_data_by_cid, g_strdup(jabber_data_get_cid(data)),
 		data);
 }
 
--- a/libpurple/protocols/jabber/data.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/data.h	Wed Mar 04 16:52:47 2009 +0000
@@ -3,17 +3,17 @@
  * 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 Library 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 02110-1301,  USA
  */
- 
+
 #ifndef JABBER_DATA_H
 #define JABBER_DATA_H
 
--- a/libpurple/protocols/jabber/disco.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/disco.c	Wed Mar 04 16:52:47 2009 +0000
@@ -132,9 +132,7 @@
 			SUPPORT_FEATURE("http://jabber.org/protocol/bytestreams")
 			SUPPORT_FEATURE("http://jabber.org/protocol/disco#info")
 			SUPPORT_FEATURE("http://jabber.org/protocol/disco#items")
-#if 0
-				SUPPORT_FEATURE("http://jabber.org/protocol/ibb")
-#endif
+			SUPPORT_FEATURE("http://jabber.org/protocol/ibb");
 			SUPPORT_FEATURE("http://jabber.org/protocol/muc")
 			SUPPORT_FEATURE("http://jabber.org/protocol/muc#user")
 			SUPPORT_FEATURE("http://jabber.org/protocol/si")
@@ -142,7 +140,7 @@
 			SUPPORT_FEATURE("http://jabber.org/protocol/xhtml-im")
 			SUPPORT_FEATURE("urn:xmpp:ping")
 			SUPPORT_FEATURE("http://www.xmpp.org/extensions/xep-0199.html#ns")
-			
+
 			if(!node) { /* non-caps disco#info, add all enabled extensions */
 				GList *features;
 				for(features = jabber_features; features; features = features->next) {
@@ -168,7 +166,7 @@
 					} else if(node[pos] != CAPS0115_NODE[pos])
 					break;
 				}
-				
+
 				if(ext != NULL) {
 					/* look for that ext */
 					GList *features;
@@ -183,14 +181,14 @@
 						ext = NULL;
 				}
 			}
-			
+
 			if(ext == NULL) {
 				xmlnode *error, *inf;
-				
+
 				/* XXX: gross hack, implement jabber_iq_set_type or something */
 				xmlnode_set_attrib(iq->node, "type", "error");
 				iq->type = JABBER_IQ_ERROR;
-				
+
 				error = xmlnode_new_child(query, "error");
 				xmlnode_set_attrib(error, "code", "404");
 				xmlnode_set_attrib(error, "type", "cancel");
@@ -273,6 +271,10 @@
 				else if(!strcmp(var, "http://jabber.org/protocol/commands")) {
 					capabilities |= JABBER_CAP_ADHOC;
 				}
+				else if(!strcmp(var, "http://jabber.org/protocol/ibb")) {
+					purple_debug_info("jabber", "remote supports IBB\n");
+					capabilities |= JABBER_CAP_IBB;
+				}
 			}
 		}
 
@@ -316,7 +318,7 @@
 	if(type && !strcmp(type, "get")) {
 		JabberIq *iq = jabber_iq_new_query(js, JABBER_IQ_RESULT,
 				"http://jabber.org/protocol/disco#items");
-		
+
 		/* preserve node */
 		xmlnode *iq_query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#items");
 		if(iq_query) {
--- a/libpurple/protocols/jabber/google.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/google.c	Wed Mar 04 16:52:47 2009 +0000
@@ -283,6 +283,7 @@
 	xmlnode *group;
 	PurpleBuddy *b;
 	JabberBuddy *jb;
+	const char *balias;
 
 	js = (JabberStream*)(gc->proto_data);
 
@@ -309,13 +310,14 @@
 		g = purple_buddy_get_group(b);
 
 		group = xmlnode_new_child(item, "group");
-		xmlnode_insert_data(group, g->name, -1);
+		xmlnode_insert_data(group, purple_group_get_name(g), -1);
 
 		buddies = buddies->next;
 	}
 
+	balias = purple_buddy_get_local_buddy_alias(b);
 	xmlnode_set_attrib(item, "jid", who);
-	xmlnode_set_attrib(item, "name", b->alias ? b->alias : "");
+	xmlnode_set_attrib(item, "name", balias ? balias : "");
 	xmlnode_set_attrib(item, "gr:t", "B");
 	xmlnode_set_attrib(query, "xmlns:gr", "google:roster");
 	xmlnode_set_attrib(query, "gr:ext", "2");
@@ -348,6 +350,7 @@
 	xmlnode *item;
 	xmlnode *group;
 	PurpleBuddy *b;
+	const char *balias;
 
 	g_return_if_fail(gc != NULL);
 	g_return_if_fail(who != NULL);
@@ -357,7 +360,7 @@
 	if (!js || !js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
 		return;
 
-	buddies = purple_find_buddies(js->gc->account, who);
+	buddies = purple_find_buddies(purple_connection_get_account(js->gc), who);
 	if(!buddies)
 		return;
 
@@ -375,13 +378,14 @@
 		g = purple_buddy_get_group(b);
 
 		group = xmlnode_new_child(item, "group");
-		xmlnode_insert_data(group, g->name, -1);
+		xmlnode_insert_data(group, purple_group_get_name(g), -1);
 
 		buddies = buddies->next;
 	}
 
+	balias = purple_buddy_get_local_buddy_alias(b);
 	xmlnode_set_attrib(item, "jid", who);
-	xmlnode_set_attrib(item, "name", b->alias ? b->alias : "");
+	xmlnode_set_attrib(item, "name", balias ? balias : "");
 	xmlnode_set_attrib(query, "xmlns:gr", "google:roster");
 	xmlnode_set_attrib(query, "gr:ext", "2");
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/jabber/ibb.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,521 @@
+/*
+ * 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 Library 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 02110-1301,  USA
+ */
+
+#include "internal.h"
+#include "ibb.h"
+#include "debug.h"
+#include "xmlnode.h"
+
+#define JABBER_IBB_SESSION_DEFAULT_BLOCK_SIZE 4096
+
+static GHashTable *jabber_ibb_sessions = NULL;
+static GList *open_handlers = NULL;
+
+JabberIBBSession *
+jabber_ibb_session_create(JabberStream *js, const gchar *sid, const gchar *who,
+	gpointer user_data)
+{
+	JabberIBBSession *sess = g_new0(JabberIBBSession, 1);
+	sess->js = js;
+	if (sid) {
+		sess->sid = g_strdup(sid);
+	} else {
+		sess->sid = jabber_get_next_id(js);
+	}
+	sess->who = g_strdup(who);
+	sess->block_size = JABBER_IBB_SESSION_DEFAULT_BLOCK_SIZE;
+	sess->state = JABBER_IBB_SESSION_NOT_OPENED;
+	sess->user_data = user_data;
+
+	g_hash_table_insert(jabber_ibb_sessions, sess->sid, sess);
+
+	return sess;
+}
+
+JabberIBBSession *
+jabber_ibb_session_create_from_xmlnode(JabberStream *js, xmlnode *packet,
+	gpointer user_data)
+{
+	JabberIBBSession *sess = NULL;
+	xmlnode *open = xmlnode_get_child_with_namespace(packet, "open",
+		XEP_0047_NAMESPACE);
+	const gchar *sid = xmlnode_get_attrib(open, "sid");
+	const gchar *block_size = xmlnode_get_attrib(open, "block-size");
+
+	if (!open) {
+		return NULL;
+	}
+
+	if (!sid || !block_size) {
+		purple_debug_error("jabber",
+			"IBB session open tag requires sid and block-size attributes\n");
+		g_free(sess);
+		return NULL;
+	}
+
+	sess = jabber_ibb_session_create(js, sid,
+			xmlnode_get_attrib(packet, "from"), user_data);
+	sess->id = g_strdup(xmlnode_get_attrib(packet, "id"));
+	sess->block_size = atoi(block_size);
+	/* if we create a session from an incoming <open/> request, it means the
+	  session is immediatly open... */
+	sess->state = JABBER_IBB_SESSION_OPENED;
+
+	return sess;
+}
+
+void
+jabber_ibb_session_destroy(JabberIBBSession *sess)
+{
+	purple_debug_info("jabber", "IBB: destroying session %p %s\n", sess,
+		sess->sid);
+
+	if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) {
+		jabber_ibb_session_close(sess);
+	}
+
+	if (sess->last_iq_id) {
+		purple_debug_info("jabber", "IBB: removing callback for <iq/> %s\n",
+			sess->last_iq_id);
+		jabber_iq_remove_callback_by_id(jabber_ibb_session_get_js(sess),
+			sess->last_iq_id);
+		g_free(sess->last_iq_id);
+		sess->last_iq_id = NULL;
+	}
+
+	g_hash_table_remove(jabber_ibb_sessions, sess->sid);
+	g_free(sess->id);
+	g_free(sess->sid);
+	g_free(sess->who);
+	g_free(sess);
+}
+
+const gchar *
+jabber_ibb_session_get_sid(const JabberIBBSession *sess)
+{
+	return sess->sid;
+}
+
+JabberStream *
+jabber_ibb_session_get_js(JabberIBBSession *sess)
+{
+	return sess->js;
+}
+
+const gchar *
+jabber_ibb_session_get_who(const JabberIBBSession *sess)
+{
+	return sess->who;
+}
+
+guint16
+jabber_ibb_session_get_send_seq(const JabberIBBSession *sess)
+{
+	return sess->send_seq;
+}
+
+guint16
+jabber_ibb_session_get_recv_seq(const JabberIBBSession *sess)
+{
+	return sess->recv_seq;
+}
+
+JabberIBBSessionState
+jabber_ibb_session_get_state(const JabberIBBSession *sess)
+{
+	return sess->state;
+}
+
+gsize
+jabber_ibb_session_get_block_size(const JabberIBBSession *sess)
+{
+	return sess->block_size;
+}
+
+void
+jabber_ibb_session_set_block_size(JabberIBBSession *sess, gsize size)
+{
+	if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_NOT_OPENED) {
+		sess->block_size = size;
+	} else {
+		purple_debug_error("jabber",
+			"Can't set block size on an open IBB session\n");
+	}
+}
+
+gpointer
+jabber_ibb_session_get_user_data(JabberIBBSession *sess)
+{
+	return sess->user_data;
+}
+
+void
+jabber_ibb_session_set_opened_callback(JabberIBBSession *sess,
+	JabberIBBOpenedCallback *cb)
+{
+	sess->opened_cb = cb;
+}
+
+void
+jabber_ibb_session_set_data_sent_callback(JabberIBBSession *sess,
+	JabberIBBSentCallback *cb)
+{
+	sess->data_sent_cb = cb;
+}
+
+void
+jabber_ibb_session_set_closed_callback(JabberIBBSession *sess,
+	JabberIBBClosedCallback *cb)
+{
+	sess->closed_cb = cb;
+}
+
+void
+jabber_ibb_session_set_data_received_callback(JabberIBBSession *sess,
+	JabberIBBDataCallback *cb)
+{
+	sess->data_received_cb = cb;
+}
+
+void
+jabber_ibb_session_set_error_callback(JabberIBBSession *sess,
+	JabberIBBErrorCallback *cb)
+{
+	sess->error_cb = cb;
+}
+
+static void
+jabber_ibb_session_opened_cb(JabberStream *js, xmlnode *packet, gpointer data)
+{
+	JabberIBBSession *sess = (JabberIBBSession *) data;
+
+	if (strcmp(xmlnode_get_attrib(packet, "type"), "error") == 0) {
+		sess->state = JABBER_IBB_SESSION_ERROR;
+	} else {
+		sess->state = JABBER_IBB_SESSION_OPENED;
+	}
+
+	if (sess->opened_cb) {
+		sess->opened_cb(sess);
+	}
+}
+
+void
+jabber_ibb_session_open(JabberIBBSession *sess)
+{
+	if (jabber_ibb_session_get_state(sess) != JABBER_IBB_SESSION_NOT_OPENED) {
+		purple_debug_error("jabber",
+			"jabber_ibb_session called on an already open stream\n");
+	} else {
+		JabberIq *set = jabber_iq_new(sess->js, JABBER_IQ_SET);
+		xmlnode *open = xmlnode_new("open");
+		gchar block_size[10];
+
+		xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess));
+		xmlnode_set_namespace(open, XEP_0047_NAMESPACE);
+		xmlnode_set_attrib(open, "sid", jabber_ibb_session_get_sid(sess));
+		g_snprintf(block_size, sizeof(block_size), "%" G_GSIZE_FORMAT,
+			jabber_ibb_session_get_block_size(sess));
+		xmlnode_set_attrib(open, "block-size", block_size);
+		xmlnode_insert_child(set->node, open);
+
+		jabber_iq_set_callback(set, jabber_ibb_session_opened_cb, sess);
+
+		jabber_iq_send(set);
+	}
+}
+
+void
+jabber_ibb_session_close(JabberIBBSession *sess)
+{
+	JabberIBBSessionState state = jabber_ibb_session_get_state(sess);
+
+	if (state != JABBER_IBB_SESSION_OPENED && state != JABBER_IBB_SESSION_ERROR) {
+		purple_debug_error("jabber",
+			"jabber_ibb_session_close called on a session that has not been"
+			"opened\n");
+	} else {
+		JabberIq *set = jabber_iq_new(jabber_ibb_session_get_js(sess),
+			JABBER_IQ_SET);
+		xmlnode *close = xmlnode_new("close");
+
+		xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess));
+		xmlnode_set_namespace(close, XEP_0047_NAMESPACE);
+		xmlnode_set_attrib(close, "sid", jabber_ibb_session_get_sid(sess));
+		xmlnode_insert_child(set->node, close);
+		jabber_iq_send(set);
+		sess->state = JABBER_IBB_SESSION_CLOSED;
+	}
+}
+
+void
+jabber_ibb_session_accept(JabberIBBSession *sess)
+{
+	JabberIq *result = jabber_iq_new(jabber_ibb_session_get_js(sess),
+		JABBER_IQ_RESULT);
+
+	xmlnode_set_attrib(result->node, "to", jabber_ibb_session_get_who(sess));
+	jabber_iq_set_id(result, sess->id);
+	jabber_iq_send(result);
+	sess->state = JABBER_IBB_SESSION_OPENED;
+}
+
+static void
+jabber_ibb_session_send_acknowledge_cb(JabberStream *js, xmlnode *packet, gpointer data)
+{
+	JabberIBBSession *sess = (JabberIBBSession *) data;
+	xmlnode *error = xmlnode_get_child(packet, "error");
+
+	if (sess) {
+		/* reset callback */
+		if (sess->last_iq_id) {
+			g_free(sess->last_iq_id);
+			sess->last_iq_id = NULL;
+		}
+
+		if (error) {
+			jabber_ibb_session_close(sess);
+			sess->state = JABBER_IBB_SESSION_ERROR;
+
+			if (sess->error_cb) {
+				sess->error_cb(sess);
+			}
+		} else {
+			if (sess->data_sent_cb) {
+				sess->data_sent_cb(sess);
+			}
+		}
+	} else {
+		/* the session has gone away, it was probably cancelled */
+		purple_debug_info("jabber",
+			"got response from send data, but IBB session is no longer active\n");
+	}
+}
+
+void
+jabber_ibb_session_send_data(JabberIBBSession *sess, gconstpointer data,
+                             gsize size)
+{
+	JabberIBBSessionState state = jabber_ibb_session_get_state(sess);
+
+	purple_debug_info("jabber", "sending data block of %" G_GSIZE_FORMAT " bytes on IBB stream\n",
+		size);
+
+	if (state != JABBER_IBB_SESSION_OPENED) {
+		purple_debug_error("jabber",
+			"trying to send data on a non-open IBB session\n");
+	} else if (size > jabber_ibb_session_get_block_size(sess)) {
+		purple_debug_error("jabber",
+			"trying to send a too large packet in the IBB session\n");
+	} else {
+		JabberIq *set = jabber_iq_new(jabber_ibb_session_get_js(sess),
+			JABBER_IQ_SET);
+		xmlnode *data_element = xmlnode_new("data");
+		char *base64 = purple_base64_encode(data, size);
+		char seq[10];
+		g_snprintf(seq, sizeof(seq), "%u", jabber_ibb_session_get_send_seq(sess));
+
+		xmlnode_set_attrib(set->node, "to", jabber_ibb_session_get_who(sess));
+		xmlnode_set_namespace(data_element, XEP_0047_NAMESPACE);
+		xmlnode_set_attrib(data_element, "sid", jabber_ibb_session_get_sid(sess));
+		xmlnode_set_attrib(data_element, "seq", seq);
+		xmlnode_insert_data(data_element, base64, -1);
+
+		xmlnode_insert_child(set->node, data_element);
+
+		purple_debug_info("jabber",
+			"IBB: setting send <iq/> callback for session %p %s\n", sess,
+			sess->sid);
+		jabber_iq_set_callback(set, jabber_ibb_session_send_acknowledge_cb, sess);
+		sess->last_iq_id = g_strdup(xmlnode_get_attrib(set->node, "id"));
+		purple_debug_info("jabber", "IBB: set sess->last_iq_id: %s\n",
+			sess->last_iq_id);
+		jabber_iq_send(set);
+
+		g_free(base64);
+		(sess->send_seq)++;
+	}
+}
+
+static void
+jabber_ibb_send_error_response(JabberStream *js, xmlnode *packet)
+{
+	JabberIq *result = jabber_iq_new(js, JABBER_IQ_ERROR);
+	xmlnode *error = xmlnode_new("error");
+	xmlnode *item_not_found = xmlnode_new("item-not-found");
+
+	xmlnode_set_namespace(item_not_found,
+		"urn:ietf:params:xml:ns:xmpp-stanzas");
+	xmlnode_set_attrib(error, "code", "440");
+	xmlnode_set_attrib(error, "type", "cancel");
+	jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id"));
+	xmlnode_set_attrib(result->node, "to",
+		xmlnode_get_attrib(packet, "from"));
+	xmlnode_insert_child(error, item_not_found);
+	xmlnode_insert_child(result->node, error);
+
+	jabber_iq_send(result);
+}
+
+void
+jabber_ibb_parse(JabberStream *js, xmlnode *packet)
+{
+	xmlnode *data = xmlnode_get_child_with_namespace(packet, "data",
+		XEP_0047_NAMESPACE);
+	xmlnode *close = xmlnode_get_child_with_namespace(packet, "close",
+		XEP_0047_NAMESPACE);
+	xmlnode *open = xmlnode_get_child_with_namespace(packet, "open",
+		XEP_0047_NAMESPACE);
+	const gchar *sid =
+		data ? xmlnode_get_attrib(data, "sid") :
+			close ? xmlnode_get_attrib(close, "sid") : NULL;
+	JabberIBBSession *sess =
+		sid ? g_hash_table_lookup(jabber_ibb_sessions, sid) : NULL;
+	const gchar *who = xmlnode_get_attrib(packet, "from");
+
+	if (sess) {
+
+		if (strcmp(who, jabber_ibb_session_get_who(sess)) != 0) {
+			/* the iq comes from a different JID than the remote JID of the
+			  session, ignore it */
+			purple_debug_error("jabber",
+				"Got IBB iq from wrong JID, ignoring\n");
+		} else if (data) {
+			const gchar *seq_attr = xmlnode_get_attrib(data, "seq");
+			guint16 seq = (seq_attr ? atoi(seq_attr) : 0);
+
+			/* reject the data, and set the session in error if we get an
+			  out-of-order packet */
+			if (seq_attr && seq == jabber_ibb_session_get_recv_seq(sess)) {
+				/* sequence # is the expected... */
+				JabberIq *result = jabber_iq_new(js, JABBER_IQ_RESULT);
+
+				jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id"));
+				xmlnode_set_attrib(result->node, "to",
+					xmlnode_get_attrib(packet, "from"));
+
+				if (sess->data_received_cb) {
+					gchar *base64 = xmlnode_get_data(data);
+					gsize size;
+					gpointer rawdata = purple_base64_decode(base64, &size);
+
+					g_free(base64);
+
+					if (rawdata) {
+						purple_debug_info("jabber",
+							"got %" G_GSIZE_FORMAT " bytes of data on IBB stream\n",
+							size);
+						if (size > jabber_ibb_session_get_block_size(sess)) {
+							purple_debug_error("jabber",
+								"IBB: received a too large packet\n");
+							if (sess->error_cb)
+								sess->error_cb(sess);
+							g_free(rawdata);
+							return;
+						} else {
+							purple_debug_info("jabber",
+								"calling IBB callback for received data\n");
+							sess->data_received_cb(sess, rawdata, size);
+						}
+						g_free(rawdata);
+					} else {
+						purple_debug_error("jabber",
+							"IBB: invalid BASE64 data received\n");
+						if (sess->error_cb)
+							sess->error_cb(sess);
+						return;
+
+					}
+				}
+
+				(sess->recv_seq)++;
+				jabber_iq_send(result);
+
+			} else {
+				purple_debug_error("jabber",
+					"Received an out-of-order/invalid IBB packet\n");
+				sess->state = JABBER_IBB_SESSION_ERROR;
+
+				if (sess->error_cb) {
+					sess->error_cb(sess);
+				}
+			}
+		} else if (close) {
+			sess->state = JABBER_IBB_SESSION_CLOSED;
+			purple_debug_info("jabber", "IBB: received close\n");
+
+			if (sess->closed_cb) {
+				purple_debug_info("jabber", "IBB: calling closed handler\n");
+				sess->closed_cb(sess);
+			}
+
+		} else {
+			/* this should never happen */
+			purple_debug_error("jabber", "Received bogus iq for IBB session\n");
+		}
+	} else if (open) {
+		JabberIq *result;
+		const GList *iterator;
+
+		/* run all open handlers registered until one returns true */
+		for (iterator = open_handlers ; iterator ;
+			 iterator = g_list_next(iterator)) {
+			JabberIBBOpenHandler *handler = iterator->data;
+
+			if (handler(js, packet)) {
+				result = jabber_iq_new(js, JABBER_IQ_RESULT);
+				xmlnode_set_attrib(result->node, "to",
+					xmlnode_get_attrib(packet, "from"));
+				jabber_iq_set_id(result, xmlnode_get_attrib(packet, "id"));
+				jabber_iq_send(result);
+				return;
+			}
+		}
+		/* no open callback returned success, reject */
+		jabber_ibb_send_error_response(js, packet);
+	} else {
+		/* send error reply */
+		jabber_ibb_send_error_response(js, packet);
+	}
+}
+
+void
+jabber_ibb_register_open_handler(JabberIBBOpenHandler *cb)
+{
+	open_handlers = g_list_append(open_handlers, cb);
+}
+
+void
+jabber_ibb_unregister_open_handler(JabberIBBOpenHandler *cb)
+{
+	open_handlers = g_list_remove(open_handlers, cb);
+}
+
+void
+jabber_ibb_init(void)
+{
+	jabber_ibb_sessions = g_hash_table_new(g_str_hash, g_str_equal);
+}
+
+void
+jabber_ibb_uninit(void)
+{
+	g_hash_table_destroy(jabber_ibb_sessions);
+	g_list_free(open_handlers);
+	jabber_ibb_sessions = NULL;
+	open_handlers = NULL;
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/protocols/jabber/ibb.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,119 @@
+/*
+ * 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 Library 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 02110-1301,  USA
+ */
+
+#ifndef _PURPLE_JABBER_IBB_H_
+#define _PURPLE_JABBER_IBB_H_
+
+#include "jabber.h"
+#include "iq.h"
+
+#define XEP_0047_NAMESPACE "http://jabber.org/protocol/ibb"
+
+typedef struct _JabberIBBSession JabberIBBSession;
+
+typedef void
+(JabberIBBDataCallback)(JabberIBBSession *, const gpointer data, gsize size);
+
+typedef void (JabberIBBOpenedCallback)(JabberIBBSession *);
+typedef void (JabberIBBClosedCallback)(JabberIBBSession *);
+typedef void (JabberIBBErrorCallback)(JabberIBBSession *);
+typedef void (JabberIBBSentCallback)(JabberIBBSession *);
+
+typedef gboolean (JabberIBBOpenHandler)(JabberStream *js, xmlnode *packet);
+
+typedef enum {
+	JABBER_IBB_SESSION_NOT_OPENED,
+	JABBER_IBB_SESSION_OPENED,
+	JABBER_IBB_SESSION_CLOSED,
+	JABBER_IBB_SESSION_ERROR
+} JabberIBBSessionState;
+
+struct _JabberIBBSession {
+	JabberStream *js;
+	gchar *who;
+	gchar *sid;
+	gchar *id;
+	guint16 send_seq;
+	guint16 recv_seq;
+	gsize block_size;
+
+	/* session state */
+	JabberIBBSessionState state;
+
+	/* user data (f.ex. a handle to a PurpleXfer) */
+	gpointer user_data;
+
+	/* callbacks */
+	JabberIBBOpenedCallback *opened_cb;
+	JabberIBBSentCallback *data_sent_cb;
+	JabberIBBClosedCallback *closed_cb;
+	/* callback for receiving data */
+	JabberIBBDataCallback *data_received_cb;
+	JabberIBBErrorCallback *error_cb;
+
+	/* store the last sent IQ (to permit cancel of callback) */
+	gchar *last_iq_id;
+};
+
+JabberIBBSession *jabber_ibb_session_create(JabberStream *js, const gchar *sid,
+	const gchar *who, gpointer user_data);
+JabberIBBSession *jabber_ibb_session_create_from_xmlnode(JabberStream *js,
+	xmlnode *packet, gpointer user_data);
+
+void jabber_ibb_session_destroy(JabberIBBSession *sess);
+
+void jabber_ibb_session_set_opened_callback(JabberIBBSession *sess,
+	JabberIBBOpenedCallback *cb);
+void jabber_ibb_session_set_data_sent_callback(JabberIBBSession *sess,
+	JabberIBBSentCallback *cb);
+void jabber_ibb_session_set_closed_callback(JabberIBBSession *sess,
+	JabberIBBClosedCallback *cb);
+void jabber_ibb_session_set_data_received_callback(JabberIBBSession *sess,
+	JabberIBBDataCallback *cb);
+void jabber_ibb_session_set_error_callback(JabberIBBSession *sess,
+	JabberIBBErrorCallback *cb);
+
+void jabber_ibb_session_open(JabberIBBSession *sess);
+void jabber_ibb_session_close(JabberIBBSession *sess);
+void jabber_ibb_session_accept(JabberIBBSession *sess);
+void jabber_ibb_session_send_data(JabberIBBSession *sess, gconstpointer data,
+	gsize size);
+
+const gchar *jabber_ibb_session_get_sid(const JabberIBBSession *sess);
+JabberStream *jabber_ibb_session_get_js(JabberIBBSession *sess);
+const gchar *jabber_ibb_session_get_who(const JabberIBBSession *sess);
+
+guint16 jabber_ibb_session_get_send_seq(const JabberIBBSession *sess);
+guint16 jabber_ibb_session_get_recv_seq(const JabberIBBSession *sess);
+
+JabberIBBSessionState jabber_ibb_session_get_state(const JabberIBBSession *sess);
+
+gsize jabber_ibb_session_get_block_size(const JabberIBBSession *sess);
+void jabber_ibb_session_set_block_size(JabberIBBSession *sess, gsize size);
+
+gpointer jabber_ibb_session_get_user_data(JabberIBBSession *sess);
+
+/* handle incoming packet */
+void jabber_ibb_parse(JabberStream *js, xmlnode *packet);
+
+/* add a handler for open session */
+void jabber_ibb_register_open_handler(JabberIBBOpenHandler *cb);
+void jabber_ibb_unregister_open_handler(JabberIBBOpenHandler *cb);
+
+void jabber_ibb_init(void);
+void jabber_ibb_uninit(void);
+
+#endif /* _PURPLE_JABBER_IBB_H_ */
--- a/libpurple/protocols/jabber/iq.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/iq.c	Wed Mar 04 16:52:47 2009 +0000
@@ -34,6 +34,7 @@
 #include "ping.h"
 #include "adhoccommands.h"
 #include "data.h"
+#include "ibb.h"
 
 #ifdef _WIN32
 #include "utsname.h"
@@ -393,6 +394,13 @@
 		return;
 	}
 
+	if (xmlnode_get_child_with_namespace(packet, "data", XEP_0047_NAMESPACE)
+		|| xmlnode_get_child_with_namespace(packet, "close", XEP_0047_NAMESPACE)
+		|| xmlnode_get_child_with_namespace(packet, "open", XEP_0047_NAMESPACE)) {
+		jabber_ibb_parse(js, packet);
+		return;
+	}
+
 	/* If we get here, send the default error reply mandated by XMPP-CORE */
 	if(!strcmp(type, "set") || !strcmp(type, "get")) {
 		JabberIq *iq = jabber_iq_new(js, JABBER_IQ_ERROR);
--- a/libpurple/protocols/jabber/jabber.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Wed Mar 04 16:52:47 2009 +0000
@@ -184,7 +184,7 @@
 {
 	if(xmlnode_get_child(packet, "starttls")) {
 		if(jabber_process_starttls(js, packet))
-	
+
 			return;
 	} else if(purple_account_get_bool(js->gc->account, "require_tls", FALSE) && !js->gsc) {
 		purple_connection_error_reason (js->gc,
@@ -467,10 +467,10 @@
 
 	if (js->keepalive_timeout == -1) {
 		JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET);
-		
+
 		xmlnode *ping = xmlnode_new_child(iq->node, "ping");
 		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, NULL);
 		jabber_iq_send(iq);
@@ -578,7 +578,7 @@
 		jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
 	jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
 	purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc);
-	
+
 	/* Tell the app that we're doing encryption */
 	jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
 }
@@ -736,14 +736,14 @@
 			_("Invalid XMPP ID"));
 		return;
 	}
-	
+
 	if (!js->user->domain || *(js->user->domain) == '\0') {
 		purple_connection_error_reason (gc,
 			PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
 			_("Invalid XMPP ID. Domain must be set."));
 		return;
 	}
-	
+
 	if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE)))
 		my_jb->subscription |= JABBER_SUB_BOTH;
 
@@ -853,10 +853,10 @@
 		g_free(buf);
 	} else {
 		char *msg = jabber_parse_error(js, packet, NULL);
-		
+
 		if(!msg)
 			msg = g_strdup(_("Unknown Error"));
-		
+
 		purple_notify_error(NULL, _("Unregistration Failed"),
 							_("Unregistration Failed"), msg);
 		g_free(msg);
@@ -899,9 +899,9 @@
 					if (cbdata->who)
 						xmlnode_set_attrib(iq->node,"to",cbdata->who);
 					xmlnode_new_child(query, "remove");
-					
+
 					jabber_iq_set_callback(iq, jabber_unregistration_result_cb, cbdata->who);
-					
+
 					jabber_iq_send(iq);
 					g_free(cbdata);
 					return;
@@ -1031,7 +1031,7 @@
 			return;
 		}
 	}
-	
+
 	if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) {
 		jabber_x_data_request(js, x, jabber_register_x_data_cb, g_strdup(from));
 		return;
@@ -1182,7 +1182,7 @@
 
 void jabber_register_gateway(JabberStream *js, const char *gateway) {
 	JabberIq *iq;
-	
+
 	iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
 	xmlnode_set_attrib(iq->node, "to", gateway);
 	jabber_iq_send(iq);
@@ -1257,7 +1257,7 @@
 	const char *type = xmlnode_get_attrib(packet,"type");
 	if(!strcmp(type,"error")) {
 		char *msg = jabber_parse_error(js, packet, NULL);
-		
+
 		purple_notify_error(js->gc, _("Error unregistering account"),
 							_("Error unregistering account"), msg);
 		g_free(msg);
@@ -1291,7 +1291,7 @@
 void jabber_unregister_account(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data) {
 	PurpleConnection *gc = purple_account_get_connection(account);
 	JabberStream *js;
-	
+
 	if(gc->state != PURPLE_CONNECTED) {
 		if(gc->state != PURPLE_CONNECTING)
 			jabber_login(account);
@@ -1301,7 +1301,7 @@
 		js->unregistration_user_data = user_data;
 		return;
 	}
-	
+
 	js = gc->proto_data;
 
 	if (js->unregistration) {
@@ -1602,10 +1602,10 @@
 	feat->shortname = g_strdup(shortname);
 	feat->namespace = g_strdup(namespace);
 	feat->is_enabled = cb;
-	
+
 	/* try to remove just in case it already exists in the list */
 	jabber_remove_feature(shortname);
-	
+
 	jabber_features = g_list_append(jabber_features, feat);
 }
 
@@ -1616,7 +1616,7 @@
 		if(!strcmp(feat->shortname, shortname)) {
 			g_free(feat->shortname);
 			g_free(feat->namespace);
-			
+
 			g_free(feature->data);
 			jabber_features = g_list_delete_link(jabber_features, feature);
 			break;
@@ -1633,13 +1633,14 @@
 {
 	JabberStream *js;
 	JabberBuddy *jb = NULL;
-
-	if(!b->account->gc)
+	PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b));
+
+	if(!gc)
 		return NULL;
 
-	js = b->account->gc->proto_data;
+	js = gc->proto_data;
 	if(js)
-		jb = jabber_buddy_find(js, b->name, FALSE);
+		jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE);
 
 	if(!PURPLE_BUDDY_IS_ONLINE(b)) {
 		if(jb && (jb->subscription & JABBER_SUB_PENDING ||
@@ -1653,9 +1654,11 @@
 {
 	char *ret = NULL;
 	JabberBuddy *jb = NULL;
-	
-	if (b->account->gc && b->account->gc->proto_data)
-		jb = jabber_buddy_find(b->account->gc->proto_data, b->name, FALSE);
+	PurpleAccount *account = purple_buddy_get_account(b);
+	PurpleConnection *gc = purple_account_get_connection(account);
+
+	if (gc && gc->proto_data)
+		jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
 
 	if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) {
 		ret = g_strdup(_("Not Authorized"));
@@ -1684,14 +1687,19 @@
 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
 {
 	JabberBuddy *jb;
+	PurpleAccount *account;
+	PurpleConnection *gc;
 
 	g_return_if_fail(b != NULL);
-	g_return_if_fail(b->account != NULL);
-	g_return_if_fail(b->account->gc != NULL);
-	g_return_if_fail(b->account->gc->proto_data != NULL);
-
-	jb = jabber_buddy_find(b->account->gc->proto_data, b->name,
-			FALSE);
+
+	account = purple_buddy_get_account(b);
+	g_return_if_fail(account != NULL);
+
+	gc = purple_account_get_connection(account);
+	g_return_if_fail(gc != NULL);
+	g_return_if_fail(gc->proto_data != NULL);
+
+	jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
 
 	if(jb) {
 		JabberBuddyResource *jbr = NULL;
@@ -1799,9 +1807,12 @@
 	PurpleStatusType *type;
 	GList *types = NULL;
 	PurpleValue *priority_value;
+	PurpleValue *buzz_enabled;
 
 	priority_value = purple_value_new(PURPLE_TYPE_INT);
 	purple_value_set_int(priority_value, 1);
+	buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
+	purple_value_set_boolean(buzz_enabled, TRUE);
 	type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
 			jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_ONLINE),
 			NULL, TRUE, TRUE, FALSE,
@@ -1810,12 +1821,14 @@
 			"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
 			"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
 			"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
-			"buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
+			"buzz", _("Allow Buzz"), buzz_enabled,
 			NULL);
 	types = g_list_append(types, type);
 
 	priority_value = purple_value_new(PURPLE_TYPE_INT);
 	purple_value_set_int(priority_value, 1);
+	buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
+	purple_value_set_boolean(buzz_enabled, TRUE);
 	type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
 			jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_CHAT),
 			_("Chatty"), TRUE, TRUE, FALSE,
@@ -1824,12 +1837,14 @@
 			"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
 			"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
 			"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
-			"buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
+			"buzz", _("Allow Buzz"), buzz_enabled,
 			NULL);
 	types = g_list_append(types, type);
 
 	priority_value = purple_value_new(PURPLE_TYPE_INT);
 	purple_value_set_int(priority_value, 0);
+	buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
+	purple_value_set_boolean(buzz_enabled, TRUE);
 	type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
 			jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_AWAY),
 			NULL, TRUE, TRUE, FALSE,
@@ -1838,12 +1853,14 @@
 			"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
 			"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
 			"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
-			"buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
+			"buzz", _("Allow Buzz"), buzz_enabled,
 			NULL);
 	types = g_list_append(types, type);
 
 	priority_value = purple_value_new(PURPLE_TYPE_INT);
 	purple_value_set_int(priority_value, 0);
+	buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
+	purple_value_set_boolean(buzz_enabled, TRUE);
 	type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY,
 			jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_XA),
 			NULL, TRUE, TRUE, FALSE,
@@ -1852,7 +1869,7 @@
 			"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
 			"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
 			"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
-			"buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
+			"buzz", _("Allow Buzz"), buzz_enabled,
 			NULL);
 	types = g_list_append(types, type);
 
@@ -1866,7 +1883,6 @@
 			"mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
 			"moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
 			"nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
-			"buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
 			NULL);
 	types = g_list_append(types, type);
 
@@ -2012,7 +2028,7 @@
 
 	if(js->pep)
 		jabber_pep_init_actions(&m);
-	
+
 	if(js->commands)
 		jabber_adhoc_init_server_commands(js, &m);
 
@@ -2027,19 +2043,24 @@
 	if(!(jid = jabber_id_new(name)))
 		return NULL;
 
-	for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
-		for(cnode = gnode->child; cnode; cnode = cnode->next) {
+	for(gnode = purple_blist_get_root(); gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode)) {
+		for(cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode)) {
 			PurpleChat *chat = (PurpleChat*)cnode;
 			const char *room, *server;
+			GHashTable *components;
 			if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
 				continue;
 
-			if(chat->account != account)
+			if (purple_chat_get_account(chat) != account)
 				continue;
 
-			if(!(room = g_hash_table_lookup(chat->components, "room")))
+			components = purple_chat_get_components(chat);
+			if(!(room = g_hash_table_lookup(components, "room")))
 				continue;
-			if(!(server = g_hash_table_lookup(chat->components, "server")))
+			if(!(server = g_hash_table_lookup(components, "server")))
 				continue;
 
 			if(jid->node && jid->domain &&
@@ -2059,7 +2080,7 @@
 	JabberID *jid;
 	JabberBuddy *jb;
 	JabberBuddyResource *jbr;
-	
+
 	if(!(jid = jabber_id_new(who)))
 		return;
 
@@ -2320,7 +2341,7 @@
 	if (!chat || !args || !args[0] || !args[1])
 		return PURPLE_CMD_RET_FAILED;
 
-	if (strcmp(args[1], "owner") != 0 && 
+	if (strcmp(args[1], "owner") != 0 &&
 	    strcmp(args[1], "admin") != 0 &&
 	    strcmp(args[1], "member") != 0 &&
 	    strcmp(args[1], "outcast") != 0 &&
@@ -2449,63 +2470,92 @@
 
 	JabberBuddy *jb;
 	JabberBuddyResource *jbr;
-	GList *iter;
+	PurpleConnection *gc = js->gc;
+	PurpleBuddy *buddy =
+		purple_find_buddy(purple_connection_get_account(gc), username);
+	const gchar *alias =
+		buddy ? purple_buddy_get_contact_alias(buddy) : username;
 
 	if(!username)
 		return FALSE;
 
 	jb = jabber_buddy_find(js, username, FALSE);
 	if(!jb) {
-		*error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username);
+		*error = g_strdup_printf(_("Unable to buzz, because there is nothing "
+			"known about %s."), alias);
 		return FALSE;
 	}
 
 	jbr = jabber_buddy_find_resource(jb, NULL);
-	if(!jbr) {
-		*error = g_strdup_printf(_("Unable to buzz, because user %s might be offline."), username);
-		return FALSE;
-	}
-
-	if(!jbr->caps) {
-		*error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username);
+	if (!jbr) {
+		*error = g_strdup_printf(_("Unable to buzz, because %s might be offline."),
+			alias);
 		return FALSE;
 	}
 
-	for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) {
-		if(!strcmp(iter->data, "http://www.xmpp.org/extensions/xep-0224.html#ns")) {
-			xmlnode *buzz, *msg = xmlnode_new("message");
-			gchar *to;
-
-			to = g_strdup_printf("%s/%s", username, jbr->name);
-			xmlnode_set_attrib(msg, "to", to);
-			g_free(to);
-
-			/* avoid offline storage */
-			xmlnode_set_attrib(msg, "type", "headline");
-
-			buzz = xmlnode_new_child(msg, "attention");
-			xmlnode_set_namespace(buzz, "http://www.xmpp.org/extensions/xep-0224.html#ns");
-
-			jabber_send(js, msg);
-			xmlnode_free(msg);
-
-			return TRUE;
-		}
+	if (jabber_resource_has_capability(jbr, XEP_0224_NAMESPACE)) {
+		xmlnode *buzz, *msg = xmlnode_new("message");
+		gchar *to;
+
+		to = g_strdup_printf("%s/%s", username, jbr->name);
+		xmlnode_set_attrib(msg, "to", to);
+		g_free(to);
+
+		/* avoid offline storage */
+		xmlnode_set_attrib(msg, "type", "headline");
+
+		buzz = xmlnode_new_child(msg, "attention");
+		xmlnode_set_namespace(buzz, XEP_0224_NAMESPACE);
+
+		jabber_send(js, msg);
+		xmlnode_free(msg);
+
+		return TRUE;
+	} else {
+		*error = g_strdup_printf(_("Unable to buzz, because %s does "
+			"not support it or do not wish to receive buzzes now."), alias);
+		return FALSE;
 	}
-
-	*error = g_strdup_printf(_("Unable to buzz, because the user %s does not support it."), username);
-	return FALSE;
 }
 
 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv,
 		const char *cmd, char **args, char **error, void *data)
 {
 	JabberStream *js = conv->account->gc->proto_data;
-
-	if(!args || !args[0])
+	const gchar *who;
+
+	if (!args || !args[0]) {
+		/* use the buddy from conversation, if it's a one-to-one conversation */
+		if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
+			who = purple_conversation_get_name(conv);
+		} else {
+			return PURPLE_CMD_RET_FAILED;
+		}
+	} else {
+		who = args[0];
+	}
+
+	if (_jabber_send_buzz(js, who, error)) {
+		const gchar *alias;
+		gchar *str;
+		PurpleBuddy *buddy =
+			purple_find_buddy(purple_connection_get_account(conv->account->gc),
+				who);
+
+		if (buddy != NULL)
+			alias = purple_buddy_get_contact_alias(buddy);
+		else
+			alias = who;
+
+		str = g_strdup_printf(_("Buzzing %s..."), alias);
+		purple_conversation_write(conv, NULL, str,
+			PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, time(NULL));
+		g_free(str);
+
+		return PURPLE_CMD_RET_OK;
+	} else {
 		return PURPLE_CMD_RET_FAILED;
-
-	return _jabber_send_buzz(js, args[0], error)  ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED;
+	}
 }
 
 GList *jabber_attention_types(PurpleAccount *account)
@@ -2618,8 +2668,9 @@
 					  "prpl-jabber", jabber_cmd_ping,
 					  _("ping &lt;jid&gt;:	Ping a user/component/server."),
 					  NULL);
-	purple_cmd_register("buzz", "s", PURPLE_CMD_P_PRPL,
-					  PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY,
+	purple_cmd_register("buzz", "w", PURPLE_CMD_P_PRPL,
+					  PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY |
+					  PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
 					  "prpl-jabber", jabber_cmd_buzz,
 					  _("buzz: Buzz a user to get their attention"), NULL);
 }
--- a/libpurple/protocols/jabber/jabber.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/jabber.h	Wed Mar 04 16:52:47 2009 +0000
@@ -203,7 +203,7 @@
 	gboolean unregistration;
 	PurpleAccountUnregistrationCb unregistration_cb;
 	void *unregistration_user_data;
-	
+
 	gboolean vcard_fetched;
 
 	/* does the local server support PEP? */
@@ -211,16 +211,16 @@
 
 	/* Is Buzz enabled? */
 	gboolean allowBuzz;
-	
+
 	/* A list of JabberAdHocCommands supported by the server */
 	GList *commands;
-	
+
 	/* last presence update to check for differences */
 	JabberBuddyState old_state;
 	char *old_msg;
 	int old_priority;
 	char *old_avatarhash;
-	
+
 	/* same for user tune */
 	char *old_artist;
 	char *old_title;
@@ -228,9 +228,9 @@
 	char *old_uri;
 	int old_length;
 	char *old_track;
-	
+
 	char *certificate_CN;
-	
+
 	/* A purple timeout tag for the keepalive */
 	int keepalive_timeout;
 
--- a/libpurple/protocols/jabber/libxmpp.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/libxmpp.c	Wed Mar 04 16:52:47 2009 +0000
@@ -44,6 +44,7 @@
 #include "usertune.h"
 #include "caps.h"
 #include "data.h"
+#include "ibb.h"
 
 static PurplePluginProtocolInfo prpl_info =
 {
@@ -137,7 +138,7 @@
 			     purple_marshal_VOID__POINTER_POINTER, NULL, 2,
 			     purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
 			     purple_value_new_outgoing(PURPLE_TYPE_STRING));
-	
+
 	return TRUE;
 }
 
@@ -146,11 +147,13 @@
 	purple_signal_unregister(plugin, "jabber-receiving-xmlnode");
 
 	purple_signal_unregister(plugin, "jabber-sending-xmlnode");
-	
+
 	purple_signal_unregister(plugin, "jabber-sending-text");
-	
+
 	jabber_data_uninit();
-	
+	jabber_si_uninit();
+	jabber_ibb_uninit();
+
 	return TRUE;
 }
 
@@ -203,30 +206,30 @@
 #endif
 	PurpleAccountUserSplit *split;
 	PurpleAccountOption *option;
-	
+
 	/* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */
 	split = purple_account_user_split_new(_("Domain"), NULL, '@');
 	purple_account_user_split_set_reverse(split, FALSE);
 	prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);
-	
+
 	split = purple_account_user_split_new(_("Resource"), NULL, '/');
 	purple_account_user_split_set_reverse(split, FALSE);
 	prpl_info.user_splits = g_list_append(prpl_info.user_splits, split);
-	
+
 	option = purple_account_option_bool_new(_("Require SSL/TLS"), "require_tls", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
 											   option);
-	
+
 	option = purple_account_option_bool_new(_("Force old (port 5223) SSL"), "old_ssl", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
 											   option);
-	
+
 	option = purple_account_option_bool_new(
 						_("Allow plaintext auth over unencrypted streams"),
 						"auth_plain_in_clear", FALSE);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
 						   option);
-	
+
 	option = purple_account_option_int_new(_("Connect port"), "port", 5222);
 	prpl_info.protocol_options = g_list_append(prpl_info.protocol_options,
 						   option);
@@ -272,21 +275,26 @@
 #endif
 #endif
 	jabber_register_commands();
-	
+
 	jabber_iq_init();
 	jabber_pep_init();
-	
+
 	jabber_tune_init();
 	jabber_caps_init();
-	
+
 	jabber_data_init();
-	
+
+
+	jabber_ibb_init();
+	jabber_si_init();
+
 	jabber_add_feature("avatarmeta", AVATARNAMESPACEMETA, jabber_pep_namespace_only_when_pep_enabled_cb);
 	jabber_add_feature("avatardata", AVATARNAMESPACEDATA, jabber_pep_namespace_only_when_pep_enabled_cb);
-	jabber_add_feature("buzz", "http://www.xmpp.org/extensions/xep-0224.html#ns",
+	jabber_add_feature("buzz", XEP_0224_NAMESPACE,
 					   jabber_buzz_isenabled);
 	jabber_add_feature("bob", XEP_0231_NAMESPACE,
 					   jabber_custom_smileys_isenabled);
+	jabber_add_feature("ibb", XEP_0047_NAMESPACE, NULL);
 
 	jabber_pep_register_handler("avatar", AVATARNAMESPACEMETA, jabber_buddy_avatar_update_metadata);
 }
--- a/libpurple/protocols/jabber/message.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/message.c	Wed Mar 04 16:52:47 2009 +0000
@@ -118,7 +118,7 @@
 				}
 			}
 			serv_got_typing_stopped(jm->js->gc, from);
-			
+
 		} else {
 			serv_got_typing_stopped(jm->js->gc, from);
 		}
@@ -138,7 +138,7 @@
 				g_free(jbr->thread_id);
 			jbr->thread_id = g_strdup(jbr->thread_id);
 		}
-		
+
 		if (jm->js->googletalk && jm->xhtml == NULL) {
 			char *tmp = jm->body;
 			jm->body = jabber_google_format_to_html(jm->body);
@@ -289,8 +289,6 @@
 static void handle_buzz(JabberMessage *jm) {
 	PurpleBuddy *buddy;
 	PurpleAccount *account;
-	PurpleConversation *c;
-	char *username;
 
 	/* Delayed buzz MUST NOT be accepted */
 	if(jm->delayed)
@@ -305,15 +303,8 @@
 	if ((buddy = purple_find_buddy(account, jm->from)) == NULL)
 		return; /* Do not accept buzzes from unknown people */
 
-	c = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, jm->from, account);
-	if (c == NULL)
-		c = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, jm->from);
-
-	username = g_markup_escape_text(purple_buddy_get_alias(buddy), -1);
 	/* xmpp only has 1 attention type, so index is 0 */
-	purple_prpl_got_attention(jm->js->gc, username, 0);
-
-	g_free(username);
+	purple_prpl_got_attention(jm->js->gc, jm->from, 0);
 }
 
 /* used internally by the functions below */
@@ -328,14 +319,14 @@
 	GHashTable *table)
 {
 	xmlnode *child;
-	
+
 	for (child = xmlnode_get_child(message, "img") ; child ;
 		 child = xmlnode_get_next_twin(child)) {
 		const gchar *src = xmlnode_get_attrib(child, "src");
-		
+
 		if (g_str_has_prefix(src, "cid:")) {
 			const gchar *cid = src + 4;
-			
+
 			/* if we haven't "fetched" this yet... */
 			if (!g_hash_table_lookup(table, cid)) {
 				/* take a copy of the cid and let the SmileyRef own it... */
@@ -343,14 +334,14 @@
 				JabberSmileyRef *ref = g_new0(JabberSmileyRef, 1);
 				const gchar *alt = xmlnode_get_attrib(child, "alt");
 				ref->cid = temp_cid;
-				/* if there is no "alt" string, use the cid... 
+				/* if there is no "alt" string, use the cid...
 				 include the entire src, eg. "cid:.." to avoid linkification */
 				if (alt && alt[0] != '\0') {
 					/* workaround for when "alt" is set to the value of the
 					 CID (which Jabbim seems to do), to avoid it showing up
 						 as an mailto: link */
 					if (purple_email_is_valid(alt)) {
-						ref->alt = g_strdup_printf("smiley:%s", alt); 
+						ref->alt = g_strdup_printf("smiley:%s", alt);
 					} else {
 						ref->alt = g_strdup(alt);
 					}
@@ -361,7 +352,7 @@
 			}
 		}
 	}
-		
+
 	for (child = message->child ; child ; child = child->next) {
 		jabber_message_get_refs_from_xmlnode_internal(child, table);
 	}
@@ -372,9 +363,9 @@
 {
 	GList **refs = (GList **) user_data;
 	JabberSmileyRef *ref = (JabberSmileyRef *) value;
-	
+
 	*refs = g_list_append(*refs, ref);
-	
+
 	return TRUE;
 }
 
@@ -383,9 +374,9 @@
 {
 	GList *refs = NULL;
 	GHashTable *unique_refs = g_hash_table_new(g_str_hash, g_str_equal);
-	
+
 	jabber_message_get_refs_from_xmlnode_internal(message, unique_refs);
-	(void) g_hash_table_foreach_steal(unique_refs, 
+	(void) g_hash_table_foreach_steal(unique_refs,
 		jabber_message_get_refs_steal, (gpointer) &refs);
 	g_hash_table_destroy(unique_refs);
 	return refs;
@@ -518,7 +509,7 @@
 
 static void
 jabber_message_send_data_request(JabberStream *js, PurpleConversation *conv,
-								 const gchar *cid, const gchar *who, 
+								 const gchar *cid, const gchar *who,
 								 const gchar *alt)
 {
 	JabberIq *request = jabber_iq_new(js, JABBER_IQ_GET);
@@ -580,7 +571,7 @@
 			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);
 			}
@@ -632,7 +623,7 @@
 					smiley_refs = jabber_message_get_refs_from_xmlnode(child);
 					purple_debug_info("jabber", "found %d smileys\n",
 						g_list_length(smiley_refs));
-					
+
 					if (jm->type == JABBER_MESSAGE_GROUPCHAT) {
 						JabberID *jid = jabber_id_new(jm->from);
 						JabberChat *chat = NULL;
@@ -676,7 +667,7 @@
 					const gchar *cid = ref->cid;
 					const gchar *alt = ref->alt;
 
-					purple_debug_info("jabber", 
+					purple_debug_info("jabber",
 						"about to add custom smiley %s to the conv\n", alt);
 					if (purple_conv_custom_smiley_add(conv, alt, "cid", cid,
 						    TRUE)) {
@@ -684,8 +675,8 @@
 								jabber_data_find_remote_by_cid(cid);
 						/* if data is already known, we add write it immediatly */
 						if (data) {
-							purple_debug_info("jabber", 
-								"data is already known\n"); 
+							purple_debug_info("jabber",
+								"data is already known\n");
 							purple_conv_custom_smiley_write(conv, alt,
 								jabber_data_get_data(data),
 								jabber_data_get_size(data));
@@ -731,7 +722,7 @@
 			jm->type = JABBER_MESSAGE_EVENT;
 			for(items = xmlnode_get_child(child,"items"); items; items = items->next)
 				jm->eventitems = g_list_append(jm->eventitems, items);
-		} else if(!strcmp(child->name, "attention") && !strcmp(xmlns,"http://www.xmpp.org/extensions/xep-0224.html#ns")) {
+		} else if(!strcmp(child->name, "attention") && !strcmp(xmlns, XEP_0224_NAMESPACE)) {
 			jm->hasBuzz = TRUE;
 		} else if(!strcmp(child->name, "delay") && !strcmp(xmlns,"urn:xmpp:delay")) {
 			const char *timestamp = xmlnode_get_attrib(child, "stamp");
@@ -910,9 +901,9 @@
 {
 	JabberStream *js = (JabberStream *) gc->proto_data;
 	JabberBuddy *jb;
-	
+
 	if (!js) {
-		purple_debug_error("jabber", 
+		purple_debug_error("jabber",
 			"jabber_conv_support_custom_smileys: could not find stream\n");
 		return FALSE;
 	}
@@ -965,7 +956,7 @@
 
 	if(type)
 		xmlnode_set_attrib(message, "type", type);
- 
+
 	if (jm->id)
 		xmlnode_set_attrib(message, "id", jm->id);
 
@@ -1022,7 +1013,7 @@
 		PurpleConversation *conv =
 			purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, jm->to,
 				account);
- 
+
 		if (jabber_conv_support_custom_smileys(jm->js->gc, conv, jm->to)) {
 			GList *found_smileys = jabber_message_xhtml_find_smileys(jm->xhtml);
 
@@ -1037,19 +1028,19 @@
 					const gchar *shortcut = purple_smiley_get_shortcut(smiley);
 					const JabberData *data =
 						jabber_data_find_local_by_alt(shortcut);
-							
+
 					/* the object has not been sent before */
 					if (!data) {
 						PurpleStoredImage *image =
 								purple_smiley_get_stored_image(smiley);
 						const gchar *ext = purple_imgstore_get_extension(image);
 						JabberStream *js = jm->js;
-						
+
 						JabberData *new_data =
 							jabber_data_create_from_data(purple_imgstore_get_data(image),
 								purple_imgstore_get_size(image),
 								jabber_message_get_mimetype_from_ext(ext), js);
-						purple_debug_info("jabber", 
+						purple_debug_info("jabber",
 							"cache local smiley alt = %s, cid = %s\n",
 							shortcut, jabber_data_get_cid(new_data));
 						jabber_data_associate_local(new_data, shortcut);
@@ -1124,7 +1115,7 @@
 	}
 
 	buf = g_strdup_printf("<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>%s</body></html>", msg);
-	
+
 	purple_markup_html_to_xhtml(buf, &xhtml, &jm->body);
 	g_free(buf);
 
--- a/libpurple/protocols/jabber/message.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/message.h	Wed Mar 04 16:52:47 2009 +0000
@@ -26,6 +26,8 @@
 #include "jabber.h"
 #include "xmlnode.h"
 
+#define XEP_0224_NAMESPACE "urn:xmpp:attention:0"
+
 typedef struct _JabberMessage {
 	JabberStream *js;
 	enum {
--- a/libpurple/protocols/jabber/pep.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/pep.c	Wed Mar 04 16:52:47 2009 +0000
@@ -32,7 +32,7 @@
 void jabber_pep_init(void) {
 	if(!pep_handlers) {
 		pep_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
-		
+
 		/* register PEP handlers */
 		jabber_mood_init();
 		jabber_nick_init();
@@ -57,31 +57,31 @@
 	xmlnode *pubsub = xmlnode_get_child_with_namespace(packet,"pubsub","http://jabber.org/protocol/pubsub");
 	xmlnode *items = NULL;
 	JabberPEPHandler *cb = data;
-	
+
 	if(pubsub)
 		items = xmlnode_get_child(pubsub, "items");
-	
+
 	cb(js, from, items);
 }
 
 void jabber_pep_request_item(JabberStream *js, const char *to, const char *node, const char *id, JabberPEPHandler cb) {
 	JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET);
 	xmlnode *pubsub, *items, *item;
-	
+
 	xmlnode_set_attrib(iq->node,"to",to);
 	pubsub = xmlnode_new_child(iq->node,"pubsub");
-	
+
 	xmlnode_set_namespace(pubsub,"http://jabber.org/protocol/pubsub");
-	
+
 	items = xmlnode_new_child(pubsub, "items");
 	xmlnode_set_attrib(items,"node",node);
-	
+
 	item = xmlnode_new_child(items, "item");
 	if(id)
 		xmlnode_set_attrib(item, "id", id);
-	
+
 	jabber_iq_set_callback(iq,do_pep_iq_request_item_callback,(gpointer)cb);
-	
+
 	jabber_iq_send(iq);
 }
 
@@ -94,15 +94,15 @@
 	JabberPEPHandler *jph;
 	GList *itemslist;
 	char *jid = jabber_get_bare_jid(jm->from);
-	
+
 	for(itemslist = jm->eventitems; itemslist; itemslist = itemslist->next) {
 		xmlnode *items = (xmlnode*)itemslist->data;
 		const char *nodename = xmlnode_get_attrib(items,"node");
-		
+
 		if(nodename && (jph = g_hash_table_lookup(pep_handlers, nodename)))
 			jph(jm->js, jid, items);
 	}
-	
+
 	/* discard items we don't have a handler for */
 	g_free(jid);
 }
--- a/libpurple/protocols/jabber/presence.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/presence.c	Wed Mar 04 16:52:47 2009 +0000
@@ -136,7 +136,7 @@
 	}
 
 	purple_status_to_jabber(status, &state, &stripped, &priority);
-	
+
 	/* check for buzz support */
 	allowBuzz = purple_status_get_attr_boolean(status,"buzz");
 	/* changing the buzz state has to trigger a re-broadcasting of the presence for caps */
@@ -145,7 +145,7 @@
 		tune = purple_presence_get_status(p, "tune");
 		stripped = jabber_google_presence_outgoing(tune);
 	}
-	
+
 #define CHANGED(a,b) ((!a && b) || (a && a[0] == '\0' && b && b[0] != '\0') || \
 					  (a && !b) || (a && a[0] != '\0' && b && b[0] == '\0') || (a && b && strcmp(a,b)))
 	/* check if there are any differences to the <presence> and send them in that case */
@@ -166,9 +166,9 @@
 
 		g_hash_table_foreach(js->chats, chats_send_presence_foreach, presence);
 		xmlnode_free(presence);
-		
+
 		/* update old values */
-		
+
 		if(js->old_msg)
 			g_free(js->old_msg);
 		if(js->old_avatarhash)
@@ -191,7 +191,7 @@
 		length = (!purple_status_get_attr_value(tune, PURPLE_TUNE_TIME)) ? -1 :
 				purple_status_get_attr_int(tune, PURPLE_TUNE_TIME);
 	}
-	
+
 	if(CHANGED(artist, js->old_artist) || CHANGED(title, js->old_title) || CHANGED(source, js->old_source) ||
 	   CHANGED(uri, js->old_uri) || CHANGED(track, js->old_track) || (length != js->old_length)) {
 		PurpleJabberTuneInfo tuneinfo = {
@@ -203,7 +203,7 @@
 			(char*)uri
 		};
 		jabber_tune_set(js->gc, &tuneinfo);
-		
+
 		/* update old values */
 		g_free(js->old_artist);
 		g_free(js->old_title);
@@ -264,27 +264,27 @@
 	xmlnode_set_namespace(c, "http://jabber.org/protocol/caps");
 	xmlnode_set_attrib(c, "node", CAPS0115_NODE);
 	xmlnode_set_attrib(c, "ver", VERSION);
-	
+
 	if(js != NULL) {
 		/* add the extensions */
 		char extlist[1024];
 		unsigned remaining = 1023; /* one less for the \0 */
 		GList *feature;
-		
+
 		extlist[0] = '\0';
 		for(feature = jabber_features; feature && remaining > 0; feature = feature->next) {
 			JabberFeature *feat = (JabberFeature*)feature->data;
 			unsigned featlen;
-			
+
 			if(feat->is_enabled != NULL && feat->is_enabled(js, feat->shortname, feat->namespace) == FALSE)
 				continue; /* skip this feature */
-			
+
 			featlen = strlen(feat->shortname);
-			
+
 			/* cut off when we don't have any more space left in our buffer (too bad) */
 			if(featlen > remaining)
 				break;
-			
+
 			strncat(extlist,feat->shortname,remaining);
 			remaining -= featlen;
 			if(feature->next) { /* no space at the end */
@@ -296,7 +296,7 @@
 		if(remaining < 1023)
 			xmlnode_set_attrib(c, "ext", extlist);
 	}
-	
+
 	return presence;
 }
 
@@ -745,7 +745,7 @@
 				const char *node = xmlnode_get_attrib(caps,"node");
 				const char *ver = xmlnode_get_attrib(caps,"ver");
 				const char *ext = xmlnode_get_attrib(caps,"ext");
-				
+
 				if(node && ver) {
 					JabberPresenceCapabilities *userdata = g_new0(JabberPresenceCapabilities, 1);
 					userdata->js = js;
--- a/libpurple/protocols/jabber/roster.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/roster.c	Wed Mar 04 16:52:47 2009 +0000
@@ -80,15 +80,16 @@
 
 		buddies = g_slist_remove(buddies, b);
 
-		if((l = g_slist_find_custom(g2, g->name, (GCompareFunc)strcmp))) {
-			const char *servernick;
+		if((l = g_slist_find_custom(g2, purple_group_get_name(g), (GCompareFunc)strcmp))) {
+			const char *servernick, *balias;
 
 			/* Previously stored serverside / buddy-supplied alias */
 			if((servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick")))
 				serv_got_alias(js->gc, jid, servernick);
 
 			/* Alias from our roster retrieval */
-			if(alias && (!b->alias || strcmp(b->alias, alias)))
+			balias = purple_buddy_get_local_buddy_alias(b);
+			if(alias && (!balias || strcmp(balias, alias)))
 				purple_serv_got_private_alias(js->gc, jid, alias);
 			g_free(l->data);
 			g2 = g_slist_delete_link(g2, l);
@@ -104,7 +105,7 @@
 		if (pool) {
 			b = pool->data;
 			pool = g_list_delete_link(pool, pool);
-		} else {			
+		} else {
 			b = purple_buddy_new(js->gc->account, jid, alias);
 		}
 
@@ -119,11 +120,13 @@
 		/* If we just learned about ourself, then fake our status,
 		 * because we won't be receiving a normal presence message
 		 * about ourself. */
-		if(!strcmp(b->name, my_bare_jid)) {
+		if(!strcmp(purple_buddy_get_name(b), my_bare_jid)) {
 			PurplePresence *gpresence;
 			PurpleStatus *status;
+			PurpleAccount *account;
 
-			gpresence = purple_account_get_presence(js->gc->account);
+			account = purple_connection_get_account(js->gc);
+			gpresence = purple_account_get_presence(account);
 			status = purple_presence_get_active_status(gpresence);
 			jabber_presence_fake_to_self(js, status);
 		}
@@ -273,6 +276,7 @@
 	GSList *groups = NULL, *l;
 	JabberIq *iq;
 	xmlnode *query, *item, *group;
+	const char *balias;
 
 	if (js->currently_parsing_roster_push)
 		return;
@@ -289,7 +293,7 @@
 		while(buddies) {
 			b = buddies->data;
 			g = purple_buddy_get_group(b);
-			groups = g_slist_append(groups, g->name);
+			groups = g_slist_append(groups, (char *)purple_group_get_name(g));
 			buddies = g_slist_remove(buddies, b);
 		}
 	}
@@ -301,7 +305,8 @@
 
 	xmlnode_set_attrib(item, "jid", name);
 
-	xmlnode_set_attrib(item, "name", b->alias ? b->alias : "");
+	balias = purple_buddy_get_local_buddy_alias(b);
+	xmlnode_set_attrib(item, "name", balias ? balias : "");
 
 	for(l = groups; l; l = l->next) {
 		group = xmlnode_new_child(item, "group");
@@ -310,7 +315,7 @@
 
 	if(!grps)
 		g_slist_free(groups);
-	
+
 	if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) {
 		jabber_google_roster_outgoing(js, query, item);
 		xmlnode_set_attrib(query, "xmlns:gr", "google:roster");
@@ -327,14 +332,16 @@
 	JabberBuddy *jb;
 	JabberBuddyResource *jbr;
 	char *my_bare_jid;
+	const char *name;
 
 	if(!js->roster_parsed)
 		return;
 
-	if(!(who = jabber_get_bare_jid(buddy->name)))
+	name = purple_buddy_get_name(buddy);
+	if(!(who = jabber_get_bare_jid(name)))
 		return;
 
-	jb = jabber_buddy_find(js, buddy->name, FALSE);
+	jb = jabber_buddy_find(js, name, FALSE);
 
 	jabber_roster_update(js, who, NULL);
 
@@ -375,6 +382,7 @@
 	GSList *buddies, *groups = NULL;
 	PurpleBuddy *b;
 	PurpleGroup *g;
+	const char *gname;
 
 	if(!old_group || !new_group || !strcmp(old_group, new_group))
 		return;
@@ -383,10 +391,11 @@
 	while(buddies) {
 		b = buddies->data;
 		g = purple_buddy_get_group(b);
-		if(!strcmp(g->name, old_group))
+		gname = purple_group_get_name(g);
+		if(!strcmp(gname, old_group))
 			groups = g_slist_append(groups, (char*)new_group); /* ick */
 		else
-			groups = g_slist_append(groups, g->name);
+			groups = g_slist_append(groups, (char*)gname);
 		buddies = g_slist_remove(buddies, b);
 	}
 	jabber_roster_update(gc->proto_data, name, groups);
@@ -397,15 +406,17 @@
 		PurpleGroup *group, GList *moved_buddies)
 {
 	GList *l;
+	const char *gname = purple_group_get_name(group);
 	for(l = moved_buddies; l; l = l->next) {
 		PurpleBuddy *buddy = l->data;
-		jabber_roster_group_change(gc, buddy->name, old_name, group->name);
+		jabber_roster_group_change(gc, purple_buddy_get_name(buddy), old_name, gname);
 	}
 }
 
 void jabber_roster_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
 		PurpleGroup *group) {
-	GSList *buddies = purple_find_buddies(gc->account, buddy->name);
+	const char *name = purple_buddy_get_name(buddy);
+	GSList *buddies = purple_find_buddies(purple_connection_get_account(gc), name);
 
 	buddies = g_slist_remove(buddies, buddy);
 	if(buddies != NULL) {
@@ -416,11 +427,11 @@
 		while(buddies) {
 			tmpbuddy = buddies->data;
 			tmpgroup = purple_buddy_get_group(tmpbuddy);
-			groups = g_slist_append(groups, tmpgroup->name);
+			groups = g_slist_append(groups, (char *)purple_group_get_name(tmpgroup));
 			buddies = g_slist_remove(buddies, tmpbuddy);
 		}
 
-		jabber_roster_update(gc->proto_data, buddy->name, groups);
+		jabber_roster_update(gc->proto_data, name, groups);
 		g_slist_free(groups);
 	} else {
 		JabberIq *iq = jabber_iq_new_query(gc->proto_data, JABBER_IQ_SET,
@@ -428,7 +439,7 @@
 		xmlnode *query = xmlnode_get_child(iq->node, "query");
 		xmlnode *item = xmlnode_new_child(query, "item");
 
-		xmlnode_set_attrib(item, "jid", buddy->name);
+		xmlnode_set_attrib(item, "jid", name);
 		xmlnode_set_attrib(item, "subscription", "remove");
 
 		jabber_iq_send(iq);
--- a/libpurple/protocols/jabber/si.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/si.c	Wed Mar 04 16:52:47 2009 +0000
@@ -32,6 +32,7 @@
 #include "buddy.h"
 #include "disco.h"
 #include "jabber.h"
+#include "ibb.h"
 #include "iq.h"
 #include "si.h"
 
@@ -63,8 +64,15 @@
 	size_t rxlen;
 	gsize rxmaxlen;
 	int local_streamhost_fd;
+
+	JabberIBBSession *ibb_session;
+	guint ibb_timeout_handle;
+	FILE *fp;
 } JabberSIXfer;
 
+/* some forward declarations */
+static void jabber_si_xfer_ibb_send_init(JabberStream *js, PurpleXfer *xfer);
+
 static PurpleXfer*
 jabber_si_xfer_find(JabberStream *js, const char *sid, const char *from)
 {
@@ -178,6 +186,32 @@
 	return FALSE;
 }
 
+static void
+jabber_si_bytestreams_ibb_timeout_remove(JabberSIXfer *jsx)
+{
+	if (jsx->ibb_timeout_handle) {
+		purple_timeout_remove(jsx->ibb_timeout_handle);
+		jsx->ibb_timeout_handle = 0;
+	}
+}
+
+static gboolean
+jabber_si_bytestreams_ibb_timeout_cb(gpointer data)
+{
+	PurpleXfer *xfer = (PurpleXfer *) data;
+	JabberSIXfer *jsx = xfer->data;
+
+	if (jsx && !jsx->ibb_session) {
+		purple_debug_info("jabber",
+			"jabber_si_bytestreams_ibb_timeout called and IBB session not set "
+			" up yet, cancel transfer");
+		jabber_si_bytestreams_ibb_timeout_remove(jsx);
+		purple_xfer_cancel_local(xfer);
+	}
+
+	return FALSE;
+}
+
 static void jabber_si_bytestreams_attempt_connect(PurpleXfer *xfer)
 {
 	JabberSIXfer *jsx = xfer->data;
@@ -200,7 +234,28 @@
 
 		jabber_iq_send(iq);
 
-		purple_xfer_cancel_local(xfer);
+		/* if IBB is available, revert to that before giving up... */
+		if (jsx->stream_method & STREAM_METHOD_IBB) {
+			/* if we are the initializer, init IBB */
+			purple_debug_info("jabber",
+				"jabber_si_bytestreams_attempt_connect: "
+				"no streamhosts found, trying IBB\n");
+			/* if we are the sender, open an IBB session, but not if we already
+			  did it, since we could have received the error <iq/> from the
+			  receiver already... */
+			if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND
+				&& !jsx->ibb_session) {
+				jabber_si_xfer_ibb_send_init(jsx->js, xfer);
+			} else {
+				/* setup a timeout to cancel waiting for IBB open */
+				jsx->ibb_timeout_handle = purple_timeout_add_seconds(30,
+					jabber_si_bytestreams_ibb_timeout_cb, xfer);
+			}
+			/* if we are the receiver, just wait for IBB open, callback is
+			  already set up... */
+		} else {
+			purple_xfer_cancel_local(xfer);
+		}
 
 		return;
 	}
@@ -654,8 +709,32 @@
 	jsx = xfer->data;
 
 	if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "result")) {
-		if (type && !strcmp(type, "error"))
-			purple_xfer_cancel_remote(xfer);
+	  purple_debug_info("jabber",
+			    "jabber_si_xfer_connect_proxy_cb: type = %s\n",
+			    type);
+		if (type && !strcmp(type, "error")) {
+			/* if IBB is available, open IBB session */
+			purple_debug_info("jabber",
+				"jabber_si_xfer_connect_proxy_cb: got error, method: %d\n",
+				jsx->stream_method);
+			if (jsx->stream_method & STREAM_METHOD_IBB) {
+				purple_debug_info("jabber", "IBB is possible, try it\n");
+				/* if we are the sender and haven't already opened an IBB
+				  session, do so now (we might already have failed to open
+				  the bytestream proxy ourselves when receiving this <iq/> */
+				if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND
+					&& !jsx->ibb_session) {
+					jabber_si_xfer_ibb_send_init(js, xfer);
+				} else {
+					jsx->ibb_timeout_handle = purple_timeout_add_seconds(30,
+						jabber_si_bytestreams_ibb_timeout_cb, xfer);
+				}
+				/* if we are receiver, just wait for IBB open stanza, callback
+				  is already set up */
+			} else {
+				purple_xfer_cancel_remote(xfer);
+			}
+		}
 		return;
 	}
 
@@ -682,8 +761,22 @@
 			purple_debug_info("jabber", "Got local SOCKS5 streamhost-used.\n");
 			purple_xfer_start(xfer, xfer->fd, NULL, -1);
 		} else {
-			purple_debug_info("jabber", "streamhost-used does not match any proxy that was offered to target\n");
-			purple_xfer_cancel_local(xfer);
+			/* if available, try to revert to IBB... */
+			if (jsx->stream_method & STREAM_METHOD_IBB) {
+				purple_debug_info("jabber",
+					"jabber_si_connect_proxy_cb: trying to revert to IBB\n");
+				if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) {
+					jabber_si_xfer_ibb_send_init(jsx->js, xfer);
+				} else {
+					jsx->ibb_timeout_handle = purple_timeout_add_seconds(30,
+						jabber_si_bytestreams_ibb_timeout_cb, xfer);
+				}
+				/* if we are the receiver, we are already set up...*/
+			} else {
+				purple_debug_info("jabber",
+					"streamhost-used does not match any proxy that was offered to target\n");
+				purple_xfer_cancel_local(xfer);
+			}
 		}
 		g_free(my_jid);
 		return;
@@ -810,8 +903,26 @@
 	/* 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);
+
+		/* if available, revert to IBB */
+		if (jsx->stream_method & STREAM_METHOD_IBB) {
+			purple_debug_info("jabber",
+				"jabber_si_xfer_bytestreams_listen_cb: trying to revert to IBB\n");
+			if (purple_xfer_get_type(xfer) == PURPLE_XFER_SEND) {
+				/* if we are the sender, init the IBB session... */
+				jabber_si_xfer_ibb_send_init(jsx->js, xfer);
+			} else {
+				jsx->ibb_timeout_handle = purple_timeout_add_seconds(30,
+					jabber_si_bytestreams_ibb_timeout_cb, xfer);
+			}
+			/* if we are the receiver, we should just wait... the IBB open
+			  handler has already been set up... */
+		} else {
+			/* We should probably notify the target,
+			  but this really shouldn't ever happen */
+			purple_xfer_cancel_local(xfer);
+		}
+
 		return;
 	}
 
@@ -841,11 +952,242 @@
 
 }
 
+static void
+jabber_si_xfer_ibb_error_cb(JabberIBBSession *sess)
+{
+	PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+	JabberStream *js = jabber_ibb_session_get_js(sess);
+	PurpleConnection *gc = js->gc;
+	PurpleAccount *account = purple_connection_get_account(gc);
+
+	purple_debug_error("jabber", "an error occured during IBB file transfer\n");
+	purple_xfer_error(purple_xfer_get_type(xfer), account,
+		jabber_ibb_session_get_who(sess),
+			_("An error occured on the in-band bytestream transfer\n"));
+	purple_xfer_cancel_remote(xfer);
+}
+
+static void
+jabber_si_xfer_ibb_closed_cb(JabberIBBSession *sess)
+{
+	PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+	JabberStream *js = jabber_ibb_session_get_js(sess);
+	PurpleConnection *gc = js->gc;
+	PurpleAccount *account = purple_connection_get_account(gc);
+
+	purple_debug_info("jabber", "the remote user closed the transfer\n");
+	if (purple_xfer_get_bytes_remaining(xfer) > 0) {
+		purple_xfer_error(purple_xfer_get_type(xfer), account,
+			jabber_ibb_session_get_who(sess), _("Transfer was closed."));
+		purple_xfer_cancel_remote(xfer);
+	} else {
+		purple_xfer_set_completed(xfer, TRUE);
+		purple_xfer_end(xfer);
+	}
+}
+
+static void
+jabber_si_xfer_ibb_recv_data_cb(JabberIBBSession *sess, gpointer data,
+	gsize size)
+{
+	PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+	JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+
+	if (size <= purple_xfer_get_bytes_remaining(xfer)) {
+		purple_debug_info("jabber", "about to write %" G_GSIZE_FORMAT " bytes from IBB stream\n",
+			size);
+		if(!fwrite(data, size, 1, jsx->fp)) {
+			purple_debug_error("jabber", "error writing to file\n");
+			purple_xfer_cancel_remote(xfer);
+			return;
+		}
+		purple_xfer_set_bytes_sent(xfer, purple_xfer_get_bytes_sent(xfer) + size);
+		purple_xfer_update_progress(xfer);
+
+		if (purple_xfer_get_bytes_remaining(xfer) == 0) {
+			purple_xfer_set_completed(xfer, TRUE);
+			purple_xfer_end(xfer);
+		}
+	} else {
+		/* trying to write past size of file transfers negotiated size,
+		  reject transfer to protect against malicious behaviour */
+		purple_debug_error("jabber",
+			"IBB file transfer send more data than expected\n");
+		purple_xfer_cancel_remote(xfer);
+	}
+
+}
+
+static gboolean
+jabber_si_xfer_ibb_open_cb(JabberStream *js, xmlnode *packet)
+{
+	const gchar *who = xmlnode_get_attrib(packet, "from");
+	xmlnode *open = xmlnode_get_child(packet, "open");
+	const gchar *sid = xmlnode_get_attrib(open, "sid");
+	PurpleXfer *xfer = jabber_si_xfer_find(js, sid, who);
+	if (xfer) {
+		JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+		JabberIBBSession *sess =
+			jabber_ibb_session_create_from_xmlnode(js, packet, xfer);
+		const char *filename;
+
+		jabber_si_bytestreams_ibb_timeout_remove(jsx);
+
+		if (sess) {
+			/* open the file to write to */
+			filename = purple_xfer_get_local_filename(xfer);
+			jsx->fp = g_fopen(filename, "wb");
+			if (jsx->fp == NULL) {
+				purple_debug_error("jabber", "failed to open file %s for writing: %s\n",
+					filename, g_strerror(errno));
+				purple_xfer_cancel_remote(xfer);
+				return FALSE;
+			}
+
+			/* setup callbacks here...*/
+			jabber_ibb_session_set_data_received_callback(sess,
+				jabber_si_xfer_ibb_recv_data_cb);
+			jabber_ibb_session_set_closed_callback(sess,
+				jabber_si_xfer_ibb_closed_cb);
+			jabber_ibb_session_set_error_callback(sess,
+				jabber_si_xfer_ibb_error_cb);
+
+			jsx->ibb_session = sess;
+
+			/* start the transfer */
+			purple_xfer_start(xfer, 0, NULL, 0);
+			return TRUE;
+		} else {
+			/* failed to create IBB session */
+			purple_debug_error("jabber", "failed to create IBB session\n");
+			purple_xfer_cancel_remote(xfer);
+			return FALSE;
+		}
+	} else {
+		/* we got an IBB <open/> for an unknown file transfer, pass along... */
+		purple_debug_info("jabber",
+			"IBB open did not match any SI file transfer\n");
+		return FALSE;
+	}
+}
+
+static void
+jabber_si_xfer_ibb_send_data(JabberIBBSession *sess)
+{
+	PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+	JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+	gsize remaining = purple_xfer_get_bytes_remaining(xfer);
+	gsize packet_size = remaining < jabber_ibb_session_get_block_size(sess) ?
+		remaining : jabber_ibb_session_get_block_size(sess);
+	gpointer data = g_malloc(packet_size);
+	int res;
+
+	purple_debug_info("jabber", "IBB: about to read %" G_GSIZE_FORMAT " bytes from file %p\n",
+		packet_size, jsx->fp);
+	res = fread(data, packet_size, 1, jsx->fp);
+
+	if (res == 1) {
+		jabber_ibb_session_send_data(sess, data, packet_size);
+		purple_xfer_set_bytes_sent(xfer,
+			purple_xfer_get_bytes_sent(xfer) + packet_size);
+		purple_xfer_update_progress(xfer);
+	} else {
+		purple_debug_error("jabber",
+			"jabber_si_xfer_ibb_send_data: error reading from file\n");
+		purple_xfer_cancel_local(xfer);
+	}
+}
+
+static void
+jabber_si_xfer_ibb_sent_cb(JabberIBBSession *sess)
+{
+	PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+	gsize remaining = purple_xfer_get_bytes_remaining(xfer);
+
+	if (remaining == 0) {
+		/* close the session */
+		jabber_ibb_session_close(sess);
+		purple_xfer_set_completed(xfer, TRUE);
+		purple_xfer_end(xfer);
+	} else {
+		/* send more... */
+		jabber_si_xfer_ibb_send_data(sess);
+	}
+}
+
+static void
+jabber_si_xfer_ibb_opened_cb(JabberIBBSession *sess)
+{
+	PurpleXfer *xfer = (PurpleXfer *) jabber_ibb_session_get_user_data(sess);
+	JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+	JabberStream *js = jabber_ibb_session_get_js(sess);
+	PurpleConnection *gc = js->gc;
+	PurpleAccount *account = purple_connection_get_account(gc);
+
+	if (jabber_ibb_session_get_state(sess) == JABBER_IBB_SESSION_OPENED) {
+		const char *filename = purple_xfer_get_local_filename(xfer);
+		jsx->fp = g_fopen(filename, "rb");
+		if (jsx->fp == NULL) {
+			purple_debug_error("jabber", "Failed to open file %s for reading: %s\n",
+				filename, g_strerror(errno));
+			purple_xfer_error(purple_xfer_get_type(xfer), account,
+				jabber_ibb_session_get_who(sess),
+				_("Failed to open the file"));
+			purple_xfer_cancel_local(xfer);
+			return;
+		}
+
+		purple_xfer_start(xfer, 0, NULL, 0);
+		purple_xfer_set_bytes_sent(xfer, 0);
+		purple_xfer_update_progress(xfer);
+		jabber_si_xfer_ibb_send_data(sess);
+	} else {
+		/* error */
+		purple_xfer_error(purple_xfer_get_type(xfer), account,
+			jabber_ibb_session_get_who(sess),
+			_("Failed to open in-band bytestream"));
+		purple_xfer_end(xfer);
+	}
+}
+
+static void
+jabber_si_xfer_ibb_send_init(JabberStream *js, PurpleXfer *xfer)
+{
+	JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+
+	purple_xfer_ref(xfer);
+
+	jsx->ibb_session = jabber_ibb_session_create(js, jsx->stream_id,
+		purple_xfer_get_remote_user(xfer), xfer);
+
+	if (jsx->ibb_session) {
+		/* should set callbacks here... */
+		jabber_ibb_session_set_opened_callback(jsx->ibb_session,
+			jabber_si_xfer_ibb_opened_cb);
+		jabber_ibb_session_set_data_sent_callback(jsx->ibb_session,
+			jabber_si_xfer_ibb_sent_cb);
+		jabber_ibb_session_set_closed_callback(jsx->ibb_session,
+			jabber_si_xfer_ibb_closed_cb);
+		jabber_ibb_session_set_error_callback(jsx->ibb_session,
+			jabber_si_xfer_ibb_error_cb);
+
+		/* open the IBB session */
+		jabber_ibb_session_open(jsx->ibb_session);
+
+	} else {
+		/* failed to create IBB session */
+		purple_debug_error("jabber",
+			"failed to initiate IBB session for file transfer\n");
+		purple_xfer_cancel_local(xfer);
+	}
+}
+
 static void jabber_si_xfer_send_method_cb(JabberStream *js, xmlnode *packet,
 		gpointer data)
 {
 	PurpleXfer *xfer = data;
 	xmlnode *si, *feature, *x, *field, *value;
+	gboolean found_method = FALSE;
 
 	if(!(si = xmlnode_get_child_with_namespace(packet, "si", "http://jabber.org/protocol/si"))) {
 		purple_xfer_cancel_remote(xfer);
@@ -864,20 +1206,33 @@
 
 	for(field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) {
 		const char *var = xmlnode_get_attrib(field, "var");
+		JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
 
 		if(var && !strcmp(var, "stream-method")) {
 			if((value = xmlnode_get_child(field, "value"))) {
 				char *val = xmlnode_get_data(value);
 				if(val && !strcmp(val, "http://jabber.org/protocol/bytestreams")) {
 					jabber_si_xfer_bytestreams_send_init(xfer);
-					g_free(val);
-					return;
+					jsx->stream_method |= STREAM_METHOD_BYTESTREAMS;
+					found_method = TRUE;
+				} else if (val && !strcmp(val, XEP_0047_NAMESPACE)) {
+					jsx->stream_method |= STREAM_METHOD_IBB;
+					if (!found_method) {
+						/* we haven't tried to init a bytestream session, yet
+						  start IBB right away... */
+						jabber_si_xfer_ibb_send_init(js, xfer);
+						found_method = TRUE;
+					}
 				}
 				g_free(val);
 			}
 		}
 	}
-	purple_xfer_cancel_remote(xfer);
+
+	if (!found_method) {
+		purple_xfer_cancel_remote(xfer);
+	}
+
 }
 
 static void jabber_si_xfer_send_request(PurpleXfer *xfer)
@@ -914,14 +1269,14 @@
 	field = xmlnode_new_child(x, "field");
 	xmlnode_set_attrib(field, "var", "stream-method");
 	xmlnode_set_attrib(field, "type", "list-single");
+	/* maybe we should add an option to always skip bytestreams for people
+		behind troublesome firewalls */
 	option = xmlnode_new_child(field, "option");
 	value = xmlnode_new_child(option, "value");
 	xmlnode_insert_data(value, "http://jabber.org/protocol/bytestreams", -1);
-	/*
 	option = xmlnode_new_child(field, "option");
 	value = xmlnode_new_child(option, "value");
 	xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1);
-	*/
 
 	jabber_iq_set_callback(iq, jabber_si_xfer_send_method_cb, xfer);
 
@@ -935,38 +1290,66 @@
 static void jabber_si_xfer_free(PurpleXfer *xfer)
 {
 	JabberSIXfer *jsx = xfer->data;
-	JabberStream *js = jsx->js;
+
+	if (jsx) {
+		JabberStream *js = jsx->js;
+
+		js->file_transfers = g_list_remove(js->file_transfers, xfer);
 
-	js->file_transfers = g_list_remove(js->file_transfers, xfer);
+		if (jsx->connect_data != NULL)
+			purple_proxy_connect_cancel(jsx->connect_data);
+		if (jsx->listen_data != NULL)
+			purple_network_listen_cancel(jsx->listen_data);
+		if (jsx->iq_id != NULL)
+			jabber_iq_remove_callback_by_id(js, jsx->iq_id);
+		if (jsx->local_streamhost_fd >= 0)
+			close(jsx->local_streamhost_fd);
+		if (jsx->connect_timeout > 0)
+			purple_timeout_remove(jsx->connect_timeout);
+		if (jsx->ibb_timeout_handle > 0)
+			purple_timeout_remove(jsx->ibb_timeout_handle);
 
-	if (jsx->connect_data != NULL)
-		purple_proxy_connect_cancel(jsx->connect_data);
-	if (jsx->listen_data != NULL)
-		purple_network_listen_cancel(jsx->listen_data);
-	if (jsx->iq_id != NULL)
-		jabber_iq_remove_callback_by_id(js, jsx->iq_id);
-	if (jsx->local_streamhost_fd >= 0)
-		close(jsx->local_streamhost_fd);
-	if (jsx->connect_timeout > 0)
-		purple_timeout_remove(jsx->connect_timeout);
+		if (jsx->streamhosts) {
+			g_list_foreach(jsx->streamhosts, jabber_si_free_streamhost, NULL);
+			g_list_free(jsx->streamhosts);
+		}
+
+		if (jsx->ibb_session) {
+			purple_debug_info("jabber",
+				"jabber_si_xfer_free: destroying IBB session\n");
+			jabber_ibb_session_destroy(jsx->ibb_session);
+		}
 
-	if (jsx->streamhosts) {
-		g_list_foreach(jsx->streamhosts, jabber_si_free_streamhost, NULL);
-		g_list_free(jsx->streamhosts);
-	}
+		if (jsx->fp) {
+			purple_debug_info("jabber",
+				"jabber_si_xfer_free: closing file for IBB transfer\n");
+			fclose(jsx->fp);
+		}
 
-	g_free(jsx->stream_id);
-	g_free(jsx->iq_id);
-	/* XXX: free other stuff */
-	g_free(jsx->rxqueue);
-	g_free(jsx);
-	xfer->data = NULL;
+		g_free(jsx->stream_id);
+		g_free(jsx->iq_id);
+		/* XXX: free other stuff */
+		g_free(jsx->rxqueue);
+		g_free(jsx);
+		xfer->data = NULL;
 
-	purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p", jsx);
+		purple_debug_info("jabber", "jabber_si_xfer_free(): freeing jsx %p\n", jsx);
+	}
 }
 
+/*
+ * These four functions should only be called from the PurpleXfer functions
+ * (typically purple_xfer_cancel_(remote|local), purple_xfer_end, or
+ * purple_xfer_request_denied.
+ */
 static void jabber_si_xfer_cancel_send(PurpleXfer *xfer)
 {
+	JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+
+	/* if there is an IBB session active, send close on that */
+	if (jsx->ibb_session) {
+		jabber_ibb_session_close(jsx->ibb_session);
+	}
 	jabber_si_xfer_free(xfer);
 	purple_debug(PURPLE_DEBUG_INFO, "jabber", "in jabber_si_xfer_cancel_send\n");
 }
@@ -981,6 +1364,11 @@
 
 static void jabber_si_xfer_cancel_recv(PurpleXfer *xfer)
 {
+	JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
+	/* if there is an IBB session active, send close */
+	if (jsx->ibb_session) {
+		jabber_ibb_session_close(jsx->ibb_session);
+	}
 	jabber_si_xfer_free(xfer);
 	purple_debug(PURPLE_DEBUG_INFO, "jabber", "in jabber_si_xfer_cancel_recv\n");
 }
@@ -995,9 +1383,16 @@
 static void jabber_si_xfer_send_disco_cb(JabberStream *js, const char *who,
 		JabberCapabilities capabilities, gpointer data)
 {
-	PurpleXfer *xfer = data;
+	PurpleXfer *xfer = (PurpleXfer *) data;
+	JabberSIXfer *jsx = (JabberSIXfer *) xfer->data;
 
-	if(capabilities & JABBER_CAP_SI_FILE_XFER) {
+	if (capabilities & JABBER_CAP_IBB) {
+		purple_debug_info("jabber",
+			"jabber_si_xfer_send_disco_cb: remote JID supports IBB\n");
+		jsx->stream_method |= STREAM_METHOD_IBB;
+	}
+
+	if (capabilities & JABBER_CAP_SI_FILE_XFER) {
 		jabber_si_xfer_send_request(xfer);
 	} else {
 		char *msg = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), who);
@@ -1124,17 +1519,21 @@
 		x = xmlnode_new_child(feature, "x");
 		xmlnode_set_namespace(x, "jabber:x:data");
 		xmlnode_set_attrib(x, "type", "submit");
-
 		field = xmlnode_new_child(x, "field");
 		xmlnode_set_attrib(field, "var", "stream-method");
 
-		value = xmlnode_new_child(field, "value");
-		if(jsx->stream_method & STREAM_METHOD_BYTESTREAMS)
+		/* we should maybe "remember" if bytestreams has failed before (in the
+			same session) with this JID, and only present IBB as an option to
+			avoid unnessesary timeout */
+		/* maybe we should have an account option to always just try IBB
+			for people who know their firewalls are very restrictive */
+		if (jsx->stream_method & STREAM_METHOD_BYTESTREAMS) {
+			value = xmlnode_new_child(field, "value");
 			xmlnode_insert_data(value, "http://jabber.org/protocol/bytestreams", -1);
-		/*
-		else if(jsx->stream_method & STREAM_METHOD_IBB)
-		xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1);
-		*/
+		} else if(jsx->stream_method & STREAM_METHOD_IBB) {
+			value = xmlnode_new_child(field, "value");
+			xmlnode_insert_data(value, "http://jabber.org/protocol/ibb", -1);
+		}
 
 		jabber_iq_send(iq);
 	}
@@ -1156,6 +1555,9 @@
 		jsx->js = js;
 		jsx->local_streamhost_fd = -1;
 
+		jsx->ibb_session = NULL;
+		jsx->fp = NULL;
+
 		purple_xfer_set_init_fnc(xfer, jabber_si_xfer_init);
 		purple_xfer_set_cancel_send_fnc(xfer, jabber_si_xfer_cancel_send);
 		purple_xfer_set_end_fnc(xfer, jabber_si_xfer_end);
@@ -1227,6 +1629,8 @@
 	jsx = g_new0(JabberSIXfer, 1);
 	jsx->local_streamhost_fd = -1;
 
+	jsx->ibb_session = NULL;
+
 	for(field = xmlnode_get_child(x, "field"); field; field = xmlnode_get_next_twin(field)) {
 		const char *var = xmlnode_get_attrib(field, "var");
 		if(var && !strcmp(var, "stream-method")) {
@@ -1237,10 +1641,8 @@
 					if((val = xmlnode_get_data(value))) {
 						if(!strcmp(val, "http://jabber.org/protocol/bytestreams")) {
 							jsx->stream_method |= STREAM_METHOD_BYTESTREAMS;
-							/*
 						} else if(!strcmp(val, "http://jabber.org/protocol/ibb")) {
 							jsx->stream_method |= STREAM_METHOD_IBB;
-							*/
 						}
 						g_free(val);
 					}
@@ -1278,4 +1680,15 @@
 	}
 }
 
+void
+jabber_si_init(void)
+{
+	jabber_ibb_register_open_handler(jabber_si_xfer_ibb_open_cb);
+}
 
+void
+jabber_si_uninit(void)
+{
+	jabber_ibb_unregister_open_handler(jabber_si_xfer_ibb_open_cb);
+}
+
--- a/libpurple/protocols/jabber/si.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/si.h	Wed Mar 04 16:52:47 2009 +0000
@@ -30,5 +30,7 @@
 void jabber_si_parse(JabberStream *js, xmlnode *packet);
 PurpleXfer *jabber_si_new_xfer(PurpleConnection *gc, const char *who);
 void jabber_si_xfer_send(PurpleConnection *gc, const char *who, const char *file);
+void jabber_si_init(void);
+void jabber_si_uninit(void);
 
 #endif /* _PURPLE_JABBER_SI_H_ */
--- a/libpurple/protocols/jabber/usermood.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/usermood.c	Wed Mar 04 16:52:47 2009 +0000
@@ -103,7 +103,7 @@
 	/* ignore the mood of people not on our buddy list */
 	if (!buddy || !item)
 		return;
-	
+
 	mood = xmlnode_get_child_with_namespace(item, "mood", "http://jabber.org/protocol/mood");
 	if (!mood)
 		return;
@@ -179,10 +179,10 @@
 
 	field = purple_request_field_choice_new("mood",
 											_("Mood"), 0);
-	
+
 	for(i = 0; moodstrings[i]; ++i)
 		purple_request_field_choice_add(field, _(moodstrings[i]));
-	
+
 	purple_request_field_set_required(field, TRUE);
 	purple_request_field_group_add_field(group, field);
 
@@ -190,7 +190,7 @@
 											_("Description"), NULL,
 											FALSE);
 	purple_request_field_group_add_field(group, field);
-	
+
 	purple_request_fields(gc, _("Edit User Mood"),
 						  _("Edit User Mood"),
 						  _("Please select your mood from the list."),
@@ -199,7 +199,7 @@
 						  _("Cancel"), NULL,
 						  purple_connection_get_account(gc), NULL, NULL,
 						  gc);
-	
+
 }
 
 void jabber_mood_init_action(GList **m) {
@@ -222,7 +222,7 @@
 		xmlnode *textnode = xmlnode_new_child(moodnode, "text");
 		xmlnode_insert_data(textnode, text, -1);
 	}
-	
+
 	jabber_pep_publish(js, publish);
 	/* publish is freed by jabber_pep_publish -> jabber_iq_send -> jabber_iq_free
 	   (yay for well-defined memory management rules) */
--- a/libpurple/protocols/jabber/usernick.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/usernick.c	Wed Mar 04 16:52:47 2009 +0000
@@ -34,11 +34,11 @@
 	JabberBuddy *buddy = jabber_buddy_find(js, from, FALSE);
 	xmlnode *nick;
 	char *nickname = NULL;
-	
+
 	/* ignore the tune of people not on our buddy list */
 	if (!buddy || !item)
 		return;
-	
+
 	nick = xmlnode_get_child_with_namespace(item, "nick", "http://jabber.org/protocol/nick");
 	if (!nick)
 		return;
@@ -49,15 +49,15 @@
 
 static void do_nick_set(JabberStream *js, const char *nick) {
 	xmlnode *publish, *nicknode;
-	
+
 	publish = xmlnode_new("publish");
 	xmlnode_set_attrib(publish,"node","http://jabber.org/protocol/nick");
 	nicknode = xmlnode_new_child(xmlnode_new_child(publish, "item"), "nick");
 	xmlnode_set_namespace(nicknode, "http://jabber.org/protocol/nick");
-	
+
 	if(nick && nick[0] != '\0')
 		xmlnode_insert_data(nicknode, nick, -1);
-	
+
 	jabber_pep_publish(js, publish);
 	/* publish is freed by jabber_pep_publish -> jabber_iq_send -> jabber_iq_free
 		(yay for well-defined memory management rules) */
@@ -66,13 +66,13 @@
 static void do_nick_got_own_nick_cb(JabberStream *js, const char *from, xmlnode *items) {
 	char *oldnickname = NULL;
 	xmlnode *item = xmlnode_get_child(items,"item");
-	
+
 	if(item) {
 		xmlnode *nick = xmlnode_get_child_with_namespace(item,"nick","http://jabber.org/protocol/nick");
 		if(nick)
 			oldnickname = xmlnode_get_data(nick);
 	}
-	
+
 	purple_request_input(js->gc, _("Set User Nickname"), _("Please specify a new nickname for you."),
 		_("This information is visible to all contacts on your contact list, so choose something appropriate."),
 		oldnickname, FALSE, FALSE, NULL, _("Set"), PURPLE_CALLBACK(do_nick_set), _("Cancel"), NULL,
@@ -84,7 +84,7 @@
 	PurpleConnection *gc = (PurpleConnection *) action->context;
 	JabberStream *js = gc->proto_data;
 	char *jid = g_strdup_printf("%s@%s", js->user->node, js->user->domain);
-	
+
 	/* since the nickname might have been changed by another resource of this account, we always have to request the old one
 		from the server to present as the default for the new one */
 	jabber_pep_request_item(js, jid, "http://jabber.org/protocol/nick", NULL, do_nick_got_own_nick_cb);
--- a/libpurple/protocols/jabber/usertune.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/usertune.c	Wed Mar 04 16:52:47 2009 +0000
@@ -116,12 +116,12 @@
 void jabber_tune_set(PurpleConnection *gc, const PurpleJabberTuneInfo *tuneinfo) {
 	xmlnode *publish, *tunenode;
 	JabberStream *js = gc->proto_data;
-	
+
 	publish = xmlnode_new("publish");
 	xmlnode_set_attrib(publish,"node","http://jabber.org/protocol/tune");
 	tunenode = xmlnode_new_child(xmlnode_new_child(publish, "item"), "tune");
 	xmlnode_set_namespace(tunenode, "http://jabber.org/protocol/tune");
-	
+
 	if(tuneinfo) {
 		if(tuneinfo->artist && tuneinfo->artist[0] != '\0')
 			xmlnode_insert_data(xmlnode_new_child(tunenode, "artist"),tuneinfo->artist,-1);
@@ -139,7 +139,7 @@
 		if(tuneinfo->track && tuneinfo->track[0] != '\0')
 			xmlnode_insert_data(xmlnode_new_child(tunenode, "track"),tuneinfo->track,-1);
 	}
-	
+
 	jabber_pep_publish(js, publish);
 	/* publish is freed by jabber_pep_publish -> jabber_iq_send -> jabber_iq_free
 	   (yay for well-defined memory management rules) */
--- a/libpurple/protocols/jabber/xdata.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/jabber/xdata.c	Wed Mar 04 16:52:47 2009 +0000
@@ -372,7 +372,7 @@
 		if(field && xmlnode_get_child(fn, "required"))
 			purple_request_field_set_required(field,TRUE);
 	}
-	
+
 	if(actions != NULL) {
 		PurpleRequestField *actionfield;
 		GList *action;
@@ -382,7 +382,7 @@
 
 		for(action = actions; action; action = g_list_next(action)) {
 			JabberXDataAction *a = action->data;
-			
+
 			purple_request_field_choice_add(actionfield, a->name);
 			data->actions = g_list_append(data->actions, g_strdup(a->handle));
 		}
--- a/libpurple/protocols/msn/directconn.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/directconn.c	Wed Mar 04 16:52:47 2009 +0000
@@ -201,24 +201,6 @@
 
 	g_free(buffer);
 
-#if 0
-	/* Let's write the length of the data. */
-	ret = write(directconn->fd, &len, sizeof(len));
-
-	/* Let's write the data. */
-	ret = write(directconn->fd, data, len);
-
-	char *str;
-	str = g_strdup_printf("/home/revo/msntest/w%.4d.bin", directconn->c);
-
-	FILE *tf = g_fopen(str, "w");
-	fwrite(&len, 1, sizeof(len), tf);
-	fwrite(data, 1, len, tf);
-	fclose(tf);
-
-	g_free(str);
-#endif
-
 	directconn->c++;
 
 	return ret;
@@ -341,7 +323,7 @@
 		MsnMessage *msg;
 
 #ifdef DEBUG_DC
-		str = g_strdup_printf("/home/revo/msntest/r%.4d.bin", directconn->c);
+		str = g_strdup_printf("%s/msntest/r%.4d.bin", g_get_home_dir(), directconn->c);
 
 		FILE *tf = g_fopen(str, "w");
 		fwrite(body, 1, len, tf);
--- a/libpurple/protocols/msn/msn.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/msn.c	Wed Mar 04 16:52:47 2009 +0000
@@ -457,23 +457,27 @@
 	PurpleConnection *gc;
 	MsnSession *session;
 	MsnMobileData *data;
+	PurpleAccount *account;
+	const char *name;
 
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
+	account = purple_buddy_get_account(buddy);
+	gc = purple_account_get_connection(account);
+	name = purple_buddy_get_name(buddy);
 
 	session = gc->proto_data;
 
 	data = g_new0(MsnMobileData, 1);
 	data->gc = gc;
-	data->passport = buddy->name;
+	data->passport = name;
 
 	purple_request_input(gc, NULL, _("Send a mobile message."), NULL,
 					   NULL, TRUE, FALSE, NULL,
 					   _("Page"), G_CALLBACK(send_to_mobile_cb),
 					   _("Close"), G_CALLBACK(close_mobile_page_cb),
-					   purple_connection_get_account(gc), purple_buddy_get_name(buddy), NULL,
+					   account, name, NULL,
 					   data);
 }
 
@@ -505,6 +509,7 @@
 {
 	PurpleBuddy *buddy;
 	PurpleConnection *gc;
+	PurpleAccount *account;
 
 	MsnSession *session;
 	MsnSwitchBoard *swboard;
@@ -514,13 +519,14 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
+	account = purple_buddy_get_account(buddy);
+	gc = purple_account_get_connection(account);
 
 	session = gc->proto_data;
 
 	swboard = msn_switchboard_new(session);
 	msn_switchboard_request(swboard);
-	msn_switchboard_request_add_user(swboard, buddy->name);
+	msn_switchboard_request_add_user(swboard, purple_buddy_get_name(buddy));
 
 	/* TODO: This might move somewhere else, after USR might be */
 	swboard->chat_id = msn_switchboard_get_chat_id();
@@ -528,9 +534,9 @@
 	swboard->flag = MSN_SB_FLAG_IM;
 
 	/* Local alias > Display name > Username */
-	if ((alias = purple_account_get_alias(buddy->account)) == NULL)
+	if ((alias = purple_account_get_alias(account)) == NULL)
 		if ((alias = purple_connection_get_display_name(gc)) == NULL)
-			alias = purple_account_get_username(buddy->account);
+			alias = purple_account_get_username(account);
 
 	purple_conv_chat_add_user(PURPLE_CONV_CHAT(swboard->conv),
 	                          alias, NULL, PURPLE_CBFLAGS_NONE, TRUE);
@@ -613,7 +619,7 @@
 static const char *
 msn_list_emblems(PurpleBuddy *b)
 {
-	MsnUser *user = b->proto_data;
+	MsnUser *user = purple_buddy_get_protocol_data(b);
 
 	if (user != NULL) {
 		if (user->clientid & MSN_CLIENT_CAP_BOT)
@@ -694,7 +700,7 @@
 	PurplePresence *presence = purple_buddy_get_presence(buddy);
 	PurpleStatus *status = purple_presence_get_active_status(presence);
 
-	user = buddy->proto_data;
+	user = purple_buddy_get_protocol_data(buddy);
 
 	if (purple_presence_is_online(presence))
 	{
@@ -937,7 +943,7 @@
 
 	g_return_val_if_fail(buddy != NULL, NULL);
 
-	user = buddy->proto_data;
+	user = purple_buddy_get_protocol_data(buddy);
 
 	if (user != NULL)
 	{
@@ -950,8 +956,8 @@
 		}
 	}
 
-	if (g_ascii_strcasecmp(buddy->name,
-	                       purple_account_get_username(buddy->account)))
+	if (g_ascii_strcasecmp(purple_buddy_get_name(buddy),
+				purple_account_get_username(purple_buddy_get_account(buddy))))
 	{
 		act = purple_menu_action_new(_("Initiate _Chat"),
 		                           PURPLE_CALLBACK(initiate_chat_cb),
@@ -1430,14 +1436,15 @@
 {
 	MsnSession *session;
 	MsnUserList *userlist;
-	const char *who;
+	const char *who, *gname;
 	MsnUser *user;
 
 	session = gc->proto_data;
 	userlist = session->userlist;
-	who = msn_normalize(gc->account, buddy->name);
-
-	purple_debug_info("msn", "Add user:%s to group:%s\n", who, (group && group->name) ? group->name : "(null)");
+	who = msn_normalize(purple_connection_get_account(gc), purple_buddy_get_name(buddy));
+
+	gname = group ? purple_group_get_name(group) : NULL;
+	purple_debug_info("msn", "Add user:%s to group:%s\n", who, gname ? gname : "(null)");
 	if (!session->logged_in)
 	{
 #if 0
@@ -1464,11 +1471,20 @@
 	if ((user != NULL) && (user->networkid != MSN_NETWORK_UNKNOWN)) {
 		/* We already know this buddy and their network. This function knows
 		   what to do with users already in the list and stuff... */
-		msn_userlist_add_buddy(userlist, who, group ? group->name : NULL);
+		msn_userlist_add_buddy(userlist, who, gname);
 	} else {
+		char **tokens;
+		char *fqy;
 		/* We need to check the network for this buddy first */
-		msn_userlist_save_pending_buddy(userlist, who, group ? group->name : NULL);
-		msn_notification_send_fqy(session, who);
+		msn_userlist_save_pending_buddy(userlist, who, gname);
+		tokens = g_strsplit(who, "@", 2);
+		fqy = g_strdup_printf("<ml><d n=\"%s\"><c n=\"%s\"/></d></ml>",
+		                      tokens[1],
+		                      tokens[0]);
+		msn_notification_send_fqy(session, fqy, strlen(fqy),
+		                          (MsnFqyCb)msn_userlist_add_pending_buddy);
+		g_free(fqy);
+		g_strfreev(tokens);
 	}
 }
 
@@ -1485,7 +1501,7 @@
 		return;
 
 	/* XXX - Does buddy->name need to be msn_normalize'd here?  --KingAnt */
-	msn_userlist_rem_buddy(userlist, buddy->name);
+	msn_userlist_rem_buddy(userlist, purple_buddy_get_name(buddy));
 }
 
 static void
@@ -1738,20 +1754,22 @@
 				 PurpleGroup *group, GList *moved_buddies)
 {
 	MsnSession *session;
+	const char *gname;
 
 	session = gc->proto_data;
 
 	g_return_if_fail(session != NULL);
 	g_return_if_fail(session->userlist != NULL);
 
+	gname = purple_group_get_name(group);
 	if (msn_userlist_find_group_with_name(session->userlist, old_name) != NULL)
 	{
-		msn_contact_rename_group(session, old_name, group->name);
+		msn_contact_rename_group(session, old_name, gname);
 	}
 	else
 	{
 		/* not found */
-		msn_add_group(session, NULL, group->name);
+		msn_add_group(session, NULL, gname);
 	}
 }
 
@@ -1811,20 +1829,22 @@
 {
 	MsnSession *session;
 	MsnCmdProc *cmdproc;
+	const char *gname;
 
 	session = gc->proto_data;
 	cmdproc = session->notification->cmdproc;
-
-	purple_debug_info("msn", "Remove group %s\n", group->name);
+	gname = purple_group_get_name(group);
+
+	purple_debug_info("msn", "Remove group %s\n", gname);
 	/*we can't delete the default group*/
-	if(!strcmp(group->name, MSN_INDIVIDUALS_GROUP_NAME)||
-		!strcmp(group->name, MSN_NON_IM_GROUP_NAME))
+	if(!strcmp(gname, MSN_INDIVIDUALS_GROUP_NAME)||
+		!strcmp(gname, MSN_NON_IM_GROUP_NAME))
 	{
 		purple_debug_info("msn", "This group can't be removed, returning.\n");
 		return ;
 	}
 
-	msn_del_group(session, group->name);
+	msn_del_group(session, gname);
 }
 
 /**
@@ -1841,17 +1861,19 @@
 	if (b)
 	{
 		char *tmp;
-
-		if (b->alias && b->alias[0])
+		const char *alias;
+
+		alias = purple_buddy_get_local_buddy_alias(b);
+		if (alias && alias[0])
 		{
-			char *aliastext = g_markup_escape_text(b->alias, -1);
+			char *aliastext = g_markup_escape_text(alias, -1);
 			purple_notify_user_info_add_pair(user_info, _("Alias"), aliastext);
 			g_free(aliastext);
 		}
 
-		if (b->server_alias)
+		if ((alias = purple_buddy_get_server_alias(b)) != NULL)
 		{
-			char *nicktext = g_markup_escape_text(b->server_alias, -1);
+			char *nicktext = g_markup_escape_text(alias, -1);
 			tmp = g_strdup_printf("<font sml=\"msn\">%s</font>", nicktext);
 			purple_notify_user_info_add_pair(user_info, _("Nickname"), tmp);
 			g_free(tmp);
--- a/libpurple/protocols/msn/notification.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/notification.c	Wed Mar 04 16:52:47 2009 +0000
@@ -544,17 +544,16 @@
 	}
 
 	/*find a domain Node*/
-	for(d_node = xmlnode_get_child(mlNode,"d"); d_node; d_node = xmlnode_get_next_twin(d_node))
-	{
+	for (d_node = xmlnode_get_child(mlNode, "d"); d_node;
+	     d_node = xmlnode_get_next_twin(d_node)) {
 		const char *attr = xmlnode_get_attrib(d_node,"n");
 		if (attr == NULL)
 			continue;
-		if (!strcmp(attr,domain))
+		if (!strcmp(attr, domain))
 			break;
 	}
 
-	if(d_node == NULL)
-	{
+	if (d_node == NULL) {
 		/*domain not found, create a new domain Node*/
 		purple_debug_info("msn", "Didn't find existing domain node, adding one.\n");
 		d_node = xmlnode_new("d");
@@ -566,20 +565,18 @@
 	c_node = xmlnode_new("c");
 	xmlnode_set_attrib(c_node, "n", email);
 
-	purple_debug_info("msn", "list_op: %d\n", list_op);
-	g_snprintf(fmt_str, sizeof(fmt_str), "%d", list_op);
-	xmlnode_set_attrib(c_node, "l", fmt_str);
+	if (list_op != 0) {
+		purple_debug_info("msn", "list_op: %d\n", list_op);
+		g_snprintf(fmt_str, sizeof(fmt_str), "%d", list_op);
+		xmlnode_set_attrib(c_node, "l", fmt_str);
+	}
 
-	if (networkId != MSN_NETWORK_UNKNOWN)
+	if (networkId != MSN_NETWORK_UNKNOWN) {
 		g_snprintf(fmt_str, sizeof(fmt_str), "%d", networkId);
-	else if (msn_user_is_yahoo(session->account, passport))
-		g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_NETWORK_YAHOO);
-	else
-		g_snprintf(fmt_str, sizeof(fmt_str), "%d", MSN_NETWORK_PASSPORT);
-
-	/*mobile*/
-	/*type_str = g_strdup_printf("4");*/
-	xmlnode_set_attrib(c_node, "t", fmt_str);
+		/*mobile*/
+		/*type_str = g_strdup_printf("4");*/
+		xmlnode_set_attrib(c_node, "t", fmt_str);
+	}
 
 	xmlnode_insert_child(d_node, c_node);
 
@@ -596,6 +593,48 @@
 	msn_cmdproc_send_trans(cmdproc, trans);
 }
 
+void
+msn_notification_send_fqy(MsnSession *session,
+                          const char *payload, int payload_len,
+                          MsnFqyCb cb)
+{
+	MsnTransaction *trans;
+	MsnCmdProc *cmdproc;
+
+	cmdproc = session->notification->cmdproc;
+
+	trans = msn_transaction_new(cmdproc, "FQY", "%d", payload_len);
+	msn_transaction_set_payload(trans, payload, payload_len);
+	msn_transaction_set_data(trans, cb);
+	msn_cmdproc_send_trans(cmdproc, trans);
+}
+
+static void
+update_contact_network(MsnSession *session, const char *passport, MsnNetwork network)
+{
+	MsnUser *user = msn_userlist_find_user(session->userlist, passport);
+	/* TODO: Also figure out how to update membership lists */
+	if (user) {
+		xmlnode *adl_node;
+		char *payload;
+		int payload_len;
+
+		msn_user_set_network(user, network);
+
+		adl_node = xmlnode_new("ml");
+		xmlnode_set_attrib(adl_node, "l", "1");
+		msn_add_contact_xml(session, adl_node, passport,
+				user->list_op & MSN_LIST_OP_MASK, network);
+		payload = xmlnode_to_str(adl_node, &payload_len);
+		msn_notification_post_adl(session->notification->cmdproc, payload, payload_len);
+
+	} else {
+		purple_debug_error("msn",
+		                   "Got FQY update for unkwown user %s on network %d.\n",
+		                   passport, network);
+	}
+}
+
 /*dump contact info to NS*/
 void
 msn_notification_dump_contact(MsnSession *session)
@@ -603,14 +642,17 @@
 	MsnUser *user;
 	GList *l;
 	xmlnode *adl_node;
+	xmlnode *fqy_node;
 	char *payload;
 	int payload_len;
 	int adl_count = 0;
+	int fqy_count = 0;
 	const char *display_name;
 
 	adl_node = xmlnode_new("ml");
 	adl_node->child = NULL;
 	xmlnode_set_attrib(adl_node, "l", "1");
+	fqy_node = xmlnode_new("ml");
 
 	/*get the userlist*/
 	for (l = session->userlist->users; l != NULL; l = l->next) {
@@ -623,48 +665,76 @@
 		if (user->passport && !strcmp(user->passport, "messenger@microsoft.com"))
 			continue;
 
-		if ((user->list_op & MSN_LIST_OP_MASK) == (MSN_LIST_AL_OP | MSN_LIST_BL_OP)) {
+		if ((user->list_op & MSN_LIST_OP_MASK & ~MSN_LIST_FL_OP)
+		 == (MSN_LIST_AL_OP | MSN_LIST_BL_OP)) {
 			/* The server will complain if we send it a user on both the
 			   Allow and Block lists. So assume they're on the Block list
 			   and remove them from the Allow list in the membership lists to
 			   stop this from happening again. */
 			purple_debug_warning("msn",
-			                     "User %s is on both Allow and Block list,"
+			                     "User %s is on both Allow and Block list; "
 			                     "removing from Allow list.\n",
 			                     user->passport);
 			msn_userlist_rem_buddy_from_list(session->userlist, user->passport, MSN_LIST_AL);
 		}
 
-		msn_add_contact_xml(session, adl_node, user->passport,
-			user->list_op & MSN_LIST_OP_MASK, user->networkid);
-
-		/* each ADL command may contain up to 150 contacts */
-		if (++adl_count % 150 == 0 || l->next == NULL) {
-			payload = xmlnode_to_str(adl_node,&payload_len);
+		if (user->networkid != MSN_NETWORK_UNKNOWN) {
+			msn_add_contact_xml(session, adl_node, user->passport,
+				user->list_op & MSN_LIST_OP_MASK, user->networkid);
 
-			msn_notification_post_adl(session->notification->cmdproc,
-				payload, payload_len);
+			/* each ADL command may contain up to 150 contacts */
+			if (++adl_count % 150 == 0) {
+				payload = xmlnode_to_str(adl_node, &payload_len);
 
-			g_free(payload);
-			xmlnode_free(adl_node);
+				msn_notification_post_adl(session->notification->cmdproc,
+					payload, payload_len);
 
-			if (l->next) {
+				g_free(payload);
+				xmlnode_free(adl_node);
+
 				adl_node = xmlnode_new("ml");
 				adl_node->child = NULL;
 				xmlnode_set_attrib(adl_node, "l", "1");
 			}
+		} else {
+			msn_add_contact_xml(session, fqy_node, user->passport,
+				0, user->networkid);
+
+			/* each FQY command may contain up to 150 contacts, probably */
+			if (++fqy_count % 150 == 0) {
+				payload = xmlnode_to_str(fqy_node, &payload_len);
+
+				msn_notification_send_fqy(session, payload, payload_len,
+				                          update_contact_network);
+
+				g_free(payload);
+				xmlnode_free(fqy_node);
+				fqy_node = xmlnode_new("ml");
+			}
 		}
 	}
 
-	if (adl_count == 0) {
-		payload = xmlnode_to_str(adl_node,&payload_len);
+	/* Send the rest, or just an empty one to let the server set us online */
+	if (adl_count == 0 || adl_count % 150 != 0) {
+		payload = xmlnode_to_str(adl_node, &payload_len);
 
 		msn_notification_post_adl(session->notification->cmdproc, payload, payload_len);
 
 		g_free(payload);
-		xmlnode_free(adl_node);
 	}
 
+	if (fqy_count % 150 != 0) {
+		payload = xmlnode_to_str(fqy_node, &payload_len);
+
+		msn_notification_send_fqy(session, payload, payload_len,
+		                          update_contact_network);
+
+		g_free(payload);
+	}
+
+	xmlnode_free(adl_node);
+	xmlnode_free(fqy_node);
+
 	display_name = purple_connection_get_display_name(session->account->gc);
 	if (display_name
 	    && strcmp(display_name,
@@ -674,30 +744,6 @@
 
 }
 
-/*Post FQY to NS,Inform add a Yahoo User*/
-void
-msn_notification_send_fqy(MsnSession *session, const char *passport)
-{
-	MsnTransaction *trans;
-	MsnCmdProc *cmdproc;
-	char* email,*domain,*payload;
-	char **tokens;
-
-	cmdproc = session->notification->cmdproc;
-
-	tokens = g_strsplit(passport, "@", 2);
-	email = tokens[0];
-	domain = tokens[1];
-
-	payload = g_strdup_printf("<ml><d n=\"%s\"><c n=\"%s\"/></d></ml>", domain, email);
-	trans = msn_transaction_new(cmdproc, "FQY","%" G_GSIZE_FORMAT, strlen(payload));
-	msn_transaction_set_payload(trans, payload, strlen(payload));
-	msn_cmdproc_send_trans(cmdproc, trans);
-
-	g_free(payload);
-	g_strfreev(tokens);
-}
-
 static void
 blp_cmd(MsnCmdProc *cmdproc, MsnCommand *cmd)
 {
@@ -861,7 +907,7 @@
 fqy_cmd_post(MsnCmdProc *cmdproc, MsnCommand *cmd, char *payload,
 			 size_t len)
 {
-	MsnUserList *userlist;
+	MsnSession *session;
 	xmlnode *ml, *d, *c;
 	const char *domain;
 	const char *local;
@@ -869,26 +915,37 @@
 	char *passport;
 	MsnNetwork network = MSN_NETWORK_PASSPORT;
 
-	userlist = cmdproc->session->userlist;
+	session = cmdproc->session;
 
 	/* FQY response:
 	    <ml><d n="domain.com"><c n="local-node" t="network" /></d></ml> */
 	ml = xmlnode_from_str(payload, len);
-	d = xmlnode_get_child(ml, "d");
-	c = xmlnode_get_child(d, "c");
-	domain = xmlnode_get_attrib(d, "n");
-	local = xmlnode_get_attrib(c, "n");
-	type = xmlnode_get_attrib(c, "t");
+	for (d = xmlnode_get_child(ml, "d");
+	     d != NULL;
+	     d = xmlnode_get_next_twin(d)) {
+		domain = xmlnode_get_attrib(d, "n");
+		for (c = xmlnode_get_child(d, "c");
+		     c != NULL;
+		     c = xmlnode_get_next_twin(c)) {
+			local = xmlnode_get_attrib(c, "n");
+			type = xmlnode_get_attrib(c, "t");
 
-	passport = g_strdup_printf("%s@%s", local, domain);
+			passport = g_strdup_printf("%s@%s", local, domain);
 
-	if (type != NULL)
-		network = (MsnNetwork)strtoul(type, NULL, 10);
-	purple_debug_info("msn", "FQY response says %s is from network %d\n",
-	                  passport, network);
-	msn_userlist_add_pending_buddy(userlist, passport, network);
+			if (type != NULL)
+				network = (MsnNetwork)strtoul(type, NULL, 10);
+			else
+				network = MSN_NETWORK_PASSPORT;
 
-	g_free(passport);
+			purple_debug_info("msn", "FQY response says %s is from network %d\n",
+			                  passport, network);
+			if (cmd->trans->data)
+				((MsnFqyCb)cmd->trans->data)(session, passport, network);
+
+			g_free(passport);
+		}
+	}
+
 	xmlnode_free(ml);
 }
 
--- a/libpurple/protocols/msn/notification.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/notification.h	Wed Mar 04 16:52:47 2009 +0000
@@ -58,6 +58,8 @@
 	gboolean in_use;
 };
 
+typedef void (*MsnFqyCb)(MsnSession *session, const char *passport, MsnNetwork network);
+
 #include "state.h"
 void uum_send_msg(MsnSession *session,MsnMessage *msg);
 
@@ -69,7 +71,9 @@
 void msn_notification_rem_buddy_from_list(MsnNotification *notification,
 					  MsnListId list_id, MsnUser *user);
 
-void msn_notification_send_fqy(MsnSession *session, const char *passport);
+void msn_notification_send_fqy(MsnSession *session,
+                               const char *payload, int payload_len,
+                               MsnFqyCb cb);
 
 MsnNotification *msn_notification_new(MsnSession *session);
 void msn_notification_destroy(MsnNotification *notification);
--- a/libpurple/protocols/msn/session.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/session.c	Wed Mar 04 16:52:47 2009 +0000
@@ -271,16 +271,21 @@
 	 * being logged in. This no longer happens, so we manually iterate
 	 * over the whole buddy list to identify sync issues.
 	 */
-	for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+	for (gnode = purple_blist_get_root(); gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode)) {
 		PurpleGroup *group = (PurpleGroup *)gnode;
 		const char *group_name;
 		if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
-		group_name = group->name;
-		for(cnode = gnode->child; cnode; cnode = cnode->next) {
+		group_name = purple_group_get_name(group);
+		for(cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode)) {
 			if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			for(bnode = cnode->child; bnode; bnode = bnode->next) {
+			for(bnode = purple_blist_node_get_first_child(cnode);
+					bnode;
+					bnode = purple_blist_node_get_sibling_next(bnode)) {
 				PurpleBuddy *b;
 				if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
--- a/libpurple/protocols/msn/slpcall.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/slpcall.c	Wed Mar 04 16:52:47 2009 +0000
@@ -47,8 +47,7 @@
 	if (!slpcall->pending && !slpcall->progress)
 	{
 		msn_slpcall_destroy(slpcall);
-		slpcall->timer = 0;
-		return FALSE;
+		return TRUE;
 	}
 
 	slpcall->progress = FALSE;
--- a/libpurple/protocols/msn/switchboard.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/switchboard.c	Wed Mar 04 16:52:47 2009 +0000
@@ -383,7 +383,7 @@
 {
 	MsnSwitchBoard *swboard = data;
 
-	purple_debug_info("msn", "unqueuing unsent message to %s", swboard->im_user);
+	purple_debug_info("msn", "unqueuing unsent message to %s\n", swboard->im_user);
 
 	msn_switchboard_request(swboard);
 	msn_switchboard_request_add_user(swboard, swboard->im_user);
@@ -448,7 +448,7 @@
 				body_enc = g_markup_escape_text(body_str, -1);
 				g_free(body_str);
 
-				purple_debug_info("msn", "queuing unsent message to %s: %s",
+				purple_debug_info("msn", "queuing unsent message to %s: %s\n",
 					swboard->im_user, body_enc);
 				g_free(body_enc);
 				msn_send_im_message(session, msg);
--- a/libpurple/protocols/msn/user.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/user.c	Wed Mar 04 16:52:47 2009 +0000
@@ -294,9 +294,8 @@
 		b = purple_buddy_new(account, passport, NULL);
 		purple_blist_add_buddy(b, NULL, g, NULL);
 	}
-	b->proto_data = user;
+	purple_buddy_set_protocol_data(b, user);
 	/*Update the blist Node info*/
-//	purple_blist_node_set_string(&(b->node), "", "");
 }
 
 /*check if the msn user is online*/
--- a/libpurple/protocols/msn/userlist.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/userlist.c	Wed Mar 04 16:52:47 2009 +0000
@@ -770,10 +770,11 @@
  * Actually adds a buddy once we have the response from FQY
  */
 void
-msn_userlist_add_pending_buddy(MsnUserList *userlist,
+msn_userlist_add_pending_buddy(MsnSession *session,
                                const char *who,
                                /*MsnNetwork*/ int network)
 {
+	MsnUserList *userlist = session->userlist;
 	MsnUser *user = NULL;
 	MsnUser *user2;
 	GList *l;
@@ -930,31 +931,37 @@
 msn_userlist_load(MsnSession *session)
 {
 	PurpleBlistNode *gnode, *cnode, *bnode;
-	PurpleConnection *gc = purple_account_get_connection(session->account);
+	PurpleAccount *account = session->account;
+	PurpleConnection *gc = purple_account_get_connection(account);
 	GSList *l;
 	MsnUser * user;
 
 	g_return_if_fail(gc != NULL);
 
-	for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next)
+	for (gnode = purple_blist_get_root(); gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode))
 	{
 		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
-		for (cnode = gnode->child; cnode; cnode = cnode->next)
+		for (cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode))
 		{
 			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			for (bnode = cnode->child; bnode; bnode = bnode->next)
+			for (bnode = purple_blist_node_get_first_child(cnode);
+					bnode;
+					bnode = purple_blist_node_get_sibling_next(bnode))
 			{
 				PurpleBuddy *b;
 				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
 				b = (PurpleBuddy *)bnode;
-				if (b->account == gc->account)
+				if (purple_buddy_get_account(b) == account)
 				{
 					user = msn_userlist_find_add_user(session->userlist,
-						b->name,NULL);
-					b->proto_data = user;
+						purple_buddy_get_name(b), NULL);
+					purple_buddy_set_protocol_data(b, user);
 					msn_user_set_op(user, MSN_LIST_FL_OP);
 				}
 			}
--- a/libpurple/protocols/msn/userlist.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/msn/userlist.h	Wed Mar 04 16:52:47 2009 +0000
@@ -95,7 +95,7 @@
 void msn_userlist_save_pending_buddy(MsnUserList *userlist,
                                      const char *who,
                                      const char *group_name);
-void msn_userlist_add_pending_buddy(MsnUserList *userlist,
+void msn_userlist_add_pending_buddy(MsnSession *session,
                                     const char *who,
                                     /*MsnNetwork*/ int network);
 void msn_userlist_move_buddy(MsnUserList *userlist, const char *who,
--- a/libpurple/protocols/myspace/README	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/myspace/README	Wed Mar 04 16:52:47 2009 +0000
@@ -1,9 +1,8 @@
-MySpaceIM Protocol Plugin for Libpurple     by Jeff Connelly 20070807
-
+MySpaceIM Protocol Plugin for libpurple by Jeff Connelly 2007-08-07
 
 Greetings. This package contains a plugin for libpurple (as used in
-Pidgin, formerly Gaim) to connect to the new MySpaceIM instant messaging 
-network and send/receive messages. Functionality is only basic as of yet, 
+Pidgin, formerly Gaim) to connect to the new MySpaceIM instant messaging
+network and send/receive messages. Functionality is only basic as of yet,
 and this code should be considered alpha quality.
 
 This code was initially developed under Google Summer of Code 2007.
@@ -15,10 +14,10 @@
 Login using your _email address_ you use to login to myspace.com. You can't
 login using your numeric ID or alias.
 
-To test it out, send a message to yourself (by your username or numeric 
-uid (email not yet supported)) or tom (6221). In either case you should 
-get a reply. You should also be able to talk to other MySpaceIM users if 
-you desire. Replies will always be shown as coming from a user's username, 
+To test it out, send a message to yourself (by your username or numeric
+uid (email not yet supported)) or tom (6221). In either case you should
+get a reply. You should also be able to talk to other MySpaceIM users if
+you desire. Replies will always be shown as coming from a user's username,
 even if you IM by email or userid.
 
 Feedback welcome. You can IM my test account at "msimprpl" if you feel like it.
@@ -26,4 +25,3 @@
 Enjoy,
 -Jeff Connelly
 msimprpl@xyzzy.cjb.net
-
--- a/libpurple/protocols/myspace/myspace.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/myspace/myspace.c	Wed Mar 04 16:52:47 2009 +0000
@@ -202,7 +202,7 @@
 		/* Next, see if on buddy list and know uid. */
 		buddy = purple_find_buddy(session->account, username);
 		if (buddy) {
-			uid = purple_blist_node_get_int(&buddy->node, "UserID");
+			uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
 		} else {
 			uid = 0;
 		}
@@ -311,7 +311,7 @@
 		/* See finch/gnthistory.c */
 		buddy = cur->data;
 
-		uid = purple_blist_node_get_int(&buddy->node, "UserID");
+		uid = purple_blist_node_get_int(PURPLE_BLIST_NODE(buddy), "UserID");
 		name = purple_buddy_get_name(buddy);
 
 		if (uid == wanted_uid)
@@ -383,12 +383,17 @@
 	MsimSession *session;
 	MsimUser *user;
 	const gchar *display_name, *headline;
+	PurpleAccount *account;
+	PurpleConnection *gc;
 
 	g_return_val_if_fail(buddy != NULL, NULL);
 
 	user = msim_get_user_from_buddy(buddy);
 
-	session = (MsimSession *)buddy->account->gc->proto_data;
+	account = purple_buddy_get_account(buddy);
+	gc = purple_account_get_connection(account);
+	session = (MsimSession *)gc->proto_data;
+
 	g_return_val_if_fail(MSIM_SESSION_VALID(session), NULL);
 
 	display_name = headline = NULL;
@@ -435,8 +440,10 @@
 
 	if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
 		MsimSession *session;
-
-		session = (MsimSession *)buddy->account->gc->proto_data;
+		PurpleAccount *account = purple_buddy_get_account(buddy);
+		PurpleConnection *gc = purple_account_get_connection(account);
+ 
+		session = (MsimSession *)gc->proto_data;
 
 		g_return_if_fail(MSIM_SESSION_VALID(session));
 
@@ -1036,11 +1043,11 @@
 		 * of numbers in the buddy list.
 		 */
 		if (display_name != NULL) {
-			purple_blist_node_set_string(&buddy->node, "DisplayName", display_name);
+			purple_blist_node_set_string(PURPLE_BLIST_NODE(buddy), "DisplayName", display_name);
 			serv_got_alias(session->gc, username, display_name);
 		} else {
 			serv_got_alias(session->gc, username,
-					purple_blist_node_get_string(&buddy->node, "DisplayName"));
+					purple_blist_node_get_string(PURPLE_BLIST_NODE(buddy), "DisplayName"));
 		}
 	}
 	g_free(display_name);
@@ -1050,7 +1057,7 @@
 
 	user->id = uid;
 	/* Keep track of the user ID across sessions */
-	purple_blist_node_set_int(&buddy->node, "UserID", uid);
+	purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", uid);
 
 	/* Stores a few fields in the MsimUser, relevant to the buddy itself.
 	 * AvatarURL, Headline, ContactID. */
@@ -1374,7 +1381,7 @@
 		user->id = msim_msg_get_integer(msg, "f");
 
 		/* Keep track of the user ID across sessions */
-		purple_blist_node_set_int(&buddy->node, "UserID", user->id);
+		purple_blist_node_set_int(PURPLE_BLIST_NODE(buddy), "UserID", user->id);
 
 		msim_store_user_info(session, msg, NULL);
 	} else {
@@ -2628,10 +2635,14 @@
 	MsimMessage *msg;
 	MsimMessage *msg_persist;
 	MsimMessage *body;
+	const char *name, *gname;
 
 	session = (MsimSession *)gc->proto_data;
+	name = purple_buddy_get_name(buddy);
+	gname = group ? purple_group_get_name(group) : NULL;
+
 	purple_debug_info("msim", "msim_add_buddy: want to add %s to %s\n",
-			buddy->name, (group && group->name) ? group->name : "(no group)");
+			name, gname ? gname : "(no group)");
 
 	msg = msim_msg_new(
 			"addbuddy", MSIM_TYPE_BOOLEAN, TRUE,
@@ -2640,7 +2651,7 @@
 			"reason", MSIM_TYPE_STRING, g_strdup(""),
 			NULL);
 
-	if (!msim_postprocess_outgoing(session, msg, buddy->name, "newprofileid", "reason")) {
+	if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) {
 		purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed."));
 		msim_msg_free(msg);
 		return;
@@ -2652,7 +2663,7 @@
 
 	body = msim_msg_new(
 			"ContactID", MSIM_TYPE_STRING, g_strdup("<uid>"),
-			"GroupName", MSIM_TYPE_STRING, g_strdup(group->name),
+			"GroupName", MSIM_TYPE_STRING, g_strdup(gname),
 			"Position", MSIM_TYPE_INTEGER, 1000,
 			"Visibility", MSIM_TYPE_INTEGER, 1,
 			"NickName", MSIM_TYPE_STRING, g_strdup(""),
@@ -2673,7 +2684,7 @@
 		"body", MSIM_TYPE_DICTIONARY, body,
 		NULL);
 
-	if (!msim_postprocess_outgoing(session, msg_persist, buddy->name, "body", NULL))
+	if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL))
 	{
 		purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed"));
 		msim_msg_free(msg_persist);
@@ -2682,7 +2693,14 @@
 	msim_msg_free(msg_persist);
 
 	/* Add to allow list, remove from block list */
-	msim_update_blocklist_for_buddy(session, buddy->name, TRUE, FALSE);
+	msim_update_blocklist_for_buddy(session, name, TRUE, FALSE);
+}
+
+static void
+msim_buddy_free(PurpleBuddy *buddy)
+{
+	msim_user_free(purple_buddy_get_protocol_data(buddy));
+	purple_buddy_set_protocol_data(buddy, NULL);
 }
 
 /**
@@ -2694,8 +2712,10 @@
 	MsimSession *session;
 	MsimMessage *delbuddy_msg;
 	MsimMessage *persist_msg;
+	const char *name;
 
 	session = (MsimSession *)gc->proto_data;
+	name = purple_buddy_get_name(buddy);
 
 	delbuddy_msg = msim_msg_new(
 				"delbuddy", MSIM_TYPE_BOOLEAN, TRUE,
@@ -2703,7 +2723,7 @@
 				/* 'delprofileid' with uid will be inserted here. */
 				NULL);
 
-	if (!msim_postprocess_outgoing(session, delbuddy_msg, buddy->name, "delprofileid", NULL)) {
+	if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) {
 		purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed"));
 		msim_msg_free(delbuddy_msg);
 		return;
@@ -2722,7 +2742,7 @@
 			"body", MSIM_TYPE_STRING, g_strdup("ContactID=<uid>"),
 			NULL);
 
-	if (!msim_postprocess_outgoing(session, persist_msg, buddy->name, "body", NULL)) {
+	if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) {
 		purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed"));
 		msim_msg_free(persist_msg);
 		return;
@@ -2734,15 +2754,12 @@
 	 * doesn't seem like it would be necessary, but the official client
 	 * does it)
 	 */
-	if (!msim_update_blocklist_for_buddy(session, buddy->name, FALSE, FALSE)) {
+	if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) {
 		purple_notify_error(NULL, NULL,
 				_("Failed to remove buddy"), _("blocklist command failed"));
 		return;
 	}
-	if (buddy->proto_data) {
-		msim_user_free(buddy->proto_data);
-		buddy->proto_data = NULL;
-	}
+	msim_buddy_free(buddy);
 }
 
 /**
@@ -2832,13 +2849,6 @@
 	msim_update_blocklist_for_buddy(session, name, FALSE, FALSE);
 }
 
-static void
-msim_buddy_free(PurpleBuddy *buddy)
-{
-	msim_user_free(buddy->proto_data);
-	buddy->proto_data = NULL;
-}
-
 /**
  * Returns a string of a username in canonical form. Basically removes all the
  * spaces, lowercases the string, and looks up user IDs to usernames.
@@ -3112,8 +3122,8 @@
 	body = msim_msg_get_dictionary(reply, "body");
 	g_return_if_fail(body != NULL);
 	completed = msim_msg_get_string(body, "Completed");
-	g_return_if_fail(body != NULL);
 	msim_msg_free(body);
+	g_return_if_fail(completed != NULL);
 	if (!g_str_equal(completed, "True"))
 	{
 		purple_debug_info("msim_import_friends_cb",
--- a/libpurple/protocols/myspace/user.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/myspace/user.c	Wed Mar 04 16:52:47 2009 +0000
@@ -52,17 +52,14 @@
 		return NULL;
 	}
 
-	if (!buddy->proto_data) {
+	if (!(user = purple_buddy_get_protocol_data(buddy))) {
 		/* No MsimUser for this buddy; make one. */
 
 		user = g_new0(MsimUser, 1);
 		user->buddy = buddy;
-		user->id = purple_blist_node_get_int((PurpleBlistNode*)buddy, "UserID");
-		buddy->proto_data = (gpointer)user;
+		purple_buddy_set_protocol_data(buddy, user);
 	}
 
-	user = (MsimUser *)(buddy->proto_data);
-
 	return user;
 }
 
@@ -111,6 +108,7 @@
 {
 	PurplePresence *presence;
 	gchar *str;
+	guint uid;
 	guint cv;
 
 	/* Useful to identify the account the tooltip refers to.
@@ -119,6 +117,8 @@
 		purple_notify_user_info_add_pair(user_info, _("User"), user->username);
 	}
 
+	uid = purple_blist_node_get_int((PurpleBlistNode *)user->buddy, "UserID");
+
 	/* a/s/l...the vitals */
 	if (user->age) {
 		char age[16];
@@ -209,9 +209,9 @@
 		gsize len,
 		const gchar *error_message)
 {
-	MsimUser *user;
-
-	user = (MsimUser *)user_data;
+	MsimUser *user = (MsimUser *)user_data;
+	const char *name = purple_buddy_get_name(user->buddy);
+	PurpleAccount *account;
 
 	purple_debug_info("msim_downloaded_buddy_icon",
 			"Downloaded %" G_GSIZE_FORMAT " bytes\n", len);
@@ -219,12 +219,12 @@
 	if (!url_text) {
 		purple_debug_info("msim_downloaded_buddy_icon",
 				"failed to download icon for %s",
-				user->buddy->name);
+				name);
 		return;
 	}
 
-	purple_buddy_icons_set_for_user(user->buddy->account,
-			user->buddy->name,
+	account = purple_buddy_get_account(user->buddy);
+	purple_buddy_icons_set_for_user(account, name,
 			g_memdup((gchar *)url_text, len), len,
 			/* Use URL itself as buddy icon "checksum" (TODO: ETag) */
 			user->image_url);		/* checksum */
@@ -247,7 +247,9 @@
 static void msim_set_artist_or_title(MsimUser *user, const char *new_artist, const char *new_title)
 {
 	PurplePresence *presence;
+	PurpleAccount *account;
 	const char *prev_artist, *prev_title;
+	const char *name;
 
 	if (user->buddy == NULL)
 		/* User not on buddy list so nothing to do */
@@ -261,8 +263,11 @@
 	if (new_title && !*new_title)
 		new_title = NULL;
 
+	account = purple_buddy_get_account(user->buddy);
+	name = purple_buddy_get_name(user->buddy);
+
 	if (!new_artist && !new_title) {
-		purple_prpl_got_user_status_deactive(user->buddy->account, user->buddy->name, "tune");
+		purple_prpl_got_user_status_deactive(account, name, "tune");
 		return;
 	}
 
@@ -282,7 +287,7 @@
 	if (!new_title)
 		new_title = prev_title;
 
-	purple_prpl_got_user_status(user->buddy->account, user->buddy->name, "tune",
+	purple_prpl_got_user_status(account, name, "tune",
 			PURPLE_TUNE_TITLE, new_title,
 			PURPLE_TUNE_ARTIST, new_artist,
 			NULL);
@@ -299,14 +304,16 @@
 static void
 msim_store_user_info_each(const gchar *key_str, gchar *value_str, MsimUser *user)
 {
+	const char *name = user->buddy ? purple_buddy_get_name(user->buddy) : NULL;
+
 	if (g_str_equal(key_str, "UserID") || g_str_equal(key_str, "ContactID")) {
 		/* Save to buddy list, if it exists, for quick cached uid lookup with msim_uid2username_from_blist(). */
 		user->id = atol(value_str);
 		g_free(value_str);
 		if (user->buddy)
 		{
-			purple_debug_info("msim", "associating uid %s with username %s\n", key_str, user->buddy->name);
-			purple_blist_node_set_int(&user->buddy->node, "UserID", user->id);
+			purple_debug_info("msim", "associating uid %s with username %s\n", key_str, name);
+			purple_blist_node_set_int(PURPLE_BLIST_NODE(user->buddy), "UserID", user->id);
 		}
 		/* Need to store in MsimUser, too? What if not on blist? */
 	} else if (g_str_equal(key_str, "Age")) {
@@ -359,9 +366,8 @@
 		/* Instead of showing 'no photo' picture, show nothing. */
 		if (g_str_equal(user->image_url, "http://x.myspace.com/images/no_pic.gif"))
 		{
-			purple_buddy_icons_set_for_user(user->buddy->account,
-				user->buddy->name,
-				NULL, 0, NULL);
+			purple_buddy_icons_set_for_user(purple_buddy_get_account(user->buddy),
+				name, NULL, 0, NULL);
 			return;
 		}
 
--- a/libpurple/protocols/myspace/zap.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/myspace/zap.c	Wed Mar 04 16:52:47 2009 +0000
@@ -173,13 +173,13 @@
 	buddy = (PurpleBuddy *)node;
 
 	/* Find the session */
-	account = buddy->account;
+	account = purple_buddy_get_account(buddy);
 	gc = purple_account_get_connection(account);
 	session = (MsimSession *)gc->proto_data;
 
 	zap = GPOINTER_TO_INT(zap_num_ptr);
 
-	purple_prpl_send_attention(session->gc, buddy->name, zap);
+	purple_prpl_send_attention(session->gc, purple_buddy_get_name(buddy), zap);
 }
 
 /** Return menu, if any, for a buddy list node. */
--- a/libpurple/protocols/novell/novell.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/novell/novell.c	Wed Mar 04 16:52:47 2009 +0000
@@ -293,7 +293,7 @@
 								nm_user_record_get_display_id(user_record));
 
 		alias = purple_buddy_get_alias(buddy);
-		if (alias == NULL || *alias == '\0' || (strcmp(alias, buddy->name) == 0)) {
+		if (alias == NULL || *alias == '\0' || (strcmp(alias, purple_buddy_get_name(buddy)) == 0)) {
 			purple_blist_alias_buddy(buddy,
 								   nm_user_record_get_full_name(user_record));
 
@@ -1175,10 +1175,12 @@
 	const char *status_id;
 	const char *text = NULL;
 	const char *dn;
+	const char *name;
 	int idle = 0;
 	gboolean loggedin = TRUE;
 
-	account = buddy->account;
+	account = purple_buddy_get_account(buddy);
+	name = purple_buddy_get_name(buddy);
 
 	switch (novellstatus) {
 		case NM_STATUS_AVAILABLE:
@@ -1205,7 +1207,7 @@
 	}
 
 	/* Get status text for the user */
-	dn = nm_lookup_dn(user, buddy->name);
+	dn = nm_lookup_dn(user, name);
 	if (dn) {
 		NMUserRecord *user_record = nm_find_user_record(user, dn);
 		if (user_record) {
@@ -1213,9 +1215,9 @@
 		}
 	}
 
-	purple_prpl_got_user_status(account, buddy->name, status_id,
+	purple_prpl_got_user_status(account, name, status_id,
 							  "message", text, NULL);
-	purple_prpl_got_user_idle(account, buddy->name,
+	purple_prpl_got_user_idle(account, name,
 							(novellstatus == NM_STATUS_AWAY_IDLE), idle);
 }
 
@@ -1230,44 +1232,46 @@
 	PurpleBlistNode *bnode;
 	PurpleGroup *group;
 	PurpleBuddy *buddy;
-	PurpleBuddyList *blist;
 	GSList *rem_list = NULL;
 	GSList *l;
 	NMFolder *folder = NULL;
 	const char *gname = NULL;
 
-	if ((blist = purple_get_blist())) {
-		for (gnode = blist->root; gnode; gnode = gnode->next) {
-			if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
+	for (gnode = purple_blist_get_root(); gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode)) {
+		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
+			continue;
+		group = (PurpleGroup *) gnode;
+		gname = purple_group_get_name(group);
+		for (cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode)) {
+			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			group = (PurpleGroup *) gnode;
-			for (cnode = gnode->child; cnode; cnode = cnode->next) {
-				if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
+			for (bnode = purple_blist_node_get_first_child(cnode);
+					bnode;
+					bnode = purple_blist_node_get_sibling_next(bnode)) {
+				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
-				for (bnode = cnode->child; bnode; bnode = bnode->next) {
-					if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
-						continue;
-					buddy = (PurpleBuddy *) bnode;
-					if (buddy->account == user->client_data) {
-						gname = group->name;
-						if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0)
-							gname = "";
-						folder = nm_find_folder(user, gname);
-						if (folder == NULL ||
-							!nm_folder_find_contact_by_display_id(folder, buddy->name)) {
-							rem_list = g_slist_append(rem_list, buddy);
-						}
+				buddy = (PurpleBuddy *) bnode;
+				if (purple_buddy_get_account(buddy) == user->client_data) {
+					if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0)
+						gname = "";
+					folder = nm_find_folder(user, gname);
+					if (folder == NULL ||
+							!nm_folder_find_contact_by_display_id(folder, purple_buddy_get_name(buddy))) {
+						rem_list = g_slist_append(rem_list, buddy);
 					}
 				}
 			}
 		}
-
-		if (rem_list) {
-			for (l = rem_list; l; l = l->next) {
-				purple_blist_remove_buddy(l->data);
-			}
-			g_slist_free(rem_list);
+	}
+
+	if (rem_list) {
+		for (l = rem_list; l; l = l->next) {
+			purple_blist_remove_buddy(l->data);
 		}
+		g_slist_free(rem_list);
 	}
 }
 
@@ -1613,14 +1617,14 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 
 	user = gc->proto_data;
 	if (user == NULL)
 		return;
 
 	/* We should already have a userrecord for the buddy */
-	user_record = nm_find_user_record(user, buddy->name);
+	user_record = nm_find_user_record(user, purple_buddy_get_name(buddy));
 	if (user_record == NULL)
 		return;
 
@@ -2538,7 +2542,7 @@
 	NMContact *contact;
 	NMUser *user;
 	NMERR_T rc = NM_OK;
-	const char *alias, *gname;
+	const char *alias, *gname, *bname;
 
 	if (gc == NULL || buddy == NULL || group == NULL)
 		return;
@@ -2554,22 +2558,22 @@
 		return;
 
 	contact = nm_create_contact();
-	nm_contact_set_dn(contact, buddy->name);
+	nm_contact_set_dn(contact, purple_buddy_get_name(buddy));
 
 	/* Remove the PurpleBuddy (we will add it back after adding it
 	 * to the server side list). Save the alias if there is one.
 	 */
 	alias = purple_buddy_get_alias(buddy);
-	if (alias && strcmp(alias, buddy->name))
+	bname = purple_buddy_get_name(buddy);
+	if (alias && strcmp(alias, bname))
 		nm_contact_set_display_name(contact, alias);
 
 	purple_blist_remove_buddy(buddy);
 	buddy = NULL;
 
-	if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0) {
+	gname = purple_group_get_name(group);
+	if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0) {
 		gname = "";
-	} else {
-		gname = group->name;
 	}
 
 	folder = nm_find_folder(user, gname);
@@ -2603,11 +2607,10 @@
 		return;
 
 	user = (NMUser *) gc->proto_data;
-	if (user && (dn = nm_lookup_dn(user, buddy->name))) {
-		if (strcmp(group->name, NM_ROOT_FOLDER_NAME) == 0) {
+	if (user && (dn = nm_lookup_dn(user, purple_buddy_get_name(buddy)))) {
+		gname = purple_group_get_name(group);
+		if (strcmp(gname, NM_ROOT_FOLDER_NAME) == 0) {
 			gname = "";
-		} else {
-			gname = group->name;
 		}
 		folder = nm_find_folder(user, gname);
 		if (folder) {
@@ -2637,7 +2640,7 @@
 
 	user = (NMUser *) gc->proto_data;
 	if (user) {
-		NMFolder *folder = nm_find_folder(user, group->name);
+		NMFolder *folder = nm_find_folder(user, purple_group_get_name(group));
 
 		if (folder) {
 			rc = nm_send_remove_folder(user, folder,
@@ -2684,9 +2687,11 @@
 				}
 
 				if (group) {
+					const char *balias;
 					buddy = purple_find_buddy_in_group(user->client_data,
 													 name, group);
-					if (buddy && strcmp(buddy->alias, alias))
+					balias = buddy ? purple_buddy_get_local_buddy_alias(buddy) : NULL;
+					if (balias && strcmp(balias, alias))
 						purple_blist_alias_buddy(buddy, alias);
 				}
 
@@ -2777,8 +2782,9 @@
 
 	user = gc->proto_data;
 	if (user) {
+		const char *gname = purple_group_get_name(group);
 		/* Does new folder exist already? */
-		if (nm_find_folder(user, group->name)) {
+		if (nm_find_folder(user, gname)) {
 			/* purple_blist_rename_group() adds the buddies
 			 * to the new group and removes the old group...
 			 * so there is nothing more to do here.
@@ -2793,7 +2799,7 @@
 
 		folder = nm_find_folder(user, old_name);
 		if (folder) {
-			rc = nm_send_rename_folder(user, folder, group->name,
+			rc = nm_send_rename_folder(user, folder, gname,
 									   _rename_folder_resp_cb, NULL);
 			_check_for_disconnect(user, rc);
 		}
@@ -2819,12 +2825,12 @@
 	if (buddy == NULL)
 		return;
 
-	gc = purple_account_get_connection(buddy->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 	if (gc == NULL || (user = gc->proto_data) == NULL)
 		return;
 
 	if (PURPLE_BUDDY_IS_ONLINE(buddy)) {
-		user_record = nm_find_user_record(user, buddy->name);
+		user_record = nm_find_user_record(user, purple_buddy_get_name(buddy));
 		if (user_record) {
 			status = nm_user_record_get_status(user_record);
 			text = nm_user_record_get_status_text(user_record);
@@ -2923,14 +2929,16 @@
 {
 	const char *text = NULL;
 	const char *dn = NULL;
-
-	if (buddy && buddy->account) {
-		PurpleConnection *gc = purple_account_get_connection(buddy->account);
+	PurpleAccount *account;
+
+	account = buddy ? purple_buddy_get_account(buddy) : NULL;
+	if (buddy && account) {
+		PurpleConnection *gc = purple_account_get_connection(account);
 
 		if (gc && gc->proto_data) {
 			NMUser *user = gc->proto_data;
 
-			dn = nm_lookup_dn(user, buddy->name);
+			dn = nm_lookup_dn(user, purple_buddy_get_name(buddy));
 			if (dn) {
 				NMUserRecord *user_record = nm_find_user_record(user, dn);
 
--- a/libpurple/protocols/null/README	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/null/README	Wed Mar 04 16:52:47 2009 +0000
@@ -28,11 +28,10 @@
 -----------------------
 
 To build, just run ./configure as usual in the root directory of the pidgin
-source distribution. Then cd libpurple/protocols/null and type make. To
-install, copy libnull.la and .libs/libnull.so into your ~/.purple/plugins
-directory. Then run Pidgin.
+source distribution. Then cd libpurple/protocols/null and then make.  To
+install, run make install.  Then run Pidgin.
 
-To build nullprpl on Windows (with Cygwin/MinGW), use Makefile.mingw.
+To build nullprpl on Windows (with Cygwin/MinGW), use: make -f Makefile.mingw
 
 -----
 USAGE
--- a/libpurple/protocols/null/nullprpl.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/null/nullprpl.c	Wed Mar 04 16:52:47 2009 +0000
@@ -220,25 +220,7 @@
  */
 static const char *nullprpl_list_icon(PurpleAccount *acct, PurpleBuddy *buddy)
 {
-  /* shamelessly steal (er, borrow) the meanwhile protocol icon. it's cute! */
-  return "meanwhile";
-}
-
-static const char *nullprpl_list_emblem(PurpleBuddy *buddy)
-{
-  const char* emblem;
-
-  if (get_nullprpl_gc(buddy->name)) {
-    PurplePresence *presence = purple_buddy_get_presence(buddy);
-    PurpleStatus *status = purple_presence_get_active_status(presence);
-    emblem = purple_status_get_name(status);
-  } else {
-    emblem = "offline";
-  }
-
-  purple_debug_info("nullprpl", "using emblem %s for %s's buddy %s\n",
-                    emblem, buddy->account->username, buddy->name);
-  return emblem;
+  return "null";
 }
 
 static char *nullprpl_status_text(PurpleBuddy *buddy) {
@@ -304,22 +286,22 @@
                     acct->username,
                     NULL_STATUS_ONLINE, NULL_STATUS_AWAY, NULL_STATUS_OFFLINE);
 
-  type = purple_status_type_new(PURPLE_STATUS_AVAILABLE, NULL_STATUS_ONLINE,
-                                NULL_STATUS_ONLINE, TRUE);
-  purple_status_type_add_attr(type, "message", _("Online"),
-                              purple_value_new(PURPLE_TYPE_STRING));
+  type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
+      NULL_STATUS_ONLINE, NULL, TRUE, TRUE, FALSE,
+      "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+      NULL);
   types = g_list_prepend(types, type);
 
-  type = purple_status_type_new(PURPLE_STATUS_AWAY, NULL_STATUS_AWAY,
-                                NULL_STATUS_AWAY, TRUE);
-  purple_status_type_add_attr(type, "message", _("Away"),
-                              purple_value_new(PURPLE_TYPE_STRING));
+  type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
+      NULL_STATUS_AWAY, NULL, TRUE, TRUE, FALSE,
+      "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+      NULL);
   types = g_list_prepend(types, type);
-  
-  type = purple_status_type_new(PURPLE_STATUS_OFFLINE, NULL_STATUS_OFFLINE,
-                                NULL_STATUS_OFFLINE, TRUE);
-  purple_status_type_add_attr(type, "message", _("Offline"),
-                              purple_value_new(PURPLE_TYPE_STRING));
+
+  type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
+      NULL_STATUS_OFFLINE, NULL, TRUE, TRUE, FALSE,
+      "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+      NULL);
   types = g_list_prepend(types, type);
 
   return g_list_reverse(types);
@@ -1073,7 +1055,7 @@
       PURPLE_ICON_SCALE_DISPLAY,       /* scale_rules */
   },
   nullprpl_list_icon,                  /* list_icon */
-  nullprpl_list_emblem,                /* list_emblem */
+  NULL,                                /* list_emblem */
   nullprpl_status_text,                /* status_text */
   nullprpl_tooltip_text,               /* tooltip_text */
   nullprpl_status_types,               /* status_types */
@@ -1130,24 +1112,24 @@
   NULL,                                /* whiteboard_prpl_ops */
   NULL,                                /* send_raw */
   NULL,                                /* roomlist_room_serialize */
-  NULL,                                /* padding... */
-  NULL,
-  NULL,
-	sizeof(PurplePluginProtocolInfo),    /* struct_size */
-  NULL
+  NULL,	                               /* unregister_user */
+  NULL,                                /* send_attention */
+  NULL,                                /* attention_types */
+  sizeof(PurplePluginProtocolInfo),    /* struct_size */
+  NULL,                                /* get_account_text_table */
 };
 
 static void nullprpl_init(PurplePlugin *plugin)
 {
   /* see accountopt.h for information about user splits and protocol options */
   PurpleAccountUserSplit *split = purple_account_user_split_new(
-    _("Example user split (unused)"),  /* text shown to user */
-    "default",                         /* default value */
-    '@');                              /* field separator */
+    _("Example user split"),  /* text shown to user */
+    "default",                /* default value */
+    '@');                     /* field separator */
   PurpleAccountOption *option = purple_account_option_string_new(
-    _("Example option (unused)"),      /* text shown to user */
-    "example",                         /* pref name */
-    "default");                        /* default value */
+    _("Example option"),      /* text shown to user */
+    "example",                /* pref name */
+    "default");               /* default value */
 
   purple_debug_info("nullprpl", "starting up\n");
 
@@ -1156,13 +1138,13 @@
 
   /* register whisper chat command, /msg */
   purple_cmd_register("msg",
-                    "ws",                /* args: recipient and message */
+                    "ws",                  /* args: recipient and message */
                     PURPLE_CMD_P_DEFAULT,  /* priority */
                     PURPLE_CMD_FLAG_CHAT,
                     "prpl-null",
                     send_whisper,
                     "msg &lt;username&gt; &lt;message&gt;: send a private message, aka a whisper",
-                    NULL);               /* userdata */
+                    NULL);                 /* userdata */
 
   /* get ready to store offline messages */
   goffline_messages = g_hash_table_new_full(g_str_hash,  /* hash fn */
@@ -1189,12 +1171,12 @@
   NULL,                                                    /* dependencies */
   PURPLE_PRIORITY_DEFAULT,                                 /* priority */
   NULLPRPL_ID,                                             /* id */
-  "Nullprpl",                                              /* name */
-  "0.3",                                                   /* version */
-  "Null Protocol Plugin",                                  /* summary */
-  "Null Protocol Plugin",                                  /* description */
-  "Ryan Barrett <nullprpl@ryanb.org>",                     /* author */
-  "http://snarfed.org/space/pidgin+null+protocol+plugin",  /* homepage */
+  "Null - Testing Plugin",                                 /* name */
+  DISPLAY_VERSION,                                         /* version */
+  N_("Null Protocol Plugin"),                              /* summary */
+  N_("Null Protocol Plugin"),                              /* description */
+  NULL,                                                    /* author */
+  PURPLE_WEBSITE,                                          /* homepage */
   NULL,                                                    /* load */
   NULL,                                                    /* unload */
   nullprpl_destroy,                                        /* destroy */
--- a/libpurple/protocols/oscar/family_admin.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_admin.c	Wed Mar 04 16:52:47 2009 +0000
@@ -21,9 +21,8 @@
 /*
  * Family 0x0007 - Account Administration.
  *
- * Used for stuff like changing the formating of your screen name, changing your
+ * Used for stuff like changing the formating of your username, changing your
  * email address, requesting an account confirmation email, getting account info,
- *
  */
 
 #include "oscar.h"
@@ -32,7 +31,7 @@
  * Subtype 0x0002 - Request a bit of account info.
  *
  * Info should be one of the following:
- * 0x0001 - Screen name formatting
+ * 0x0001 - Username formatting
  * 0x0011 - Email address
  * 0x0013 - Unknown
  */
@@ -111,7 +110,7 @@
 }
 
 /**
- * Subtype 0x0004 - Set screenname formatting.
+ * Subtype 0x0004 - Set the formatting of username (change spaces and capitalization).
  */
 void
 aim_admin_setnick(OscarData *od, FlapConnection *conn, const char *newnick)
--- a/libpurple/protocols/oscar/family_alert.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_alert.c	Wed Mar 04 16:52:47 2009 +0000
@@ -22,10 +22,10 @@
  * Family 0x0018 - Email notification
  *
  * Used for being alerted when the email address(es) associated with
- * your screen name get new electronic-m.  For normal AIM accounts, you
- * get the email address screenname@netscape.net.  AOL accounts have
- * screenname@aol.com, and can also activate a netscape.net account.
- *
+ * your username get new electronic-m.  For normal AIM accounts, you
+ * get the email address username@netscape.net.  AOL accounts have
+ * username@aol.com, and can also activate a netscape.net account.
+ * Note: This information might be out of date.
  */
 
 #include "oscar.h"
@@ -88,7 +88,7 @@
  * but this is coded so it will handle that, and handle it well.
  * This tells you if you have unread mail or not, the URL you
  * should use to access that mail, and the domain name for the
- * email account (screenname@domainname.com).  If this is the
+ * email account (username@domainname.com).  If this is the
  * first 0x0007 SNAC you've received since you signed on, or if
  * this is just a periodic status update, this will also contain
  * the number of unread emails that you have.
--- a/libpurple/protocols/oscar/family_auth.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_auth.c	Wed Mar 04 16:52:47 2009 +0000
@@ -229,7 +229,7 @@
 
 	/* Truncate ICQ and AOL passwords, if necessary */
 	password_len = strlen(password);
-	if (aim_snvalid_icq(sn) && (password_len > MAXICQPASSLEN))
+	if (oscar_util_valid_name_icq(sn) && (password_len > MAXICQPASSLEN))
 		password_len = MAXICQPASSLEN;
 	else if (truncate_pass && password_len > 8)
 		password_len = 8;
@@ -293,11 +293,11 @@
 	tlvlist = aim_tlvlist_read(bs);
 
 	/*
-	 * No matter what, we should have a screen name.
+	 * No matter what, we should have a username.
 	 */
 	if (aim_tlv_gettlv(tlvlist, 0x0001, 1)) {
-		info->sn = aim_tlv_getstr(tlvlist, 0x0001, 1);
-		purple_connection_set_display_name(od->gc, info->sn);
+		info->bn = aim_tlv_getstr(tlvlist, 0x0001, 1);
+		purple_connection_set_display_name(od->gc, info->bn);
 	}
 
 	/*
@@ -394,7 +394,7 @@
 
 #if 0
 	/*
-	 * Unknown.  Seen on an @mac.com screen name with value of 0x003f
+	 * Unknown.  Seen on an @mac.com username with value of 0x003f
 	 */
 	if (aim_tlv_gettlv(tlvlist, 0x0055, 1)) {
 		/* Unhandled */
@@ -421,7 +421,7 @@
  *   - connect
  *   - server sends flap version
  *   - client sends flap version
- *   - client sends screen name (17/6)
+ *   - client sends username (17/6)
  *   - server sends hash key (17/7)
  *   - client sends auth request (17/2 -- aim_send_login)
  *   - server yells
@@ -460,7 +460,7 @@
  * Subtype 0x0006
  *
  * In AIM 3.5 protocol, the first stage of login is to request login from the
- * Authorizer, passing it the screen name for verification.  If the name is
+ * Authorizer, passing it the username for verification.  If the name is
  * invalid, a 0017/0003 is spit back, with the standard error contents.  If
  * valid, a 0017/0007 comes back, which is the signal to send it the main
  * login command (0017/0002).
@@ -527,7 +527,7 @@
 	/*
 	 * If the truncate_pass TLV exists then we should truncate the
 	 * user's password to 8 characters.  This flag is sent to us
-	 * when logging in with an AOL user's screen name.
+	 * when logging in with an AOL user's username.
 	 */
 	truncate_pass = aim_tlv_gettlv(tlvlist, 0x0026, 1) != NULL;
 
@@ -597,7 +597,7 @@
 {
 	if (od->authinfo != NULL)
 	{
-		g_free(od->authinfo->sn);
+		g_free(od->authinfo->bn);
 		g_free(od->authinfo->bosip);
 		g_free(od->authinfo->errorurl);
 		g_free(od->authinfo->email);
--- a/libpurple/protocols/oscar/family_bart.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_bart.c	Wed Mar 04 16:52:47 2009 +0000
@@ -90,26 +90,26 @@
  * Subtype 0x0004 - Request someone's icon.
  *
  * @param od The oscar session.
- * @param sn The screen name of the person who's icon you are requesting.
+ * @param bn The name of the buddy whose icon you are requesting.
  * @param iconcsum The MD5 checksum of the icon you are requesting.
  * @param iconcsumlen Length of the MD5 checksum given above.  Should be 10 bytes.
  * @return Return 0 if no errors, otherwise return the error number.
  */
 int
-aim_bart_request(OscarData *od, const char *sn, guint8 iconcsumtype, const guint8 *iconcsum, guint16 iconcsumlen)
+aim_bart_request(OscarData *od, const char *bn, guint8 iconcsumtype, const guint8 *iconcsum, guint16 iconcsumlen)
 {
 	FlapConnection *conn;
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_BART)) || !sn || !strlen(sn) || !iconcsum || !iconcsumlen)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_BART)) || !bn || !strlen(bn) || !iconcsum || !iconcsumlen)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 1+strlen(sn) + 4 + 1+iconcsumlen);
+	byte_stream_new(&bs, 1+strlen(bn) + 4 + 1+iconcsumlen);
 
-	/* Screen name */
-	byte_stream_put8(&bs, strlen(sn));
-	byte_stream_putstr(&bs, sn);
+	/* Buddy name */
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
 	/* Some numbers.  You like numbers, right? */
 	byte_stream_put8(&bs, 0x01);
@@ -138,11 +138,11 @@
 {
 	int ret = 0;
 	aim_rxcallback_t userfunc;
-	char *sn;
+	char *bn;
 	guint16 flags, iconlen;
 	guint8 iconcsumtype, iconcsumlen, *iconcsum, *icon;
 
-	sn = byte_stream_getstr(bs, byte_stream_get8(bs));
+	bn = byte_stream_getstr(bs, byte_stream_get8(bs));
 	flags = byte_stream_get16(bs);
 	iconcsumtype = byte_stream_get8(bs);
 	iconcsumlen = byte_stream_get8(bs);
@@ -151,9 +151,9 @@
 	icon = byte_stream_getraw(bs, iconlen);
 
 	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-		ret = userfunc(od, conn, frame, sn, iconcsumtype, iconcsum, iconcsumlen, icon, iconlen);
+		ret = userfunc(od, conn, frame, bn, iconcsumtype, iconcsum, iconcsumlen, icon, iconlen);
 
-	g_free(sn);
+	g_free(bn);
 	g_free(iconcsum);
 	g_free(icon);
 
--- a/libpurple/protocols/oscar/family_bos.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_bos.c	Wed Mar 04 16:52:47 2009 +0000
@@ -94,8 +94,7 @@
  *  AIM_VISIBILITYCHANGE_DENYADD: Hides you from provided list of names
  *  AIM_VISIBILITYCHANGE_DENYREMOVE: Lets list see you again
  *
- * list should be a list of
- * screen names in the form "Screen Name One&ScreenNameTwo&" etc.
+ * list should be a list of "Buddy Name One&BuddyNameTwo&" etc.
  *
  * Equivelents to options in WinAIM:
  *   - Allow all users to contact me: Send an AIM_VISIBILITYCHANGE_DENYADD
--- a/libpurple/protocols/oscar/family_buddy.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_buddy.c	Wed Mar 04 16:52:47 2009 +0000
@@ -121,7 +121,7 @@
  *
  * This just builds the "set buddy list" command then queues it.
  *
- * buddy_list = "Screen Name One&ScreenNameTwo&";
+ * buddy_list = "Buddy Name One&BuddyNameTwo&";
  *
  * XXX Clean this up.
  *
@@ -222,7 +222,7 @@
 		ret = userfunc(od, conn, frame, &userinfo);
 
 	if (snac->subtype == SNAC_SUBTYPE_BUDDY_ONCOMING && userinfo.flags & AIM_FLAG_AWAY)
-		aim_locate_autofetch_away_message(od, userinfo.sn);
+		aim_locate_autofetch_away_message(od, userinfo.bn);
 
 	aim_info_free(&userinfo);
 
--- a/libpurple/protocols/oscar/family_feedbag.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_feedbag.c	Wed Mar 04 16:52:47 2009 +0000
@@ -243,7 +243,7 @@
 	if (!cur1->name && cur2->name)
 		return 6;
 
-	if (cur1->name && cur2->name && aim_sncmp(cur1->name, cur2->name))
+	if (cur1->name && cur2->name && oscar_util_name_compare(cur1->name, cur2->name))
 		return 7;
 
 	if (cur1->gid != cur2->gid)
@@ -285,8 +285,8 @@
 }
 
 /**
- * Locally find an item given a group name, screen name, and type.  If group name
- * and screen name are null, then just return the first item of the given type.
+ * Locally find an item given a group name, buddy name, and type.  If group name
+ * and buddy name are null, then just return the first item of the given type.
  *
  * @param list A pointer to the current list of items.
  * @param gn The group name of the desired item.
@@ -294,31 +294,31 @@
  * @param type The type of the desired item.
  * @return Return a pointer to the item if found, else return NULL.
  */
-struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, guint16 type)
+struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *bn, guint16 type)
 {
 	struct aim_ssi_item *cur;
 	if (!list)
 		return NULL;
 
-	if (gn && sn) { /* For finding buddies in groups */
+	if (gn && bn) { /* For finding buddies in groups */
 		for (cur=list; cur; cur=cur->next)
-			if ((cur->type == type) && (cur->name) && !(aim_sncmp(cur->name, sn))) {
+			if ((cur->type == type) && (cur->name) && !(oscar_util_name_compare(cur->name, bn))) {
 				struct aim_ssi_item *curg;
 				for (curg=list; curg; curg=curg->next)
-					if ((curg->type == AIM_SSI_TYPE_GROUP) && (curg->gid == cur->gid) && (curg->name) && !(aim_sncmp(curg->name, gn)))
+					if ((curg->type == AIM_SSI_TYPE_GROUP) && (curg->gid == cur->gid) && (curg->name) && !(oscar_util_name_compare(curg->name, gn)))
 						return cur;
 			}
 
 	} else if (gn) { /* For finding groups */
 		for (cur=list; cur; cur=cur->next) {
-			if ((cur->type == type) && (cur->bid == 0x0000) && (cur->name) && !(aim_sncmp(cur->name, gn))) {
+			if ((cur->type == type) && (cur->bid == 0x0000) && (cur->name) && !(oscar_util_name_compare(cur->name, gn))) {
 				return cur;
 			}
 		}
 
-	} else if (sn) { /* For finding permits, denies, and ignores */
+	} else if (bn) { /* For finding permits, denies, and ignores */
 		for (cur=list; cur; cur=cur->next) {
-			if ((cur->type == type) && (cur->name) && !(aim_sncmp(cur->name, sn))) {
+			if ((cur->type == type) && (cur->name) && !(oscar_util_name_compare(cur->name, bn))) {
 				return cur;
 			}
 		}
@@ -336,14 +336,14 @@
  * Check if the given buddy exists in any group in the buddy list.
  *
  * @param list A pointer to the current list of items.
- * @param sn The group name of the desired item.
+ * @param bn The group name of the desired item.
  * @return Return a pointer to the name of the item if found, else return NULL;
  */
-struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *sn)
+struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *bn)
 {
-	if (!sn)
+	if (!bn)
 		return NULL;
-	return aim_ssi_itemlist_finditem(list, NULL, sn, AIM_SSI_TYPE_BUDDY);
+	return aim_ssi_itemlist_finditem(list, NULL, bn, AIM_SSI_TYPE_BUDDY);
 }
 
 /**
@@ -353,12 +353,12 @@
  * @param bn The buddy name of the desired item.
  * @return Return a pointer to the name of the item if found, else return NULL;
  */
-char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *sn)
+char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *bn)
 {
 	struct aim_ssi_item *cur, *curg;
-	if (!list || !sn)
+	if (!list || !bn)
 		return NULL;
-	if (!(cur = aim_ssi_itemlist_exists(list, sn)))
+	if (!(cur = aim_ssi_itemlist_exists(list, bn)))
 		return NULL;
 	if (!(curg = aim_ssi_itemlist_find(list, cur->gid, 0x0000)))
 		return NULL;
@@ -406,14 +406,14 @@
  *
  * @param list A pointer to the current list of items.
  * @param gn The group of the buddy.
- * @param sn The name of the buddy.
+ * @param bn The name of the buddy.
  * @return A pointer to a NULL terminated string that is the buddy's
  *         alias, or NULL if the buddy has no alias.  You should free
  *         this returned value!
  */
-char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn)
+char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *bn)
 {
-	struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY);
+	struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, bn, AIM_SSI_TYPE_BUDDY);
 	if (cur) {
 		aim_tlv_t *tlv = aim_tlv_gettlv(cur->data, 0x0131, 1);
 		if (tlv && tlv->length)
@@ -427,14 +427,14 @@
  *
  * @param list A pointer to the current list of items.
  * @param gn The group of the buddy.
- * @param sn The name of the buddy.
+ * @param bn The name of the buddy.
  * @return A pointer to a NULL terminated string that is the buddy's
  *         comment, or NULL if the buddy has no comment.  You should free
  *         this returned value!
  */
-char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *sn)
+char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *bn)
 {
-	struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY);
+	struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, bn, AIM_SSI_TYPE_BUDDY);
 	if (cur) {
 		aim_tlv_t *tlv = aim_tlv_gettlv(cur->data, 0x013c, 1);
 		if (tlv && tlv->length) {
@@ -449,12 +449,12 @@
  *
  * @param list A pointer to the current list of items.
  * @param gn The group of the buddy.
- * @param sn The name of the buddy.
+ * @param bn The name of the buddy.
  * @return 1 if you are waiting for authorization; 0 if you are not
  */
-gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *sn)
+gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *bn)
 {
-	struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, sn, AIM_SSI_TYPE_BUDDY);
+	struct aim_ssi_item *cur = aim_ssi_itemlist_finditem(list, gn, bn, AIM_SSI_TYPE_BUDDY);
 	if (cur) {
 		if (aim_tlv_gettlv(cur->data, 0x0066, 1))
 			return TRUE;
@@ -678,7 +678,7 @@
 			cur2 = cur->next;
 			while (cur2) {
 				next2 = cur2->next;
-				if ((cur->type == cur2->type) && (cur->gid == cur2->gid) && (cur->name != NULL) && (cur2->name != NULL) && (!aim_sncmp(cur->name, cur2->name))) {
+				if ((cur->type == cur2->type) && (cur->gid == cur2->gid) && (cur->name != NULL) && (cur2->name != NULL) && (!oscar_util_name_compare(cur->name, cur2->name))) {
 					aim_ssi_itemlist_del(&od->ssi.local, cur2);
 				}
 				cur2 = next2;
@@ -916,16 +916,16 @@
  * @param od The oscar odion.
  * @param oldgn The group that the buddy is currently in.
  * @param newgn The group that the buddy should be moved in to.
- * @param sn The name of the buddy to be moved.
+ * @param bn The name of the buddy to be moved.
  * @return Return 0 if no errors, otherwise return the error number.
  */
-int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *sn)
+int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *bn)
 {
 	struct aim_ssi_item *buddy;
 	GSList *data;
 
 	/* Find the buddy */
-	buddy = aim_ssi_itemlist_finditem(od->ssi.local, oldgn, sn, AIM_SSI_TYPE_BUDDY);
+	buddy = aim_ssi_itemlist_finditem(od->ssi.local, oldgn, bn, AIM_SSI_TYPE_BUDDY);
 	if (buddy == NULL)
 		return -EINVAL;
 
@@ -933,10 +933,10 @@
 	data = aim_tlvlist_copy(buddy->data);
 
 	/* Delete the old item */
-	aim_ssi_delbuddy(od, sn, oldgn);
+	aim_ssi_delbuddy(od, bn, oldgn);
 
 	/* Add the new item using the EXACT SAME TLV list */
-	aim_ssi_addbuddy(od, sn, newgn, data, NULL, NULL, NULL, FALSE);
+	aim_ssi_addbuddy(od, bn, newgn, data, NULL, NULL, NULL, FALSE);
 
 	return 0;
 }
@@ -946,19 +946,19 @@
  *
  * @param od The oscar odion.
  * @param gn The group that the buddy is currently in.
- * @param sn The screen name of the buddy.
+ * @param bn The name of the buddy.
  * @param alias The new alias for the buddy, or NULL if you want to remove
  *        a buddy's comment.
  * @return Return 0 if no errors, otherwise return the error number.
  */
-int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *sn, const char *alias)
+int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *bn, const char *alias)
 {
 	struct aim_ssi_item *tmp;
 
-	if (!od || !gn || !sn)
+	if (!od || !gn || !bn)
 		return -EINVAL;
 
-	if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, sn, AIM_SSI_TYPE_BUDDY)))
+	if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, bn, AIM_SSI_TYPE_BUDDY)))
 		return -EINVAL;
 
 	/* Either add or remove the 0x0131 TLV from the TLV chain */
@@ -976,19 +976,19 @@
  *
  * @param od The oscar odion.
  * @param gn The group that the buddy is currently in.
- * @param sn The screen name of the buddy.
+ * @param bn The name of the buddy.
  * @param alias The new comment for the buddy, or NULL if you want to remove
  *        a buddy's comment.
  * @return Return 0 if no errors, otherwise return the error number.
  */
-int aim_ssi_editcomment(OscarData *od, const char *gn, const char *sn, const char *comment)
+int aim_ssi_editcomment(OscarData *od, const char *gn, const char *bn, const char *comment)
 {
 	struct aim_ssi_item *tmp;
 
-	if (!od || !gn || !sn)
+	if (!od || !gn || !bn)
 		return -EINVAL;
 
-	if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, sn, AIM_SSI_TYPE_BUDDY)))
+	if (!(tmp = aim_ssi_itemlist_finditem(od->ssi.local, gn, bn, AIM_SSI_TYPE_BUDDY)))
 		return -EINVAL;
 
 	/* Either add or remove the 0x0131 TLV from the TLV chain */
@@ -1681,20 +1681,20 @@
  * Authorizes a contact so they can add you to their contact list.
  *
  */
-int aim_ssi_sendauth(OscarData *od, char *sn, char *msg)
+int aim_ssi_sendauth(OscarData *od, char *bn, char *msg)
 {
 	FlapConnection *conn;
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !sn)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !bn)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 1+strlen(sn) + 2+(msg ? strlen(msg)+1 : 0) + 2);
+	byte_stream_new(&bs, 1+strlen(bn) + 2+(msg ? strlen(msg)+1 : 0) + 2);
 
-	/* Screen name */
-	byte_stream_put8(&bs, strlen(sn));
-	byte_stream_putstr(&bs, sn);
+	/* Username */
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
 	/* Message (null terminated) */
 	byte_stream_put16(&bs, msg ? strlen(msg) : 0);
@@ -1722,13 +1722,13 @@
 	int ret = 0;
 	aim_rxcallback_t userfunc;
 	guint16 tmp;
-	char *sn, *msg;
+	char *bn, *msg;
 
-	/* Read screen name */
+	/* Read buddy name */
 	if ((tmp = byte_stream_get8(bs)))
-		sn = byte_stream_getstr(bs, tmp);
+		bn = byte_stream_getstr(bs, tmp);
 	else
-		sn = NULL;
+		bn = NULL;
 
 	/* Read message (null terminated) */
 	if ((tmp = byte_stream_get16(bs)))
@@ -1740,9 +1740,9 @@
 	tmp = byte_stream_get16(bs);
 
 	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-		ret = userfunc(od, conn, frame, sn, msg);
+		ret = userfunc(od, conn, frame, bn, msg);
 
-	g_free(sn);
+	g_free(bn);
 	g_free(msg);
 
 	return ret;
@@ -1755,20 +1755,20 @@
  * granted, denied, or dropped.
  *
  */
-int aim_ssi_sendauthrequest(OscarData *od, char *sn, const char *msg)
+int aim_ssi_sendauthrequest(OscarData *od, char *bn, const char *msg)
 {
 	FlapConnection *conn;
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !sn)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !bn)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 1+strlen(sn) + 2+(msg ? strlen(msg)+1 : 0) + 2);
+	byte_stream_new(&bs, 1+strlen(bn) + 2+(msg ? strlen(msg)+1 : 0) + 2);
 
-	/* Screen name */
-	byte_stream_put8(&bs, strlen(sn));
-	byte_stream_putstr(&bs, sn);
+	/* Username */
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
 	/* Message (null terminated) */
 	byte_stream_put16(&bs, msg ? strlen(msg) : 0);
@@ -1796,13 +1796,13 @@
 	int ret = 0;
 	aim_rxcallback_t userfunc;
 	guint16 tmp;
-	char *sn, *msg;
+	char *bn, *msg;
 
-	/* Read screen name */
+	/* Read buddy name */
 	if ((tmp = byte_stream_get8(bs)))
-		sn = byte_stream_getstr(bs, tmp);
+		bn = byte_stream_getstr(bs, tmp);
 	else
-		sn = NULL;
+		bn = NULL;
 
 	/* Read message (null terminated) */
 	if ((tmp = byte_stream_get16(bs)))
@@ -1814,9 +1814,9 @@
 	tmp = byte_stream_get16(bs);
 
 	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-		ret = userfunc(od, conn, frame, sn, msg);
+		ret = userfunc(od, conn, frame, bn, msg);
 
-	g_free(sn);
+	g_free(bn);
 	g_free(msg);
 
 	return ret;
@@ -1832,20 +1832,20 @@
  * if reply=0x01 then grant
  *
  */
-int aim_ssi_sendauthreply(OscarData *od, char *sn, guint8 reply, const char *msg)
+int aim_ssi_sendauthreply(OscarData *od, char *bn, guint8 reply, const char *msg)
 {
 	FlapConnection *conn;
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !sn)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_FEEDBAG)) || !bn)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 1+strlen(sn) + 1 + 2+(msg ? (strlen(msg)+1) : 0) + 2);
+	byte_stream_new(&bs, 1+strlen(bn) + 1 + 2+(msg ? (strlen(msg)+1) : 0) + 2);
 
-	/* Screen name */
-	byte_stream_put8(&bs, strlen(sn));
-	byte_stream_putstr(&bs, sn);
+	/* Username */
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
 	/* Grant or deny */
 	byte_stream_put8(&bs, reply);
@@ -1880,13 +1880,13 @@
 	aim_rxcallback_t userfunc;
 	guint16 tmp;
 	guint8 reply;
-	char *sn, *msg;
+	char *bn, *msg;
 
-	/* Read screen name */
+	/* Read buddy name */
 	if ((tmp = byte_stream_get8(bs)))
-		sn = byte_stream_getstr(bs, tmp);
+		bn = byte_stream_getstr(bs, tmp);
 	else
-		sn = NULL;
+		bn = NULL;
 
 	/* Read reply */
 	reply = byte_stream_get8(bs);
@@ -1901,9 +1901,9 @@
 	tmp = byte_stream_get16(bs);
 
 	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-		ret = userfunc(od, conn, frame, sn, reply, msg);
+		ret = userfunc(od, conn, frame, bn, reply, msg);
 
-	g_free(sn);
+	g_free(bn);
 	g_free(msg);
 
 	return ret;
@@ -1917,18 +1917,18 @@
 	int ret = 0;
 	aim_rxcallback_t userfunc;
 	guint16 tmp;
-	char *sn;
+	char *bn;
 
-	/* Read screen name */
+	/* Read buddy name */
 	if ((tmp = byte_stream_get8(bs)))
-		sn = byte_stream_getstr(bs, tmp);
+		bn = byte_stream_getstr(bs, tmp);
 	else
-		sn = NULL;
+		bn = NULL;
 
 	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-		ret = userfunc(od, conn, frame, sn);
+		ret = userfunc(od, conn, frame, bn);
 
-	g_free(sn);
+	g_free(bn);
 
 	return ret;
 }
--- a/libpurple/protocols/oscar/family_icbm.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_icbm.c	Wed Mar 04 16:52:47 2009 +0000
@@ -61,16 +61,16 @@
  * @param bs The bstream to write the ICBM header to.
  * @param c c is for cookie, and cookie is for me.
  * @param channel The ICBM channel (1 through 4).
- * @param sn Null-terminated scrizeen nizame.
+ * @param bn Null-terminated scrizeen nizame.
  * @return The number of bytes written.  It's really not useful.
  */
-static int aim_im_puticbm(ByteStream *bs, const guchar *c, guint16 channel, const char *sn)
+static int aim_im_puticbm(ByteStream *bs, const guchar *c, guint16 channel, const char *bn)
 {
 	byte_stream_putraw(bs, c, 8);
 	byte_stream_put16(bs, channel);
-	byte_stream_put8(bs, strlen(sn));
-	byte_stream_putstr(bs, sn);
-	return 8+2+1+strlen(sn);
+	byte_stream_put8(bs, strlen(bn));
+	byte_stream_putstr(bs, bn);
+	return 8+2+1+strlen(bn);
 }
 
 /**
@@ -324,7 +324,7 @@
 	aim_icbm_makecookie(cookie);
 
 	/* ICBM header */
-	aim_im_puticbm(&data, cookie, 0x0001, args->destsn);
+	aim_im_puticbm(&data, cookie, 0x0001, args->destbn);
 
 	/* Message TLV (type 0x0002) */
 	byte_stream_put16(&data, 0x0002);
@@ -410,7 +410,7 @@
 	}
 
 	/* XXX - should be optional */
-	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, args->destsn, strlen(args->destsn)+1);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, args->destbn, strlen(args->destbn)+1);
 
 	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0006, 0x0000, snacid, &data);
 	byte_stream_destroy(&data);
@@ -431,11 +431,11 @@
  * that requires an explicit message length.  Use aim_im_sendch1_ext().
  *
  */
-int aim_im_sendch1(OscarData *od, const char *sn, guint16 flags, const char *msg)
+int aim_im_sendch1(OscarData *od, const char *bn, guint16 flags, const char *msg)
 {
 	struct aim_sendimext_args args;
 
-	args.destsn = sn;
+	args.destbn = bn;
 	args.flags = flags;
 	args.msg = msg;
 	args.msglen = strlen(msg);
@@ -451,7 +451,7 @@
 /*
  * Subtype 0x0006 - Send a chat invitation.
  */
-int aim_im_sendch2_chatinvite(OscarData *od, const char *sn, const char *msg, guint16 exchange, const char *roomname, guint16 instance)
+int aim_im_sendch2_chatinvite(OscarData *od, const char *bn, const char *msg, guint16 exchange, const char *roomname, guint16 instance)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -465,18 +465,18 @@
 	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
-	if (!sn || !msg || !roomname)
+	if (!bn || !msg || !roomname)
 		return -EINVAL;
 
 	aim_icbm_makecookie(cookie);
 
-	byte_stream_new(&bs, 1142+strlen(sn)+strlen(roomname)+strlen(msg));
-
-	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, sn, strlen(sn)+1);
+	byte_stream_new(&bs, 1142+strlen(bn)+strlen(roomname)+strlen(msg));
+
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, bn, strlen(bn)+1);
 
 	/* XXX should be uncached by an unwritten 'invite accept' handler */
 	priv = g_malloc(sizeof(struct aim_invite_priv));
-	priv->sn = g_strdup(sn);
+	priv->bn = g_strdup(bn);
 	priv->roomname = g_strdup(roomname);
 	priv->exchange = exchange;
 	priv->instance = instance;
@@ -487,7 +487,7 @@
 		g_free(priv);
 
 	/* ICBM Header */
-	aim_im_puticbm(&bs, cookie, 0x0002, sn);
+	aim_im_puticbm(&bs, cookie, 0x0002, bn);
 
 	/*
 	 * TLV t(0005)
@@ -532,7 +532,7 @@
  * This is also performance sensitive. (If you can believe it...)
  *
  */
-int aim_im_sendch2_icon(OscarData *od, const char *sn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum)
+int aim_im_sendch2_icon(OscarData *od, const char *bn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -542,17 +542,17 @@
 	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
-	if (!sn || !icon || (iconlen <= 0) || (iconlen >= MAXICONLEN))
+	if (!bn || !icon || (iconlen <= 0) || (iconlen >= MAXICONLEN))
 		return -EINVAL;
 
 	aim_icbm_makecookie(cookie);
 
-	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);
+	byte_stream_new(&bs, 8+2+1+strlen(bn)+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, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, cookie, 0x0002, sn);
+	aim_im_puticbm(&bs, cookie, 0x0002, bn);
 
 	/*
 	 * TLV t(0005)
@@ -623,7 +623,7 @@
 	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
-	if (!args || !args->destsn || !args->rtfmsg)
+	if (!args || !args->destbn || !args->rtfmsg)
 		return -EINVAL;
 
 	servdatalen = 2+2+16+2+4+1+2  +  2+2+4+4+4  +  2+4+2+strlen(args->rtfmsg)+1  +  4+4+4+strlen(rtfcap)+1;
@@ -635,7 +635,7 @@
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, cookie, 0x0002, args->destsn);
+	aim_im_puticbm(&bs, cookie, 0x0002, args->destbn);
 
 	/* TLV t(0005) - Encompasses everything below. */
 	byte_stream_put16(&bs, 0x0005);
@@ -708,12 +708,12 @@
 	if (conn == NULL)
 		return;
 
-	byte_stream_new(&bs, 118+strlen(peer_conn->sn));
+	byte_stream_new(&bs, 118+strlen(peer_conn->bn));
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->sn);
+	aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->bn);
 
 	aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
 
@@ -757,12 +757,12 @@
 	if (conn == NULL)
 		return;
 
-	byte_stream_new(&bs, 11+strlen(peer_conn->sn) + 4+2+8+16);
+	byte_stream_new(&bs, 11+strlen(peer_conn->bn) + 4+2+8+16);
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->sn);
+	aim_im_puticbm(&bs, peer_conn->cookie, 0x0002, peer_conn->bn);
 
 	byte_stream_put16(&bs, 0x0005);
 	byte_stream_put16(&bs, 0x001a);
@@ -783,7 +783,7 @@
  * "I want to connect through a proxy server"
  */
 void
-aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber)
+aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -795,12 +795,12 @@
 	if (conn == NULL)
 		return;
 
-	byte_stream_new(&bs, 246+strlen(sn));
+	byte_stream_new(&bs, 246+strlen(bn));
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, cookie, 0x0002, sn);
+	aim_im_puticbm(&bs, cookie, 0x0002, bn);
 
 	aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
 
@@ -835,7 +835,7 @@
  * remote user to connect to us via a proxy server.
  */
 void
-aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber)
+aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -848,12 +848,12 @@
 	if (conn == NULL)
 		return;
 
-	byte_stream_new(&bs, 246+strlen(sn));
+	byte_stream_new(&bs, 246+strlen(bn));
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, cookie, 0x0002, sn);
+	aim_im_puticbm(&bs, cookie, 0x0002, bn);
 
 	aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
 
@@ -898,7 +898,7 @@
  *
  */
 void
-aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles)
+aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -915,7 +915,7 @@
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, cookie, 0x0002, sn);
+	aim_im_puticbm(&bs, cookie, 0x0002, bn);
 
 	aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
 
@@ -981,7 +981,7 @@
  * remote user to connect to us via a proxy server.
  */
 void
-aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles)
+aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -999,7 +999,7 @@
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, cookie, 0x0002, sn);
+	aim_im_puticbm(&bs, cookie, 0x0002, bn);
 
 	aim_tlvlist_add_noval(&outer_tlvlist, 0x0003);
 
@@ -1073,29 +1073,29 @@
  * Subtype 0x0006 - Request the status message of the given ICQ user.
  *
  * @param od The oscar session.
- * @param sn The UIN of the user of whom you wish to request info.
+ * @param bn The UIN of the user of whom you wish to request info.
  * @param type The type of info you wish to request.  This should be the current
  *        state of the user, as one of the AIM_ICQ_STATE_* defines.
  * @return Return 0 if no errors, otherwise return the error number.
  */
-int aim_im_sendch2_geticqaway(OscarData *od, const char *sn, int type)
+int aim_im_sendch2_geticqaway(OscarData *od, const char *bn, int type)
 {
 	FlapConnection *conn;
 	ByteStream bs;
 	aim_snacid_t snacid;
 	guchar cookie[8];
 
-	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)) || !sn)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)) || !bn)
 		return -EINVAL;
 
 	aim_icbm_makecookie(cookie);
 
-	byte_stream_new(&bs, 8+2+1+strlen(sn) + 4+0x5e + 4);
+	byte_stream_new(&bs, 8+2+1+strlen(bn) + 4+0x5e + 4);
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, cookie, 0x0002, sn);
+	aim_im_puticbm(&bs, cookie, 0x0002, bn);
 
 	/* TLV t(0005) - Encompasses almost everything below. */
 	byte_stream_put16(&bs, 0x0005); /* T */
@@ -1176,12 +1176,12 @@
  * but thats ok, because it gives me time to try to figure out what kind of drugs the AOL people
  * were taking when they merged the two protocols.
  *
- * @param sn The destination screen name.
+ * @param bn The destination buddy name.
  * @param type The type of message.  0x0007 for authorization denied.  0x0008 for authorization granted.
  * @param message The message you want to send, it should be null terminated.
  * @return Return 0 if no errors, otherwise return the error number.
  */
-int aim_im_sendch4(OscarData *od, const char *sn, guint16 type, const char *message)
+int aim_im_sendch4(OscarData *od, const char *bn, guint16 type, const char *message)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -1191,17 +1191,17 @@
 	if (!od || !(conn = flap_connection_findbygroup(od, 0x0002)))
 		return -EINVAL;
 
-	if (!sn || !type || !message)
+	if (!bn || !type || !message)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 8+3+strlen(sn)+12+strlen(message)+1+4);
+	byte_stream_new(&bs, 8+3+strlen(bn)+12+strlen(message)+1+4);
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0006, 0x0000, NULL, 0);
 
 	aim_icbm_makecookie(cookie);
 
 	/* ICBM header */
-	aim_im_puticbm(&bs, cookie, 0x0004, sn);
+	aim_im_puticbm(&bs, cookie, 0x0004, bn);
 
 	/*
 	 * TLV t(0005)
@@ -1246,8 +1246,8 @@
 	guchar cookie[8];
 	guint16 channel;
 	GSList *tlvlist;
-	char *sn;
-	int snlen;
+	char *bn;
+	int bnlen;
 	guint16 icbmflags = 0;
 	guint8 flag1 = 0, flag2 = 0;
 	gchar *msg = NULL;
@@ -1264,8 +1264,8 @@
 		return 0;
 	}
 
-	snlen = byte_stream_get8(bs);
-	sn = byte_stream_getstr(bs, snlen);
+	bnlen = byte_stream_get8(bs);
+	bn = byte_stream_getstr(bs, bnlen);
 
 	tlvlist = aim_tlvlist_read(bs);
 
@@ -1296,9 +1296,9 @@
 	}
 
 	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-		ret = userfunc(od, conn, frame, channel, sn, msg, icbmflags, flag1, flag2);
-
-	g_free(sn);
+		ret = userfunc(od, conn, frame, channel, bn, msg, icbmflags, flag1, flag2);
+
+	g_free(bn);
 	g_free(msg);
 	aim_tlvlist_free(tlvlist);
 
@@ -1480,7 +1480,7 @@
 		msglen = byte_stream_get16(&mbs);
 		if (msglen > byte_stream_empty(&mbs))
 		{
-			purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->sn);
+			purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->bn);
 			break;
 		}
 
@@ -1589,7 +1589,7 @@
 
 		if (length > byte_stream_empty(bs))
 		{
-			purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->sn);
+			purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->bn);
 			break;
 		}
 
@@ -1625,14 +1625,14 @@
 
 			if (magic1 != 0x501)
 			{
-				purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->sn);
+				purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->bn);
 				break;
 			}
 
 			args.featureslen = byte_stream_get16(bs);
 			if (args.featureslen > byte_stream_empty(bs))
 			{
-				purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->sn);
+				purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->bn);
 				break;
 			}
 			if (args.featureslen == 0)
@@ -1654,7 +1654,7 @@
 			magic1 = byte_stream_get16(bs); /* 01 01 */
 			if (magic1 != 0x101) /* Bad, message comes before attributes */
 			{
-				purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->sn);
+				purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->bn);
 				break;
 			}
 			msglen = byte_stream_get16(bs);
@@ -1721,7 +1721,7 @@
 
 			if (length > byte_stream_empty(bs))
 			{
-				purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->sn);
+				purple_debug_misc("oscar", "Received an IM containing an invalid message part from %s.  They are probably trying to do something malicious.\n", userinfo->bn);
 				break;
 			}
 			g_free(args.extdata);
@@ -1796,7 +1796,7 @@
 			bnlen = byte_stream_get16(servdata);
 			bn = byte_stream_getstr(servdata, bnlen);
 
-			purple_debug_misc("oscar", "got a buddy list from %s: group %s, buddy %s\n", userinfo->sn, gn, bn);
+			purple_debug_misc("oscar", "got a buddy list from %s: group %s, buddy %s\n", userinfo->bn, gn, bn);
 
 			g_free(bn);
 		}
@@ -2285,7 +2285,7 @@
 }
 
 /*
- * Subtype 0x0008 - Send a warning to sn.
+ * Subtype 0x0008 - Send a warning to bn.
  *
  * Flags:
  *  AIM_WARN_ANON  Send as an anonymous (doesn't count as much)
@@ -2293,21 +2293,21 @@
  * returns -1 on error (couldn't alloc packet), 0 on success.
  *
  */
-int aim_im_warn(OscarData *od, FlapConnection *conn, const char *sn, guint32 flags)
+int aim_im_warn(OscarData *od, FlapConnection *conn, const char *bn, guint32 flags)
 {
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !conn || !sn)
+	if (!od || !conn || !bn)
 		return -EINVAL;
 
-	byte_stream_new(&bs, strlen(sn)+3);
-
-	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0008, 0x0000, sn, strlen(sn)+1);
+	byte_stream_new(&bs, strlen(bn)+3);
+
+	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0008, 0x0000, bn, strlen(bn)+1);
 
 	byte_stream_put16(&bs, (flags & AIM_WARN_ANON) ? 0x0001 : 0x0000);
-	byte_stream_put8(&bs, strlen(sn));
-	byte_stream_putstr(&bs, sn);
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
 	flap_connection_send_snac(od, conn, SNAC_FAMILY_ICBM, 0x0008, 0x0000, snacid, &bs);
 
@@ -2349,7 +2349,7 @@
  *    AIM_TRANSFER_DENY_NOTACCEPTING -- "client is not accepting transfers"
  *
  */
-int aim_im_denytransfer(OscarData *od, const char *sn, const guchar *cookie, guint16 code)
+int aim_im_denytransfer(OscarData *od, const char *bn, const guchar *cookie, guint16 code)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -2359,15 +2359,15 @@
 	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_ICBM)))
 		return -EINVAL;
 
-	byte_stream_new(&bs, 8+2+1+strlen(sn)+6);
+	byte_stream_new(&bs, 8+2+1+strlen(bn)+6);
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x000b, 0x0000, NULL, 0);
 
 	byte_stream_putraw(&bs, cookie, 8);
 
 	byte_stream_put16(&bs, 0x0002); /* channel */
-	byte_stream_put8(&bs, strlen(sn));
-	byte_stream_putstr(&bs, sn);
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
 	aim_tlvlist_add_16(&tlvlist, 0x0003, code);
 	aim_tlvlist_write(&bs, &tlvlist);
@@ -2380,7 +2380,7 @@
 	return 0;
 }
 
-static void parse_status_note_text(OscarData *od, guchar *cookie, char *sn, ByteStream *bs)
+static void parse_status_note_text(OscarData *od, guchar *cookie, char *bn, ByteStream *bs)
 {
 	struct aim_icq_info *info;
 	struct aim_icq_info *prev_info;
@@ -2534,10 +2534,10 @@
 	g_free(status_note_text);
 	g_free(stripped_status_note_text);
 
-	buddy = purple_find_buddy(account, sn);
+	buddy = purple_find_buddy(account, bn);
 	if (buddy == NULL)
 	{
-		purple_debug_misc("oscar", "clientautoresp: buddy %s was not found.\n", sn);
+		purple_debug_misc("oscar", "clientautoresp: buddy %s was not found.\n", bn);
 		g_free(status_note);
 		return;
 	}
@@ -2548,7 +2548,7 @@
 	presence = purple_buddy_get_presence(buddy);
 	status = purple_presence_get_active_status(presence);
 
-	purple_prpl_got_user_status(account, sn,
+	purple_prpl_got_user_status(account, bn,
 			purple_status_get_id(status),
 			"message", status_note, NULL);
 
@@ -2565,26 +2565,26 @@
 	int ret = 0;
 	aim_rxcallback_t userfunc;
 	guint16 channel, reason;
-	char *sn;
+	char *bn;
 	guchar *cookie;
-	guint8 snlen;
+	guint8 bnlen;
 
 	cookie = byte_stream_getraw(bs, 8);
 	channel = byte_stream_get16(bs);
-	snlen = byte_stream_get8(bs);
-	sn = byte_stream_getstr(bs, snlen);
+	bnlen = byte_stream_get8(bs);
+	bn = byte_stream_getstr(bs, bnlen);
 	reason = byte_stream_get16(bs);
 
 	if (channel == 0x0002)
 	{
 		if (reason == 0x0003) /* channel-specific */
 			/* parse status note text */
-			parse_status_note_text(od, cookie, sn, bs);
+			parse_status_note_text(od, cookie, bn, bs);
 
 		byte_stream_get16(bs); /* Unknown */
 		byte_stream_get16(bs); /* Unknown */
 		if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-			ret = userfunc(od, conn, frame, channel, sn, reason, cookie);
+			ret = userfunc(od, conn, frame, channel, bn, reason, cookie);
 
 	} else if (channel == 0x0004) { /* ICQ message */
 		switch (reason) {
@@ -2629,20 +2629,20 @@
 				msg = byte_stream_getraw(bs, len);
 
 				if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-					ret = userfunc(od, conn, frame, channel, sn, reason, state, msg);
+					ret = userfunc(od, conn, frame, channel, bn, reason, state, msg);
 
 				g_free(msg);
 			} break;
 
 			default: {
 				if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-					ret = userfunc(od, conn, frame, channel, sn, reason);
+					ret = userfunc(od, conn, frame, channel, bn, reason);
 			} break;
 		} /* end switch */
 	}
 
 	g_free(cookie);
-	g_free(sn);
+	g_free(bn);
 
 	return ret;
 }
@@ -2660,17 +2660,17 @@
 	aim_rxcallback_t userfunc;
 	guint16 ch;
 	guchar *cookie;
-	char *sn;
+	char *bn;
 	int ret = 0;
 
 	cookie = byte_stream_getraw(bs, 8);
 	ch = byte_stream_get16(bs);
-	sn = byte_stream_getstr(bs, byte_stream_get8(bs));
+	bn = byte_stream_getstr(bs, byte_stream_get8(bs));
 
 	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-		ret = userfunc(od, conn, frame, ch, sn);
-
-	g_free(sn);
+		ret = userfunc(od, conn, frame, ch, bn);
+
+	g_free(bn);
 	g_free(cookie);
 
 	return ret;
@@ -2707,7 +2707,7 @@
  * and Purple 0.60 and newer.
  *
  */
-int aim_im_sendmtn(OscarData *od, guint16 type1, const char *sn, guint16 type2)
+int aim_im_sendmtn(OscarData *od, guint16 type1, const char *bn, guint16 type2)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -2716,10 +2716,10 @@
 	if (!od || !(conn = flap_connection_findbygroup(od, 0x0002)))
 		return -EINVAL;
 
-	if (!sn)
+	if (!bn)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 11+strlen(sn)+2);
+	byte_stream_new(&bs, 11+strlen(bn)+2);
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_ICBM, 0x0014, 0x0000, NULL, 0);
 
@@ -2738,10 +2738,10 @@
 	byte_stream_put16(&bs, type1);
 
 	/*
-	 * Dest sn
+	 * Dest buddy name
 	 */
-	byte_stream_put8(&bs, strlen(sn));
-	byte_stream_putstr(&bs, sn);
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
 	/*
 	 * Type 2 (should be 0x0000, 0x0001, or 0x0002 for mtn)
@@ -2766,20 +2766,20 @@
 {
 	int ret = 0;
 	aim_rxcallback_t userfunc;
-	char *sn;
-	guint8 snlen;
+	char *bn;
+	guint8 bnlen;
 	guint16 type1, type2;
 
 	byte_stream_advance(bs, 8); /* Unknown - All 0's */
 	type1 = byte_stream_get16(bs);
-	snlen = byte_stream_get8(bs);
-	sn = byte_stream_getstr(bs, snlen);
+	bnlen = byte_stream_get8(bs);
+	bn = byte_stream_getstr(bs, bnlen);
 	type2 = byte_stream_get16(bs);
 
 	if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-		ret = userfunc(od, conn, frame, type1, sn, type2);
-
-	g_free(sn);
+		ret = userfunc(od, conn, frame, type1, bn, type2);
+
+	g_free(bn);
 
 	return ret;
 }
--- a/libpurple/protocols/oscar/family_locate.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_locate.c	Wed Mar 04 16:52:47 2009 +0000
@@ -100,7 +100,7 @@
 	  0x82, 0x22, 0x44, 0x45, 0x45, 0x53, 0x54, 0x00}},
 
 	/* Supports "new status message features" (Who advertises this one?) */
-	/* OSCAR_CAPABILITY_HOST_STATUS_TEXT_AWARE */ 
+	/* OSCAR_CAPABILITY_HOST_STATUS_TEXT_AWARE */
 	{OSCAR_CAPABILITY_GENERICUNKNOWN,
 	 {0x09, 0x46, 0x01, 0x0a, 0x4c, 0x7f, 0x11, 0xd1,
 	  0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}},
@@ -112,7 +112,7 @@
 	  0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}},
 
 	/* Client only asserts caps for services in which it is participating */
-	/* OSCAR_CAPABILITY_SMARTCAPS */ 
+	/* OSCAR_CAPABILITY_SMARTCAPS */
 	{OSCAR_CAPABILITY_GENERICUNKNOWN,
 	 {0x09, 0x46, 0x01, 0xff, 0x4c, 0x7f, 0x11, 0xd1,
 	  0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00}},
@@ -253,11 +253,11 @@
 	FlapConnection *conn;
 	aim_rxcallback_t userfunc;
 
-	cur = aim_locate_finduserinfo(od, userinfo->sn);
+	cur = aim_locate_finduserinfo(od, userinfo->bn);
 
 	if (cur == NULL) {
 		cur = (aim_userinfo_t *)g_new0(aim_userinfo_t, 1);
-		cur->sn = g_strdup(userinfo->sn);
+		cur->bn = g_strdup(userinfo->bn);
 		cur->next = od->locate.userinfo;
 		od->locate.userinfo = cur;
 	}
@@ -366,35 +366,35 @@
 }
 
 /**
- * Remove this screen name from our queue.  If this info was requested
+ * Remove this buddy name from our queue.  If this info was requested
  * by our info request queue, then pop the next element off of the queue.
  *
  * @param od The aim session.
- * @param sn Screen name of the info we just received.
+ * @param bn Buddy name of the info we just received.
  * @return True if the request was explicit (client requested the info),
  *         false if the request was implicit (libfaim request the info).
  */
 static int
-aim_locate_gotuserinfo(OscarData *od, FlapConnection *conn, const char *sn)
+aim_locate_gotuserinfo(OscarData *od, FlapConnection *conn, const char *bn)
 {
 	struct userinfo_node *cur, *del;
 	int was_explicit = TRUE;
 
-	while ((od->locate.requested != NULL) && (aim_sncmp(sn, od->locate.requested->sn) == 0)) {
+	while ((od->locate.requested != NULL) && (oscar_util_name_compare(bn, od->locate.requested->bn) == 0)) {
 		del = od->locate.requested;
 		od->locate.requested = del->next;
 		was_explicit = FALSE;
-		g_free(del->sn);
+		g_free(del->bn);
 		g_free(del);
 	}
 
 	cur = od->locate.requested;
 	while ((cur != NULL) && (cur->next != NULL)) {
-		if (aim_sncmp(sn, cur->next->sn) == 0) {
+		if (oscar_util_name_compare(bn, cur->next->bn) == 0) {
 			del = cur->next;
 			cur->next = del->next;
 			was_explicit = FALSE;
-			g_free(del->sn);
+			g_free(del->bn);
 			g_free(del);
 		} else
 			cur = cur->next;
@@ -404,34 +404,34 @@
 }
 
 void
-aim_locate_autofetch_away_message(OscarData *od, const char *sn)
+aim_locate_autofetch_away_message(OscarData *od, const char *bn)
 {
 	struct userinfo_node *cur;
 
 	/* Make sure we haven't already made an info request for this buddy */
 	for (cur = od->locate.requested; cur != NULL; cur = cur->next)
-		if (aim_sncmp(sn, cur->sn) == 0)
+		if (oscar_util_name_compare(bn, cur->bn) == 0)
 			return;
 
 	/* Add a new node to our request queue */
 	cur = (struct userinfo_node *)g_malloc(sizeof(struct userinfo_node));
-	cur->sn = g_strdup(sn);
+	cur->bn = g_strdup(bn);
 	cur->next = od->locate.requested;
 	od->locate.requested = cur;
 
-	aim_locate_getinfoshort(od, cur->sn, 0x00000002);
+	aim_locate_getinfoshort(od, cur->bn, 0x00000002);
 }
 
-aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *sn) {
+aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *bn) {
 	aim_userinfo_t *cur = NULL;
 
-	if (sn == NULL)
+	if (bn == NULL)
 		return NULL;
 
 	cur = od->locate.userinfo;
 
 	while (cur != NULL) {
-		if (aim_sncmp(cur->sn, sn) == 0)
+		if (oscar_util_name_compare(cur->bn, bn) == 0)
 			return cur;
 		cur = cur->next;
 	}
@@ -552,7 +552,7 @@
 void
 aim_info_free(aim_userinfo_t *info)
 {
-	g_free(info->sn);
+	g_free(info->bn);
 	g_free(info->iconcsum);
 	g_free(info->info);
 	g_free(info->info_encoding);
@@ -572,7 +572,7 @@
 aim_info_extract(OscarData *od, ByteStream *bs, aim_userinfo_t *outinfo)
 {
 	int curtlv, tlvcnt;
-	guint8 snlen;
+	guint8 bnlen;
 
 	if (!bs || !outinfo)
 		return -EINVAL;
@@ -581,11 +581,11 @@
 	memset(outinfo, 0x00, sizeof(aim_userinfo_t));
 
 	/*
-	 * Screen name.  Stored as an unterminated string prepended with a
+	 * Username.  Stored as an unterminated string prepended with a
 	 * byte containing its length.
 	 */
-	snlen = byte_stream_get8(bs);
-	outinfo->sn = byte_stream_getstr(bs, snlen);
+	bnlen = byte_stream_get8(bs);
+	outinfo->bn = byte_stream_getstr(bs, bnlen);
 
 	/*
 	 * Warning Level.  Stored as an unsigned short.
@@ -881,7 +881,7 @@
 			 */
 #ifdef LOG_UNKNOWN_TLV
 			purple_debug_misc("oscar", "userinfo: **warning: unexpected TLV:\n");
-			purple_debug_misc("oscar", "userinfo:   sn    =%s\n", outinfo->sn);
+			purple_debug_misc("oscar", "userinfo:   bn    =%s\n", outinfo->bn);
 			dumptlv(od, type, bs, length);
 #endif
 		}
@@ -906,8 +906,8 @@
 	if (!bs || !info)
 		return -EINVAL;
 
-	byte_stream_put8(bs, strlen(info->sn));
-	byte_stream_putstr(bs, info->sn);
+	byte_stream_put8(bs, strlen(info->bn));
+	byte_stream_putstr(bs, info->bn);
 
 	byte_stream_put16(bs, info->warnlevel);
 
@@ -922,7 +922,7 @@
 
 /* XXX - So, ICQ_OSCAR_SUPPORT is never defined anywhere... */
 #ifdef ICQ_OSCAR_SUPPORT
-	if (atoi(info->sn) != 0) {
+	if (atoi(info->bn) != 0) {
 		if (info->present & AIM_USERINFO_PRESENT_ICQEXTSTATUS)
 			aim_tlvlist_add_16(&tlvlist, 0x0006, info->icqinfo.status);
 		if (info->present & AIM_USERINFO_PRESENT_ICQIPADDR)
@@ -953,35 +953,35 @@
 	aim_rxcallback_t userfunc;
 	aim_snac_t *snac2;
 	guint16 reason;
-	char *sn;
+	char *bn;
 	int was_explicit;
 
 	if (!(snac2 = aim_remsnac(od, snac->id))) {
-		purple_debug_misc("oscar", "faim: locate.c, error(): received response from unknown request!\n");
+		purple_debug_misc("oscar", "locate error: received response from unknown request!\n");
 		return 0;
 	}
 
 	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);
+		purple_debug_misc("oscar", "locate error: received response from invalid request! %d\n", snac2->family);
 		return 0;
 	}
 
-	if (!(sn = snac2->data)) {
-		purple_debug_misc("oscar", "faim: locate.c, error(): received response from request without a screen name!\n");
+	if (!(bn = snac2->data)) {
+		purple_debug_misc("oscar", "locate error: received response from request without a buddy name!\n");
 		return 0;
 	}
 
 	reason = byte_stream_get16(bs);
 
 	/*
-	 * Remove this screen name from our queue.  If the client requested
+	 * Remove this buddy name from our queue.  If the client requested
 	 * this buddy's info explicitly, then notify them that we do not have
 	 * info for this buddy.
 	 */
-	was_explicit = aim_locate_gotuserinfo(od, conn, sn);
+	was_explicit = aim_locate_gotuserinfo(od, conn, bn);
 	if (was_explicit == TRUE)
 		if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
-			ret = userfunc(od, conn, frame, reason, sn);
+			ret = userfunc(od, conn, frame, reason, bn);
 
 	if (snac2)
 		g_free(snac2->data);
@@ -1157,29 +1157,29 @@
 /*
  * Subtype 0x0005 - Request info of another AIM user.
  *
- * @param sn The screenname whose info you wish to request.
+ * @param bn The buddy name whose info you wish to request.
  * @param infotype The type of info you wish to request.
  *        0x0001 - Info/profile
  *        0x0003 - Away message
  *        0x0004 - Capabilities
  */
 int
-aim_locate_getinfo(OscarData *od, const char *sn, guint16 infotype)
+aim_locate_getinfo(OscarData *od, const char *bn, guint16 infotype)
 {
 	FlapConnection *conn;
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !sn)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !bn)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 2+1+strlen(sn));
+	byte_stream_new(&bs, 2+1+strlen(bn));
 
 	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);
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
 	flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x0005, 0x0000, snacid, &bs);
 
@@ -1229,18 +1229,18 @@
 	aim_tlvlist_free(tlvlist);
 
 	aim_locate_adduserinfo(od, userinfo);
-	userinfo2 = aim_locate_finduserinfo(od, userinfo->sn);
+	userinfo2 = aim_locate_finduserinfo(od, userinfo->bn);
 	aim_info_free(userinfo);
 	g_free(userinfo);
 
 	/*
-	 * Remove this screen name from our queue.  If the client requested
+	 * Remove this buddy name from our queue.  If the client requested
 	 * this buddy's info explicitly, then notify them that we have info
 	 * for this buddy.
 	 */
 	if (userinfo2 != NULL)
 	{
-		was_explicit = aim_locate_gotuserinfo(od, conn, userinfo2->sn);
+		was_explicit = aim_locate_gotuserinfo(od, conn, userinfo2->bn);
 		if (was_explicit == TRUE)
 			if ((userfunc = aim_callhandler(od, snac->family, snac->subtype)))
 				ret = userfunc(od, conn, frame, userinfo2);
@@ -1307,7 +1307,7 @@
 /*
  * Subtype 0x000b - Huh? What is this?
  */
-int aim_locate_000b(OscarData *od, const char *sn)
+int aim_locate_000b(OscarData *od, const char *bn)
 {
 	FlapConnection *conn;
 	ByteStream bs;
@@ -1315,15 +1315,15 @@
 
 		return -EINVAL;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !sn)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !bn)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 1+strlen(sn));
+	byte_stream_new(&bs, 1+strlen(bn));
 
 	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x000b, 0x0000, NULL, 0);
 
-	byte_stream_put8(&bs, strlen(sn));
-	byte_stream_putstr(&bs, sn);
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
 	flap_connection_send_snac(od, conn, SNAC_FAMILY_LOCATE, 0x000b, 0x0000, snacid, &bs);
 
@@ -1380,7 +1380,7 @@
  * Subtype 0x0015 - Request the info of a user using the short method.  This is
  * what iChat uses.  It normally is VERY leniently rate limited.
  *
- * @param sn The screen name whose info you wish to request.
+ * @param bn The buddy name whose info you wish to request.
  * @param flags The bitmask which specifies the type of info you wish to request.
  *        0x00000001 - Info/profile.
  *        0x00000002 - Away message.
@@ -1389,21 +1389,21 @@
  * @return Return 0 if no errors, otherwise return the error number.
  */
 int
-aim_locate_getinfoshort(OscarData *od, const char *sn, guint32 flags)
+aim_locate_getinfoshort(OscarData *od, const char *bn, guint32 flags)
 {
 	FlapConnection *conn;
 	ByteStream bs;
 	aim_snacid_t snacid;
 
-	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !sn)
+	if (!od || !(conn = flap_connection_findbygroup(od, SNAC_FAMILY_LOCATE)) || !bn)
 		return -EINVAL;
 
-	byte_stream_new(&bs, 4 + 1 + strlen(sn));
+	byte_stream_new(&bs, 4 + 1 + strlen(bn));
 	byte_stream_put32(&bs, flags);
-	byte_stream_put8(&bs, strlen(sn));
-	byte_stream_putstr(&bs, sn);
+	byte_stream_put8(&bs, strlen(bn));
+	byte_stream_putstr(&bs, bn);
 
-	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, sn, strlen(sn)+1);
+	snacid = aim_cachesnac(od, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, bn, strlen(bn)+1);
 	flap_connection_send_snac_with_priority(od, conn, SNAC_FAMILY_LOCATE, 0x0015, 0x0000, snacid, &bs, FALSE);
 
 	byte_stream_destroy(&bs);
--- a/libpurple/protocols/oscar/family_odir.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/family_odir.c	Wed Mar 04 16:52:47 2009 +0000
@@ -31,7 +31,7 @@
 /**
  * Subtype 0x0002 - Submit a User Search Request
  *
- * Search for an AIM screen name based on their email address.
+ * Search for an AIM buddy based on their email address.
  *
  * @param od The oscar session.
  * @param region Should be "us-ascii" unless you know what you're doing.
@@ -70,7 +70,7 @@
 /**
  * Subtype 0x0002 - Submit a User Search Request
  *
- * Search for an AIM screen name based on various info
+ * Search for an AIM buddy based on various info
  * about the person.
  *
  * @param od The oscar session.
@@ -202,7 +202,7 @@
 		new->country = aim_tlv_getstr(tlvlist, 0x0006, 1);
 		new->state = aim_tlv_getstr(tlvlist, 0x0007, 1);
 		new->city = aim_tlv_getstr(tlvlist, 0x0008, 1);
-		new->sn = aim_tlv_getstr(tlvlist, 0x0009, 1);
+		new->bn = aim_tlv_getstr(tlvlist, 0x0009, 1);
 		new->interest = aim_tlv_getstr(tlvlist, 0x000b, 1);
 		new->nick = aim_tlv_getstr(tlvlist, 0x000c, 1);
 		new->zip = aim_tlv_getstr(tlvlist, 0x000d, 1);
@@ -228,7 +228,7 @@
 		g_free(del->country);
 		g_free(del->state);
 		g_free(del->city);
-		g_free(del->sn);
+		g_free(del->bn);
 		g_free(del->interest);
 		g_free(del->nick);
 		g_free(del->zip);
--- a/libpurple/protocols/oscar/odc.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/odc.c	Wed Mar 04 16:52:47 2009 +0000
@@ -62,7 +62,7 @@
 		PurpleConversation *conv;
 
 		account = purple_connection_get_account(conn->od->gc);
-		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
 		purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL));
 		g_free(tmp);
 	}
@@ -90,11 +90,11 @@
 
 	purple_debug_info("oscar", "Outgoing ODC frame to %s with "
 		"type=0x%04x, flags=0x%04x, payload length=%u\n",
-		conn->sn, frame->type, frame->flags, frame->payload.len);
+		conn->bn, frame->type, frame->flags, frame->payload.len);
 
 	account = purple_connection_get_account(conn->od->gc);
 	username = purple_account_get_username(account);
-	memcpy(frame->sn, username, strlen(username));
+	memcpy(frame->bn, username, strlen(username));
 	memcpy(frame->cookie, conn->cookie, 8);
 
 	length = 76;
@@ -116,7 +116,7 @@
 	byte_stream_put16(&bs, frame->flags);
 	byte_stream_put16(&bs, 0x0000);
 	byte_stream_put16(&bs, 0x0000);
-	byte_stream_putraw(&bs, frame->sn, 32);
+	byte_stream_putraw(&bs, frame->bn, 32);
 	byte_stream_putraw(&bs, frame->payload.data, frame->payload.len);
 
 	peer_connection_send(conn, &bs);
@@ -366,7 +366,7 @@
 		g_datalist_clear(&attributes);
 
 		/* Append the message up to the tag */
-		utf8 = purple_plugin_oscar_decode_im_part(account, conn->sn,
+		utf8 = purple_plugin_oscar_decode_im_part(account, conn->bn,
 				encoding, 0x0000, tmp, start - tmp);
 		if (utf8 != NULL) {
 			g_string_append(newmsg, utf8);
@@ -386,7 +386,7 @@
 	/* Append any remaining message data */
 	if (tmp <= msgend)
 	{
-		utf8 = purple_plugin_oscar_decode_im_part(account, conn->sn,
+		utf8 = purple_plugin_oscar_decode_im_part(account, conn->bn,
 				encoding, 0x0000, tmp, msgend - tmp);
 		if (utf8 != NULL) {
 			g_string_append(newmsg, utf8);
@@ -400,7 +400,7 @@
 		imflags |= PURPLE_MESSAGE_IMAGES;
 	if (autoreply)
 		imflags |= PURPLE_MESSAGE_AUTO_RESP;
-	serv_got_im(gc, conn->sn, newmsg->str, imflags, time(NULL));
+	serv_got_im(gc, conn->bn, newmsg->str, imflags, time(NULL));
 	g_string_free(newmsg, TRUE);
 
 	/* unref any images we allocated */
@@ -503,11 +503,11 @@
 	byte_stream_advance(bs, 4);
 	frame->flags = byte_stream_get16(bs);
 	byte_stream_advance(bs, 4);
-	byte_stream_getrawbuf(bs, frame->sn, 32);
+	byte_stream_getrawbuf(bs, frame->bn, 32);
 
 	purple_debug_info("oscar", "Incoming ODC frame from %s with "
 			"type=0x%04x, flags=0x%04x, payload length=%u\n",
-			frame->sn, frame->type, frame->flags, frame->payload.len);
+			frame->bn, frame->type, frame->flags, frame->payload.len);
 
 	if (!conn->ready)
 	{
@@ -558,7 +558,7 @@
 
 		/* Tell the local user that we are connected */
 		account = purple_connection_get_account(gc);
-		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
 		purple_conversation_write(conv, NULL, _("Direct IM established"),
 				PURPLE_MESSAGE_SYSTEM, time(NULL));
 	}
@@ -576,16 +576,16 @@
 		/* I had to leave this. It's just too funny. It reminds me of my sister. */
 		purple_debug_info("oscar", "ohmigod! %s has started typing "
 			"(DirectIM). He's going to send you a message! "
-			"*squeal*\n", conn->sn);
-		serv_got_typing(gc, conn->sn, 0, PURPLE_TYPING);
+			"*squeal*\n", conn->bn);
+		serv_got_typing(gc, conn->bn, 0, PURPLE_TYPING);
 	}
 	else if (frame->flags & 0x0004)
 	{
-		serv_got_typing(gc, conn->sn, 0, PURPLE_TYPED);
+		serv_got_typing(gc, conn->bn, 0, PURPLE_TYPED);
 	}
 	else
 	{
-		serv_got_typing_stopped(gc, conn->sn);
+		serv_got_typing_stopped(gc, conn->bn);
 	}
 
 	if (frame->payload.len > 0)
@@ -598,12 +598,12 @@
 
 			size1 = purple_str_size_to_units(frame->payload.len);
 			size2 = purple_str_size_to_units(DIRECTIM_MAX_FILESIZE);
-			tmp = g_strdup_printf(_("%s tried to send you a %s file, but we only allow files up to %s over Direct IM.  Try using file transfer instead.\n"), conn->sn, size1, size2);
+			tmp = g_strdup_printf(_("%s tried to send you a %s file, but we only allow files up to %s over Direct IM.  Try using file transfer instead.\n"), conn->bn, size1, size2);
 			g_free(size1);
 			g_free(size2);
 
 			account = purple_connection_get_account(conn->od->gc);
-			conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+			conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
 			purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL));
 			g_free(tmp);
 
--- a/libpurple/protocols/oscar/oft.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/oft.c	Wed Mar 04 16:52:47 2009 +0000
@@ -544,7 +544,7 @@
 	frame.name = byte_stream_getraw(bs, frame.name_length);
 
 	purple_debug_info("oscar", "Incoming OFT frame from %s with "
-			"type=0x%04x\n", conn->sn, frame.type);
+			"type=0x%04x\n", conn->bn, frame.type);
 
 	/* TODOFT: peer_oft_dirconvert_fromstupid(frame->name); */
 
--- a/libpurple/protocols/oscar/oscar.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Wed Mar 04 16:52:47 2009 +0000
@@ -204,7 +204,7 @@
 void oscar_set_info(PurpleConnection *gc, const char *info);
 static void oscar_set_info_and_status(PurpleAccount *account, gboolean setinfo, const char *rawinfo, gboolean setstatus, PurpleStatus *status);
 static void oscar_set_extendedstatus(PurpleConnection *gc);
-static void oscar_format_screenname(PurpleConnection *gc, const char *nick);
+static void oscar_format_username(PurpleConnection *gc, const char *nick);
 static gboolean purple_ssi_rerequestdata(gpointer data);
 
 static void oscar_free_name_data(struct name_data *data) {
@@ -362,7 +362,7 @@
 	const char *charset = NULL;
 	char *ret = NULL;
 
-	if(aim_snvalid_icq(purple_account_get_username(account)))
+	if(oscar_util_valid_name_icq(purple_account_get_username(account)))
 		charset = purple_account_get_string(account, "encoding", NULL);
 
 	if(charset && *charset)
@@ -414,7 +414,7 @@
  * charsetstr1 is always set to what the correct encoding should be.
  */
 gchar *
-purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen)
+purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcebn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen)
 {
 	gchar *ret = NULL;
 	const gchar *charsetstr1, *charsetstr2;
@@ -428,7 +428,7 @@
 		charsetstr1 = "UTF-16BE";
 		charsetstr2 = "UTF-8";
 	} else if (charset == AIM_CHARSET_CUSTOM) {
-		if ((sourcesn != NULL) && aim_snvalid_icq(sourcesn))
+		if ((sourcebn != NULL) && oscar_util_valid_name_icq(sourcebn))
 			charsetstr1 = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
 		else
 			charsetstr1 = "ISO-8859-1";
@@ -458,7 +458,7 @@
 		str[datalen] = '\0';
 		salvage = purple_utf8_salvage(str);
 		tmp = g_strdup_printf(_("(There was an error receiving this message.  Either you and %s have different encodings selected, or %s has a buggy client.)"),
-					  sourcesn, sourcesn);
+					  sourcebn, sourcebn);
 		ret = g_strdup_printf("%s %s", salvage, tmp);
 		g_free(tmp);
 		g_free(str);
@@ -473,11 +473,11 @@
  */
 static void
 purple_plugin_oscar_convert_to_best_encoding(PurpleConnection *gc,
-				const char *destsn, const gchar *from,
+				const char *destbn, const gchar *from,
 				gchar **msg, int *msglen_int,
 				guint16 *charset, guint16 *charsubset)
 {
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	PurpleAccount *account = purple_connection_get_account(gc);
 	GError *err = NULL;
 	aim_userinfo_t *userinfo = NULL;
@@ -499,13 +499,13 @@
 	 * capability, and they are online, then attempt to send
 	 * as UTF-16BE.
 	 */
-	if ((destsn != NULL) && aim_snvalid_icq(destsn))
-		userinfo = aim_locate_finduserinfo(od, destsn);
+	if ((destbn != NULL) && oscar_util_valid_name_icq(destbn))
+		userinfo = aim_locate_finduserinfo(od, destbn);
 
 	if ((userinfo != NULL) && (userinfo->capabilities & OSCAR_CAPABILITY_UNICODE))
 	{
 		PurpleBuddy *b;
-		b = purple_find_buddy(account, destsn);
+		b = purple_find_buddy(account, destbn);
 		if ((b != NULL) && (PURPLE_BUDDY_IS_ONLINE(b)))
 		{
 			*msg = g_convert(from, -1, "UTF-16BE", "UTF-8", NULL, &msglen, &err);
@@ -529,7 +529,7 @@
 	 * ICQ then attempt to send as the user specified character encoding.
 	 */
 	charsetstr = "ISO-8859-1";
-	if ((destsn != NULL) && aim_snvalid_icq(destsn))
+	if ((destbn != NULL) && oscar_util_valid_name_icq(destbn))
 		charsetstr = purple_account_get_string(account, "encoding", OSCAR_DEFAULT_CUSTOM_ENCODING);
 
 	/*
@@ -808,16 +808,16 @@
 	gchar *message = NULL, *itmsurl = NULL, *tmp;
 	gboolean is_away;
 
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 
 	if (userinfo == NULL)
-		userinfo = aim_locate_finduserinfo(od, b->name);
+		userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b));
 
 	if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL)))
 		return;
 
 	if (b == NULL)
-		b = purple_find_buddy(purple_connection_get_account(gc), userinfo->sn);
+		b = purple_find_buddy(purple_connection_get_account(gc), userinfo->bn);
 
 	if (b) {
 		presence = purple_buddy_get_presence(b);
@@ -884,7 +884,7 @@
 
 	if (b) {
 		if (purple_presence_is_online(presence)) {
-			if (aim_snvalid_icq(b->name) || is_away || !message || !(*message)) {
+			if (oscar_util_valid_name_icq(purple_buddy_get_name(b)) || 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);
@@ -899,21 +899,20 @@
 				message = tmp;
 			}
 
+		} else if (aim_ssi_waitingforauth(od->ssi.local,
+			aim_ssi_itemlist_findparentname(od->ssi.local, purple_buddy_get_name(b)),
+			purple_buddy_get_name(b)))
+		{
+			/* 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 {
-			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"));
-			}
+			g_free(message);
+			message = g_strdup(_("Offline"));
 		}
 
 	}
@@ -931,27 +930,30 @@
 	PurpleGroup *g = NULL;
 	struct buddyinfo *bi = NULL;
 	char *tmp;
-
-	od = gc->proto_data;
+	const char *bname, *gname = NULL;
+
+	od = purple_connection_get_protocol_data(gc);
 	account = purple_connection_get_account(gc);
 
 	if ((user_info == NULL) || ((b == NULL) && (userinfo == NULL)))
 		return;
 
+	bname = purple_buddy_get_name(b);
 	if (userinfo == NULL)
-		userinfo = aim_locate_finduserinfo(od, b->name);
+		userinfo = aim_locate_finduserinfo(od, bname);
 
 	if (b == NULL)
-		b = purple_find_buddy(account, userinfo->sn);
+		b = purple_find_buddy(account, userinfo->bn);
 
 	if (b != NULL) {
 		g = purple_buddy_get_group(b);
+		gname = purple_group_get_name(g);
 		presence = purple_buddy_get_presence(b);
 		status = purple_presence_get_active_status(presence);
 	}
 
 	if (userinfo != NULL)
-		bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn));
+		bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->bn));
 
 	if ((bi != NULL) && (bi->ipaddr != 0)) {
 		tmp =  g_strdup_printf("%hhu.%hhu.%hhu.%hhu",
@@ -969,8 +971,8 @@
 		g_free(tmp);
 	}
 
-	if ((b != NULL) && (b->name != NULL) && (g != NULL) && (g->name != NULL)) {
-		tmp = aim_ssi_getcomment(od->ssi.local, g->name, b->name);
+	if ((b != NULL) && (bname != NULL) && (g != NULL) && (gname != NULL)) {
+		tmp = aim_ssi_getcomment(od->ssi.local, gname, bname);
 		if (tmp != NULL) {
 			char *tmp2 = g_markup_escape_text(tmp, strlen(tmp));
 			g_free(tmp);
@@ -1017,7 +1019,7 @@
 static struct chat_connection *
 find_oscar_chat(PurpleConnection *gc, int id)
 {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	GSList *cur;
 	struct chat_connection *cc;
 
@@ -1034,7 +1036,7 @@
 static struct chat_connection *
 find_oscar_chat_by_conn(PurpleConnection *gc, FlapConnection *conn)
 {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	GSList *cur;
 	struct chat_connection *cc;
 
@@ -1051,7 +1053,7 @@
 static struct chat_connection *
 find_oscar_chat_by_conv(PurpleConnection *gc, PurpleConversation *conv)
 {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	GSList *cur;
 	struct chat_connection *cc;
 
@@ -1076,7 +1078,7 @@
 static void
 oscar_chat_kill(PurpleConnection *gc, struct chat_connection *cc)
 {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 
 	/* Notify the conversation window that we've left the chat */
 	serv_got_chat_left(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(cc->conv)));
@@ -1292,10 +1294,10 @@
 		od->chpass = FALSE;
 	}
 	if (od->setnick) {
-		purple_debug_info("oscar", "formatting screen name\n");
-		aim_admin_setnick(od, conn, od->newsn);
-		g_free(od->newsn);
-		od->newsn = NULL;
+		purple_debug_info("oscar", "formatting username\n");
+		aim_admin_setnick(od, conn, od->newformatting);
+		g_free(od->newformatting);
+		od->newformatting = NULL;
 		od->setnick = FALSE;
 	}
 	if (od->conf) {
@@ -1391,7 +1393,7 @@
 	guint32 presence;
 
 	gc = data;
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	report_idle = strcmp((const char *)value, "none") != 0;
 	presence = aim_ssi_getpresence(od->ssi.local);
 
@@ -1414,7 +1416,7 @@
 	guint32 presence;
 
 	gc = data;
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	presence = aim_ssi_getpresence(od->ssi.local);
 
 	if (value)
@@ -1431,8 +1433,9 @@
 	FlapConnection *newconn;
 
 	gc = purple_account_get_connection(account);
-	od = gc->proto_data = oscar_data_new();
+	od = oscar_data_new();
 	od->gc = gc;
+	purple_connection_set_protocol_data(gc, od);
 
 	oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR, purple_connerr, 0);
 	oscar_data_addhandler(od, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNINITDONE, flap_connection_established, 0);
@@ -1499,7 +1502,7 @@
 
 	purple_debug_misc("oscar", "oscar_login: gc = %p\n", gc);
 
-	if (!aim_snvalid(purple_account_get_username(account))) {
+	if (!oscar_util_valid_name(purple_account_get_username(account))) {
 		gchar *buf;
 		buf = g_strdup_printf(_("Unable to login: Could not sign on as %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), purple_account_get_username(account));
 		purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, buf);
@@ -1507,7 +1510,7 @@
 		return;
 	}
 
-	if (aim_snvalid_icq((purple_account_get_username(account)))) {
+	if (oscar_util_valid_name_icq((purple_account_get_username(account)))) {
 		od->icq = TRUE;
 	} else {
 		gc->flags |= PURPLE_CONNECTION_HTML;
@@ -1578,7 +1581,7 @@
 {
 	OscarData *od;
 
-	od = (OscarData *)gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 
 	while (od->oscar_chats)
 	{
@@ -1594,7 +1597,7 @@
 		g_free(cr);
 	}
 	oscar_data_destroy(od);
-	gc->proto_data = NULL;
+	purple_connection_set_protocol_data(gc, NULL);
 
 	purple_prefs_disconnect_by_handle(gc);
 
@@ -1605,7 +1608,7 @@
 purple_parse_auth_resp(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...)
 {
 	PurpleConnection *gc = od->gc;
-	PurpleAccount *account = gc->account;
+	PurpleAccount *account = purple_connection_get_account(gc);
 	char *host; int port;
 	int i;
 	FlapConnection *newconn;
@@ -1619,13 +1622,13 @@
 	va_end(ap);
 
 	purple_debug_info("oscar",
-			   "inside auth_resp (Username: %s)\n", info->sn);
+			   "inside auth_resp (Username: %s)\n", info->bn);
 
 	if (info->errorcode || !info->bosip || !info->cookielen || !info->cookie) {
 		char buf[256];
 		switch (info->errorcode) {
 		case 0x01:
-			/* Unregistered screen name */
+			/* Unregistered username */
 			purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_INVALID_USERNAME, _("Invalid username."));
 			break;
 		case 0x05:
@@ -1644,7 +1647,7 @@
 			purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, _("The AOL Instant Messenger service is temporarily unavailable."));
 			break;
 		case 0x18:
-			/* screen name connecting too frequently */
+			/* username connecting too frequently */
 			purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, _("You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."));
 			break;
 		case 0x1c:
@@ -1722,7 +1725,7 @@
 purple_parse_auth_securid_request_yes_cb(gpointer user_data, const char *msg)
 {
 	PurpleConnection *gc = user_data;
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 
 	aim_auth_securid_send(od, msg);
 }
@@ -1774,7 +1777,7 @@
 static void damn_you(gpointer data, gint source, PurpleInputCondition c)
 {
 	struct pieceofcrap *pos = data;
-	OscarData *od = pos->gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(pos->gc);
 	char in = '\0';
 	int x = 0;
 	unsigned char m[17];
@@ -1840,7 +1843,7 @@
 	pos->fd = source;
 
 	if (source < 0) {
-		GHashTable *ui_info = purple_core_get_ui_info();				
+		GHashTable *ui_info = purple_core_get_ui_info();
 		buf = g_strdup_printf(_("You may be disconnected shortly.  "
 				"Check %s for updates."),
 				((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE));
@@ -2099,7 +2102,7 @@
 	va_end(ap);
 
 	g_return_val_if_fail(info != NULL, 1);
-	g_return_val_if_fail(info->sn != NULL, 1);
+	g_return_val_if_fail(info->bn != NULL, 1);
 
 	if (info->present & AIM_USERINFO_PRESENT_FLAGS) {
 		if (info->flags & AIM_FLAG_AWAY)
@@ -2113,7 +2116,7 @@
 		}
 	}
 
-	if (aim_snvalid_icq(info->sn)) {
+	if (oscar_util_valid_name_icq(info->bn)) {
 		if (type & AIM_ICQ_STATE_CHAT)
 			status_id = OSCAR_STATUS_ID_FREE4CHAT;
 		else if (type & AIM_ICQ_STATE_DND)
@@ -2139,9 +2142,9 @@
 
 	if (info->flags & AIM_FLAG_WIRELESS)
 	{
-		purple_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_MOBILE, NULL);
+		purple_prpl_got_user_status(account, info->bn, OSCAR_STATUS_ID_MOBILE, NULL);
 	} else {
-		purple_prpl_got_user_status_deactive(account, info->sn, OSCAR_STATUS_ID_MOBILE);
+		purple_prpl_got_user_status_deactive(account, info->bn, OSCAR_STATUS_ID_MOBILE);
 	}
 
 	if (info->status != NULL && info->status[0] != '\0')
@@ -2164,11 +2167,11 @@
 			 */
 			tmp2 = "";
 
-		purple_prpl_got_user_status(account, info->sn, status_id,
+		purple_prpl_got_user_status(account, info->bn, status_id,
 									"message", tmp2, "itmsurl", itmsurl, NULL);
 	}
 	else
-		purple_prpl_got_user_status(account, info->sn, status_id, "message", tmp2, NULL);
+		purple_prpl_got_user_status(account, info->bn, status_id, "message", tmp2, NULL);
 
 	g_free(tmp);
 
@@ -2180,7 +2183,7 @@
 		signon = info->onlinesince;
 	else if (info->present & AIM_USERINFO_PRESENT_SESSIONLEN)
 		signon = time(NULL) - info->sessionlen;
-	purple_prpl_got_user_login_time(account, info->sn, signon);
+	purple_prpl_got_user_login_time(account, info->bn, signon);
 
 	/* Idle time stuff */
 	/* info->idletime is the number of minutes that this user has been idle */
@@ -2188,15 +2191,15 @@
 		time_idle = time(NULL) - info->idletime * 60;
 
 	if (time_idle > 0)
-		purple_prpl_got_user_idle(account, info->sn, TRUE, time_idle);
+		purple_prpl_got_user_idle(account, info->bn, TRUE, time_idle);
 	else
-		purple_prpl_got_user_idle(account, info->sn, FALSE, 0);
+		purple_prpl_got_user_idle(account, info->bn, FALSE, 0);
 
 	/* Server stored icon stuff */
-	bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, info->sn));
+	bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, info->bn));
 	if (!bi) {
 		bi = g_new0(struct buddyinfo, 1);
-		g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, info->sn)), bi);
+		g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, info->bn)), bi);
 	}
 	bi->typingnot = FALSE;
 	bi->ico_informed = FALSE;
@@ -2208,20 +2211,20 @@
 		PurpleBuddy *b = NULL;
 
 		b16 = purple_base16_encode(info->iconcsum, info->iconcsumlen);
-		b = purple_find_buddy(account, info->sn);
+		b = purple_find_buddy(account, info->bn);
 		if (b != NULL)
 			saved_b16 = purple_buddy_icons_get_checksum_for_user(b);
 
 		if (!b16 || !saved_b16 || strcmp(b16, saved_b16)) {
 			/* Invalidate the old icon for this user */
-			purple_buddy_icons_set_for_user(account, info->sn, NULL, 0, NULL);
+			purple_buddy_icons_set_for_user(account, info->bn, NULL, 0, NULL);
 
 			/* Fetch the new icon (if we're not already doing so) */
-			if (g_slist_find_custom(od->requesticon, info->sn,
-					(GCompareFunc)aim_sncmp) == NULL)
+			if (g_slist_find_custom(od->requesticon, info->bn,
+					(GCompareFunc)oscar_util_name_compare) == NULL)
 			{
 				od->requesticon = g_slist_prepend(od->requesticon,
-						g_strdup(purple_normalize(account, info->sn)));
+						g_strdup(purple_normalize(account, info->bn)));
 				purple_icons_fetch(gc);
 			}
 		}
@@ -2248,9 +2251,9 @@
 	info = va_arg(ap, aim_userinfo_t *);
 	va_end(ap);
 
-	purple_prpl_got_user_status(account, info->sn, OSCAR_STATUS_ID_OFFLINE, NULL);
-	purple_prpl_got_user_status_deactive(account, info->sn, OSCAR_STATUS_ID_MOBILE);
-	g_hash_table_remove(od->buddyinfo, purple_normalize(gc->account, info->sn));
+	purple_prpl_got_user_status(account, info->bn, OSCAR_STATUS_ID_OFFLINE, NULL);
+	purple_prpl_got_user_status_deactive(account, info->bn, OSCAR_STATUS_ID_MOBILE);
+	g_hash_table_remove(od->buddyinfo, purple_normalize(gc->account, info->bn));
 
 	return 1;
 }
@@ -2268,15 +2271,15 @@
 	GData *attribs;
 
 	purple_debug_misc("oscar", "Received IM from %s with %d parts\n",
-					userinfo->sn, args->mpmsg.numparts);
+					userinfo->bn, args->mpmsg.numparts);
 
 	if (args->mpmsg.numparts == 0)
 		return 1;
 
-	bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->sn));
+	bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, userinfo->bn));
 	if (!bi) {
 		bi = g_new0(struct buddyinfo, 1);
-		g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, userinfo->sn)), bi);
+		g_hash_table_insert(od->buddyinfo, g_strdup(purple_normalize(account, userinfo->bn)), bi);
 	}
 
 	if (args->icbmflags & AIM_IMFLAGS_AWAY)
@@ -2288,7 +2291,7 @@
 		bi->typingnot = FALSE;
 
 	if ((args->icbmflags & AIM_IMFLAGS_HASICON) && (args->iconlen) && (args->iconsum) && (args->iconstamp)) {
-		purple_debug_misc("oscar", "%s has an icon\n", userinfo->sn);
+		purple_debug_misc("oscar", "%s has an icon\n", userinfo->bn);
 		if ((args->iconlen != bi->ico_len) || (args->iconsum != bi->ico_csum) || (args->iconstamp != bi->ico_time)) {
 			bi->ico_need = TRUE;
 			bi->ico_len = args->iconlen;
@@ -2304,8 +2307,8 @@
 		size_t len = purple_imgstore_get_size(img);
 		purple_debug_info("oscar",
 				"Sending buddy icon to %s (%" G_GSIZE_FORMAT " bytes)\n",
-				userinfo->sn, len);
-		aim_im_sendch2_icon(od, userinfo->sn, data, len,
+				userinfo->bn, len);
+		aim_im_sendch2_icon(od, userinfo->bn, data, len,
 			purple_buddy_icons_get_account_icon_timestamp(account),
 			aimutil_iconsum(data, len));
 	}
@@ -2314,7 +2317,7 @@
 	message = g_string_new("");
 	curpart = args->mpmsg.parts;
 	while (curpart != NULL) {
-		tmp = purple_plugin_oscar_decode_im_part(account, userinfo->sn, curpart->charset,
+		tmp = purple_plugin_oscar_decode_im_part(account, userinfo->bn, curpart->charset,
 				curpart->charsubset, curpart->data, curpart->datalen);
 		if (tmp != NULL) {
 			g_string_append(message, tmp);
@@ -2334,7 +2337,7 @@
 	 * Note: There *may* be some clients which send messages as HTML formatted -
 	 *       they need to be special-cased somehow.
 	 */
-	if (aim_snvalid_icq(purple_account_get_username(account)) && aim_snvalid_icq(userinfo->sn)) {
+	if (oscar_util_valid_name_icq(purple_account_get_username(account)) && oscar_util_valid_name_icq(userinfo->bn)) {
 		/* being recevied by ICQ from ICQ - escape HTML so it is displayed as sent */
 		gchar *tmp2 = g_markup_escape_text(tmp, -1);
 		g_free(tmp);
@@ -2372,7 +2375,7 @@
 		g_datalist_clear(&attribs);
 	}
 
-	serv_got_im(gc, userinfo->sn, tmp, flags,
+	serv_got_im(gc, userinfo->bn, tmp, flags,
 			(args->icbmflags & AIM_IMFLAGS_OFFLINE) ? args->timestamp : time(NULL));
 	g_free(tmp);
 
@@ -2391,13 +2394,13 @@
 
 	gc = od->gc;
 	account = purple_connection_get_account(gc);
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 
 	if (args == NULL)
 		return 0;
 
 	purple_debug_misc("oscar", "Incoming rendezvous message of type %u, "
-			"user %s, status %hu\n", args->type, userinfo->sn, args->status);
+			"user %s, status %hu\n", args->type, userinfo->bn, args->status);
 
 	if (args->msg != NULL)
 	{
@@ -2443,7 +2446,7 @@
 				g_strdup_printf("%d", args->info.chat.roominfo.exchange));
 		serv_got_chat_invite(gc,
 				     utf8name,
-				     userinfo->sn,
+				     userinfo->bn,
 				     message,
 				     components);
 	}
@@ -2453,14 +2456,14 @@
 	{
 		if (args->status == AIM_RENDEZVOUS_PROPOSE)
 		{
-			peer_connection_got_proposition(od, userinfo->sn, message, args);
+			peer_connection_got_proposition(od, userinfo->bn, message, args);
 		}
 		else if (args->status == AIM_RENDEZVOUS_CANCEL)
 		{
 			/* The other user canceled a peer request */
 			PeerConnection *conn;
 
-			conn = peer_connection_find_by_cookie(od, userinfo->sn, args->cookie);
+			conn = peer_connection_find_by_cookie(od, userinfo->bn, args->cookie);
 			/*
 			 * If conn is NULL it means we haven't tried to create
 			 * a connection with that user.  They may be trying to
@@ -2491,7 +2494,7 @@
 
 	else if (args->type & OSCAR_CAPABILITY_BUDDYICON)
 	{
-		purple_buddy_icons_set_for_user(account, userinfo->sn,
+		purple_buddy_icons_set_for_user(account, userinfo->bn,
 									  g_memdup(args->info.icon.icon, args->info.icon.length),
 									  args->info.icon.length,
 									  NULL);
@@ -2528,9 +2531,10 @@
 	PurpleAccount *account;
 	PurpleBuddy *buddy;
 	PurpleGroup *group;
+	const char *bname, *gname;
 
 	gc = data->gc;
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	account = purple_connection_get_account(gc);
 	buddy = purple_find_buddy(account, data->name);
 	if (buddy != NULL)
@@ -2540,15 +2544,17 @@
 
 	if (group != NULL)
 	{
+		bname = purple_buddy_get_name(buddy);
+		gname = purple_group_get_name(group);
 		purple_debug_info("oscar", "ssi: adding buddy %s to group %s\n",
-				   buddy->name, group->name);
+				   bname, gname);
 		aim_ssi_sendauthrequest(od, data->name, msg ? msg : _("Please authorize me so I can add you to my buddy list."));
-		if (!aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))
+		if (!aim_ssi_itemlist_finditem(od->ssi.local, gname, bname, AIM_SSI_TYPE_BUDDY))
 		{
-			aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE);
+			aim_ssi_addbuddy(od, bname, gname, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, TRUE);
 
 			/* Mobile users should always be online */
-			if (buddy->name[0] == '+') {
+			if (bname[0] == '+') {
 				purple_prpl_got_user_status(account,
 						purple_buddy_get_name(buddy),
 						OSCAR_STATUS_ID_AVAILABLE, NULL);
@@ -2588,8 +2594,8 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
-	purple_auth_sendrequest(gc, buddy->name);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+	purple_auth_sendrequest(gc, purple_buddy_get_name(buddy));
 }
 
 /* When other people ask you for authorization */
@@ -2598,7 +2604,7 @@
 {
 	struct name_data *data = cbdata;
 	PurpleConnection *gc = data->gc;
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 
 	aim_ssi_sendauthreply(od, data->name, 0x01, NULL);
 
@@ -2610,7 +2616,7 @@
 purple_auth_dontgrant(struct name_data *data, char *msg)
 {
 	PurpleConnection *gc = data->gc;
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 
 	aim_ssi_sendauthreply(od, data->name, 0x00, msg ? msg : _("No reason given."));
 }
@@ -2724,21 +2730,21 @@
 		case 0x06: { /* Someone requested authorization */
 			if (i >= 6) {
 				struct name_data *data = g_new(struct name_data, 1);
-				gchar *sn = g_strdup_printf("%u", args->uin);
+				gchar *bn = g_strdup_printf("%u", args->uin);
 				gchar *reason = NULL;
 
 				if (msg2[5] != NULL)
-					reason = purple_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5]));
+					reason = purple_plugin_oscar_decode_im_part(account, bn, AIM_CHARSET_CUSTOM, 0x0000, msg2[5], strlen(msg2[5]));
 
 				purple_debug_info("oscar",
 						   "Received an authorization request from UIN %u\n",
 						   args->uin);
 				data->gc = gc;
-				data->name = sn;
+				data->name = bn;
 				data->nick = NULL;
 
-				purple_account_request_authorization(account, sn, NULL, NULL,
-						reason, purple_find_buddy(account, sn) != NULL,
+				purple_account_request_authorization(account, bn, NULL, NULL,
+						reason, purple_find_buddy(account, bn) != NULL,
 						purple_auth_grant,
 						purple_auth_dontgrant_msgprompt, data);
 				g_free(reason);
@@ -2940,7 +2946,7 @@
 				   "You missed %hu messages from %s because they were invalid.",
 				   nummissed),
 				   nummissed,
-				   userinfo->sn);
+				   userinfo->bn);
 			break;
 		case 1: /* Message too large */
 			buf = g_strdup_printf(
@@ -2949,7 +2955,7 @@
 				   "You missed %hu messages from %s because they were too large.",
 				   nummissed),
 				   nummissed,
-				   userinfo->sn);
+				   userinfo->bn);
 			break;
 		case 2: /* Rate exceeded */
 			buf = g_strdup_printf(
@@ -2958,7 +2964,7 @@
 				   "You missed %hu messages from %s because the rate limit has been exceeded.",
 				   nummissed),
 				   nummissed,
-				   userinfo->sn);
+				   userinfo->bn);
 			break;
 		case 3: /* Evil Sender */
 			buf = g_strdup_printf(
@@ -2967,7 +2973,7 @@
 				   "You missed %hu messages from %s because his/her warning level is too high.",
 				   nummissed),
 				   nummissed,
-				   userinfo->sn);
+				   userinfo->bn);
 			break;
 		case 4: /* Evil Receiver */
 			buf = g_strdup_printf(
@@ -2976,7 +2982,7 @@
 				   "You missed %hu messages from %s because your warning level is too high.",
 				   nummissed),
 				   nummissed,
-				   userinfo->sn);
+				   userinfo->bn);
 			break;
 		default:
 			buf = g_strdup_printf(
@@ -2985,11 +2991,11 @@
 				   "You missed %hu messages from %s for an unknown reason.",
 				   nummissed),
 				   nummissed,
-				   userinfo->sn);
+				   userinfo->bn);
 			break;
 	}
 
-	if (!purple_conv_present_error(userinfo->sn, account, buf))
+	if (!purple_conv_present_error(userinfo->bn, account, buf))
 		purple_notify_error(od->gc, NULL, buf, NULL);
 	g_free(buf);
 
@@ -3107,7 +3113,7 @@
 static int purple_parse_msgerr(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
 	PurpleConnection *gc = od->gc;
 #ifdef TODOFT
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	PurpleXfer *xfer;
 #endif
 	va_list ap;
@@ -3135,7 +3141,7 @@
 	}
 #endif
 
-	/* Data is assumed to be the destination sn */
+	/* Data is assumed to be the destination bn */
 	buf = g_strdup_printf(_("Unable to send message: %s"), (reason < msgerrreasonlen) ? _(msgerrreason[reason]) : _("Unknown reason."));
 	if (!purple_conv_present_error(data, purple_connection_get_account(gc), buf)) {
 		g_free(buf);
@@ -3152,25 +3158,25 @@
 	PurpleConnection *gc = od->gc;
 	va_list ap;
 	guint16 type1, type2;
-	char *sn;
+	char *bn;
 
 	va_start(ap, fr);
 	type1 = (guint16) va_arg(ap, unsigned int);
-	sn = va_arg(ap, char *);
+	bn = va_arg(ap, char *);
 	type2 = (guint16) va_arg(ap, unsigned int);
 	va_end(ap);
 
 	switch (type2) {
 		case 0x0000: { /* Text has been cleared */
-			serv_got_typing_stopped(gc, sn);
+			serv_got_typing_stopped(gc, bn);
 		} break;
 
 		case 0x0001: { /* Paused typing */
-			serv_got_typing(gc, sn, 0, PURPLE_TYPED);
+			serv_got_typing(gc, bn, 0, PURPLE_TYPED);
 		} break;
 
 		case 0x0002: { /* Typing */
-			serv_got_typing(gc, sn, 0, PURPLE_TYPING);
+			serv_got_typing(gc, bn, 0, PURPLE_TYPING);
 		} break;
 
 		default: {
@@ -3178,7 +3184,7 @@
 			 * It looks like iChat sometimes sends typing notification
 			 * with type1=0x0001 and type2=0x000f.  Not sure why.
 			 */
-			purple_debug_info("oscar", "Received unknown typing notification message from %s.  Type1 is 0x%04x and type2 is 0x%04hx.\n", sn, type1, type2);
+			purple_debug_info("oscar", "Received unknown typing notification message from %s.  Type1 is 0x%04x and type2 is 0x%04hx.\n", bn, type1, type2);
 		} break;
 	}
 
@@ -3239,7 +3245,7 @@
 
 	oscar_user_info_append_extra_info(gc, user_info, NULL, userinfo);
 
-	if ((userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) && !aim_snvalid_sms(userinfo->sn)) {
+	if ((userinfo->present & AIM_USERINFO_PRESENT_ONLINESINCE) && !oscar_util_valid_name_sms(userinfo->bn)) {
 		/* 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)));
@@ -3273,11 +3279,11 @@
 
 	purple_notify_user_info_add_section_break(user_info);
 	tmp = g_strdup_printf("<a href=\"http://profiles.aim.com/%s\">%s</a>",
-			purple_normalize(account, userinfo->sn), _("View web profile"));
+			purple_normalize(account, userinfo->bn), _("View web profile"));
 	purple_notify_user_info_add_pair(user_info, NULL, tmp);
 	g_free(tmp);
 
-	purple_notify_userinfo(gc, userinfo->sn, user_info, NULL, NULL);
+	purple_notify_userinfo(gc, userinfo->bn, user_info, NULL, NULL);
 	purple_notify_user_info_destroy(user_info);
 
 	return 1;
@@ -3299,14 +3305,14 @@
 	userinfo = va_arg(ap, aim_userinfo_t *);
 	va_end(ap);
 
-	b = purple_find_buddy(account, userinfo->sn);
+	b = purple_find_buddy(account, userinfo->bn);
 	if (b == NULL)
 		return 1;
 
-	if (!aim_snvalid_icq(userinfo->sn))
+	if (!oscar_util_valid_name_icq(userinfo->bn))
 	{
-		if (strcmp(purple_buddy_get_name(b), userinfo->sn) != 0)
-			serv_got_alias(gc, purple_buddy_get_name(b), userinfo->sn);
+		if (strcmp(purple_buddy_get_name(b), userinfo->bn) != 0)
+			serv_got_alias(gc, purple_buddy_get_name(b), userinfo->bn);
 		else
 			serv_got_alias(gc, purple_buddy_get_name(b), NULL);
 	}
@@ -3323,7 +3329,7 @@
 		                                 userinfo->away,
 		                                 userinfo->away_len);
 		g_free(charset);
-		purple_prpl_got_user_status(account, userinfo->sn,
+		purple_prpl_got_user_status(account, userinfo->bn,
 				purple_status_get_id(status),
 				"message", message, NULL);
 		g_free(message);
@@ -3444,7 +3450,7 @@
 		return 1;
 
 	for (i = 0; i < count; i++)
-		purple_conv_chat_add_user(PURPLE_CONV_CHAT(c->conv), info[i].sn, NULL, PURPLE_CBFLAGS_NONE, TRUE);
+		purple_conv_chat_add_user(PURPLE_CONV_CHAT(c->conv), info[i].bn, NULL, PURPLE_CBFLAGS_NONE, TRUE);
 
 	return 1;
 }
@@ -3467,7 +3473,7 @@
 		return 1;
 
 	for (i = 0; i < count; i++)
-		purple_conv_chat_remove_user(PURPLE_CONV_CHAT(c->conv), info[i].sn, NULL);
+		purple_conv_chat_remove_user(PURPLE_CONV_CHAT(c->conv), info[i].bn, NULL);
 
 	return 1;
 }
@@ -3536,7 +3542,7 @@
 	if (utf8 == NULL)
 		/* The conversion failed! */
 		utf8 = g_strdup(_("[Unable to display a message from this user because it contained invalid characters.]"));
-	serv_got_chat_in(gc, ccon->id, info->sn, 0, utf8, time((time_t)NULL));
+	serv_got_chat_in(gc, ccon->id, info->bn, 0, utf8, time((time_t)NULL));
 	g_free(utf8);
 
 	return 1;
@@ -3544,11 +3550,15 @@
 
 static int purple_email_parseupdate(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
 	va_list ap;
-	PurpleConnection *gc = od->gc;
+	PurpleConnection *gc;
+	PurpleAccount *account;
 	struct aim_emailinfo *emailinfo;
 	int havenewmail;
 	char *alertitle, *alerturl;
 
+	gc = od->gc;
+	account = purple_connection_get_account(gc);
+
 	va_start(ap, fr);
 	emailinfo = va_arg(ap, struct aim_emailinfo *);
 	havenewmail = va_arg(ap, int);
@@ -3556,12 +3566,13 @@
 	alerturl  = va_arg(ap, char *);
 	va_end(ap);
 
-	if ((emailinfo != NULL) && purple_account_get_check_mail(gc->account)) {
-		gchar *to = g_strdup_printf("%s%s%s", purple_account_get_username(purple_connection_get_account(gc)),
-									emailinfo->domain ? "@" : "",
-									emailinfo->domain ? emailinfo->domain : "");
-		if (emailinfo->unread && havenewmail)
-			purple_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL, (const char **)&to, (const char **)&emailinfo->url, NULL, NULL);
+	if (account != NULL && emailinfo != NULL && emailinfo->unread && havenewmail) {
+		gchar *to = g_strdup_printf("%s%s%s",
+				purple_account_get_username(account),
+				emailinfo->domain ? "@" : "",
+				emailinfo->domain ? emailinfo->domain : "");
+		purple_notify_emails(gc, emailinfo->nummsgs, FALSE, NULL, NULL,
+				(const char **)&to, (const char **)&emailinfo->url, NULL, NULL);
 		g_free(to);
 	}
 
@@ -3574,12 +3585,12 @@
 static int purple_icon_parseicon(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
 	PurpleConnection *gc = od->gc;
 	va_list ap;
-	char *sn;
+	char *bn;
 	guint8 iconcsumtype, *iconcsum, *icon;
 	guint16 iconcsumlen, iconlen;
 
 	va_start(ap, fr);
-	sn = va_arg(ap, char *);
+	bn = va_arg(ap, char *);
 	iconcsumtype = va_arg(ap, int);
 	iconcsum = va_arg(ap, guint8 *);
 	iconcsumlen = va_arg(ap, int);
@@ -3594,7 +3605,7 @@
 	if ((iconlen > 0) && (iconlen != 90)) {
 		char *b16 = purple_base16_encode(iconcsum, iconcsumlen);
 		purple_buddy_icons_set_for_user(purple_connection_get_account(gc),
-									  sn, g_memdup(icon, iconlen), iconlen, b16);
+									  bn, g_memdup(icon, iconlen), iconlen, b16);
 		g_free(b16);
 	}
 
@@ -3604,7 +3615,7 @@
 static void
 purple_icons_fetch(PurpleConnection *gc)
 {
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	aim_userinfo_t *userinfo;
 	FlapConnection *conn;
 
@@ -3651,14 +3662,14 @@
 static int purple_parse_msgack(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
 	va_list ap;
 	guint16 type;
-	char *sn;
+	char *bn;
 
 	va_start(ap, fr);
 	type = (guint16) va_arg(ap, unsigned int);
-	sn = va_arg(ap, char *);
+	bn = va_arg(ap, char *);
 	va_end(ap);
 
-	purple_debug_info("oscar", "Sent message to %s.\n", sn);
+	purple_debug_info("oscar", "Sent message to %s.\n", bn);
 
 	return 1;
 }
@@ -3718,7 +3729,7 @@
 	userinfo = va_arg(ap, aim_userinfo_t *);
 	va_end(ap);
 
-	purple_prpl_got_account_warning_level(account, (userinfo && userinfo->sn) ? userinfo->sn : NULL, (newevil/10.0) + 0.5);
+	purple_prpl_got_account_warning_level(account, (userinfo && userinfo->bn) ? userinfo->bn : NULL, (newevil/10.0) + 0.5);
 #endif
 
 	return 1;
@@ -3733,7 +3744,7 @@
 	info = va_arg(ap, aim_userinfo_t *);
 	va_end(ap);
 
-	purple_connection_set_display_name(od->gc, info->sn);
+	purple_connection_set_display_name(od->gc, info->bn);
 
 	/*
 	 * What's with the + 0.5?
@@ -3842,13 +3853,13 @@
 	PurpleAccount *account;
 	PurpleStatus *status;
 	PurplePresence *presence;
-	const char *message, *itmsurl;
+	const char *username, *message, *itmsurl;
 	char *tmp;
 	va_list ap;
 	guint16 maxpermits, maxdenies;
 
 	gc = od->gc;
-	od = (OscarData *)gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	account = purple_connection_get_account(gc);
 
 	va_start(ap, fr);
@@ -3871,12 +3882,13 @@
 	if (purple_account_get_user_info(account) != NULL)
 		serv_set_info(gc, purple_account_get_user_info(account));
 
-	if (!od->icq && strcmp(purple_account_get_username(account), purple_connection_get_display_name(gc)) != 0)
+	username = purple_account_get_username(account);
+	if (!od->icq && strcmp(username, purple_connection_get_display_name(gc)) != 0)
 		/*
-		 * Format the screen name for AIM accounts if it's different
+		 * Format the username for AIM accounts if it's different
 		 * than what's currently set.
 		 */
-		oscar_format_screenname(gc, account->username);
+		oscar_format_username(gc, username);
 
 	/* Set our available message based on the current status */
 	status = purple_account_get_active_status(account);
@@ -3910,13 +3922,13 @@
 	/*
 	 * The "if" statement here is a pathetic attempt to not attempt to
 	 * connect to the alerts servce (aka email notification) if this
-	 * screen name does not support it.  I think mail notification
+	 * username does not support it.  I think mail notification
 	 * works for @mac.com accounts but does not work for the newer
 	 * @anythingelse.com accounts.  If that's true then this change
 	 * breaks mail notification for @mac.com accounts, but it gets rid
 	 * of an annoying error at signon for @anythingelse.com accounts.
 	 */
-	if ((od->authinfo->email != NULL) && ((strchr(gc->account->username, '@') == NULL)))
+	if (od->authinfo->email != NULL && strchr(username, '@') == NULL)
 		aim_srv_requestnew(od, SNAC_FAMILY_ALERT);
 
 	return 1;
@@ -3980,9 +3992,9 @@
 	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);
+	buddy = purple_find_buddy(account, who);
 	if (buddy != NULL)
-		bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(buddy->account, buddy->name));
+		bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, purple_buddy_get_name(buddy)));
 	else
 		bi = NULL;
 
@@ -3999,7 +4011,7 @@
 	}
 	oscar_user_info_convert_and_add(account, user_info, _("First Name"), info->first);
 	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))) {
+	if (info->email && info->email[0] && (utf8 = oscar_utf8_try_convert(account, info->email))) {
 		buf = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", utf8, utf8);
 		purple_notify_user_info_add_pair(user_info, _("Email Address"), buf);
 		g_free(buf);
@@ -4008,7 +4020,7 @@
 	if (info->numaddresses && info->email2) {
 		int i;
 		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]))) {
+			if (info->email2[i] && info->email2[i][0] && (utf8 = oscar_utf8_try_convert(account, info->email2[i]))) {
 				buf = g_strdup_printf("<a href=\"mailto:%s\">%s</a>", utf8, utf8);
 				purple_notify_user_info_add_pair(user_info, _("Email Address"), buf);
 				g_free(buf);
@@ -4043,7 +4055,7 @@
 		snprintf(age, sizeof(age), "%hhd", info->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))) {
+	if (info->personalwebpage && info->personalwebpage[0] && (utf8 = oscar_utf8_try_convert(account, info->personalwebpage))) {
 		buf = g_strdup_printf("<a href=\"%s\">%s</a>", utf8, utf8);
 		purple_notify_user_info_add_pair(user_info, _("Personal Web Page"), buf);
 		g_free(buf);
@@ -4079,7 +4091,7 @@
 		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))) {
+		if (info->workwebpage && info->workwebpage[0] && (utf8 = oscar_utf8_try_convert(account, info->workwebpage))) {
 			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);
@@ -4113,7 +4125,7 @@
 	if (info->uin && info->nick && info->nick[0] && (utf8 = oscar_utf8_try_convert(account, info->nick))) {
 		g_snprintf(who, sizeof(who), "%u", info->uin);
 		serv_got_alias(gc, who, utf8);
-		if ((b = purple_find_buddy(gc->account, who))) {
+		if ((b = purple_find_buddy(account, who))) {
 			purple_blist_node_set_string((PurpleBlistNode*)b, "servernick", utf8);
 		}
 		g_free(utf8);
@@ -4243,7 +4255,7 @@
 	PurpleConnection *gc = od->gc;
 	va_list ap;
 	guint16 perms, err;
-	char *url, *sn, *email;
+	char *url, *bn, *email;
 	int change;
 
 	va_start(ap, fr);
@@ -4251,15 +4263,15 @@
 	perms = (guint16) va_arg(ap, unsigned int);
 	err = (guint16) va_arg(ap, unsigned int);
 	url = va_arg(ap, char *);
-	sn = va_arg(ap, char *);
+	bn = va_arg(ap, char *);
 	email = va_arg(ap, char *);
 	va_end(ap);
 
 	purple_debug_misc("oscar",
-					"account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, sn=%s, email=%s\n",
+					"account info: because of %s, perms=0x%04x, err=0x%04x, url=%s, bn=%s, email=%s\n",
 					change ? "change" : "request", perms, err,
 					(url != NULL) ? url : "(null)",
-					(sn != NULL) ? sn : "(null)",
+					(bn != NULL) ? bn : "(null)",
 					(email != NULL) ? email : "(null)");
 
 	if ((err > 0) && (url != NULL)) {
@@ -4301,7 +4313,7 @@
 	OscarData *od;
 	FlapConnection *conn;
 
-	od = (OscarData *)gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	conn = flap_connection_getbytype(od, SNAC_FAMILY_LOCATE);
 	if (conn != NULL)
 		flap_connection_send_keepalive(od, conn);
@@ -4313,7 +4325,7 @@
 	OscarData *od;
 	PeerConnection *conn;
 
-	od = (OscarData *)gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	conn = peer_connection_find_by_type(od, name, OSCAR_CAPABILITY_DIRECTIM);
 
 	if ((conn != NULL) && (conn->ready))
@@ -4323,7 +4335,7 @@
 	else {
 		/* Don't send if this turkey is in our deny list */
 		GSList *list;
-		for (list=gc->account->deny; (list && aim_sncmp(name, list->data)); list=list->next);
+		for (list=gc->account->deny; (list && oscar_util_name_compare(name, list->data)); list=list->next);
 		if (!list) {
 			struct buddyinfo *bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(gc->account, name));
 			if (bi && bi->typingnot) {
@@ -4409,7 +4421,7 @@
 
 	/* Convert the message to a good encoding */
 	purple_plugin_oscar_convert_to_best_encoding(conn->od->gc,
-			conn->sn, msg->str, &tmp, &tmplen, &charset, &charsubset);
+			conn->bn, msg->str, &tmp, &tmplen, &charset, &charsubset);
 	g_string_free(msg, TRUE);
 	msg = g_string_new_len(tmp, tmplen);
 	g_free(tmp);
@@ -4435,11 +4447,11 @@
 	char *tmp1, *tmp2;
 	gboolean is_sms, is_html;
 
-	od = (OscarData *)gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	account = purple_connection_get_account(gc);
 	ret = 0;
 
-	is_sms = aim_snvalid_sms(name);
+	is_sms = oscar_util_valid_name_sms(name);
 
 	if (od->icq && is_sms) {
 		/*
@@ -4478,7 +4490,7 @@
 			                        "You must be Direct Connected to send IM Images."),
 			                        PURPLE_MESSAGE_ERROR, time(NULL));
 
-		buddy = purple_find_buddy(gc->account, name);
+		buddy = purple_find_buddy(account, name);
 
 		bi = g_hash_table_lookup(od->buddyinfo, purple_normalize(account, name));
 		if (!bi) {
@@ -4553,17 +4565,17 @@
 			purple_imgstore_unref(img);
 		}
 
-		args.destsn = name;
+		args.destbn = name;
 
 		/*
 		 * If we're IMing an SMS user or an ICQ user from an ICQ account, then strip HTML.
 		 */
-		if (aim_snvalid_sms(name)) {
+		if (oscar_util_valid_name_sms(name)) {
 			/* Messaging an SMS (mobile) user */
 			tmp2 = purple_markup_strip_html(tmp1);
 			is_html = FALSE;
-		} else if (aim_snvalid_icq(purple_account_get_username(account))) {
-			if (aim_snvalid_icq(name)) {
+		} else if (oscar_util_valid_name_icq(purple_account_get_username(account))) {
+			if (oscar_util_valid_name_icq(name)) {
 				/* From ICQ to ICQ */
 				tmp2 = purple_markup_strip_html(tmp1);
 				is_html = FALSE;
@@ -4623,9 +4635,9 @@
  * AIM users can only request AIM info.
  */
 void oscar_get_info(PurpleConnection *gc, const char *name) {
-	OscarData *od = (OscarData *)gc->proto_data;
-
-	if (od->icq && aim_snvalid_icq(name))
+	OscarData *od = purple_connection_get_protocol_data(gc);
+
+	if (od->icq && oscar_util_valid_name_icq(name))
 		aim_icq_getallinfo(od, name);
 	else
 		aim_locate_getinfoshort(od, name, 0x00000003);
@@ -4635,14 +4647,14 @@
 static void oscar_set_dir(PurpleConnection *gc, const char *first, const char *middle, const char *last,
 			  const char *maiden, const char *city, const char *state, const char *country, int web) {
 	/* XXX - some of these things are wrong, but i'm lazy */
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	aim_locate_setdirinfo(od, first, middle, last,
 				maiden, NULL, NULL, city, state, NULL, 0, web);
 }
 #endif
 
 void oscar_set_idle(PurpleConnection *gc, int time) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	aim_srv_setidle(od, time);
 }
 
@@ -4688,7 +4700,7 @@
 	const gchar *status_id;
 	guint32 data = 0x00000000;
 
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	account = purple_connection_get_account(gc);
 	status = purple_account_get_active_status(account);
 	status_id = purple_status_get_id(status);
@@ -4722,7 +4734,7 @@
 						  gboolean setstatus, PurpleStatus *status)
 {
 	PurpleConnection *gc = purple_account_get_connection(account);
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	PurpleStatusType *status_type;
 	PurpleStatusPrimitive primitive;
 
@@ -4800,16 +4812,19 @@
 	}
 	else
 	{
-		char *status_text = NULL;
-		
+		gchar *linkified;
+
 		htmlaway = purple_status_get_attr_string(status, "message");
 		if ((htmlaway == NULL) || (*htmlaway == '\0'))
 			htmlaway = purple_status_type_get_name(status_type);
-		
+
 		/* ICQ 6.x seems to use an available message for all statuses so set one */
-		if (od->icq) 
+		if (od->icq)
 		{
+			char *status_text;
+
 			status_text = purple_markup_strip_html(htmlaway);
+
 			/* If the status_text is longer than 251 characters then truncate it */
 			if (strlen(status_text) > MAXAVAILMSGLEN)
 			{
@@ -4817,12 +4832,13 @@
 				strcpy(tmp, "...");
 			}
 			aim_srv_setextrainfo(od, FALSE, 0, TRUE, status_text, NULL);
+			g_free(status_text);
 		}
-		g_free(status_text);
 
 		/* Set a proper away message for icq too so that they work for old third party clients */
-		
-		away = purple_prpl_oscar_convert_to_infotext(htmlaway, &awaylen, &away_encoding);
+		linkified = purple_markup_linkify(htmlaway);
+		away = purple_prpl_oscar_convert_to_infotext(linkified, &awaylen, &away_encoding);
+		g_free(linkified);
 
 		if (awaylen > od->rights.maxawaymsglen)
 		{
@@ -4848,24 +4864,18 @@
 }
 
 static void
-oscar_set_status_icq(PurpleAccount *account, PurpleStatus *status)
+oscar_set_status_icq(PurpleAccount *account)
 {
 	PurpleConnection *gc = purple_account_get_connection(account);
-	OscarData *od = NULL;
-
-	if (gc)
-		od = (OscarData *)gc->proto_data;
-	if (!od)
-		return;
-
-	if (purple_status_type_get_primitive(purple_status_get_type(status)) == PURPLE_STATUS_INVISIBLE)
-		account->perm_deny = PURPLE_PRIVACY_ALLOW_USERS;
-	else
-		account->perm_deny = PURPLE_PRIVACY_DENY_USERS;
-
-	if ((od->ssi.received_data) && (aim_ssi_getpermdeny(od->ssi.local) != account->perm_deny))
-		aim_ssi_setpermdeny(od, account->perm_deny, 0xffffffff);
-
+
+	/* Our permit/deny setting affects our invisibility */
+	oscar_set_permit_deny(gc);
+
+	/*
+	 * TODO: I guess we should probably wait and do this after we get
+	 * confirmation from the above SSI call?  Right now other people
+	 * see our status blip to "invisible" before we appear offline.
+	 */
 	oscar_set_extendedstatus(gc);
 }
 
@@ -4884,14 +4894,14 @@
 	oscar_set_info_and_status(account, FALSE, NULL, TRUE, status);
 
 	/* Set the ICQ status for ICQ accounts only */
-	if (aim_snvalid_icq(purple_account_get_username(account)))
-		oscar_set_status_icq(account, status);
+	if (oscar_util_valid_name_icq(purple_account_get_username(account)))
+		oscar_set_status_icq(account);
 }
 
 #ifdef CRAZY_WARN
 void
 oscar_warn(PurpleConnection *gc, const char *name, gboolean anonymous) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	aim_im_warn(od, od->conn, name, anonymous ? AIM_WARN_ANON : 0);
 }
 #endif
@@ -4900,14 +4910,17 @@
 oscar_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) {
 	OscarData *od;
 	PurpleAccount *account;
-
-	od = (OscarData *)gc->proto_data;
+	const char *bname, *gname;
+
+	od = purple_connection_get_protocol_data(gc);
 	account = purple_connection_get_account(gc);
-
-	if (!aim_snvalid(buddy->name)) {
+	bname = purple_buddy_get_name(buddy);
+	gname = purple_group_get_name(group);
+
+	if (!oscar_util_valid_name(bname)) {
 		gchar *buf;
-		buf = g_strdup_printf(_("Could not add the buddy %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), buddy->name);
-		if (!purple_conv_present_error(buddy->name, account, buf))
+		buf = g_strdup_printf(_("Could not add the buddy %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), bname);
+		if (!purple_conv_present_error(bname, account, buf))
 			purple_notify_error(gc, NULL, _("Unable to Add"), buf);
 		g_free(buf);
 
@@ -4917,39 +4930,40 @@
 		return;
 	}
 
-	if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, group->name, buddy->name, AIM_SSI_TYPE_BUDDY))) {
+	if ((od->ssi.received_data) && !(aim_ssi_itemlist_finditem(od->ssi.local, gname, bname, AIM_SSI_TYPE_BUDDY))) {
 		purple_debug_info("oscar",
-				   "ssi: adding buddy %s to group %s\n", buddy->name, group->name);
-		aim_ssi_addbuddy(od, buddy->name, group->name, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0);
+				   "ssi: adding buddy %s to group %s\n", bname, gname);
+		aim_ssi_addbuddy(od, bname, gname, NULL, purple_buddy_get_alias_only(buddy), NULL, NULL, 0);
 
 		/* Mobile users should always be online */
-		if (buddy->name[0] == '+') {
+		if (bname[0] == '+') {
 			purple_prpl_got_user_status(account,
-					purple_buddy_get_name(buddy),
-					OSCAR_STATUS_ID_AVAILABLE, NULL);
+					bname, OSCAR_STATUS_ID_AVAILABLE, NULL);
 			purple_prpl_got_user_status(account,
-					purple_buddy_get_name(buddy),
-					OSCAR_STATUS_ID_MOBILE, NULL);
+					bname, OSCAR_STATUS_ID_MOBILE, NULL);
 		}
 	}
 
 	/* XXX - Should this be done from AIM accounts, as well? */
 	if (od->icq)
-		aim_icq_getalias(od, buddy->name);
+		aim_icq_getalias(od, bname);
 }
 
 void oscar_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 
 	if (od->ssi.received_data) {
+		const char *gname = purple_group_get_name(group);
+		const char *bname = purple_buddy_get_name(buddy);
 		purple_debug_info("oscar",
-				   "ssi: deleting buddy %s from group %s\n", buddy->name, group->name);
-		aim_ssi_delbuddy(od, buddy->name, group->name);
+				   "ssi: deleting buddy %s from group %s\n", bname, gname);
+		aim_ssi_delbuddy(od, bname, gname);
 	}
 }
 
 void oscar_move_buddy(PurpleConnection *gc, const char *name, const char *old_group, const char *new_group) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
+
 	if (od->ssi.received_data && strcmp(old_group, new_group)) {
 		purple_debug_info("oscar",
 				   "ssi: moving buddy %s from group %s to group %s\n", name, old_group, new_group);
@@ -4958,7 +4972,8 @@
 }
 
 void oscar_alias_buddy(PurpleConnection *gc, const char *name, const char *alias) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
+
 	if (od->ssi.received_data) {
 		char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, name);
 		if (gname) {
@@ -4973,10 +4988,11 @@
  * FYI, the OSCAR SSI code removes empty groups automatically.
  */
 void oscar_rename_group(PurpleConnection *gc, const char *old_name, PurpleGroup *group, GList *moved_buddies) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 
 	if (od->ssi.received_data) {
-		if (aim_ssi_itemlist_finditem(od->ssi.local, group->name, NULL, AIM_SSI_TYPE_GROUP)) {
+		const char *gname = purple_group_get_name(group);
+		if (aim_ssi_itemlist_finditem(od->ssi.local, gname, NULL, AIM_SSI_TYPE_GROUP)) {
 			GList *cur, *groups = NULL;
 			PurpleAccount *account = purple_connection_get_account(gc);
 
@@ -4986,25 +5002,25 @@
 				/* node is PurpleBuddy, parent is a PurpleContact.
 				 * We must go two levels up to get the Group */
 				groups = g_list_append(groups,
-						node->parent->parent);
+						purple_buddy_get_group((PurpleBuddy*)node));
 			}
 
 			purple_account_remove_buddies(account, moved_buddies, groups);
 			purple_account_add_buddies(account, moved_buddies);
 			g_list_free(groups);
 			purple_debug_info("oscar",
-					   "ssi: moved all buddies from group %s to %s\n", old_name, group->name);
+					   "ssi: moved all buddies from group %s to %s\n", old_name, gname);
 		} else {
-			aim_ssi_rename_group(od, old_name, group->name);
+			aim_ssi_rename_group(od, old_name, gname);
 			purple_debug_info("oscar",
-					   "ssi: renamed group %s to %s\n", old_name, group->name);
+					   "ssi: renamed group %s to %s\n", old_name, gname);
 		}
 	}
 }
 
 void oscar_remove_group(PurpleConnection *gc, PurpleGroup *group)
 {
-	aim_ssi_delgroup(gc->proto_data, group->name);
+	aim_ssi_delgroup(purple_connection_get_protocol_data(gc), purple_group_get_name(group));
 }
 
 static gboolean purple_ssi_rerequestdata(gpointer data) {
@@ -5035,7 +5051,7 @@
 		return 1;
 	}
 
-	oscar_set_extendedstatus(gc);
+	oscar_set_status_icq(purple_connection_get_account(gc));
 
 	return 1;
 }
@@ -5085,7 +5101,7 @@
 	guint32 timestamp;
 
 	gc = od->gc;
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	account = purple_connection_get_account(gc);
 
 	va_start(ap, fr);
@@ -5113,33 +5129,44 @@
 		/* Buddies */
 		cur = NULL;
 		if ((blist = purple_get_blist()) != NULL) {
-			for (gnode = blist->root; gnode; gnode = gnode->next) {
+			for (gnode = purple_blist_get_root(); gnode;
+					gnode = purple_blist_node_get_sibling_next(gnode)) {
+				const char *gname;
 				if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 					continue;
 				g = (PurpleGroup *)gnode;
-				for (cnode = gnode->child; cnode; cnode = cnode->next) {
+				gname = purple_group_get_name(g);
+				for (cnode = purple_blist_node_get_first_child(gnode);
+						cnode;
+						cnode = purple_blist_node_get_sibling_next(cnode)) {
 					if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 						continue;
-					for (bnode = cnode->child; bnode; bnode = bnode->next) {
+					for (bnode = purple_blist_node_get_first_child(cnode);
+							bnode;
+							bnode = purple_blist_node_get_sibling_next(bnode)) {
+						const char *bname;
 						if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 							continue;
 						b = (PurpleBuddy *)bnode;
-						if (b->account == gc->account) {
-							if (aim_ssi_itemlist_exists(od->ssi.local, b->name)) {
+						bname = purple_buddy_get_name(b);
+						if (purple_buddy_get_account(b) == account) {
+							if (aim_ssi_itemlist_exists(od->ssi.local, bname)) {
 								/* If the buddy is an ICQ user then load his nickname */
 								const char *servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick");
 								char *alias;
+								const char *balias;
 								if (servernick)
-									serv_got_alias(gc, b->name, servernick);
+									serv_got_alias(gc, bname, servernick);
 
 								/* Store local alias on server */
-								alias = aim_ssi_getalias(od->ssi.local, g->name, b->name);
-								if (!alias && b->alias && strlen(b->alias))
-									aim_ssi_aliasbuddy(od, g->name, b->name, b->alias);
+								alias = aim_ssi_getalias(od->ssi.local, gname, bname);
+								balias = purple_buddy_get_local_buddy_alias(b);
+								if (!alias && balias && *balias)
+									aim_ssi_aliasbuddy(od, gname, bname, balias);
 								g_free(alias);
 							} else {
 								purple_debug_info("oscar",
-										"ssi: removing buddy %s from local list\n", b->name);
+										"ssi: removing buddy %s from local list\n", bname);
 								/* We can't actually remove now because it will screw up our looping */
 								cur = g_slist_prepend(cur, b);
 							}
@@ -5156,8 +5183,8 @@
 		}
 
 		/* Permit list */
-		if (gc->account->permit) {
-			next = gc->account->permit;
+		if (account->permit) {
+			next = account->permit;
 			while (next != NULL) {
 				cur = next;
 				next = next->next;
@@ -5170,8 +5197,8 @@
 		}
 
 		/* Deny list */
-		if (gc->account->deny) {
-			next = gc->account->deny;
+		if (account->deny) {
+			next = account->deny;
 			while (next != NULL) {
 				cur = next;
 				next = next->next;
@@ -5215,7 +5242,7 @@
 						if (g_utf8_validate(gname, -1, NULL))
 							gname_utf8 = g_strdup(gname);
 						else
-							gname_utf8 = oscar_utf8_try_convert(gc->account, gname);
+							gname_utf8 = oscar_utf8_try_convert(account, gname);
 					} else
 						gname_utf8 = NULL;
 
@@ -5235,18 +5262,18 @@
 					} else
 						alias_utf8 = NULL;
 
-					b = purple_find_buddy_in_group(gc->account, curitem->name, g);
+					b = purple_find_buddy_in_group(account, curitem->name, g);
 					if (b) {
 						/* Get server stored alias */
 						purple_blist_alias_buddy(b, alias_utf8);
 					} else {
-						b = purple_buddy_new(gc->account, curitem->name, alias_utf8);
+						b = purple_buddy_new(account, curitem->name, alias_utf8);
 
 						purple_debug_info("oscar",
-								   "ssi: adding buddy %s to group %s to local list\n", curitem->name, g->name);
+								   "ssi: adding buddy %s to group %s to local list\n", curitem->name, gname);
 						purple_blist_add_buddy(b, NULL, g, NULL);
 					}
-					if (!aim_sncmp(curitem->name, account->username)) {
+					if (!oscar_util_name_compare(curitem->name, purple_account_get_username(account))) {
 						char *comment = aim_ssi_getcomment(od->ssi.local, gname, curitem->name);
 						if (comment != NULL)
 						{
@@ -5256,7 +5283,7 @@
 					}
 
 					/* Mobile users should always be online */
-					if (b->name[0] == '+') {
+					if (curitem->name[0] == '+') {
 						purple_prpl_got_user_status(account,
 								purple_buddy_get_name(b),
 								OSCAR_STATUS_ID_AVAILABLE, NULL);
@@ -5279,7 +5306,7 @@
 					if (g_utf8_validate(gname, -1, NULL))
 						gname_utf8 = g_strdup(gname);
 					else
-						gname_utf8 = oscar_utf8_try_convert(gc->account, gname);
+						gname_utf8 = oscar_utf8_try_convert(account, gname);
 				} else
 					gname_utf8 = NULL;
 
@@ -5294,7 +5321,7 @@
 				if (curitem->name) {
 					/* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
 					GSList *list;
-					for (list=account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
+					for (list=account->permit; (list && oscar_util_name_compare(curitem->name, list->data)); list=list->next);
 					if (!list) {
 						purple_debug_info("oscar",
 								   "ssi: adding permit buddy %s to local list\n", curitem->name);
@@ -5306,7 +5333,7 @@
 			case 0x0003: { /* Deny buddy */
 				if (curitem->name) {
 					GSList *list;
-					for (list=account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
+					for (list=account->deny; (list && oscar_util_name_compare(curitem->name, list->data)); list=list->next);
 					if (!list) {
 						purple_debug_info("oscar",
 								   "ssi: adding deny buddy %s to local list\n", curitem->name);
@@ -5316,15 +5343,19 @@
 			} break;
 
 			case 0x0004: { /* Permit/deny setting */
-				if (curitem->data) {
-					guint8 permdeny;
-					if ((permdeny = aim_ssi_getpermdeny(od->ssi.local)) && (permdeny != account->perm_deny)) {
+				/*
+				 * We don't inherit the permit/deny setting from the server
+				 * for ICQ because, for ICQ, this setting controls who can
+				 * see your online status when you are invisible.  Thus it is
+				 * a part of your status and not really related to blocking.
+				 */
+				if (!od->icq && curitem->data) {
+					guint8 perm_deny = aim_ssi_getpermdeny(od->ssi.local);
+					if (perm_deny != 0 && perm_deny != account->perm_deny)
+					{
 						purple_debug_info("oscar",
-								   "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, permdeny);
-						account->perm_deny = permdeny;
-						if (od->icq && account->perm_deny == PURPLE_PRIVACY_ALLOW_USERS) {
-							purple_presence_set_status_active(account->presence, OSCAR_STATUS_ID_INVISIBLE, TRUE);
-						}
+								   "ssi: changing permdeny from %d to %hhu\n", account->perm_deny, perm_deny);
+						account->perm_deny = perm_deny;
 					}
 				}
 			} break;
@@ -5335,7 +5366,7 @@
 		} /* End of switch on curitem->type */
 	} /* End of for loop */
 
-	oscar_set_extendedstatus(gc);
+	oscar_set_status_icq(account);
 
 	/* Activate SSI */
 	/* Sending the enable causes other people to be able to see you, and you to see them */
@@ -5469,13 +5500,11 @@
 		purple_blist_add_buddy(b, NULL, g, NULL);
 
 		/* Mobile users should always be online */
-		if (b->name[0] == '+') {
+		if (name[0] == '+') {
 			purple_prpl_got_user_status(account,
-					purple_buddy_get_name(b),
-					OSCAR_STATUS_ID_AVAILABLE, NULL);
+					name, OSCAR_STATUS_ID_AVAILABLE, NULL);
 			purple_prpl_got_user_status(account,
-					purple_buddy_get_name(b),
-					OSCAR_STATUS_ID_MOBILE, NULL);
+					name, OSCAR_STATUS_ID_MOBILE, NULL);
 		}
 
 	}
@@ -5498,36 +5527,36 @@
 static int purple_ssi_authgiven(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
 	PurpleConnection *gc = od->gc;
 	va_list ap;
-	char *sn, *msg;
+	char *bn, *msg;
 	gchar *dialog_msg, *nombre;
 	struct name_data *data;
 	PurpleBuddy *buddy;
 
 	va_start(ap, fr);
-	sn = va_arg(ap, char *);
+	bn = va_arg(ap, char *);
 	msg = va_arg(ap, char *);
 	va_end(ap);
 
 	purple_debug_info("oscar",
-			   "ssi: %s has given you permission to add him to your buddy list\n", sn);
-
-	buddy = purple_find_buddy(gc->account, sn);
+			   "ssi: %s has given you permission to add him to your buddy list\n", bn);
+
+	buddy = purple_find_buddy(purple_connection_get_account(gc), bn);
 	if (buddy && (purple_buddy_get_alias_only(buddy)))
-		nombre = g_strdup_printf("%s (%s)", sn, purple_buddy_get_alias_only(buddy));
+		nombre = g_strdup_printf("%s (%s)", bn, purple_buddy_get_alias_only(buddy));
 	else
-		nombre = g_strdup(sn);
+		nombre = g_strdup(bn);
 
 	dialog_msg = g_strdup_printf(_("The user %s has given you permission to add him or her to your buddy list.  Do you want to add this user?"), nombre);
 	g_free(nombre);
 
 	data = g_new(struct name_data, 1);
 	data->gc = gc;
-	data->name = g_strdup(sn);
+	data->name = g_strdup(bn);
 	data->nick = (buddy ? g_strdup(purple_buddy_get_alias_only(buddy)) : NULL);
 
 	purple_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
 						PURPLE_DEFAULT_ACTION_NONE,
-						purple_connection_get_account(gc), sn, NULL,
+						purple_connection_get_account(gc), bn, NULL,
 						data,
 						G_CALLBACK(purple_icq_buddyadd),
 						G_CALLBACK(oscar_free_name_data));
@@ -5539,7 +5568,7 @@
 static int purple_ssi_authrequest(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
 	PurpleConnection *gc = od->gc;
 	va_list ap;
-	char *sn;
+	char *bn;
 	char *msg;
 	PurpleAccount *account = purple_connection_get_account(gc);
 	gchar *reason = NULL;
@@ -5547,24 +5576,24 @@
 	PurpleBuddy *buddy;
 
 	va_start(ap, fr);
-	sn = va_arg(ap, char *);
+	bn = va_arg(ap, char *);
 	msg = va_arg(ap, char *);
 	va_end(ap);
 
 	purple_debug_info("oscar",
-			   "ssi: received authorization request from %s\n", sn);
-
-	buddy = purple_find_buddy(account, sn);
+			   "ssi: received authorization request from %s\n", bn);
+
+	buddy = purple_find_buddy(account, bn);
 
 	if (msg != NULL)
-		reason = purple_plugin_oscar_decode_im_part(account, sn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg));
+		reason = purple_plugin_oscar_decode_im_part(account, bn, AIM_CHARSET_CUSTOM, 0x0000, msg, strlen(msg));
 
 	data = g_new(struct name_data, 1);
 	data->gc = gc;
-	data->name = g_strdup(sn);
+	data->name = g_strdup(bn);
 	data->nick = (buddy ? g_strdup(purple_buddy_get_alias_only(buddy)) : NULL);
 
-	purple_account_request_authorization(account, sn, NULL,
+	purple_account_request_authorization(account, bn, NULL,
 			(buddy ? purple_buddy_get_alias_only(buddy) : NULL),
 			reason, buddy != NULL, purple_auth_grant,
 			purple_auth_dontgrant_msgprompt, data);
@@ -5576,25 +5605,25 @@
 static int purple_ssi_authreply(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
 	PurpleConnection *gc = od->gc;
 	va_list ap;
-	char *sn, *msg;
+	char *bn, *msg;
 	gchar *dialog_msg, *nombre;
 	guint8 reply;
 	PurpleBuddy *buddy;
 
 	va_start(ap, fr);
-	sn = va_arg(ap, char *);
+	bn = va_arg(ap, char *);
 	reply = (guint8)va_arg(ap, int);
 	msg = va_arg(ap, char *);
 	va_end(ap);
 
 	purple_debug_info("oscar",
-			   "ssi: received authorization reply from %s.  Reply is 0x%04hhx\n", sn, reply);
-
-	buddy = purple_find_buddy(gc->account, sn);
+			   "ssi: received authorization reply from %s.  Reply is 0x%04hhx\n", bn, reply);
+
+	buddy = purple_find_buddy(purple_connection_get_account(gc), bn);
 	if (buddy && (purple_buddy_get_alias_only(buddy)))
-		nombre = g_strdup_printf("%s (%s)", sn, purple_buddy_get_alias_only(buddy));
+		nombre = g_strdup_printf("%s (%s)", bn, purple_buddy_get_alias_only(buddy));
 	else
-		nombre = g_strdup(sn);
+		nombre = g_strdup(bn);
 
 	if (reply) {
 		/* Granted */
@@ -5613,17 +5642,19 @@
 
 static int purple_ssi_gotadded(OscarData *od, FlapConnection *conn, FlapFrame *fr, ...) {
 	PurpleConnection *gc = od->gc;
+	PurpleAccount *account = purple_connection_get_account(gc);
 	va_list ap;
-	char *sn;
+	char *bn;
 	PurpleBuddy *buddy;
 
 	va_start(ap, fr);
-	sn = va_arg(ap, char *);
+	bn = va_arg(ap, char *);
 	va_end(ap);
 
-	buddy = purple_find_buddy(gc->account, sn);
-	purple_debug_info("oscar", "ssi: %s added you to their buddy list\n", sn);
-	purple_account_notify_added(gc->account, sn, NULL, (buddy ? purple_buddy_get_alias_only(buddy) : NULL), NULL);
+	buddy = purple_find_buddy(account, bn);
+	purple_debug_info("oscar", "ssi: %s added you to their buddy list\n", bn);
+	purple_account_notify_added(account, bn, NULL,
+			(buddy ? purple_buddy_get_alias_only(buddy) : NULL), NULL);
 
 	return 1;
 }
@@ -5672,7 +5703,7 @@
 void
 oscar_join_chat(PurpleConnection *gc, GHashTable *data)
 {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	FlapConnection *conn;
 	char *name, *exchange;
 	int exchange_int;
@@ -5707,7 +5738,7 @@
 void
 oscar_chat_invite(PurpleConnection *gc, int id, const char *message, const char *name)
 {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	struct chat_connection *ccon = find_oscar_chat(gc, id);
 
 	if (ccon == NULL)
@@ -5727,14 +5758,16 @@
 
 	g_return_if_fail(conv != NULL);
 
-	purple_debug_info("oscar", "Leaving chat room %s\n", conv->name);
+	purple_debug_info("oscar", "Leaving chat room %s\n",
+			purple_conversation_get_name(conv));
 
 	cc = find_oscar_chat(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)));
 	oscar_chat_kill(gc, cc);
 }
 
-int oscar_send_chat(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags) {
-	OscarData *od = (OscarData *)gc->proto_data;
+int oscar_send_chat(PurpleConnection *gc, int id, const char *message, PurpleMessageFlags flags)
+{
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	PurpleConversation *conv = NULL;
 	struct chat_connection *c = NULL;
 	char *buf, *buf2, *buf3;
@@ -5801,30 +5834,32 @@
 
 const char *oscar_list_icon_icq(PurpleAccount *a, PurpleBuddy *b)
 {
-	if ((b == NULL) || (b->name == NULL) || aim_snvalid_sms(b->name))
+	const char *name = b ? purple_buddy_get_name(b) : NULL;
+	if ((b == NULL) || (name == NULL) || oscar_util_valid_name_sms(name))
 	{
-		if (a == NULL || aim_snvalid_icq(purple_account_get_username(a)))
+		if (a == NULL || oscar_util_valid_name_icq(purple_account_get_username(a)))
 			return "icq";
 		else
 			return "aim";
 	}
 
-	if (aim_snvalid_icq(b->name))
+	if (oscar_util_valid_name_icq(name))
 		return "icq";
 	return "aim";
 }
 
 const char *oscar_list_icon_aim(PurpleAccount *a, PurpleBuddy *b)
 {
-	if ((b == NULL) || (b->name == NULL) || aim_snvalid_sms(b->name))
+	const char *name = b ? purple_buddy_get_name(b) : NULL;
+	if ((b == NULL) || (name == NULL) || oscar_util_valid_name_sms(name))
 	{
-		if (a != NULL && aim_snvalid_icq(purple_account_get_username(a)))
+		if (a != NULL && oscar_util_valid_name_icq(purple_account_get_username(a)))
 			return "icq";
 		else
 			return "aim";
 	}
 
-	if (aim_snvalid_icq(b->name))
+	if (oscar_util_valid_name_icq(name))
 		return "icq";
 	return "aim";
 }
@@ -5838,14 +5873,16 @@
 	PurpleStatus *status;
 	const char *status_id;
 	aim_userinfo_t *userinfo = NULL;
-
-	account = b->account;
+	const char *name;
+
+	account = purple_buddy_get_account(b);
+	name = purple_buddy_get_name(b);
 	if (account != NULL)
-		gc = account->gc;
+		gc = purple_account_get_connection(account);
 	if (gc != NULL)
-		od = gc->proto_data;
+		od = purple_connection_get_protocol_data(gc);
 	if (od != NULL)
-		userinfo = aim_locate_finduserinfo(od, b->name);
+		userinfo = aim_locate_finduserinfo(od, name);
 
 	presence = purple_buddy_get_presence(b);
 	status = purple_presence_get_active_status(presence);
@@ -5853,9 +5890,9 @@
 
 	if (purple_presence_is_online(presence) == FALSE) {
 		char *gname;
-		if ((b->name) && (od) && (od->ssi.received_data) &&
-			(gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name)) &&
-			(aim_ssi_waitingforauth(od->ssi.local, gname, b->name))) {
+		if ((name) && (od) && (od->ssi.received_data) &&
+			(gname = aim_ssi_itemlist_findparentname(od->ssi.local, name)) &&
+			(aim_ssi_waitingforauth(od->ssi.local, gname, name))) {
 			return "not-authorized";
 		}
 	}
@@ -5878,15 +5915,17 @@
 void oscar_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
 {
 	PurpleConnection *gc;
+	PurpleAccount *account;
 	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);
+	account = purple_buddy_get_account(b);
+	gc = purple_account_get_connection(account);
+	od = purple_connection_get_protocol_data(gc);
+	userinfo = aim_locate_finduserinfo(od, purple_buddy_get_name(b));
 
 	oscar_user_info_append_status(gc, user_info, b, userinfo, /* strip_html_tags */ TRUE);
 
@@ -5907,15 +5946,16 @@
 
 	gc = purple_account_get_connection(purple_buddy_get_account(b));
 	account = purple_connection_get_account(gc);
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	presence = purple_buddy_get_presence(b);
 	status = purple_presence_get_active_status(presence);
 	id = purple_status_get_id(status);
 
 	if ((od != NULL) && !purple_presence_is_online(presence))
 	{
-		char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name);
-		if (aim_ssi_waitingforauth(od->ssi.local, gname, b->name))
+		const char *name = purple_buddy_get_name(b);
+		char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, name);
+		if (aim_ssi_waitingforauth(od->ssi.local, gname, name))
 			ret = g_strdup(_("Not Authorized"));
 		else
 			ret = g_strdup(_("Offline"));
@@ -6006,55 +6046,62 @@
 
 void oscar_set_permit_deny(PurpleConnection *gc) {
 	PurpleAccount *account = purple_connection_get_account(gc);
-	OscarData *od = (OscarData *)gc->proto_data;
-
-	if (od->ssi.received_data) {
-		switch (account->perm_deny) {
-			case PURPLE_PRIVACY_ALLOW_ALL:
-				aim_ssi_setpermdeny(od, 0x01, 0xffffffff);
-				break;
-			case PURPLE_PRIVACY_ALLOW_BUDDYLIST:
-				aim_ssi_setpermdeny(od, 0x05, 0xffffffff);
-				break;
-			case PURPLE_PRIVACY_ALLOW_USERS:
-				aim_ssi_setpermdeny(od, 0x03, 0xffffffff);
-				break;
-			case PURPLE_PRIVACY_DENY_ALL:
-				aim_ssi_setpermdeny(od, 0x02, 0xffffffff);
-				break;
-			case PURPLE_PRIVACY_DENY_USERS:
-				aim_ssi_setpermdeny(od, 0x04, 0xffffffff);
-				break;
-			default:
-				aim_ssi_setpermdeny(od, 0x01, 0xffffffff);
-				break;
-		}
-	}
+	OscarData *od = purple_connection_get_protocol_data(gc);
+	PurplePrivacyType perm_deny;
+
+	/*
+	 * For ICQ the permit/deny setting controls who you can see you
+	 * online when you set your status to "invisible."  If we're ICQ
+	 * and we're invisible then we need to use one of
+	 * PURPLE_PRIVACY_ALLOW_USERS or PURPLE_PRIVACY_ALLOW_BUDDYLIST or
+	 * PURPLE_PRIVACY_DENY_USERS if we actually want to be invisible
+	 * to anyone.
+	 *
+	 * These three permit/deny settings correspond to:
+	 * 1. Invisible to everyone except the people on my "permit" list
+	 * 2. Invisible to everyone except the people on my buddy list
+	 * 3. Invisible only to the people on my "deny" list
+	 *
+	 * It would be nice to allow cases 2 and 3, but our UI doesn't have
+	 * a nice way to do it.  For now we just force case 1.
+	 */
+	if (od->icq && purple_account_is_status_active(account, OSCAR_STATUS_ID_INVISIBLE))
+		perm_deny = PURPLE_PRIVACY_ALLOW_USERS;
+	else
+		perm_deny = account->perm_deny;
+
+	if (od->ssi.received_data)
+		/*
+		 * Conveniently there is a one-to-one mapping between the
+		 * values of libpurple's PurplePrivacyType and the values used
+		 * by the oscar protocol.
+		 */
+		aim_ssi_setpermdeny(od, perm_deny, 0xffffffff);
 }
 
 void oscar_add_permit(PurpleConnection *gc, const char *who) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	purple_debug_info("oscar", "ssi: About to add a permit\n");
 	if (od->ssi.received_data)
 		aim_ssi_addpermit(od, who);
 }
 
 void oscar_add_deny(PurpleConnection *gc, const char *who) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	purple_debug_info("oscar", "ssi: About to add a deny\n");
 	if (od->ssi.received_data)
 		aim_ssi_adddeny(od, who);
 }
 
 void oscar_rem_permit(PurpleConnection *gc, const char *who) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	purple_debug_info("oscar", "ssi: About to delete a permit\n");
 	if (od->ssi.received_data)
 		aim_ssi_delpermit(od, who);
 }
 
 void oscar_rem_deny(PurpleConnection *gc, const char *who) {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	purple_debug_info("oscar", "ssi: About to delete a deny\n");
 	if (od->ssi.received_data)
 		aim_ssi_deldeny(od, who);
@@ -6070,7 +6117,7 @@
 	g_return_val_if_fail(account != NULL, NULL);
 
 	/* Used to flag some statuses as "user settable" or not */
-	is_icq = aim_snvalid_icq(purple_account_get_username(account));
+	is_icq = oscar_util_valid_name_icq(purple_account_get_username(account));
 
 	/* Common status types */
 	/* Really the available message should only be settable for AIM accounts */
@@ -6136,24 +6183,33 @@
 }
 
 static void oscar_ssi_editcomment(struct name_data *data, const char *text) {
-	PurpleConnection *gc = data->gc;
-	OscarData *od = gc->proto_data;
+	PurpleConnection *gc;
+	PurpleAccount *account;
+	OscarData *od;
 	PurpleBuddy *b;
 	PurpleGroup *g;
-
-	if (!(b = purple_find_buddy(purple_connection_get_account(data->gc), data->name))) {
+	const char *username;
+
+	gc = data->gc;
+	od = purple_connection_get_protocol_data(gc);
+	account = purple_connection_get_account(gc);
+
+	b = purple_find_buddy(account, data->name);
+	if (b == NULL) {
 		oscar_free_name_data(data);
 		return;
 	}
 
-	if (!(g = purple_buddy_get_group(b))) {
+	g = purple_buddy_get_group(b);
+	if (g == NULL) {
 		oscar_free_name_data(data);
 		return;
 	}
 
-	aim_ssi_editcomment(od, g->name, data->name, text);
-
-	if (!aim_sncmp(data->name, gc->account->username))
+	aim_ssi_editcomment(od, purple_group_get_name(g), data->name, text);
+
+	username = purple_account_get_username(account);
+	if (!oscar_util_name_compare(data->name, username))
 		purple_check_comment(od, text);
 
 	oscar_free_name_data(data);
@@ -6169,23 +6225,27 @@
 	char *comment;
 	gchar *comment_utf8;
 	gchar *title;
+	PurpleAccount *account;
+	const char *name;
 
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
-	od = gc->proto_data;
+	name = purple_buddy_get_name(buddy);
+	account = purple_buddy_get_account(buddy);
+	gc = purple_account_get_connection(account);
+	od = purple_connection_get_protocol_data(gc);
 
 	if (!(g = purple_buddy_get_group(buddy)))
 		return;
 
 	data = g_new(struct name_data, 1);
 
-	comment = aim_ssi_getcomment(od->ssi.local, g->name, buddy->name);
-	comment_utf8 = comment ? oscar_utf8_try_convert(gc->account, comment) : NULL;
+	comment = aim_ssi_getcomment(od->ssi.local, purple_group_get_name(g), name);
+	comment_utf8 = comment ? oscar_utf8_try_convert(account, comment) : NULL;
 
 	data->gc = gc;
-	data->name = g_strdup(purple_buddy_get_name(buddy));
+	data->name = g_strdup(name);
 	data->nick = g_strdup(purple_buddy_get_alias_only(buddy));
 
 	title = g_strdup_printf(_("Buddy Comment for %s"), data->name);
@@ -6193,7 +6253,7 @@
 					   comment_utf8, TRUE, FALSE, NULL,
 					   _("_OK"), G_CALLBACK(oscar_ssi_editcomment),
 					   _("_Cancel"), G_CALLBACK(oscar_free_name_data),
-					   purple_connection_get_account(gc), data->name, NULL,
+					   account, data->name, NULL,
 					   data);
 	g_free(title);
 
@@ -6225,26 +6285,28 @@
 	PurpleConnection *gc;
 	gchar *buf;
 	struct oscar_ask_directim_data *data;
+	PurpleAccount *account;
 
 	node = object;
 
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *)node;
-	gc = purple_account_get_connection(buddy->account);
+	account = purple_buddy_get_account(buddy);
+	gc = purple_account_get_connection(account);
 
 	data = g_new0(struct oscar_ask_directim_data, 1);
-	data->who = g_strdup(buddy->name);
-	data->od = gc->proto_data;
+	data->who = g_strdup(purple_buddy_get_name(buddy));
+	data->od = purple_connection_get_protocol_data(gc);
 	buf = g_strdup_printf(_("You have selected to open a Direct IM connection with %s."),
-			buddy->name);
+			data->who);
 
 	purple_request_action(gc, NULL, buf,
 			_("Because this reveals your IP address, it "
 			  "may be considered a security risk.  Do you "
 			  "wish to continue?"),
 			0, /* Default action is "connect" */
-			purple_connection_get_account(gc), data->who, NULL,
+			account, data->who, NULL,
 			data, 2,
 			_("C_onnect"), G_CALLBACK(oscar_ask_directim_yes_cb),
 			_("_Cancel"), G_CALLBACK(oscar_ask_directim_no_cb));
@@ -6260,9 +6322,10 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *)node;
-	gc = purple_account_get_connection(buddy->account);
-
-	aim_locate_getinfoshort(gc->proto_data, purple_buddy_get_name(buddy), 0x00000003);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+
+	aim_locate_getinfoshort(purple_connection_get_protocol_data(gc),
+			purple_buddy_get_name(buddy), 0x00000003);
 }
 
 static GList *
@@ -6273,13 +6336,16 @@
 	GList *menu;
 	PurpleMenuAction *act;
 	aim_userinfo_t *userinfo;
-
-	gc = purple_account_get_connection(buddy->account);
-	od = gc->proto_data;
-	userinfo = aim_locate_finduserinfo(od, buddy->name);
+	PurpleAccount *account;
+	const char *bname = purple_buddy_get_name(buddy);
+
+	account = purple_buddy_get_account(buddy);
+	gc = purple_account_get_connection(account);
+	od = purple_connection_get_protocol_data(gc);
+	userinfo = aim_locate_finduserinfo(od, bname);
 	menu = NULL;
 
-	if (od->icq && aim_snvalid_icq(purple_buddy_get_name(buddy)))
+	if (od->icq && oscar_util_valid_name_icq(bname))
 	{
 		act = purple_menu_action_new(_("Get AIM Info"),
 								   PURPLE_CALLBACK(oscar_get_aim_info_cb),
@@ -6307,7 +6373,7 @@
 #endif
 
 	if (userinfo &&
-		aim_sncmp(purple_account_get_username(buddy->account), buddy->name) &&
+		oscar_util_name_compare(purple_account_get_username(account), bname) &&
 		PURPLE_BUDDY_IS_ONLINE(buddy))
 	{
 		if (userinfo->capabilities & OSCAR_CAPABILITY_DIRECTIM)
@@ -6331,8 +6397,8 @@
 	if (od->ssi.received_data && purple_buddy_get_group(buddy) != NULL)
 	{
 		char *gname;
-		gname = aim_ssi_itemlist_findparentname(od->ssi.local, buddy->name);
-		if (gname && aim_ssi_waitingforauth(od->ssi.local, gname, buddy->name))
+		gname = aim_ssi_itemlist_findparentname(od->ssi.local, bname);
+		if (gname && aim_ssi_waitingforauth(od->ssi.local, gname, bname))
 		{
 			act = purple_menu_action_new(_("Re-request Authorization"),
 			                           PURPLE_CALLBACK(purple_auth_sendrequest_menu),
@@ -6358,7 +6424,7 @@
 static void
 oscar_icq_privacy_opts(PurpleConnection *gc, PurpleRequestFields *fields)
 {
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	PurpleAccount *account = purple_connection_get_account(gc);
 	PurpleRequestField *f;
 	gboolean auth, web_aware;
@@ -6409,13 +6475,13 @@
 						gc);
 }
 
-static void oscar_format_screenname(PurpleConnection *gc, const char *nick) {
-	OscarData *od = gc->proto_data;
-	if (!aim_sncmp(purple_account_get_username(purple_connection_get_account(gc)), nick)) {
+static void oscar_format_username(PurpleConnection *gc, const char *nick) {
+	OscarData *od = purple_connection_get_protocol_data(gc);
+	if (!oscar_util_name_compare(purple_account_get_username(purple_connection_get_account(gc)), nick)) {
 		if (!flap_connection_getbytype(od, SNAC_FAMILY_ADMIN)) {
 			od->setnick = TRUE;
-			g_free(od->newsn);
-			od->newsn = g_strdup(nick);
+			g_free(od->newformatting);
+			od->newformatting = g_strdup(nick);
 			aim_srv_requestnew(od, SNAC_FAMILY_ADMIN);
 		} else {
 			aim_admin_setnick(od, flap_connection_getbytype(od, SNAC_FAMILY_ADMIN), nick);
@@ -6433,7 +6499,7 @@
 	FlapConnection *conn;
 
 	gc = (PurpleConnection *)action->context;
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 
 	conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
 	if (conn != NULL) {
@@ -6447,7 +6513,7 @@
 static void oscar_show_email(PurplePluginAction *action)
 {
 	PurpleConnection *gc = (PurpleConnection *) action->context;
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
 
 	if (conn) {
@@ -6460,7 +6526,7 @@
 
 static void oscar_change_email(PurpleConnection *gc, const char *email)
 {
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	FlapConnection *conn = flap_connection_getbytype(od, SNAC_FAMILY_ADMIN);
 
 	if (conn) {
@@ -6486,29 +6552,40 @@
 static void oscar_show_awaitingauth(PurplePluginAction *action)
 {
 	PurpleConnection *gc = (PurpleConnection *) action->context;
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	gchar *nombre, *text, *tmp;
 	PurpleBlistNode *gnode, *cnode, *bnode;
+	PurpleAccount *account;
 	int num=0;
 
 	text = g_strdup("");
-
-	for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+	account = purple_connection_get_account(gc);
+
+	for (gnode = purple_blist_get_root(); gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode)) {
 		PurpleGroup *group = (PurpleGroup *)gnode;
+		const char *gname;
 		if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
-		for (cnode = gnode->child; cnode; cnode = cnode->next) {
+		gname = purple_group_get_name(group);
+		for (cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode)) {
 			if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			for (bnode = cnode->child; bnode; bnode = bnode->next) {
+			for (bnode = purple_blist_node_get_first_child(cnode);
+					bnode;
+					bnode = purple_blist_node_get_sibling_next(bnode)) {
 				PurpleBuddy *buddy = (PurpleBuddy *)bnode;
+				const char *bname;
 				if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
-				if (buddy->account == gc->account && aim_ssi_waitingforauth(od->ssi.local, group->name, buddy->name)) {
+				bname = purple_buddy_get_name(buddy);
+				if (purple_buddy_get_account(buddy) == account && aim_ssi_waitingforauth(od->ssi.local, gname, bname)) {
 					if (purple_buddy_get_alias_only(buddy))
-						nombre = g_strdup_printf(" %s (%s)", buddy->name, purple_buddy_get_alias_only(buddy));
+						nombre = g_strdup_printf(" %s (%s)", bname, purple_buddy_get_alias_only(buddy));
 					else
-						nombre = g_strdup_printf(" %s", buddy->name);
+						nombre = g_strdup_printf(" %s", bname);
 					tmp = g_strdup_printf("%s%s<br>", text, nombre);
 					g_free(text);
 					text = tmp;
@@ -6534,7 +6611,7 @@
 
 static void search_by_email_cb(PurpleConnection *gc, const char *email)
 {
-	OscarData *od = (OscarData *)gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 
 	aim_search_address(od, email);
 }
@@ -6574,7 +6651,7 @@
 static void oscar_show_chpassurl(PurplePluginAction *action)
 {
 	PurpleConnection *gc = (PurpleConnection *) action->context;
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	gchar *substituted = purple_strreplace(od->authinfo->chpassurl, "%s", purple_account_get_username(purple_connection_get_account(gc)));
 	purple_notify_uri(gc, substituted);
 	g_free(substituted);
@@ -6588,7 +6665,7 @@
 
 void oscar_set_icon(PurpleConnection *gc, PurpleStoredImage *img)
 {
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 
 	if (img == NULL) {
 		aim_ssi_delicon(od);
@@ -6617,7 +6694,7 @@
 	OscarData *od;
 	PurpleAccount *account;
 
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	account = purple_connection_get_account(gc);
 
 	if (od != NULL)
@@ -6631,7 +6708,7 @@
 		 */
 		if (((userinfo == NULL) ||
 			(userinfo->capabilities & OSCAR_CAPABILITY_SENDFILE)) &&
-			aim_sncmp(who, purple_account_get_username(account)))
+			oscar_util_name_compare(who, purple_account_get_username(account)))
 		{
 			return TRUE;
 		}
@@ -6648,7 +6725,7 @@
 	PurpleAccount *account;
 	PeerConnection *conn;
 
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	account = purple_connection_get_account(gc);
 
 	xfer = purple_xfer_new(account, PURPLE_XFER_SEND, who);
@@ -6692,7 +6769,7 @@
 oscar_actions(PurplePlugin *plugin, gpointer context)
 {
 	PurpleConnection *gc = (PurpleConnection *) context;
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 	GList *menu = NULL;
 	PurplePluginAction *act;
 
@@ -6772,7 +6849,7 @@
 
 void oscar_change_passwd(PurpleConnection *gc, const char *old, const char *new)
 {
-	OscarData *od = gc->proto_data;
+	OscarData *od = purple_connection_get_protocol_data(gc);
 
 	if (od->icq) {
 		aim_icq_changepasswd(od, new);
@@ -6796,7 +6873,7 @@
 	OscarData *od;
 	PeerConnection *conn;
 
-	od = gc->proto_data;
+	od = purple_connection_get_protocol_data(gc);
 	conn = peer_connection_find_by_type(od, who, OSCAR_CAPABILITY_DIRECTIM);
 
 	if (conn != NULL)
@@ -6818,11 +6895,13 @@
 	g_return_val_if_fail(str != NULL, NULL);
 
 	/* copy str to buf and skip all blanks */
-	for (i=0, j=0; str[j] && i < BUF_LEN - 1; i++, j++)
-	{
-		while (str[j] == ' ')
-			j++;
-		buf[i] = str[j];
+	i = 0;
+	for (j = 0; str[j]; j++) {
+		if (str[j] != ' ') {
+			buf[i++] = str[j];
+			if (i >= BUF_LEN - 1)
+				break;
+		}
 	}
 	buf[i] = '\0';
 
@@ -6887,14 +6966,14 @@
 
 	/* aim:GoIM?screenname=SCREENNAME&message=MESSAGE */
 	if (!g_ascii_strcasecmp(cmd, "GoIM")) {
-		char *sname = g_hash_table_lookup(params, "screenname");
-		if (sname) {
+		char *bname = g_hash_table_lookup(params, "screenname");
+		if (bname) {
 			char *message = g_hash_table_lookup(params, "message");
 
 			PurpleConversation *conv = purple_find_conversation_with_account(
-				PURPLE_CONV_TYPE_IM, sname, acct);
+				PURPLE_CONV_TYPE_IM, bname, acct);
 			if (conv == NULL)
-				conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, acct, sname);
+				conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, acct, bname);
 			purple_conversation_present(conv);
 
 			if (message) {
@@ -6927,9 +7006,9 @@
 	}
 	/* aim:AddBuddy?screenname=SCREENNAME&groupname=GROUPNAME*/
 	else if (!g_ascii_strcasecmp(cmd, "AddBuddy")) {
-		char *sname = g_hash_table_lookup(params, "screenname");
+		char *bname = g_hash_table_lookup(params, "screenname");
 		char *gname = g_hash_table_lookup(params, "groupname");
-		purple_blist_request_add_buddy(acct, sname, gname, NULL);
+		purple_blist_request_add_buddy(acct, bname, gname, NULL);
 		return TRUE;
 	}
 
@@ -6959,7 +7038,7 @@
 	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	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/oscar.h	Wed Mar 04 16:52:47 2009 +0000
@@ -75,7 +75,7 @@
 #define FAIM_SNAC_HASH_SIZE 16
 
 /*
- * Current Maximum Length for Screen Names (not including NULL)
+ * Current Maximum Length for usernames (not including NULL)
  *
  * Currently only names up to 16 characters can be registered
  * however it is apparently legal for them to be larger.
@@ -479,7 +479,7 @@
 	gboolean setemail;
 	char *email;
 	gboolean setnick;
-	char *newsn;
+	char *newformatting;
 	gboolean chpass;
 	char *oldp;
 	char *newp;
@@ -582,7 +582,7 @@
 
 struct aim_authresp_info
 {
-	char *sn;
+	char *bn;
 	guint16 errorcode;
 	char *errorurl;
 	guint16 regstatus;
@@ -611,8 +611,8 @@
 	} chat;
 };
 
-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, gboolean allow_multiple_logins);
+int aim_request_login(OscarData *od, FlapConnection *conn, const char *bn);
+int aim_send_login(OscarData *od, FlapConnection *conn, const char *bn, 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 oscar_data_addhandler(OscarData *od, guint16 family, guint16 subtype, aim_rxcallback_t newhandler, guint16 flags);
@@ -811,7 +811,7 @@
 {
 
 	/* These are _required_ */
-	const char *destsn;
+	const char *destbn;
 	guint32 flags; /* often 0 */
 
 	/* Only required if not using multipart messages */
@@ -840,7 +840,7 @@
  */
 struct aim_sendrtfmsg_args
 {
-	const char *destsn;
+	const char *destbn;
 	guint32 fgcolor;
 	guint32 bgcolor;
 	const char *rtfmsg; /* must be in RTF */
@@ -954,28 +954,28 @@
 /* 0x0002 */ int aim_im_setparams(OscarData *od, struct aim_icbmparameters *params);
 /* 0x0004 */ int aim_im_reqparams(OscarData *od);
 /* 0x0006 */ int aim_im_sendch1_ext(OscarData *od, struct aim_sendimext_args *args);
-/* 0x0006 */ int aim_im_sendch1(OscarData *, const char *destsn, guint16 flags, const char *msg);
-/* 0x0006 */ int aim_im_sendch2_chatinvite(OscarData *od, const char *sn, const char *msg, guint16 exchange, const char *roomname, guint16 instance);
-/* 0x0006 */ int aim_im_sendch2_icon(OscarData *od, const char *sn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum);
+/* 0x0006 */ int aim_im_sendch1(OscarData *, const char *destbn, guint16 flags, const char *msg);
+/* 0x0006 */ int aim_im_sendch2_chatinvite(OscarData *od, const char *bn, const char *msg, guint16 exchange, const char *roomname, guint16 instance);
+/* 0x0006 */ int aim_im_sendch2_icon(OscarData *od, const char *bn, const guint8 *icon, int iconlen, time_t stamp, guint16 iconsum);
 /* 0x0006 */ int aim_im_sendch2_rtfmsg(OscarData *od, struct aim_sendrtfmsg_args *args);
 
 /* 0x0006 */ void aim_im_sendch2_cancel(PeerConnection *peer_conn);
 /* 0x0006 */ void aim_im_sendch2_connected(PeerConnection *peer_conn);
-/* 0x0006 */ void aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber);
-/* 0x0006 */ void aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber);
-/* 0x0006 */ void aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles);
-/* 0x0006 */ void aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *sn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles);
+/* 0x0006 */ void aim_im_sendch2_odc_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber);
+/* 0x0006 */ void aim_im_sendch2_odc_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber);
+/* 0x0006 */ void aim_im_sendch2_sendfile_requestdirect(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 port, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles);
+/* 0x0006 */ void aim_im_sendch2_sendfile_requestproxy(OscarData *od, guchar *cookie, const char *bn, const guint8 *ip, guint16 pin, guint16 requestnumber, const gchar *filename, guint32 size, guint16 numfiles);
 
-/* 0x0006 */ int aim_im_sendch2_geticqaway(OscarData *od, const char *sn, int type);
-/* 0x0006 */ int aim_im_sendch4(OscarData *od, const char *sn, guint16 type, const char *message);
-/* 0x0008 */ int aim_im_warn(OscarData *od, FlapConnection *conn, const char *destsn, guint32 flags);
-/* 0x000b */ int aim_im_denytransfer(OscarData *od, const char *sn, const guchar *cookie, guint16 code);
+/* 0x0006 */ int aim_im_sendch2_geticqaway(OscarData *od, const char *bn, int type);
+/* 0x0006 */ int aim_im_sendch4(OscarData *od, const char *bn, guint16 type, const char *message);
+/* 0x0008 */ int aim_im_warn(OscarData *od, FlapConnection *conn, const char *destbn, guint32 flags);
+/* 0x000b */ int aim_im_denytransfer(OscarData *od, const char *bn, const guchar *cookie, guint16 code);
 /* 0x0010 */ int aim_im_reqofflinemsgs(OscarData *od);
-/* 0x0014 */ int aim_im_sendmtn(OscarData *od, guint16 type1, const char *sn, guint16 type2);
+/* 0x0014 */ int aim_im_sendmtn(OscarData *od, guint16 type1, const char *bn, guint16 type2);
 void aim_icbm_makecookie(guchar* cookie);
 gchar *oscar_encoding_extract(const char *encoding);
 gchar *oscar_encoding_to_utf8(PurpleAccount *account, const char *encoding, const char *text, int textlen);
-gchar *purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcesn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen);
+gchar *purple_plugin_oscar_decode_im_part(PurpleAccount *account, const char *sourcebn, guint16 charset, guint16 charsubset, const gchar *data, gsize datalen);
 
 
 /* 0x0002 - family_locate.c */
@@ -1010,13 +1010,13 @@
 
 struct userinfo_node
 {
-	char *sn;
+	char *bn;
 	struct userinfo_node *next;
 };
 
 typedef struct aim_userinfo_s
 {
-	char *sn;
+	char *bn;
 	guint16 warnlevel; /* evil percent * 10 (999 = 99.9%) */
 	guint16 idletime; /* in seconds */
 	guint16 flags;
@@ -1062,7 +1062,7 @@
 
 struct aim_invite_priv
 {
-	char *sn;
+	char *bn;
 	char *roomname;
 	guint16 exchange;
 	guint16 instance;
@@ -1085,7 +1085,7 @@
 #define AIM_COOKIETYPE_OFTIMAGE 0x14
 #define AIM_COOKIETYPE_OFTICON  0x15
 
-aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *sn);
+aim_userinfo_t *aim_locate_finduserinfo(OscarData *od, const char *bn);
 void aim_locate_dorequest(OscarData *od);
 
 /* 0x0002 */ int aim_locate_reqrights(OscarData *od);
@@ -1093,11 +1093,11 @@
 /* 0x0004 */ int aim_locate_setprofile(OscarData *od, const char *profile_encoding, const gchar *profile, const int profile_len, const char *awaymsg_encoding, const gchar *awaymsg, const int awaymsg_len);
 /* 0x0005 */ int aim_locate_getinfo(OscarData *od, const char *, guint16);
 /* 0x0009 */ int aim_locate_setdirinfo(OscarData *od, const char *first, const char *middle, const char *last, const char *maiden, const char *nickname, const char *street, const char *city, const char *state, const char *zip, int country, guint16 privacy);
-/* 0x000b */ int aim_locate_000b(OscarData *od, const char *sn);
+/* 0x000b */ int aim_locate_000b(OscarData *od, const char *bn);
 /* 0x000f */ int aim_locate_setinterests(OscarData *od, const char *interest1, const char *interest2, const char *interest3, const char *interest4, const char *interest5, guint16 privacy);
-/* 0x0015 */ int aim_locate_getinfoshort(OscarData *od, const char *sn, guint32 flags);
+/* 0x0015 */ int aim_locate_getinfoshort(OscarData *od, const char *bn, guint32 flags);
 
-void aim_locate_autofetch_away_message(OscarData *od, const char *sn);
+void aim_locate_autofetch_away_message(OscarData *od, const char *bn);
 guint32 aim_locate_getcaps(OscarData *od, ByteStream *bs, int len);
 guint32 aim_locate_getcaps_short(OscarData *od, ByteStream *bs, int len);
 void aim_info_free(aim_userinfo_t *);
@@ -1164,7 +1164,7 @@
 	char *country;
 	char *state;
 	char *city;
-	char *sn;
+	char *bn;
 	char *interest;
 	char *nick;
 	char *zip;
@@ -1181,7 +1181,7 @@
 
 /* 0x0010 - family_bart.c */
 int aim_bart_upload(OscarData *od, const guint8 *icon, guint16 iconlen);
-int aim_bart_request(OscarData *od, const char *sn, guint8 iconcsumtype, const guint8 *iconstr, guint16 iconstrlen);
+int aim_bart_request(OscarData *od, const char *bn, guint8 iconcsumtype, const guint8 *iconstr, guint16 iconstrlen);
 
 
 
@@ -1231,20 +1231,20 @@
 /* 0x0007 */ int aim_ssi_enable(OscarData *od);
 /* 0x0011 */ int aim_ssi_modbegin(OscarData *od);
 /* 0x0012 */ int aim_ssi_modend(OscarData *od);
-/* 0x0014 */ int aim_ssi_sendauth(OscarData *od, char *sn, char *msg);
-/* 0x0018 */ int aim_ssi_sendauthrequest(OscarData *od, char *sn, const char *msg);
-/* 0x001a */ int aim_ssi_sendauthreply(OscarData *od, char *sn, guint8 reply, const char *msg);
+/* 0x0014 */ int aim_ssi_sendauth(OscarData *od, char *bn, char *msg);
+/* 0x0018 */ int aim_ssi_sendauthrequest(OscarData *od, char *bn, const char *msg);
+/* 0x001a */ int aim_ssi_sendauthreply(OscarData *od, char *bn, guint8 reply, const char *msg);
 
 /* Client functions for retrieving SSI data */
 struct aim_ssi_item *aim_ssi_itemlist_find(struct aim_ssi_item *list, guint16 gid, guint16 bid);
-struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *sn, guint16 type);
-struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *sn);
-char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *sn);
+struct aim_ssi_item *aim_ssi_itemlist_finditem(struct aim_ssi_item *list, const char *gn, const char *bn, guint16 type);
+struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *bn);
+char *aim_ssi_itemlist_findparentname(struct aim_ssi_item *list, const char *bn);
 int aim_ssi_getpermdeny(struct aim_ssi_item *list);
 guint32 aim_ssi_getpresence(struct aim_ssi_item *list);
-char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *sn);
-char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *sn);
-gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *sn);
+char *aim_ssi_getalias(struct aim_ssi_item *list, const char *gn, const char *bn);
+char *aim_ssi_getcomment(struct aim_ssi_item *list, const char *gn, const char *bn);
+gboolean aim_ssi_waitingforauth(struct aim_ssi_item *list, const char *gn, const char *bn);
 
 /* Client functions for changing SSI data */
 int aim_ssi_addbuddy(OscarData *od, const char *name, const char *group, GSList *tlvlist, const char *alias, const char *comment, const char *smsnum, gboolean needauth);
@@ -1254,9 +1254,9 @@
 int aim_ssi_delgroup(OscarData *od, const char *group);
 int aim_ssi_delpermit(OscarData *od, const char *name);
 int aim_ssi_deldeny(OscarData *od, const char *name);
-int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *sn);
-int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *sn, const char *alias);
-int aim_ssi_editcomment(OscarData *od, const char *gn, const char *sn, const char *alias);
+int aim_ssi_movebuddy(OscarData *od, const char *oldgn, const char *newgn, const char *bn);
+int aim_ssi_aliasbuddy(OscarData *od, const char *gn, const char *bn, const char *alias);
+int aim_ssi_editcomment(OscarData *od, const char *gn, const char *bn, const char *alias);
 int aim_ssi_rename_group(OscarData *od, const char *oldgn, const char *newgn);
 int aim_ssi_cleanlist(OscarData *od);
 int aim_ssi_deletelist(OscarData *od);
@@ -1501,11 +1501,10 @@
 int aimutil_itemcnt(char *toSearch, char dl);
 char *aimutil_itemindex(char *toSearch, int theindex, char dl);
 
-gboolean aim_snvalid(const char *sn);
-gboolean aim_snvalid_icq(const char *sn);
-gboolean aim_snvalid_sms(const char *sn);
-int aim_snlen(const char *sn);
-int aim_sncmp(const char *sn1, const char *sn2);
+gboolean oscar_util_valid_name(const char *bn);
+gboolean oscar_util_valid_name_icq(const char *bn);
+gboolean oscar_util_valid_name_sms(const char *bn);
+int oscar_util_name_compare(const char *bn1, const char *bn2);
 
 
 
--- a/libpurple/protocols/oscar/peer.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/peer.c	Wed Mar 04 16:52:47 2009 +0000
@@ -69,7 +69,7 @@
 #endif
 
 PeerConnection *
-peer_connection_find_by_type(OscarData *od, const char *sn, OscarCapability type)
+peer_connection_find_by_type(OscarData *od, const char *bn, OscarCapability type)
 {
 	GSList *cur;
 	PeerConnection *conn;
@@ -77,7 +77,7 @@
 	for (cur = od->peer_connections; cur != NULL; cur = cur->next)
 	{
 		conn = cur->data;
-		if ((conn->type == type) && !aim_sncmp(conn->sn, sn))
+		if ((conn->type == type) && !oscar_util_name_compare(conn->bn, bn))
 			return conn;
 	}
 
@@ -88,7 +88,7 @@
  * @param cookie This must be exactly 8 characters.
  */
 PeerConnection *
-peer_connection_find_by_cookie(OscarData *od, const char *sn, const guchar *cookie)
+peer_connection_find_by_cookie(OscarData *od, const char *bn, const guchar *cookie)
 {
 	GSList *cur;
 	PeerConnection *conn;
@@ -96,7 +96,7 @@
 	for (cur = od->peer_connections; cur != NULL; cur = cur->next)
 	{
 		conn = cur->data;
-		if (!memcmp(conn->cookie, cookie, 8) && !aim_sncmp(conn->sn, sn))
+		if (!memcmp(conn->cookie, cookie, 8) && !oscar_util_name_compare(conn->bn, bn))
 			return conn;
 	}
 
@@ -104,7 +104,7 @@
 }
 
 PeerConnection *
-peer_connection_new(OscarData *od, OscarCapability type, const char *sn)
+peer_connection_new(OscarData *od, OscarCapability type, const char *bn)
 {
 	PeerConnection *conn;
 	PurpleAccount *account;
@@ -114,7 +114,7 @@
 	conn = g_new0(PeerConnection, 1);
 	conn->od = od;
 	conn->type = type;
-	conn->sn = g_strdup(sn);
+	conn->bn = g_strdup(bn);
 	conn->buffer_outgoing = purple_circ_buffer_new(0);
 	conn->listenerfd = -1;
 	conn->fd = -1;
@@ -228,7 +228,7 @@
 		conn->xfer = NULL;
 	}
 
-	g_free(conn->sn);
+	g_free(conn->bn);
 	g_free(conn->error_message);
 	g_free(conn->proxyip);
 	g_free(conn->clientip);
@@ -698,20 +698,20 @@
 	if (conn->type == OSCAR_CAPABILITY_DIRECTIM)
 	{
 		aim_im_sendch2_odc_requestdirect(od,
-				conn->cookie, conn->sn, purple_network_ip_atoi(listener_ip),
+				conn->cookie, conn->bn, purple_network_ip_atoi(listener_ip),
 				listener_port, ++conn->lastrequestnumber);
 
 		/* Print a message to a local conversation window */
-		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+		conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
 		tmp = g_strdup_printf(_("Asking %s to connect to us at %s:%hu for "
-				"Direct IM."), conn->sn, listener_ip, listener_port);
+				"Direct IM."), conn->bn, listener_ip, listener_port);
 		purple_conversation_write(conv, NULL, tmp, PURPLE_MESSAGE_SYSTEM, time(NULL));
 		g_free(tmp);
 	}
 	else if (conn->type == OSCAR_CAPABILITY_SENDFILE)
 	{
 		aim_im_sendch2_sendfile_requestdirect(od,
-				conn->cookie, conn->sn,
+				conn->cookie, conn->bn,
 				purple_network_ip_atoi(listener_ip),
 				listener_port, ++conn->lastrequestnumber,
 				(const gchar *)conn->xferdata.name,
@@ -790,7 +790,7 @@
 			PurpleConversation *conv;
 			tmp = g_strdup_printf(_("Attempting to connect to %s:%hu."),
 					conn->verifiedip, conn->port);
-			conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+			conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
 			purple_conversation_write(conv, NULL, tmp,
 					PURPLE_MESSAGE_SYSTEM, time(NULL));
 			g_free(tmp);
@@ -863,7 +863,7 @@
 			gchar *tmp;
 			PurpleConversation *conv;
 			tmp = g_strdup(_("Attempting to connect via proxy server."));
-			conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->sn);
+			conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, conn->bn);
 			purple_conversation_write(conv, NULL, tmp,
 					PURPLE_MESSAGE_SYSTEM, time(NULL));
 			g_free(tmp);
@@ -888,13 +888,13 @@
  * Initiate a peer connection with someone.
  */
 void
-peer_connection_propose(OscarData *od, OscarCapability type, const char *sn)
+peer_connection_propose(OscarData *od, OscarCapability type, const char *bn)
 {
 	PeerConnection *conn;
 
 	if (type == OSCAR_CAPABILITY_DIRECTIM)
 	{
-		conn = peer_connection_find_by_type(od, sn, type);
+		conn = peer_connection_find_by_type(od, bn, type);
 		if (conn != NULL)
 		{
 			if (conn->ready)
@@ -903,10 +903,10 @@
 				PurpleConversation *conv;
 
 				purple_debug_info("oscar", "Already have a direct IM "
-						"session with %s.\n", sn);
+						"session with %s.\n", bn);
 				account = purple_connection_get_account(od->gc);
 				conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
-						sn, account);
+						bn, account);
 				if (conv != NULL)
 					purple_conversation_present(conv);
 				return;
@@ -917,7 +917,7 @@
 		}
 	}
 
-	conn = peer_connection_new(od, type, sn);
+	conn = peer_connection_new(od, type, bn);
 	conn->flags |= PEER_CONNECTION_FLAG_INITIATED_BY_ME;
 	conn->flags |= PEER_CONNECTION_FLAG_APPROVED;
 	aim_icbm_makecookie(conn->cookie);
@@ -954,7 +954,7 @@
 
 	conn = data;
 
-	aim_im_denytransfer(conn->od, conn->sn, conn->cookie,
+	aim_im_denytransfer(conn->od, conn->bn, conn->cookie,
 			AIM_TRANSFER_DENY_DECLINE);
 	peer_connection_destroy(conn, OSCAR_DISCONNECT_LOCAL_CLOSED, NULL);
 }
@@ -963,7 +963,7 @@
  * Someone else wants to establish a peer connection with us.
  */
 void
-peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *message, IcbmArgsCh2 *args)
+peer_connection_got_proposition(OscarData *od, const gchar *bn, const gchar *message, IcbmArgsCh2 *args)
 {
 	PurpleConnection *gc;
 	PurpleAccount *account;
@@ -979,7 +979,7 @@
 	 * and we should try connecting to them, instead.  Or they want
 	 * to go through a proxy.
 	 */
-	conn = peer_connection_find_by_cookie(od, sn, args->cookie);
+	conn = peer_connection_find_by_cookie(od, bn, args->cookie);
 	if ((conn != NULL) && (conn->type == args->type))
 	{
 		purple_debug_info("oscar", "Remote user wants to try a "
@@ -1003,12 +1003,12 @@
 	/* If this is a direct IM, then close any existing session */
 	if (args->type == OSCAR_CAPABILITY_DIRECTIM)
 	{
-		conn = peer_connection_find_by_type(od, sn, args->type);
+		conn = peer_connection_find_by_type(od, bn, args->type);
 		if (conn != NULL)
 		{
 			/* Close the old direct IM and start a new one */
 			purple_debug_info("oscar", "Received new direct IM request "
-				"from %s.  Destroying old connection.\n", sn);
+				"from %s.  Destroying old connection.\n", bn);
 			peer_connection_destroy(conn, OSCAR_DISCONNECT_REMOTE_CLOSED, NULL);
 		}
 	}
@@ -1022,12 +1022,12 @@
 		{
 			purple_debug_warning("oscar",
 					"%s tried to send you a file with incomplete "
-					"information.\n", sn);
+					"information.\n", bn);
 			return;
 		}
 	}
 
-	conn = peer_connection_new(od, args->type, sn);
+	conn = peer_connection_new(od, args->type, bn);
 	memcpy(conn->cookie, args->cookie, 8);
 	if (args->use_proxy)
 		conn->proxyip = g_strdup(args->proxyip);
@@ -1040,7 +1040,7 @@
 	if (args->type == OSCAR_CAPABILITY_DIRECTIM)
 	{
 		buf = g_strdup_printf(_("%s has just asked to directly connect to %s"),
-				sn, purple_account_get_username(account));
+				bn, purple_account_get_username(account));
 
 		purple_request_action(conn, NULL, buf,
 						_("This requires a direct connection between "
@@ -1049,7 +1049,7 @@
 						  "revealed, this may be considered a privacy "
 						  "risk."),
 						PURPLE_DEFAULT_ACTION_NONE,
-						account, sn, NULL,
+						account, bn, NULL,
 						conn, 2,
 						_("C_onnect"), G_CALLBACK(peer_connection_got_proposition_yes_cb),
 						_("Cancel"), G_CALLBACK(peer_connection_got_proposition_no_cb));
@@ -1058,7 +1058,7 @@
 	{
 		gchar *filename;
 
-		conn->xfer = purple_xfer_new(account, PURPLE_XFER_RECEIVE, sn);
+		conn->xfer = purple_xfer_new(account, PURPLE_XFER_RECEIVE, bn);
 		if (conn->xfer)
 		{
 			conn->xfer->data = conn;
--- a/libpurple/protocols/oscar/peer.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/peer.h	Wed Mar 04 16:52:47 2009 +0000
@@ -83,7 +83,7 @@
 	/* Unknown */
 	guint16 flags;                /* 38 */
 	/* Unknown */
-	guchar sn[32];                /* 44 */
+	guchar bn[32];                /* 44 */
 	/* Unknown */
 	ByteStream payload;           /* 76 */
 };
@@ -137,7 +137,7 @@
 {
 	OscarData *od;
 	OscarCapability type;
-	char *sn;
+	char *bn;
 	guchar magic[4];
 	guchar cookie[8];
 	guint16 lastrequestnumber;
@@ -228,12 +228,12 @@
  * @param type The type of the peer connection.  One of
  *        OSCAR_CAPABILITY_DIRECTIM or OSCAR_CAPABILITY_SENDFILE.
  */
-PeerConnection *peer_connection_new(OscarData *od, OscarCapability type, const char *sn);
+PeerConnection *peer_connection_new(OscarData *od, OscarCapability type, const char *bn);
 
 void peer_connection_destroy(PeerConnection *conn, OscarDisconnectReason reason, const gchar *error_message);
 void peer_connection_schedule_destroy(PeerConnection *conn, OscarDisconnectReason reason, const gchar *error_message);
-PeerConnection *peer_connection_find_by_type(OscarData *od, const char *sn, OscarCapability type);
-PeerConnection *peer_connection_find_by_cookie(OscarData *od, const char *sn, const guchar *cookie);
+PeerConnection *peer_connection_find_by_type(OscarData *od, const char *bn, OscarCapability type);
+PeerConnection *peer_connection_find_by_cookie(OscarData *od, const char *bn, const guchar *cookie);
 
 void peer_connection_listen_cb(gpointer data, gint source, PurpleInputCondition cond);
 void peer_connection_recv_cb(gpointer data, gint source, PurpleInputCondition cond);
@@ -241,8 +241,8 @@
 
 void peer_connection_trynext(PeerConnection *conn);
 void peer_connection_finalize_connection(PeerConnection *conn);
-void peer_connection_propose(OscarData *od, OscarCapability type, const char *sn);
-void peer_connection_got_proposition(OscarData *od, const gchar *sn, const gchar *message, IcbmArgsCh2 *args);
+void peer_connection_propose(OscarData *od, OscarCapability type, const char *bn);
+void peer_connection_got_proposition(OscarData *od, const gchar *bn, const gchar *message, IcbmArgsCh2 *args);
 
 /*
  * For ODC
--- a/libpurple/protocols/oscar/peer_proxy.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/peer_proxy.c	Wed Mar 04 16:52:47 2009 +0000
@@ -63,19 +63,19 @@
 {
 	ProxyFrame frame;
 	PurpleAccount *account;
-	const gchar *sn;
-	guint8 sn_length;
+	const gchar *bn;
+	guint8 bn_length;
 
 	memset(&frame, 0, sizeof(ProxyFrame));
 	frame.type = PEER_PROXY_TYPE_CREATE;
 	frame.flags = 0x0000;
 
 	account = purple_connection_get_account(conn->od->gc);
-	sn = purple_account_get_username(account);
-	sn_length = strlen(sn);
-	byte_stream_new(&frame.payload, 1 + sn_length + 8 + 20);
-	byte_stream_put8(&frame.payload, sn_length);
-	byte_stream_putraw(&frame.payload, (const guint8 *)sn, sn_length);
+	bn = purple_account_get_username(account);
+	bn_length = strlen(bn);
+	byte_stream_new(&frame.payload, 1 + bn_length + 8 + 20);
+	byte_stream_put8(&frame.payload, bn_length);
+	byte_stream_putraw(&frame.payload, (const guint8 *)bn, bn_length);
 	byte_stream_putraw(&frame.payload, conn->cookie, 8);
 
 	byte_stream_put16(&frame.payload, 0x0001); /* Type */
@@ -99,19 +99,19 @@
 {
 	ProxyFrame frame;
 	PurpleAccount *account;
-	const gchar *sn;
-	guint8 sn_length;
+	const gchar *bn;
+	guint8 bn_length;
 
 	memset(&frame, 0, sizeof(ProxyFrame));
 	frame.type = PEER_PROXY_TYPE_JOIN;
 	frame.flags = 0x0000;
 
 	account = purple_connection_get_account(conn->od->gc);
-	sn = purple_account_get_username(account);
-	sn_length = strlen(sn);
-	byte_stream_new(&frame.payload, 1 + sn_length + 2 + 8 + 20);
-	byte_stream_put8(&frame.payload, sn_length);
-	byte_stream_putraw(&frame.payload, (const guint8 *)sn, sn_length);
+	bn = purple_account_get_username(account);
+	bn_length = strlen(bn);
+	byte_stream_new(&frame.payload, 1 + bn_length + 2 + 8 + 20);
+	byte_stream_put8(&frame.payload, bn_length);
+	byte_stream_putraw(&frame.payload, (const guint8 *)bn, bn_length);
 	byte_stream_put16(&frame.payload, pin);
 	byte_stream_putraw(&frame.payload, conn->cookie, 8);
 
@@ -149,11 +149,11 @@
 		if (conn->type == OSCAR_CAPABILITY_DIRECTIM)
 			aim_im_sendch2_odc_requestproxy(conn->od,
 					conn->cookie,
-					conn->sn, ip, pin, ++conn->lastrequestnumber);
+					conn->bn, ip, pin, ++conn->lastrequestnumber);
 		else if (conn->type == OSCAR_CAPABILITY_SENDFILE)
 		{
 			aim_im_sendch2_sendfile_requestproxy(conn->od,
-					conn->cookie, conn->sn,
+					conn->cookie, conn->bn,
 					ip, pin, ++conn->lastrequestnumber,
 					(const gchar *)conn->xferdata.name,
 					conn->xferdata.size, conn->xferdata.totfiles);
--- a/libpurple/protocols/oscar/snactypes.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/snactypes.h	Wed Mar 04 16:52:47 2009 +0000
@@ -252,7 +252,6 @@
  * SNAC Family: Authorizer
  *
  * Used only in protocol versions three and above.
- *
  */
 #define SNAC_SUBTYPE_AUTH_ERROR 0x0001
 #define SNAC_SUBTYPE_AUTH_LOGINREQEST 0x0002
@@ -266,8 +265,7 @@
  * SNAC Family: Email
  *
  * Used for getting information on the email address
- * associated with your screen name.
- *
+ * associated with your username.
  */
 #define SNAC_SUBTYPE_ALERT_ERROR 0x0001
 #define SNAC_SUBTYPE_ALERT_SENDCOOKIES 0x0006
@@ -280,7 +278,6 @@
  * This isn't truly a SNAC family either, but using
  * these, we can integrated non-SNAC services into
  * the SNAC-centered libfaim callback structure.
- *
  */
 #define AIM_CB_SPECIAL_CONNERR 0x0003
 #define AIM_CB_SPECIAL_CONNINITDONE 0x0006
--- a/libpurple/protocols/oscar/util.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/oscar/util.c	Wed Mar 04 16:52:47 2009 +0000
@@ -136,27 +136,27 @@
 }
 
 /**
- * Check if the given screen name is a valid AIM screen name.
+ * Check if the given name is a valid AIM username.
  * Example: BobDole
  * Example: Henry_Ford@mac.com
  * Example: 1KrazyKat@example.com
  *
- * @return TRUE if the screen name is valid, FALSE if not.
+ * @return TRUE if the name is valid, FALSE if not.
  */
 static gboolean
-aim_snvalid_aim(const char *sn)
+oscar_util_valid_name_aim(const char *name)
 {
 	int i;
 
-	if (purple_email_is_valid(sn))
+	if (purple_email_is_valid(name))
 		return TRUE;
 
-	/* Normal AIM screen names can't start with a number */
-	if (isdigit(sn[0]))
+	/* Normal AIM usernames can't start with a number */
+	if (isdigit(name[0]))
 		return FALSE;
 
-	for (i = 0; sn[i] != '\0'; i++) {
-		if (!isalnum(sn[i]) && (sn[i] != ' '))
+	for (i = 0; name[i] != '\0'; i++) {
+		if (!isalnum(name[i]) && (name[i] != ' '))
 			return FALSE;
 	}
 
@@ -164,18 +164,18 @@
 }
 
 /**
- * Check if the given screen name is a valid ICQ screen name.
+ * Check if the given name is a valid ICQ username.
  * Example: 1234567
  *
- * @return TRUE if the screen name is valid, FALSE if not.
+ * @return TRUE if the name is valid, FALSE if not.
  */
 gboolean
-aim_snvalid_icq(const char *sn)
+oscar_util_valid_name_icq(const char *name)
 {
 	int i;
 
-	for (i = 0; sn[i] != '\0'; i++) {
-		if (!isdigit(sn[i]))
+	for (i = 0; name[i] != '\0'; i++) {
+		if (!isdigit(name[i]))
 			return FALSE;
 	}
 
@@ -183,21 +183,21 @@
 }
 
 /**
- * Check if the given screen name is a valid SMS screen name.
+ * Check if the given name is a valid SMS username.
  * Example: +19195551234
  *
- * @return TRUE if the screen name is valid, FALSE if not.
+ * @return TRUE if the name is valid, FALSE if not.
  */
 gboolean
-aim_snvalid_sms(const char *sn)
+oscar_util_valid_name_sms(const char *name)
 {
 	int i;
 
-	if (sn[0] != '+')
+	if (name[0] != '+')
 		return FALSE;
 
-	for (i = 1; sn[i] != '\0'; i++) {
-		if (!isdigit(sn[i]))
+	for (i = 1; name[i] != '\0'; i++) {
+		if (!isdigit(name[i]))
 			return FALSE;
 	}
 
@@ -205,44 +205,46 @@
 }
 
 /**
- * Check if the given screen name is a valid oscar screen name.
+ * Check if the given name is a valid oscar username.
  *
- * @return TRUE if the screen name is valid, FALSE if not.
+ * @return TRUE if the name is valid, FALSE if not.
  */
 gboolean
-aim_snvalid(const char *sn)
+oscar_util_valid_name(const char *name)
 {
-	if ((sn == NULL) || (*sn == '\0'))
+	if ((name == NULL) || (*name == '\0'))
 		return FALSE;
 
-	return aim_snvalid_icq(sn) || aim_snvalid_sms(sn) || aim_snvalid_aim(sn);
+	return oscar_util_valid_name_icq(name)
+			|| oscar_util_valid_name_sms(name)
+			|| oscar_util_valid_name_aim(name);
 }
 
 /**
- * This takes two screen names and compares them using the rules
- * on screen names for AIM/AOL.  Mainly, this means case and space
+ * This takes two names and compares them using the rules
+ * on usernames for AIM/AOL.  Mainly, this means case and space
  * insensitivity (all case differences and spacing differences are
- * ignored, with the exception that screen names can not start with
+ * ignored, with the exception that usernames can not start with
  * a space).
  *
  * @return 0 if equal, non-0 if different
  */
 /* TODO: Do something different for email addresses. */
 int
-aim_sncmp(const char *sn1, const char *sn2)
+oscar_util_name_compare(const char *name1, const char *name2)
 {
 
-	if ((sn1 == NULL) || (sn2 == NULL))
+	if ((name1 == NULL) || (name2 == NULL))
 		return -1;
 
 	do {
-		while (*sn2 == ' ')
-			sn2++;
-		while (*sn1 == ' ')
-			sn1++;
-		if (toupper(*sn1) != toupper(*sn2))
+		while (*name2 == ' ')
+			name2++;
+		while (*name1 == ' ')
+			name1++;
+		if (toupper(*name1) != toupper(*name2))
 			return 1;
-	} while ((*sn1 != '\0') && sn1++ && sn2++);
+	} while ((*name1 != '\0') && name1++ && name2++);
 
 	return 0;
 }
--- a/libpurple/protocols/qq/buddy_info.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/qq/buddy_info.c	Wed Mar 04 16:52:47 2009 +0000
@@ -614,7 +614,7 @@
 	gchar *alias_utf8;
 	PurpleAccount *account = purple_connection_get_account(gc);
 
-	qd = (qq_data *) gc->proto_data;
+	qd = (qq_data *)purple_connection_get_protocol_data(gc);
 
 	uid = strtoul(segments[QQ_INFO_UID], NULL, 10);
 	who = uid_to_purple_name(uid);
@@ -633,15 +633,16 @@
 		buddy = purple_find_buddy(gc->account, who);
 	}
 
-	if (buddy == NULL || buddy->proto_data == NULL) {
+	/* if the buddy is null, the api will catch it and return null here */
+	bd = purple_buddy_get_protocol_data(buddy);
+
+	if (buddy == NULL || bd) {
 		g_free(who);
 		g_free(alias_utf8);
 		return;
 	}
 
 	/* update buddy list (including myself, if myself is the buddy) */
-	bd = (qq_buddy_data *)buddy->proto_data;
-
 	bd->age = strtol(segments[QQ_INFO_AGE], NULL, 10);
 	bd->gender = strtol(segments[QQ_INFO_GENDER], NULL, 10);
 	bd->face = strtol(segments[QQ_INFO_FACE], NULL, 10);
@@ -770,8 +771,7 @@
 	for (it = buddies; it; it = it->next) {
 		buddy = it->data;
 		if (buddy == NULL) continue;
-		if (buddy->proto_data == NULL) continue;
-		bd = (qq_buddy_data *)buddy->proto_data;
+		if ((bd = purple_buddy_get_protocol_data(buddy)) == NULL) continue;
 		if (bd->uid == 0) continue;	/* keep me as end of packet*/
 		if (bd->uid == qd->uid) continue;
 		bytes += qq_put32(buf + bytes, bd->uid);
--- a/libpurple/protocols/qq/buddy_list.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/qq/buddy_list.c	Wed Mar 04 16:52:47 2009 +0000
@@ -233,7 +233,7 @@
 			/* create no-auth buddy */
 			buddy = qq_buddy_new(gc, bs.uid);
 		}
-		bd = (buddy == NULL) ? NULL : (qq_buddy_data *)buddy->proto_data;
+		bd = (buddy == NULL) ? NULL : (qq_buddy_data *)purple_buddy_get_protocol_data(buddy);
 		if (bd == NULL) {
 			purple_debug_error("QQ",
 					"Got an online buddy %u, but not in my buddy list\n", bs.uid);
@@ -335,7 +335,7 @@
 #endif
 
 		buddy = qq_buddy_find_or_new(gc, bd.uid);
-		if (buddy == NULL || buddy->proto_data == NULL) {
+		if (buddy == NULL || purple_buddy_get_protocol_data(buddy) == NULL) {
 			g_free(bd.nickname);
 			continue;
 		}
@@ -343,7 +343,7 @@
 		bd.last_update = time(NULL);
 		qq_update_buddy_status(gc, bd.uid, bd.status, bd.comm_flag);
 
-		g_memmove(buddy->proto_data, &bd, sizeof(qq_buddy_data));
+		g_memmove(purple_buddy_get_protocol_data(buddy), &bd, sizeof(qq_buddy_data));
 		/* nickname has been copy to buddy_data do not free
 		   g_free(bd.nickname);
 		*/
@@ -570,7 +570,7 @@
 		/* create no-auth buddy */
 		buddy = qq_buddy_new(gc, bs.uid);
 	}
-	bd = (buddy == NULL) ? NULL : (qq_buddy_data *) buddy->proto_data;
+	bd = (buddy == NULL) ? NULL : (qq_buddy_data *)purple_buddy_get_protocol_data(buddy);
 	if (bd == NULL) {
 		purple_debug_warning("QQ", "Got status of no-auth buddy %u\n", bs.uid);
 		return;
@@ -662,9 +662,10 @@
 	for (it = buddies; it; it = it->next) {
 		buddy = it->data;
 		if (buddy == NULL) continue;
-		if (buddy->proto_data == NULL) continue;
 
-		bd = (qq_buddy_data *)buddy->proto_data;
+		bd = purple_buddy_get_protocol_data(buddy);
+		if (bd == NULL) continue;
+
 		if (bd->uid == 0) continue;
 		if (bd->uid == qd->uid) continue;	/* my status is always online in my buddy list */
 		if (tm_limit < bd->last_update) continue;
@@ -684,16 +685,20 @@
 	GSList *buddies, *it;
 	gint count = 0;
 
-	qd = (qq_data *) (gc->proto_data);
+	qd = (qq_data *)purple_connection_get_protocol_data(gc);
 
 	buddies = purple_find_buddies(purple_connection_get_account(gc), NULL);
 	for (it = buddies; it; it = it->next) {
+		qq_buddy_data *qbd = NULL;
+
 		buddy = it->data;
 		if (buddy == NULL) continue;
-		if (buddy->proto_data == NULL) continue;
 
-		qq_buddy_data_free(buddy->proto_data);
-		buddy->proto_data = NULL;
+		qbd = purple_buddy_get_protocol_data(buddy);
+		if (qbd == NULL) continue;
+
+		qq_buddy_data_free(qbd);
+		purple_buddy_set_protocol_data(buddy, NULL);
 
 		count++;
 	}
--- a/libpurple/protocols/qq/buddy_opt.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/qq/buddy_opt.c	Wed Mar 04 16:52:47 2009 +0000
@@ -101,6 +101,7 @@
 {
 	gchar *who;
 	PurpleBuddy *buddy;
+	qq_buddy_data *bd;
 
 	g_return_val_if_fail(gc != NULL, NULL);
 
@@ -113,11 +114,12 @@
 		purple_debug_error("QQ", "Can not find purple buddy of %u\n", uid);
 		return NULL;
 	}
-	if (buddy->proto_data == NULL) {
+	
+	if ((bd = purple_buddy_get_protocol_data(buddy)) == NULL) {
 		purple_debug_error("QQ", "Can not find buddy data of %u\n", uid);
 		return NULL;
 	}
-	return (qq_buddy_data *)buddy->proto_data;
+	return bd;
 }
 
 void qq_buddy_data_free(qq_buddy_data *bd)
@@ -149,7 +151,7 @@
 	purple_debug_info("QQ", "Add new purple buddy: [%u]\n", uid);
 	who = uid_to_purple_name(uid);
 	buddy = purple_buddy_new(gc->account, who, NULL);	/* alias is NULL */
-	buddy->proto_data = NULL;
+	purple_buddy_set_protocol_data(buddy, NULL);
 
 	g_free(who);
 
@@ -162,11 +164,14 @@
 
 static void qq_buddy_free(PurpleBuddy *buddy)
 {
+	qq_buddy_data *bd;
+
 	g_return_if_fail(buddy);
-	if (buddy->proto_data)	{
-		qq_buddy_data_free(buddy->proto_data);
+
+	if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
+		qq_buddy_data_free(bd);
 	}
-	buddy->proto_data = NULL;
+	purple_buddy_set_protocol_data(buddy, NULL);
 	purple_blist_remove_buddy(buddy);
 }
 
@@ -186,6 +191,7 @@
 PurpleBuddy *qq_buddy_find_or_new(PurpleConnection *gc, guint32 uid)
 {
 	PurpleBuddy *buddy;
+	qq_buddy_data *bd;
 
 	g_return_val_if_fail(gc->account != NULL && uid != 0, NULL);
 
@@ -197,11 +203,12 @@
 		}
 	}
 
-	if (buddy->proto_data != NULL) {
+	if (purple_buddy_get_protocol_data(buddy) != NULL) {
 		return buddy;
 	}
 
-	buddy->proto_data = qq_buddy_data_new(uid);
+	bd = qq_buddy_data_new(uid);
+	purple_buddy_set_protocol_data(buddy, bd);
 	return buddy;
 }
 
@@ -691,7 +698,7 @@
 	if (!qd->is_login)
 		return;		/* IMPORTANT ! */
 
-	uid = purple_name_to_uid(buddy->name);
+	uid = purple_name_to_uid(purple_buddy_get_name(buddy));
 	if (uid > 0) {
 		if (qd->client_version > 2005) {
 			request_add_buddy_no_auth_ex(gc, uid);
@@ -782,6 +789,7 @@
 	gchar **segments;
 	gchar *dest_uid, *reply;
 	PurpleBuddy *buddy;
+	qq_buddy_data *bd;
 
 	g_return_if_fail(data != NULL && data_len != 0);
 	g_return_if_fail(uid != 0);
@@ -826,10 +834,10 @@
 	if (buddy == NULL) {
 		buddy = qq_buddy_new(gc, uid);
 	}
-	if (buddy != NULL && buddy->proto_data != NULL) {
+	if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
 		/* Not authorized now, free buddy data */
-		qq_buddy_data_free(buddy->proto_data);
-		buddy->proto_data = NULL;
+		qq_buddy_data_free(bd);
+		purple_buddy_set_protocol_data(buddy, NULL);
 	}
 
 	add_buddy_authorize_input(gc, uid, NULL, 0);
@@ -905,6 +913,7 @@
 void qq_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
 {
 	qq_data *qd;
+	qq_buddy_data *bd;
 	guint32 uid;
 
 	g_return_if_fail(gc != NULL && gc->proto_data != NULL);
@@ -914,7 +923,7 @@
 	if (!qd->is_login)
 		return;
 
-	uid = purple_name_to_uid(buddy->name);
+	uid = purple_name_to_uid(purple_buddy_get_name(buddy));
 	if (uid > 0 && uid != qd->uid) {
 		if (qd->client_version > 2005) {
 			qq_request_auth_code(gc, QQ_AUTH_INFO_BUDDY, QQ_AUTH_INFO_REMOVE_BUDDY, uid);
@@ -924,11 +933,11 @@
 		}
 	}
 
-	if (buddy->proto_data) {
-		qq_buddy_data_free(buddy->proto_data);
-		buddy->proto_data = NULL;
+	if ((bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
+		qq_buddy_data_free(bd);
+		purple_buddy_set_protocol_data(buddy, NULL);
 	} else {
-		purple_debug_warning("QQ", "Empty buddy data of %s\n", buddy->name);
+		purple_debug_warning("QQ", "Empty buddy data of %s\n", purple_buddy_get_name(buddy));
 	}
 
 	/* Do not call purple_blist_remove_buddy,
@@ -1216,6 +1225,7 @@
 	gint bytes;
 	gchar **segments;
 	gchar *primary, *secondary;
+	qq_buddy_data *bd;
 
 	g_return_if_fail(from != NULL && to != NULL);
 
@@ -1255,10 +1265,10 @@
 	g_return_if_fail(uid != 0);
 
 	buddy = qq_buddy_find(gc, uid);
-	if (buddy != NULL && buddy->proto_data != NULL) {
+	if (buddy != NULL && (bd = purple_buddy_get_protocol_data(buddy)) != NULL) {
 		/* Not authorized now, free buddy data */
-		qq_buddy_data_free(buddy->proto_data);
-		buddy->proto_data = NULL;
+		qq_buddy_data_free(bd);
+		purple_buddy_set_protocol_data(buddy, NULL);
 	}
 }
 
--- a/libpurple/protocols/qq/group_internal.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/qq/group_internal.c	Wed Mar 04 16:52:47 2009 +0000
@@ -103,16 +103,21 @@
 
 void qq_room_update_chat_info(PurpleChat *chat, qq_room_data *rmd)
 {
+	GHashTable *components;
+
 	if (rmd->title_utf8 != NULL && strlen(rmd->title_utf8) > 0) {
 		purple_blist_alias_chat(chat, rmd->title_utf8);
 	}
-	g_hash_table_replace(chat->components,
+
+	components = purple_chat_get_components(chat);
+
+	g_hash_table_replace(components,
 		     g_strdup(QQ_ROOM_KEY_INTERNAL_ID),
 		     g_strdup_printf("%u", rmd->id));
-	g_hash_table_replace(chat->components,
+	g_hash_table_replace(components,
 		     g_strdup(QQ_ROOM_KEY_EXTERNAL_ID),
 		     g_strdup_printf("%u", rmd->ext_id));
-	g_hash_table_replace(chat->components,
+	g_hash_table_replace(components,
 		     g_strdup(QQ_ROOM_KEY_TITLE_UTF8), g_strdup(rmd->title_utf8));
 }
 
@@ -251,11 +256,13 @@
 		member->uid = member_uid;
 		buddy = purple_find_buddy(purple_connection_get_account(gc), uid_to_purple_name(member_uid));
 		if (buddy != NULL) {
-			bd = (qq_buddy_data *) buddy->proto_data;
+			const gchar *alias = NULL;
+
+			bd = purple_buddy_get_protocol_data(buddy);
 			if (bd != NULL && bd->nickname != NULL)
 				member->nickname = g_strdup(bd->nickname);
-			else if (buddy->alias != NULL)
-				member->nickname = g_strdup(buddy->alias);
+			else if ((alias = purple_buddy_get_alias(buddy)) != NULL)
+				member->nickname = g_strdup(alias);
 		}
 		rmd->members = g_list_append(rmd->members, member);
 	}
@@ -384,16 +391,19 @@
 	}
 
 	count = 0;
-	for (node = ((PurpleBlistNode *) purple_group)->child; node != NULL; node = node->next) {
+	for (node = purple_blist_node_get_first_child((PurpleBlistNode *)purple_group);
+	     node != NULL;
+		 node = purple_blist_node_get_sibling_next(node))
+	{
 		if ( !PURPLE_BLIST_NODE_IS_CHAT(node)) {
 			continue;
 		}
 		/* got one */
 		chat = (PurpleChat *) node;
-		if (account != chat->account)	/* not qq account*/
+		if (account != purple_chat_get_account(chat))	/* not qq account*/
 			continue;
 
-		rmd = room_data_new_by_hashtable(gc, chat->components);
+		rmd = room_data_new_by_hashtable(gc, purple_chat_get_components(chat));
 		qd->groups = g_list_append(qd->groups, rmd);
 		count++;
 	}
--- a/libpurple/protocols/qq/im.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/qq/im.c	Wed Mar 04 16:52:47 2009 +0000
@@ -788,7 +788,7 @@
 		/* create no-auth buddy */
 		buddy = qq_buddy_new(gc, im_header->uid_from);
 	}
-	bd = (buddy == NULL) ? NULL : (qq_buddy_data *) buddy->proto_data;
+	bd = (buddy == NULL) ? NULL : purple_buddy_get_protocol_data(buddy);
 	if (bd != NULL) {
 		bd->client_tag = im_header->version_from;
 		bd->face = im_text.sender_icon;
@@ -889,7 +889,7 @@
 		/* create no-auth buddy */
 		buddy = qq_buddy_new(gc, im_header->uid_from);
 	}
-	bd = (buddy == NULL) ? NULL : (qq_buddy_data *) buddy->proto_data;
+	bd = (buddy == NULL) ? NULL : purple_buddy_get_protocol_data(buddy);
 	if (bd != NULL) {
 		bd->client_tag = im_header->version_from;
 		bd->face = im_text.sender_icon;
--- a/libpurple/protocols/qq/qq.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/qq/qq.c	Wed Mar 04 16:52:47 2009 +0000
@@ -248,7 +248,7 @@
 	qq_buddy_data *bd;
 	GString *status;
 
-	bd = (qq_buddy_data *) b->proto_data;
+	bd = purple_buddy_get_protocol_data(b);
 	if (bd == NULL)
 		return NULL;
 
@@ -291,7 +291,7 @@
 
 	g_return_if_fail(b != NULL);
 
-	bd = (qq_buddy_data *) b->proto_data;
+	bd = purple_buddy_get_protocol_data(b);
 	if (bd == NULL)
 		return;
 
@@ -382,11 +382,12 @@
 	qq_data *qd;
 	qq_buddy_data *buddy;
 
-	if (!b || !(account = b->account) ||
-			!(gc = purple_account_get_connection(account)) || !(qd = gc->proto_data))
+	if (!b || !(account = purple_buddy_get_account(b)) ||
+		!(gc = purple_account_get_connection(account)) ||
+		!(qd = purple_connection_get_protocol_data(gc)))
 		return NULL;
 
-	buddy = (qq_buddy_data *)b->proto_data;
+	buddy = purple_buddy_get_protocol_data(b);
 	if (!buddy) {
 		return "not-authorized";
 	}
@@ -708,8 +709,9 @@
 static void action_chat_quit(PurpleBlistNode * node)
 {
 	PurpleChat *chat = (PurpleChat *)node;
-	PurpleConnection *gc = purple_account_get_connection(chat->account);
-	GHashTable *components = chat -> components;
+	PurpleAccount *account = purple_chat_get_account(chat);
+	PurpleConnection *gc = purple_account_get_connection(account);
+	GHashTable *components = purple_chat_get_components(chat);
 	gchar *num_str;
 	guint32 room_id;
 
@@ -727,8 +729,9 @@
 static void action_chat_get_info(PurpleBlistNode * node)
 {
 	PurpleChat *chat = (PurpleChat *)node;
-	PurpleConnection *gc = purple_account_get_connection(chat->account);
-	GHashTable *components = chat -> components;
+	PurpleAccount *account = purple_chat_get_account(chat);
+	PurpleConnection *gc = purple_account_get_connection(account);
+	GHashTable *components = purple_chat_get_components(chat);
 	gchar *num_str;
 	guint32 room_id;
 
@@ -815,7 +818,7 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 
 	qq_add_buddy(gc, buddy, NULL);
 }
@@ -830,12 +833,12 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *)node;
-	g_return_if_fail(NULL != buddy && NULL != buddy->proto_data);
+	g_return_if_fail(NULL != buddy);
 
-	gc = purple_account_get_connection(buddy->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 	g_return_if_fail(NULL != gc);
 
-	bd = (qq_buddy_data *)buddy->proto_data;
+	bd = (qq_buddy_data *)purple_buddy_get_protocol_data(buddy);
 	g_return_if_fail(NULL != bd);
 	bd_uid = bd->uid;
 
@@ -849,7 +852,7 @@
 {
 	GList *m = NULL;
 	PurpleMenuAction *act;
-	qq_buddy_data *bd = (qq_buddy_data *)buddy->proto_data;
+	qq_buddy_data *bd = purple_buddy_get_protocol_data(buddy);
 
 	if (bd == NULL) {
 		act = purple_menu_action_new(_("Add Buddy"),
--- a/libpurple/protocols/qq/send_file.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/qq/send_file.c	Wed Mar 04 16:52:47 2009 +0000
@@ -808,7 +808,7 @@
 			    "Received a FACE ip detect from %d, so he/she must be online :)\n", sender_uid);
 
 		b = purple_find_buddy(gc->account, sender_name);
-		bd = (b == NULL) ? NULL : (qq_buddy_data *) b->proto_data;
+		bd = (b == NULL) ? NULL : purple_buddy_get_protocol_data(b);
 		if (bd) {
 			if(0 != info->remote_real_ip) {
 				g_memmove(&(bd->ip), &info->remote_real_ip, sizeof(bd->ip));
--- a/libpurple/protocols/sametime/sametime.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/sametime/sametime.c	Wed Mar 04 16:52:47 2009 +0000
@@ -663,7 +663,6 @@
   */
 
   PurpleAccount *acct;
-  PurpleBuddyList *blist;
   PurpleBlistNode *gn, *cn, *bn;
   PurpleGroup *grp;
   PurpleBuddy *bdy;
@@ -674,10 +673,8 @@
   acct = purple_connection_get_account(gc);
   g_return_if_fail(acct != NULL);
 
-  blist = purple_get_blist();
-  g_return_if_fail(blist != NULL);
-
-  for(gn = blist->root; gn; gn = gn->next) {
+  for(gn = purple_blist_get_root(); gn;
+		  gn = purple_blist_node_get_sibling_next(gn)) {
     const char *owner;
     const char *gname;
     enum mwSametimeGroupType gtype;
@@ -702,13 +699,13 @@
     /* the group's actual name may be different from the purple group's
        name. Find whichever is there */
     gname = purple_blist_node_get_string(gn, GROUP_KEY_NAME);
-    if(! gname) gname = grp->name;
+    if(! gname) gname = purple_group_get_name(grp);
 
     /* we save this, but never actually honor it */
     gopen = ! purple_blist_node_get_bool(gn, GROUP_KEY_COLLAPSED);
 
     stg = mwSametimeGroup_new(stlist, gtype, gname);
-    mwSametimeGroup_setAlias(stg, grp->name);
+    mwSametimeGroup_setAlias(stg, purple_group_get_name(grp));
     mwSametimeGroup_setOpen(stg, gopen);
 
     /* don't attempt to put buddies in a dynamic group, it breaks
@@ -716,27 +713,31 @@
     if(gtype == mwSametimeGroup_DYNAMIC)
       continue;
 
-    for(cn = gn->child; cn; cn = cn->next) {
+    for(cn = purple_blist_node_get_first_child(gn);
+			cn;
+			cn = purple_blist_node_get_sibling_next(cn)) {
       if(! PURPLE_BLIST_NODE_IS_CONTACT(cn)) continue;
 
-      for(bn = cn->child; bn; bn = bn->next) {
+      for(bn = purple_blist_node_get_first_child(cn);
+			  bn;
+			  bn = purple_blist_node_get_sibling_next(bn)) {
 	if(! PURPLE_BLIST_NODE_IS_BUDDY(bn)) continue;
 	if(! PURPLE_BLIST_NODE_SHOULD_SAVE(bn)) continue;
 
 	bdy = (PurpleBuddy *) bn;
 
-	if(bdy->account == acct) {
+	if(purple_buddy_get_account(bdy) == acct) {
 	  struct mwSametimeUser *stu;
 	  enum mwSametimeUserType utype;
 
-	  idb.user = bdy->name;
+	  idb.user = (char *)purple_buddy_get_name(bdy);
 
 	  utype = purple_blist_node_get_int(bn, BUDDY_KEY_TYPE);
 	  if(! utype) utype = mwSametimeUser_NORMAL;
 
 	  stu = mwSametimeUser_new(stg, utype, &idb);
-	  mwSametimeUser_setShortName(stu, bdy->server_alias);
-	  mwSametimeUser_setAlias(stu, bdy->alias);
+	  mwSametimeUser_setShortName(stu, purple_buddy_get_server_alias(bdy));
+	  mwSametimeUser_setAlias(stu, purple_buddy_get_local_buddy_alias(bdy));
 	}
       }
     }
@@ -816,7 +817,7 @@
 
 static gboolean buddy_is_external(PurpleBuddy *b) {
   g_return_val_if_fail(b != NULL, FALSE);
-  return purple_str_has_prefix(b->name, "@E ");
+  return purple_str_has_prefix(purple_buddy_get_name(b), "@E ");
 }
 
 
@@ -825,7 +826,7 @@
 static void buddy_add(struct mwPurplePluginData *pd,
 		      PurpleBuddy *buddy) {
 
-  struct mwAwareIdBlock idb = { mwAware_USER, (char *) buddy->name, NULL };
+  struct mwAwareIdBlock idb = { mwAware_USER, (char *) purple_buddy_get_name(buddy), NULL };
   struct mwAwareList *list;
 
   PurpleGroup *group;
@@ -890,7 +891,7 @@
   GList *add;
   
   n = purple_blist_node_get_string((PurpleBlistNode *) group, GROUP_KEY_NAME);
-  if(! n) n = group->name;
+  if(! n) n = purple_group_get_name(group);
 
   idb.user = (char *) n;
   add = g_list_prepend(NULL, &idb);
@@ -926,7 +927,8 @@
 	     NSTR(name), NSTR(alias));
 
   /* first attempt at finding the group, by the name key */
-  for(gn = blist->root; gn; gn = gn->next) {
+  for(gn = purple_blist_get_root(); gn;
+		  gn = purple_blist_node_get_sibling_next(gn)) {
     const char *n, *o;
     if(! PURPLE_BLIST_NODE_IS_GROUP(gn)) continue;
     n = purple_blist_node_get_string(gn, GROUP_KEY_NAME);
@@ -1006,23 +1008,27 @@
 
   g_return_if_fail(group != NULL);
 
-  DEBUG_INFO("clearing members from pruned group %s\n", NSTR(group->name));
+  DEBUG_INFO("clearing members from pruned group %s\n", NSTR(purple_group_get_name(group)));
 
   gc = purple_account_get_connection(acct);
   g_return_if_fail(gc != NULL);
 
   gn = (PurpleBlistNode *) group;
 
-  for(cn = gn->child; cn; cn = cn->next) {
+  for(cn = purple_blist_node_get_first_child(gn);
+		  cn;
+		  cn = purple_blist_node_get_sibling_next(cn)) {
     if(! PURPLE_BLIST_NODE_IS_CONTACT(cn)) continue;
 
-    for(bn = cn->child; bn; bn = bn->next) {
+    for(bn = purple_blist_node_get_first_child(cn);
+			bn;
+			bn = purple_blist_node_get_sibling_next(bn)) {
       PurpleBuddy *gb = (PurpleBuddy *) bn;
 
       if(! PURPLE_BLIST_NODE_IS_BUDDY(bn)) continue;
       
-      if(gb->account == acct) {
-	DEBUG_INFO("clearing %s from group\n", NSTR(gb->name));
+      if(purple_buddy_get_account(gb) == acct) {
+	DEBUG_INFO("clearing %s from group\n", NSTR(purple_buddy_get_name(gb)));
 	prune = g_list_prepend(prune, gb);
       }
     }
@@ -1059,7 +1065,7 @@
 
   g_return_if_fail(group != NULL);
 
-  DEBUG_INFO("pruning membership of group %s\n", NSTR(group->name));
+  DEBUG_INFO("pruning membership of group %s\n", NSTR(purple_group_get_name(group)));
 
   acct = purple_connection_get_account(gc);
   g_return_if_fail(acct != NULL);
@@ -1078,18 +1084,22 @@
 
   gn = (PurpleBlistNode *) group;
 
-  for(cn = gn->child; cn; cn = cn->next) {
+  for(cn = purple_blist_node_get_first_child(gn);
+		  cn;
+		  cn = purple_blist_node_get_sibling_next(cn)) {
     if(! PURPLE_BLIST_NODE_IS_CONTACT(cn)) continue;
 
-    for(bn = cn->child; bn; bn = bn->next) {
+    for(bn = purple_blist_node_get_first_child(cn);
+			bn;
+			bn = purple_blist_node_get_sibling_next(bn)) {
       PurpleBuddy *gb = (PurpleBuddy *) bn;
 
       if(! PURPLE_BLIST_NODE_IS_BUDDY(bn)) continue;
 
       /* if the account is correct and they're not in our table, mark
 	 them for pruning */
-      if(gb->account == acct && !g_hash_table_lookup(stusers, gb->name)) {
-	DEBUG_INFO("marking %s for pruning\n", NSTR(gb->name));
+      if(purple_buddy_get_account(gb) == acct && !g_hash_table_lookup(stusers, purple_buddy_get_name(gb))) {
+	DEBUG_INFO("marking %s for pruning\n", NSTR(purple_buddy_get_name(gb)));
 	prune = g_list_prepend(prune, gb);
       }
     }
@@ -1145,7 +1155,8 @@
   g_list_free(gtl);
 
   /* find all groups which should be pruned from the local list */
-  for(gn = blist->root; gn; gn = gn->next) {
+  for(gn = purple_blist_get_root(); gn;
+		  gn = purple_blist_node_get_sibling_next(gn)) {
     PurpleGroup *grp = (PurpleGroup *) gn;
     const char *gname, *owner;
     struct mwSametimeGroup *stgrp;
@@ -1164,12 +1175,12 @@
     /* we actually are synching by this key as opposed to the group
        title, which can be different things in the st list */
     gname = purple_blist_node_get_string(gn, GROUP_KEY_NAME);
-    if(! gname) gname = grp->name;
+    if(! gname) gname = purple_group_get_name(grp);
 
     stgrp = g_hash_table_lookup(stgroups, gname);
     if(! stgrp) {
       /* remove the whole group */
-      DEBUG_INFO("marking group %s for pruning\n", grp->name);
+      DEBUG_INFO("marking group %s for pruning\n", purple_group_get_name(grp));
       g_prune = g_list_prepend(g_prune, grp);
 
     } else {
@@ -1284,6 +1295,7 @@
 
   GString *str;
   char *tmp;
+  const char *gname;
 
   g_return_if_fail(pd != NULL);
 
@@ -1295,11 +1307,12 @@
   str = g_string_new(NULL);
 
   tmp = (char *) purple_blist_node_get_string(node, GROUP_KEY_NAME);
-
-  g_string_append_printf(str, _("<b>Group Title:</b> %s<br>"), group->name);
+  gname = purple_group_get_name(group);
+
+  g_string_append_printf(str, _("<b>Group Title:</b> %s<br>"), gname);
   g_string_append_printf(str, _("<b>Notes Group ID:</b> %s<br>"), tmp);
 
-  tmp = g_strdup_printf(_("Info for Group %s"), group->name);
+  tmp = g_strdup_printf(_("Info for Group %s"), gname);
 
   purple_notify_formatted(gc, tmp, _("Notes Address Book Information"),
 			NULL, str->str, NULL, NULL);
@@ -1356,19 +1369,24 @@
   PurpleBlistNode *gnode, *cnode, *bnode;
   GList *add_buds = NULL;
 
-  for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+  for(gnode = purple_blist_get_root(); gnode;
+		  gnode = purple_blist_node_get_sibling_next(gnode)) {
     if(! PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue;
 
-    for(cnode = gnode->child; cnode; cnode = cnode->next) {
+    for(cnode = purple_blist_node_get_first_child(gnode);
+			cnode;
+			cnode = purple_blist_node_get_sibling_next(cnode)) {
       if(! PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 	continue;
-      for(bnode = cnode->child; bnode; bnode = bnode->next) {
+      for(bnode = purple_blist_node_get_first_child(cnode);
+			  bnode;
+			  bnode = purple_blist_node_get_sibling_next(bnode)) {
 	PurpleBuddy *b;
 	if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 	  continue;
-	
+
 	b = (PurpleBuddy *)bnode;
-	if(b->account == acct) {
+	if(purple_buddy_get_account(b) == acct) {
 	  add_buds = g_list_append(add_buds, b);
 	}
       }
@@ -1388,7 +1406,6 @@
   PurpleConnection *gc;
   PurpleAccount *acct;
   struct mwStorageUnit *unit;
-  PurpleBuddyList *blist;
   PurpleBlistNode *l;
 
   gc = pd->gc;
@@ -1399,8 +1416,8 @@
   mwServiceStorage_load(pd->srvc_store, unit, fetch_blist_cb, pd, NULL); 
 
   /* find all the NAB groups and subscribe to them */
-  blist = purple_get_blist();
-  for(l = blist->root; l; l = l->next) {
+  for(l = purple_blist_get_root(); l;
+		  l = purple_blist_node_get_sibling_next(l)) {
     PurpleGroup *group = (PurpleGroup *) l;
     enum mwSametimeGroupType gt;
     const char *owner;
@@ -3239,10 +3256,10 @@
 static char *mw_prpl_status_text(PurpleBuddy *b) {
   PurpleConnection *gc;
   struct mwPurplePluginData *pd;
-  struct mwAwareIdBlock t = { mwAware_USER, b->name, NULL };
+  struct mwAwareIdBlock t = { mwAware_USER, (char *)purple_buddy_get_name(b), NULL };
   const char *ret = NULL;
 
-  if ((gc = purple_account_get_connection(b->account))
+  if ((gc = purple_account_get_connection(purple_buddy_get_account(b)))
       && (pd = gc->proto_data))
     ret = mwServiceAware_getText(pd->srvc_aware, &t);
 
@@ -3299,13 +3316,13 @@
 static void mw_prpl_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) {
   PurpleConnection *gc;
   struct mwPurplePluginData *pd = NULL;
-  struct mwAwareIdBlock idb = { mwAware_USER, b->name, NULL };
+  struct mwAwareIdBlock idb = { mwAware_USER, (char *)purple_buddy_get_name(b), NULL };
 
   const char *message = NULL;
   const char *status;
   char *tmp;
 
-  if ((gc = purple_account_get_connection(b->account))
+  if ((gc = purple_account_get_connection(purple_buddy_get_account(b)))
       && (pd = gc->proto_data))
      message = mwServiceAware_getText(pd->srvc_aware, &idb);
 
@@ -3321,7 +3338,7 @@
   }
 
   if(full && pd != NULL) {
-    tmp = user_supports_text(pd->srvc_aware, b->name);
+    tmp = user_supports_text(pd->srvc_aware, purple_buddy_get_name(b));
     if(tmp) {
 	  purple_notify_user_info_add_pair(user_info, _("Supports"), tmp);
       g_free(tmp);
@@ -3333,34 +3350,34 @@
   }
 }
 
-
-static GList *mw_prpl_status_types(PurpleAccount *acct) {
-  GList *types = NULL;
-  PurpleStatusType *type;
-
-  type = purple_status_type_new(PURPLE_STATUS_AVAILABLE, MW_STATE_ACTIVE,
-			      NULL, TRUE);
-  purple_status_type_add_attr(type, MW_STATE_MESSAGE, _("Message"),
-			    purple_value_new(PURPLE_TYPE_STRING));
-  types = g_list_append(types, type);
-
-  type = purple_status_type_new(PURPLE_STATUS_AWAY, MW_STATE_AWAY,
-			      NULL, TRUE);
-  purple_status_type_add_attr(type, MW_STATE_MESSAGE, _("Message"),
-			    purple_value_new(PURPLE_TYPE_STRING));
-  types = g_list_append(types, type);
-  
-  type = purple_status_type_new(PURPLE_STATUS_UNAVAILABLE, MW_STATE_BUSY,
-			      _("Do Not Disturb"), TRUE);
-  purple_status_type_add_attr(type, MW_STATE_MESSAGE, _("Message"),
-			    purple_value_new(PURPLE_TYPE_STRING));
-  types = g_list_append(types, type);
-  
-  type = purple_status_type_new(PURPLE_STATUS_OFFLINE, MW_STATE_OFFLINE,
-			      NULL, TRUE);
-  types = g_list_append(types, type);
-
-  return types;
+static GList *mw_prpl_status_types(PurpleAccount *acct)
+{
+	GList *types = NULL;
+	PurpleStatusType *type;
+
+	type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
+			MW_STATE_ACTIVE, NULL, TRUE, TRUE, FALSE,
+			MW_STATE_MESSAGE, _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+			NULL);
+	types = g_list_append(types, type);
+
+	type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
+			MW_STATE_AWAY, NULL, TRUE, TRUE, FALSE,
+			MW_STATE_MESSAGE, _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+			NULL);
+	types = g_list_append(types, type);
+
+	type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
+			MW_STATE_BUSY, _("Do Not Disturb"), TRUE, TRUE, FALSE,
+			MW_STATE_MESSAGE, _("Message"), purple_value_new(PURPLE_TYPE_STRING),
+			NULL);
+	types = g_list_append(types, type);
+
+	type = purple_status_type_new_full(PURPLE_STATUS_OFFLINE,
+			MW_STATE_OFFLINE, NULL, TRUE, TRUE, FALSE);
+	types = g_list_append(types, type);
+
+	return types;
 }
 
 
@@ -3383,7 +3400,7 @@
   struct mwConference *conf;
   struct mwIdBlock idb = { NULL, NULL };
 
-  acct = buddy->account;
+  acct = purple_buddy_get_account(buddy);
   gc = purple_account_get_connection(acct);
   pd = gc->proto_data;
   srvc = pd->srvc_conf;
@@ -3397,7 +3414,7 @@
   conf = mwConference_new(srvc, topic);
   mwConference_open(conf);
 
-  idb.user = buddy->name;
+  idb.user = (char *)purple_buddy_get_name(buddy);
   mwConference_invite(conf, &idb, invite);
 }
 
@@ -3417,7 +3434,7 @@
   
   g_return_if_fail(buddy != NULL);
 
-  acct = buddy->account;
+  acct = purple_buddy_get_account(buddy);
   g_return_if_fail(acct != NULL);
 
   gc = purple_account_get_connection(acct);
@@ -3437,7 +3454,7 @@
   msgA = _("Create conference with user");
   msgB = _("Please enter a topic for the new conference, and an invitation"
 	   " message to be sent to %s");
-  msg1 = g_strdup_printf(msgB, buddy->name);
+  msg1 = g_strdup_printf(msgB, purple_buddy_get_name(buddy));
 
   purple_request_fields(gc, _("New Conference"),
 		      msgA, msg1, fields,
@@ -3474,7 +3491,7 @@
       blist_menu_conf_create(buddy, msg);
 
     } else {
-      struct mwIdBlock idb = { buddy->name, NULL };
+      struct mwIdBlock idb = { (char *)purple_buddy_get_name(buddy), NULL };
       mwConference_invite(d, &idb, msg);
     }
   }
@@ -3495,7 +3512,7 @@
   const char *msgB;
   char *msg;
 
-  acct = buddy->account;
+  acct = purple_buddy_get_account(buddy);
   g_return_if_fail(acct != NULL);
 
   gc = purple_account_get_connection(acct);
@@ -3523,7 +3540,7 @@
   msgB = _("Select a conference from the list below to send an invite to"
 	   " user %s. Select \"Create New Conference\" if you'd like to"
 	   " create a new conference to invite this user to.");
-  msg = g_strdup_printf(msgB, buddy->name);
+  msg = g_strdup_printf(msgB, purple_buddy_get_name(buddy));
 
   purple_request_fields(gc, _("Invite to Conference"),
 		      msgA, msg, fields,
@@ -3545,7 +3562,7 @@
   g_return_if_fail(node != NULL);
   g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
-  acct = buddy->account;
+  acct = purple_buddy_get_account(buddy);
   g_return_if_fail(acct != NULL);
 
   gc = purple_account_get_connection(acct);
@@ -4186,8 +4203,8 @@
   if(b) {
     guint32 type;
 
-    if(b->server_alias) {
-		purple_notify_user_info_add_pair(user_info, _("Full Name"), b->server_alias);
+    if(purple_buddy_get_server_alias(b)) {
+		purple_notify_user_info_add_pair(user_info, _("Full Name"), purple_buddy_get_server_alias(b));
     }
 
     type = purple_blist_node_get_int((PurpleBlistNode *) b, BUDDY_KEY_CLIENT);
@@ -4329,10 +4346,10 @@
 
 static void notify_add(PurpleConnection *gc, GList *row, void *user_data) {
   BuddyAddData *data = user_data;
-  char *group_name = NULL;
+  const char *group_name = NULL;
   
   if (data && data->group) {
-    group_name = data->group->name;
+    group_name = purple_group_get_name(data->group);
   }
 
   purple_blist_request_add_buddy(purple_connection_get_account(gc),
@@ -4414,7 +4431,7 @@
 
   buddy = data->buddy;
 
-  gc = purple_account_get_connection(buddy->account);
+  gc = purple_account_get_connection(purple_buddy_get_account(buddy));
   pd = gc->proto_data;
 
   if(results)
@@ -4515,7 +4532,7 @@
 
   srvc = pd->srvc_resolve;
 
-  query = g_list_prepend(NULL, buddy->name);
+  query = g_list_prepend(NULL, (char *)purple_buddy_get_name(buddy));
   flags = mwResolveFlag_FIRST | mwResolveFlag_USERS;
 
   req = mwServiceResolve_resolve(srvc, query, flags, add_buddy_resolved,
@@ -4568,7 +4585,7 @@
 
     /* convert PurpleBuddy into a mwAwareIdBlock */
     idb->type = mwAware_USER;
-    idb->user = (char *) b->name;
+    idb->user = (char *) purple_buddy_get_name(b);
     idb->community = NULL;
 
     /* put idb into the list associated with the buddy's group */
@@ -4593,7 +4610,7 @@
 				 PurpleBuddy *buddy, PurpleGroup *group) {
 
   struct mwPurplePluginData *pd;
-  struct mwAwareIdBlock idb = { mwAware_USER, buddy->name, NULL };
+  struct mwAwareIdBlock idb = { mwAware_USER, (char *)purple_buddy_get_name(buddy), NULL };
   struct mwAwareList *list;
 
   GList *rem = g_list_prepend(NULL, &idb);
--- a/libpurple/protocols/silc/buddy.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/silc/buddy.c	Wed Mar 04 16:52:47 2009 +0000
@@ -322,9 +322,12 @@
 silcpurple_buddy_keyagr(PurpleBlistNode *node, gpointer data)
 {
 	PurpleBuddy *buddy;
+	PurpleAccount *account;
 
 	buddy = (PurpleBuddy *)node;
-	silcpurple_buddy_keyagr_do(buddy->account->gc, buddy->name, FALSE);
+	account = purple_buddy_get_account(buddy);
+	silcpurple_buddy_keyagr_do(purple_account_get_connection(account),
+			purple_buddy_get_name(buddy), FALSE);
 }
 
 
@@ -341,12 +344,12 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	b = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(b->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(b));
 	sg = gc->proto_data;
 
 	/* Find client entry */
 	clients = silc_client_get_clients_local(sg->client, sg->conn,
-						b->name, FALSE);
+						purple_buddy_get_name(b), FALSE);
 	if (!clients)
 		return;
 
@@ -467,9 +470,9 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 
-	silcpurple_buddy_privkey(gc, buddy->name);
+	silcpurple_buddy_privkey(gc, purple_buddy_get_name(buddy));
 }
 
 
@@ -596,9 +599,9 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 
-	silcpurple_buddy_getkey(gc, buddy->name);
+	silcpurple_buddy_getkey(gc, purple_buddy_get_name(buddy));
 }
 
 static void
@@ -613,7 +616,7 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	b = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(b->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(b));
 	sg = gc->proto_data;
 
 	pkfile = purple_blist_node_get_string(node, "public-key");
@@ -624,7 +627,7 @@
 		return;
 	}
 
-	silcpurple_show_public_key(sg, b->name, public_key, NULL, NULL);
+	silcpurple_show_public_key(sg, purple_buddy_get_name(b), public_key, NULL, NULL);
 	silc_pkcs_public_key_free(public_key);
 }
 
@@ -686,6 +689,7 @@
 	if (b) {
 		/* See if we have this buddy's public key.  If we do use that
 		   to search the details. */
+		gpointer proto_data;
 		filename = purple_blist_node_get_string((PurpleBlistNode *)b, "public-key");
 		if (filename) {
 			/* Call WHOIS.  The user info is displayed in the WHOIS
@@ -695,15 +699,15 @@
 			return;
 		}
 
-		if (!b->proto_data) {
+		if (!(proto_data = purple_buddy_get_protocol_data(b))) {
 			g_snprintf(tmp, sizeof(tmp),
-				   _("User %s is not present in the network"), b->name);
+				   _("User %s is not present in the network"), purple_buddy_get_name(b));
 			purple_notify_error(gc, _("User Information"),
 					  _("Cannot get user information"), tmp);
 			return;
 		}
 
-		client_entry = silc_client_get_client_by_id(client, conn, b->proto_data);
+		client_entry = silc_client_get_client_by_id(client, conn, proto_data);
 		if (client_entry) {
 			/* Call WHOIS.  The user info is displayed in the WHOIS
 			   command reply. */
@@ -721,7 +725,7 @@
 {
 	char tmp[512];
 	g_snprintf(tmp, sizeof(tmp), _("The %s buddy is not trusted"),
-		   r->b->name);
+		   purple_buddy_get_name(r->b));
 	purple_notify_error(r->client->application, _("Add Buddy"), tmp,
 			    _("You cannot receive buddy notifications until you "
 			      "import his/her public key.  You can use the Get Public Key "
@@ -1033,7 +1037,7 @@
 
 	/* Now verify the public key */
 	r->offline_pk = silc_pkcs_public_key_encode(r->public_key, &r->offline_pk_len);
-	silcpurple_verify_public_key(r->client, r->conn, r->b->name,
+	silcpurple_verify_public_key(r->client, r->conn, purple_buddy_get_name(r->b),
 				     SILC_CONN_CLIENT, r->public_key,
 				     silcpurple_add_buddy_save, r);
 }
@@ -1071,7 +1075,7 @@
 {
 	char tmp[512];
 	g_snprintf(tmp, sizeof(tmp), _("The %s buddy is not present in the network"),
-		   r->b->name);
+		   purple_buddy_get_name(r->b));
 	purple_request_action(r->client->application, _("Add Buddy"), tmp,
 			      _("To add the buddy you must import his/her public key. "
 				"Press Import to import a public key."), 0,
@@ -1209,6 +1213,7 @@
 	const char *filename;
 	SilcClientEntry client_entry = NULL;
 	SilcUInt16 cmd_ident;
+	const char *name;
 
 	filename = purple_blist_node_get_string((PurpleBlistNode *)b, "public-key");
 
@@ -1246,17 +1251,19 @@
 	silc_dlist_start(clients);
 	client_entry = silc_dlist_get(clients);
 
+	name = purple_buddy_get_name(b);
+
 	/* If we searched using public keys and more than one entry was found
 	   the same person is logged on multiple times. */
-	if (silc_dlist_count(clients) > 1 && r->pubkey_search && b->name) {
+	if (silc_dlist_count(clients) > 1 && r->pubkey_search && name) {
 		if (r->init) {
 			/* Find the entry that closest matches to the
 			   buddy nickname. */
 			SilcClientEntry entry;
 			silc_dlist_start(clients);
 			while ((entry = silc_dlist_get(clients))) {
-				if (!g_ascii_strncasecmp(b->name, entry->nickname,
-						 strlen(b->name))) {
+				if (!g_ascii_strncasecmp(name, entry->nickname,
+						 strlen(name))) {
 					client_entry = entry;
 					break;
 				}
@@ -1271,7 +1278,7 @@
 	/* The client was found.  Now get its public key and verify
 	   that before adding the buddy. */
 	memset(&userpk, 0, sizeof(userpk));
-	b->proto_data = silc_memdup(&client_entry->id, sizeof(client_entry->id));
+	purple_buddy_set_protocol_data(b, silc_memdup(&client_entry->id, sizeof(client_entry->id)));
 	r->client_id = client_entry->id;
 
 	/* Get the public key from attributes, if not present then
@@ -1335,7 +1342,7 @@
 	SilcClientConnection conn = sg->conn;
 	SilcPurpleBuddyRes r;
 	SilcBuffer attrs;
-	const char *filename, *name = b->name;
+	const char *filename, *name = purple_buddy_get_name(b);
 
 	r = silc_calloc(1, sizeof(*r));
 	if (!r)
@@ -1395,31 +1402,33 @@
 
 void silcpurple_send_buddylist(PurpleConnection *gc)
 {
-	PurpleBuddyList *blist;
 	PurpleBlistNode *gnode, *cnode, *bnode;
 	PurpleBuddy *buddy;
 	PurpleAccount *account;
 
 	account = purple_connection_get_account(gc);
 
-	if ((blist = purple_get_blist()) != NULL)
+	for (gnode = purple_blist_get_root();
+			gnode != NULL;
+			gnode = purple_blist_node_get_sibling_next(gnode))
 	{
-		for (gnode = blist->root; gnode != NULL; gnode = gnode->next)
+		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
+			continue;
+		for (cnode = purple_blist_node_get_first_child(gnode);
+				cnode != NULL;
+				cnode = purple_blist_node_get_sibling_next(cnode))
 		{
-			if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
+			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
+			for (bnode = purple_blist_node_get_first_child(cnode);
+					bnode != NULL;
+					bnode = purple_blist_node_get_sibling_next(bnode))
 			{
-				if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
+				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
-				for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
-				{
-					if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
-						continue;
-					buddy = (PurpleBuddy *)bnode;
-					if (purple_buddy_get_account(buddy) == account)
-						silcpurple_add_buddy_i(gc, buddy, TRUE);
-				}
+				buddy = (PurpleBuddy *)bnode;
+				if (purple_buddy_get_account(buddy) == account)
+					silcpurple_add_buddy_i(gc, buddy, TRUE);
 			}
 		}
 	}
@@ -1428,7 +1437,7 @@
 void silcpurple_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
 			   PurpleGroup *group)
 {
-	silc_free(buddy->proto_data);
+	silc_free(purple_buddy_get_protocol_data(buddy));
 }
 
 void silcpurple_idle_set(PurpleConnection *gc, int idle)
@@ -1469,10 +1478,12 @@
 
 char *silcpurple_status_text(PurpleBuddy *b)
 {
-	SilcPurple sg = b->account->gc->proto_data;
+	PurpleAccount *account = purple_buddy_get_account(b);
+	PurpleConnection *gc = purple_account_get_connection(account);
+	SilcPurple sg = gc->proto_data;
 	SilcClient client = sg->client;
 	SilcClientConnection conn = sg->conn;
-	SilcClientID *client_id = b->proto_data;
+	SilcClientID *client_id = purple_buddy_get_protocol_data(b);
 	SilcClientEntry client_entry;
 	SilcAttributePayload attr;
 	SilcAttributeMood mood = 0;
@@ -1533,10 +1544,12 @@
 
 void silcpurple_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
 {
-	SilcPurple sg = b->account->gc->proto_data;
+	PurpleAccount *account = purple_buddy_get_account(b);
+	PurpleConnection *gc = purple_account_get_connection(account);
+	SilcPurple sg = gc->proto_data;
 	SilcClient client = sg->client;
 	SilcClientConnection conn = sg->conn;
-	SilcClientID *client_id = b->proto_data;
+	SilcClientID *client_id = purple_buddy_get_protocol_data(b);
 	SilcClientEntry client_entry;
 	char *moodstr, *statusstr, *contactstr, *langstr, *devicestr, *tzstr, *geostr;
 	char tmp[256];
@@ -1610,12 +1623,12 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	b = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(b->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(b));
 	sg = gc->proto_data;
 
 	/* Call KILL */
 	silc_client_command_call(sg->client, sg->conn, NULL, "KILL",
-				 b->name, "Killed by operator", NULL);
+				 purple_buddy_get_name(b), "Killed by operator", NULL);
 }
 
 typedef struct {
@@ -1633,7 +1646,8 @@
 
 GList *silcpurple_buddy_menu(PurpleBuddy *buddy)
 {
-	PurpleConnection *gc = purple_account_get_connection(buddy->account);
+	PurpleAccount *account = purple_buddy_get_account(buddy);
+	PurpleConnection *gc = purple_account_get_connection(account);
 	SilcPurple sg = gc->proto_data;
 	SilcClientConnection conn = sg->conn;
 	const char *pkfile = NULL;
@@ -1645,7 +1659,7 @@
 	pkfile = purple_blist_node_get_string((PurpleBlistNode *) buddy, "public-key");
 	client_entry = silc_client_get_client_by_id(sg->client,
 						    sg->conn,
-						    buddy->proto_data);
+						    purple_buddy_get_protocol_data(buddy));
 
 	if (client_entry &&
 	    silc_client_private_message_key_is_set(sg->client,
--- a/libpurple/protocols/silc/chat.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/silc/chat.c	Wed Mar 04 16:52:47 2009 +0000
@@ -182,7 +182,9 @@
 silcpurple_chat_getinfo_menu(PurpleBlistNode *node, gpointer data)
 {
 	PurpleChat *chat = (PurpleChat *)node;
-	silcpurple_chat_getinfo(chat->account->gc, chat->components);
+	PurpleAccount *account = purple_chat_get_account(chat);
+	silcpurple_chat_getinfo(purple_account_get_connection(account),
+			purple_chat_get_components(chat));
 }
 
 
@@ -496,11 +498,11 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
-				 g_hash_table_lookup(chat->components, "channel"),
+				 g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
 				 "+C", NULL);
 }
 
@@ -549,7 +551,7 @@
 	g_hash_table_replace(comp, "passphrase", g_strdup(passphrase));
 
 	cn = purple_chat_new(sg->account, alias, comp);
-	g = (PurpleGroup *)p->c->node.parent;
+	g = purple_chat_get_group(p->c);
 	purple_blist_add_chat(cn, g, (PurpleBlistNode *)p->c);
 
 	/* Associate to a real channel */
@@ -583,7 +585,7 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	p = silc_calloc(1, sizeof(*p));
@@ -591,7 +593,7 @@
 		return;
 	p->sg = sg;
 
-	p->channel = g_hash_table_lookup(chat->components, "channel");
+	p->channel = g_hash_table_lookup(purple_chat_get_components(chat), "channel");
 	p->c = purple_blist_find_chat(sg->account, p->channel);
 
 	fields = purple_request_fields_new();
@@ -633,11 +635,11 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
-				 g_hash_table_lookup(chat->components, "channel"),
+				 g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
 				 "-f", NULL);
 }
 
@@ -652,7 +654,7 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	if (!sg->conn)
@@ -663,7 +665,7 @@
 	   (default key). */
 
 	/* Call CMODE */
-	channel = g_hash_table_lookup(chat->components, "channel");
+	channel = g_hash_table_lookup(purple_chat_get_components(chat), "channel");
 	silc_client_command_call(sg->client, sg->conn, NULL, "CMODE", channel,
 				 "+f", NULL);
 }
@@ -729,13 +731,13 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	if (!sg->conn)
 		return;
 
-	ch = g_strdup(g_hash_table_lookup(chat->components, "channel"));
+	ch = g_strdup(g_hash_table_lookup(purple_chat_get_components(chat), "channel"));
 	channel = silc_client_get_channel(sg->client, sg->conn, (char *)ch);
 	if (!channel)
 		return;
@@ -764,11 +766,11 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
-				 g_hash_table_lookup(chat->components, "channel"),
+				 g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
 				 "-t", NULL);
 }
 
@@ -782,11 +784,11 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
-				 g_hash_table_lookup(chat->components, "channel"),
+				 g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
 				 "+t", NULL);
 }
 
@@ -800,11 +802,11 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
-				 g_hash_table_lookup(chat->components, "channel"),
+				 g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
 				 "-p", NULL);
 }
 
@@ -818,11 +820,11 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
-				 g_hash_table_lookup(chat->components, "channel"),
+				 g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
 				 "+p", NULL);
 }
 
@@ -836,11 +838,11 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
-				 g_hash_table_lookup(chat->components, "channel"),
+				 g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
 				 "-s", NULL);
 }
 
@@ -854,11 +856,11 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_CHAT(node));
 
 	chat = (PurpleChat *) node;
-	gc = purple_account_get_connection(chat->account);
+	gc = purple_account_get_connection(purple_chat_get_account(chat));
 	sg = gc->proto_data;
 
 	silc_client_command_call(sg->client, sg->conn, NULL, "CMODE",
-				 g_hash_table_lookup(chat->components, "channel"),
+				 g_hash_table_lookup(purple_chat_get_components(chat), "channel"),
 				 "+s", NULL);
 }
 
@@ -877,8 +879,8 @@
 
 GList *silcpurple_chat_menu(PurpleChat *chat)
 {
-	GHashTable *components = chat->components;
-	PurpleConnection *gc = purple_account_get_connection(chat->account);
+	GHashTable *components = purple_chat_get_components(chat);
+	PurpleConnection *gc = purple_account_get_connection(purple_chat_get_account(chat));
 	SilcPurple sg = gc->proto_data;
 	SilcClientConnection conn = sg->conn;
 	const char *chname = NULL;
--- a/libpurple/protocols/silc/ops.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/silc/ops.c	Wed Mar 04 16:52:47 2009 +0000
@@ -431,6 +431,7 @@
 	va_list va;
 	PurpleConnection *gc = client->application;
 	SilcPurple sg = gc->proto_data;
+	PurpleAccount *account = purple_connection_get_account(gc);
 	PurpleConversation *convo;
 	SilcClientEntry client_entry, client_entry2;
 	SilcChannelEntry channel;
@@ -856,19 +857,22 @@
 				silc_free(pk);
 
 				/* Find buddy by associated public key */
-				for (gnode = purple_get_blist()->root; gnode;
-				     gnode = gnode->next) {
+				for (gnode = purple_blist_get_root(); gnode;
+				     gnode = purple_blist_node_get_sibling_next(gnode)) {
 					if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 						continue;
-					for (cnode = gnode->child; cnode; cnode = cnode->next) {
+					for (cnode = purple_blist_node_get_first_child(gnode);
+							cnode;
+							cnode = purple_blist_node_get_sibling_next(cnode)) {
 						if( !PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 							continue;
-						for (bnode = cnode->child; bnode;
-						     bnode = bnode->next) {
+						for (bnode = purple_blist_node_get_first_child(cnode);
+								bnode;
+								bnode = purple_blist_node_get_sibling_next(bnode)) {
 							if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 								continue;
 							b = (PurpleBuddy *)bnode;
-							if (b->account != gc->account)
+							if (purple_buddy_get_account(b) != account)
 								continue;
 							f = purple_blist_node_get_string(bnode, "public-key");
 							if (f && !strcmp(f, buf))
@@ -889,9 +893,9 @@
 				}
 			}
 
-			silc_free(b->proto_data);
-			b->proto_data = silc_memdup(&client_entry->id,
-						    sizeof(client_entry->id));
+			silc_free(purple_buddy_get_protocol_data(b));
+			purple_buddy_set_protocol_data(b, silc_memdup(&client_entry->id,
+						    sizeof(client_entry->id)));
 			if (notify == SILC_NOTIFY_TYPE_NICK_CHANGE) {
 				break;
 			} else if (notify == SILC_NOTIFY_TYPE_UMODE_CHANGE) {
--- a/libpurple/protocols/simple/simple.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/simple/simple.c	Wed Mar 04 16:52:47 2009 +0000
@@ -196,33 +196,41 @@
 {
 	struct simple_account_data *sip = (struct simple_account_data *)gc->proto_data;
 	struct simple_buddy *b;
-	if(strncmp(buddy->name, "sip:", 4)) {
-		gchar *buf = g_strdup_printf("sip:%s", buddy->name);
+	const char *name = purple_buddy_get_name(buddy);
+	if(strncmp(name, "sip:", 4)) {
+		gchar *buf = g_strdup_printf("sip:%s", name);
 		purple_blist_rename_buddy(buddy, buf);
 		g_free(buf);
 	}
-	if(!g_hash_table_lookup(sip->buddies, buddy->name)) {
+	if(!g_hash_table_lookup(sip->buddies, name)) {
 		b = g_new0(struct simple_buddy, 1);
-		purple_debug_info("simple", "simple_add_buddy %s\n", buddy->name);
-		b->name = g_strdup(buddy->name);
+		purple_debug_info("simple", "simple_add_buddy %s\n", name);
+		b->name = g_strdup(name);
 		g_hash_table_insert(sip->buddies, b->name, b);
 	} else {
-		purple_debug_info("simple", "buddy %s already in internal list\n", buddy->name);
+		purple_debug_info("simple", "buddy %s already in internal list\n", name);
 	}
 }
 
 static void simple_get_buddies(PurpleConnection *gc) {
 	PurpleBlistNode *gnode, *cnode, *bnode;
+	PurpleAccount *account;
 
 	purple_debug_info("simple", "simple_get_buddies\n");
 
-	for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+	account = purple_connection_get_account(gc);
+	for(gnode = purple_blist_get_root(); gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode)) {
 		if(!PURPLE_BLIST_NODE_IS_GROUP(gnode)) continue;
-		for(cnode = gnode->child; cnode; cnode = cnode->next) {
+		for(cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode)) {
 			if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) continue;
-			for(bnode = cnode->child; bnode; bnode = bnode->next) {
+			for(bnode = purple_blist_node_get_first_child(cnode);
+					bnode;
+					bnode = purple_blist_node_get_sibling_next(bnode)) {
 				if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) continue;
-				if(((PurpleBuddy*)bnode)->account == gc->account)
+				if(purple_buddy_get_account((PurpleBuddy*)bnode) == account)
 					simple_add_buddy(gc, (PurpleBuddy*)bnode, (PurpleGroup *)gnode);
 			}
 		}
@@ -231,9 +239,10 @@
 
 static void simple_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
 {
+	const char *name = purple_buddy_get_name(buddy);
 	struct simple_account_data *sip = (struct simple_account_data *)gc->proto_data;
-	struct simple_buddy *b = g_hash_table_lookup(sip->buddies, buddy->name);
-	g_hash_table_remove(sip->buddies, buddy->name);
+	struct simple_buddy *b = g_hash_table_lookup(sip->buddies, name);
+	g_hash_table_remove(sip->buddies, name);
 	g_free(b->name);
 	g_free(b);
 }
@@ -922,7 +931,7 @@
 			purple_blist_add_buddy(b, NULL, g, NULL);
 			purple_blist_alias_buddy(b, uri);
 			bs = g_new0(struct simple_buddy, 1);
-			bs->name = g_strdup(b->name);
+			bs->name = g_strdup(purple_buddy_get_name(b));
 			g_hash_table_insert(sip->buddies, bs->name, bs);
 		}
 		xmlnode_free(isc);
--- a/libpurple/protocols/toc/toc.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/toc/toc.c	Wed Mar 04 16:52:47 2009 +0000
@@ -119,7 +119,7 @@
 
 #define TOC_CONNECT_STEPS 3
 
-static void toc_login_callback(gpointer, gint, PurpleInputCondition);
+static void toc_login_callback(gpointer, gint, const gchar *);
 static void toc_callback(gpointer, gint, PurpleInputCondition);
 
 /* ok. this function used to take username/password, and return 0 on success.
@@ -152,7 +152,7 @@
 	}
 }
 
-static void toc_login_callback(gpointer data, gint source, PurpleInputCondition cond)
+static void toc_login_callback(gpointer data, gint source, const gchar *error_message)
 {
 	PurpleConnection *gc = data;
 	struct toc_data *tdt;
@@ -260,7 +260,8 @@
 	}
 }
 
-char *escape_message(const char *msg)
+static char *
+escape_message(const char *msg)
 {
 	char *ret;
 	int i, j;
@@ -305,7 +306,8 @@
  * Duplicates the input string, replacing each \n with a <BR>, and 
  * escaping a few other characters.
  */
-char *escape_text(const char *msg)
+static char *
+escape_text(const char *msg)
 {
 	char *ret;
 	int i, j;
@@ -435,7 +437,7 @@
 	if (buflen < ntohs(hdr->len)) {
 		/* fake like there's a read error */
 		purple_debug(PURPLE_DEBUG_ERROR, "toc",
-				   "buffer too small (have %d, need %d)\n",
+				   "buffer too small (have %" G_GSIZE_FORMAT ", need %d)\n",
 				   buflen, ntohs(hdr->len));
 		return -1;
 	}
--- a/libpurple/protocols/yahoo/yahoo.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/yahoo/yahoo.c	Wed Mar 04 16:52:47 2009 +0000
@@ -385,7 +385,7 @@
 	for (i = list; i; i = i->next) {
 		b = i->data;
 		g = purple_buddy_get_group(b);
-		if (!purple_utf8_strcasecmp(group, g->name)) {
+		if (!purple_utf8_strcasecmp(group, purple_group_get_name(g))) {
 			purple_debug(PURPLE_DEBUG_MISC, "yahoo",
 				"Oh good, %s is in the right group (%s).\n", name, group);
 			list = g_slist_delete_link(list, i);
@@ -423,7 +423,8 @@
 	for (i = list; i; i = i->next) {
 		b = i->data;
 		g = purple_buddy_get_group(b);
-		purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name, g->name);
+		purple_debug(PURPLE_DEBUG_MISC, "yahoo", "Deleting Buddy %s from group %s.\n", name,
+				purple_group_get_name(g));
 		purple_blist_remove_buddy(b);
 	}
 }
@@ -2027,21 +2028,23 @@
 		return;
 
 	group = purple_buddy_get_group(buddy);
-	name = g_strdup(buddy->name);
-	account = buddy->account;
+	name = g_strdup(purple_buddy_get_name(buddy));
+	account = purple_buddy_get_account(buddy);
 
 	purple_debug(PURPLE_DEBUG_INFO, "blist",
-		"Removing '%s' from buddy list.\n", buddy->name);
+		"Removing '%s' from buddy list.\n", name);
 	purple_account_remove_buddy(account, buddy, group);
 	purple_blist_remove_buddy(buddy);
 
-	serv_add_deny(account->gc, name);
+	serv_add_deny(purple_account_get_connection(account), name);
 
 	g_free(name);
 }
 
-static void keep_buddy(PurpleBuddy *b) {
-	purple_privacy_deny_remove(b->account, b->name, 1);
+static void keep_buddy(PurpleBuddy *b)
+{
+	purple_privacy_deny_remove(purple_buddy_get_account(b),
+			purple_buddy_get_name(b), 1);
 }
 
 static void yahoo_process_ignore(PurpleConnection *gc, struct yahoo_packet *pkt) {
@@ -3128,11 +3131,12 @@
 	YahooFriend *f;
 	PurplePresence *presence;
 
-	if (!b || !(account = b->account) || !(gc = purple_account_get_connection(account)) ||
-					     !(yd = gc->proto_data))
+	if (!b || !(account = purple_buddy_get_account(b)) ||
+			!(gc = purple_account_get_connection(account)) ||
+			!(yd = gc->proto_data))
 		return NULL;
 
-	f = yahoo_friend_find(gc, b->name);
+	f = yahoo_friend_find(gc, purple_buddy_get_name(b));
 	if (!f) {
 		return "not-authorized";
 	}
@@ -3192,7 +3196,7 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 	yd = gc->proto_data;
 	id = yd->conf_id;
 
@@ -3204,7 +3208,7 @@
 	yahoo_c_join(gc, components);
 	g_hash_table_destroy(components);
 
-	yahoo_c_invite(gc, id, "Join my conference...", buddy->name);
+	yahoo_c_invite(gc, id, "Join my conference...", purple_buddy_get_name(buddy));
 }
 
 static void yahoo_presence_settings(PurpleBlistNode *node, gpointer data) {
@@ -3213,9 +3217,9 @@
 	int presence_val = GPOINTER_TO_INT(data);
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
-
-	yahoo_friend_update_presence(gc, buddy->name, presence_val);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+
+	yahoo_friend_update_presence(gc, purple_buddy_get_name(buddy), presence_val);
 }
 
 static void yahoo_game(PurpleBlistNode *node, gpointer data) {
@@ -3233,10 +3237,10 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 	yd = (struct yahoo_data *) gc->proto_data;
 
-	f = yahoo_friend_find(gc, buddy->name);
+	f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
 	if (!f)
 		return;
 
@@ -3258,8 +3262,10 @@
 	YahooFriend *f = NULL;
 	const char *msg;
 	char *msg2;
-
-	f = yahoo_friend_find(b->account->gc, b->name);
+	PurpleAccount *account;
+
+	account = purple_buddy_get_account(b);
+	f = yahoo_friend_find(purple_account_get_connection(account), purple_buddy_get_name(b));
 	if (!f)
 		return g_strdup(_("Not on server list"));
 
@@ -3288,8 +3294,10 @@
 	char *escaped;
 	char *status = NULL;
 	const char *presence = NULL;
-
-	f = yahoo_friend_find(b->account->gc, b->name);
+	PurpleAccount *account;
+
+	account = purple_buddy_get_account(b);
+	f = yahoo_friend_find(purple_account_get_connection(account), purple_buddy_get_name(b));
 	if (!f)
 		status = g_strdup_printf("\n%s", _("Not on server list"));
 	else {
@@ -3340,7 +3348,7 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 
 	yahoo_add_buddy(gc, buddy, NULL);
 }
@@ -3354,9 +3362,9 @@
 	g_return_if_fail(PURPLE_BLIST_NODE_IS_BUDDY(node));
 
 	buddy = (PurpleBuddy *) node;
-	gc = purple_account_get_connection(buddy->account);
-
-	yahoo_chat_goto(gc, buddy->name);
+	gc = purple_account_get_connection(purple_buddy_get_account(buddy));
+
+	yahoo_chat_goto(gc, purple_buddy_get_name(buddy));
 }
 
 static GList *build_presence_submenu(YahooFriend *f, PurpleConnection *gc) {
@@ -3400,9 +3408,10 @@
 static void yahoo_doodle_blist_node(PurpleBlistNode *node, gpointer data)
 {
 	PurpleBuddy *b = (PurpleBuddy *)node;
-	PurpleConnection *gc = b->account->gc;
-
-	yahoo_doodle_initiate(gc, b->name);
+	PurpleAccount *account = purple_buddy_get_account(b);
+	PurpleConnection *gc = purple_account_get_connection(account);
+
+	yahoo_doodle_initiate(gc, purple_buddy_get_name(b));
 }
 
 static GList *yahoo_buddy_menu(PurpleBuddy *buddy)
@@ -3410,12 +3419,12 @@
 	GList *m = NULL;
 	PurpleMenuAction *act;
 
-	PurpleConnection *gc = purple_account_get_connection(buddy->account);
+	PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(buddy));
 	struct yahoo_data *yd = gc->proto_data;
 	static char buf2[1024];
 	YahooFriend *f;
 
-	f = yahoo_friend_find(gc, buddy->name);
+	f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
 
 	if (!f && !yd->wm) {
 		act = purple_menu_action_new(_("Add Buddy"),
@@ -3942,19 +3951,20 @@
 	const char *group = NULL;
 	char *group2;
 	YahooFriend *f;
+	const char *bname;
 
 	if (!yd->logged_in)
 		return;
 
-	if (!purple_privacy_check(purple_connection_get_account(gc),
-			purple_buddy_get_name(buddy)))
+	bname = purple_buddy_get_name(buddy);
+	if (!purple_privacy_check(purple_connection_get_account(gc), bname))
 		return;
 
-	f = yahoo_friend_find(gc, purple_buddy_get_name(buddy));
+	f = yahoo_friend_find(gc, bname);
 
 	g = purple_buddy_get_group(buddy);
 	if (g)
-		group = g->name;
+		group = purple_group_get_name(g);
 	else
 		group = "Buddies";
 
@@ -3967,7 +3977,7 @@
 	                  1, purple_connection_get_display_name(gc),
 	                  302, "319",
 	                  300, "319",
-	                  7, buddy->name,
+	                  7, bname,
 	                  334, "0",
 	                  301, "319",
 	                  303, "319"
@@ -3981,19 +3991,22 @@
 static void yahoo_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy, PurpleGroup *group)
 {
 	struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
-        struct yahoo_packet *pkt;
+	struct yahoo_packet *pkt;
 	GSList *buddies, *l;
 	PurpleGroup *g;
 	gboolean remove = TRUE;
 	char *cg;
-
-	if (!(yahoo_friend_find(gc, buddy->name)))
+	const char *bname, *gname;
+
+	bname = purple_buddy_get_name(buddy);
+	if (!(yahoo_friend_find(gc, bname)))
 		return;
 
-	buddies = purple_find_buddies(purple_connection_get_account(gc), buddy->name);
+	gname = purple_group_get_name(group);
+	buddies = purple_find_buddies(purple_connection_get_account(gc), bname);
 	for (l = buddies; l; l = l->next) {
 		g = purple_buddy_get_group(l->data);
-		if (purple_utf8_strcasecmp(group->name, g->name)) {
+		if (purple_utf8_strcasecmp(gname, purple_group_get_name(g))) {
 			remove = FALSE;
 			break;
 		}
@@ -4002,12 +4015,12 @@
 	g_slist_free(buddies);
 
 	if (remove)
-		g_hash_table_remove(yd->friends, buddy->name);
-
-	cg = yahoo_string_encode(gc, group->name, NULL);
+		g_hash_table_remove(yd->friends, bname);
+
+	cg = yahoo_string_encode(gc, gname, NULL);
 	pkt = yahoo_packet_new(YAHOO_SERVICE_REMBUDDY, YAHOO_STATUS_AVAILABLE, 0);
 	yahoo_packet_hash(pkt, "sss", 1, purple_connection_get_display_name(gc),
-	                  7, buddy->name, 65, cg);
+	                  7, bname, 65, cg);
 	yahoo_packet_send_and_free(pkt, yd);
 	g_free(cg);
 }
@@ -4116,7 +4129,7 @@
 	struct yahoo_packet *pkt;
 	char *gpn, *gpo;
 
-	gpn = yahoo_string_encode(gc, group->name, NULL);
+	gpn = yahoo_string_encode(gc, purple_group_get_name(group), NULL);
 	gpo = yahoo_string_encode(gc, old_name, NULL);
 	if (!strcmp(gpn, gpo)) {
 		g_free(gpn);
@@ -4271,7 +4284,7 @@
 }
 
 /* This may not be the best way to do this, but we find the first key w/o a value
- * and assume it is the screenname */
+ * and assume it is the buddy name */
 static void yahoo_find_uri_novalue_param(gpointer key, gpointer value, gpointer user_data)
 {
 	char **retval = user_data;
--- a/libpurple/protocols/yahoo/yahoo_picture.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/yahoo/yahoo_picture.c	Wed Mar 04 16:52:47 2009 +0000
@@ -569,7 +569,7 @@
 		checksum &= ~g;
 	}
 
-	purple_debug_misc("yahoo", "Calculated buddy icon checksum: %d", checksum);
+	purple_debug_misc("yahoo", "Calculated buddy icon checksum: %d\n", checksum);
 
 	return checksum;
 } 
--- a/libpurple/protocols/yahoo/yahoo_profile.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/yahoo/yahoo_profile.c	Wed Mar 04 16:52:47 2009 +0000
@@ -699,8 +699,9 @@
 			info_data->name);
 
 	if (b) {
-		if(b->alias && b->alias[0]) {
-			char *aliastext = g_markup_escape_text(b->alias, -1);
+		const char *balias = purple_buddy_get_local_buddy_alias(b);
+		if(balias && balias[0]) {
+			char *aliastext = g_markup_escape_text(balias, -1);
 			purple_notify_user_info_add_pair(user_info, _("Alias"), aliastext); 
 			g_free(aliastext);
 		}
@@ -715,7 +716,7 @@
 		/* Add the normal tooltip pairs */
 		yahoo_tooltip_text(b, user_info, TRUE);
 
-		if ((f = yahoo_friend_find(info_data->gc, b->name))) {
+		if ((f = yahoo_friend_find(info_data->gc, purple_buddy_get_name(b)))) {
 			const char *ip;
 			if ((ip = yahoo_friend_get_ip(f)))
 				purple_notify_user_info_add_pair(user_info, _("IP Address"), ip);
@@ -1213,7 +1214,9 @@
 				 * in which case the user may or may not actually exist.
 				 * Hence this extra step.
 				 */
-				f = yahoo_friend_find(b->account->gc, b->name);
+				PurpleAccount *account = purple_buddy_get_account(b);
+				f = yahoo_friend_find(purple_account_get_connection(account),
+						purple_buddy_get_name(b));
 			}
 			str = f ? _("Could not retrieve the user's profile. "
 					  "This most likely is a temporary server-side problem. "
--- a/libpurple/protocols/yahoo/yahoochat.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/yahoo/yahoochat.c	Wed Mar 04 16:52:47 2009 +0000
@@ -519,7 +519,7 @@
 		GList *l;
 		GList *flags = NULL;
 		for (l = members; l; l = l->next)
-			flags = g_list_append(flags, GINT_TO_POINTER(PURPLE_CBFLAGS_NONE));
+			flags = g_list_prepend(flags, GINT_TO_POINTER(PURPLE_CBFLAGS_NONE));
 		if (c && purple_conv_chat_has_left(PURPLE_CONV_CHAT(c))) {
 			/* this might be a hack, but oh well, it should nicely */
 			char *tmpmsg;
--- a/libpurple/protocols/zephyr/zephyr.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/protocols/zephyr/zephyr.c	Wed Mar 04 16:52:47 2009 +0000
@@ -732,7 +732,7 @@
 	return ret;
 }
 
-static gboolean pending_zloc(zephyr_account *zephyr,char *who)
+static gboolean pending_zloc(zephyr_account *zephyr, const char *who)
 {
 	GList *curr;
 
@@ -771,6 +771,8 @@
 			int nlocs;
 			char *user;
 			PurpleBuddy *b;
+			const char *bname;
+
 			/* XXX add real error reporting */
 			if (ZParseLocations(&notice, NULL, &nlocs, &user) != ZERR_NONE)
 				return;
@@ -780,15 +782,19 @@
 				b = purple_find_buddy(gc->account,stripped_user);
 				g_free(stripped_user);
 			}
-			if ((b && pending_zloc(zephyr,b->name)) || pending_zloc(zephyr,user)) {
+
+			bname = b ? purple_buddy_get_name(b) : NULL;
+			if ((b && pending_zloc(zephyr,bname)) || pending_zloc(zephyr,user)) {
 				ZLocations_t locs;
 				int one = 1;
 				PurpleNotifyUserInfo *user_info = purple_notify_user_info_new();
 				char *tmp;
+				const char *balias;
 
-				purple_notify_user_info_add_pair(user_info, _("User"), (b ? b->name : user));
-				if (b && b->alias)
-					purple_notify_user_info_add_pair(user_info, _("Alias"), b->alias);
+				purple_notify_user_info_add_pair(user_info, _("User"), (b ? bname : user));
+				balias = purple_buddy_get_local_buddy_alias(b);
+				if (b && balias)
+					purple_notify_user_info_add_pair(user_info, _("Alias"), balias);
 
 				if (!nlocs) {
 					purple_notify_user_info_add_pair(user_info, NULL, _("Hidden or not logged-in"));
@@ -801,14 +807,14 @@
 					purple_notify_user_info_add_pair(user_info, _("Location"), tmp);
 					g_free(tmp);
 				}
-				purple_notify_userinfo(gc, (b ? b->name : user), 
+				purple_notify_userinfo(gc, (b ? bname : user), 
 						     user_info, NULL, NULL);
 				purple_notify_user_info_destroy(user_info);
 			} else {
 				if (nlocs>0) 
-					purple_prpl_got_user_status(gc->account, b ? b->name : user, "available", NULL);
+					purple_prpl_got_user_status(gc->account, b ? bname : user, "available", NULL);
 				else 
-					purple_prpl_got_user_status(gc->account, b ? b->name : user, "offline", NULL);
+					purple_prpl_got_user_status(gc->account, b ? bname : user, "offline", NULL);
 			}
 
 			g_free(user);
@@ -1141,6 +1147,7 @@
 				/* XXX fix */
 				char *user; 
 				PurpleBuddy *b;
+				const char *bname;
 				int nlocs = 0;
 				parse_tree *locations;
 				gchar *locval;
@@ -1160,15 +1167,18 @@
 					nlocs = 1;
 				}
 	
-				if ((b && pending_zloc(zephyr,b->name)) || pending_zloc(zephyr,user) || pending_zloc(zephyr,local_zephyr_normalize(zephyr,user))){
+				bname = b ? purple_buddy_get_name(b) : NULL;
+				if ((b && pending_zloc(zephyr,bname)) || pending_zloc(zephyr,user) || pending_zloc(zephyr,local_zephyr_normalize(zephyr,user))){
 					PurpleNotifyUserInfo *user_info = purple_notify_user_info_new();
 					char *tmp;
+					const char *balias;
 
-					purple_notify_user_info_add_pair(user_info, _("User"), (b ? b->name : user));
+					purple_notify_user_info_add_pair(user_info, _("User"), (b ? bname : user));
 
-					if (b && b->alias)
-						purple_notify_user_info_add_pair(user_info, _("Alias"), b->alias);
-											
+					balias = b ? purple_buddy_get_local_buddy_alias(b) : NULL;
+					if (balias)
+						purple_notify_user_info_add_pair(user_info, _("Alias"), balias);
+
 					if (!nlocs) {
 						purple_notify_user_info_add_pair(user_info, NULL, _("Hidden or not logged-in"));
 					} else {
@@ -1179,14 +1189,14 @@
 						g_free(tmp);
 					}
 
-					purple_notify_userinfo(gc, b ? b->name : user,
+					purple_notify_userinfo(gc, b ? bname : user,
 							     user_info, NULL, NULL);
 					purple_notify_user_info_destroy(user_info);
 				} else {
 					if (nlocs>0) 
-						purple_prpl_got_user_status(gc->account, b ? b->name : user, "available", NULL);
+						purple_prpl_got_user_status(gc->account, b ? bname : user, "available", NULL);
 					else 
-						purple_prpl_got_user_status(gc->account, b ? b->name : user, "offline", NULL);
+						purple_prpl_got_user_status(gc->account, b ? bname : user, "offline", NULL);
 				}
 			}
 			else if (!g_ascii_strncasecmp(spewtype,"subscribed",10)) {
@@ -1246,38 +1256,44 @@
 
 static gint check_loc(gpointer_data)
 {
-        PurpleBlistNode *gnode, *cnode, *bnode;
-        ZLocations_t locations;
-        int numlocs;
-        int one = 1;
+	PurpleBlistNode *gnode, *cnode, *bnode;
+	ZLocations_t locations;
+	int numlocs;
+	int one = 1;
 
-	for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+	for (gnode = purple_blist_get_root(); gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode)) {
 		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
-		for (cnode = gnode->child; cnode; cnode = cnode->next) {
+		for (cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode)) {
 			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			for (bnode = cnode->child; bnode; bnode = bnode->next) {
+			for (bnode = purple_blist_node_get_first_child(cnode);
+					bnode;
+					bnode = purple_blist_node_get_sibling_next(bnode)) {
 				PurpleBuddy *b = (PurpleBuddy *) bnode;
 
 				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
-				if (b->account->gc == zgc) {
+				if (purple_buddy_get_account(b)->gc == zgc) {
 					char *chk;
-                                        chk = local_zephyr_normalize(b->name);
-                                        ZLocateUser(chk,&numlocs, ZAUTH);
-                                        if (numlocs) {
-                                                int i;
-                                                for(i=0;i<numlocs;i++) {
-                                                        ZGetLocations(&locations,&one);
-                                                        serv_got_update(zgc,b->name,1,0,0,0,0);
-                                                }
-                                        }
-                                }
-                        }
-                }
-        }
-        return TRUE;
+					const char *bname = purple_buddy_get_name(b);
+					chk = local_zephyr_normalize(bname);
+					ZLocateUser(chk,&numlocs, ZAUTH);
+					if (numlocs) {
+						int i;
+						for(i=0;i<numlocs;i++) {
+							ZGetLocations(&locations,&one);
+							serv_got_update(zgc,bname,1,0,0,0,0);
+						}
+					}
+				}
+			}
+		}
+	}
+	return TRUE;
 }
 
 #else
@@ -1288,6 +1304,7 @@
 	ZAsyncLocateData_t ald;
 	PurpleConnection *gc = (PurpleConnection *)data;
 	zephyr_account *zephyr = gc->proto_data;
+	PurpleAccount *account = purple_connection_get_account(gc);
 
 	if (use_zeph02(zephyr)) {
 		ald.user = NULL;
@@ -1295,22 +1312,28 @@
 		ald.version = NULL;
 	}
 
-	for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+	for (gnode = purple_blist_get_root(); gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode)) {
 		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
-		for (cnode = gnode->child; cnode; cnode = cnode->next) {
+		for (cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode)) {
 			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			for (bnode = cnode->child; bnode; bnode = bnode->next) {
+			for (bnode = purple_blist_node_get_first_child(cnode);
+					bnode;
+					bnode = purple_blist_node_get_sibling_next(bnode)) {
 				PurpleBuddy *b = (PurpleBuddy *) bnode;
 
 				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
-				if (b->account->gc == gc) {
+				if (purple_buddy_get_account(b) == account) {
 					const char *chk;
+					const char *name = purple_buddy_get_name(b);
 
-					chk = local_zephyr_normalize(zephyr,b->name);
-					purple_debug_info("zephyr","chk: %s b->name %s\n",chk,b->name);
+					chk = local_zephyr_normalize(zephyr,name);
+					purple_debug_info("zephyr","chk: %s b->name %s\n",chk,name);
 					/* XXX add real error reporting */
 					/* doesn't matter if this fails or not; we'll just move on to the next one */
 					if (use_zeph02(zephyr)) {
@@ -1323,9 +1346,9 @@
 							for(i=0;i<numlocs;i++) {
 								ZGetLocations(&locations,&one);
 								if (nlocs>0) 
-									purple_prpl_got_user_status(gc->account,b->name,"available",NULL);
+									purple_prpl_got_user_status(account,name,"available",NULL);
 								else 
-									purple_prpl_got_user_status(gc->account,b->name,"offline",NULL);
+									purple_prpl_got_user_status(account,name,"offline",NULL);
 							}
 						}
 #else
@@ -1936,6 +1959,7 @@
 	PurpleBuddy *b;
 	char *fname;
 	FILE *fd;
+	PurpleAccount *account;
 	zephyr_account* zephyr = gc->proto_data;
 	fname = g_strdup_printf("%s/.anyone", purple_home_dir());
 	fd = g_fopen(fname, "w");
@@ -1944,18 +1968,25 @@
 		return;
 	}
 
-	for (gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
+	account = purple_connection_get_account(gc);
+	for (gnode = purple_blist_get_root();
+			gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode)) {
 		if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
-		for (cnode = gnode->child; cnode; cnode = cnode->next) {
+		for (cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode)) {
 			if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			for (bnode = cnode->child; bnode; bnode = bnode->next) {
+			for (bnode = purple_blist_node_get_first_child(cnode);
+					bnode;
+					bnode = purple_blist_node_get_sibling_next(bnode)) {
 				if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
 				b = (PurpleBuddy *) bnode;
-				if (b->account == gc->account) {
-					gchar *stripped_user = zephyr_strip_local_realm(zephyr,b->name);
+				if (purple_buddy_get_account(b) == account) {
+					gchar *stripped_user = zephyr_strip_local_realm(zephyr, purple_buddy_get_name(b));
 					fprintf(fd, "%s\n", stripped_user);
 					g_free(stripped_user);
 				}
@@ -2498,26 +2529,31 @@
 	PurpleBlistNode *gnode, *cnode;
 
 	/* XXX needs to be %host%,%canon%, and %me% clean */
-	for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
-		for(cnode = gnode->child; cnode; cnode = cnode->next) {
+	for(gnode = purple_blist_get_root(); gnode;
+			gnode = purple_blist_node_get_sibling_next(gnode)) {
+		for(cnode = purple_blist_node_get_first_child(gnode);
+				cnode;
+				cnode = purple_blist_node_get_sibling_next(cnode)) {
 			PurpleChat *chat = (PurpleChat*)cnode;
 			char *zclass, *inst, *recip;
 			char** triple;
+			GHashTable *components;
 			if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
 				continue;
-			if(chat->account !=account)
-				continue;
-			if(!(zclass = g_hash_table_lookup(chat->components, "class")))
+			if(purple_chat_get_account(chat) != account)
 				continue;
-			if(!(inst = g_hash_table_lookup(chat->components, "instance")))
+			components = purple_chat_get_components(chat);
+			if(!(zclass = g_hash_table_lookup(components, "class")))
+				continue;
+			if(!(inst = g_hash_table_lookup(components, "instance")))
 				inst = g_strdup("");
-			if(!(recip = g_hash_table_lookup(chat->components, "recipient")))
+			if(!(recip = g_hash_table_lookup(components, "recipient")))
 				recip = g_strdup("");
 			/*			purple_debug_info("zephyr","in zephyr_find_blist_chat name: %s\n",name?name:""); */
 			triple = g_strsplit(name,",",3);
 			if (!g_ascii_strcasecmp(triple[0],zclass) && !g_ascii_strcasecmp(triple[1],inst) && !g_ascii_strcasecmp(triple[2],recip))
 				return chat;
-			
+
 		}
 	}
 	return NULL;
--- a/libpurple/proxy.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/proxy.c	Wed Mar 04 16:52:47 2009 +0000
@@ -207,6 +207,16 @@
 	return global_proxy_info;
 }
 
+void
+purple_global_proxy_set_info(PurpleProxyInfo *info)
+{
+	g_return_if_fail(info != NULL);
+
+	purple_proxy_info_destroy(global_proxy_info);
+
+	global_proxy_info = info;
+}
+
 static PurpleProxyInfo *
 purple_gnome_proxy_get_info(void)
 {
@@ -228,13 +238,13 @@
 	g_free(err);
 	err = NULL;
 
-	if (!strcmp(tmp, "none\n")) {
+	if (purple_strequal(tmp, "none\n")) {
 		info.type = PURPLE_PROXY_NONE;
 		g_free(tmp);
 		return &info;
 	}
 
-	if (strcmp(tmp, "manual\n")) {
+	if (purple_strequal(tmp, "manual\n")) {
 		/* Unknown setting.  Fallback to using our global proxy settings. */
 		g_free(tmp);
 		return purple_global_proxy_get_info();
@@ -263,7 +273,7 @@
 	g_free(err);
 	err = NULL;
 
-	if (!strcmp(tmp, "true\n"))
+	if (purple_strequal(tmp, "true\n"))
 		use_same_proxy = TRUE;
 	g_free(tmp);
 	tmp = NULL;
@@ -2300,31 +2310,31 @@
 {
 	PurpleProxyInfo *info = purple_global_proxy_get_info();
 
-	if (!strcmp(name, "/purple/proxy/type")) {
+	if (purple_strequal(name, "/purple/proxy/type")) {
 		int proxytype;
 		const char *type = value;
 
-		if (!strcmp(type, "none"))
+		if (purple_strequal(type, "none"))
 			proxytype = PURPLE_PROXY_NONE;
-		else if (!strcmp(type, "http"))
+		else if (purple_strequal(type, "http"))
 			proxytype = PURPLE_PROXY_HTTP;
-		else if (!strcmp(type, "socks4"))
+		else if (purple_strequal(type, "socks4"))
 			proxytype = PURPLE_PROXY_SOCKS4;
-		else if (!strcmp(type, "socks5"))
+		else if (purple_strequal(type, "socks5"))
 			proxytype = PURPLE_PROXY_SOCKS5;
-		else if (!strcmp(type, "envvar"))
+		else if (purple_strequal(type, "envvar"))
 			proxytype = PURPLE_PROXY_USE_ENVVAR;
 		else
 			proxytype = -1;
 
 		purple_proxy_info_set_type(info, proxytype);
-	} else if (!strcmp(name, "/purple/proxy/host"))
+	} else if (purple_strequal(name, "/purple/proxy/host"))
 		purple_proxy_info_set_host(info, value);
-	else if (!strcmp(name, "/purple/proxy/port"))
+	else if (purple_strequal(name, "/purple/proxy/port"))
 		purple_proxy_info_set_port(info, GPOINTER_TO_INT(value));
-	else if (!strcmp(name, "/purple/proxy/username"))
+	else if (purple_strequal(name, "/purple/proxy/username"))
 		purple_proxy_info_set_username(info, value);
-	else if (!strcmp(name, "/purple/proxy/password"))
+	else if (purple_strequal(name, "/purple/proxy/password"))
 		purple_proxy_info_set_password(info, value);
 }
 
--- a/libpurple/proxy.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/proxy.h	Wed Mar 04 16:52:47 2009 +0000
@@ -186,6 +186,14 @@
  */
 PurpleProxyInfo *purple_global_proxy_get_info(void);
 
+/**
+ * Set purple's global proxy information.
+ *
+ * @param info     The proxy information.
+ * @since 2.6.0
+ */
+void purple_global_proxy_set_info(PurpleProxyInfo *info);
+
 /*@}*/
 
 /**************************************************************************/
--- a/libpurple/prpl.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/prpl.c	Wed Mar 04 16:52:47 2009 +0000
@@ -75,7 +75,7 @@
 purple_attention_type_set_icon_name(PurpleAttentionType *type, const char *name)
 {
 	g_return_if_fail(type != NULL);
-	
+
 	type->icon_name = name;
 }
 
@@ -400,7 +400,7 @@
 	PurpleConversation *conv;
 	gboolean (*send_attention)(PurpleConnection *, const char *, guint);
 	PurpleBuddy *buddy;
-	const char *alias;	
+	const char *alias;
 	gchar *description;
 	time_t mtime;
 
@@ -425,7 +425,7 @@
 	} else {
 		description = g_strdup_printf(_("Requesting %s's attention..."), alias);
 	}
-	
+
 	flags = PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_NOTIFY | PURPLE_MESSAGE_SYSTEM;
 
 	purple_debug_info("server", "serv_send_attention: sending '%s' to %s\n",
@@ -511,7 +511,7 @@
 	for (l = purple_plugins_get_protocols(); l != NULL; l = l->next) {
 		plugin = (PurplePlugin *)l->data;
 
-		if (!strcmp(plugin->info->id, id))
+		if (purple_strequal(plugin->info->id, id))
 			return plugin;
 	}
 
--- a/libpurple/prpl.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/prpl.h	Wed Mar 04 16:52:47 2009 +0000
@@ -178,9 +178,11 @@
 	OPT_PROTO_USE_POINTSIZE = 0x00000100,
 
 	/**
-	 * Set the Register button active when screenname is not given.
+	 * Set the Register button active even when the username has not
+	 * been specified.
 	 *
-	 * Gadu-Gadu doesn't need a screenname to register new account.
+	 * Gadu-Gadu doesn't need a username to register new account (because
+	 * usernames are assigned by the server).
 	 */
 	OPT_PROTO_REGISTER_NOSCREENNAME = 0x00000200,
 
@@ -211,7 +213,7 @@
 
 	/**
 	 * Returns the base icon name for the given buddy and account.
-	 * If buddy is NULL and the account is non-NULL, it will return the 
+	 * If buddy is NULL and the account is non-NULL, it will return the
 	 * name to use for the account's icon. If both are NULL, it will
 	 * return the name to use for the protocol's icon.
 	 *
@@ -413,7 +415,7 @@
 	 * reasons.
 	 */
 	void (*unregister_user)(PurpleAccount *, PurpleAccountUnregistrationCb cb, void *user_data);
-	
+
 	/* Attention API for sending & receiving zaps/nudges/buzzes etc. */
 	gboolean (*send_attention)(PurpleConnection *gc, const char *username, guint type);
 	GList *(*get_attention_types)(PurpleAccount *acct);
@@ -594,7 +596,7 @@
 /*@{*/
 
 /**
- * Notifies Purple that an account's idle state and time have changed.
+ * Notifies Purple that our account's idle state and time have changed.
  *
  * This is meant to be called from protocol plugins.
  *
@@ -606,7 +608,7 @@
 								time_t idle_time);
 
 /**
- * Notifies Purple of an account's log-in time.
+ * Notifies Purple of our account's log-in time.
  *
  * This is meant to be called from protocol plugins.
  *
@@ -616,7 +618,7 @@
 void purple_prpl_got_account_login_time(PurpleAccount *account, time_t login_time);
 
 /**
- * Notifies Purple that an account's status has changed.
+ * Notifies Purple that our account's status has changed.
  *
  * This is meant to be called from protocol plugins.
  *
@@ -627,13 +629,14 @@
  */
 void purple_prpl_got_account_status(PurpleAccount *account,
 								  const char *status_id, ...) G_GNUC_NULL_TERMINATED;
+
 /**
- * Notifies Purple that a user's idle state and time have changed.
+ * Notifies Purple that a buddy's idle state and time have changed.
  *
  * This is meant to be called from protocol plugins.
  *
  * @param account   The account the user is on.
- * @param name      The screen name of the user.
+ * @param name      The name of the buddy.
  * @param idle      The user's idle state.
  * @param idle_time The user's idle time.  This is the time at
  *                  which the user became idle, in seconds since
@@ -644,24 +647,24 @@
 							 gboolean idle, time_t idle_time);
 
 /**
- * Notifies Purple of a user's log-in time.
+ * Notifies Purple of a buddy's log-in time.
  *
  * This is meant to be called from protocol plugins.
  *
  * @param account    The account the user is on.
- * @param name       The screen name of the user.
+ * @param name       The name of the buddy.
  * @param login_time The user's log-in time.
  */
 void purple_prpl_got_user_login_time(PurpleAccount *account, const char *name,
 								   time_t login_time);
 
 /**
- * Notifies Purple that a user's status has been activated.
+ * Notifies Purple that a buddy's status has been activated.
  *
  * This is meant to be called from protocol plugins.
  *
  * @param account   The account the user is on.
- * @param name      The screen name of the user.
+ * @param name      The name of the buddy.
  * @param status_id The status ID.
  * @param ...       A NULL-terminated list of attribute IDs and values,
  *                  beginning with the value for @a attr_id.
@@ -670,19 +673,19 @@
 							   const char *status_id, ...) G_GNUC_NULL_TERMINATED;
 
 /**
- * Notifies libpurple that a user's status has been deactivated
+ * Notifies libpurple that a buddy's status has been deactivated
  *
  * This is meant to be called from protocol plugins.
  *
  * @param account   The account the user is on.
- * @param name      The screen name of the user.
+ * @param name      The name of the buddy.
  * @param status_id The status ID.
  */
 void purple_prpl_got_user_status_deactive(PurpleAccount *account, const char *name,
 					const char *status_id);
- 
+
 /**
- * Informs the server that an account's status changed.
+ * Informs the server that our account's status changed.
  *
  * @param account    The account the user is on.
  * @param old_status The previous status.
@@ -703,37 +706,43 @@
  */
 GList *purple_prpl_get_statuses(PurpleAccount *account, PurplePresence *presence);
 
-/** Send an attention request message.
+/**
+ * Send an attention request message.
  *
  * @param gc The connection to send the message on.
  * @param who Whose attention to request.
  * @param type_code An index into the prpl's attention_types list determining the type
- * 	of the attention request command to send. 0 if prpl only defines one
- * 	(for example, Yahoo and MSN), but some protocols define more (MySpaceIM).
+ *        of the attention request command to send. 0 if prpl only defines one
+ *        (for example, Yahoo and MSN), but some protocols define more (MySpaceIM).
  *
  * Note that you can't send arbitrary PurpleAttentionType's, because there is
  * only a fixed set of attention commands.
+ *
  * @since 2.5.0
  */
 void purple_prpl_send_attention(PurpleConnection *gc, const char *who, guint type_code);
 
-/** Process an incoming attention message. 
+/**
+ * Process an incoming attention message.
  *
  * @param gc The connection that received the attention message.
  * @param who Who requested your attention.
  * @param type_code An index into the prpl's attention_types list determining the type
- * 	of the attention request command to send.
+ *        of the attention request command to send.
+ *
  * @since 2.5.0
  */
 void purple_prpl_got_attention(PurpleConnection *gc, const char *who, guint type_code);
 
-/** Process an incoming attention message in a chat. 
+/**
+ * Process an incoming attention message in a chat.
  *
  * @param gc The connection that received the attention message.
  * @param id The chat id.
  * @param who Who requested your attention.
  * @param type_code An index into the prpl's attention_types list determining the type
- * 	of the attention request command to send. 
+ *        of the attention request command to send.
+ *
  * @since 2.5.0
  */
 void purple_prpl_got_attention_in_chat(PurpleConnection *gc, int id, const char *who, guint type_code);
--- a/libpurple/purple-send-async	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/purple-send-async	Wed Mar 04 16:52:47 2009 +0000
@@ -2,18 +2,18 @@
 
 METHOD_NAME=$1
 
-if test -z "$METHOD_NAME" 
+if test -z "$METHOD_NAME"
 then
-    cat <<EOF 
-This program calls purple API functions using DBus.  As opposed to purple-send, 
+    cat <<EOF
+This program calls purple API functions using DBus.  As opposed to purple-send,
 it does not print the return value.
 
 Usage:
 
    $0 method-name type1:parameter1 type2:parameter2 ...
 
-This shell script just invokes dbus-send, see man dbus-send for how 
-to specify the parameters.  
+This shell script just invokes dbus-send, see man dbus-send for how
+to specify the parameters.
 
 Examples:
 
@@ -27,4 +27,4 @@
 shift
 dbus-send --dest=im.pidgin.purple.PurpleService --type=method_call /im/pidgin/purple/PurpleObject im.pidgin.purple.PurpleInterface.$METHOD_NAME "$@"
 
-echo 
+echo
--- a/libpurple/request.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/request.c	Wed Mar 04 16:52:47 2009 +0000
@@ -23,6 +23,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
+#define _PURPLE_REQUEST_C_
+
 #include "internal.h"
 
 #include "notify.h"
@@ -137,6 +139,23 @@
 	return purple_request_field_is_required(field);
 }
 
+gpointer
+purple_request_field_get_ui_data(const PurpleRequestField *field)
+{
+	g_return_val_if_fail(field != NULL, NULL);
+
+	return field->ui_data;
+}
+
+void
+purple_request_field_set_ui_data(PurpleRequestField *field,
+                                 gpointer ui_data)
+{
+	g_return_if_fail(field != NULL);
+
+	field->ui_data = ui_data;
+}
+
 gboolean
 purple_request_fields_all_required_filled(const PurpleRequestFields *fields)
 {
@@ -443,6 +462,14 @@
 	return field->type;
 }
 
+PurpleRequestFieldGroup *
+purple_request_field_get_group(const PurpleRequestField *field)
+{
+	g_return_val_if_fail(field != NULL, NULL);
+
+	return field->group;
+}
+
 const char *
 purple_request_field_get_id(const PurpleRequestField *field)
 {
--- a/libpurple/request.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/request.h	Wed Mar 04 16:52:47 2009 +0000
@@ -30,6 +30,9 @@
 #include <glib-object.h>
 #include <glib.h>
 
+/** @copydoc _PurpleRequestField */
+typedef struct _PurpleRequestField PurpleRequestField;
+
 #include "account.h"
 
 #define PURPLE_DEFAULT_ACTION_NONE	-1
@@ -93,10 +96,11 @@
 
 } PurpleRequestFieldGroup;
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_REQUEST_C_)
 /**
  * A request field.
  */
-typedef struct
+struct _PurpleRequestField
 {
 	PurpleRequestFieldType type;
 	PurpleRequestFieldGroup *group;
@@ -176,7 +180,8 @@
 
 	void *ui_data;
 
-} PurpleRequestField;
+};
+#endif
 
 /**
  * Request UI operations.
@@ -521,6 +526,17 @@
 PurpleRequestFieldType purple_request_field_get_type(const PurpleRequestField *field);
 
 /**
+ * Returns the group for the field.
+ *
+ * @param field The field.
+ *
+ * @return The UI data.
+ *
+ * @since 2.6.0
+ */
+PurpleRequestFieldGroup *purple_request_field_get_group(const PurpleRequestField *field);
+
+/**
  * Returns the ID of a field.
  *
  * @param field The field.
@@ -565,6 +581,30 @@
  */
 gboolean purple_request_field_is_required(const PurpleRequestField *field);
 
+/**
+ * Returns the ui_data for a field.
+ *
+ * @param field The field.
+ *
+ * @return The UI data.
+ *
+ * @since 2.6.0
+ */
+gpointer purple_request_field_get_ui_data(const PurpleRequestField *field);
+
+/**
+ * Sets the ui_data for a field.
+ *
+ * @param field The field.
+ * @param ui_data The UI data.
+ *
+ * @return The UI data.
+ *
+ * @since 2.6.0
+ */
+void purple_request_field_set_ui_data(PurpleRequestField *field,
+                                      gpointer ui_data);
+
 /*@}*/
 
 /**************************************************************************/
--- a/libpurple/savedstatuses.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/savedstatuses.c	Wed Mar 04 16:52:47 2009 +0000
@@ -461,7 +461,7 @@
 	ret = g_new0(PurpleSavedStatus, 1);
 
 	attrib = xmlnode_get_attrib(status, "transient");
-	if ((attrib == NULL) || (strcmp(attrib, "true")))
+	if (!purple_strequal(attrib, "true"))
 	{
 		/* Read the title */
 		attrib = xmlnode_get_attrib(status, "name");
@@ -940,7 +940,7 @@
 	for (iter = saved_statuses; iter != NULL; iter = iter->next)
 	{
 		status = (PurpleSavedStatus *)iter->data;
-		if ((status->title != NULL) && !strcmp(status->title, title))
+		if (purple_strequal(status->title, title))
 			return status;
 	}
 
@@ -975,8 +975,7 @@
 		status = (PurpleSavedStatus *)iter->data;
 		if ((status->type == type) && purple_savedstatus_is_transient(status) &&
 			!purple_savedstatus_has_substatuses(status) &&
-			(((status->message == NULL) && (message == NULL)) ||
-			((status->message != NULL) && (message != NULL) && !strcmp(status->message, message))))
+			purple_strequal(status->message, message))
 		{
 			return status;
 		}
--- a/libpurple/server.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/server.c	Wed Mar 04 16:52:47 2009 +0000
@@ -152,7 +152,7 @@
 	auto_reply_pref = purple_prefs_get_string("/purple/away/auto_reply");
 	if((gc->flags & PURPLE_CONNECTION_AUTO_RESP) &&
 			!purple_presence_is_available(presence) &&
-			strcmp(auto_reply_pref, "never")) {
+			!purple_strequal(auto_reply_pref, "never")) {
 
 		struct last_auto_response *lar;
 		lar = get_last_auto_response(gc, name);
@@ -172,7 +172,7 @@
 
 	if(gc)
 		prpl = purple_connection_get_prpl(gc);
-	
+
 	if(prpl)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
 
@@ -188,7 +188,7 @@
 
 	if(gc)
 		prpl = purple_connection_get_prpl(gc);
-	
+
 	if(prpl)
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
 
@@ -230,7 +230,7 @@
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
 
 	if(b && prpl_info && prpl_info->alias_buddy) {
-		prpl_info->alias_buddy(gc, b->name, b->alias);
+		prpl_info->alias_buddy(gc, purple_buddy_get_name(b), purple_buddy_get_local_buddy_alias(b));
 	}
 }
 
@@ -247,20 +247,20 @@
 
 	while (buddies != NULL)
 	{
+		const char *server_alias;
+
 		b = buddies->data;
 		buddies = g_slist_delete_link(buddies, buddies);
 
-		if((b->server_alias == NULL && alias == NULL) ||
-		    (b->server_alias && alias && !strcmp(b->server_alias, alias)))
-		{
+		server_alias = purple_buddy_get_server_alias(b);
+
+		if (purple_strequal(server_alias, alias))
 			continue;
-		}
 
 		purple_blist_server_alias_buddy(b, alias);
 
-		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, b->name, account);
-		if(conv != NULL && alias != NULL &&
-		   who != NULL && strcmp(alias, who))
+		conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, purple_buddy_get_name(b), account);
+		if (conv != NULL && alias != NULL && purple_strequal(alias, who))
 		{
 			char *escaped = g_markup_escape_text(who, -1);
 			char *escaped2 = g_markup_escape_text(alias, -1);
@@ -289,11 +289,13 @@
 	buddies = purple_find_buddies(account, who);
 
 	while(buddies != NULL) {
+		const char *balias;
 		b = buddies->data;
 
 		buddies = g_slist_delete_link(buddies, buddies);
 
-		if((!b->alias && !alias) || (b->alias && alias && !strcmp(b->alias, alias)))
+		balias = purple_buddy_get_local_buddy_alias(b);
+		if (purple_strequal(balias, alias))
 			continue;
 
 		purple_blist_alias_buddy(b, alias);
@@ -367,7 +369,9 @@
 
 	if(gc && og && ng) {
 		if (prpl_info && prpl_info->group_buddy) {
-			prpl_info->group_buddy(gc, b->name, og->name, ng->name);
+			prpl_info->group_buddy(gc, purple_buddy_get_name(b),
+			                       purple_group_get_name(og),
+								   purple_group_get_name(ng));
 		}
 	}
 }
@@ -666,8 +670,8 @@
 		if ((primitive == PURPLE_STATUS_AVAILABLE) ||
 			(primitive == PURPLE_STATUS_INVISIBLE) ||
 			mobile ||
-		    !strcmp(auto_reply_pref, "never") ||
-		    (!purple_presence_is_idle(presence) && !strcmp(auto_reply_pref, "awayidle")))
+		    purple_strequal(auto_reply_pref, "never") ||
+		    (!purple_presence_is_idle(presence) && purple_strequal(auto_reply_pref, "awayidle")))
 		{
 			g_free(name);
 			return;
--- a/libpurple/server.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/server.h	Wed Mar 04 16:52:47 2009 +0000
@@ -55,8 +55,8 @@
 void serv_move_buddy(PurpleBuddy *, PurpleGroup *, PurpleGroup *);
 int  serv_send_im(PurpleConnection *, const char *, const char *, PurpleMessageFlags flags);
 
-/** Get information about an account's attention commands, from the prpl. 
- * 
+/** Get information about an account's attention commands, from the prpl.
+ *
  * @return The attention command numbered 'code' from the prpl's attention_types, or NULL.
  */
 PurpleAttentionType *purple_get_attention_type_from_code(PurpleAccount *account, guint type_code);
@@ -76,14 +76,14 @@
  */
 void serv_send_attention(PurpleConnection *gc, const char *who, guint type_code);
 
-/** Process an incoming attention message. 
+/** Process an incoming attention message.
  *
  * @deprecated Use purple_prpl_got_attention() instead.
  *
  * @param gc The connection that received the attention message.
  * @param who Who requested your attention.
  * @param type_code An index into the prpl's attention_types list determining the type
- * 	of the attention request command to send. 
+ * 	of the attention request command to send.
  */
 void serv_got_attention(PurpleConnection *gc, const char *who, guint type_code);
 
@@ -108,7 +108,7 @@
  * aliases are the aliases or display names that buddies set for themselves.
  *
  * @param gc The connection on which the alias was received.
- * @param who The screen name of the buddy whose alias was received.
+ * @param who The name of the buddy whose alias was received.
  * @param alias The alias that was received.
  */
 void purple_serv_got_private_alias(PurpleConnection *gc, const char *who, const char *alias);
@@ -180,7 +180,7 @@
  *                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);
--- a/libpurple/signals.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/signals.c	Wed Mar 04 16:52:47 2009 +0000
@@ -487,7 +487,7 @@
 	}
 
 #ifdef HAVE_DBUS
-	purple_dbus_signal_emit_purple(signal, signal_data->num_values, 
+	purple_dbus_signal_emit_purple(signal, signal_data->num_values,
 				   signal_data->values, args);
 #endif	/* HAVE_DBUS */
 
@@ -539,7 +539,7 @@
 
 #ifdef HAVE_DBUS
 	G_VA_COPY(tmp, args);
-	purple_dbus_signal_emit_purple(signal, signal_data->num_values, 
+	purple_dbus_signal_emit_purple(signal, signal_data->num_values,
 				   signal_data->values, tmp);
 	va_end(tmp);
 #endif	/* HAVE_DBUS */
--- a/libpurple/signals.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/signals.h	Wed Mar 04 16:52:47 2009 +0000
@@ -137,7 +137,7 @@
 /**
  * Connects a signal handler to a signal for a particular object.
  * (Its priority defaults to 0, aka #PURPLE_SIGNAL_PRIORITY_DEFAULT.)
- * 
+ *
  * Take care not to register a handler function twice. Purple will
  * not correct any mistakes for you in this area.
  *
--- a/libpurple/smiley.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/smiley.c	Wed Mar 04 16:52:47 2009 +0000
@@ -722,7 +722,7 @@
 		smiley = purple_smiley_new_from_stream(shortcut, smiley_data,
 				smiley_data_len);
 	}
-	
+
 	return smiley;
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/sound-theme-loader.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,111 @@
+/*
+ * SoundThemeLoader for libpurple
+ *
+ * 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 "sound-theme-loader.h"
+#include "sound-theme.h"
+#include "util.h"
+#include "xmlnode.h"
+
+/*****************************************************************************
+ * Sound Theme Builder
+ *****************************************************************************/
+
+static PurpleTheme *
+purple_sound_loader_build(const gchar *dir)
+{
+	xmlnode *root_node = NULL, *sub_node;
+	gchar *filename_full, *data;
+	PurpleSoundTheme *theme = NULL;
+
+	/* Find the theme file */
+	g_return_val_if_fail(dir != NULL, NULL);
+	filename_full = g_build_filename(dir, "theme.xml", NULL);
+
+	if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR))
+		root_node = xmlnode_from_file(dir, "theme.xml", "sound themes", "sound-theme-loader");
+
+	g_free(filename_full);
+	g_return_val_if_fail(root_node != NULL, NULL);
+
+	/* Parse the tree */
+	sub_node = xmlnode_get_child(root_node, "description");
+	data = xmlnode_get_data(sub_node);
+
+	if (xmlnode_get_attrib(root_node, "name") != NULL) {
+		theme = g_object_new(PURPLE_TYPE_SOUND_THEME,
+				"type", "sound",
+				"name", xmlnode_get_attrib(root_node, "name"),
+				"author", xmlnode_get_attrib(root_node, "author"),
+				"image", xmlnode_get_attrib(root_node, "image"),
+				"directory", dir,
+				"description", data, NULL);
+
+		sub_node = xmlnode_get_child(root_node, "event");
+
+		while (sub_node) {
+			purple_sound_theme_set_file(theme,
+					xmlnode_get_attrib(sub_node, "name"),
+					xmlnode_get_attrib(sub_node, "file"));
+			sub_node = xmlnode_get_next_twin(sub_node);
+		}
+	}
+
+	xmlnode_free(root_node);
+	g_free(data);
+	return PURPLE_THEME(theme);
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+purple_sound_theme_loader_class_init(PurpleSoundThemeLoaderClass *klass)
+{
+	PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass);
+
+	loader_klass->purple_theme_loader_build = purple_sound_loader_build;
+}
+
+GType
+purple_sound_theme_loader_get_type(void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static const GTypeInfo info = {
+			sizeof(PurpleSoundThemeLoaderClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			(GClassInitFunc)purple_sound_theme_loader_class_init, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof(PurpleSoundThemeLoader),
+			0, /* n_preallocs */
+			NULL, /* instance_init */
+			NULL, /* value table */
+		};
+		type = g_type_register_static(PURPLE_TYPE_THEME_LOADER,
+				"PurpleSoundThemeLoader", &info, 0);
+	}
+	return type;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/sound-theme-loader.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,71 @@
+/**
+ * @file sound-theme-loader.h  Purple Sound Theme Loader Class API
+ */
+
+/* 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_SOUND_THEME_LOADER_H
+#define PURPLE_SOUND_THEME_LOADER_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme-loader.h"
+
+/**
+ * A purple sound theme loader. extends PurpleThemeLoader (theme-loader.h)
+ * This is a class designed to build sound themes
+ *
+ * PurpleSoundThemeLoader is a GObject.
+ */
+typedef struct _PurpleSoundThemeLoader        PurpleSoundThemeLoader;
+typedef struct _PurpleSoundThemeLoaderClass   PurpleSoundThemeLoaderClass;
+
+#define PURPLE_TYPE_SOUND_THEME_LOADER            (purple_sound_theme_loader_get_type())
+#define PURPLE_SOUND_THEME_LOADER(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_SOUND_THEME_LOADER, PurpleSoundThemeLoader))
+#define PURPLE_SOUND_THEME_LOADER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_SOUND_THEME_LOADER, PurpleSoundThemeLoaderClass))
+#define PURPLE_IS_SOUND_THEME_LOADER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_SOUND_THEME_LOADER))
+#define PURPLE_IS_SOUND_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_SOUND_THEME_LOADER))
+#define PURPLE_SOUND_THEME_LOADER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_SOUND_THEME_LOADER, PurpleSoundThemeLoaderClass))
+
+struct _PurpleSoundThemeLoader
+{
+	PurpleThemeLoader parent;
+};
+
+struct _PurpleSoundThemeLoaderClass
+{
+	PurpleThemeLoaderClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Purple Theme-Loader API                                         */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType purple_sound_theme_loader_get_type(void);
+
+G_END_DECLS
+#endif /* PURPLE_SOUND_THEME_LOADER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/sound-theme.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,158 @@
+/*
+ * Sound Themes for libpurple
+ *
+ * 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 "sound-theme.h"
+
+#define PURPLE_SOUND_THEME_GET_PRIVATE(Gobject) \
+	((PurpleSoundThemePrivate *) ((PURPLE_SOUND_THEME(Gobject))->priv))
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+
+typedef struct {
+	/* used to store filenames of diffrent sounds */
+	GHashTable *sound_files;
+} PurpleSoundThemePrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * Enums
+ *****************************************************************************/
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+purple_sound_theme_init(GTypeInstance *instance,
+		gpointer klass)
+{
+	PurpleSoundThemePrivate *priv;
+
+	(PURPLE_SOUND_THEME(instance))->priv = g_new0(PurpleSoundThemePrivate, 1);
+
+	priv = PURPLE_SOUND_THEME_GET_PRIVATE(instance);
+
+	priv->sound_files = g_hash_table_new_full(g_str_hash,
+			g_str_equal, g_free, g_free);
+}
+
+static void
+purple_sound_theme_finalize(GObject *obj)
+{
+	PurpleSoundThemePrivate *priv;
+
+	priv = PURPLE_SOUND_THEME_GET_PRIVATE(obj);
+
+	g_hash_table_destroy(priv->sound_files);
+
+	parent_class->finalize(obj);
+}
+
+static void
+purple_sound_theme_class_init(PurpleSoundThemeClass *klass)
+{
+	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+
+	parent_class = g_type_class_peek_parent(klass);
+
+	obj_class->finalize = purple_sound_theme_finalize;
+}
+
+GType
+purple_sound_theme_get_type(void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static const GTypeInfo info = {
+			sizeof(PurpleSoundThemeClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			(GClassInitFunc)purple_sound_theme_class_init, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof(PurpleSoundTheme),
+			0, /* n_preallocs */
+			purple_sound_theme_init, /* instance_init */
+			NULL, /* value table */
+		};
+		type = g_type_register_static(PURPLE_TYPE_THEME,
+				"PurpleSoundTheme", &info, 0);
+	}
+	return type;
+}
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+const gchar *
+purple_sound_theme_get_file(PurpleSoundTheme *theme,
+		const gchar *event)
+{
+	PurpleSoundThemePrivate *priv;
+
+	g_return_val_if_fail(PURPLE_IS_SOUND_THEME(theme), NULL);
+
+	priv = PURPLE_SOUND_THEME_GET_PRIVATE(theme);
+
+	return g_hash_table_lookup(priv->sound_files, event);
+}
+
+gchar *
+purple_sound_theme_get_file_full(PurpleSoundTheme *theme,
+		const gchar *event)
+{
+	const gchar *filename;
+
+	g_return_val_if_fail(PURPLE_IS_SOUND_THEME(theme), NULL);
+
+	filename = purple_sound_theme_get_file(theme, event);
+
+	g_return_val_if_fail(filename, NULL);
+
+	return g_build_filename(purple_theme_get_dir(PURPLE_THEME(theme)), filename, NULL);
+}
+
+void
+purple_sound_theme_set_file(PurpleSoundTheme *theme,
+		const gchar *event,
+		const gchar *filename)
+{
+	PurpleSoundThemePrivate *priv;
+	g_return_if_fail(PURPLE_IS_SOUND_THEME(theme));
+
+	priv = PURPLE_SOUND_THEME_GET_PRIVATE(theme);
+
+	if (filename != NULL)
+		g_hash_table_replace(priv->sound_files,
+				g_strdup(event), g_strdup(filename));
+	else
+		g_hash_table_remove(priv->sound_files, event);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/sound-theme.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,105 @@
+/**
+ * @file sound-theme.h  Purple Sound Theme Abstact Class API
+ */
+
+/* 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_SOUND_THEME_H
+#define PURPLE_SOUND_THEME_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme.h"
+#include "sound.h"
+
+/**
+ * extends PurpleTheme (theme.h)
+ * A purple sound theme.
+ * This is an object for Purple to represent a sound theme.
+ *
+ * PurpleSoundTheme is a PurpleTheme Object.
+ */
+typedef struct _PurpleSoundTheme        PurpleSoundTheme;
+typedef struct _PurpleSoundThemeClass   PurpleSoundThemeClass;
+
+#define PURPLE_TYPE_SOUND_THEME             (purple_sound_theme_get_type())
+#define PURPLE_SOUND_THEME(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_SOUND_THEME, PurpleSoundTheme))
+#define PURPLE_SOUND_THEME_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_SOUND_THEME, PurpleSoundThemeClass))
+#define PURPLE_IS_SOUND_THEME(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_SOUND_THEME))
+#define PURPLE_IS_SOUND_THEME_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_SOUND_THEME))
+#define PURPLE_SOUND_THEME_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_SOUND_THEME, PurpleSoundThemeClass))
+
+struct _PurpleSoundTheme
+{
+	PurpleTheme parent;
+	gpointer priv;
+};
+
+struct _PurpleSoundThemeClass
+{
+	PurpleThemeClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Purple Sound Theme API                                          */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType purple_sound_theme_get_type(void);
+
+/**
+ * Returns a copy of the filename for the sound event.
+ *
+ * @param event The purple sound event to look up.
+ *
+ * @returns The filename of the sound event.
+ */
+const gchar *purple_sound_theme_get_file(PurpleSoundTheme *theme,
+		const gchar *event);
+
+/**
+ * Returns a copy of the directory and filename for the sound event
+ *
+ * @param event The purple sound event to look up
+ *
+ * @returns The directory + '/' + filename of the sound event.  This is
+ *          a newly allocated string that should be freed with g_free.
+ */
+gchar *purple_sound_theme_get_file_full(PurpleSoundTheme *theme,
+		const gchar *event);
+
+/**
+ * Sets the filename for a given sound event
+ *
+ * @param event		the purple sound event to look up
+ * @param filename		the name of the file to be used for the event
+ */
+void purple_sound_theme_set_file(PurpleSoundTheme *theme,
+		const gchar *event,
+		const gchar *filename);
+
+G_END_DECLS
+#endif /* PURPLE_SOUND_THEME_H */
--- a/libpurple/sound.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/sound.c	Wed Mar 04 16:52:47 2009 +0000
@@ -25,6 +25,8 @@
 #include "blist.h"
 #include "prefs.h"
 #include "sound.h"
+#include "sound-theme-loader.h"
+#include "theme-manager.h"
 
 static PurpleSoundUiOps *sound_ui_ops = NULL;
 
@@ -134,6 +136,8 @@
 	purple_prefs_add_none("/purple/sound");
 	purple_prefs_add_int("/purple/sound/while_status", STATUS_AVAILABLE);
 	memset(last_played, 0, sizeof(last_played));
+
+	purple_theme_manager_register_type(g_object_new(PURPLE_TYPE_SOUND_THEME_LOADER, "type", "sound", NULL));
 }
 
 void
--- a/libpurple/sslconn.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/sslconn.c	Wed Mar 04 16:52:47 2009 +0000
@@ -216,7 +216,7 @@
 	/* TODO: Move this elsewhere */
 	gsc->verifier = purple_certificate_find_verifier("x509","tls_cached");
 
-    
+
 	ops = purple_ssl_get_ops();
 	ops->connectfunc(gsc);
 
--- a/libpurple/sslconn.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/sslconn.h	Wed Mar 04 16:52:47 2009 +0000
@@ -66,7 +66,7 @@
 
 	/** File descriptor used to refer to the socket */
 	int fd;
-	/** Glib event source ID; used to refer to the received data callback 
+	/** Glib event source ID; used to refer to the received data callback
 	 * in the glib eventloop */
 	guint inpa;
 	/** Data related to the underlying TCP connection */
@@ -134,7 +134,7 @@
 	 *              list can be guaranteed.
 	 */
 	GList * (* get_peer_certificates)(PurpleSslConnection * gsc);
-	
+
 	void (*_purple_reserved2)(void);
 	void (*_purple_reserved3)(void);
 	void (*_purple_reserved4)(void);
--- a/libpurple/status.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/status.c	Wed Mar 04 16:52:47 2009 +0000
@@ -23,6 +23,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
+#define _PURPLE_STATUS_C_
+
 #include "internal.h"
 
 #include "blist.h"
@@ -203,7 +205,7 @@
 
     for (i = 0; i < PURPLE_STATUS_NUM_PRIMITIVES; i++)
     {
-        if (!strcmp(id, status_primitive_map[i].id))
+		if (purple_strequal(id, status_primitive_map[i].id))
             return status_primitive_map[i].type;
     }
 
@@ -451,7 +453,7 @@
 	{
 		PurpleStatusAttr *attr = (PurpleStatusAttr *)l->data;
 
-		if (!strcmp(purple_status_attr_get_id(attr), id))
+		if (purple_strequal(purple_status_attr_get_id(attr), id))
 			return attr;
 	}
 
@@ -477,7 +479,7 @@
 	{
 		status_type = status_types->data;
 
-		if (!strcmp(id, status_type->id))
+		if (purple_strequal(id, status_type->id))
 			return status_type;
 
 		status_types = status_types->next;
@@ -612,7 +614,8 @@
 
 		if (old_status != NULL)
 		{
-			tmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias, buddy->name,
+			tmp = g_strdup_printf(_("%s (%s) changed status from %s to %s"), buddy_alias,
+			                      purple_buddy_get_name(buddy),
 			                      purple_status_get_name(old_status),
 			                      purple_status_get_name(new_status));
 			logtmp = g_markup_escape_text(tmp, -1);
@@ -623,19 +626,21 @@
 
 			if (purple_status_is_active(new_status))
 			{
-				tmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias, buddy->name,
+				tmp = g_strdup_printf(_("%s (%s) is now %s"), buddy_alias,
+				                      purple_buddy_get_name(buddy),
 				                      purple_status_get_name(new_status));
 				logtmp = g_markup_escape_text(tmp, -1);
 			}
 			else
 			{
-				tmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias, buddy->name,
+				tmp = g_strdup_printf(_("%s (%s) is no longer %s"), buddy_alias,
+				                      purple_buddy_get_name(buddy),
 				                      purple_status_get_name(new_status));
 				logtmp = g_markup_escape_text(tmp, -1);
 			}
 		}
 
-		log = purple_account_get_log(buddy->account, FALSE);
+		log = purple_account_get_log(purple_buddy_get_account(buddy), FALSE);
 		if (log != NULL)
 		{
 			purple_log_write(log, PURPLE_MESSAGE_SYSTEM, buddy_alias,
@@ -779,12 +784,8 @@
 		{
 			const gchar *string_data = l->data;
 			l = l->next;
-			if (((string_data == NULL) && (value->data.string_data == NULL)) ||
-				((string_data != NULL) && (value->data.string_data != NULL) &&
-				!strcmp(string_data, value->data.string_data)))
-			{
+			if (purple_strequal(string_data, value->data.string_data))
 				continue;
-			}
 			purple_status_set_attr_string(status, id, string_data);
 			changed = TRUE;
 		}
@@ -1146,13 +1147,13 @@
 	PurpleAccount *account;
 
 	g_return_val_if_fail(buddy != NULL, NULL);
-	account = buddy->account;
+	account = purple_buddy_get_account(buddy);
 
 	presence = purple_presence_new(PURPLE_PRESENCE_CONTEXT_BUDDY);
 
-	presence->u.buddy.name    = g_strdup(buddy->name);
-	presence->u.buddy.account = buddy->account;
-	presence->statuses = purple_prpl_get_statuses(buddy->account, presence);
+	presence->u.buddy.name    = g_strdup(purple_buddy_get_name(buddy));
+	presence->u.buddy.account = account;
+	presence->statuses = purple_prpl_get_statuses(account, presence);
 
 	presence->u.buddy.buddy = buddy;
 
@@ -1248,12 +1249,13 @@
 		time_t current_time, gboolean old_idle, gboolean idle)
 {
 	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
+	PurpleAccount *account = purple_buddy_get_account(buddy);
 
 	if (!old_idle && idle)
 	{
 		if (purple_prefs_get_bool("/purple/logging/log_system"))
 		{
-			PurpleLog *log = purple_account_get_log(buddy->account, FALSE);
+			PurpleLog *log = purple_account_get_log(account, FALSE);
 
 			if (log != NULL)
 			{
@@ -1273,7 +1275,7 @@
 	{
 		if (purple_prefs_get_bool("/purple/logging/log_system"))
 		{
-			PurpleLog *log = purple_account_get_log(buddy->account, FALSE);
+			PurpleLog *log = purple_account_get_log(account, FALSE);
 
 			if (log != NULL)
 			{
@@ -1461,7 +1463,7 @@
 		{
 			PurpleStatus *temp_status = l->data;
 
-			if (!strcmp(status_id, purple_status_get_id(temp_status)))
+			if (purple_strequal(status_id, purple_status_get_id(temp_status)))
 				status = temp_status;
 		}
 
--- a/libpurple/status.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/status.h	Wed Mar 04 16:52:47 2009 +0000
@@ -252,6 +252,7 @@
  */
 void purple_status_type_destroy(PurpleStatusType *status_type);
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Sets a status type's primary attribute.
  *
@@ -261,10 +262,14 @@
  *
  * @param status_type The status type.
  * @param attr_id     The ID of the primary attribute.
+ *
+ * @deprecated This function isn't used and should be removed in 3.0.0.
  */
 void purple_status_type_set_primary_attr(PurpleStatusType *status_type,
 									   const char *attr_id);
+#endif
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Adds an attribute to a status type.
  *
@@ -272,10 +277,16 @@
  * @param id          The ID of the attribute.
  * @param name        The name presented to the user.
  * @param value       The value type of this attribute.
+ *
+ * @deprecated This function isn't needed and should be removed in 3.0.0.
+ *             Status type attributes should be set when the status type
+ *             is created, in the call to purple_status_type_new_with_attrs.
  */
 void purple_status_type_add_attr(PurpleStatusType *status_type, const char *id,
 							   const char *name, PurpleValue *value);
+#endif
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Adds multiple attributes to a status type.
  *
@@ -284,18 +295,29 @@
  * @param name        The description of the first attribute.
  * @param value       The value type of the first attribute attribute.
  * @param ...         Additional attribute information.
+ *
+ * @deprecated This function isn't needed and should be removed in 3.0.0.
+ *             Status type attributes should be set when the status type
+ *             is created, in the call to purple_status_type_new_with_attrs.
  */
 void purple_status_type_add_attrs(PurpleStatusType *status_type, const char *id,
 								const char *name, PurpleValue *value, ...) G_GNUC_NULL_TERMINATED;
+#endif
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Adds multiple attributes to a status type using a va_list.
  *
  * @param status_type The status type to add the attribute to.
  * @param args        The va_list of attributes.
+ *
+ * @deprecated This function isn't needed and should be removed in 3.0.0.
+ *             Status type attributes should be set when the status type
+ *             is created, in the call to purple_status_type_new_with_attrs.
  */
 void purple_status_type_add_attrs_vargs(PurpleStatusType *status_type,
 									  va_list args);
+#endif
 
 /**
  * Returns the primitive type of a status type.
@@ -378,14 +400,18 @@
  */
 gboolean purple_status_type_is_available(const PurpleStatusType *status_type);
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Returns a status type's primary attribute ID.
  *
  * @param type The status type.
  *
  * @return The primary attribute's ID.
+ *
+ * @deprecated This function isn't used and should be removed in 3.0.0.
  */
 const char *purple_status_type_get_primary_attr(const PurpleStatusType *type);
+#endif
 
 /**
  * Returns the attribute with the specified ID.
@@ -537,35 +563,50 @@
 void purple_status_set_active_with_attrs_list(PurpleStatus *status, gboolean active,
 											GList *attrs);
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Sets the boolean value of an attribute in a status with the specified ID.
  *
  * @param status The status.
  * @param id     The attribute ID.
  * @param value  The boolean value.
+ *
+ * @deprecated This function is only used by status.c and should be made
+ *             static in 3.0.0.
  */
 void purple_status_set_attr_boolean(PurpleStatus *status, const char *id,
 								  gboolean value);
+#endif
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Sets the integer value of an attribute in a status with the specified ID.
  *
  * @param status The status.
  * @param id     The attribute ID.
  * @param value  The integer value.
+ *
+ * @deprecated This function is only used by status.c and should be made
+ *             static in 3.0.0.
  */
 void purple_status_set_attr_int(PurpleStatus *status, const char *id,
 							  int value);
+#endif
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Sets the string value of an attribute in a status with the specified ID.
  *
  * @param status The status.
  * @param id     The attribute ID.
  * @param value  The string value.
+ *
+ * @deprecated This function is only used by status.c and should be made
+ *             static in 3.0.0.
  */
 void purple_status_set_attr_string(PurpleStatus *status, const char *id,
 								 const char *value);
+#endif
 
 /**
  * Returns the status's type.
@@ -773,22 +814,31 @@
  */
 void purple_presence_destroy(PurplePresence *presence);
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Adds a status to a presence.
  *
  * @param presence The presence.
  * @param status   The status to add.
+ *
+ * @deprecated This function is only used by purple_presence_add_list,
+ *             and both should be removed in 3.0.0.
  */
 void purple_presence_add_status(PurplePresence *presence, PurpleStatus *status);
+#endif
 
+#if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_STATUS_C_)
 /**
  * Adds a list of statuses to the presence.
  *
  * @param presence    The presence.
  * @param source_list The source list of statuses to add, which is not
  *                    modified or freed by this function.
+ *
+ * @deprecated This function isn't used and should be removed in 3.0.0.
  */
 void purple_presence_add_list(PurplePresence *presence, GList *source_list);
+#endif
 
 /**
  * Sets the active state of a status in a presence.
--- a/libpurple/stun.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/stun.c	Wed Mar 04 16:52:47 2009 +0000
@@ -388,9 +388,7 @@
 		/** Deal with the server name having changed since we did the
 		    lookup */
 		if (servername && strlen(servername) > 1
-				&& ((nattype.servername
-					&& strcmp(servername, nattype.servername))
-				|| !nattype.servername)) {
+				&& !purple_strequal(servername, nattype.servername)) {
 			use_cached_result = FALSE;
 		}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/theme-loader.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,183 @@
+/*
+ * ThemeLoaders for libpurple
+ *
+ * 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 "theme-loader.h"
+
+#define PURPLE_THEME_LOADER_GET_PRIVATE(PurpleThemeLoader) \
+	((PurpleThemeLoaderPrivate *) ((PurpleThemeLoader)->priv))
+
+void purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type);
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+typedef struct {
+	gchar *type;
+} PurpleThemeLoaderPrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * Enums
+ *****************************************************************************/
+
+enum {
+	PROP_ZERO = 0,
+	PROP_TYPE,
+};
+
+/******************************************************************************
+ * GObject Stuff                                                              *
+ *****************************************************************************/
+
+static void
+purple_theme_loader_get_property(GObject *obj, guint param_id, GValue *value,
+						 GParamSpec *psec)
+{
+	PurpleThemeLoader *theme_loader = PURPLE_THEME_LOADER(obj);
+
+	switch (param_id) {
+		case PROP_TYPE:
+			g_value_set_string(value, purple_theme_loader_get_type_string(theme_loader));
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+			break;
+	}
+}
+
+static void
+purple_theme_loader_set_property(GObject *obj, guint param_id, const GValue *value,
+						 GParamSpec *psec)
+{
+	PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj);
+
+	switch (param_id) {
+		case PROP_TYPE:
+			purple_theme_loader_set_type_string(loader, g_value_get_string(value));
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+			break;
+	}
+}
+
+static void
+purple_theme_loader_init(GTypeInstance *instance,
+			gpointer klass)
+{
+	PurpleThemeLoader *loader = PURPLE_THEME_LOADER(instance);
+	loader->priv = g_new0(PurpleThemeLoaderPrivate, 1);
+}
+
+static void
+purple_theme_loader_finalize(GObject *obj)
+{
+	PurpleThemeLoader *loader = PURPLE_THEME_LOADER(obj);
+	PurpleThemeLoaderPrivate *priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader);
+
+	g_free(priv->type);
+
+	parent_class->finalize(obj);
+}
+
+static void
+purple_theme_loader_class_init(PurpleThemeLoaderClass *klass)
+{
+	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+	GParamSpec *pspec;
+
+	parent_class = g_type_class_peek_parent(klass);
+
+	obj_class->get_property = purple_theme_loader_get_property;
+	obj_class->set_property = purple_theme_loader_set_property;
+	obj_class->finalize = purple_theme_loader_finalize;
+
+	/* TYPE STRING (read only) */
+	pspec = g_param_spec_string("type", "Type",
+				    "The string represtenting the type of the theme",
+				    NULL,
+				    G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+	g_object_class_install_property(obj_class, PROP_TYPE, pspec);
+}
+
+GType
+purple_theme_loader_get_type(void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static const GTypeInfo info = {
+			sizeof(PurpleThemeLoaderClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			(GClassInitFunc)purple_theme_loader_class_init, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof(PurpleThemeLoader),
+			0, /* n_preallocs */
+			purple_theme_loader_init, /* instance_init */
+			NULL, /* value table */
+		};
+		type = g_type_register_static(G_TYPE_OBJECT,
+				"PurpleThemeLoader", &info, G_TYPE_FLAG_ABSTRACT);
+	}
+	return type;
+}
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+const gchar *
+purple_theme_loader_get_type_string(PurpleThemeLoader *theme_loader)
+{
+	PurpleThemeLoaderPrivate *priv = NULL;
+
+	g_return_val_if_fail(PURPLE_IS_THEME_LOADER(theme_loader), NULL);
+
+	priv = PURPLE_THEME_LOADER_GET_PRIVATE(theme_loader);
+	return priv->type;
+}
+
+/* < private > */
+void
+purple_theme_loader_set_type_string(PurpleThemeLoader *loader, const gchar *type)
+{
+	PurpleThemeLoaderPrivate *priv;
+
+	g_return_if_fail(PURPLE_IS_THEME_LOADER(loader));
+
+	priv = PURPLE_THEME_LOADER_GET_PRIVATE(loader);
+
+	g_free(priv->type);
+	priv->type = g_strdup(type);
+}
+
+PurpleTheme *
+purple_theme_loader_build(PurpleThemeLoader *loader, const gchar *dir)
+{
+	return PURPLE_THEME_LOADER_GET_CLASS(loader)->purple_theme_loader_build(dir);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/theme-loader.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,92 @@
+/**
+ * @file theme-loader.h  Purple Theme Loader Abstact Class API
+ */
+
+/* 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_THEME_LOADER_H
+#define PURPLE_THEME_LOADER_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme.h"
+
+/**
+ * A purple theme loader.
+ * This is an abstract class for Purple to use with the Purple theme manager.
+ * The loader is responsible for building each type of theme
+ *
+ * PurpleThemeLoader is a GObject.
+ */
+typedef struct _PurpleThemeLoader        PurpleThemeLoader;
+typedef struct _PurpleThemeLoaderClass   PurpleThemeLoaderClass;
+
+#define PURPLE_TYPE_THEME_LOADER            (purple_theme_loader_get_type())
+#define PURPLE_THEME_LOADER(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoader))
+#define PURPLE_THEME_LOADER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoaderClass))
+#define PURPLE_IS_THEME_LOADER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_THEME_LOADER))
+#define PURPLE_IS_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_THEME_LOADER))
+#define PURPLE_THEME_LOADER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_THEME_LOADER, PurpleThemeLoaderClass))
+
+struct _PurpleThemeLoader
+{
+	GObject parent;
+	gpointer priv;
+};
+
+struct _PurpleThemeLoaderClass
+{
+	GObjectClass parent_class;
+	PurpleTheme *((*purple_theme_loader_build)(const gchar*));
+};
+
+/**************************************************************************/
+/** @name Purple Theme-Loader API                                         */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType purple_theme_loader_get_type(void);
+
+/**
+ * Returns the string represtenting the type of the theme loader
+ *
+ * @param self The theme loader
+ *
+ * @returns The string represting this type
+ */
+const gchar *purple_theme_loader_get_type_string(PurpleThemeLoader *self);
+
+/**
+ * Creates a new PurpleTheme
+ *
+ * @param dir The directory containing the theme
+ *
+ * @returns A PurpleTheme containing the information from the directory
+ */
+PurpleTheme *purple_theme_loader_build(PurpleThemeLoader *loader, const gchar *dir);
+
+G_END_DECLS
+#endif /* PURPLE_THEME_LOADER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/theme-manager.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,295 @@
+/*
+ * Themes for libpurple
+ *
+ * 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 <glib.h>
+#include <string.h>
+
+#include "internal.h"
+#include "theme-manager.h"
+#include "util.h"
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GHashTable *theme_table = NULL;
+
+/*****************************************************************************
+ * GObject Stuff
+ ****************************************************************************/
+
+GType
+purple_theme_manager_get_type(void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static const GTypeInfo info = {
+			sizeof(PurpleThemeManagerClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			NULL, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof(PurpleThemeManager),
+			0, /* n_preallocs */
+			NULL, /* instance_init */
+			NULL, /* Value Table */
+		};
+		type = g_type_register_static(G_TYPE_OBJECT,
+				"PurpleThemeManager", &info, 0);
+	}
+	return type;
+}
+
+/******************************************************************************
+ * Helpers
+ *****************************************************************************/
+
+/* makes a key of <type> + '/' + <name> */
+static gchar *
+purple_theme_manager_make_key(const gchar *name, const gchar *type)
+{
+	g_return_val_if_fail(name && *name, NULL);
+	g_return_val_if_fail(type && *type, NULL);
+	return g_strconcat(type, "/", name, NULL);
+}
+
+/* returns TRUE if theme is of type "user_data" */
+static gboolean
+purple_theme_manager_is_theme_type(gchar *key,
+		gpointer value,
+		gchar *user_data)
+{
+	return g_str_has_prefix(key, g_strconcat(user_data, "/", NULL));
+}
+
+static gboolean
+purple_theme_manager_is_theme(gchar *key,
+		gpointer value,
+		gchar *user_data)
+{
+	return PURPLE_IS_THEME(value);
+}
+
+static void
+purple_theme_manager_function_wrapper(gchar *key,
+		gpointer value,
+		PTFunc user_data)
+{
+	if (PURPLE_IS_THEME(value))
+		(* user_data)(value);
+}
+
+static void
+purple_theme_manager_build_dir(const gchar *root)
+{
+	gchar *purple_dir, *theme_dir;
+	const gchar *name = NULL, *type = NULL;
+	GDir *rdir, *tdir;
+	PurpleThemeLoader *loader;
+
+	rdir = g_dir_open(root, 0, NULL);
+
+	if (!rdir)
+		return;
+
+	/* Parses directory by root/name/purple/type */
+	while ((name = g_dir_read_name(rdir))) {
+		purple_dir = g_build_filename(root, name, "purple", NULL);
+		tdir = g_dir_open(purple_dir, 0, NULL);
+
+		if (!tdir) {
+			g_free(purple_dir);
+
+			continue;
+		}
+
+		while ((type = g_dir_read_name(tdir))) {
+			if ((loader = g_hash_table_lookup(theme_table, type))) {
+				PurpleTheme *theme = NULL;
+
+				theme_dir = g_build_filename(purple_dir, type, NULL);
+
+				theme = purple_theme_loader_build(loader, theme_dir);
+
+				if (PURPLE_IS_THEME(theme))
+					purple_theme_manager_add_theme(theme);
+			}
+		}
+
+		g_dir_close(tdir);
+		g_free(purple_dir);
+	}
+
+	g_dir_close(rdir);
+}
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+void
+purple_theme_manager_init(void)
+{
+	theme_table = g_hash_table_new_full(g_str_hash,
+			g_str_equal, g_free, g_object_unref);
+}
+
+void
+purple_theme_manager_refresh(void)
+{
+	gchar *path = NULL;
+	const gchar *xdg = NULL;
+	gint i = 0;
+
+	g_hash_table_foreach_remove(theme_table,
+			(GHRFunc) purple_theme_manager_is_theme, NULL);
+
+	/* Add themes from ~/.purple */
+	path = g_build_filename(purple_user_dir(), "themes", NULL);
+	purple_theme_manager_build_dir(path);
+	g_free(path);
+
+	/* look for XDG_DATA_HOME.  If we don't have it use ~/.local, and add it */
+	if ((xdg = g_getenv("XDG_DATA_HOME")) != NULL)
+		path = g_build_filename(xdg, "themes", NULL);
+	else
+		path = g_build_filename(purple_home_dir(), ".local", "themes", NULL);
+
+	purple_theme_manager_build_dir(path);
+	g_free(path);
+
+	/* now dig through XDG_DATA_DIRS and add those too */
+	xdg = g_getenv("XDG_DATA_DIRS");
+	if (xdg) {
+		gchar **xdg_dirs = g_strsplit(xdg, G_SEARCHPATH_SEPARATOR_S, 0);
+
+		for (i = 0; xdg_dirs[i]; i++) {
+			path = g_build_filename(xdg_dirs[i], "themes", NULL);
+			purple_theme_manager_build_dir(path);
+			g_free(path);
+		}
+
+		g_strfreev(xdg_dirs);
+	}
+}
+
+void
+purple_theme_manager_uninit(void)
+{
+	g_hash_table_destroy(theme_table);
+}
+
+void
+purple_theme_manager_register_type(PurpleThemeLoader *loader)
+{
+	gchar *type;
+
+	g_return_if_fail(PURPLE_IS_THEME_LOADER(loader));
+
+	type = g_strdup(purple_theme_loader_get_type_string(loader));
+	g_return_if_fail(type);
+
+	/* if something is already there do nothing */
+	if (!g_hash_table_lookup(theme_table, type))
+		g_hash_table_insert(theme_table, type, loader);
+}
+
+void
+purple_theme_manager_unregister_type(PurpleThemeLoader *loader)
+{
+	const gchar *type;
+
+	g_return_if_fail(PURPLE_IS_THEME_LOADER(loader));
+
+	type = purple_theme_loader_get_type_string(loader);
+	g_return_if_fail(type);
+
+	if (g_hash_table_lookup(theme_table, type) == loader)
+	{
+		g_hash_table_remove(theme_table, type);
+
+		g_hash_table_foreach_remove(theme_table,
+				(GHRFunc)purple_theme_manager_is_theme_type, (gpointer)type);
+	} /* only free if given registered loader */
+}
+
+PurpleTheme *
+purple_theme_manager_find_theme(const gchar *name,
+		const gchar *type)
+{
+	gchar *key;
+	PurpleTheme *theme;
+
+	key = purple_theme_manager_make_key(name, type);
+
+	g_return_val_if_fail(key, NULL);
+
+	theme = g_hash_table_lookup(theme_table, key);
+
+	g_free(key);
+
+	return theme;
+}
+
+void
+purple_theme_manager_add_theme(PurpleTheme *theme)
+{
+	gchar *key;
+
+	g_return_if_fail(PURPLE_IS_THEME(theme));
+
+	key = purple_theme_manager_make_key(purple_theme_get_name(theme),
+			purple_theme_get_type_string(theme));
+
+	g_return_if_fail(key);
+
+	/* if something is already there do nothing */
+	if (g_hash_table_lookup(theme_table, key) == NULL)
+		g_hash_table_insert(theme_table, key, theme);
+}
+
+void
+purple_theme_manager_remove_theme(PurpleTheme *theme)
+{
+	gchar *key;
+
+	g_return_if_fail(PURPLE_IS_THEME(theme));
+
+	key = purple_theme_manager_make_key(purple_theme_get_name(theme),
+			purple_theme_get_type_string(theme));
+
+	g_return_if_fail(key);
+
+	g_hash_table_remove(theme_table, key);
+
+	g_free(key);
+}
+
+void
+purple_theme_manager_for_each_theme(PTFunc func)
+{
+	g_return_if_fail(func);
+
+	g_hash_table_foreach(theme_table,
+			(GHFunc) purple_theme_manager_function_wrapper, func);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/theme-manager.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,131 @@
+/**
+ * @file thememanager.h  Theme Manager API
+ */
+
+/*
+ * 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_THEME_MANAGER_H
+#define PURPLE_THEME_MANAGER_H
+
+#include <glib-object.h>
+#include <glib.h>
+#include "theme.h"
+#include "theme-loader.h"
+
+typedef void (*PTFunc) (PurpleTheme *);
+
+typedef struct _PurpleThemeManager PurpleThemeManager;
+typedef struct _PurpleThemeManagerClass PurpleThemeManagerClass;
+
+#define PURPLE_TYPE_THEME_MANAGER            (purple_theme_manager_get_type())
+#define PURPLE_THEME_MANAGER(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_THEME_MANAGER, PurpleThemeManager))
+#define PURPLE_THEME_MANAGER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_THEME_MANAGER, PurpleThemeManagerClass))
+#define PURPLE_IS_THEME_MANAGER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_THEME_MANAGER))
+#define PURPLE_IS_THEME_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_THEME_MANAGER))
+#define PURPLE_GET_THEME_MANAGER_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_THEME_MANAGER, PurpleThemeManagerClass))
+
+struct _PurpleThemeManager {
+	GObject parent;
+};
+
+struct _PurpleThemeManagerClass {
+	GObjectClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Purple Theme Manager API                                        */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ *
+ * @internal.
+ */
+GType purple_theme_manager_get_type(void);
+
+/**
+ * Initalizes the theme manager.
+ */
+void purple_theme_manager_init(void);
+
+/**
+ * Uninitalizes the manager then frees all the themes and loaders it is
+ * responsible for.
+ */
+void purple_theme_manager_uninit(void);
+
+/**
+ * Rebuilds all the themes in the theme manager.
+ * (Removes all current themes but keeps the added loaders.)
+ */
+void purple_theme_manager_refresh(void);
+
+/**
+ * Finds the PurpleTheme object stored by the theme manager.
+ *
+ * @param name The name of the PurpleTheme.
+ * @param type The type of the PurpleTheme.
+ *
+ * @returns The PurpleTheme, or NULL if it wasn't found.
+ */
+PurpleTheme *purple_theme_manager_find_theme(const gchar *name, const gchar *type);
+
+/**
+ * Adds a PurpleTheme to the theme manager.  If the theme already exists
+ * then this function does nothing.
+ *
+ * @param theme The PurpleTheme to add to the manager.
+ */
+void purple_theme_manager_add_theme(PurpleTheme *theme);
+
+/**
+ * Removes a PurpleTheme from the theme manager and frees the theme.
+ *
+ * @param theme The PurpleTheme to remove from the manager.
+ */
+void purple_theme_manager_remove_theme(PurpleTheme *theme);
+
+/**
+ * Adds a loader to the theme manager so it knows how to build themes.
+ *
+ * @param loader The PurpleThemeLoader to add.
+ */
+void purple_theme_manager_register_type(PurpleThemeLoader *loader);
+
+/**
+ * Removes the loader and all themes of the same type from the loader.
+ *
+ * @param loader The PurpleThemeLoader to be removed.
+ */
+void purple_theme_manager_unregister_type(PurpleThemeLoader *loader);
+
+/**
+ * Calls the given function on each purple theme.
+ *
+ * @param func The PTFunc to be applied to each theme.
+ */
+void purple_theme_manager_for_each_theme(PTFunc func);
+
+G_END_DECLS
+#endif /* PURPLE_THEME_MANAGER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/theme.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,408 @@
+/*
+ * Themes for libpurple
+ *
+ * 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 <glib.h>
+#include <string.h>
+
+#include "internal.h"
+#include "theme.h"
+#include "util.h"
+
+#define PURPLE_THEME_GET_PRIVATE(PurpleTheme) \
+	((PurpleThemePrivate *) ((PurpleTheme)->priv))
+
+void purple_theme_set_type_string(PurpleTheme *theme, const gchar *type);
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+
+typedef struct {
+	gchar *name;
+	gchar *description;
+	gchar *author;
+	gchar *type;
+	gchar *dir;
+	gchar *img;
+} PurpleThemePrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * Enums
+ *****************************************************************************/
+
+enum {
+	PROP_ZERO = 0,
+	PROP_NAME,
+	PROP_DESCRIPTION,
+	PROP_AUTHOR,
+	PROP_TYPE,
+	PROP_DIR,
+	PROP_IMAGE
+};
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+purple_theme_get_property(GObject *obj, guint param_id, GValue *value,
+		GParamSpec *psec)
+{
+	PurpleTheme *theme = PURPLE_THEME(obj);
+
+	switch (param_id) {
+		case PROP_NAME:
+			g_value_set_string(value, purple_theme_get_name(theme));
+			break;
+		case PROP_DESCRIPTION:
+			g_value_set_string(value, purple_theme_get_description(theme));
+			break;
+		case PROP_AUTHOR:
+			g_value_set_string(value, purple_theme_get_author(theme));
+			break;
+		case PROP_TYPE:
+			g_value_set_string(value, purple_theme_get_type_string(theme));
+			break;
+		case PROP_DIR:
+			g_value_set_string(value, purple_theme_get_dir(theme));
+			break;
+		case PROP_IMAGE:
+			g_value_set_string(value, purple_theme_get_image(theme));
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+			break;
+	}
+}
+
+static void
+purple_theme_set_property(GObject *obj, guint param_id, const GValue *value,
+		GParamSpec *psec)
+{
+	PurpleTheme *theme = PURPLE_THEME(obj);
+
+	switch (param_id) {
+		case PROP_NAME:
+			purple_theme_set_name(theme, g_value_get_string(value));
+			break;
+		case PROP_DESCRIPTION:
+			purple_theme_set_description(theme, g_value_get_string(value));
+			break;
+		case PROP_AUTHOR:
+			purple_theme_set_author(theme, g_value_get_string(value));
+			break;
+		case PROP_TYPE:
+			purple_theme_set_type_string(theme, g_value_get_string(value));
+			break;
+		case PROP_DIR:
+			purple_theme_set_dir(theme, g_value_get_string(value));
+			break;
+		case PROP_IMAGE:
+			purple_theme_set_image(theme, g_value_get_string(value));
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+			break;
+	}
+}
+
+static void
+purple_theme_init(GTypeInstance *instance,
+		gpointer klass)
+{
+	PurpleTheme *theme = PURPLE_THEME(instance);
+	theme->priv = g_new0(PurpleThemePrivate, 1);
+}
+
+static void
+purple_theme_finalize(GObject *obj)
+{
+	PurpleTheme *theme = PURPLE_THEME(obj);
+	PurpleThemePrivate *priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+	g_free(priv->name);
+	g_free(priv->description);
+	g_free(priv->author);
+	g_free(priv->type);
+	g_free(priv->dir);
+	g_free(priv->img);
+
+	G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+purple_theme_class_init(PurpleThemeClass *klass)
+{
+	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+	GParamSpec *pspec;
+
+	parent_class = g_type_class_peek_parent(klass);
+
+	obj_class->get_property = purple_theme_get_property;
+	obj_class->set_property = purple_theme_set_property;
+	obj_class->finalize = purple_theme_finalize;
+
+	/* NAME */
+	pspec = g_param_spec_string("name", "Name",
+			"The name of the theme",
+			NULL,
+			G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+	g_object_class_install_property(obj_class, PROP_NAME, pspec);
+
+	/* DESCRIPTION */
+	pspec = g_param_spec_string("description", "Description",
+			"The description of the theme",
+			NULL,
+			G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+	g_object_class_install_property(obj_class, PROP_DESCRIPTION, pspec);
+
+	/* AUTHOR */
+	pspec = g_param_spec_string("author", "Author",
+			"The author of the theme",
+			NULL,
+			G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+	g_object_class_install_property(obj_class, PROP_AUTHOR, pspec);
+
+	/* TYPE STRING (read only) */
+	pspec = g_param_spec_string("type", "Type",
+			"The string represtenting the type of the theme",
+			NULL,
+			G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
+	g_object_class_install_property(obj_class, PROP_TYPE, pspec);
+
+	/* DIRECTORY */
+	pspec = g_param_spec_string("directory", "Directory",
+			"The directory that contains the theme and all its files",
+			NULL,
+			G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+	g_object_class_install_property(obj_class, PROP_DIR, pspec);
+
+	/* PREVIEW IMAGE */
+	pspec = g_param_spec_string("image", "Image",
+			"A preview image of the theme",
+			NULL,
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_IMAGE, pspec);
+}
+
+
+GType
+purple_theme_get_type(void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static const GTypeInfo info = {
+			sizeof(PurpleThemeClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			(GClassInitFunc)purple_theme_class_init, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof(PurpleTheme),
+			0, /* n_preallocs */
+			purple_theme_init, /* instance_init */
+			NULL, /* value table */
+		};
+		type = g_type_register_static (G_TYPE_OBJECT,
+				"PurpleTheme", &info, G_TYPE_FLAG_ABSTRACT);
+	}
+	return type;
+}
+
+/******************************************************************************
+ * Helper Functions
+ *****************************************************************************/
+
+static gchar *
+theme_clean_text(const gchar *text)
+{
+	gchar *clean_text = g_markup_escape_text(text, -1);
+	g_strdelimit(clean_text, "\n", ' ');
+	purple_str_strip_char(clean_text, '\r');
+	return clean_text;
+}
+
+/*****************************************************************************
+ * Public API function
+ *****************************************************************************/
+
+const gchar *
+purple_theme_get_name(PurpleTheme *theme)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+	return priv->name;
+}
+
+void
+purple_theme_set_name(PurpleTheme *theme, const gchar *name)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_if_fail(PURPLE_IS_THEME(theme));
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+	g_free(priv->name);
+	priv->name = theme_clean_text(name);
+}
+
+const gchar *
+purple_theme_get_description(PurpleTheme *theme)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+	return priv->description;
+}
+
+void
+purple_theme_set_description(PurpleTheme *theme, const gchar *description)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_if_fail(PURPLE_IS_THEME(theme));
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+	g_free(priv->description);
+	priv->description = theme_clean_text(description);
+}
+
+const gchar *
+purple_theme_get_author(PurpleTheme *theme)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+	return priv->author;
+}
+
+void
+purple_theme_set_author(PurpleTheme *theme, const gchar *author)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_if_fail(PURPLE_IS_THEME(theme));
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+	g_free(priv->author);
+	priv->author = theme_clean_text(author);
+}
+
+const gchar *
+purple_theme_get_type_string(PurpleTheme *theme)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+	return priv->type;
+}
+
+/* < private > */
+void
+purple_theme_set_type_string(PurpleTheme *theme, const gchar *type)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_if_fail(PURPLE_IS_THEME(theme));
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+	g_free(priv->type);
+	priv->type = g_strdup(type);
+}
+
+const gchar *
+purple_theme_get_dir(PurpleTheme *theme)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+	return priv->dir;
+}
+
+void
+purple_theme_set_dir(PurpleTheme *theme, const gchar *dir)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_if_fail(PURPLE_IS_THEME(theme));
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+	g_free(priv->dir);
+	priv->dir = g_strdup(dir);
+}
+
+const gchar *
+purple_theme_get_image(PurpleTheme *theme)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_val_if_fail(PURPLE_IS_THEME(theme), NULL);
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+	return priv->img;
+}
+
+gchar *
+purple_theme_get_image_full(PurpleTheme *theme)
+{
+	const gchar *filename = purple_theme_get_image(theme);
+
+	g_return_val_if_fail(filename, NULL);
+
+	return g_build_filename(purple_theme_get_dir(PURPLE_THEME(theme)), filename, NULL);
+}
+
+void
+purple_theme_set_image(PurpleTheme *theme, const gchar *img)
+{
+	PurpleThemePrivate *priv;
+
+	g_return_if_fail(PURPLE_IS_THEME(theme));
+
+	priv = PURPLE_THEME_GET_PRIVATE(theme);
+
+	g_free(priv->img);
+	priv->img = g_strdup(img);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/theme.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,175 @@
+/**
+ * @file theme.h  Purple Theme Abstact Class API
+ */
+
+/* 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_THEME_H
+#define PURPLE_THEME_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "imgstore.h"
+
+/**
+ * A purple theme.
+ * This is an abstract class for Purple to use with the Purple theme manager.
+ *
+ * PurpleTheme is a GObject.
+ */
+typedef struct _PurpleTheme        PurpleTheme;
+typedef struct _PurpleThemeClass   PurpleThemeClass;
+
+#define PURPLE_TYPE_THEME            (purple_theme_get_type ())
+#define PURPLE_THEME(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PURPLE_TYPE_THEME, PurpleTheme))
+#define PURPLE_THEME_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PURPLE_TYPE_THEME, PurpleThemeClass))
+#define PURPLE_IS_THEME(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PURPLE_TYPE_THEME))
+#define PURPLE_IS_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PURPLE_TYPE_THEME))
+#define PURPLE_THEME_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), PURPLE_TYPE_THEME, PurpleThemeClass))
+
+struct _PurpleTheme
+{
+	GObject parent;
+	gpointer priv;
+};
+
+struct _PurpleThemeClass
+{
+	GObjectClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Purple Theme API                                                */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType purple_theme_get_type(void);
+
+/**
+ * Returns the name of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ *
+ * @return The string representating the name of the theme.
+ */
+const gchar *purple_theme_get_name(PurpleTheme *theme);
+
+/**
+ * Sets the name of the PurpleTheme object.
+ *
+ * @param theme The purple theme.
+ * @param name  The name of the PurpleTheme object.
+ */
+void purple_theme_set_name(PurpleTheme *theme, const gchar *name);
+
+/**
+ * Returns the description of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ *
+ * @return A short description of the theme.
+ */
+const gchar *purple_theme_get_description(PurpleTheme *theme);
+
+/**
+ * Sets the description of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ * @param description The description of the PurpleTheme object.
+ */
+void purple_theme_set_description(PurpleTheme *theme, const gchar *description);
+
+/**
+ * Returns the author of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ *
+ * @return The author of the theme.
+ */
+const gchar *purple_theme_get_author(PurpleTheme *theme);
+
+/**
+ * Sets the author of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ * @param author The author of the PurpleTheme object.
+ */
+void purple_theme_set_author(PurpleTheme *theme, const gchar *author);
+
+/**
+ * Returns the type (string) of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ *
+ * @return The string represtenting the type.
+ */
+const gchar *purple_theme_get_type_string(PurpleTheme *theme);
+
+/**
+ * Returns the directory of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ *
+ * @return The string represtenting the theme directory.
+ */
+const gchar *purple_theme_get_dir(PurpleTheme *theme);
+
+/**
+ * Sets the directory of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ * @param dir    The directory of the PurpleTheme object.
+ */
+void purple_theme_set_dir(PurpleTheme *theme, const gchar *dir);
+
+/**
+ * Returns the image preview of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ *
+ * @return The image preview of the PurpleTheme object.
+ */
+const gchar *purple_theme_get_image(PurpleTheme *theme);
+
+/**
+ * Returns the image preview and directory of the PurpleTheme object.
+ *
+ * @param theme  The purple theme.
+ *
+ * @return The image preview of the PurpleTheme object.
+ */
+gchar *purple_theme_get_image_full(PurpleTheme *theme);
+
+/**
+ * Sets the directory of the PurpleTheme object.
+ *
+ * @param theme	 The purple theme.
+ * @param img    The image preview of the PurpleTheme object.
+ */
+void purple_theme_set_image(PurpleTheme *theme, const gchar *img);
+
+G_END_DECLS
+#endif /* PURPLE_THEME_H */
--- a/libpurple/upnp.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/upnp.c	Wed Mar 04 16:52:47 2009 +0000
@@ -1049,7 +1049,7 @@
 purple_upnp_get_handle(void)
 {
 	static int handle;
-	
+
 	return &handle;
 }
 
--- a/libpurple/util.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/util.c	Wed Mar 04 16:52:47 2009 +0000
@@ -98,7 +98,7 @@
 void
 purple_util_init(void)
 {
-	/* This does nothing right now.  It exists for symmetry with 
+	/* This does nothing right now.  It exists for symmetry with
 	 * purple_util_uninit() and forwards compatibility. */
 }
 
@@ -1409,7 +1409,7 @@
 						struct purple_parse_tag *pt = tags->data;
 						if(xhtml)
 							g_string_append_printf(xhtml, "</%s>", pt->dest_tag);
-						if(plain && !strcmp(pt->src_tag, "a")) {
+						if(plain && purple_strequal(pt->src_tag, "a")) {
 							/* if this is a link, we have to add the url to the plaintext, too */
 							if (cdata && url &&
 									(!g_string_equal(cdata, url) && (g_ascii_strncasecmp(url->str, "mailto:", 7) != 0 ||
@@ -2693,7 +2693,7 @@
 		return FALSE;
 	}
 #endif
-    
+
 	/* Close file */
 	if (fclose(file) != 0)
 	{
@@ -2774,70 +2774,7 @@
 xmlnode *
 purple_util_read_xml_from_file(const char *filename, const char *description)
 {
-	const char *user_dir = purple_user_dir();
-	gchar *filename_full;
-	GError *error = NULL;
-	gchar *contents = NULL;
-	gsize length;
-	xmlnode *node = NULL;
-
-	g_return_val_if_fail(user_dir != NULL, NULL);
-
-	purple_debug_info("util", "Reading file %s from directory %s\n",
-					filename, user_dir);
-
-	filename_full = g_build_filename(user_dir, filename, NULL);
-
-	if (!g_file_test(filename_full, G_FILE_TEST_EXISTS))
-	{
-		purple_debug_info("util", "File %s does not exist (this is not "
-						"necessarily an error)\n", filename_full);
-		g_free(filename_full);
-		return NULL;
-	}
-
-	if (!g_file_get_contents(filename_full, &contents, &length, &error))
-	{
-		purple_debug_error("util", "Error reading file %s: %s\n",
-						 filename_full, error->message);
-		g_error_free(error);
-	}
-
-	if ((contents != NULL) && (length > 0))
-	{
-		node = xmlnode_from_str(contents, length);
-
-		/* If we were unable to parse the file then save its contents to a backup file */
-		if (node == NULL)
-		{
-			gchar *filename_temp;
-
-			filename_temp = g_strdup_printf("%s~", filename);
-			purple_debug_error("util", "Error parsing file %s.  Renaming old "
-							 "file to %s\n", filename_full, filename_temp);
-			purple_util_write_data_to_file(filename_temp, contents, length);
-			g_free(filename_temp);
-		}
-
-		g_free(contents);
-	}
-
-	/* If we could not parse the file then show the user an error message */
-	if (node == NULL)
-	{
-		gchar *title, *msg;
-		title = g_strdup_printf(_("Error Reading %s"), filename);
-		msg = g_strdup_printf(_("An error was encountered reading your "
-					"%s.  They have not been loaded, and the old file "
-					"has been renamed to %s~."), description, filename_full);
-		purple_notify_error(NULL, NULL, title, msg);
-		g_free(title);
-		g_free(msg);
-	}
-
-	g_free(filename_full);
-
-	return node;
+	return xmlnode_from_file(purple_user_dir(), filename, description, "util");
 }
 
 /*
@@ -3012,7 +2949,7 @@
 	g_free(tmp);
 
 	session = g_getenv("KDE_FULL_SESSION");
-	if (session != NULL && !strcmp(session, "true"))
+	if (purple_strequal(session, "true"))
 		return TRUE;
 
 	/* If you run Purple from Konsole under !KDE, this will provide a
@@ -3053,6 +2990,17 @@
 /**************************************************************************
  * String Functions
  **************************************************************************/
+gboolean
+purple_strequal(const gchar *left, const gchar *right)
+{
+#if GLIB_CHECK_VERSION(2,16,0)
+	return (g_strcmp0(left, right) == 0);
+#else
+	return ((left == NULL && right == NULL) ||
+	        (left != NULL && right != NULL && strcmp(left, right) == 0));
+#endif
+}
+
 const char *
 purple_normalize(const PurpleAccount *account, const char *str)
 {
@@ -3167,7 +3115,7 @@
 	g_return_val_if_fail(x != NULL, FALSE);
 
 	off = strlen(s) - strlen(x);
-	return (off >= 0 && !strcmp(s + off, x));
+	return (off >= 0 && purple_strequal(s + off, x));
 #endif
 }
 
@@ -4764,7 +4712,7 @@
 
 const char *_purple_oscar_convert(const char *act, const char *protocol)
 {
-	if (protocol && act && strcmp(protocol, "prpl-oscar") == 0) {
+	if (act && purple_strequal(protocol, "prpl-oscar")) {
 		int i;
 		for (i = 0; act[i] != '\0'; i++)
 			if (!isdigit(act[i]))
--- a/libpurple/util.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/util.h	Wed Mar 04 16:52:47 2009 +0000
@@ -775,6 +775,21 @@
 /*@{*/
 
 /**
+ * Tests two strings for equality.
+ *
+ * Unlike strcmp(), this function will not crash if one or both of the
+ * strings are @c NULL.
+ *
+ * @param left	A string
+ * @param right A string to compare with left
+ *
+ * @return @c TRUE if the strings are the same, else @c FALSE.
+ *
+ * @since 2.6.0
+ */
+gboolean purple_strequal(const gchar *left, const gchar *right);
+
+/**
  * Normalizes a string, so that it is suitable for comparison.
  *
  * The returned string will point to a static buffer, so if the
--- a/libpurple/whiteboard.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/whiteboard.c	Wed Mar 04 16:52:47 2009 +0000
@@ -115,7 +115,7 @@
 	{
 		wb = l->data;
 
-		if(wb->account == account && !strcmp(wb->who, who))
+		if(wb->account == account && purple_strequal(wb->who, who))
 			return wb;
 
 		l = l->next;
--- a/libpurple/xmlnode.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/xmlnode.c	Wed Mar 04 16:52:47 2009 +0000
@@ -129,7 +129,7 @@
 	for(attr_node = node->child; attr_node; attr_node = attr_node->next)
 	{
 		if(attr_node->type == XMLNODE_TYPE_ATTRIB &&
-				!strcmp(attr_node->name, attr))
+				purple_strequal(attr_node->name, attr))
 		{
 			if(sibling == NULL) {
 				node->child = attr_node->next;
@@ -146,20 +146,6 @@
 	}
 }
 
-/* Compare two nullable xmlns strings.
- * They are considered equal if they're both NULL or the strings are equal
- */
-static gboolean _xmlnode_compare_xmlns(const char *xmlns1, const char *xmlns2) {
-	gboolean equal = FALSE;
-
-	if (xmlns1 == NULL && xmlns2 == NULL)
-		equal = TRUE;
-	else if (xmlns1 != NULL && xmlns2 != NULL && !strcmp(xmlns1, xmlns2))
-		equal = TRUE;
-
-	return equal;
-}
-
 void
 xmlnode_remove_attrib_with_namespace(xmlnode *node, const char *attr, const char *xmlns)
 {
@@ -171,8 +157,8 @@
 	for(attr_node = node->child; attr_node; attr_node = attr_node->next)
 	{
 		if(attr_node->type == XMLNODE_TYPE_ATTRIB &&
-		   !strcmp(attr_node->name, attr) &&
-		   _xmlnode_compare_xmlns(xmlns, attr_node->xmlns))
+		   purple_strequal(attr,  attr_node->name) &&
+		   purple_strequal(xmlns, attr_node->xmlns))
 		{
 			if(sibling == NULL) {
 				node->child = attr_node->next;
@@ -252,7 +238,7 @@
 	g_return_val_if_fail(attr != NULL, NULL);
 
 	for(x = node->child; x; x = x->next) {
-		if(x->type == XMLNODE_TYPE_ATTRIB && !strcmp(attr, x->name)) {
+		if(x->type == XMLNODE_TYPE_ATTRIB && purple_strequal(attr, x->name)) {
 			return x->data;
 		}
 	}
@@ -270,8 +256,8 @@
 
 	for(x = node->child; x; x = x->next) {
 		if(x->type == XMLNODE_TYPE_ATTRIB &&
-		   !strcmp(attr, x->name) &&
-		   _xmlnode_compare_xmlns(xmlns, x->xmlns)) {
+		   purple_strequal(attr,  x->name) &&
+		   purple_strequal(xmlns, x->xmlns)) {
 			return x->data;
 		}
 	}
@@ -382,8 +368,8 @@
 		if(ns)
 			xmlns = xmlnode_get_namespace(x);
 
-		if(x->type == XMLNODE_TYPE_TAG && name && !strcmp(parent_name, x->name)
-				&& (!ns || (xmlns && !strcmp(ns, xmlns)))) {
+		if(x->type == XMLNODE_TYPE_TAG && purple_strequal(parent_name, x->name)
+				&& purple_strequal(ns, xmlns)) {
 			ret = x;
 			break;
 		}
@@ -471,7 +457,7 @@
 		g_hash_table_foreach(node->namespace_map,
 			(GHFunc)xmlnode_to_str_foreach_append_ns, text);
 	} else if (node->xmlns) {
-		if(!node->parent || !node->parent->xmlns || strcmp(node->xmlns, node->parent->xmlns))
+		if(!node->parent || !purple_strequal(node->xmlns, node->parent->xmlns))
 		{
 			char *xmlns = g_markup_escape_text(node->xmlns, -1);
 			g_string_append_printf(text, " xmlns='%s'", xmlns);
@@ -642,7 +628,7 @@
 
 	if(!xpd->current || xpd->error)
 		return;
-	
+
 	if(!text || !text_len)
 		return;
 
@@ -730,6 +716,78 @@
 	return ret;
 }
 
+xmlnode *
+xmlnode_from_file(const char *dir,const char *filename, const char *description, const char *process)
+{
+	gchar *filename_full;
+	GError *error = NULL;
+	gchar *contents = NULL;
+	gsize length;
+	xmlnode *node = NULL;
+
+	g_return_val_if_fail(dir != NULL, NULL);
+
+	purple_debug_info(process, "Reading file %s from directory %s\n",
+					filename, dir);
+
+	filename_full = g_build_filename(dir, filename, NULL);
+
+	if (!g_file_test(filename_full, G_FILE_TEST_EXISTS))
+	{
+		purple_debug_info(process, "File %s does not exist (this is not "
+						"necessarily an error)\n", filename_full);
+		g_free(filename_full);
+		return NULL;
+	}
+
+	if (!g_file_get_contents(filename_full, &contents, &length, &error))
+	{
+		purple_debug_error(process, "Error reading file %s: %s\n",
+						 filename_full, error->message);
+		g_error_free(error);
+	}
+
+	if ((contents != NULL) && (length > 0))
+	{
+		node = xmlnode_from_str(contents, length);
+
+		/* If we were unable to parse the file then save its contents to a backup file */
+		if (node == NULL)
+		{
+			gchar *filename_temp, *filename_temp_full;
+
+			filename_temp = g_strdup_printf("%s~", filename);
+			filename_temp_full = g_build_filename(dir, filename_temp, NULL);
+
+			purple_debug_error("util", "Error parsing file %s.  Renaming old "
+							 "file to %s\n", filename_full, filename_temp);
+			purple_util_write_data_to_file_absolute(filename_temp_full, contents, length);
+
+			g_free(filename_temp_full);
+			g_free(filename_temp);
+		}
+
+		g_free(contents);
+	}
+
+	/* If we could not parse the file then show the user an error message */
+	if (node == NULL)
+	{
+		gchar *title, *msg;
+		title = g_strdup_printf(_("Error Reading %s"), filename);
+		msg = g_strdup_printf(_("An error was encountered reading your "
+					"%s.  The file has not been loaded, and the old file "
+					"has been renamed to %s~."), description, filename_full);
+		purple_notify_error(NULL, NULL, title, msg);
+		g_free(title);
+		g_free(msg);
+	}
+
+	g_free(filename_full);
+
+	return node;
+}
+
 static void
 xmlnode_copy_foreach_ns(gpointer key, gpointer value, gpointer user_data)
 {
@@ -794,8 +852,8 @@
 		if(ns)
 			xmlns = xmlnode_get_namespace(sibling);
 
-		if(sibling->type == XMLNODE_TYPE_TAG && !strcmp(node->name, sibling->name) &&
-				(!ns || (xmlns && !strcmp(ns, xmlns))))
+		if(sibling->type == XMLNODE_TYPE_TAG && purple_strequal(node->name, sibling->name) &&
+				purple_strequal(ns, xmlns))
 			return sibling;
 	}
 
--- a/libpurple/xmlnode.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/libpurple/xmlnode.h	Wed Mar 04 16:52:47 2009 +0000
@@ -26,6 +26,8 @@
 #ifndef _PURPLE_XMLNODE_H_
 #define _PURPLE_XMLNODE_H_
 
+#include <glib.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -297,6 +299,22 @@
  */
 void xmlnode_free(xmlnode *node);
 
+/**
+ * Creates a node from a XML File.  Calling this on the
+ * root node of an XML document will parse the entire document
+ * into a tree of nodes, and return the xmlnode of the root.
+ *
+ * @param str  The string of xml.
+ * @param description  The description of the file being parsed
+ * @process  The utility that is calling xmlnode_from_file
+ *
+ * @return The new node.
+ *
+ * @since 2.6.0
+ */
+xmlnode *xmlnode_from_file(const char *dir, const char *filename,
+			   const char *description, const char *process);
+
 #ifdef __cplusplus
 }
 #endif
--- a/pidgin/Makefile.am	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/Makefile.am	Wed Mar 04 16:52:47 2009 +0000
@@ -78,6 +78,8 @@
 	pidginstock.c \
 	gtkaccount.c \
 	gtkblist.c \
+	gtkblist-theme.c \
+	gtkblist-theme-loader.c \
 	gtkcelllayout.c \
 	gtkcellrendererexpander.c \
 	gtkcellrendererprogress.c \
@@ -94,6 +96,8 @@
 	gtkeventloop.c \
 	gtkexpander.c \
 	gtkft.c \
+	gtkicon-theme.c \
+	gtkicon-theme-loader.c \
 	gtkidle.c \
 	gtkimhtml.c \
 	gtkimhtmltoolbar.c \
@@ -116,6 +120,7 @@
 	gtksourceiter.c \
 	gtksourceundomanager.c \
 	gtksourceview-marshal.c \
+	gtkstatus-icon-theme.c \
 	gtkstatusbox.c \
 	gtkthemes.c \
 	gtkutils.c \
@@ -127,6 +132,8 @@
 	eggtrayicon.h \
 	gtkaccount.h \
 	gtkblist.h \
+	gtkblist-theme.h \
+	gtkblist-theme-loader.h \
 	gtkcelllayout.h \
 	gtkcellrendererexpander.h \
 	gtkcellrendererprogress.h \
@@ -146,6 +153,8 @@
 	gtkeventloop.h \
 	gtkexpander.h \
 	gtkft.h \
+	gtkicon-theme.h \
+	gtkicon-theme-loader.h \
 	gtkidle.h \
 	gtkgaim-compat.h \
 	gtkimhtml.h \
@@ -169,6 +178,7 @@
 	gtksourceiter.h \
 	gtksourceundomanager.h \
 	gtksourceview-marshal.h \
+	gtkstatus-icon-theme.h \
 	gtkstatusbox.h \
 	pidginstock.h \
 	gtkthemes.h \
--- a/pidgin/Makefile.mingw	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/Makefile.mingw	Wed Mar 04 16:52:47 2009 +0000
@@ -56,6 +56,8 @@
 PIDGIN_C_SRC =	\
 			gtkaccount.c \
 			gtkblist.c \
+			gtkblist-theme.c \
+			gtkblist-theme-loader.c \
 			gtkcertmgr.c \
 			gtkcellrendererexpander.c \
 			gtkcellrendererprogress.c \
@@ -68,6 +70,8 @@
 			gtkeventloop.c \
 			gtkexpander.c \
 			gtkft.c \
+			gtkicon-theme.c \
+			gtkicon-theme-loader.c \
 			gtkidle.c \
 			gtkimhtml.c \
 			gtkimhtmltoolbar.c \
@@ -88,6 +92,7 @@
 			gtksound.c \
 			gtksourceiter.c \
 			gtksourceundomanager.c \
+			gtkstatus-icon-theme.c \
 			gtkstatusbox.c \
 			gtkthemes.c \
 			gtkutils.c \
--- a/pidgin/eggtrayicon.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/eggtrayicon.c	Wed Mar 04 16:52:47 2009 +0000
@@ -39,7 +39,7 @@
   PROP_0,
   PROP_ORIENTATION
 };
-         
+
 static GtkPlugClass *parent_class = NULL;
 
 static void egg_tray_icon_init (EggTrayIcon *icon);
@@ -102,7 +102,7 @@
 {
   icon->stamp = 1;
   icon->orientation = GTK_ORIENTATION_HORIZONTAL;
-  
+
   gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK);
 }
 
@@ -250,7 +250,7 @@
 	  egg_tray_icon_manager_window_destroyed (icon);
 	}
     }
-  
+
   return GDK_FILTER_CONTINUE;
 }
 
@@ -296,7 +296,7 @@
 {
   XClientMessageEvent ev;
   Display *display;
-  
+
   ev.type = ClientMessage;
   ev.window = window;
   ev.message_type = icon->system_tray_opcode_atom;
@@ -335,7 +335,7 @@
 				     gboolean     dock_if_realized)
 {
   Display *xdisplay;
-  
+
   if (icon->manager_window != None)
     return;
 
@@ -345,7 +345,7 @@
     return;
 
   XGrabServer (xdisplay);
-  
+
   icon->manager_window = XGetSelectionOwner (xdisplay,
 					     icon->selection_atom);
 
@@ -355,7 +355,7 @@
 
   XUngrabServer (xdisplay);
   XFlush (xdisplay);
-  
+
   if (icon->manager_window != None)
     {
       GdkWindow *gdkwin;
@@ -380,7 +380,7 @@
 egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon)
 {
   GdkWindow *gdkwin;
-  
+
   g_return_if_fail (icon->manager_window != None);
 
 #if GTK_CHECK_VERSION(2,1,0)
@@ -458,9 +458,9 @@
 	      screen);
 
   icon->selection_atom = XInternAtom (xdisplay, buffer, False);
-  
+
   icon->manager_atom = XInternAtom (xdisplay, "MANAGER", False);
-  
+
   icon->system_tray_opcode_atom = XInternAtom (xdisplay,
 						   "_NET_SYSTEM_TRAY_OPCODE",
 						   False);
@@ -514,11 +514,11 @@
 			    gint         len)
 {
   guint stamp;
-  
+
   g_return_val_if_fail (EGG_IS_TRAY_ICON (icon), 0);
   g_return_val_if_fail (timeout >= 0, 0);
   g_return_val_if_fail (message != NULL, 0);
-		     
+
   if (icon->manager_window == None)
     return 0;
 
@@ -526,7 +526,7 @@
     len = strlen (message);
 
   stamp = icon->stamp++;
-  
+
   /* Get ready to send the message */
   egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_BEGIN_MESSAGE,
 				      (Window)gtk_plug_get_id (GTK_PLUG (icon)),
@@ -576,7 +576,7 @@
 {
   g_return_if_fail (EGG_IS_TRAY_ICON (icon));
   g_return_if_fail (id > 0);
-  
+
   egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_CANCEL_MESSAGE,
 				      (Window)gtk_plug_get_id (GTK_PLUG (icon)),
 				      id, 0, 0);
--- a/pidgin/eggtrayicon.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/eggtrayicon.h	Wed Mar 04 16:52:47 2009 +0000
@@ -33,7 +33,7 @@
 #define EGG_IS_TRAY_ICON(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_TRAY_ICON))
 #define EGG_IS_TRAY_ICON_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_TRAY_ICON))
 #define EGG_TRAY_ICON_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_TRAY_ICON, EggTrayIconClass))
-	
+
 typedef struct _EggTrayIcon	  EggTrayIcon;
 typedef struct _EggTrayIconClass  EggTrayIconClass;
 
@@ -42,7 +42,7 @@
   GtkPlug parent_instance;
 
   guint stamp;
-  
+
   Atom selection_atom;
   Atom manager_atom;
   Atom system_tray_opcode_atom;
@@ -74,7 +74,7 @@
 					   guint        id);
 
 GtkOrientation egg_tray_icon_get_orientation (EggTrayIcon *icon);
-					    
+
 G_END_DECLS
 
 #endif /* __EGG_TRAY_ICON_H__ */
--- a/pidgin/getopt.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/getopt.c	Wed Mar 04 16:52:47 2009 +0000
@@ -178,7 +178,7 @@
 {
   REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
 } ordering;
-
+
 #ifdef	__GNU_LIBRARY__
 /* We want to avoid inclusion of string.h with non-GNU libraries
    because there are many ways it can cause trouble.
@@ -219,7 +219,7 @@
     to[i] = from[i];
 }
 #endif				/* GNU C library.  */
-
+
 /* Handle permutation of arguments.  */
 
 /* Describe the part of ARGV that contains non-options that have
@@ -259,7 +259,7 @@
   first_nonopt += (optind - last_nonopt);
   last_nonopt = optind;
 }
-
+
 /* Scan elements of ARGV (whose length is ARGC) for option characters
    given in OPTSTRING.
 
@@ -663,7 +663,7 @@
 }
 
 #endif	/* _LIBC or not __GNU_LIBRARY__.  */
-
+
 #ifdef TEST
 
 /* Compile with -DTEST to make an executable for use in testing
--- a/pidgin/getopt1.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/getopt1.c	Wed Mar 04 16:52:47 2009 +0000
@@ -81,7 +81,7 @@
 
 
 #endif	/* _LIBC or not __GNU_LIBRARY__.  */
-
+
 #ifdef TEST
 
 #include <stdio.h>
--- a/pidgin/gtkaccount.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkaccount.c	Wed Mar 04 16:52:47 2009 +0000
@@ -51,7 +51,7 @@
 {
 	COLUMN_ICON,
 	COLUMN_BUDDYICON,
-	COLUMN_SCREENNAME,
+	COLUMN_USERNAME,
 	COLUMN_ENABLED,
 	COLUMN_PROTOCOL,
 	COLUMN_DATA,
@@ -78,7 +78,7 @@
 	GtkListStore *model;
 	GtkTreeIter drag_iter;
 
-	GtkTreeViewColumn *screenname_col;
+	GtkTreeViewColumn *username_col;
 
 } AccountsWindow;
 
@@ -115,7 +115,7 @@
 	GtkWidget *login_frame;
 	GtkWidget *protocol_menu;
 	GtkWidget *password_box;
-	GtkWidget *screenname_entry;
+	GtkWidget *username_entry;
 	GtkWidget *password_entry;
 	GtkWidget *alias_entry;
 	GtkWidget *remember_pass_check;
@@ -256,7 +256,7 @@
 }
 
 static gboolean
-screenname_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
+username_focus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
 {
 	GHashTable *table;
 	const char *label;
@@ -275,7 +275,7 @@
 }
 
 static void
-screenname_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog)
+username_changed_cb(GtkEntry *entry, AccountPrefsDialog *dialog)
 {
 	if (dialog->ok_button)
 		gtk_widget_set_sensitive(dialog->ok_button,
@@ -290,7 +290,7 @@
 }
 
 static gboolean
-screenname_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
+username_nofocus_cb(GtkWidget *widget, GdkEventFocus *event, AccountPrefsDialog *dialog)
 {
 	GdkColor color = {0, 34952, 35466, 34181};
 	GHashTable *table = NULL;
@@ -301,13 +301,13 @@
 		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 
+			/* We have to avoid hitting the username_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);
+			g_signal_handlers_block_by_func(widget, G_CALLBACK(username_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);
+			g_signal_handlers_unblock_by_func(widget, G_CALLBACK(username_changed_cb), dialog);
 			gtk_widget_modify_text(widget, GTK_STATE_NORMAL, &color);
 		}
 
@@ -393,7 +393,7 @@
 
 	set = !(purple_account_is_connected(dialog->account) || purple_account_is_connecting(dialog->account));
 	gtk_widget_set_sensitive(dialog->protocol_menu, set);
-	gtk_widget_set_sensitive(dialog->screenname_entry, set);
+	gtk_widget_set_sensitive(dialog->username_entry, set);
 
 	for (l = dialog->user_split_entries ; l != NULL ; l = l->next)
 		gtk_widget_set_sensitive((GtkWidget *)l->data, set);
@@ -449,13 +449,13 @@
 
 	gtk_widget_unref(dialog->protocol_menu);
 
-	/* Screen name */
-	dialog->screenname_entry = gtk_entry_new();
+	/* Username */
+	dialog->username_entry = gtk_entry_new();
 #if GTK_CHECK_VERSION(2,10,0)
-	g_object_set(G_OBJECT(dialog->screenname_entry), "truncate-multiline", TRUE, NULL);
+	g_object_set(G_OBJECT(dialog->username_entry), "truncate-multiline", TRUE, NULL);
 #endif
 
-	add_pref_box(dialog, vbox, _("_Username:"), dialog->screenname_entry);
+	add_pref_box(dialog, vbox, _("_Username:"), dialog->username_entry);
 
 	if (dialog->account != NULL)
 		username = g_strdup(purple_account_get_username(dialog->account));
@@ -468,17 +468,17 @@
 		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);
+		gtk_entry_set_text(GTK_ENTRY(dialog->username_entry), label);
+		g_signal_connect(G_OBJECT(dialog->username_entry), "focus-in-event",
+				G_CALLBACK(username_focus_cb), dialog);
+		g_signal_connect(G_OBJECT(dialog->username_entry), "focus-out-event",
+				G_CALLBACK(username_nofocus_cb), dialog);
+		gtk_widget_modify_text(dialog->username_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);
+	g_signal_connect(G_OBJECT(dialog->username_entry), "changed",
+					 G_CALLBACK(username_changed_cb), dialog);
 
 	/* Do the user split thang */
 	if (dialog->prpl_info == NULL)
@@ -547,7 +547,7 @@
 	}
 
 	if (username != NULL)
-		gtk_entry_set_text(GTK_ENTRY(dialog->screenname_entry), username);
+		gtk_entry_set_text(GTK_ENTRY(dialog->username_entry), username);
 
 	g_free(username);
 
@@ -590,7 +590,7 @@
 		gtk_widget_hide(dialog->remember_pass_check);
 	}
 
-	/* Do not let the user change the protocol/screenname while connected. */
+	/* Do not let the user change the protocol/username while connected. */
 	update_editable(NULL, dialog);
 	purple_signal_connect(purple_connections_get_handle(), "signing-on", dialog,
 					G_CALLBACK(update_editable), dialog);
@@ -1193,7 +1193,7 @@
 	PurpleAccount *account;
 
 	/* Build the username string. */
-	username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->screenname_entry)));
+	username = g_strdup(gtk_entry_get_text(GTK_ENTRY(dialog->username_entry)));
 
 	if (dialog->prpl_info != NULL)
 	{
@@ -1933,7 +1933,7 @@
 	gtk_tree_view_column_set_resizable(column, FALSE);
 	gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
 
-	/* Screen Name column */
+	/* Username column */
 	column = gtk_tree_view_column_new();
 	gtk_tree_view_column_set_title(column, _("Username"));
 	gtk_tree_view_column_set_resizable(column, TRUE);
@@ -1945,12 +1945,12 @@
 	gtk_tree_view_column_add_attribute(column, renderer,
 					   "pixbuf", COLUMN_BUDDYICON);
 
-	/* Screen Name */
+	/* Username */
 	renderer = gtk_cell_renderer_text_new();
 	gtk_tree_view_column_pack_start(column, renderer, TRUE);
 	gtk_tree_view_column_add_attribute(column, renderer,
-					   "text", COLUMN_SCREENNAME);
-	dialog->screenname_col = column;
+					   "text", COLUMN_USERNAME);
+	dialog->username_col = column;
 
 
 	/* Protocol name */
@@ -2016,7 +2016,7 @@
 	gtk_list_store_set(store, iter,
 			COLUMN_ICON, pixbuf,
 			COLUMN_BUDDYICON, buddyicon,
-			COLUMN_SCREENNAME, purple_account_get_username(account),
+			COLUMN_USERNAME, purple_account_get_username(account),
 			COLUMN_ENABLED, purple_account_get_enabled(account, PIDGIN_UI),
 			COLUMN_PROTOCOL, purple_account_get_protocol_name(account),
 			COLUMN_DATA, account,
@@ -2190,7 +2190,7 @@
 	dialog->model = gtk_list_store_new(NUM_COLUMNS,
 					GDK_TYPE_PIXBUF,   /* COLUMN_ICON */
 					GDK_TYPE_PIXBUF,   /* COLUMN_BUDDYICON */
-					G_TYPE_STRING,     /* COLUMN_SCREENNAME */
+					G_TYPE_STRING,     /* COLUMN_USERNAME */
 					G_TYPE_BOOLEAN,    /* COLUMN_ENABLED */
 					G_TYPE_STRING,     /* COLUMN_PROTOCOL */
 					G_TYPE_POINTER     /* COLUMN_DATA */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkblist-theme-loader.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,279 @@
+/*
+ * GTKBlistThemeLoader for 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 <stdlib.h>
+
+#include "xmlnode.h"
+
+#include "gtkblist-theme-loader.h"
+#include "gtkblist-theme.h"
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+#define DEFAULT_TEXT_COLOR "black"
+
+/*****************************************************************************
+ * Buddy List Theme Builder
+ *****************************************************************************/
+
+static PurpleTheme *
+pidgin_blist_loader_build(const gchar *dir)
+{
+	xmlnode *root_node = NULL, *sub_node, *sub_sub_node;
+	gchar *filename_full, *data;
+	const gchar *temp;
+	gboolean success = TRUE;
+	GdkColor *bgcolor, *expanded_bgcolor, *collapsed_bgcolor, *contact_color;
+	GdkColor color;
+	FontColorPair *expanded, *collapsed, *contact, *online, *away, *offline, *idle, *message, *message_nick_said, *status;
+	PidginBlistLayout *layout;
+	PidginBlistTheme *theme;
+
+	/* Find the theme file */
+	g_return_val_if_fail(dir != NULL, NULL);
+	filename_full = g_build_filename(dir, "theme.xml", NULL);
+
+	if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR))
+		root_node = xmlnode_from_file(dir, "theme.xml", "buddy list themes", "blist-loader");
+
+	g_free(filename_full);
+	g_return_val_if_fail(root_node != NULL, NULL);
+
+	sub_node = xmlnode_get_child(root_node, "description");
+	data = xmlnode_get_data(sub_node);
+
+	/* init all structs and colors */
+	bgcolor = g_new0(GdkColor, 1);
+	expanded_bgcolor = g_new0(GdkColor, 1);
+	collapsed_bgcolor = g_new0(GdkColor, 1);
+
+	layout = g_new0(PidginBlistLayout, 1);
+
+	contact_color = g_new0(GdkColor, 1);
+
+	expanded = g_new0(FontColorPair, 1);
+	collapsed = g_new0(FontColorPair, 1);
+	contact = g_new0(FontColorPair, 1);
+	online = g_new0(FontColorPair, 1);
+	away = g_new0(FontColorPair, 1);
+	offline = g_new0(FontColorPair, 1);
+	idle = g_new0(FontColorPair, 1);
+	message = g_new0(FontColorPair, 1);
+	message_nick_said = g_new0(FontColorPair, 1);
+	status = g_new0(FontColorPair, 1);
+
+	/* <blist> */
+	if ((success = (sub_node = xmlnode_get_child(root_node, "blist")) != NULL)) {
+		if ((temp = xmlnode_get_attrib(sub_node, "color")) != NULL && gdk_color_parse(temp, bgcolor))
+			gdk_colormap_alloc_color(gdk_colormap_get_system(), bgcolor, FALSE, TRUE);
+		else {
+			g_free(bgcolor);
+			bgcolor = NULL;
+		}
+	}
+
+	/* <groups> */
+	if ((success = (success && (sub_node = xmlnode_get_child(root_node, "groups")) != NULL
+		     && (sub_sub_node = xmlnode_get_child(sub_node, "expanded")) != NULL)))
+	{
+		expanded->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+
+		if ((temp = xmlnode_get_attrib(sub_sub_node, "text_color")) != NULL && gdk_color_parse(temp, &color))
+			expanded->color = g_strdup(temp);
+		else expanded->color = g_strdup(DEFAULT_TEXT_COLOR);
+
+		if ((temp = xmlnode_get_attrib(sub_sub_node, "background")) != NULL && gdk_color_parse(temp, expanded_bgcolor))
+			gdk_colormap_alloc_color(gdk_colormap_get_system(), expanded_bgcolor, FALSE, TRUE);
+		else {
+			g_free(expanded_bgcolor);
+			expanded_bgcolor = NULL;
+		}
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "collapsed")) != NULL)))
+	{
+		collapsed->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+
+		if((temp = xmlnode_get_attrib(sub_sub_node, "text_color")) != NULL && gdk_color_parse(temp, &color))
+			collapsed->color = g_strdup(temp);
+		else collapsed->color = g_strdup(DEFAULT_TEXT_COLOR);
+
+		if ((temp = xmlnode_get_attrib(sub_sub_node, "background")) != NULL && gdk_color_parse(temp, collapsed_bgcolor))
+			gdk_colormap_alloc_color(gdk_colormap_get_system(), collapsed_bgcolor, FALSE, TRUE);
+		else {
+			g_free(collapsed_bgcolor);
+			collapsed_bgcolor = NULL;
+		}
+	}
+
+	/* <buddys> */
+	if ((success = (success && (sub_node = xmlnode_get_child(root_node, "buddys")) != NULL &&
+		     (sub_sub_node = xmlnode_get_child(sub_node, "placement")) != NULL)))
+	{
+		layout->status_icon = (temp = xmlnode_get_attrib(sub_sub_node, "status_icon")) != NULL ? atoi(temp) : 0;
+		layout->text = (temp = xmlnode_get_attrib(sub_sub_node, "name")) != NULL ? atoi(temp) : 1;
+		layout->emblem = (temp = xmlnode_get_attrib(sub_sub_node, "emblem")) != NULL ? atoi(temp) : 2;
+		layout->protocol_icon = (temp = xmlnode_get_attrib(sub_sub_node, "protocol_icon")) != NULL ? atoi(temp) : 3;
+		layout->buddy_icon = (temp = xmlnode_get_attrib(sub_sub_node, "buddy_icon")) != NULL ? atoi(temp) : 4;
+		layout->show_status = (temp = xmlnode_get_attrib(sub_sub_node, "status_icon")) != NULL ? atoi(temp) != 0 : 1;
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "background")) != NULL))) {
+		if(gdk_color_parse(xmlnode_get_attrib(sub_sub_node, "color"), contact_color))
+			gdk_colormap_alloc_color(gdk_colormap_get_system(), contact_color, FALSE, TRUE);
+		else {
+			g_free(contact_color);
+			contact_color = NULL;
+		}
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "contact_text")) != NULL))) {
+		contact->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+		if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+			contact->color = g_strdup(temp);
+		else contact->color = g_strdup(DEFAULT_TEXT_COLOR);
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "online_text")) != NULL))) {
+		online->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+		if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+			online->color = g_strdup(temp);
+		else online->color = g_strdup(DEFAULT_TEXT_COLOR);
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "away_text")) != NULL))) {
+		away->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+		if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+			away->color = g_strdup(temp);
+		else away->color = g_strdup(DEFAULT_TEXT_COLOR);
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "offline_text")) != NULL))) {
+		offline->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+		if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+			online->color = g_strdup(temp);
+		else online->color = g_strdup(DEFAULT_TEXT_COLOR);
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "idle_text")) != NULL))) {
+		idle->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+		if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+			idle->color = g_strdup(temp);
+		else online->color = g_strdup(DEFAULT_TEXT_COLOR);
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "message_text")) != NULL))) {
+		message->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+		if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+			message->color = g_strdup(temp);
+		else message->color = g_strdup(DEFAULT_TEXT_COLOR);
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "message_nick_said_text")) != NULL))) {
+		message_nick_said->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+		if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+			message_nick_said->color = g_strdup(temp);
+		else message_nick_said->color = g_strdup(DEFAULT_TEXT_COLOR);
+	}
+
+	if ((success = (success && sub_node != NULL && (sub_sub_node = xmlnode_get_child(sub_node, "status_text")) != NULL))) {
+		status->font = g_strdup(xmlnode_get_attrib(sub_sub_node, "font"));
+		if(gdk_color_parse(temp = xmlnode_get_attrib(sub_sub_node, "color"), &color))
+			status->color = g_strdup(temp);
+		else status->color = g_strdup(DEFAULT_TEXT_COLOR);
+	}
+
+	/* name is required for theme manager */
+	success = (success && xmlnode_get_attrib(root_node, "name") != NULL);
+
+	/* the new theme */
+	theme = g_object_new(PIDGIN_TYPE_BLIST_THEME,
+			"type", "blist",
+			"name", xmlnode_get_attrib(root_node, "name"),
+			"author", xmlnode_get_attrib(root_node, "author"),
+			"image", xmlnode_get_attrib(root_node, "image"),
+			"directory", dir,
+			"description", data,
+			"background-color", bgcolor,
+			"layout", layout,
+			"expanded-color", expanded_bgcolor,
+			"expanded-text", expanded,
+			"collapsed-color", collapsed_bgcolor,
+			"collapsed-text", collapsed,
+			"contact-color", contact_color,
+			"contact", contact,
+			"online", online,
+			"away", away,
+			"offline", offline,
+			"idle", idle,
+			"message", message,
+			"message_nick_said", message_nick_said,
+			"status", status, NULL);
+
+	xmlnode_free(root_node);
+	g_free(data);
+
+	/* malformed xml file - also frees all partial data*/
+	if (!success) {
+		g_object_unref(theme);
+		theme = NULL;
+	}
+
+	return PURPLE_THEME(theme);
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_blist_theme_loader_class_init(PidginBlistThemeLoaderClass *klass)
+{
+	PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass);
+
+	loader_klass->purple_theme_loader_build = pidgin_blist_loader_build;
+}
+
+GType
+pidgin_blist_theme_loader_get_type(void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static const GTypeInfo info = {
+			sizeof(PidginBlistThemeLoaderClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			(GClassInitFunc)pidgin_blist_theme_loader_class_init, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof(PidginBlistThemeLoader),
+			0, /* n_preallocs */
+			NULL, /* instance_init */
+			NULL, /* value table */
+		};
+		type = g_type_register_static(PURPLE_TYPE_THEME_LOADER,
+				"PidginBlistThemeLoader", &info, 0);
+	}
+	return type;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkblist-theme-loader.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,71 @@
+/**
+ * @file gtkblist-loader.h  Pidgin Buddy List Theme Loader Class API
+ */
+
+/* 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_BLIST_THEME_LOADER_H
+#define PIDGIN_BLIST_THEME_LOADER_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme-loader.h"
+
+/**
+ * A pidgin buddy list theme loader. extends PurpleThemeLoader (theme-loader.h)
+ * This is a class designed to build sound themes
+ *
+ * PidginBlistThemeLoader is a GObject.
+ */
+typedef struct _PidginBlistThemeLoader        PidginBlistThemeLoader;
+typedef struct _PidginBlistThemeLoaderClass   PidginBlistThemeLoaderClass;
+
+#define PIDGIN_TYPE_BLIST_THEME_LOADER            (pidgin_blist_theme_loader_get_type ())
+#define PIDGIN_BLIST_THEME_LOADER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_BLIST_THEME_LOADER, PidginBlistThemeLoader))
+#define PIDGIN_BLIST_THEME_LOADER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_BLIST_THEME_LOADER, PidginBlistThemeLoaderClass))
+#define PIDGIN_IS_BLIST_THEME_LOADER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_BLIST_THEME_LOADER))
+#define PIDGIN_IS_BLIST_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_BLIST_THEME_LOADER))
+#define PIDGIN_BLIST_THEME_LOADER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_BLIST_THEME_LOADER, PidginBlistThemeLoaderClass))
+
+struct _PidginBlistThemeLoader
+{
+	PurpleThemeLoader parent;
+};
+
+struct _PidginBlistThemeLoaderClass
+{
+	PurpleThemeLoaderClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Buddy List Theme-Loader API                                     */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_blist_theme_loader_get_type(void);
+
+G_END_DECLS
+#endif /* PIDGIN_BLIST_THEME_LOADER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkblist-theme.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,784 @@
+/*
+ * Buddy List Themes for 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 "gtkblist-theme.h"
+
+#define PIDGIN_BLIST_THEME_GET_PRIVATE(Gobject) \
+	((PidginBlistThemePrivate *) ((PIDGIN_BLIST_THEME(Gobject))->priv))
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+
+typedef struct {
+	/* Buddy list */
+	gdouble opacity;
+	GdkColor *bgcolor;
+	PidginBlistLayout *layout;
+
+	/* groups */
+	GdkColor *expanded_color;
+	FontColorPair *expanded;
+
+	GdkColor *collapsed_color;
+	FontColorPair *collapsed;
+
+	/* buddy */
+	GdkColor *contact_color;
+
+	FontColorPair *contact;
+
+	FontColorPair *online;
+	FontColorPair *away;
+	FontColorPair *offline;
+	FontColorPair *idle;
+	FontColorPair *message;
+	FontColorPair *message_nick_said;
+
+	FontColorPair *status;
+
+} PidginBlistThemePrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * Enums
+ *****************************************************************************/
+
+enum {
+	PROP_ZERO = 0,
+	PROP_BACKGROUND_COLOR,
+	PROP_OPACITY,
+	PROP_LAYOUT,
+	PROP_EXPANDED_COLOR,
+	PROP_EXPANDED_TEXT,
+	PROP_COLLAPSED_COLOR,
+	PROP_COLLAPSED_TEXT,
+	PROP_CONTACT_COLOR,
+	PROP_CONTACT,
+	PROP_ONLINE,
+	PROP_AWAY,
+	PROP_OFFLINE,
+	PROP_IDLE,
+	PROP_MESSAGE,
+	PROP_MESSAGE_NICK_SAID,
+	PROP_STATUS,
+};
+
+/******************************************************************************
+ * Helpers
+ *****************************************************************************/
+
+void
+free_font_and_color(FontColorPair *pair)
+{
+	if (pair != NULL) {
+		if (pair->font)
+			g_free(pair->font);
+		if (pair->color)
+			g_free(pair->color);
+		g_free(pair);
+	}
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_blist_theme_init(GTypeInstance *instance,
+		gpointer klass)
+{
+	(PIDGIN_BLIST_THEME(instance))->priv = g_new0(PidginBlistThemePrivate, 1);
+}
+
+static void
+pidgin_blist_theme_get_property(GObject *obj, guint param_id, GValue *value,
+		GParamSpec *psec)
+{
+	PidginBlistTheme *theme = PIDGIN_BLIST_THEME(obj);
+
+	switch (param_id) {
+		case PROP_BACKGROUND_COLOR:
+			g_value_set_pointer(value, pidgin_blist_theme_get_background_color(theme));
+			break;
+		case PROP_OPACITY:
+			g_value_set_double(value, pidgin_blist_theme_get_opacity(theme));
+			break;
+		case PROP_LAYOUT:
+			g_value_set_pointer(value, pidgin_blist_theme_get_layout(theme));
+			break;
+		case PROP_EXPANDED_COLOR:
+			g_value_set_pointer(value, pidgin_blist_theme_get_expanded_background_color(theme));
+			break;
+		case PROP_EXPANDED_TEXT:
+			g_value_set_pointer(value, pidgin_blist_theme_get_expanded_text_info(theme));
+			break;
+		case PROP_COLLAPSED_COLOR:
+			g_value_set_pointer(value, pidgin_blist_theme_get_collapsed_background_color(theme));
+			break;
+		case PROP_COLLAPSED_TEXT:
+			g_value_set_pointer(value, pidgin_blist_theme_get_collapsed_text_info(theme));
+			break;
+		case PROP_CONTACT_COLOR:
+			g_value_set_pointer(value, pidgin_blist_theme_get_contact_color(theme));
+			break;
+		case PROP_CONTACT:
+			g_value_set_pointer(value, pidgin_blist_theme_get_contact_text_info(theme));
+			break;
+		case PROP_ONLINE:
+			g_value_set_pointer(value, pidgin_blist_theme_get_online_text_info(theme));
+			break;
+		case PROP_AWAY:
+			g_value_set_pointer(value, pidgin_blist_theme_get_away_text_info(theme));
+			break;
+		case PROP_OFFLINE:
+			g_value_set_pointer(value, pidgin_blist_theme_get_offline_text_info(theme));
+			break;
+		case PROP_IDLE:
+			g_value_set_pointer(value, pidgin_blist_theme_get_idle_text_info(theme));
+			break;
+		case PROP_MESSAGE:
+			g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_text_info(theme));
+			break;
+		case PROP_MESSAGE_NICK_SAID:
+			g_value_set_pointer(value, pidgin_blist_theme_get_unread_message_nick_said_text_info(theme));
+			break;
+		case PROP_STATUS:
+			g_value_set_pointer(value, pidgin_blist_theme_get_status_text_info(theme));
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+			break;
+	}
+}
+
+static void
+pidgin_blist_theme_set_property(GObject *obj, guint param_id, const GValue *value,
+		GParamSpec *psec)
+{
+	PidginBlistTheme *theme = PIDGIN_BLIST_THEME(obj);
+
+	switch (param_id) {
+		case PROP_BACKGROUND_COLOR:
+			pidgin_blist_theme_set_background_color(theme, g_value_get_pointer(value));
+			break;
+		case PROP_OPACITY:
+			pidgin_blist_theme_set_opacity(theme, g_value_get_double(value));
+			break;
+		case PROP_LAYOUT:
+			pidgin_blist_theme_set_layout(theme, g_value_get_pointer(value));
+			break;
+		case PROP_EXPANDED_COLOR:
+			pidgin_blist_theme_set_expanded_background_color(theme, g_value_get_pointer(value));
+			break;
+		case PROP_EXPANDED_TEXT:
+			pidgin_blist_theme_set_expanded_text_info(theme, g_value_get_pointer(value));
+			break;
+		case PROP_COLLAPSED_COLOR:
+			pidgin_blist_theme_set_collapsed_background_color(theme, g_value_get_pointer(value));
+			break;
+		case PROP_COLLAPSED_TEXT:
+			pidgin_blist_theme_set_collapsed_text_info(theme, g_value_get_pointer(value));
+			break;
+		case PROP_CONTACT_COLOR:
+			pidgin_blist_theme_set_contact_color(theme, g_value_get_pointer(value));
+			break;
+		case PROP_CONTACT:
+			pidgin_blist_theme_set_contact_text_info(theme, g_value_get_pointer(value));
+			break;
+		case PROP_ONLINE:
+			pidgin_blist_theme_set_online_text_info(theme, g_value_get_pointer(value));
+			break;
+		case PROP_AWAY:
+			pidgin_blist_theme_set_away_text_info(theme, g_value_get_pointer(value));
+			break;
+		case PROP_OFFLINE:
+			pidgin_blist_theme_set_offline_text_info(theme, g_value_get_pointer(value));
+			break;
+		case PROP_IDLE:
+			pidgin_blist_theme_set_idle_text_info(theme, g_value_get_pointer(value));
+			break;
+		case PROP_MESSAGE:
+			pidgin_blist_theme_set_unread_message_text_info(theme, g_value_get_pointer(value));
+			break;
+		case PROP_MESSAGE_NICK_SAID:
+			pidgin_blist_theme_set_unread_message_nick_said_text_info(theme, g_value_get_pointer(value));
+			break;
+		case PROP_STATUS:
+			pidgin_blist_theme_set_status_text_info(theme, g_value_get_pointer(value));
+			break;
+		default:
+			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, psec);
+			break;
+	}
+}
+
+static void
+pidgin_blist_theme_finalize(GObject *obj)
+{
+	PidginBlistThemePrivate *priv;
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(obj);
+
+	/* Buddy List */
+	g_free(priv->layout);
+
+	/* Group */
+	free_font_and_color(priv->expanded);
+	free_font_and_color(priv->collapsed);
+
+	/* Buddy */
+	free_font_and_color(priv->contact);
+	free_font_and_color(priv->online);
+	free_font_and_color(priv->away);
+	free_font_and_color(priv->offline);
+	free_font_and_color(priv->message);
+	free_font_and_color(priv->message_nick_said);
+	free_font_and_color(priv->status);
+
+	g_free(priv);
+
+	parent_class->finalize (obj);
+}
+
+static void
+pidgin_blist_theme_class_init(PidginBlistThemeClass *klass)
+{
+	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+	GParamSpec *pspec;
+
+	parent_class = g_type_class_peek_parent (klass);
+
+	obj_class->get_property = pidgin_blist_theme_get_property;
+	obj_class->set_property = pidgin_blist_theme_set_property;
+	obj_class->finalize = pidgin_blist_theme_finalize;
+
+	/* Buddy List */
+	pspec = g_param_spec_pointer("background-color", "Background Color",
+			"The background color for the buddy list",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_BACKGROUND_COLOR, pspec);
+
+	pspec = g_param_spec_pointer("layout", "Layout",
+			"The layout of icons, name, and status of the blist",
+			G_PARAM_READWRITE);
+
+	g_object_class_install_property(obj_class, PROP_LAYOUT, pspec);
+
+	/* Group */
+	pspec = g_param_spec_pointer("expanded-color", "Expanded Background Color",
+			"The background color of an expanded group",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_EXPANDED_COLOR, pspec);
+
+	pspec = g_param_spec_pointer("expanded-text", "Expanded Text",
+			"The text information for when a group is expanded",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_EXPANDED_TEXT, pspec);
+
+	pspec = g_param_spec_pointer("collapsed-color", "Collapsed Background Color",
+			"The background color of a collapsed group",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_COLLAPSED_COLOR, pspec);
+
+	pspec = g_param_spec_pointer("collapsed-text", "Collapsed Text",
+			"The text information for when a group is collapsed",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_COLLAPSED_TEXT, pspec);
+
+	/* Buddy */
+	pspec = g_param_spec_pointer("contact-color", "Contact/Chat Background Color",
+			"The background color of a contact or chat",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_CONTACT_COLOR, pspec);
+
+	pspec = g_param_spec_pointer("contact", "Contact Text",
+			"The text information for when a contact is expanded",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_CONTACT, pspec);
+
+	pspec = g_param_spec_pointer("online", "On-line Text",
+			"The text information for when a buddy is online",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_ONLINE, pspec);
+
+	pspec = g_param_spec_pointer("away", "Away Text",
+			"The text information for when a buddy is away",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_AWAY, pspec);
+
+	pspec = g_param_spec_pointer("offline", "Off-line Text",
+			"The text information for when a buddy is off-line",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_OFFLINE, pspec);
+
+	pspec = g_param_spec_pointer("idle", "Idle Text",
+			"The text information for when a buddy is idle",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_IDLE, pspec);
+
+	pspec = g_param_spec_pointer("message", "Message Text",
+			"The text information for when a buddy has an unread message",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_MESSAGE, pspec);
+
+	pspec = g_param_spec_pointer("message_nick_said", "Message (Nick Said) Text",
+			"The text information for when a chat has an unread message that mentions your nick",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_MESSAGE_NICK_SAID, pspec);
+
+	pspec = g_param_spec_pointer("status", "Status Text",
+			"The text information for a buddy's status",
+			G_PARAM_READWRITE);
+	g_object_class_install_property(obj_class, PROP_STATUS, pspec);
+}
+
+GType
+pidgin_blist_theme_get_type (void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static GTypeInfo info = {
+			sizeof(PidginBlistThemeClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			(GClassInitFunc)pidgin_blist_theme_class_init, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof(PidginBlistTheme),
+			0, /* n_preallocs */
+			pidgin_blist_theme_init, /* instance_init */
+			NULL, /* value table */
+		};
+		type = g_type_register_static (PURPLE_TYPE_THEME,
+				"PidginBlistTheme", &info, 0);
+	}
+	return type;
+}
+
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+/* get methods */
+
+GdkColor *
+pidgin_blist_theme_get_background_color(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->bgcolor;
+}
+
+gdouble
+pidgin_blist_theme_get_opacity(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), 1.0);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->opacity;
+}
+
+PidginBlistLayout *
+pidgin_blist_theme_get_layout(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->layout;
+}
+
+GdkColor *
+pidgin_blist_theme_get_expanded_background_color(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->expanded_color;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_expanded_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->expanded;
+}
+
+GdkColor *
+pidgin_blist_theme_get_collapsed_background_color(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->collapsed_color;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_collapsed_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->collapsed;
+}
+
+GdkColor *
+pidgin_blist_theme_get_contact_color(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->contact_color;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_contact_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->contact;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_online_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->online;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_away_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->away;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_offline_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->offline;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_idle_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->idle;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_unread_message_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->message;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->message_nick_said;
+}
+
+FontColorPair *
+pidgin_blist_theme_get_status_text_info(PidginBlistTheme *theme)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_BLIST_THEME(theme), NULL);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	return priv->status;
+}
+
+/* Set Methods */
+void
+pidgin_blist_theme_set_background_color(PidginBlistTheme *theme, GdkColor *color)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	priv->bgcolor = color;
+}
+
+void
+pidgin_blist_theme_set_opacity(PidginBlistTheme *theme, gdouble opacity)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme) || opacity < 0.0 || opacity > 1.0);
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	priv->opacity = opacity;
+}
+
+void
+pidgin_blist_theme_set_layout(PidginBlistTheme *theme, PidginBlistLayout *layout)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	g_free(priv->layout);
+	priv->layout = layout;
+}
+
+void
+pidgin_blist_theme_set_expanded_background_color(PidginBlistTheme *theme, GdkColor *color)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	priv->expanded_color = color;
+}
+
+void
+pidgin_blist_theme_set_expanded_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->expanded);
+	priv->expanded = pair;
+}
+
+void
+pidgin_blist_theme_set_collapsed_background_color(PidginBlistTheme *theme, GdkColor *color)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	priv->collapsed_color = color;
+}
+
+void
+pidgin_blist_theme_set_collapsed_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->collapsed);
+	priv->collapsed = pair;
+}
+
+void
+pidgin_blist_theme_set_contact_color(PidginBlistTheme *theme, GdkColor *color)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	priv->contact_color = color;
+}
+
+void
+pidgin_blist_theme_set_contact_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->contact);
+	priv->contact = pair;
+}
+
+void
+pidgin_blist_theme_set_online_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->online);
+	priv->online = pair;
+}
+
+void
+pidgin_blist_theme_set_away_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->away);
+	priv->away = pair;
+}
+
+void
+pidgin_blist_theme_set_offline_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->offline);
+	priv->offline = pair;
+}
+
+void
+pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->idle);
+	priv->idle = pair;
+}
+
+void
+pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->message);
+	priv->message = pair;
+}
+
+void
+pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->message_nick_said);
+	priv->message_nick_said = pair;
+}
+
+void
+pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, FontColorPair *pair)
+{
+	PidginBlistThemePrivate *priv;
+
+	g_return_if_fail(PIDGIN_IS_BLIST_THEME(theme));
+
+	priv = PIDGIN_BLIST_THEME_GET_PRIVATE(G_OBJECT(theme));
+
+	free_font_and_color(priv->status);
+	priv->status = pair;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkblist-theme.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,332 @@
+/**
+ * @file gtkblist-theme.h GTK+ Buddy List Theme API
+ */
+
+/* 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_BLIST_THEME_H
+#define PIDGIN_BLIST_THEME_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+#include "theme.h"
+
+/**
+ * A pidgin buddy list theme.
+ * This is an object for Purple to represent a buddy list theme.
+ *
+ * PidginBlistTheme is a PurpleTheme Object.
+ */
+typedef struct _PidginBlistTheme        PidginBlistTheme;
+typedef struct _PidginBlistThemeClass   PidginBlistThemeClass;
+
+#define PIDGIN_TYPE_BLIST_THEME            (pidgin_blist_theme_get_type ())
+#define PIDGIN_BLIST_THEME(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_BLIST_THEME, PidginBlistTheme))
+#define PIDGIN_BLIST_THEME_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_BLIST_THEME, PidginBlistThemeClass))
+#define PIDGIN_IS_BLIST_THEME(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_BLIST_THEME))
+#define PIDGIN_IS_BLIST_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_BLIST_THEME))
+#define PIDGIN_BLIST_THEME_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_BLIST_THEME, PidginBlistThemeClass))
+
+struct _PidginBlistTheme
+{
+	PurpleTheme parent;
+	gpointer priv;
+};
+
+struct _PidginBlistThemeClass
+{
+	PurpleThemeClass parent_class;
+};
+
+typedef struct
+{
+	gchar *font;
+	gchar *color;
+
+} FontColorPair;
+
+typedef struct
+{
+	gint status_icon;
+	gint text;
+	gint emblem;
+	gint protocol_icon;
+	gint buddy_icon;
+	gboolean show_status;
+
+} PidginBlistLayout;
+
+/**************************************************************************/
+/** @name FontColorPair API                                               */
+/**************************************************************************/
+
+/**
+ * Frees a font and color pair
+ */
+void free_font_and_color(FontColorPair *pair);
+
+/**************************************************************************/
+/** @name Purple Buddy List Theme API                                     */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_blist_theme_get_type(void);
+
+/* get methods */
+
+/**
+ * Returns the background color of the buddy list.
+ *
+ * @returns A gdk color.
+ */
+ GdkColor *pidgin_blist_theme_get_background_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the opacity of the buddy list window
+ * (0.0 or clear to 1.0 fully opaque).
+ *
+ * @returns The opacity
+ */
+gdouble pidgin_blist_theme_get_opacity(PidginBlistTheme *theme);
+
+/**
+ * Returns the layout to be used with the buddy list.
+ *
+ * @returns The buddy list layout.
+ */
+ PidginBlistLayout *pidgin_blist_theme_get_layout(PidginBlistTheme *theme);
+
+/**
+ * Returns the background color to be used with expanded groups.
+ *
+ * @returns A gdk color.
+ */
+ GdkColor *pidgin_blist_theme_get_expanded_background_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used with expanded groups.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_expanded_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the background color to be used with collapsed groups.
+ *
+ * @returns A gdk color.
+ */
+ GdkColor *pidgin_blist_theme_get_collapsed_background_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used with collapsed groups.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_collapsed_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the colors to be used for contacts and chats.
+ *
+ * @returns A gdkcolor for contacts and chats.
+ */
+ GdkColor *pidgin_blist_theme_get_contact_color(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for expanded contacts.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_contact_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for online buddies.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_online_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for away and idle buddies.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_away_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for offline buddies.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_offline_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for idle buddies.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_idle_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for buddies with unread messages.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_unread_message_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for chats with unread messages
+ * that mention your nick.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_unread_message_nick_said_text_info(PidginBlistTheme *theme);
+
+/**
+ * Returns the text font and color to be used for a buddy's status message.
+ *
+ * @returns A font and color pair.
+ */
+ FontColorPair *pidgin_blist_theme_get_status_text_info(PidginBlistTheme *theme);
+
+/* Set Methods */
+
+/**
+ * Sets the background color to be used for this buddy list theme.
+ *
+ * @param color The new background color.
+ */
+void pidgin_blist_theme_set_background_color(PidginBlistTheme *theme, GdkColor *color);
+
+/**
+ * Sets the opacity to be used for this buddy list theme.
+ *
+ * @param opacity The new opacity setting.
+ */
+void pidgin_blist_theme_set_opacity(PidginBlistTheme *theme, gdouble opacity);
+
+/**
+ * Sets the buddy list layout to be used for this buddy list theme.
+ *
+ * @param layout The new layout.
+ */
+void pidgin_blist_theme_set_layout(PidginBlistTheme *theme, PidginBlistLayout *layout);
+
+/**
+ * Sets the background color to be used for expanded groups.
+ *
+ * @param color The new background color.
+ */
+void pidgin_blist_theme_set_expanded_background_color(PidginBlistTheme *theme, GdkColor *color);
+
+/**
+ * Sets the text color and font to be used for expanded groups.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_expanded_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the background color to be used for collapsed groups.
+ *
+ * @param color The new background color.
+ */
+void pidgin_blist_theme_set_collapsed_background_color(PidginBlistTheme *theme, GdkColor *color);
+
+/**
+ * Sets the text color and font to be used for expanded groups.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_collapsed_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the background color to be used for contacts and chats.
+ *
+ * @param color The color to use for contacts and chats.
+ */
+void pidgin_blist_theme_set_contact_color(PidginBlistTheme *theme, GdkColor *color);
+
+/**
+ * Sets the text color and font to be used for expanded contacts.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_contact_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for online buddies.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_online_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for away and idle buddies.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_away_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for offline buddies.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_offline_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for idle buddies.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_idle_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for buddies with unread messages.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_unread_message_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for a chat with unread messages
+ * that mention your nick.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_unread_message_nick_said_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+/**
+ * Sets the text color and font to be used for buddy status messages.
+ *
+ * @param pair The new text font at color pair.
+ */
+void pidgin_blist_theme_set_status_text_info(PidginBlistTheme *theme, FontColorPair *pair);
+
+G_END_DECLS
+#endif /* PIDGIN_BLIST_THEME_H */
--- a/pidgin/gtkblist.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkblist.c	Wed Mar 04 16:52:47 2009 +0000
@@ -38,6 +38,8 @@
 #include "request.h"
 #include "signals.h"
 #include "pidginstock.h"
+#include "theme-loader.h"
+#include "theme-manager.h"
 #include "util.h"
 
 #include "gtkaccount.h"
@@ -58,6 +60,8 @@
 #include "gtkstatusbox.h"
 #include "gtkscrollbook.h"
 #include "gtksmiley.h"
+#include "gtkblist-theme.h"
+#include "gtkblist-theme-loader.h"
 #include "gtkutils.h"
 #include "pidgin/minidialog.h"
 #include "pidgin/pidgintooltip.h"
@@ -121,6 +125,9 @@
 	 *  is showing; @c NULL otherwise.
 	 */
 	PidginMiniDialog *signed_on_elsewhere;
+
+	PidginBlistTheme *current_theme;
+
 } PidginBuddyListPrivate;
 
 #define PIDGIN_BUDDY_LIST_GET_PRIVATE(list) \
@@ -142,7 +149,7 @@
 #if GTK_CHECK_VERSION(2,2,1)
 static void sort_method_alphabetical(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
 static void sort_method_status(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
-static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
+static void sort_method_log_activity(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter);
 #endif
 static PidginBuddyList *gtkblist = NULL;
 
@@ -164,7 +171,8 @@
 static void set_urgent(void);
 
 typedef enum {
-	PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE    =  1 << 0,  /* Whether there's pending message in a conversation */
+	PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE            =  1 << 0,  /* Whether there's pending message in a conversation */
+	PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK	 =  1 << 1,  /* Whether there's a pending message in a chat that mentions our nick */
 } PidginBlistNodeFlags;
 
 typedef struct _pidgin_blist_node {
@@ -179,17 +187,6 @@
 	} conv;
 } PidginBlistNode;
 
-static char dim_grey_string[8] = "";
-static char *dim_grey(void)
-{
-	if (!gtkblist)
-		return "dim grey";
-	if (!dim_grey_string[0]) {
-		snprintf(dim_grey_string, sizeof(dim_grey_string), "%s", pidgin_get_dim_grey_string(gtkblist->treeview)); 
-	}
-	return dim_grey_string;
-}
-
 /***************************************************
  *              Callbacks                          *
  ***************************************************/
@@ -329,17 +326,24 @@
 
 static void gtk_blist_menu_info_cb(GtkWidget *w, PurpleBuddy *b)
 {
-	pidgin_retrieve_user_info(b->account->gc, purple_buddy_get_name(b));
+	PurpleAccount *account = purple_buddy_get_account(b);
+
+	pidgin_retrieve_user_info(purple_account_get_connection(account),
+	                          purple_buddy_get_name(b));
 }
 
 static void gtk_blist_menu_im_cb(GtkWidget *w, PurpleBuddy *b)
 {
-	pidgin_dialogs_im_with_user(b->account, b->name);
+	pidgin_dialogs_im_with_user(purple_buddy_get_account(b),
+	                            purple_buddy_get_name(b));
 }
 
 static void gtk_blist_menu_send_file_cb(GtkWidget *w, PurpleBuddy *b)
 {
-	serv_send_file(b->account->gc, b->name, NULL);
+	PurpleAccount *account = purple_buddy_get_account(b);
+
+	serv_send_file(purple_account_get_connection(account),
+	               purple_buddy_get_name(b), NULL);
 }
 
 static void gtk_blist_menu_move_to_cb(GtkWidget *w, PurpleBlistNode *node)
@@ -364,7 +368,7 @@
 static PurpleConversation *
 find_conversation_with_buddy(PurpleBuddy *buddy)
 {
-	PidginBlistNode *ui = buddy->node.ui_data;
+	PidginBlistNode *ui = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(buddy));
 	if (ui)
 		return ui->conv.conv;
 	return purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM,
@@ -374,15 +378,20 @@
 
 static void gtk_blist_join_chat(PurpleChat *chat)
 {
+	PurpleAccount *account;
 	PurpleConversation *conv;
 	PurplePluginProtocolInfo *prpl_info;
+	GHashTable *components;
 	const char *name;
 	char *chat_name;
 
-	prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(chat->account)));
+	account = purple_chat_get_account(chat);
+	prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account)));
+
+	components = purple_chat_get_components(chat);
 
 	if (prpl_info && prpl_info->get_chat_name)
-		chat_name = prpl_info->get_chat_name(chat->components);
+		chat_name = prpl_info->get_chat_name(components);
 	else
 		chat_name = NULL;
 
@@ -392,14 +401,14 @@
 		name = purple_chat_get_name(chat);
 
 	conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_CHAT, name,
-											   chat->account);
+	                                             account);
 
 	if (conv != NULL) {
 		pidgin_conv_attach_to_conversation(conv);
 		purple_conversation_present(conv);
 	}
 
-	serv_join_chat(chat->account->gc, chat->components);
+	serv_join_chat(purple_account_get_connection(account), components);
 	g_free(chat_name);
 }
 
@@ -434,15 +443,15 @@
 	gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &val);
 	node = g_value_get_pointer(&val);
 
-	switch (node->type) {
+	switch (purple_blist_node_get_type(node)) {
 	case PURPLE_BLIST_CONTACT_NODE:
-		text = purple_contact_get_alias((PurpleContact *)node);
+		text = purple_contact_get_alias(PURPLE_CONTACT(node));
 		break;
 	case PURPLE_BLIST_BUDDY_NODE:
-		text = purple_buddy_get_alias((PurpleBuddy *)node);
+		text = purple_buddy_get_alias(PURPLE_BUDDY(node));
 		break;
 	case PURPLE_BLIST_GROUP_NODE:
-		text = ((PurpleGroup *)node)->name;
+		text = purple_group_get_name(PURPLE_GROUP(node));
 		break;
 	default:
 		g_return_if_reached();
@@ -470,17 +479,24 @@
 	for (tmp = merges; tmp; tmp = tmp->next) {
 		PurpleBlistNode *node = tmp->data;
 		PurpleBlistNode *b;
+		PurpleBlistNodeType type;
 		int i = 0;
 
-		if (node->type == PURPLE_BLIST_BUDDY_NODE)
-			node = node->parent;
-
-		if (node->type != PURPLE_BLIST_CONTACT_NODE)
+		type = purple_blist_node_get_type(node);
+
+		if(type == PURPLE_BLIST_BUDDY_NODE)
+			node = purple_blist_node_get_parent(node);
+
+		if(type == PURPLE_BLIST_CONTACT_NODE)
 			continue;
-		
-
-		for (b = node->child; b; b = b->next)
+
+		for (b = purple_blist_node_get_first_child(node);
+		     b;
+		     b = purple_blist_node_get_sibling_next(b))
+		{
 			i++;
+		}
+
 		if (i > max) {
 			contact = node;
 			max = i;
@@ -493,8 +509,8 @@
 	/* Merge all those buddies into this contact */
 	for (tmp = merges; tmp; tmp = tmp->next) {
 		PurpleBlistNode *node = tmp->data;
-		if (node->type == PURPLE_BLIST_BUDDY_NODE)
-			node = node->parent;
+		if (purple_blist_node_get_type(node) == PURPLE_BLIST_BUDDY_NODE)
+			node = purple_blist_node_get_parent(node);
 
 		if (node == contact)
 			continue;
@@ -516,9 +532,11 @@
 	int i = 0;
 	char *a = g_utf8_casefold(alias, -1);
 
-	for (contact = group->child; contact; contact = contact->next) {
+	for (contact = purple_blist_node_get_first_child(group);
+	     contact != NULL;
+	     contact = purple_blist_node_get_sibling_next(contact)) {
 		char *node_alias;
-		if (contact->type != PURPLE_BLIST_CONTACT_NODE)
+		if (purple_blist_node_get_type(contact) != PURPLE_BLIST_CONTACT_NODE)
 			continue;
 
 		node_alias = g_utf8_casefold(purple_contact_get_alias((PurpleContact *)contact), -1);
@@ -530,11 +548,14 @@
 		}
 		g_free(node_alias);
 
-		for (buddy = contact->child; buddy; buddy = buddy->next) {
-			if (buddy->type != PURPLE_BLIST_BUDDY_NODE)
+		for (buddy = purple_blist_node_get_first_child(contact);
+		     buddy;
+		     buddy = purple_blist_node_get_sibling_next(buddy))
+		{
+			if (purple_blist_node_get_type(buddy) != PURPLE_BLIST_BUDDY_NODE)
 				continue;
 
-			node_alias = g_utf8_casefold(purple_buddy_get_alias((PurpleBuddy *)buddy), -1);
+			node_alias = g_utf8_casefold(purple_buddy_get_alias(PURPLE_BUDDY(buddy)), -1);
 			if (node_alias && !g_utf8_collate(node_alias, a)) {
 				merges = g_list_append(merges, buddy);
 				i++;
@@ -576,39 +597,45 @@
 	gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), TRUE);
 	g_object_set(G_OBJECT(gtkblist->text_rend), "editable", FALSE, NULL);
 
-	switch (node->type)
+	switch (purple_blist_node_get_type(node))
 	{
 		case PURPLE_BLIST_CONTACT_NODE:
 			{
-				PurpleContact *contact = (PurpleContact *)node;
-				struct _pidgin_blist_node *gtknode = (struct _pidgin_blist_node *)node->ui_data;
-
-				if (contact->alias || gtknode->contact_expanded) {
+				PurpleContact *contact = PURPLE_CONTACT(node);
+				struct _pidgin_blist_node *gtknode =
+					(struct _pidgin_blist_node *)purple_blist_node_get_ui_data(node);
+
+				if (purple_contact_get_alias(contact) || gtknode->contact_expanded) {
 					purple_blist_alias_contact(contact, arg2);
-					gtk_blist_auto_personize(node->parent, arg2);
+					gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2);
 				} else {
 					PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
 					purple_blist_alias_buddy(buddy, arg2);
 					serv_alias_buddy(buddy);
-					gtk_blist_auto_personize(node->parent, arg2);
+					gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2);
 				}
 			}
 			break;
 
 		case PURPLE_BLIST_BUDDY_NODE:
-			purple_blist_alias_buddy((PurpleBuddy*)node, arg2);
-			serv_alias_buddy((PurpleBuddy *)node);
-			gtk_blist_auto_personize(node->parent->parent, arg2);
+			{
+				PurpleGroup *group = purple_buddy_get_group(PURPLE_BUDDY(node));
+
+				purple_blist_alias_buddy(PURPLE_BUDDY(node), arg2);
+				serv_alias_buddy(PURPLE_BUDDY(node));
+				gtk_blist_auto_personize(PURPLE_BLIST_NODE(group), arg2);
+			}
 			break;
 		case PURPLE_BLIST_GROUP_NODE:
 			dest = purple_find_group(arg2);
-			if (dest != NULL && purple_utf8_strcasecmp(arg2, ((PurpleGroup*) node)->name)) {
-				pidgin_dialogs_merge_groups((PurpleGroup*) node, arg2);
-			} else
-				purple_blist_rename_group((PurpleGroup*)node, arg2);
+			if (dest != NULL && purple_utf8_strcasecmp(arg2, purple_group_get_name(PURPLE_GROUP(node)))) {
+				pidgin_dialogs_merge_groups(PURPLE_GROUP(node), arg2);
+			} else {
+				purple_blist_rename_group(PURPLE_GROUP(node), arg2);
+			}
 			break;
 		case PURPLE_BLIST_CHAT_NODE:
-			purple_blist_alias_chat((PurpleChat*)node, arg2);
+			purple_blist_alias_chat(PURPLE_CHAT(node), arg2);
 			break;
 		default:
 			break;
@@ -695,7 +722,7 @@
 
 	if (!(get_iter_from_node(node, &iter))) {
 		/* This is either a bug, or the buddy is in a collapsed contact */
-		node = node->parent;
+		node = purple_blist_node_get_parent(node);
 		if (!get_iter_from_node(node, &iter))
 			/* Now it's definitely a bug */
 			return;
@@ -718,7 +745,8 @@
 
 static void gtk_blist_menu_bp_cb(GtkWidget *w, PurpleBuddy *b)
 {
-	pidgin_pounce_editor_show(b->account, b->name, NULL);
+	pidgin_pounce_editor_show(purple_buddy_get_account(b),
+	                          purple_buddy_get_name(b), NULL);
 }
 
 static void gtk_blist_menu_showlog_cb(GtkWidget *w, PurpleBlistNode *node)
@@ -732,19 +760,19 @@
 	if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
 		PurpleBuddy *b = (PurpleBuddy*) node;
 		type = PURPLE_LOG_IM;
-		name = g_strdup(b->name);
-		account = b->account;
+		name = g_strdup(purple_buddy_get_name(b));
+		account = purple_buddy_get_account(b);
 	} else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
-		PurpleChat *c = (PurpleChat*) node;
+		PurpleChat *c = PURPLE_CHAT(node);
 		PurplePluginProtocolInfo *prpl_info = NULL;
 		type = PURPLE_LOG_CHAT;
-		account = c->account;
+		account = purple_chat_get_account(c);
 		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_find_prpl(purple_account_get_protocol_id(account)));
 		if (prpl_info && prpl_info->get_chat_name) {
-			name = prpl_info->get_chat_name(c->components);
+			name = prpl_info->get_chat_name(purple_chat_get_components(c));
 		}
 	} else if (PURPLE_BLIST_NODE_IS_CONTACT(node)) {
-		pidgin_log_show_contact((PurpleContact *)node);
+		pidgin_log_show_contact(PURPLE_CONTACT(node));
 		pidgin_clear_cursor(gtkblist->window);
 		return;
 	} else {
@@ -757,10 +785,10 @@
 
 	if (name && account) {
 		pidgin_log_show(type, name, account);
-		g_free(name);
-
 		pidgin_clear_cursor(gtkblist->window);
 	}
+
+	g_free(name);
 }
 
 static void gtk_blist_menu_showoffline_cb(GtkWidget *w, PurpleBlistNode *node)
@@ -777,7 +805,10 @@
 		gboolean setting = !purple_blist_node_get_bool(node, "show_offline");
 
 		purple_blist_node_set_bool(node, "show_offline", setting);
-		for (bnode = node->child; bnode != NULL; bnode = bnode->next) {
+		for (bnode = purple_blist_node_get_first_child(node);
+		     bnode != NULL;
+		     bnode = purple_blist_node_get_sibling_next(bnode))
+		{
 			purple_blist_node_set_bool(bnode, "show_offline", setting);
 			pidgin_blist_update(purple_get_blist(), bnode);
 		}
@@ -786,9 +817,15 @@
 		gboolean setting = !purple_blist_node_get_bool(node, "show_offline");
 
 		purple_blist_node_set_bool(node, "show_offline", setting);
-		for (cnode = node->child; cnode != NULL; cnode = cnode->next) {
+		for (cnode = purple_blist_node_get_first_child(node);
+		     cnode != NULL;
+		     cnode = purple_blist_node_get_sibling_next(cnode))
+		{
 			purple_blist_node_set_bool(cnode, "show_offline", setting);
-			for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) {
+			for (bnode = purple_blist_node_get_first_child(cnode);
+			     bnode != NULL;
+			     bnode = purple_blist_node_get_sibling_next(bnode))
+			{
 				purple_blist_node_set_bool(bnode, "show_offline", setting);
 				pidgin_blist_update(purple_get_blist(), bnode);
 			}
@@ -900,9 +937,10 @@
 static void
 pidgin_blist_update_privacy_cb(PurpleBuddy *buddy)
 {
-	if (buddy->node.ui_data == NULL || ((struct _pidgin_blist_node*)buddy->node.ui_data)->row == NULL)
+	struct _pidgin_blist_node *ui_data = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(buddy));
+	if (ui_data == NULL || ui_data->row == NULL)
 		return;
-	pidgin_blist_update_buddy(purple_get_blist(), (PurpleBlistNode*)(buddy), TRUE);
+	pidgin_blist_update_buddy(purple_get_blist(), PURPLE_BLIST_NODE(buddy), TRUE);
 }
 
 static void
@@ -1032,7 +1070,7 @@
 	GtkWidget *img = NULL;
 	PidginJoinChatData *data = NULL;
 
-	gtkblist = PIDGIN_BLIST(purple_get_blist());
+	gtkblist = purple_blist_get_ui_data();
 	img = gtk_image_new_from_stock(PIDGIN_STOCK_DIALOG_QUESTION,
 					gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_HUGE));
 	data = g_new0(PidginJoinChatData, 1);
@@ -1452,7 +1490,7 @@
 	pidgin_new_item_from_stock(menu, _("Add Buddy _Pounce..."), NULL,
 			G_CALLBACK(gtk_blist_menu_bp_cb), buddy, 0, 0, NULL);
 
-	if (node->parent && node->parent->child->next && 
+	if (node->parent && node->parent->child->next &&
 	      !sub && !contact_expanded) {
 		pidgin_new_item_from_stock(menu, _("View _Log"), NULL,
 				G_CALLBACK(gtk_blist_menu_showlog_cb),
@@ -1474,7 +1512,7 @@
 	if (!contact_expanded && contact != NULL)
 		pidgin_append_blist_node_move_to_menu(menu, (PurpleBlistNode *)contact);
 
-	if (node->parent && node->parent->child->next && 
+	if (node->parent && node->parent->child->next &&
               !sub && !contact_expanded) {
 		pidgin_separator(menu);
 		pidgin_append_blist_node_privacy_menu(menu, node);
@@ -1792,7 +1830,8 @@
 	return handled;
 }
 
-static gboolean gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data)
+static gboolean
+gtk_blist_button_press_cb(GtkWidget *tv, GdkEventButton *event, gpointer user_data)
 {
 	GtkTreePath *path;
 	PurpleBlistNode *node;
@@ -2496,7 +2535,7 @@
 				node = g_value_get_pointer(&val);
 
 				if (PURPLE_BLIST_NODE_IS_BUDDY(node) || PURPLE_BLIST_NODE_IS_CONTACT(node)) {
-					PurpleBuddy *b = PURPLE_BLIST_NODE_IS_BUDDY(node) ? (PurpleBuddy*)node : purple_contact_get_priority_buddy((PurpleContact*)node);
+					PurpleBuddy *b = PURPLE_BLIST_NODE_IS_BUDDY(node) ? PURPLE_BUDDY(node) : purple_contact_get_priority_buddy(PURPLE_CONTACT(node));
 					pidgin_dnd_file_manage(sd, b->account, b->name);
 					gtk_drag_finish(dc, TRUE, (dc->action == GDK_ACTION_MOVE), t);
 				} else {
@@ -2720,7 +2759,7 @@
  *
  *
  */
-#define STATUS_SIZE 16 
+#define STATUS_SIZE 16
 #define TOOLTIP_BORDER 12
 #define SMALL_SPACE 6
 #define LARGE_SPACE 12
@@ -2982,18 +3021,18 @@
 }
 
 static void
-pidgin_blist_align_tooltip(struct tooltip_data *td, GtkWidget *widget) 
-{ 
-	GtkTextDirection dir = gtk_widget_get_direction(widget); 
-
-	if (dir == GTK_TEXT_DIR_RTL) 
+pidgin_blist_align_tooltip(struct tooltip_data *td, GtkWidget *widget)
+{
+	GtkTextDirection dir = gtk_widget_get_direction(widget);
+
+	if (dir == GTK_TEXT_DIR_RTL)
 	{
 		char* layout_name = purple_markup_strip_html(pango_layout_get_text(td->name_layout));
 		PangoDirection dir = pango_find_base_dir(layout_name, -1);
 		if (dir == PANGO_DIRECTION_RTL || dir == PANGO_DIRECTION_NEUTRAL)
-			pango_layout_set_alignment(td->name_layout, PANGO_ALIGN_RIGHT); 
+			pango_layout_set_alignment(td->name_layout, PANGO_ALIGN_RIGHT);
 		g_free(layout_name);
-		pango_layout_set_alignment(td->layout, PANGO_ALIGN_RIGHT); 
+		pango_layout_set_alignment(td->layout, PANGO_ALIGN_RIGHT);
 	}
 }
 
@@ -3082,7 +3121,7 @@
 	GValue val;
 	struct _pidgin_blist_node *gtknode;
 
-	if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y + (gtkblist->tip_rect.height/2), 
+	if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), gtkblist->tip_rect.x, gtkblist->tip_rect.y + (gtkblist->tip_rect.height/2),
 		&path, NULL, NULL, NULL))
 		return FALSE;
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
@@ -3168,7 +3207,7 @@
 	if (y < rect.y + (rect.height / 3) ||
 	    y > rect.y + (2 * (rect.height /3)))
 		return FALSE;
-	
+
 	rect.height = rect.height / 3;
 	rect.y += rect.height;
 
@@ -3287,10 +3326,10 @@
 	{ N_("/_Tools"), NULL, NULL, 0, "<Branch>", NULL },
 	{ N_("/Tools/Buddy _Pounces"), NULL, pidgin_pounces_manager_show, 1, "<Item>", NULL },
 	{ N_("/Tools/_Certificates"), NULL, pidgin_certmgr_show, 0, "<Item>", NULL },
+	{ N_("/Tools/Custom Smile_ys"), "<CTL>Y", pidgin_smiley_manager_show, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SMILEY },
 	{ 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, "<StockItem>", PIDGIN_STOCK_TOOLBAR_TRANSFER },
 	{ N_("/Tools/R_oom List"), NULL, pidgin_roomlist_dialog_show, 0, "<Item>", NULL },
@@ -3815,19 +3854,22 @@
 	return ret;
 }
 
-gchar *pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased)
-{
-	const char *name;
-	char *esc, *text = NULL;
+gchar *
+pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased)
+{
+	const char *name, *name_color, *name_font, *status_color, *status_font;
+	char *text = NULL;
 	PurplePlugin *prpl;
 	PurplePluginProtocolInfo *prpl_info = NULL;
 	PurpleContact *contact;
 	PurplePresence *presence;
 	struct _pidgin_blist_node *gtkcontactnode = NULL;
-	char *idletime = NULL, *statustext = NULL;
-	time_t t;
+	char *idletime = NULL, *statustext = NULL, *nametext = NULL;
 	PurpleConversation *conv = find_conversation_with_buddy(b);
 	gboolean hidden_conv = FALSE;
+	gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
+	FontColorPair *pair = NULL;
+	PidginBlistTheme *theme;
 
 	if (conv != NULL) {
 		PidginBlistNode *ui = b->node.ui_data;
@@ -3841,178 +3883,197 @@
 	}
 
 	/* XXX Good luck cleaning up this crap */
-	contact = (PurpleContact*)((PurpleBlistNode*)b)->parent;
+	contact = PURPLE_CONTACT(PURPLE_BLIST_NODE(b)->parent);
 	if(contact)
-		gtkcontactnode = ((PurpleBlistNode*)contact)->ui_data;
-
-	if(gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
+		gtkcontactnode = purple_blist_node_get_ui_data(PURPLE_BLIST_NODE(contact));
+
+	/* Name */
+	if (gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
 		name = contact->alias;
 	else
 		name = purple_buddy_get_alias(b);
-	
-	esc = g_markup_escape_text(name, strlen(name));
+
+	nametext = g_markup_escape_text(name, strlen(name));
 
 	presence = purple_buddy_get_presence(b);
 
-	if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons") && aliased)
-	{
-		if (!selected && purple_presence_is_idle(presence))
-		{
-			text = g_strdup_printf("<span color='%s'>%s</span>",
-					       dim_grey(), esc);
-			g_free(esc);
-			if (hidden_conv) {
-				char *tmp = text;
-				text = g_strdup_printf("<b>%s</b>", text);
+	/* Name is all that is needed */
+	if (aliased && biglist) {
+
+		/* Status Info */
+		prpl = purple_find_prpl(purple_account_get_protocol_id(b->account));
+
+		if (prpl != NULL)
+			prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+
+		if (prpl_info && prpl_info->status_text && b->account->gc) {
+			char *tmp = prpl_info->status_text(b);
+			const char *end;
+
+			if(tmp && !g_utf8_validate(tmp, -1, &end)) {
+				char *new = g_strndup(tmp,
+						g_utf8_pointer_to_offset(tmp, end));
+				g_free(tmp);
+				tmp = new;
+			}
+			/* add ... to messages that are too long, GTK 2.6+ does it automatically */
+#if !GTK_CHECK_VERSION(2,6,0)
+			if(tmp) {
+				char buf[32];
+				char *c = tmp;
+				int length = 0, vis=0;
+				gboolean inside = FALSE;
+				g_strdelimit(tmp, "\n", ' ');
+				purple_str_strip_char(tmp, '\r');
+
+				while(*c && vis < 20) {
+					if(*c == '&')
+						inside = TRUE;
+					else if(*c == ';')
+						inside = FALSE;
+					if(!inside)
+						vis++;
+					c = g_utf8_next_char(c); /* this is fun */
+				}
+
+				length = c - tmp;
+
+				if(vis == 20)
+					g_snprintf(buf, sizeof(buf), "%%.%ds...", length);
+				else
+					g_snprintf(buf, sizeof(buf), "%%s ");
+
+				statustext = g_strdup_printf(buf, tmp);purple_presence_is_idle(presence)
+
 				g_free(tmp);
 			}
-			return text;
-		}
-		else if (hidden_conv)
-		{
-			char *tmp = esc;
-			esc = g_strdup_printf("<b>%s</b>", esc);
-			g_free(tmp);
-		}
-		return esc;
-	}
-
-	prpl = purple_find_prpl(purple_account_get_protocol_id(b->account));
-
-	if (prpl != NULL)
-		prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-
-	if (prpl_info && prpl_info->status_text && b->account->gc) {
-		char *tmp = prpl_info->status_text(b);
-		const char *end;
-
-		if(tmp && !g_utf8_validate(tmp, -1, &end)) {
-			char *new = g_strndup(tmp,
-					g_utf8_pointer_to_offset(tmp, end));
-			g_free(tmp);
-			tmp = new;
-		}
-
-#if !GTK_CHECK_VERSION(2,6,0)
-		if(tmp) {
-			char buf[32];
-			char *c = tmp;
-			int length = 0, vis=0;
-			gboolean inside = FALSE;
-			g_strdelimit(tmp, "\n", ' ');
-			purple_str_strip_char(tmp, '\r');
-
-			while(*c && vis < 20) {
-				if(*c == '&')
-					inside = TRUE;
-				else if(*c == ';')
-					inside = FALSE;
-				if(!inside)
-					vis++;
-				c = g_utf8_next_char(c); /* this is fun */
+#else
+			if(tmp) {
+				g_strdelimit(tmp, "\n", ' ');
+				purple_str_strip_char(tmp, '\r');
 			}
-
-			length = c - tmp;
-
-			if(vis == 20)
-				g_snprintf(buf, sizeof(buf), "%%.%ds...", length);
-			else
-				g_snprintf(buf, sizeof(buf), "%%s ");
-
-			statustext = g_strdup_printf(buf, tmp);
-
-			g_free(tmp);
-		}
-#else
-		if(tmp) {
-			g_strdelimit(tmp, "\n", ' ');
-			purple_str_strip_char(tmp, '\r');
-		}
-		statustext = tmp;
+			statustext = tmp;
 #endif
-	}
-
-	if(!purple_presence_is_online(presence) && !statustext)
-		statustext = g_strdup(_("Offline"));
-	else if (!statustext)
-		text = g_strdup(esc);
-
-	if (purple_presence_is_idle(presence)) {
-		if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time")) {
+		}
+
+		if(!purple_presence_is_online(presence) && !statustext)
+				statustext = g_strdup(_("Offline"));
+
+		/* Idle Text */
+		if (purple_presence_is_idle(presence) && purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time")) {
 			time_t idle_secs = purple_presence_get_idle_time(presence);
 
 			if (idle_secs > 0) {
 				int iday, ihrs, imin;
+				time_t t;
 
 				time(&t);
 				iday = (t - idle_secs) / (24 * 60 * 60);
 				ihrs = ((t - idle_secs) / 60 / 60) % 24;
 				imin = ((t - idle_secs) / 60) % 60;
 
-                if (iday)
+				if (iday)
 					idletime = g_strdup_printf(_("Idle %dd %dh %02dm"), iday, ihrs, imin);
 				else if (ihrs)
 					idletime = g_strdup_printf(_("Idle %dh %02dm"), ihrs, imin);
 				else
 					idletime = g_strdup_printf(_("Idle %dm"), imin);
-			}
-			else
+
+			} else
 				idletime = g_strdup(_("Idle"));
-
-			if (!selected) {
-				g_free(text);
-				text = g_strdup_printf("<span color='%s'>%s</span>\n"
-					"<span color='%s' size='smaller'>%s%s%s</span>",
-					dim_grey(), esc, dim_grey(),
-					idletime != NULL ? idletime : "",
-					(idletime != NULL && statustext != NULL) ? " - " : "",
-					statustext != NULL ? statustext : "");
-			}
-		}
-		else if (!selected && !statustext) {/* We handle selected text later */
-			g_free(text);
-			text = g_strdup_printf("<span color='%s'>%s</span>", dim_grey(), esc);
-		} else if (!selected && !text) {
-			g_free(text);
-			text = g_strdup_printf("<span color='%s'>%s</span>\n"
-				"<span color='%s' size='smaller'>%s</span>",
-				dim_grey(), esc, dim_grey(),
-				statustext != NULL ? statustext : "");
-		}
-	} else if (!PURPLE_BUDDY_IS_ONLINE(b)) {
-		if (!selected && !statustext) {/* We handle selected text later */
-			g_free(text);
-			text = g_strdup_printf("<span color='%s'>%s</span>", dim_grey(), esc);
-		} else if (!selected && !text)
-			text = g_strdup_printf("<span color='%s'>%s</span>\n"
-				"<span color='%s' size='smaller'>%s</span>",
-				dim_grey(), esc, dim_grey(),
-				statustext != NULL ? statustext : "");
-
-	}
-	/* Not idle and not selected */
-	else if (!selected && !text)
-	{
-		text = g_strdup_printf("%s\n"
-			"<span color='%s' size='smaller'>%s</span>",
-			esc, dim_grey(),
-			statustext != NULL ? statustext :  "");
-	}
-
-	/* It is selected. */
-	if ((selected && !text) || (selected && idletime)) {
-		g_free(text);
-		text = g_strdup_printf("%s\n"
-			"<span size='smaller'>%s%s%s</span>",
-			esc,
-			idletime != NULL ? idletime : "",
-			(idletime != NULL && statustext != NULL) ? " - " : "",
-			statustext != NULL ? statustext :  "");
-	}
-
+		}
+	}
+
+	/* choose the colors of the text */
+	theme = pidgin_blist_get_theme();
+
+	if (purple_presence_is_idle(presence)) {
+		if (theme)
+			pair = pidgin_blist_theme_get_idle_text_info(theme);
+		status_color = name_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey";
+		status_font = name_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+	} else if (!purple_presence_is_online(presence)) {
+		if (theme)
+			pair = pidgin_blist_theme_get_offline_text_info(theme);
+		name_color = (pair != NULL && pair->color != NULL) ? pair->color : NULL;
+		name_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+		if (theme)
+			pair = pidgin_blist_theme_get_status_text_info(theme);
+		status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey";
+		status_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+	} else if (purple_presence_is_available(presence)) {
+		if (theme)
+			pair = pidgin_blist_theme_get_online_text_info(theme);
+		name_color = (pair != NULL && pair->color != NULL) ? pair->color : NULL;
+		name_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+		if (theme)
+			pair = pidgin_blist_theme_get_status_text_info(theme);
+		status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey";
+		status_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+	} else {
+		if (theme)
+			pair = pidgin_blist_theme_get_away_text_info(theme);
+		name_color = (pair != NULL && pair->color != NULL) ? pair->color : NULL;
+		name_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+
+		if (theme)
+			pair = pidgin_blist_theme_get_status_text_info(theme);
+		status_color = (pair != NULL && pair->color != NULL) ? pair->color : "dim grey";
+		status_font = (pair != NULL && pair->font != NULL) ? pair->font : "";
+	}
+
+	if (aliased && selected) {
+		if (theme) {
+			name_color = "black";
+			status_color = "black";
+		} else {
+			name_color = NULL;
+			status_color = NULL;
+		}
+	}
+
+	/* Put it all together */
+	if (aliased && biglist && (statustext || idletime)) {
+		/* using <span size='smaller'> breaks the status, so it must be seperated into <small><span>*/
+		if (name_color) {
+			text = g_strdup_printf("<span font_desc='%s' foreground='%s'>%s</span>\n"
+				 		"<small><span font_desc='%s' foreground='%s'>%s%s%s</span></small>",
+						name_font, name_color, nametext, status_font, status_color,
+						idletime != NULL ? idletime : "",
+				    		(idletime != NULL && statustext != NULL) ? " - " : "",
+				    		statustext != NULL ? statustext : "");
+		} else if (status_color) {
+			text = g_strdup_printf("<span font_desc='%s'>%s</span>\n"
+				 		"<small><span font_desc='%s' foreground='%s'>%s%s%s</span></small>",
+						name_font, nametext, status_font, status_color,
+						idletime != NULL ? idletime : "",
+				    		(idletime != NULL && statustext != NULL) ? " - " : "",
+				    		statustext != NULL ? statustext : "");
+		} else {
+			text = g_strdup_printf("<span font_desc='%s'>%s</span>\n"
+				 		"<small><span font_desc='%s'>%s%s%s</span></small>",
+						name_font, nametext, status_font,
+						idletime != NULL ? idletime : "",
+				    		(idletime != NULL && statustext != NULL) ? " - " : "",
+				    		statustext != NULL ? statustext : "");
+		}
+	} else {
+		if (name_color) {
+			text = g_strdup_printf("<span font_desc='%s' color='%s'>%s</span>", 
+				name_font, name_color, nametext);
+		} else {
+			text = g_strdup_printf("<span font_desc='%s'>%s</span>", name_font,
+				nametext);
+		}
+	}
+	g_free(nametext);
+	g_free(statustext);
 	g_free(idletime);
-	g_free(statustext);
-	g_free(esc);
 
 	if (hidden_conv) {
 		char *tmp = text;
@@ -4062,7 +4123,7 @@
 	PurpleBlistNode *gnode, *cnode;
 
 	if (gtk_blist_visibility == GDK_VISIBILITY_FULLY_OBSCURED
-			|| !GTK_WIDGET_VISIBLE(gtkblist->window)) 
+			|| !GTK_WIDGET_VISIBLE(gtkblist->window))
 		return TRUE;
 
 	for(gnode = list->root; gnode; gnode = gnode->next) {
@@ -4331,6 +4392,10 @@
 			!(flag & (PURPLE_MESSAGE_SEND | PURPLE_MESSAGE_RECV)))
 		return;
 	ui->conv.flags |= PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE;
+	if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT
+			&& (flag & PURPLE_MESSAGE_NICK))
+		ui->conv.flags |= PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK;
+
 	ui->conv.last_message = time(NULL);    /* XXX: for lack of better data */
 	pidgin_blist_update(purple_get_blist(), node);
 }
@@ -4341,7 +4406,8 @@
 	PidginBlistNode *ui = node->ui_data;
 	if (ui->conv.conv != gtkconv->active_conv)
 		return;
-	ui->conv.flags &= ~PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE;
+	ui->conv.flags &= ~(PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE |
+	                    PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK);
 	pidgin_blist_update(purple_get_blist(), node);
 }
 
@@ -4450,7 +4516,7 @@
 #if GTK_CHECK_VERSION(2,2,1)
 	pidgin_blist_sort_method_reg("alphabetical", _("Alphabetically"), sort_method_alphabetical);
 	pidgin_blist_sort_method_reg("status", _("By status"), sort_method_status);
-	pidgin_blist_sort_method_reg("log_size", _("By log size"), sort_method_log);
+	pidgin_blist_sort_method_reg("log_size", _("By recent log activity"), sort_method_log_activity);
 #endif
 	pidgin_blist_sort_method_set(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/sort_type"));
 }
@@ -5261,11 +5327,144 @@
 }
 #endif
 
+/* builds the blist layout according to to the current theme */
+static void
+pidgin_blist_build_layout(PurpleBuddyList *list)
+{
+	GtkTreeViewColumn *column;
+	PidginBlistLayout *layout;
+	PidginBlistTheme *theme;
+	GtkCellRenderer *rend;
+	gint i, status_icon = 0, text = 1, emblem = 2, protocol_icon = 3, buddy_icon = 4;
+
+
+	column = gtkblist->text_column;
+
+	if ((theme = pidgin_blist_get_theme()) != NULL && (layout = pidgin_blist_theme_get_layout(theme)) != NULL) {
+		status_icon = layout->status_icon ;
+		text = layout->text;
+		emblem = layout->emblem;
+		protocol_icon = layout->protocol_icon;
+		buddy_icon = layout->buddy_icon;
+	}
+
+	gtk_tree_view_column_clear(column);
+
+	/* group */
+	rend = pidgin_cell_renderer_expander_new();
+	gtk_tree_view_column_pack_start(column, rend, FALSE);
+	gtk_tree_view_column_set_attributes(column, rend,
+					    "visible", GROUP_EXPANDER_VISIBLE_COLUMN,
+					    "expander-visible", GROUP_EXPANDER_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+					    "sensitive", GROUP_EXPANDER_COLUMN,
+					    "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+					    NULL);
+
+	/* contact */
+	rend = pidgin_cell_renderer_expander_new();
+	gtk_tree_view_column_pack_start(column, rend, FALSE);
+	gtk_tree_view_column_set_attributes(column, rend,
+					    "visible", CONTACT_EXPANDER_VISIBLE_COLUMN,
+					    "expander-visible", CONTACT_EXPANDER_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+					    "sensitive", CONTACT_EXPANDER_COLUMN,
+					    "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+					    NULL);
+
+	for (i = 0; i < 5; i++) {
+
+		if (status_icon == i) {
+			/* status icons */
+			rend = gtk_cell_renderer_pixbuf_new();
+			gtk_tree_view_column_pack_start(column, rend, FALSE);
+			gtk_tree_view_column_set_attributes(column, rend,
+							    "pixbuf", STATUS_ICON_COLUMN,
+							    "visible", STATUS_ICON_VISIBLE_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+							    "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+							    NULL);
+			g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL);
+
+		} else if (text == i) {
+			/* name */
+			gtkblist->text_rend = rend = gtk_cell_renderer_text_new();
+			gtk_tree_view_column_pack_start(column, rend, TRUE);
+			gtk_tree_view_column_set_attributes(column, rend,
+#if GTK_CHECK_VERSION(2,6,0)
+							    "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+							    "markup", NAME_COLUMN,
+							    NULL);
+#if GTK_CHECK_VERSION(2,6,0)
+			g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL);
+			g_signal_connect(G_OBJECT(rend), "editing-canceled", G_CALLBACK(gtk_blist_renderer_editing_cancelled_cb), list);
+#endif
+			g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), list);
+			g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
+#if GTK_CHECK_VERSION(2,6,0)
+			g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+#endif
+
+			/* idle */
+			rend = gtk_cell_renderer_text_new();
+			g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
+			gtk_tree_view_column_pack_start(column, rend, FALSE);
+			gtk_tree_view_column_set_attributes(column, rend,
+							    "markup", IDLE_COLUMN,
+							    "visible", IDLE_VISIBLE_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+							    "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+							    NULL);
+		} else if (emblem == i) {
+			/* emblem */
+			rend = gtk_cell_renderer_pixbuf_new();
+			g_object_set(rend, "xalign", 1.0, "yalign", 0.5, "ypad", 0, "xpad", 3, NULL);
+			gtk_tree_view_column_pack_start(column, rend, FALSE);
+			gtk_tree_view_column_set_attributes(column, rend, "pixbuf", EMBLEM_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+									  "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+									  "visible", EMBLEM_VISIBLE_COLUMN, NULL);
+
+		} else if (protocol_icon == i) {
+			/* protocol icon */
+			rend = gtk_cell_renderer_pixbuf_new();
+			gtk_tree_view_column_pack_start(column, rend, FALSE);
+			gtk_tree_view_column_set_attributes(column, rend,
+							   "pixbuf", PROTOCOL_ICON_COLUMN,
+							   "visible", PROTOCOL_ICON_VISIBLE_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+							   "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+							  NULL);
+			g_object_set(rend, "xalign", 0.0, "xpad", 3, "ypad", 0, NULL);
+
+		} else if (buddy_icon == i) {
+			/* buddy icon */
+			rend = gtk_cell_renderer_pixbuf_new();
+			g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
+			gtk_tree_view_column_pack_start(column, rend, FALSE);
+			gtk_tree_view_column_set_attributes(column, rend, "pixbuf", BUDDY_ICON_COLUMN,
+#if GTK_CHECK_VERSION(2,6,0)
+							    "cell-background-gdk", BGCOLOR_COLUMN,
+#endif
+							    "visible", BUDDY_ICON_VISIBLE_COLUMN,
+							    NULL);
+		}
+
+	}/* end for loop */
+
+}
+
 static void pidgin_blist_show(PurpleBuddyList *list)
 {
 	PidginBuddyListPrivate *priv;
 	void *handle;
-	GtkCellRenderer *rend;
 	GtkTreeViewColumn *column;
 	GtkWidget *menu;
 	GtkWidget *ebox;
@@ -5291,6 +5490,8 @@
 	gtkblist = PIDGIN_BLIST(list);
 	priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
 
+	priv->current_theme = PIDGIN_BLIST_THEME(purple_theme_manager_find_theme(purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/theme"), "blist"));
+
 	gtkblist->empty_avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, 32, 32);
 	gdk_pixbuf_fill(gtkblist->empty_avatar, 0x00000000);
 
@@ -5323,8 +5524,8 @@
 	gtk_item_factory_create_items(gtkblist->ift, sizeof(blist_menu) / sizeof(*blist_menu),
 								  blist_menu, NULL);
 	pidgin_load_accels();
-	g_signal_connect(G_OBJECT(accel_group), "accel-changed",
-														G_CALLBACK(pidgin_save_accels_cb), NULL);
+	g_signal_connect(G_OBJECT(accel_group), "accel-changed", G_CALLBACK(pidgin_save_accels_cb), NULL);
+
 	menu = gtk_item_factory_get_widget(gtkblist->ift, "<PurpleMain>");
 	gtkblist->menutray = pidgin_menu_tray_new();
 	gtk_menu_shell_append(GTK_MENU_SHELL(menu), gtkblist->menutray);
@@ -5468,105 +5669,16 @@
 
 	gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(gtkblist->treeview), FALSE);
 
+	/* expander columns */
 	column = gtk_tree_view_column_new();
 	gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
 	gtk_tree_view_column_set_visible(column, FALSE);
 	gtk_tree_view_set_expander_column(GTK_TREE_VIEW(gtkblist->treeview), column);
 
-	gtkblist->text_column = column = gtk_tree_view_column_new ();
-	rend = pidgin_cell_renderer_expander_new();
-	gtk_tree_view_column_pack_start(column, rend, FALSE);
-	gtk_tree_view_column_set_attributes(column, rend,
-					    "visible", GROUP_EXPANDER_VISIBLE_COLUMN,
-					    "expander-visible", GROUP_EXPANDER_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
-					    "sensitive", GROUP_EXPANDER_COLUMN,
-					    "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
-					    NULL);
-
-	rend = pidgin_cell_renderer_expander_new();
-	gtk_tree_view_column_pack_start(column, rend, FALSE);
-	gtk_tree_view_column_set_attributes(column, rend,
-					    "expander-visible", CONTACT_EXPANDER_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
-					    "sensitive", CONTACT_EXPANDER_COLUMN,
-					    "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
-					    "visible", CONTACT_EXPANDER_VISIBLE_COLUMN,
-					    NULL);
-
-	rend = gtk_cell_renderer_pixbuf_new();
-	gtk_tree_view_column_pack_start(column, rend, FALSE);
-	gtk_tree_view_column_set_attributes(column, rend,
-					    "pixbuf", STATUS_ICON_COLUMN,
-					    "visible", STATUS_ICON_VISIBLE_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
-					    "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
-					    NULL);
-	g_object_set(rend, "xalign", 0.0, "xpad", 6, "ypad", 0, NULL);
-
-	gtkblist->text_rend = rend = gtk_cell_renderer_text_new();
-	gtk_tree_view_column_pack_start (column, rend, TRUE);
-	gtk_tree_view_column_set_attributes(column, rend,
-#if GTK_CHECK_VERSION(2,6,0)
-					    	    "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
-										"markup", NAME_COLUMN,
-										NULL);
-#if GTK_CHECK_VERSION(2,6,0)
-	g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL);
-	g_signal_connect(G_OBJECT(rend), "editing-canceled", G_CALLBACK(gtk_blist_renderer_editing_cancelled_cb), list);
-#endif
-	g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), list);
-	g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
-#if GTK_CHECK_VERSION(2,6,0)
-	g_object_set(rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
-#endif
-	gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), column);
-
-	rend = gtk_cell_renderer_text_new();
-	g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
-	gtk_tree_view_column_pack_start(column, rend, FALSE);
-	gtk_tree_view_column_set_attributes(column, rend,
-					    "markup", IDLE_COLUMN,
-					    "visible", IDLE_VISIBLE_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
-					    "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
-					    NULL);
-
-	rend = gtk_cell_renderer_pixbuf_new();
-	g_object_set(rend, "xalign", 1.0, "yalign", 0.5, "ypad", 0, "xpad", 3, NULL);
-	gtk_tree_view_column_pack_start(column, rend, FALSE);
-	gtk_tree_view_column_set_attributes(column, rend, "pixbuf", EMBLEM_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
-							  "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
-							  "visible", EMBLEM_VISIBLE_COLUMN, NULL);
-
-	rend = gtk_cell_renderer_pixbuf_new();
-	gtk_tree_view_column_pack_start(column, rend, FALSE);
-	gtk_tree_view_column_set_attributes(column, rend,
-					   "pixbuf", PROTOCOL_ICON_COLUMN,
-					   "visible", PROTOCOL_ICON_VISIBLE_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
-					   "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
-					  NULL);
-	g_object_set(rend, "xalign", 0.0, "xpad", 3, "ypad", 0, NULL);
-
-	rend = gtk_cell_renderer_pixbuf_new();
-	g_object_set(rend, "xalign", 1.0, "ypad", 0, NULL);
-	gtk_tree_view_column_pack_start(column, rend, FALSE);
-	gtk_tree_view_column_set_attributes(column, rend, "pixbuf", BUDDY_ICON_COLUMN,
-#if GTK_CHECK_VERSION(2,6,0)
-					    "cell-background-gdk", BGCOLOR_COLUMN,
-#endif
-					    "visible", BUDDY_ICON_VISIBLE_COLUMN,
-					    NULL);
-
+	/* everything else column */
+	gtkblist->text_column = gtk_tree_view_column_new ();
+	gtk_tree_view_append_column(GTK_TREE_VIEW(gtkblist->treeview), gtkblist->text_column);
+	pidgin_blist_build_layout(list);
 
 	g_signal_connect(G_OBJECT(gtkblist->treeview), "row-activated", G_CALLBACK(gtk_blist_row_activated_cb), NULL);
 	g_signal_connect(G_OBJECT(gtkblist->treeview), "row-expanded", G_CALLBACK(gtk_blist_row_expanded_cb), NULL);
@@ -5959,7 +6071,7 @@
 
 	if (editing_blist)
 		return;
-	
+
 	if (PURPLE_BLIST_NODE_IS_GROUP(node))
 		gnode = node;
 	else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
@@ -5993,13 +6105,19 @@
 		GtkTreeIter iter;
 		GtkTreePath *path;
 		gboolean expanded;
-		GdkColor bgcolor;
+		GdkColor *bgcolor = NULL;
 		GdkPixbuf *avatar = NULL;
+		PidginBlistTheme *theme = NULL;
 
 		if(!insert_node(list, gnode, &iter))
 			return;
 
-		bgcolor = gtkblist->treeview->style->bg[GTK_STATE_ACTIVE];
+		if ((theme = pidgin_blist_get_theme()) == NULL)
+			bgcolor = NULL;
+		else if (purple_blist_node_get_bool(gnode, "collapsed") || count <= 0)
+			bgcolor = pidgin_blist_theme_get_collapsed_background_color(theme);
+		else
+			bgcolor = pidgin_blist_theme_get_expanded_background_color(theme);
 
 		path = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &iter);
 		expanded = gtk_tree_view_row_expanded(GTK_TREE_VIEW(gtkblist->treeview), path);
@@ -6017,7 +6135,7 @@
 				   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,
@@ -6040,6 +6158,9 @@
 	char *mark, *esc;
 	PurpleBlistNode *selected_node = NULL;
 	GtkTreeIter iter;
+	FontColorPair *pair;
+	gchar *text_color, *text_font;
+	PidginBlistTheme *theme;
 
 	group = (PurpleGroup*)gnode;
 
@@ -6055,8 +6176,26 @@
 		           purple_blist_get_group_size(group, FALSE));
 	}
 
+	theme = pidgin_blist_get_theme();
+	if (theme == NULL)
+		pair = NULL;
+	else if (expanded)
+		pair = pidgin_blist_theme_get_expanded_text_info(theme);
+	else
+		pair = pidgin_blist_theme_get_collapsed_text_info(theme);
+
+
+	text_color = (selected || pair == NULL || pair->color == NULL) ? NULL : pair->color;
+	text_font = (pair == NULL || pair->font == NULL) ? "" : pair->font;
+
 	esc = g_markup_escape_text(group->name, -1);
-	mark = g_strdup_printf("<span weight='bold'>%s</span>%s", esc ? esc : "", group_count);
+	if (text_color) {
+		mark = g_strdup_printf("<span foreground='%s' font_desc='%s'><b>%s</b>%s</span>",
+							text_color, text_font, esc ? esc : "", group_count);
+	} else {
+		mark = g_strdup_printf("<span font_desc='%s'><b>%s</b>%s</span>",
+							text_font, esc ? esc : "", group_count);
+	}
 
 	g_free(esc);
 	return mark;
@@ -6064,14 +6203,15 @@
 
 static void buddy_node(PurpleBuddy *buddy, GtkTreeIter *iter, PurpleBlistNode *node)
 {
-	PurplePresence *presence;
+	PurplePresence *presence = purple_buddy_get_presence(buddy);
 	GdkPixbuf *status, *avatar, *emblem, *prpl_icon;
+	GdkColor *color = NULL;
 	char *mark;
 	char *idle = NULL;
 	gboolean expanded = ((struct _pidgin_blist_node *)(node->parent->ui_data))->contact_expanded;
 	gboolean selected = (gtkblist->selected_node == node);
 	gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
-	presence = purple_buddy_get_presence(buddy);
+	PidginBlistTheme *theme;
 
 	if (editing_blist)
 		return;
@@ -6095,35 +6235,46 @@
 	emblem = pidgin_blist_get_emblem((PurpleBlistNode*) buddy);
 	mark = pidgin_blist_get_name_markup(buddy, selected, TRUE);
 
+	theme = pidgin_blist_get_theme();
+
 	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time") &&
-		purple_presence_is_idle(presence) &&
-		!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons"))
+		purple_presence_is_idle(presence) && !biglist)
 	{
 		time_t idle_secs = purple_presence_get_idle_time(presence);
 
 		if (idle_secs > 0)
 		{
+			FontColorPair *pair = NULL;
+			const gchar *textcolor;
 			time_t t;
 			int ihrs, imin;
 			time(&t);
+
 			ihrs = (t - idle_secs) / 3600;
 			imin = ((t - idle_secs) / 60) % 60;
-			idle = g_strdup_printf("%d:%02d", ihrs, imin);
-		}
-	}
-
-	if (purple_presence_is_idle(presence))
-	{
-		if (idle && !selected) {
-			char *i2 = g_strdup_printf("<span color='%s'>%s</span>",
-						   dim_grey(), idle);
-			g_free(idle);
-			idle = i2;
+
+			if (!selected && theme != NULL && (pair = pidgin_blist_theme_get_idle_text_info(theme)) != NULL && pair->color != NULL)
+				textcolor = pair->color;
+			else
+				textcolor = NULL;
+
+			if (textcolor) {
+				idle = g_strdup_printf("<span color='%s' font_desc='%s'>%d:%02d</span>",
+					textcolor, (pair == NULL || pair->font == NULL) ? "" : pair->font, 
+					ihrs, imin);
+			} else {
+				idle = g_strdup_printf("<span font_desc='%s'>%d:%02d</span>",
+					(pair == NULL || pair->font == NULL) ? "" : pair->font, 
+					ihrs, imin);
+			}
 		}
 	}
 
 	prpl_icon = pidgin_create_prpl_icon(buddy->account, PIDGIN_PRPL_ICON_SMALL);
 
+	if (theme != NULL)
+		color = pidgin_blist_theme_get_contact_color(theme);
+
 	gtk_tree_store_set(gtkblist->treemodel, iter,
 			   STATUS_ICON_COLUMN, status,
 			   STATUS_ICON_VISIBLE_COLUMN, TRUE,
@@ -6136,7 +6287,7 @@
 			   EMBLEM_VISIBLE_COLUMN, (emblem != NULL),
 			   PROTOCOL_ICON_COLUMN, prpl_icon,
 			   PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"),
-			   BGCOLOR_COLUMN, NULL,
+			   BGCOLOR_COLUMN, color,
 			   CONTACT_EXPANDER_COLUMN, NULL,
 			   CONTACT_EXPANDER_VISIBLE_COLUMN, expanded,
 			   GROUP_EXPANDER_VISIBLE_COLUMN, FALSE,
@@ -6194,19 +6345,46 @@
 
 		if(gtknode->contact_expanded) {
 			GdkPixbuf *status;
-			char *mark;
+			gchar *mark, *tmp;
+			const gchar *fg_color, *font;
+			GdkColor *color = NULL;
+			PidginBlistTheme *theme = pidgin_blist_get_theme();
+			FontColorPair *pair;
+			gboolean selected = (gtkblist->selected_node == cnode);
+
+			mark = g_markup_escape_text(purple_contact_get_alias(contact), -1);
+
+			theme = pidgin_blist_get_theme();
+			if (theme == NULL)
+				pair = NULL;
+			else {
+				pair = pidgin_blist_theme_get_contact_text_info(theme);
+				color = pidgin_blist_theme_get_contact_color(theme);
+			}
+
+			font = (pair == NULL || pair->font == NULL) ? "" : pair->font;
+			fg_color = (selected || pair == NULL || pair->color == NULL) ? NULL : pair->color;
+
+			if (fg_color) {
+				tmp = g_strdup_printf("<span font_desc='%s' color='%s'>%s</span>",
+						font, fg_color, mark);
+			} else {
+				tmp = g_strdup_printf("<span font_desc='%s'>%s</span>", font, 
+					mark);
+			}
+			g_free(mark);
+			mark = tmp;
 
 			status = pidgin_blist_get_status_icon(cnode,
 					 biglist? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL);
 
-			mark = g_markup_escape_text(purple_contact_get_alias(contact), -1);
 			gtk_tree_store_set(gtkblist->treemodel, &iter,
 					   STATUS_ICON_COLUMN, status,
 					   STATUS_ICON_VISIBLE_COLUMN, TRUE,
 					   NAME_COLUMN, mark,
 					   IDLE_COLUMN, NULL,
 					   IDLE_VISIBLE_COLUMN, FALSE,
-					   BGCOLOR_COLUMN, NULL,
+					   BGCOLOR_COLUMN, color,
 					   BUDDY_ICON_COLUMN, NULL,
 					   CONTACT_EXPANDER_COLUMN, TRUE,
 					   CONTACT_EXPANDER_VISIBLE_COLUMN, TRUE,
@@ -6274,20 +6452,28 @@
 	if(purple_account_is_connected(chat->account)) {
 		GtkTreeIter iter;
 		GdkPixbuf *status, *avatar, *emblem, *prpl_icon;
-		char *mark;
+		const gchar *color, *font;
+		gchar *mark, *tmp;
 		gboolean showicons = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
 		gboolean biglist = purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons");
 		PidginBlistNode *ui;
 		PurpleConversation *conv;
 		gboolean hidden;
+		GdkColor *bgcolor = NULL;
+		FontColorPair *pair;
+		PidginBlistTheme *theme;
+		gboolean selected = (gtkblist->selected_node == node);
+		gboolean nick_said = FALSE;
 
 		if (!insert_node(list, node, &iter))
 			return;
 
 		ui = node->ui_data;
 		conv = ui->conv.conv;
-		hidden = (conv && (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE) &&
-				pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv)));
+		if (conv && pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv))) {
+			hidden = (ui->conv.flags & PIDGIN_BLIST_NODE_HAS_PENDING_MESSAGE);
+			nick_said = (ui->conv.flags & PIDGIN_BLIST_CHAT_HAS_PENDING_MESSAGE_WITH_NICK);
+		}
 
 		status = pidgin_blist_get_status_icon(node,
 				 biglist ? PIDGIN_STATUS_ICON_LARGE : PIDGIN_STATUS_ICON_SMALL);
@@ -6300,14 +6486,40 @@
 			avatar = NULL;
 
 		mark = g_markup_escape_text(purple_chat_get_name(chat), -1);
-		if (hidden) {
-			char *bold = g_strdup_printf("<b>%s</b>", mark);
-			g_free(mark);
-			mark = bold;
-		}
+
+		theme = pidgin_blist_get_theme();
+
+		if (theme == NULL)
+			pair = NULL;
+		else if (nick_said)
+			pair = pidgin_blist_theme_get_unread_message_nick_said_text_info(theme);
+		else if (hidden)
+			pair = pidgin_blist_theme_get_unread_message_text_info(theme);
+		else pair = pidgin_blist_theme_get_online_text_info(theme);
+
+
+		font = (pair == NULL || pair->font == NULL) ? "" : pair->font;
+		if (selected || pair == NULL || pair->color == NULL)
+			/* nick_said color is the same as gtkconv:tab-label-attention */
+			color = (nick_said ? "#006aff" : NULL);
+		else
+			color = pair->color;
+
+		if (color) {
+			tmp = g_strdup_printf("<span font_desc='%s' color='%s' weight='%s'>%s</span>",
+				  	  font, color, hidden ? "bold" : "normal", mark);
+		} else {
+			tmp = g_strdup_printf("<span font_desc='%s' weight='%s'>%s</span>",
+				  	  font, hidden ? "bold" : "normal", mark);
+		}
+		g_free(mark);
+		mark = tmp;
 
 		prpl_icon = pidgin_create_prpl_icon(chat->account, PIDGIN_PRPL_ICON_SMALL);
 
+		if (theme != NULL)
+			bgcolor = pidgin_blist_theme_get_contact_color(theme);
+
 		gtk_tree_store_set(gtkblist->treemodel, &iter,
 				STATUS_ICON_COLUMN, status,
 				STATUS_ICON_VISIBLE_COLUMN, TRUE,
@@ -6318,6 +6530,7 @@
 				PROTOCOL_ICON_COLUMN, prpl_icon,
 				PROTOCOL_ICON_VISIBLE_COLUMN, purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_protocol_icons"),
 				NAME_COLUMN, mark,
+				BGCOLOR_COLUMN, bgcolor,
 				GROUP_EXPANDER_VISIBLE_COLUMN, FALSE,
 				-1);
 
@@ -6330,6 +6543,7 @@
 			g_object_unref(avatar);
 		if(prpl_icon)
 			g_object_unref(prpl_icon);
+
 	} else {
 		pidgin_blist_hide_node(list, node, TRUE);
 	}
@@ -6987,7 +7201,7 @@
 
 	data->group_combo = pidgin_text_combo_box_entry_new(group ? group->name : NULL, groups_tree());
 	pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("_Group:"), data->sg, data->group_combo, TRUE, NULL);
-	
+
 	data->autojoin = gtk_check_button_new_with_mnemonic(_("Auto_join when account becomes online."));
 	data->persistent = gtk_check_button_new_with_mnemonic(_("_Remain in chat after window is closed."));
 	gtk_box_pack_start(GTK_BOX(vbox), data->autojoin, FALSE, FALSE, 0);
@@ -7191,6 +7405,34 @@
 			(GSourceFunc)buddy_signonoff_timeout_cb, buddy);
 }
 
+void
+pidgin_blist_set_theme(PidginBlistTheme *theme)
+{
+	PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
+	PurpleBuddyList *list = purple_get_blist();
+
+	if (theme != NULL)
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/theme",
+				purple_theme_get_name(PURPLE_THEME(theme)));
+	else
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/blist/theme", "");
+
+	priv->current_theme = theme;
+
+	pidgin_blist_build_layout(list);
+
+	pidgin_blist_refresh(list);
+}
+
+
+PidginBlistTheme *
+pidgin_blist_get_theme()
+{
+	PidginBuddyListPrivate *priv = PIDGIN_BUDDY_LIST_GET_PRIVATE(gtkblist);
+
+	return priv->current_theme;
+}
+
 void pidgin_blist_init(void)
 {
 	void *gtk_blist_handle = pidgin_blist_get_handle();
@@ -7219,6 +7461,9 @@
 	/* This pref is used in pidgintooltip.c. */
 	purple_prefs_add_int(PIDGIN_PREFS_ROOT "/blist/tooltip_delay", 500);
 #endif
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/blist/theme", "");
+
+	purple_theme_manager_register_type(g_object_new(PIDGIN_TYPE_BLIST_THEME_LOADER, "type", "blist", NULL));
 
 	/* Register our signals */
 	purple_signal_register(gtk_blist_handle, "gtkblist-hiding",
@@ -7493,11 +7738,11 @@
 	}
 }
 
-static void sort_method_log(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
+static void sort_method_log_activity(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter groupiter, GtkTreeIter *cur, GtkTreeIter *iter)
 {
 	GtkTreeIter more_z;
 
-	int log_size = 0, this_log_size = 0;
+	int activity_score = 0, this_log_activity_score = 0;
 	const char *buddy_name, *this_buddy_name;
 
 	if(cur && (gtk_tree_model_iter_n_children(GTK_TREE_MODEL(gtkblist->treemodel), &groupiter) == 1)) {
@@ -7507,8 +7752,11 @@
 
 	if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
 		PurpleBlistNode *n;
-		for (n = node->child; n; n = n->next)
-			log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n))->name, ((PurpleBuddy*)(n))->account);
+		PurpleBuddy *buddy;
+		for (n = node->child; n; n = n->next) {
+			buddy = (PurpleBuddy*)n;
+			activity_score += purple_log_get_activity_score(PURPLE_LOG_IM, buddy->name, buddy->account);
+		}
 		buddy_name = purple_contact_get_alias((PurpleContact*)node);
 	} else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
 		/* we don't have a reliable way of getting the log filename
@@ -7535,16 +7783,19 @@
 		GValue val;
 		PurpleBlistNode *n;
 		PurpleBlistNode *n2;
+		PurpleBuddy *buddy;
 		int cmp;
 
 		val.g_type = 0;
 		gtk_tree_model_get_value (GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &val);
 		n = g_value_get_pointer(&val);
-		this_log_size = 0;
+		this_log_activity_score = 0;
 
 		if(PURPLE_BLIST_NODE_IS_CONTACT(n)) {
-			for (n2 = n->child; n2; n2 = n2->next)
-				this_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy*)(n2))->name, ((PurpleBuddy*)(n2))->account);
+			for (n2 = n->child; n2; n2 = n2->next) {
+                        	buddy = (PurpleBuddy*)n2;
+				this_log_activity_score += purple_log_get_activity_score(PURPLE_LOG_IM, buddy->name, buddy->account);
+			}
 			this_buddy_name = purple_contact_get_alias((PurpleContact*)n);
 		} else {
 			this_buddy_name = NULL;
@@ -7552,8 +7803,8 @@
 
 		cmp = purple_utf8_strcasecmp(buddy_name, this_buddy_name);
 
-		if (!PURPLE_BLIST_NODE_IS_CONTACT(n) || log_size > this_log_size ||
-				((log_size == this_log_size) &&
+		if (!PURPLE_BLIST_NODE_IS_CONTACT(n) || activity_score > this_log_activity_score ||
+				((activity_score == this_log_activity_score) &&
 				 (cmp < 0 || (cmp == 0 && node < n)))) {
 			if (cur != NULL) {
 				gtk_tree_store_move_before(gtkblist->treemodel, cur, &more_z);
--- a/pidgin/gtkblist.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkblist.h	Wed Mar 04 16:52:47 2009 +0000
@@ -60,6 +60,7 @@
 
 #include "pidgin.h"
 #include "blist.h"
+#include "gtkblist-theme.h"
 
 /**************************************************************************
  * @name Structures
@@ -251,6 +252,23 @@
  */
 void pidgin_blist_add_alert(GtkWidget *widget);
 
+/**
+ * Sets the current theme for Pidgin to use
+ *
+ * @param theme	the new theme to use
+ *
+ * @since 2.6.0
+ */
+void pidgin_blist_set_theme(PidginBlistTheme *theme);
+
+/**
+ * Gets Pidgin's current buddy list theme
+ *
+ * @returns	the current theme
+ *
+ * @since 2.6.0
+ */
+PidginBlistTheme *pidgin_blist_get_theme(void);
 
 /**************************************************************************
  * @name GTK+ Buddy List sorting functions
@@ -382,7 +400,7 @@
  *
  * @param buddy The buddy to return markup from
  * @param selected  Whether this buddy is selected. If TRUE, the markup will not change the color.
- * @param aliased  TRUE to return the appropriate alias of this buddy, FALSE to return its screenname and status information
+ * @param aliased  TRUE to return the appropriate alias of this buddy, FALSE to return its username and status information
  * @return The markup for this buddy
  *
  * @since 2.1.0
--- a/pidgin/gtkcellrendererexpander.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkcellrendererexpander.c	Wed Mar 04 16:52:47 2009 +0000
@@ -18,14 +18,14 @@
  * 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
  *
  */
 
-/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by 
+/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by
  * Jonathon Blandford <jrb@redhat.com> for RedHat, Inc.
  */
 
@@ -74,14 +74,14 @@
 	PROP_0,
 	PROP_IS_EXPANDER
 };
-     
+
 static gpointer parent_class;
 /* static guint expander_cell_renderer_signals [LAST_SIGNAL]; */
 
 GType  pidgin_cell_renderer_expander_get_type (void)
 {
 	static GType cell_expander_type = 0;
-	
+
 	if (!cell_expander_type)
 		{
 			static const GTypeInfo cell_expander_info =
@@ -97,13 +97,13 @@
 					(GInstanceInitFunc) pidgin_cell_renderer_expander_init,
 					NULL		/* value_table */
 				};
-			
+
 			cell_expander_type =
 				g_type_register_static (GTK_TYPE_CELL_RENDERER,
 										"PidginCellRendererExpander",
 										&cell_expander_info, 0);
 		}
-	
+
 	return cell_expander_type;
 }
 
@@ -118,17 +118,17 @@
 {
 	GObjectClass *object_class = G_OBJECT_CLASS(class);
 	GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(class);
-	
+
 	parent_class = g_type_class_peek_parent (class);
 	object_class->finalize = pidgin_cell_renderer_expander_finalize;
 
 	object_class->get_property = pidgin_cell_renderer_expander_get_property;
 	object_class->set_property = pidgin_cell_renderer_expander_set_property;
-	
+
 	cell_class->get_size = pidgin_cell_renderer_expander_get_size;
 	cell_class->render   = pidgin_cell_renderer_expander_render;
 	cell_class->activate = pidgin_cell_renderer_expander_activate;
-	
+
 	g_object_class_install_property (object_class,
 					 PROP_IS_EXPANDER,
 					 g_param_spec_boolean ("expander-visible",
@@ -162,7 +162,7 @@
 		default:
 			G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, psec);
 			break;
-			
+
 		}
 }
 
@@ -199,19 +199,19 @@
 {
 	gint calc_width;
 	gint calc_height;
-	gint expander_size; 
-	
+	gint expander_size;
+
 	gtk_widget_style_get(widget, "expander-size", &expander_size, NULL);
-	
+
 	calc_width = (gint) cell->xpad * 2 + expander_size;
 	calc_height = (gint) cell->ypad * 2 + expander_size;
-	
+
 	if (width)
 		*width = calc_width;
-	
+
 	if (height)
 		*height = calc_height;
-	
+
 	if (cell_area)
 		{
 			if (x_offset)
@@ -228,7 +228,7 @@
 }
 
 
-static void pidgin_cell_renderer_expander_render (GtkCellRenderer *cell,
+static void pidgin_cell_renderer_expander_render(GtkCellRenderer *cell,
 					       GdkWindow       *window,
 					       GtkWidget       *widget,
 					       GdkRectangle    *background_area,
@@ -237,7 +237,7 @@
 					       guint            flags)
 {
 	PidginCellRendererExpander *cellexpander = (PidginCellRendererExpander *) cell;
-	
+	gboolean set;
 	gint width, height;
 	GtkStateType state;
 
@@ -246,7 +246,7 @@
 
 	width = cell_area->width;
 	height = cell_area->height;
-	
+
 #if GTK_CHECK_VERSION(2,6,0)
 	if (!cell->sensitive)
 		state = GTK_STATE_INSENSITIVE;
@@ -270,8 +270,11 @@
 			    cell_area->x + cell->xpad + (width / 2),
 			    cell_area->y + cell->ypad + (height / 2),
 			    cell->is_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED);
-	if (cell->is_expanded)
-		gtk_paint_hline (widget->style, window, state, NULL, widget, NULL, 0, 
+
+	/* only draw the line if the color isn't set - this prevents a bug where the hline appears only under the expander */
+	g_object_get(cellexpander, "cell-background-set", &set, NULL);
+	if (cell->is_expanded && !set)
+		gtk_paint_hline (widget->style, window, state, NULL, widget, NULL, 0,
 				 widget->allocation.width, cell_area->y + cell_area->height);
 }
 
--- a/pidgin/gtkcellrendererexpander.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkcellrendererexpander.h	Wed Mar 04 16:52:47 2009 +0000
@@ -12,7 +12,7 @@
  * 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
--- a/pidgin/gtkcellrendererprogress.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkcellrendererprogress.c	Wed Mar 04 16:52:47 2009 +0000
@@ -18,14 +18,14 @@
  * 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
  *
  */
 
-/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by 
+/* This is taken largely from GtkCellRenderer[Text|Pixbuf|Toggle] by
  * Jonathon Blandford <jrb@redhat.com> for RedHat, Inc.
  */
 
@@ -76,14 +76,14 @@
 	PROP_TEXT,
 	PROP_SHOW_TEXT
 };
-     
+
 static gpointer parent_class;
 /* static guint progress_cell_renderer_signals [LAST_SIGNAL]; */
 
 GType  pidgin_cell_renderer_progress_get_type (void)
 {
 	static GType cell_progress_type = 0;
-	
+
 	if (!cell_progress_type)
 		{
 			static const GTypeInfo cell_progress_info =
@@ -99,13 +99,13 @@
 					(GInstanceInitFunc) pidgin_cell_renderer_progress_init,
 					NULL		/* value_table */
 				};
-			
+
 			cell_progress_type =
 				g_type_register_static (GTK_TYPE_CELL_RENDERER,
 										"PidginCellRendererProgress",
 										&cell_progress_info, 0);
 		}
-	
+
 	return cell_progress_type;
 }
 
@@ -120,16 +120,16 @@
 {
 	GObjectClass *object_class = G_OBJECT_CLASS(class);
 	GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS(class);
-	
+
 	parent_class = g_type_class_peek_parent (class);
 	object_class->finalize = pidgin_cell_renderer_progress_finalize;
 
 	object_class->get_property = pidgin_cell_renderer_progress_get_property;
 	object_class->set_property = pidgin_cell_renderer_progress_set_property;
-	
+
 	cell_class->get_size = pidgin_cell_renderer_progress_get_size;
 	cell_class->render   = pidgin_cell_renderer_progress_render;
-	
+
 	g_object_class_install_property (object_class,
 					 PROP_PERCENTAGE,
 					 g_param_spec_double ("percentage",
@@ -228,16 +228,16 @@
 {
 	gint calc_width;
 	gint calc_height;
-	
+
 	calc_width = (gint) cell->xpad * 2 + 50;
 	calc_height = (gint) cell->ypad * 2 + 12;
-	
+
 	if (width)
 		*width = calc_width;
-	
+
 	if (height)
 		*height = calc_height;
-	
+
 	if (cell_area)
 		{
 			if (x_offset)
@@ -263,13 +263,13 @@
 					       guint            flags)
 {
 	PidginCellRendererProgress *cellprogress = (PidginCellRendererProgress *) cell;
-	
+
 	gint width, height;
 	GtkStateType state;
 
 	width = cell_area->width;
 	height = cell_area->height;
-	
+
 	if (GTK_WIDGET_HAS_FOCUS (widget))
 		state = GTK_STATE_ACTIVE;
 	else
@@ -280,7 +280,7 @@
 
 	gtk_paint_box (widget->style,
 		       window,
-		       GTK_STATE_NORMAL, GTK_SHADOW_IN, 
+		       GTK_STATE_NORMAL, GTK_SHADOW_IN,
 		       NULL, widget, "trough",
 		       cell_area->x + cell->xpad,
 		       cell_area->y + cell->ypad,
--- a/pidgin/gtkcellrendererprogress.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkcellrendererprogress.h	Wed Mar 04 16:52:47 2009 +0000
@@ -12,7 +12,7 @@
  * 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
--- a/pidgin/gtkcellview.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkcellview.c	Wed Mar 04 16:52:47 2009 +0000
@@ -463,14 +463,14 @@
   area = widget->allocation;
 
   /* we draw on our very own window, initialize x and y to zero */
-  area.x = widget->allocation.x + (rtl ? widget->allocation.width : 0); 
+  area.x = widget->allocation.x + (rtl ? widget->allocation.width : 0);
   area.y = widget->allocation.y;
 
   if (GTK_WIDGET_STATE (widget) == GTK_STATE_PRELIGHT)
     state = GTK_CELL_RENDERER_PRELIT;
   else
     state = 0;
-      
+
   /* PACK_START */
   for (i = cellview->priv->cell_list; i; i = i->next)
     {
@@ -483,7 +483,7 @@
         continue;
 
       area.width = info->real_width;
-      if (rtl)                                             
+      if (rtl)
          area.x -= area.width;
 
       gtk_cell_renderer_render (info->cell,
@@ -492,11 +492,11 @@
                                 /* FIXME! */
                                 &area, &area, &event->area, state);
 
-      if (!rtl)                                           
+      if (!rtl)
          area.x += info->real_width;
     }
 
-   area.x = rtl ? widget->allocation.x : (widget->allocation.x + widget->allocation.width);  
+   area.x = rtl ? widget->allocation.x : (widget->allocation.x + widget->allocation.width);
 
   /* PACK_END */
   for (i = cellview->priv->cell_list; i; i = i->next)
@@ -511,7 +511,7 @@
 
       area.width = info->real_width;
       if (!rtl)
-         area.x -= area.width;   
+         area.x -= area.width;
 
       gtk_cell_renderer_render (info->cell,
                                 widget->window,
@@ -550,7 +550,7 @@
   GtkTreePath *path;
 
   g_return_if_fail (cellview->priv->displayed_row != NULL);
-  
+
   path = gtk_tree_row_reference_get_path (cellview->priv->displayed_row);
   gtk_tree_model_get_iter (cellview->priv->model, &iter, path);
   gtk_tree_path_free (path);
@@ -666,7 +666,7 @@
       gtk_cell_view_cell_layout_clear_attributes (layout, info->cell);
       g_object_unref (G_OBJECT (info->cell));
       g_free (info);
-      cellview->priv->cell_list = g_list_delete_link (cellview->priv->cell_list, 
+      cellview->priv->cell_list = g_list_delete_link (cellview->priv->cell_list,
 						      cellview->priv->cell_list);
     }
 }
@@ -719,7 +719,7 @@
 	  g_free (list->data);
 	  list = list->next->next;
 	}
-      
+
       g_slist_free (info->attributes);
       info->attributes = NULL;
     }
@@ -905,7 +905,7 @@
  * gtk_cell_view_set_displayed_row:
  * @cell_view: a #GtkCellView
  * @path: a #GtkTreePath or %NULL to unset.
- * 
+ *
  * Sets the row of the model that is currently displayed
  * by the #GtkCellView. If the path is unset, then the
  * contents of the cellview "stick" at their last value;
--- a/pidgin/gtkconv.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkconv.c	Wed Mar 04 16:52:47 2009 +0000
@@ -201,11 +201,11 @@
 
 	switch (purple_conversation_get_type(conv)) {
 		case PURPLE_CONV_TYPE_IM:
-			node = (PurpleBlistNode*)purple_find_buddy(conv->account, conv->name);
+			node = PURPLE_BLIST_NODE(purple_find_buddy(conv->account, conv->name));
 			node = node ? node->parent : NULL;
 			break;
 		case PURPLE_CONV_TYPE_CHAT:
-			node = (PurpleBlistNode*)purple_blist_find_chat(conv->account, conv->name);
+			node = PURPLE_BLIST_NODE(purple_blist_find_chat(conv->account, conv->name));
 			break;
 		default:
 			break;
@@ -1395,7 +1395,7 @@
 
 	if (logging == purple_conversation_is_logging(conv))
 		return;
-	
+
 	node = get_conversation_blist_node(conv);
 
 	if (logging)
@@ -1835,7 +1835,7 @@
 	gtk_tree_selection_select_path(GTK_TREE_SELECTION(
 			gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkchat->list))), path);
 	gtk_tree_view_set_cursor(GTK_TREE_VIEW(gtkchat->list),
-							 path, NULL, FALSE); 
+							 path, NULL, FALSE);
 	gtk_widget_grab_focus(GTK_WIDGET(gtkchat->list));
 
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
@@ -1867,7 +1867,7 @@
 	GtkTreeIter iter;
 	GtkTreeModel *model;
 	gchar *who;
-	
+
 	model = gtk_tree_view_get_model(GTK_TREE_VIEW(list));
 
 	gtk_tree_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
@@ -2061,7 +2061,7 @@
 	gtkconv  = (PidginConversation *)data;
 	conv     = gtkconv->active_conv;
 	win      = gtkconv->win;
-	
+
 	if (conv_keypress_common(gtkconv, event))
 		return TRUE;
 
@@ -2519,7 +2519,7 @@
 			if (ops && ops->update)
 				ops->update(NULL, (PurpleBlistNode*)b);
 
-			/* XXX Seanegan: We really need a util function to return a pixbuf for a Presence to avoid all this switching */	
+			/* XXX Seanegan: We really need a util function to return a pixbuf for a Presence to avoid all this switching */
 			if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY))
 				status = pidgin_create_status_icon(PURPLE_STATUS_AWAY, parent, icon_size);
 			else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY))
@@ -2545,7 +2545,7 @@
 			status = gtk_widget_render_icon (parent, PIDGIN_STOCK_STATUS_CHAT,
 					size, "GtkWidget");
 		}
-	}	
+	}
 	return status;
 }
 
@@ -2588,11 +2588,11 @@
 	gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status);
 	gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status);
 
-	gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), 
+	gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
 			&(gtkconv->infopane_iter),
 			CONV_ICON_COLUMN, infopane_status, -1);
 
-	gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), 
+	gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model),
 			&(gtkconv->infopane_iter),
 			CONV_EMBLEM_COLUMN, emblem, -1);
 	if (emblem)
@@ -3853,7 +3853,7 @@
 			{
 				PurpleBlistNode *node;
 
-				node = (PurpleBlistNode *) purple_buddy_get_contact((PurpleBuddy *)l->data);
+				node = PURPLE_BLIST_NODE(purple_buddy_get_contact(PURPLE_BUDDY(l->data)));
 
 				for (node = node->child; node != NULL; node = node->next)
 				{
@@ -4802,7 +4802,7 @@
 
 	gtkconv->infopane = gtk_cell_view_new();
 	gtkconv->infopane_model = gtk_list_store_new(CONV_NUM_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING, GDK_TYPE_PIXBUF, GDK_TYPE_PIXBUF);
-	gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane), 
+	gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane),
 				GTK_TREE_MODEL(gtkconv->infopane_model));
 	g_object_unref(gtkconv->infopane_model);
 	gtk_list_store_append(gtkconv->infopane_model, &(gtkconv->infopane_iter));
@@ -5036,9 +5036,9 @@
 static PidginConversation *
 pidgin_conv_find_gtkconv(PurpleConversation * conv)
 {
-	PurpleBuddy *bud = purple_find_buddy(conv->account, conv->name), *b;
+	PurpleBuddy *bud = purple_find_buddy(conv->account, conv->name);
 	PurpleContact *c;
-	PurpleBlistNode *cn;
+	PurpleBlistNode *cn, *bn;
 
 	if (!bud)
 		return NULL;
@@ -5046,8 +5046,9 @@
 	if (!(c = purple_buddy_get_contact(bud)))
 		return NULL;
 
-	cn = (PurpleBlistNode *)c;
-	for (b = (PurpleBuddy *)cn->child; b; b = (PurpleBuddy *) ((PurpleBlistNode *)b)->next) {
+	cn = PURPLE_BLIST_NODE(c);
+	for (bn = purple_blist_node_get_first_child(cn); bn; bn = purple_blist_node_get_sibling_next(bn)) {
+		PurpleBuddy *b = PURPLE_BUDDY(bn);
 		PurpleConversation *conv;
 		if ((conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, b->name, b->account))) {
 			if (conv->ui_data)
@@ -5497,7 +5498,7 @@
 	gtkconv->newday = mktime(tm);
 }
 
-/* Detect string direction and encapsulate the string in RLE/LRE/PDF unicode characters 
+/* Detect string direction and encapsulate the string in RLE/LRE/PDF unicode characters
    str - pointer to string (string is re-allocated and the pointer updated) */
 static void
 str_embed_direction_chars(char **str)
@@ -5534,14 +5535,14 @@
 }
 
 /* Returns true if the given HTML contains RTL text */
-static gboolean 
+static gboolean
 html_is_rtl(const char *html)
 {
 	GData *attributes;
 	const gchar *start, *end;
 	gboolean res = FALSE;
 
-	if (purple_markup_find_tag("span", html, &start, &end, &attributes)) 
+	if (purple_markup_find_tag("span", html, &start, &end, &attributes))
 	{
 		/* tmp is a member of attributes and is free with g_datalist_clear call */
 		const char *tmp = g_datalist_get_data(&attributes, "dir");
@@ -6465,10 +6466,10 @@
 			PurpleBuddy *buddy = purple_find_buddy(conv->account, conv->name);
 			window_icon =
 				gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
-		
+
 			if (buddy &&  !PURPLE_BUDDY_IS_ONLINE(buddy))
 				gdk_pixbuf_saturate_and_pixelate(window_icon, window_icon, 0.0, FALSE);
-			
+
 			g_object_ref(window_icon);
 			l = g_list_append(l, window_icon);
 		} else {
@@ -6661,7 +6662,7 @@
 			pango_attr_list_unref(list);
 		} else
 			gtk_label_set_attributes(GTK_LABEL(gtkconv->tab_label), NULL);
-		
+
 		if (pidgin_conv_window_is_active_conversation(conv))
 			update_typing_icon(gtkconv);
 
@@ -7233,7 +7234,7 @@
 		PurpleConversation *conv = l->data;
 		if (!PIDGIN_CONVERSATION(conv))
 			continue;
-		if (GPOINTER_TO_INT(value)) 
+		if (GPOINTER_TO_INT(value))
 			gtk_widget_show(PIDGIN_CONVERSATION(conv)->infopane_hbox);
 		else
 			gtk_widget_hide(PIDGIN_CONVERSATION(conv)->infopane_hbox);
@@ -7643,7 +7644,7 @@
 	list = purple_conversation_get_message_history(conv);
 	if (list) {
 		switch (purple_conversation_get_type(conv)) {
-			case PURPLE_CONV_TYPE_IM: 
+			case PURPLE_CONV_TYPE_IM:
 			{
 				GList *convs;
 				list = g_list_copy(list);
@@ -8409,7 +8410,7 @@
 								    G_CALLBACK(notebook_leave_cb), gtkconv->win);
 		return FALSE;
 	}
-	
+
 	if (e->button == 3) {
 		/* Right click was pressed. Popup the context menu. */
 		GtkWidget *menu = gtk_menu_new(), *sub;
@@ -8435,7 +8436,7 @@
 	}
 	return FALSE;
 }
- 
+
 static gboolean
 notebook_press_cb(GtkWidget *widget, GdkEventButton *e, PidginWindow *win)
 {
@@ -9015,7 +9016,7 @@
 
 static gboolean gtk_conv_configure_cb(GtkWidget *w, GdkEventConfigure *event, gpointer data) {
 	int x, y;
-	
+
 	if (GTK_WIDGET_VISIBLE(w))
 		gtk_window_get_position(GTK_WINDOW(w), &x, &y);
 	else
@@ -9025,7 +9026,7 @@
 	* when the window is being maximized */
 	if (gdk_window_get_state(w->window) & GDK_WINDOW_STATE_MAXIMIZED)
 		return FALSE;
-	
+
 	/* don't save off-screen positioning */
 	if (x + event->width < 0 ||
 	    y + event->height < 0 ||
@@ -9041,7 +9042,7 @@
 
 	/* continue to handle event normally */
 	return FALSE;
-						
+
 }
 
 static void
@@ -9122,7 +9123,7 @@
 	/* Intercept keystrokes from the menu items */
 	g_signal_connect(G_OBJECT(win->window), "key_press_event",
 					 G_CALLBACK(window_keypress_cb), win);
-	
+
 
 	/* Create the notebook. */
 	win->notebook = gtk_notebook_new();
@@ -9284,7 +9285,7 @@
 	win->gtkconvs = g_list_append(win->gtkconvs, gtkconv);
 	gtkconv->win = win;
 
-	if (win->gtkconvs && win->gtkconvs->next && win->gtkconvs->next->next == NULL) 
+	if (win->gtkconvs && win->gtkconvs->next && win->gtkconvs->next->next == NULL)
 		pidgin_conv_tab_pack(win, ((PidginConversation*)win->gtkconvs->data));
 
 
@@ -9443,11 +9444,11 @@
 		gtk_notebook_set_tab_label(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, ebox);
 	}
 
-	gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, 
-					   !tabs_side && !angle, 
+	gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont,
+					   !tabs_side && !angle,
 					   TRUE, GTK_PACK_START);
 
-	if (pidgin_conv_window_get_gtkconv_count(win) == 1) 
+	if (pidgin_conv_window_get_gtkconv_count(win) == 1)
 		gtk_notebook_set_show_tabs(GTK_NOTEBOOK(win->notebook),
 					   purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/tabs") &&
                                            (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/im/show_buddy_icons") ||
@@ -9658,7 +9659,7 @@
 	if (win == NULL) {
 		win = pidgin_conv_window_new();
 
-		g_signal_connect(G_OBJECT(win->window), "configure_event", 
+		g_signal_connect(G_OBJECT(win->window), "configure_event",
 				G_CALLBACK(gtk_conv_configure_cb), NULL);
 
 		pidgin_conv_window_add_gtkconv(win, conv);
@@ -9673,7 +9674,7 @@
 conv_placement_last_created_win_type_configured_cb(GtkWidget *w,
 		GdkEventConfigure *event, PidginConversation *conv)
 {
-	int x, y;	
+	int x, y;
 	PurpleConversationType type = purple_conversation_get_type(conv->active_conv);
 	GList *all;
 
@@ -9686,7 +9687,7 @@
 	* when the window is being maximized */
 	if (gdk_window_get_state(w->window) & GDK_WINDOW_STATE_MAXIMIZED)
 		return FALSE;
-	
+
 	/* don't save off-screen positioning */
 	if (x + event->width < 0 ||
 	    y + event->height < 0 ||
@@ -9740,11 +9741,11 @@
 				purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/width"),
 				purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/chat/height"));
 		}
-				
+
 		pidgin_conv_window_add_gtkconv(win, conv);
 		pidgin_conv_window_show(win);
 
-		g_signal_connect(G_OBJECT(win->window), "configure_event", 
+		g_signal_connect(G_OBJECT(win->window), "configure_event",
 				G_CALLBACK(conv_placement_last_created_win_type_configured_cb), conv);
 	} else
 		pidgin_conv_window_add_gtkconv(win, conv);
@@ -9758,7 +9759,7 @@
 
 	win = pidgin_conv_window_new();
 
-	g_signal_connect(G_OBJECT(win->window), "configure_event", 
+	g_signal_connect(G_OBJECT(win->window), "configure_event",
 			G_CALLBACK(gtk_conv_configure_cb), NULL);
 
 	pidgin_conv_window_add_gtkconv(win, conv);
--- a/pidgin/gtkdebug.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkdebug.c	Wed Mar 04 16:52:47 2009 +0000
@@ -769,7 +769,7 @@
 		win->filter =
 			gtk_toolbar_append_element(GTK_TOOLBAR(toolbar),
 									   GTK_TOOLBAR_CHILD_TOGGLEBUTTON,
-									   NULL, _("Filter"), _("Filter"), 
+									   NULL, _("Filter"), _("Filter"),
 									   NULL, NULL,
 									   G_CALLBACK(regex_filter_toggled_cb),
 									   win);
@@ -821,7 +821,7 @@
 		                           GTK_TOOLBAR_CHILD_WIDGET, gtk_label_new(_("Level ")),
 		                           NULL, _("Select the debug filter level."),
 		                           NULL, NULL, NULL, NULL);
-		
+
 		win->filterlevel = gtk_combo_box_new_text();
 		gtk_toolbar_append_element(GTK_TOOLBAR(toolbar),
 		                           GTK_TOOLBAR_CHILD_WIDGET, win->filterlevel,
--- a/pidgin/gtkdialogs.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkdialogs.c	Wed Mar 04 16:52:47 2009 +0000
@@ -100,7 +100,7 @@
 
 /* Order: Alphabetical by Last Name */
 static const struct developer patch_writers[] = {
-	{"Paul Aurich", NULL, NULL },
+	{"Paul 'darkrain42' Aurich", NULL, NULL },
 	{"Marcus 'malu' Lundblad", NULL, NULL},
 	{"Dennis 'EvilDennisR' Ristuccia",	N_("Senior Contributor/QA"),	NULL},
 	{"Peter 'Fmoo' Ruibal",		NULL,	NULL},
@@ -188,6 +188,7 @@
 	{N_("Italian"),             "it", "Claudio Satriano", "satriano@na.infn.it"},
 	{N_("Japanese"),            "ja", "Takashi Aihana", "aihana@gnome.gr.jp"},
 	{N_("Georgian"),            "ka", N_("Ubuntu Georgian Translators"), "alexander.didebulidze@stusta.mhn.de"},
+	{"Khmer",                   "km", "Khoem Sokhem", "khoemsokhem@khmeros.info"},
 	{N_("Kannada"),             "kn", N_("Kannada Translation team"), "translation@sampada.info"},
 	{N_("Korean"),              "ko", "Sushizang", "sushizang@empal.com"},
 	{N_("Kurdish"),             "ku", "Erdal Ronahi", "erdal.ronahi@gmail.com"},
@@ -349,7 +350,7 @@
 }
 
 #if 0
-/* This function puts the version number onto the pixmap we use in the 'about' 
+/* This function puts the version number onto the pixmap we use in the 'about'
  * screen in Pidgin. */
 static void
 pidgin_logo_versionize(GdkPixbuf **original, GtkWidget *widget) {
@@ -492,7 +493,7 @@
 						   _("Retired Crazy Patch Writers"));
 	add_developers(str, retired_patch_writers);
 	g_string_append(str, "<BR/>");
-			
+
 	/* Current Translators */
 	g_string_append_printf(str, "<FONT SIZE=\"4\">%s:</FONT><BR/>",
 						   _("Current Translators"));
@@ -1066,8 +1067,8 @@
 	g_return_if_fail(contact != NULL);
 	g_return_if_fail(buddy != NULL);
 
-	if (((PurpleBlistNode*)contact)->child == (PurpleBlistNode*)buddy &&
-			!((PurpleBlistNode*)buddy)->next) {
+	if (PURPLE_BLIST_NODE(contact)->child == PURPLE_BLIST_NODE(buddy) &&
+	    PURPLE_BLIST_NODE(buddy)->next == NULL) {
 		pidgin_dialogs_remove_buddy(buddy);
 	} else {
 		gchar *text;
@@ -1121,7 +1122,7 @@
 	ggp = g_new(struct _PidginGroupMergeObject, 1);
 	ggp->parent = source;
 	ggp->new_name = g_strdup(new_name);
-	
+
 	purple_request_action(source, NULL, _("Merge Groups"), text, 0,
 			NULL, NULL, NULL,
 			ggp, 2,
--- a/pidgin/gtkdnd-hints.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkdnd-hints.c	Wed Mar 04 16:52:47 2009 +0000
@@ -46,7 +46,7 @@
 /**
  * Info about each hint widget. See DndHintWindowId enum.
  */
-static HintWindowInfo hint_windows[] = { 
+static HintWindowInfo hint_windows[] = {
 	{ NULL, "arrow-up.xpm",   -13/2,     0 },
 	{ NULL, "arrow-down.xpm", -13/2,   -16 },
 	{ NULL, "arrow-left.xpm",     0, -13/2 },
@@ -139,7 +139,7 @@
 		dnd_hints_hide(i);
 }
 
-void 
+void
 dnd_hints_hide(DndHintWindowId i)
 {
 	GtkWidget *w = hint_windows[i].widget;
@@ -148,7 +148,7 @@
 		gtk_widget_hide(w);
 }
 
-void 
+void
 dnd_hints_show(DndHintWindowId id, gint x, gint y)
 {
 	GtkWidget *w;
@@ -165,7 +165,7 @@
 	}
 }
 
-void 
+void
 dnd_hints_show_relative(DndHintWindowId id, GtkWidget *widget,
 						DndHintPosition horiz, DndHintPosition vert)
 {
--- a/pidgin/gtkdocklet-x11.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkdocklet-x11.c	Wed Mar 04 16:52:47 2009 +0000
@@ -5,7 +5,7 @@
  * Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com>
  * Inspired by a similar plugin by:
  *  John (J5) Palmieri <johnp@martianrock.com>
- * 
+ *
  * 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
@@ -15,7 +15,7 @@
  * 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
@@ -59,7 +59,7 @@
 docklet_x11_embedded_cb(GtkWidget *widget, void *data)
 {
 	purple_debug(PURPLE_DEBUG_INFO, "docklet", "embedded\n");
-	
+
 	g_source_remove(embed_timeout);
 	embed_timeout = 0;
 	pidgin_docklet_embedded();
@@ -211,9 +211,9 @@
 
 	if (embed_timeout)
 		g_source_remove(embed_timeout);
-	
+
 	pidgin_docklet_remove();
-	
+
 	g_signal_handlers_disconnect_by_func(G_OBJECT(docklet), G_CALLBACK(docklet_x11_destroyed_cb), NULL);
 	gtk_widget_destroy(GTK_WIDGET(docklet));
 
@@ -239,7 +239,7 @@
 	 */
 	purple_debug_info("docklet", "failed to embed within timeout\n");
 	pidgin_docklet_remove();
-	
+
 	return FALSE;
 }
 
--- a/pidgin/gtkdocklet.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkdocklet.h	Wed Mar 04 16:52:47 2009 +0000
@@ -1,11 +1,11 @@
-/* 
+/*
  * System tray icon (aka docklet) plugin for Purple
- * 
+ *
  * Copyright (C) 2002-3 Robert McQueen <robot101@debian.org>
  * Copyright (C) 2003 Herman Bloggs <hermanator12002@yahoo.com>
  * Inspired by a similar plugin by:
  *  John (J5) Palmieri <johnp@martianrock.com>
- * 
+ *
  * 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
@@ -15,7 +15,7 @@
  * 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
--- a/pidgin/gtkexpander.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkexpander.c	Wed Mar 04 16:52:47 2009 +0000
@@ -63,7 +63,7 @@
 
   guint             expanded : 1;
   guint             use_underline : 1;
-  guint             use_markup : 1; 
+  guint             use_markup : 1;
   guint             button_down : 1;
   guint             prelight : 1;
 };
@@ -129,7 +129,7 @@
 gtk_expander_get_type (void)
 {
   static GType expander_type = 0;
-  
+
   if (!expander_type)
     {
       static const GTypeInfo expander_info =
@@ -144,12 +144,12 @@
 	0,		/* n_preallocs */
 	(GInstanceInitFunc) gtk_expander_init,
       };
-      
+
       expander_type = g_type_register_static (GTK_TYPE_BIN,
 					      "GtkExpander",
 					      &expander_info, 0);
     }
-  
+
   return expander_type;
 }
 
@@ -314,7 +314,7 @@
 			   GParamSpec   *pspec)
 {
   GtkExpander *expander = GTK_EXPANDER (object);
-                                                                                                             
+
   switch (prop_id)
     {
     case PROP_EXPANDED:
@@ -382,7 +382,7 @@
 gtk_expander_destroy (GtkObject *object)
 {
   GtkExpanderPrivate *priv = GTK_EXPANDER (object)->priv;
-  
+
   if (priv->animation_timeout)
     {
       g_source_remove (priv->animation_timeout);
@@ -407,7 +407,7 @@
   border_width = GTK_CONTAINER (widget)->border_width;
 
   get_expander_bounds (GTK_EXPANDER (widget), &expander_rect);
-  
+
   attributes.window_type = GDK_WINDOW_CHILD;
   attributes.x = widget->allocation.x + border_width;
   attributes.y = expander_rect.y;
@@ -831,7 +831,7 @@
 			NULL);
 
   ltr = gtk_widget_get_direction (widget) != GTK_TEXT_DIR_RTL;
-  
+
   x = widget->allocation.x + border_width;
   y = widget->allocation.y + border_width;
 
@@ -853,7 +853,7 @@
       width += expander_size + 2 * expander_spacing;
       height = MAX (height, expander_size + 2 * expander_spacing);
     }
-      
+
   width  += 2 * focus_pad + 2 * focus_width;
   height += 2 * focus_pad + 2 * focus_width;
 
@@ -1115,16 +1115,16 @@
 		    GtkDirectionType  direction)
 {
   GtkExpander *expander = GTK_EXPANDER (widget);
-  
+
   if (!focus_current_site (expander, direction))
     {
       GtkWidget *old_focus_child;
       gboolean widget_is_focus;
       FocusSite site = FOCUS_NONE;
-      
+
       widget_is_focus = gtk_widget_is_focus (widget);
       old_focus_child = GTK_CONTAINER (widget)->focus_child;
-      
+
       if (old_focus_child && old_focus_child == expander->priv->label_widget)
 	site = FOCUS_LABEL;
       else if (old_focus_child)
@@ -1192,9 +1192,9 @@
 /**
  * gtk_expander_new:
  * @label: the text of the label
- * 
+ *
  * Creates a new expander using @label as the text of the label.
- * 
+ *
  * Return value: a new #GtkExpander widget.
  *
  * Since: 2.4
@@ -1209,14 +1209,14 @@
  * gtk_expander_new_with_mnemonic:
  * @label: the text of the label with an underscore in front of the
  *         mnemonic character
- * 
+ *
  * Creates a new expander using @label as the text of the label.
  * If characters in @label are preceded by an underscore, they are underlined.
- * If you need a literal underscore character in a label, use '__' (two 
- * underscores). The first underlined character represents a keyboard 
+ * If you need a literal underscore character in a label, use '__' (two
+ * underscores). The first underlined character represents a keyboard
  * accelerator called a mnemonic.
  * Pressing Alt and that key activates the button.
- * 
+ *
  * Return value: a new #GtkExpander widget.
  *
  * Since: 2.4
@@ -1328,7 +1328,7 @@
 	{
 	  gtk_expander_start_animation (expander);
 	}
-      else 
+      else
 	{
 	  priv->expander_style = expanded ? GTK_EXPANDER_EXPANDED :
 					    GTK_EXPANDER_COLLAPSED;
@@ -1643,7 +1643,7 @@
  * gtk_expander_set_label_widget().
  *
  * Return value: the label widget, or %NULL if there is none.
- * 
+ *
  * Since: 2.4
  **/
 GtkWidget *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkicon-theme-loader.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,111 @@
+/*
+ * PidginIconThemeLoader for 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 "gtkicon-theme-loader.h"
+#include "gtkstatus-icon-theme.h"
+
+#include "xmlnode.h"
+
+/*****************************************************************************
+ * Icon Theme Builder
+ *****************************************************************************/
+
+static PurpleTheme *
+pidgin_icon_loader_build(const gchar *dir)
+{
+	xmlnode *root_node = NULL, *sub_node;
+	gchar *filename_full, *data;
+	PidginIconTheme *theme = NULL;
+
+	/* Find the theme file */
+	g_return_val_if_fail(dir != NULL, NULL);
+	filename_full = g_build_filename(dir, "theme.xml", NULL);
+
+	if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR))
+		root_node = xmlnode_from_file(dir, "theme.xml", "sound themes", "sound-theme-loader");
+
+	g_free(filename_full);
+	g_return_val_if_fail(root_node != NULL, NULL);
+
+	/* Parse the tree */
+	sub_node = xmlnode_get_child(root_node, "description");
+	data = xmlnode_get_data(sub_node);
+
+	if (xmlnode_get_attrib(root_node, "name") != NULL) {
+		theme = g_object_new(PIDGIN_TYPE_STATUS_ICON_THEME,
+				"type", "status-icon",
+				"name", xmlnode_get_attrib(root_node, "name"),
+				"author", xmlnode_get_attrib(root_node, "author"),
+				"image", xmlnode_get_attrib(root_node, "image"),
+				"directory", dir,
+				"description", data, NULL);
+
+		sub_node = xmlnode_get_child(root_node, "icon");
+
+		while (sub_node) {
+			pidgin_icon_theme_set_icon(theme,
+					xmlnode_get_attrib(sub_node, "id"),
+					xmlnode_get_attrib(sub_node, "file"));
+			sub_node = xmlnode_get_next_twin(sub_node);
+		}
+	}
+
+	xmlnode_free(root_node);
+	g_free(data);
+	return PURPLE_THEME(theme);
+}
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_icon_theme_loader_class_init (PidginIconThemeLoaderClass *klass)
+{
+	PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass);
+
+	loader_klass->purple_theme_loader_build = pidgin_icon_loader_build;
+}
+
+
+GType
+pidgin_icon_theme_loader_get_type (void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static const GTypeInfo info = {
+			sizeof(PidginIconThemeLoaderClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			(GClassInitFunc)pidgin_icon_theme_loader_class_init, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof (PidginIconThemeLoader),
+			0, /* n_preallocs */
+			NULL, /* instance_init */
+			NULL, /* value table */
+		};
+		type = g_type_register_static (PURPLE_TYPE_THEME_LOADER,
+				"PidginIconThemeLoader", &info, 0);
+	}
+	return type;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkicon-theme-loader.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,71 @@
+/**
+ * @file gtkicon-loader.h  Pidgin Icon Theme Loader Class API
+ */
+
+/* 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 PIDGIN_ICON_THEME_LOADER_H
+#define PIDGIN_ICON_THEME_LOADER_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme-loader.h"
+
+/**
+ * A pidgin icon theme loader. Extends PurpleThemeLoader (theme-loader.h)
+ * This is a class designed to build icon themes
+ *
+ * PidginIconThemeLoader is a GObject.
+ */
+typedef struct _PidginIconThemeLoader       PidginIconThemeLoader;
+typedef struct _PidginIconThemeLoaderClass  PidginIconThemeLoaderClass;
+
+#define PIDGIN_TYPE_ICON_THEME_LOADER            (pidgin_icon_theme_loader_get_type ())
+#define PIDGIN_ICON_THEME_LOADER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_ICON_THEME_LOADER, PidginIconThemeLoader))
+#define PIDGIN_ICON_THEME_LOADER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_ICON_THEME_LOADER, PidginIconThemeLoaderClass))
+#define PIDGIN_IS_ICON_THEME_LOADER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_ICON_THEME_LOADER))
+#define PIDGIN_IS_ICON_THEME_LOADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_ICON_THEME_LOADER))
+#define PIDGIN_ICON_THEME_LOADER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_ICON_THEME_LOADER, PidginIconThemeLoaderClass))
+
+struct _PidginIconThemeLoader
+{
+	PurpleThemeLoader parent;
+};
+
+struct _PidginIconThemeLoaderClass
+{
+	PurpleThemeLoaderClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Pidgin Icon Theme-Loader API                                    */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_icon_theme_loader_get_type(void);
+
+G_END_DECLS
+#endif /* PIDGIN_ICON_THEME_LOADER_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkicon-theme.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,142 @@
+/*
+ * Icon Themes for 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 "gtkicon-theme.h"
+#include "pidginstock.h"
+
+#include <gtk/gtk.h>
+
+#define PIDGIN_ICON_THEME_GET_PRIVATE(Gobject) \
+	((PidginIconThemePrivate *) ((PIDGIN_ICON_THEME(Gobject))->priv))
+
+/******************************************************************************
+ * Structs
+ *****************************************************************************/
+
+typedef struct {
+	/* used to store filenames of diffrent icons */
+	GHashTable *icon_files;
+} PidginIconThemePrivate;
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_icon_theme_init(GTypeInstance *instance,
+		gpointer klass)
+{
+	PidginIconThemePrivate *priv;
+
+	(PIDGIN_ICON_THEME(instance))->priv = g_new0(PidginIconThemePrivate, 1);
+
+	priv = PIDGIN_ICON_THEME_GET_PRIVATE(instance);
+
+	priv->icon_files = g_hash_table_new_full(g_str_hash,
+			g_str_equal, g_free, g_free);
+}
+
+static void
+pidgin_icon_theme_finalize(GObject *obj)
+{
+	PidginIconThemePrivate *priv;
+
+	priv = PIDGIN_ICON_THEME_GET_PRIVATE(obj);
+
+	g_hash_table_destroy(priv->icon_files);
+	g_free(priv);
+
+	parent_class->finalize(obj);
+}
+
+static void
+pidgin_icon_theme_class_init(PidginIconThemeClass *klass)
+{
+	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+
+	parent_class = g_type_class_peek_parent(klass);
+
+	obj_class->finalize = pidgin_icon_theme_finalize;
+}
+
+GType
+pidgin_icon_theme_get_type(void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static const GTypeInfo info = {
+			sizeof(PidginIconThemeClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			(GClassInitFunc)pidgin_icon_theme_class_init, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof(PidginIconTheme),
+			0, /* n_preallocs */
+			pidgin_icon_theme_init, /* instance_init */
+			NULL, /* value table */
+		};
+		type = g_type_register_static(PURPLE_TYPE_THEME,
+				"PidginIconTheme", &info, G_TYPE_FLAG_ABSTRACT);
+	}
+	return type;
+}
+
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+const gchar *
+pidgin_icon_theme_get_icon(PidginIconTheme *theme,
+		const gchar *id)
+{
+	PidginIconThemePrivate *priv;
+
+	g_return_val_if_fail(PIDGIN_IS_ICON_THEME(theme), NULL);
+
+	priv = PIDGIN_ICON_THEME_GET_PRIVATE(theme);
+
+	return g_hash_table_lookup(priv->icon_files, id);
+}
+
+void
+pidgin_icon_theme_set_icon(PidginIconTheme *theme,
+		const gchar *id,
+		const gchar *filename)
+{
+	PidginIconThemePrivate *priv;
+	g_return_if_fail(PIDGIN_IS_ICON_THEME(theme));
+
+	priv = PIDGIN_ICON_THEME_GET_PRIVATE(theme);
+
+	if (filename != NULL)
+		g_hash_table_replace(priv->icon_files,
+				g_strdup(id), g_strdup(filename));
+	else
+		g_hash_table_remove(priv->icon_files, id);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkicon-theme.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,93 @@
+/**
+ * @file icon-theme.h  Pidgin Icon Theme  Class API
+ */
+
+/* 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_ICON_THEME_H
+#define PIDGIN_ICON_THEME_H
+
+#include <glib.h>
+#include <glib-object.h>
+#include "theme.h"
+
+/**
+ * extends PurpleTheme (theme.h)
+ * A pidgin icon theme.
+ * This object represents a Pidgin icon theme.
+ *
+ * PidginIconTheme is a PurpleTheme Object.
+ */
+typedef struct _PidginIconTheme        PidginIconTheme;
+typedef struct _PidginIconThemeClass   PidginIconThemeClass;
+
+#define PIDGIN_TYPE_ICON_THEME            (pidgin_icon_theme_get_type ())
+#define PIDGIN_ICON_THEME(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_ICON_THEME, PidginIconTheme))
+#define PIDGIN_ICON_THEME_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_ICON_THEME, PidginIconThemeClass))
+#define PIDGIN_IS_ICON_THEME(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_ICON_THEME))
+#define PIDGIN_IS_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_ICON_THEME))
+#define PIDGIN_ICON_THEME_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_ICON_THEME, PidginIconThemeClass))
+
+struct _PidginIconTheme
+{
+	PurpleTheme parent;
+	gpointer priv;
+};
+
+struct _PidginIconThemeClass
+{
+	PurpleThemeClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Pidgin Icon Theme API                                          */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_icon_theme_get_type(void);
+
+/**
+ * Returns a copy of the filename for the icon event or NULL if it is not set
+ *
+ * @param event		the pidgin icon event to look up
+ *
+ * @returns the filename of the icon event
+ */
+const gchar *pidgin_icon_theme_get_icon(PidginIconTheme *theme,
+		const gchar *event);
+
+/**
+ * Sets the filename for a given icon id, setting the icon to NULL will remove the icon from the theme
+ *
+ * @param icon_id		a string representing what the icon is to be used for
+ * @param filename		the name of the file to be used for the given id
+ */
+void pidgin_icon_theme_set_icon(PidginIconTheme *theme,
+		const gchar *icon_id,
+		const gchar *filename);
+
+G_END_DECLS
+#endif /* PIDGIN_ICON_THEME_H */
--- a/pidgin/gtkimhtml.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkimhtml.c	Wed Mar 04 16:52:47 2009 +0000
@@ -88,6 +88,22 @@
 	GtkTextMark *mark;
 };
 
+struct _GtkIMHtmlLink
+{
+	GtkIMHtml *imhtml;
+	gchar *url;
+	GtkTextTag *tag;
+};
+
+typedef struct _GtkIMHtmlProtocol
+{
+	char *name;
+	int length;
+
+	gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link);
+	gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu);
+} GtkIMHtmlProtocol;
+
 static gboolean
 gtk_text_view_drag_motion (GtkWidget        *widget,
                            GdkDragContext   *context,
@@ -115,6 +131,9 @@
 static void imhtml_font_grow(GtkIMHtml *imhtml);
 static void imhtml_font_shrink(GtkIMHtml *imhtml);
 static void imhtml_clear_formatting(GtkIMHtml *imhtml);
+static int gtk_imhtml_is_protocol(const char *text);
+static void gtk_imhtml_activate_tag(GtkIMHtml *imhtml, GtkTextTag *tag);
+static void gtk_imhtml_link_destroy(GtkIMHtmlLink *link);
 
 /* POINT_SIZE converts from AIM font sizes to a point size scale factor. */
 #define MAX_FONT_SIZE 7
@@ -349,7 +368,7 @@
 			g_string_free (t->values, TRUE);
 			g_free (t->children);
 		}
-		
+
 		g_free (t);
 	}
 }
@@ -819,7 +838,7 @@
 			                                      &tag_area.x,
 			                                      &tag_area.y);
 
-		
+
 			rect.height = tag_area.y + tag_area.height - rect.y
 				+ gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(widget))
 				+ gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(widget));
@@ -1106,8 +1125,8 @@
 	GtkTextIter iter;
 	GtkIMHtmlOptions flags = plaintext ? GTK_IMHTML_NO_SMILEY : (GTK_IMHTML_NO_NEWLINE | GTK_IMHTML_NO_COMMENTS);
 
-	if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL))
-		gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
+	/* Delete any currently selected text */
+	gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
 
 	gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, gtk_text_buffer_get_insert(imhtml->text_buffer));
 	if (!imhtml->wbfo && !plaintext)
@@ -1391,6 +1410,38 @@
 
 }
 
+static GtkIMHtmlProtocol *
+imhtml_find_protocol(const char *url, gboolean reverse)
+{
+	GtkIMHtmlClass *klass;
+	GList *iter;
+	GtkIMHtmlProtocol *proto = NULL;
+	int length = reverse ? strlen(url) : -1;
+
+	klass = g_type_class_ref(GTK_TYPE_IMHTML);
+	for (iter = klass->protocols; iter; iter = iter->next) {
+		proto = iter->data;
+		if (g_ascii_strncasecmp(url, proto->name, reverse ? MIN(length, proto->length) : proto->length) == 0) {
+			return proto;
+		}
+	}
+	return NULL;
+}
+
+static void
+imhtml_url_clicked(GtkIMHtml *imhtml, const char *url)
+{
+	GtkIMHtmlProtocol *proto = imhtml_find_protocol(url, FALSE);
+	GtkIMHtmlLink *link;
+	if (!proto)
+		return;
+	link = g_new0(GtkIMHtmlLink, 1);
+	link->imhtml = g_object_ref(imhtml);
+	link->url = g_strdup(url);
+	proto->activate(imhtml, link);   /* XXX: Do something with the return value? */
+	gtk_imhtml_link_destroy(link);
+}
+
 /* Boring GTK+ stuff */
 static void gtk_imhtml_class_init (GtkIMHtmlClass *klass)
 {
@@ -1475,6 +1526,7 @@
 	klass->toggle_format = imhtml_toggle_format;
 	klass->message_send = imhtml_message_send;
 	klass->clear_format = imhtml_clear_formatting;
+	klass->url_clicked = imhtml_url_clicked;
 	klass->undo = gtk_imhtml_undo;
 	klass->redo = gtk_imhtml_redo;
 
@@ -1688,37 +1740,14 @@
 	return imhtml_type;
 }
 
-struct url_data {
-	GObject *object;
-	gchar *url;
-	GtkTextTag *tag;
-};
-
-static void url_data_destroy(gpointer mydata)
-{
-	struct url_data *data = mydata;
-	g_object_unref(data->object);
-	g_object_unref(data->tag);
-	g_free(data->url);
-	g_free(data);
-}
-
-static void url_open(GtkWidget *w, struct url_data *data)
-{
-	if(!data) return;
-	g_signal_emit(data->object, signals[URL_CLICKED], 0, data->url);
-	g_object_set_data(G_OBJECT(data->tag), "visited", GINT_TO_POINTER(TRUE));
-	gtk_imhtml_set_link_color(GTK_IMHTML(data->object), data->tag);
-}
-
-static void url_copy(GtkWidget *w, gchar *url) {
-	GtkClipboard *clipboard;
-
-	clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_PRIMARY);
-	gtk_clipboard_set_text(clipboard, url, -1);
-
-	clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_CLIPBOARD);
-	gtk_clipboard_set_text(clipboard, url, -1);
+static void gtk_imhtml_link_destroy(GtkIMHtmlLink *link)
+{
+	if (link->imhtml)
+		g_object_unref(link->imhtml);
+	if (link->tag)
+		g_object_unref(link->tag);
+	g_free(link->url);
+	g_free(link);
 }
 
 /* The callback for an event on a link tag. */
@@ -1734,21 +1763,16 @@
 			if (gtk_text_buffer_get_selection_bounds(
 						gtk_text_iter_get_buffer(arg2),	&start, &end))
 				return FALSE;
-
-			/* A link was clicked--we emit the "url_clicked" signal
-			 * with the URL as the argument */
-			g_object_ref(G_OBJECT(tag));
-			g_signal_emit(imhtml, signals[URL_CLICKED], 0, g_object_get_data(G_OBJECT(tag), "link_url"));
-			g_object_unref(G_OBJECT(tag));
-			g_object_set_data(G_OBJECT(tag), "visited", GINT_TO_POINTER(TRUE));
-			gtk_imhtml_set_link_color(GTK_IMHTML(imhtml), tag);
+			gtk_imhtml_activate_tag(GTK_IMHTML(imhtml), tag);
 			return FALSE;
 		} else if(event_button->button == 3) {
-			GtkWidget *img, *item, *menu;
-			struct url_data *tempdata = g_new(struct url_data, 1);
-			tempdata->object = g_object_ref(imhtml);
-			tempdata->url = g_strdup(g_object_get_data(G_OBJECT(tag), "link_url"));
-			tempdata->tag = g_object_ref(tag);
+			GList *children;
+			GtkWidget *menu;
+			GtkIMHtmlProtocol *proto;
+			GtkIMHtmlLink *link = g_new(GtkIMHtmlLink, 1);
+			link->imhtml = g_object_ref(imhtml);
+			link->url = g_strdup(g_object_get_data(G_OBJECT(tag), "link_url"));
+			link->tag = g_object_ref(tag);
 
 			/* Don't want the tooltip around if user right-clicked on link */
 			if (GTK_IMHTML(imhtml)->tip_window) {
@@ -1764,43 +1788,23 @@
 			else
 				gdk_window_set_cursor(event_button->window, GTK_IMHTML(imhtml)->arrow_cursor);
 			menu = gtk_menu_new();
-			g_object_set_data_full(G_OBJECT(menu), "x-imhtml-url-data", tempdata, url_data_destroy);
-
-			/* buttons and such */
-
-			if (!strncmp(tempdata->url, "mailto:", 7))
-			{
-				/* 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 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);
-				gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+			g_object_set_data_full(G_OBJECT(menu), "x-imhtml-url-data", link,
+					(GDestroyNotify)gtk_imhtml_link_destroy);
+
+			proto = imhtml_find_protocol(link->url, FALSE);
+
+			if (proto && proto->context_menu) {
+				proto->context_menu(GTK_IMHTML(link->imhtml), link, menu);
 			}
-			else
-			{
-				/* Open Link in Browser */
-				img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO,
-											   GTK_ICON_SIZE_MENU);
-				item = gtk_image_menu_item_new_with_mnemonic(
-					_("_Open Link in Browser"));
-				gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
-				g_signal_connect(G_OBJECT(item), "activate",
-								 G_CALLBACK(url_open), tempdata);
+
+			children = gtk_container_get_children(GTK_CONTAINER(menu));
+			if (!children) {
+				GtkWidget *item = gtk_menu_item_new_with_label(_("No actions available"));
+				gtk_widget_show(item);
+				gtk_widget_set_sensitive(item, FALSE);
 				gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
-
-				/* Copy Link Location */
-				img = gtk_image_new_from_stock(GTK_STOCK_COPY,
-											   GTK_ICON_SIZE_MENU);
-				item = gtk_image_menu_item_new_with_mnemonic(
-					_("_Copy Link Location"));
-				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);
-				gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+			} else {
+				g_list_free(children);
 			}
 
 
@@ -1884,10 +1888,7 @@
 
 			links = g_strsplit((char *)sd->data, "\n", 0);
 			while((link = links[i]) != NULL){
-				if(purple_str_has_prefix(link, "http://") ||
-				   purple_str_has_prefix(link, "https://") ||
-				   purple_str_has_prefix(link, "ftp://"))
-				{
+				if (gtk_imhtml_is_protocol(link)) {
 					gchar *label;
 
 					if(links[i + 1])
@@ -1896,7 +1897,7 @@
 					label = links[i];
 
 					gtk_imhtml_insert_link(imhtml, mark, link, label);
-				} else if (link=='\0') {
+				} else if (*link == '\0') {
 					/* Ignore blank lines */
 				} else {
 					/* Special reasons, aka images being put in via other tag, etc. */
@@ -2067,7 +2068,7 @@
 {
 	if (smiley->imhtml) {
 		gtk_smiley_tree_remove(smiley->imhtml->default_smilies, smiley);
-		g_hash_table_foreach(smiley->imhtml->smiley_data, 
+		g_hash_table_foreach(smiley->imhtml->smiley_data,
 			gtk_imhtml_disassociate_smiley_foreach, smiley);
 		g_signal_handlers_disconnect_matched(smiley->imhtml, G_SIGNAL_MATCH_DATA,
 			0, 0, NULL, NULL, smiley);
@@ -2096,13 +2097,13 @@
 		g_signal_handlers_disconnect_matched(smiley->imhtml, G_SIGNAL_MATCH_DATA,
 			0, 0, NULL, NULL, smiley);
 	}
-	
+
 	smiley->imhtml = imhtml;
 
 	gtk_smiley_tree_insert (tree, smiley);
-	
+
 	/* connect destroy signal for the imhtml */
-	g_signal_connect(imhtml, "destroy", G_CALLBACK(gtk_imhtml_disconnect_smiley), 
+	g_signal_connect(imhtml, "destroy", G_CALLBACK(gtk_imhtml_disconnect_smiley),
 		smiley);
 }
 
@@ -2198,14 +2199,17 @@
 	return gtk_smiley_get_image(smiley);
 }
 
-#define VALID_TAG(x)	if (!g_ascii_strncasecmp (string, x ">", strlen (x ">"))) {	\
-				*tag = g_strndup (string, strlen (x));		\
-				*len = strlen (x) + 1;				\
+#define VALID_TAG(x)	do { \
+			if (!g_ascii_strncasecmp (string, x ">", strlen (x ">"))) {	\
+				if (tag) *tag = g_strndup (string, strlen (x));		\
+				if (len) *len = strlen (x) + 1;				\
 				return TRUE;					\
 			}							\
-			(*type)++
-
-#define VALID_OPT_TAG(x)	if (!g_ascii_strncasecmp (string, x " ", strlen (x " "))) {	\
+			if (type) (*type)++; \
+		} while (0)
+
+#define VALID_OPT_TAG(x)	do { \
+				if (!g_ascii_strncasecmp (string, x " ", strlen (x " "))) {	\
 					const gchar *c = string + strlen (x " ");	\
 					gchar e = '"';					\
 					gboolean quote = FALSE;				\
@@ -2222,12 +2226,13 @@
 						c++;					\
 					}						\
 					if (*c) {					\
-						*tag = g_strndup (string, c - string);	\
-						*len = c - string + 1;			\
+						if (tag) *tag = g_strndup (string, c - string);	\
+						if (len) *len = c - string + 1;			\
 						return TRUE;				\
 					}						\
 				}							\
-				(*type)++
+				if (type) (*type)++; \
+			} while (0)
 
 
 static gboolean
@@ -2237,8 +2242,8 @@
 		   gint        *type)
 {
 	char *close;
-	*type = 1;
-
+	if (type)
+		*type = 1;
 
 	if (!(close = strchr (string, '>')))
 		return FALSE;
@@ -2311,15 +2316,20 @@
 	if (!g_ascii_strncasecmp(string, "!--", strlen ("!--"))) {
 		gchar *e = strstr (string + strlen("!--"), "-->");
 		if (e) {
-			*len = e - string + strlen ("-->");
-			*tag = g_strndup (string + strlen ("!--"), *len - strlen ("!---->"));
+			if (len)
+				*len = e - string + strlen ("-->");
+			if (tag)
+				*tag = g_strndup (string + strlen ("!--"), *len - strlen ("!---->"));
 			return TRUE;
 		}
 	}
 
-	*type = -1;
-	*len = close - string + 1;
-	*tag = g_strndup(string, *len - 1);
+	if (type)
+		*type = -1;
+	if (len)
+		*len = close - string + 1;
+	if (tag)
+		*tag = g_strndup(string, *len - 1);
 	return TRUE;
 }
 
@@ -2382,26 +2392,12 @@
 	return g_string_free(ret, FALSE);
 }
 
-static const char *accepted_protocols[] = {
-	"http://",
-	"https://",
-	"ftp://"
-};
-
-static const int accepted_protocols_size = 3;
-
 /* returns if the beginning of the text is a protocol. If it is the protocol, returns the length so
    the caller knows how long the protocol string is. */
 static int gtk_imhtml_is_protocol(const char *text)
 {
-	gint i;
-
-	for(i=0; i<accepted_protocols_size; i++){
-		if( g_ascii_strncasecmp(text, accepted_protocols[i], strlen(accepted_protocols[i])) == 0  ){
-			return strlen(accepted_protocols[i]);
-		}
-	}
-	return 0;
+	GtkIMHtmlProtocol *proto = imhtml_find_protocol(text, FALSE);
+	return proto ? proto->length : 0;
 }
 
 /*
@@ -2606,7 +2602,7 @@
 
 			count++;
 		}
-		
+
 		g_free(in_color);
 		return g_strdup_printf("#%02X%02X%02X", rgbval[0], rgbval[1], rgbval[2]);
 	}
@@ -2655,7 +2651,7 @@
 	c = text;
 	len = strlen(text);
 	ws = g_malloc(len + 1);
-	ws[0] = 0;
+	ws[0] = '\0';
 
 	gtk_text_buffer_begin_user_action(imhtml->text_buffer);
 	while (pos < len) {
@@ -3307,8 +3303,7 @@
 				ws[wpos] = '\n';
 				wpos++;
 				gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
-				ws[0] = '\0';
-				wpos = 0;
+				ws[0] = '\0'; wpos = 0;
 				/* NEW_BIT (NEW_TEXT_BIT); */
 			} else if (!br) {  /* Don't insert a space immediately after an HTML break */
 				/* A newline is defined by HTML as whitespace, which means we have to replace it with a word boundary.
@@ -3319,19 +3314,43 @@
 				ws[wpos] = ' ';
 				wpos++;
 				gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
-				ws[0] = '\0';
-				wpos = 0;
+				ws[0] = '\0'; wpos = 0;
 			}
 			c++;
 			pos++;
-		} else if ((len_protocol = gtk_imhtml_is_protocol(c)) > 0){
+		} else if ((pos == 0 || wpos == 0 || isspace(*(c - 1))) &&
+		           (len_protocol = gtk_imhtml_is_protocol(c)) > 0 &&
+				   c[len_protocol] && !isspace(c[len_protocol])) {
 			br = FALSE;
-			while(len_protocol--){
-				/* Skip the next len_protocol characters, but make sure they're
-				   copied into the ws array.
-				*/
-				 ws [wpos++] = *c++;
-				 pos++;
+			if (wpos > 0) {
+				gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
+				ws[0] = '\0'; wpos = 0;
+			}
+			while (len_protocol--) {
+				/* Skip the next len_protocol characters, but
+				 * make sure they're copied into the ws array.
+				 */
+				ws [wpos++] = *c++;
+				pos++;
+			}
+			if (!imhtml->edit.link && (imhtml->format_functions & GTK_IMHTML_LINK)) {
+				while (*c && !isspace((int)*c) &&
+						(*c != '<' || !gtk_imhtml_is_tag(c + 1, NULL, NULL, NULL))) {
+					if (*c == '&' && (amp = purple_markup_unescape_entity(c, &tlen))) {
+						while (*amp)
+							ws[wpos++] = *amp++;
+						c += tlen;
+						pos += tlen;
+					} else {
+						ws [wpos++] = *c++;
+						pos++;
+					}
+				}
+				ws[wpos] = '\0';
+				gtk_imhtml_toggle_link(imhtml, ws);
+				gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);
+				ws[0] = '\0'; wpos = 0;
+				gtk_imhtml_toggle_link(imhtml, NULL);
 			}
 		} else if (*c) {
 			br = FALSE;
@@ -3355,7 +3374,7 @@
 		ws[wpos++]  = 0xE2;
 		ws[wpos++]  = 0x80;
 		ws[wpos++]  = 0x8F;
-    
+
 		if (!rtl_direction)
 		{
 			/* insert LRM character to set direction */
@@ -3368,8 +3387,7 @@
 		ws[wpos]  = '\0';
 		gtk_text_buffer_insert(imhtml->text_buffer, &line_iter, ws, wpos);
 		gtk_text_buffer_get_end_iter(gtk_text_iter_get_buffer(&line_iter), iter);
-		ws[0] = '\0';
-		wpos = 0;
+		ws[0] = '\0'; wpos = 0;
 	}
 
 	while (fonts) {
@@ -4885,8 +4903,8 @@
 {
 	GtkTextIter iter;
 
-	if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL))
-		gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
+	/* Delete any currently selected text */
+	gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
 
 	gtk_imhtml_toggle_link(imhtml, url);
 	gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, mark);
@@ -4899,8 +4917,8 @@
 	GtkTextMark *mark;
 	GtkTextIter iter;
 
-	if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL))
-		gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
+	/* Delete any currently selected text */
+	gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
 
 	mark = gtk_text_buffer_get_insert(imhtml->text_buffer);
 
@@ -5753,3 +5771,111 @@
 	g_free(smiley);
 }
 
+gboolean gtk_imhtml_class_register_protocol(const char *name,
+		gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link),
+		gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu))
+{
+	GtkIMHtmlClass *klass;
+	GtkIMHtmlProtocol *proto;
+
+	g_return_val_if_fail(name, FALSE);
+
+	klass = g_type_class_ref(GTK_TYPE_IMHTML);
+	g_return_val_if_fail(klass, FALSE);
+
+	if ((proto = imhtml_find_protocol(name, TRUE))) {
+		if (activate) {
+			return FALSE;
+		}
+		g_free(proto->name);
+		g_free(proto);
+		klass->protocols = g_list_remove(klass->protocols, proto);
+		return TRUE;
+	} else if (!activate) {
+		return FALSE;
+	}
+
+	proto = g_new0(GtkIMHtmlProtocol, 1);
+	proto->name = g_strdup(name);
+	proto->length = strlen(name);
+	proto->activate = activate;
+	proto->context_menu = context_menu;
+	klass->protocols = g_list_prepend(klass->protocols, proto);
+
+	return TRUE;
+}
+
+static void
+gtk_imhtml_activate_tag(GtkIMHtml *imhtml, GtkTextTag *tag)
+{
+	/* A link was clicked--we emit the "url_clicked" signal
+	 * with the URL as the argument */
+	g_object_ref(G_OBJECT(tag));
+	g_signal_emit(imhtml, signals[URL_CLICKED], 0, g_object_get_data(G_OBJECT(tag), "link_url"));
+	g_object_unref(G_OBJECT(tag));
+	g_object_set_data(G_OBJECT(tag), "visited", GINT_TO_POINTER(TRUE));
+	gtk_imhtml_set_link_color(GTK_IMHTML(imhtml), tag);
+}
+
+gboolean gtk_imhtml_link_activate(GtkIMHtmlLink *link)
+{
+	g_return_val_if_fail(link, FALSE);
+
+	if (link->tag) {
+		gtk_imhtml_activate_tag(link->imhtml, link->tag);
+	} else if (link->url) {
+		g_signal_emit(link->imhtml, signals[URL_CLICKED], 0, link->url);
+	} else
+		return FALSE;
+	return TRUE;
+}
+
+const char *gtk_imhtml_link_get_url(GtkIMHtmlLink *link)
+{
+	return link->url;
+}
+
+const GtkTextTag * gtk_imhtml_link_get_text_tag(GtkIMHtmlLink *link)
+{
+	return link->tag;
+}
+
+static gboolean return_add_newline_cb(GtkWidget *widget, gpointer data)
+{
+	GtkTextBuffer *buffer;
+	GtkTextMark *mark;
+	GtkTextIter iter;
+
+	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget));
+
+	/* Delete any currently selected text */
+	gtk_text_buffer_delete_selection(buffer, TRUE, TRUE);
+
+	/* Insert a newline at the current cursor position */
+	mark = gtk_text_buffer_get_insert(buffer);
+	gtk_text_buffer_get_iter_at_mark(buffer, &iter, mark);
+	gtk_imhtml_insert_html_at_iter(GTK_IMHTML(widget), "\n", 0, &iter);
+
+	/*
+	 * If we just newlined ourselves past the end of the visible area
+	 * then scroll down so the cursor is in view.
+	 */
+	gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(widget),
+			gtk_text_buffer_get_insert(buffer),
+			0, FALSE, 0.0, 0.0);
+
+	return TRUE;
+}
+
+/*
+ * It's kind of a pain that we need this function and the above just
+ * to reinstate the default GtkTextView behavior.  It might be better
+ * if GtkIMHtml didn't intercept the enter key and just required the
+ * application to deal with it--it's really not much more work than it
+ * is to connect to the current "message_send" signal.
+ */
+void gtk_imhtml_set_return_inserts_newline(GtkIMHtml *imhtml)
+{
+	g_signal_connect(G_OBJECT(imhtml), "message_send",
+		G_CALLBACK(return_add_newline_cb), NULL);
+}
--- a/pidgin/gtkimhtml.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkimhtml.h	Wed Mar 04 16:52:47 2009 +0000
@@ -61,6 +61,11 @@
 typedef struct _GtkIMHtmlHr			GtkIMHtmlHr;
 typedef struct _GtkIMHtmlFuncs		GtkIMHtmlFuncs;
 
+/**
+ * @since 2.6.0
+ */
+typedef struct _GtkIMHtmlLink       GtkIMHtmlLink;
+
 typedef enum {
 	GTK_IMHTML_BOLD =       1 << 0,
 	GTK_IMHTML_ITALIC =     1 << 1,
@@ -156,6 +161,7 @@
 	gboolean (*message_send)(GtkIMHtml *);
 	void (*undo)(GtkIMHtml *);
 	void (*redo)(GtkIMHtml *);
+	GList *protocols; /* List of GtkIMHtmlProtocol's */
 };
 
 struct _GtkIMHtmlFontDetail {
@@ -885,6 +891,74 @@
  * @since 2.5.0
  */
 void gtk_imhtml_smiley_destroy(GtkIMHtmlSmiley *smiley);
+
+/**
+ * Register a protocol with the GtkIMHtml widget. Registering a protocol would
+ * allow certain text to be clickable.
+ *
+ * @param name      The name of the protocol (e.g. http://)
+ * @param activate  The callback to trigger when the protocol text is clicked.
+ *                  Removes any current protocol definition if @c NULL. The
+ *                  callback should return @c TRUE if the link was activated
+ *                  properly, @c FALSE otherwise.
+ * @param context_menu  The callback to trigger when the context menu is popped
+ *                      up on the protocol text. The callback should return
+ *                      @c TRUE if the request for context menu was processed
+ *                      successfully, @c FALSE otherwise.
+ *
+ * @return  @c TRUE if the protocol was successfully registered (or unregistered, when #activate is @c NULL)
+ *
+ * @since 2.6.0
+ */
+gboolean gtk_imhtml_class_register_protocol(const char *name,
+		gboolean (*activate)(GtkIMHtml *imhtml, GtkIMHtmlLink *link),
+		gboolean (*context_menu)(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu));
+
+/**
+ * Get the URL associated with a link. This should be used by the IMHtml protocol-callbacks.
+ *
+ * @param link   The GtkIMHtmlLink object sent to the callback functions
+ *
+ * @return  The URL
+ *
+ * @since 2.6.0
+ */
+const char *gtk_imhtml_link_get_url(GtkIMHtmlLink *link);
+
+/**
+ * Get the GtkTextTag object (if any) associated with a particular link.
+ *
+ * @param link   The GtkIMHtmlLink object sent to the callback functions
+ *
+ * @return  The GtkTextTag object, or @c NULL
+ *
+ * @since 2.6.0
+ */
+const GtkTextTag *gtk_imhtml_link_get_text_tag(GtkIMHtmlLink *link);
+
+/**
+ * Activates a GtkIMHtmlLink object. This triggers the 'url-clicked' signal, marks the
+ * link as visited (when possible).
+ *
+ * @param link   The GtkIMHtmlLink object sent to the callback functions
+ *
+ * @return  @c TRUE if 'url-clicked' signal was emitted, @c FALSE otherwise.
+ *
+ * @since 2.6.0
+ */
+gboolean gtk_imhtml_link_activate(GtkIMHtmlLink *link);
+
+/**
+ * By default this widget intercepts presses of the "return" key and
+ * emits the "message_send" signal instead.  If you don't want this
+ * behavior, and you want the standard GtkTextView behavior of
+ * inserting a newline into the buffer, then call this function.
+ *
+ * @param imhtml The GtkIMHtml where you want the "return" key to add
+ *        newline and not emit the "message_send" signal.
+ */
+void gtk_imhtml_set_return_inserts_newline(GtkIMHtml *imhtml);
+
 /*@}*/
 
 #ifdef __cplusplus
--- a/pidgin/gtkimhtmltoolbar.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkimhtmltoolbar.c	Wed Mar 04 16:52:47 2009 +0000
@@ -680,7 +680,7 @@
 	  is custom smiley-enabled */
 	if (supports_custom && psmiley && !(smiley->flags & GTK_IMHTML_SMILEY_CUSTOM)) {
 		gchar tip[128];
-		g_snprintf(tip, sizeof(tip), 
+		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);
@@ -808,7 +808,7 @@
 			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);
 
@@ -1413,13 +1413,13 @@
 	menuitem = gtk_menu_item_new_with_mnemonic(_("_Horizontal rule"));
 	g_signal_connect(G_OBJECT(menuitem), "activate"	, G_CALLBACK(insert_hr_cb), toolbar);
 	gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
-	toolbar->insert_hr = menuitem;	
+	toolbar->insert_hr = menuitem;
 
 	g_signal_connect_swapped(G_OBJECT(insert_button), "button-press-event", G_CALLBACK(gtk_widget_activate), insert_button);
 	g_signal_connect(G_OBJECT(insert_button), "activate", G_CALLBACK(pidgin_menu_clicked), insert_menu);
 	g_signal_connect(G_OBJECT(insert_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), insert_button);
 	toolbar->sml = NULL;
-	
+
 	/* Sep */
 	sep = gtk_vseparator_new();
 	gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0);
--- a/pidgin/gtklog.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtklog.c	Wed Mar 04 16:52:47 2009 +0000
@@ -45,7 +45,7 @@
 
 struct log_viewer_hash_t {
 	PurpleLogType type;
-	char *screenname;
+	char *buddyname;
 	PurpleAccount *account;
 	PurpleContact *contact;
 };
@@ -57,7 +57,7 @@
 	if (viewer->contact != NULL)
 		return g_direct_hash(viewer->contact);
 
-	return g_str_hash(viewer->screenname) +
+	return g_str_hash(viewer->buddyname) +
 		g_str_hash(purple_account_get_username(viewer->account));
 }
 
@@ -80,9 +80,9 @@
 			return FALSE;
 	}
 
-	normal = g_strdup(purple_normalize(a->account, a->screenname));
+	normal = g_strdup(purple_normalize(a->account, a->buddyname));
 	ret = (a->account == b->account) &&
-		!strcmp(normal, purple_normalize(b->account, b->screenname));
+		!strcmp(normal, purple_normalize(b->account, b->buddyname));
 	g_free(normal);
 
 	return ret;
@@ -209,7 +209,7 @@
 		lv = g_hash_table_lookup(log_viewers, ht);
 		g_hash_table_remove(log_viewers, ht);
 
-		g_free(ht->screenname);
+		g_free(ht->buddyname);
 		g_free(ht);
 	} else
 		syslog_viewer = NULL;
@@ -556,7 +556,7 @@
 				if (!purple_prefs_get_bool("/purple/logging/log_chats"))
 					log_preferences = _("Chats will only be logged if the \"Log all chats\" preference is enabled.");
 			}
-			g_free(ht->screenname);
+			g_free(ht->buddyname);
 			g_free(ht);
 		}
 
@@ -681,27 +681,27 @@
 	return lv;
 }
 
-void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account) {
+void pidgin_log_show(PurpleLogType type, const char *buddyname, PurpleAccount *account) {
 	struct log_viewer_hash_t *ht;
 	PidginLogViewer *lv = NULL;
-	const char *name = screenname;
+	const char *name = buddyname;
 	char *title;
 	GdkPixbuf *prpl_icon;
 
 	g_return_if_fail(account != NULL);
-	g_return_if_fail(screenname != NULL);
+	g_return_if_fail(buddyname != NULL);
 
 	ht = g_new0(struct log_viewer_hash_t, 1);
 
 	ht->type = type;
-	ht->screenname = g_strdup(screenname);
+	ht->buddyname = g_strdup(buddyname);
 	ht->account = account;
 
 	if (log_viewers == NULL) {
 		log_viewers = g_hash_table_new(log_viewer_hash, log_viewer_equal);
 	} else if ((lv = g_hash_table_lookup(log_viewers, ht))) {
 		gtk_window_present(GTK_WINDOW(lv->window));
-		g_free(ht->screenname);
+		g_free(ht->buddyname);
 		g_free(ht);
 		return;
 	}
@@ -709,7 +709,7 @@
 	if (type == PURPLE_LOG_CHAT) {
 		PurpleChat *chat;
 
-		chat = purple_blist_find_chat(account, screenname);
+		chat = purple_blist_find_chat(account, buddyname);
 		if (chat != NULL)
 			name = purple_chat_get_name(chat);
 
@@ -717,7 +717,7 @@
 	} else {
 		PurpleBuddy *buddy;
 
-		buddy = purple_find_buddy(account, screenname);
+		buddy = purple_find_buddy(account, buddyname);
 		if (buddy != NULL)
 			name = purple_buddy_get_contact_alias(buddy);
 
@@ -726,9 +726,9 @@
 
 	prpl_icon = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM);
 
-	display_log_viewer(ht, purple_log_get_logs(type, screenname, account),
+	display_log_viewer(ht, purple_log_get_logs(type, buddyname, account),
 			title, gtk_image_new_from_pixbuf(prpl_icon),
-			purple_log_get_total_size(type, screenname, account));
+			purple_log_get_total_size(type, buddyname, account));
 
 	if (prpl_icon)
 		g_object_unref(prpl_icon);
@@ -760,13 +760,19 @@
 		return;
 	}
 
-	for (child = contact->node.child ; child ; child = child->next) {
+	for (child = purple_blist_node_get_first_child((PurpleBlistNode*)contact) ;
+	     child != NULL ;
+	     child = purple_blist_node_get_sibling_next(child)) {
+		const char *buddy_name;
+		PurpleAccount *account;
+
 		if (!PURPLE_BLIST_NODE_IS_BUDDY(child))
 			continue;
 
-		logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name,
-						((PurpleBuddy *)child)->account), logs);
-		total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, ((PurpleBuddy *)child)->name, ((PurpleBuddy *)child)->account);
+		buddy_name = purple_buddy_get_name((PurpleBuddy *)child);
+		account = purple_buddy_get_account((PurpleBuddy *)child);
+		logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM, buddy_name, account), logs);
+		total_log_size += purple_log_get_total_size(PURPLE_LOG_IM, buddy_name, account);
 	}
 	logs = g_list_sort(logs, purple_log_compare);
 
--- a/pidgin/gtklog.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtklog.h	Wed Mar 04 16:52:47 2009 +0000
@@ -9,7 +9,7 @@
  * 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
@@ -53,7 +53,7 @@
 
 
 
-void pidgin_log_show(PurpleLogType type, const char *screenname, PurpleAccount *account);
+void pidgin_log_show(PurpleLogType type, const char *buddyname, PurpleAccount *account);
 void pidgin_log_show_contact(PurpleContact *contact);
 
 void pidgin_syslog_show(void);
--- a/pidgin/gtkmain.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkmain.c	Wed Mar 04 16:52:47 2009 +0000
@@ -310,6 +310,7 @@
 	pidgin_log_init();
 	pidgin_docklet_init();
 	pidgin_smileys_init();
+	pidgin_utils_init();
 }
 
 static GHashTable *ui_info = NULL;
@@ -323,6 +324,7 @@
 #endif
 
 	/* Uninit */
+	pidgin_utils_uninit();
 	pidgin_smileys_uninit();
 	pidgin_conversations_uninit();
 	pidgin_status_uninit();
@@ -385,6 +387,7 @@
 		       "Usage: %s [OPTION]...\n\n"
 		       "  -c, --config=DIR    use DIR for config files\n"
 		       "  -d, --debug         print debugging messages to stdout\n"
+		       "  -f, --force-online  force online, regardless of network status\n"
 		       "  -h, --help          display this help and exit\n"
 		       "  -m, --multiple      do not ensure single instance\n"
 		       "  -n, --nologin       don't automatically login\n"
@@ -398,6 +401,7 @@
 		       "Usage: %s [OPTION]...\n\n"
 		       "  -c, --config=DIR    use DIR for config files\n"
 		       "  -d, --debug         print debugging messages to stdout\n"
+		       "  -f, --force-online  force online, regardless of network status\n"
 		       "  -h, --help          display this help and exit\n"
 		       "  -m, --multiple      do not ensure single instance\n"
 		       "  -n, --nologin       don't automatically login\n"
@@ -457,10 +461,10 @@
 int main(int argc, char *argv[])
 #endif
 {
+	gboolean opt_force_online = FALSE;
 	gboolean opt_help = FALSE;
 	gboolean opt_login = FALSE;
 	gboolean opt_nologin = FALSE;
-	gboolean opt_nocrash = FALSE;
 	gboolean opt_version = FALSE;
 	gboolean opt_si = TRUE;     /* Check for single instance? */
 	char *opt_config_dir_arg = NULL;
@@ -485,17 +489,17 @@
 	GList *active_accounts;
 
 	struct option long_options[] = {
-		{"config",   required_argument, NULL, 'c'},
-		{"debug",    no_argument,       NULL, 'd'},
-		{"help",     no_argument,       NULL, 'h'},
-		{"login",    optional_argument, NULL, 'l'},
-		{"multiple", no_argument,       NULL, 'm'},
-		{"nologin",  no_argument,       NULL, 'n'},
-		{"nocrash",  no_argument,       NULL, 'x'},
-		{"session",  required_argument, NULL, 's'},
-		{"version",  no_argument,       NULL, 'v'},
-		{"display",  required_argument, NULL, 'D'},
-		{"sync",     no_argument,       NULL, 'S'},
+		{"config",       required_argument, NULL, 'c'},
+		{"debug",        no_argument,       NULL, 'd'},
+		{"force-online", no_argument,       NULL, 'd'},
+		{"help",         no_argument,       NULL, 'h'},
+		{"login",        optional_argument, NULL, 'l'},
+		{"multiple",     no_argument,       NULL, 'm'},
+		{"nologin",      no_argument,       NULL, 'n'},
+		{"session",      required_argument, NULL, 's'},
+		{"version",      no_argument,       NULL, 'v'},
+		{"display",      required_argument, NULL, 'D'},
+		{"sync",         no_argument,       NULL, 'S'},
 		{0, 0, 0, 0}
 	};
 
@@ -602,9 +606,9 @@
 	opterr = 1;
 	while ((opt = getopt_long(argc, argv,
 #ifndef _WIN32
-				  "c:dhmnl::s:v",
+				  "c:dfhmnl::s:v",
 #else
-				  "c:dhmnl::v",
+				  "c:dfhmnl::v",
 #endif
 				  long_options, NULL)) != -1) {
 		switch (opt) {
@@ -615,6 +619,9 @@
 		case 'd':	/* debug */
 			debug_enabled = TRUE;
 			break;
+		case 'f':	/* force-online */
+			opt_force_online = TRUE;
+			break;
 		case 'h':	/* help */
 			opt_help = TRUE;
 			break;
@@ -637,9 +644,6 @@
 		case 'm':   /* do not ensure single instance. */
 			opt_si = FALSE;
 			break;
-		case 'x':   /* --nocrash */
-			opt_nocrash = TRUE;
-			break;
 		case 'D':   /* --display */
 		case 'S':   /* --sync */
 			/* handled by gtk_init_check below */
@@ -816,6 +820,11 @@
 		opt_config_dir_arg = NULL;
 	}
 
+	/* This needs to be before purple_blist_show() so the
+	 * statusbox gets the forced online status. */
+	if (opt_force_online)
+		purple_network_force_online();
+
 	/*
 	 * We want to show the blist early in the init process so the
 	 * user feels warm and fuzzy (not cold and prickley).
--- a/pidgin/gtkpluginpref.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkpluginpref.c	Wed Mar 04 16:52:47 2009 +0000
@@ -93,7 +93,7 @@
 		case PURPLE_PLUGIN_PREF_NONE:
 		default:
 			if (format == PURPLE_STRING_FORMAT_TYPE_NONE)
-			{				
+			{
 				entry = gtk_entry_new();
 				gtk_entry_set_text(GTK_ENTRY(entry), purple_prefs_get_string(pref_name));
 				gtk_entry_set_max_length(GTK_ENTRY(entry),
--- a/pidgin/gtkpounce.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkpounce.c	Wed Mar 04 16:52:47 2009 +0000
@@ -535,7 +535,7 @@
 
 	/* Create the window. */
 	dialog->window = window = gtk_dialog_new();
-	gtk_window_set_title(GTK_WINDOW(window), (cur_pounce == NULL ? _("New Buddy Pounce") : _("Edit Buddy Pounce")));
+	gtk_window_set_title(GTK_WINDOW(window), (cur_pounce == NULL ? _("Add Buddy Pounce") : _("Modify Buddy Pounce")));
 	gtk_window_set_role(GTK_WINDOW(window), "buddy_pounce");
 	gtk_container_set_border_width(GTK_CONTAINER(dialog->window), PIDGIN_HIG_BORDER);
 
@@ -637,19 +637,19 @@
 					 GTK_FILL, 0, 0, 0);
 	gtk_table_attach(GTK_TABLE(table), dialog->signoff,      0, 1, 2, 3,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), dialog->away,         0, 1, 3, 4,
+	gtk_table_attach(GTK_TABLE(table), dialog->away,         1, 2, 0, 1,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), dialog->away_return,  0, 1, 4, 5,
+	gtk_table_attach(GTK_TABLE(table), dialog->away_return,  1, 2, 1, 2,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), dialog->idle,         1, 2, 0, 1,
+	gtk_table_attach(GTK_TABLE(table), dialog->idle,         1, 2, 2, 3,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), dialog->idle_return,  1, 2, 1, 2,
+	gtk_table_attach(GTK_TABLE(table), dialog->idle_return,  2, 3, 0, 1,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), dialog->typing,       1, 2, 2, 3,
+	gtk_table_attach(GTK_TABLE(table), dialog->typing,       2, 3, 1, 2,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), dialog->typed,        1, 2, 3, 4,
+	gtk_table_attach(GTK_TABLE(table), dialog->typed,        2, 3, 2, 3,
 					 GTK_FILL, 0, 0, 0);
-	gtk_table_attach(GTK_TABLE(table), dialog->stop_typing,  1, 2, 4, 5,
+	gtk_table_attach(GTK_TABLE(table), dialog->stop_typing,  3, 4, 0, 1,
 					 GTK_FILL, 0, 0, 0);
 
 	gtk_widget_show(dialog->signon);
--- a/pidgin/gtkpounce.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkpounce.h	Wed Mar 04 16:52:47 2009 +0000
@@ -8,7 +8,7 @@
  * 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
--- a/pidgin/gtkprefs.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkprefs.c	Wed Mar 04 16:52:47 2009 +0000
@@ -35,6 +35,8 @@
 #include "request.h"
 #include "savedstatuses.h"
 #include "sound.h"
+#include "sound-theme.h"
+#include "theme-manager.h"
 #include "util.h"
 #include "network.h"
 
@@ -47,6 +49,7 @@
 #include "gtkprefs.h"
 #include "gtksavedstatuses.h"
 #include "gtksound.h"
+#include "gtkstatus-icon-theme.h"
 #include "gtkthemes.h"
 #include "gtkutils.h"
 #include "pidginstock.h"
@@ -56,6 +59,8 @@
 #define PROXYUSER 2
 #define PROXYPASS 3
 
+#define PREFS_OPTIMAL_ICON_SIZE 32
+
 static int sound_row_sel = 0;
 static GtkWidget *prefsnotebook;
 
@@ -69,6 +74,12 @@
 static int notebook_page = 0;
 static GtkTreeRowReference *previous_smiley_row = NULL;
 
+static gboolean prefs_themes_unsorted = TRUE;
+static GtkListStore *prefs_sound_themes;
+static GtkListStore *prefs_blist_themes;
+static GtkListStore *prefs_status_icon_themes;
+
+
 /*
  * PROTOTYPES
  */
@@ -546,6 +557,212 @@
 	gtk_drag_finish(dc, FALSE, FALSE, t);
 }
 
+/* Rebuild the markup for the sound theme selection for "(Custom)" themes */
+static void
+pref_sound_generate_markup()
+{
+	gboolean print_custom, customized;
+	const gchar *name, *author, *description, *current_theme;
+	gchar *markup;
+	PurpleSoundTheme *theme;
+	GtkTreeIter iter;
+
+	customized = pidgin_sound_is_customized();
+	current_theme = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme");
+
+	if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(prefs_sound_themes), &iter)) {
+		do {
+			gtk_tree_model_get(GTK_TREE_MODEL(prefs_sound_themes), &iter, 2, &name, -1);
+
+			print_custom = customized && g_str_equal(current_theme, name);
+
+			if (g_str_equal(name, ""))
+				markup = g_strdup_printf("<b>(Default)</b>%s%s - None\n<span foreground='dim grey'>The default Pidgin sound theme</span>",
+							 print_custom ? " " : "", print_custom ? "(Custom)" : "");
+			else {
+				theme = PURPLE_SOUND_THEME(purple_theme_manager_find_theme(name, "sound"));
+				author = purple_theme_get_author(PURPLE_THEME(theme));
+				description = purple_theme_get_description(PURPLE_THEME(theme));
+
+				markup = g_strdup_printf("<b>%s</b>%s%s%s%s\n<span foreground='dim grey'>%s</span>",
+							 name, print_custom ? " " : "", print_custom ? "(Custom)" : "",
+							 author != NULL ? " - " : "", author != NULL ? author : "", description != NULL ? description : "");
+			}
+
+			gtk_list_store_set(prefs_sound_themes, &iter, 1, markup, -1);
+
+			g_free(markup);
+
+		} while (gtk_tree_model_iter_next(GTK_TREE_MODEL(prefs_sound_themes), &iter));
+	}
+}
+
+/* adds the themes to the theme list from the manager so they can be sisplayed in prefs */
+static void
+prefs_themes_sort(PurpleTheme *theme)
+{
+	GdkPixbuf *pixbuf = NULL;
+	GtkTreeIter iter;
+	gchar *image_full = NULL, *markup;
+	const gchar *name, *author, *description;
+
+	if (PURPLE_IS_SOUND_THEME(theme)){
+
+		image_full = purple_theme_get_image_full(theme);
+		if (image_full != NULL){
+			pixbuf = gdk_pixbuf_new_from_file_at_scale(image_full, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL);
+			g_free(image_full);
+		} else pixbuf = NULL;
+
+		gtk_list_store_append(prefs_sound_themes, &iter);
+		gtk_list_store_set(prefs_sound_themes, &iter, 0, pixbuf, 2, purple_theme_get_name(theme), -1);
+
+		if (pixbuf != NULL)
+			gdk_pixbuf_unref(pixbuf);
+
+	} else if (PIDGIN_IS_BLIST_THEME(theme) || PIDGIN_IS_STATUS_ICON_THEME(theme)){
+		GtkListStore *store;
+
+		if (PIDGIN_IS_BLIST_THEME(theme))
+			store = prefs_blist_themes;
+		else store = prefs_status_icon_themes;
+
+		image_full = purple_theme_get_image_full(theme);
+		if (image_full != NULL){
+			pixbuf = gdk_pixbuf_new_from_file_at_scale(image_full, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL);
+			g_free(image_full);
+		} else pixbuf = NULL;
+
+		name = purple_theme_get_name(theme);
+		author = purple_theme_get_author(theme);
+		description = purple_theme_get_description(theme);
+
+		markup = g_strdup_printf("<b>%s</b>%s%s\n<span foreground='dim grey'>%s</span>", name, author != NULL ? " - " : "",
+					 author != NULL ? author : "", description != NULL ? description : "");
+
+		gtk_list_store_append(store, &iter);
+		gtk_list_store_set(store, &iter, 0, pixbuf, 1, markup, 2, name, -1);
+
+		g_free(markup);
+		if (pixbuf != NULL)
+			gdk_pixbuf_unref(pixbuf);
+	}
+
+}
+
+/* init all the theme variables so that the themes can be sorted later and used by pref pages */
+static void
+prefs_themes_init()
+{
+	GdkPixbuf *pixbuf = NULL;
+	gchar *filename;
+	GtkTreeIter iter;
+
+	filename = g_build_filename(DATADIR, "icons", "hicolor", "32x32", "apps", "pidgin.png", NULL);
+	pixbuf = gdk_pixbuf_new_from_file_at_scale(filename, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL);
+	g_free(filename);
+
+	/* sound themes */
+	prefs_sound_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
+
+	gtk_list_store_append(prefs_sound_themes, &iter);
+	gtk_list_store_set(prefs_sound_themes, &iter, 0, pixbuf, 2, "", -1);
+
+	/* blist themes */
+	prefs_blist_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
+
+	gtk_list_store_append(prefs_blist_themes, &iter);
+	gtk_list_store_set(prefs_blist_themes, &iter, 0, pixbuf, 1, "<b>(Default)</b> - None\n<span color='dim grey'>"
+								    "The default Pidgin buddy list theme</span>", 2, "", -1);
+
+	/* status icon themes */
+	prefs_status_icon_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
+
+	gtk_list_store_append(prefs_status_icon_themes, &iter);
+	gtk_list_store_set(prefs_status_icon_themes, &iter, 0, pixbuf, 1, "<b>(Default)</b> - None\n<span color='dim grey'>"
+								    "The default Pidgin status icon theme</span>", 2, "", -1);
+
+	gdk_pixbuf_unref(pixbuf);
+}
+
+/* builds a theme combo box from a list store with colums: icon preview, markup, theme name */
+static GtkWidget *
+prefs_build_theme_combo_box(GtkListStore *store, const gchar *current_theme)
+{
+	GtkWidget *combo_box;
+	GtkCellRenderer *cell_rend;
+	GtkTreeIter iter;
+	gchar *theme = NULL;
+	gboolean unset = TRUE;
+
+	g_return_val_if_fail(store != NULL && current_theme != NULL, NULL);
+
+	combo_box = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
+
+	cell_rend = gtk_cell_renderer_pixbuf_new();
+	gtk_cell_renderer_set_fixed_size(cell_rend, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE);
+	gtk_cell_layout_pack_start(GTK_CELL_LAYOUT (combo_box), cell_rend, FALSE);
+	gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), cell_rend, "pixbuf", 0, NULL);
+
+	cell_rend = gtk_cell_renderer_text_new();
+	gtk_cell_layout_pack_start(GTK_CELL_LAYOUT (combo_box), cell_rend, FALSE);
+	gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo_box), cell_rend, "markup", 1, NULL);
+/*#if GTK_CHECK_VERSION(2,6,0)
+			g_object_set(cell_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
+#endif*/
+
+	if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter)) {
+		do {
+			gtk_tree_model_get(GTK_TREE_MODEL(store), &iter, 2, &theme, -1);
+
+			if (g_str_equal(current_theme, theme)) {
+				gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo_box), &iter);
+				unset = FALSE;
+			}
+
+			g_free(theme);
+		} while (gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter));
+	}
+
+	if (unset)
+		gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box), 0);
+
+	return combo_box;
+}
+
+/* sets the current sound theme */
+static void
+prefs_set_sound_theme_cb(GtkComboBox *combo_box, gpointer user_data)
+{
+	gint i;
+	gchar *pref;
+	gchar *new_theme;
+	gboolean success;
+	GtkTreeIter new_iter;
+
+	success = gtk_combo_box_get_active_iter(combo_box, &new_iter);
+	g_return_if_fail(success);
+
+	gtk_tree_model_get(GTK_TREE_MODEL(prefs_sound_themes), &new_iter, 2, &new_theme, -1);
+
+	purple_prefs_set_string(PIDGIN_PREFS_ROOT "/sound/theme", new_theme);
+
+	/* New theme removes all customization */
+	for(i=0; i <  PURPLE_NUM_SOUNDS; i++){
+		pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s",
+					pidgin_sound_get_event_option(i));
+		purple_prefs_set_path(pref, "");
+		g_free(pref);
+	}
+
+	/* gets rid of the "(Custom)" from the last selection */
+	pref_sound_generate_markup();
+
+	gtk_entry_set_text(GTK_ENTRY(sound_entry), _("(default)"));
+
+	g_free(new_theme);
+}
+
 /* Does same as normal sort, except "none" is sorted first */
 static gint pidgin_sort_smileys (GtkTreeModel	*model,
 						GtkTreeIter		*a,
@@ -922,6 +1139,40 @@
 	gtk_box_pack_start(GTK_BOX(vbox), checkbox, FALSE, FALSE, 0);
 }
 
+/* sets the current buddy list theme */
+static void
+prefs_set_blist_theme_cb(GtkComboBox *combo_box, gpointer user_data)
+{
+	PidginBlistTheme *theme;
+	GtkTreeIter iter;
+	gchar *name = NULL;
+
+	g_return_if_fail(gtk_combo_box_get_active_iter(combo_box, &iter));
+	gtk_tree_model_get(GTK_TREE_MODEL(prefs_blist_themes), &iter, 2, &name, -1);
+
+	theme = PIDGIN_BLIST_THEME(purple_theme_manager_find_theme(name, "blist"));
+	g_free(name);
+
+	pidgin_blist_set_theme(theme);
+}
+
+/* sets the current icon theme */
+static void
+prefs_set_status_icon_theme_cb(GtkComboBox *combo_box, gpointer user_data)
+{
+	PidginStatusIconTheme *theme;
+	GtkTreeIter iter;
+	gchar *name = NULL;
+
+	g_return_if_fail(gtk_combo_box_get_active_iter(combo_box, &iter));
+	gtk_tree_model_get(GTK_TREE_MODEL(prefs_status_icon_themes), &iter, 2, &name, -1);
+
+	theme = PIDGIN_STATUS_ICON_THEME(purple_theme_manager_find_theme(name, "status-icon"));
+	g_free(name);
+
+	pidgin_stock_load_status_icon_theme(theme);
+}
+
 static GtkWidget *
 interface_page(void)
 {
@@ -929,6 +1180,7 @@
 	GtkWidget *vbox;
 	GtkWidget *vbox2;
 	GtkWidget *label;
+	GtkWidget *combo_box;
 	GtkSizeGroup *sg;
 	GList *names = NULL;
 
@@ -937,6 +1189,19 @@
 
 	sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
+	/* Buddy List Themes */
+	vbox = pidgin_make_frame(ret, _("Buddy List Theme"));
+
+	combo_box = prefs_build_theme_combo_box(prefs_blist_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/theme"));
+	gtk_box_pack_start(GTK_BOX (vbox), combo_box, FALSE, FALSE, 0);
+	g_signal_connect(G_OBJECT(combo_box), "changed", (GCallback)prefs_set_blist_theme_cb, NULL);
+
+	/* Status Icon Themes */
+	combo_box = prefs_build_theme_combo_box(prefs_status_icon_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/status/icon-theme"));
+	gtk_box_pack_start(GTK_BOX (vbox), combo_box, FALSE, FALSE, 0);
+	g_signal_connect(G_OBJECT(combo_box), "changed", (GCallback)prefs_set_status_icon_theme_cb, NULL);
+
+	/* System Tray */
 	vbox = pidgin_make_frame(ret, _("System Tray Icon"));
 	label = pidgin_prefs_dropdown(vbox, _("_Show system tray icon:"), PURPLE_PREF_STRING,
 					PIDGIN_PREFS_ROOT "/docklet/show",
@@ -1742,6 +2007,8 @@
 	g_free(pref);
 
 	gtk_entry_set_text(GTK_ENTRY(sound_entry), _("(default)"));
+
+	pref_sound_generate_markup();
 }
 
 static void
@@ -1764,6 +2031,8 @@
 	 */
 	if (sound == sound_row_sel)
 		gtk_entry_set_text(GTK_ENTRY(sound_entry), filename);
+
+	pref_sound_generate_markup();
 }
 
 static void select_sound(GtkWidget *button, gpointer being_NULL_is_fun)
@@ -1832,6 +2101,8 @@
 	if (sound_entry)
 		gtk_entry_set_text(GTK_ENTRY(sound_entry), (file && *file != '\0') ? file : _("(default)"));
 	g_value_unset (&val);
+
+	pref_sound_generate_markup();
 }
 
 
@@ -1857,7 +2128,7 @@
 sound_page(void)
 {
 	GtkWidget *ret;
-	GtkWidget *vbox, *sw, *button;
+	GtkWidget *vbox, *sw, *button, *combo_box;
 	GtkSizeGroup *sg;
 	GtkTreeIter iter;
 	GtkWidget *event_view;
@@ -1951,7 +2222,6 @@
 	purple_prefs_connect_callback(prefs, PIDGIN_PREFS_ROOT "/sound/method",
 								sound_changed2_cb, vbox);
 #endif
-
 	vbox = pidgin_make_frame(ret, _("Sound Events"));
 
 	/* The following is an ugly hack to make the frame expand so the
@@ -1963,6 +2233,14 @@
 	gtk_box_set_child_packing(GTK_BOX(vbox->parent->parent->parent),
 			vbox->parent->parent, TRUE, TRUE, 0, GTK_PACK_START);
 
+	/* SOUND THEMES */
+	combo_box = prefs_build_theme_combo_box(prefs_sound_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme"));
+	pref_sound_generate_markup();
+	gtk_box_pack_start(GTK_BOX (vbox), combo_box, FALSE, FALSE, 0);
+
+	g_signal_connect(G_OBJECT(combo_box), "changed", (GCallback)prefs_set_sound_theme_cb, NULL);
+
+	/* SOUND SELECTION */
 	sw = gtk_scrolled_window_new(NULL,NULL);
 	gtk_widget_set_size_request(sw, -1, 100);
 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
@@ -2196,6 +2474,14 @@
 		return;
 	}
 
+	/* Refresh the list of themes before showing the preferences window */
+	purple_theme_manager_refresh();
+
+	/* add everything in the theme manager before the window is loaded */
+	if (prefs_themes_unsorted) {
+		purple_theme_manager_for_each_theme(prefs_themes_sort);
+		prefs_themes_unsorted = FALSE;
+	}
 	/* copy the preferences to tmp values...
 	 * I liked "take affect immediately" Oh well :-( */
 	/* (that should have been "effect," right?) */
@@ -2290,6 +2576,9 @@
 	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder", "");
 	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder", "");
 
+	/* Themes */
+	prefs_themes_init();
+
 	/* Smiley Themes */
 	purple_prefs_add_none(PIDGIN_PREFS_ROOT "/smileys");
 	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/smileys/theme", "Default");
--- a/pidgin/gtkprefs.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkprefs.h	Wed Mar 04 16:52:47 2009 +0000
@@ -59,7 +59,7 @@
  * @param max   The maximum value of the spin button
  * @param sg    If not NULL, the size group to which the spin button will be added
  * @return      An hbox containing both the label and the spinner.  Can be
- *              used to set the widgets to sensitive or insensitive based on the 
+ *              used to set the widgets to sensitive or insensitive based on the
  *              value of a checkbox.
  */
 GtkWidget *pidgin_prefs_labeled_spin_button(GtkWidget *page,
--- a/pidgin/gtkrequest.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkrequest.c	Wed Mar 04 16:52:47 2009 +0000
@@ -384,6 +384,8 @@
 			gtk_imhtml_append_text(GTK_IMHTML(entry), default_value, GTK_IMHTML_NO_SCROLL);
 		gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
 		gtk_widget_show(frame);
+
+		gtk_imhtml_set_return_inserts_newline(GTK_IMHTML(entry));
 	}
 	else {
 		if (multiline) {
@@ -682,15 +684,17 @@
 static void
 req_entry_field_changed_cb(GtkWidget *entry, PurpleRequestField *field)
 {
+	PurpleRequestFieldGroup *group;
 	PidginRequestData *req_data;
 	const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
 
 	purple_request_field_string_set_value(field, (*text == '\0' ? NULL : text));
 
-	req_data = (PidginRequestData *)field->group->fields_list->ui_data;
+	group = purple_request_field_get_group(field);
+	req_data = (PidginRequestData *)group->fields_list->ui_data;
 
 	gtk_widget_set_sensitive(req_data->ok_button,
-		purple_request_fields_all_required_filled(field->group->fields_list));
+		purple_request_fields_all_required_filled(group->fields_list));
 }
 
 static void
@@ -711,7 +715,8 @@
 		if (purple_str_has_prefix(type_hint, "screenname"))
 		{
 			GtkWidget *optmenu = NULL;
-			GList *fields = field->group->fields;
+			PurpleRequestFieldGroup *group = purple_request_field_get_group(field);
+			GList *fields = group->fields;
 			while (fields)
 			{
 				PurpleRequestField *fld = fields->data;
@@ -722,9 +727,11 @@
 					const char *type_hint = purple_request_field_get_type_hint(fld);
 					if (type_hint != NULL && strcmp(type_hint, "account") == 0)
 					{
-						if (fld->ui_data == NULL)
-							fld->ui_data = create_account_field(fld);
-						optmenu = GTK_WIDGET(fld->ui_data);
+						optmenu = GTK_WIDGET(purple_request_field_get_ui_data(fld));
+						if (optmenu == NULL) {
+							optmenu = GTK_WIDGET(create_account_field(fld));
+							purple_request_field_set_ui_data(field, optmenu);
+						}
 						break;
 					}
 				}
@@ -1338,24 +1345,26 @@
 					gtk_widget_show(label);
 				}
 
-				if (field->ui_data != NULL)
-					widget = GTK_WIDGET(field->ui_data);
-				else if (type == PURPLE_REQUEST_FIELD_STRING)
-					widget = create_string_field(field);
-				else if (type == PURPLE_REQUEST_FIELD_INTEGER)
-					widget = create_int_field(field);
-				else if (type == PURPLE_REQUEST_FIELD_BOOLEAN)
-					widget = create_bool_field(field);
-				else if (type == PURPLE_REQUEST_FIELD_CHOICE)
-					widget = create_choice_field(field);
-				else if (type == PURPLE_REQUEST_FIELD_LIST)
-					widget = create_list_field(field);
-				else if (type == PURPLE_REQUEST_FIELD_IMAGE)
-					widget = create_image_field(field);
-				else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
-					widget = create_account_field(field);
-				else
-					continue;
+				widget = GTK_WIDGET(purple_request_field_get_ui_data(field));
+				if (widget == NULL)
+				{
+					if (type == PURPLE_REQUEST_FIELD_STRING)
+						widget = create_string_field(field);
+					else if (type == PURPLE_REQUEST_FIELD_INTEGER)
+						widget = create_int_field(field);
+					else if (type == PURPLE_REQUEST_FIELD_BOOLEAN)
+						widget = create_bool_field(field);
+					else if (type == PURPLE_REQUEST_FIELD_CHOICE)
+						widget = create_choice_field(field);
+					else if (type == PURPLE_REQUEST_FIELD_LIST)
+						widget = create_list_field(field);
+					else if (type == PURPLE_REQUEST_FIELD_IMAGE)
+						widget = create_image_field(field);
+					else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
+						widget = create_account_field(field);
+					else
+						continue;
+				}
 
 				if (label)
 					gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
@@ -1400,7 +1409,7 @@
 
 				gtk_widget_show(widget);
 
-				field->ui_data = widget;
+				purple_request_field_set_ui_data(field, widget);
 			}
 		}
 	}
--- a/pidgin/gtksavedstatuses.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksavedstatuses.c	Wed Mar 04 16:52:47 2009 +0000
@@ -76,7 +76,7 @@
 	STATUS_EDITOR_COLUMN_WINDOW,
 	STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS,
 	STATUS_EDITOR_COLUMN_ICON,
-	STATUS_EDITOR_COLUMN_SCREENNAME,
+	STATUS_EDITOR_COLUMN_USERNAME,
 	/** A hidden column containing the ID of this PurpleStatusType. */
 	STATUS_EDITOR_COLUMN_STATUS_ID,
 	STATUS_EDITOR_COLUMN_STATUS_NAME,
@@ -1007,7 +1007,7 @@
 	g_signal_connect(G_OBJECT(renderer), "toggled",
 			 G_CALLBACK(status_editor_substatus_cb), dialog);
 
-	/* Screen Name column */
+	/* Username column */
 	column = gtk_tree_view_column_new();
 	gtk_tree_view_column_set_resizable(column, TRUE);
 	gtk_tree_view_column_set_title(column, _("Username"));
@@ -1020,11 +1020,11 @@
 	gtk_tree_view_column_add_attribute(column, renderer, "pixbuf",
 									   STATUS_EDITOR_COLUMN_ICON);
 
-	/* Screen Name */
+	/* Username */
 	renderer = gtk_cell_renderer_text_new();
 	gtk_tree_view_column_pack_start(column, renderer, TRUE);
 	gtk_tree_view_column_add_attribute(column, renderer, "text",
-									   STATUS_EDITOR_COLUMN_SCREENNAME);
+									   STATUS_EDITOR_COLUMN_USERNAME);
 
 	/* Status column */
 	column = gtk_tree_view_column_new();
@@ -1086,7 +1086,7 @@
 			STATUS_EDITOR_COLUMN_ACCOUNT, account,
 			STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, (substatus != NULL),
 			STATUS_EDITOR_COLUMN_ICON, pixbuf,
-			STATUS_EDITOR_COLUMN_SCREENNAME, purple_account_get_username(account),
+			STATUS_EDITOR_COLUMN_USERNAME, purple_account_get_username(account),
 			STATUS_EDITOR_COLUMN_STATUS_ID, id,
 			STATUS_EDITOR_COLUMN_STATUS_NAME, name,
 			STATUS_EDITOR_COLUMN_STATUS_MESSAGE, message,
@@ -1218,6 +1218,8 @@
 	gtk_container_set_focus_chain(GTK_CONTAINER(hbox), focus_chain);
 	g_list_free(focus_chain);
 
+	gtk_imhtml_set_return_inserts_newline(dialog->message);
+
 	if ((saved_status != NULL) && (purple_savedstatus_get_message(saved_status) != NULL))
 		gtk_imhtml_append_text(GTK_IMHTML(text),
 							   purple_savedstatus_get_message(saved_status), 0);
@@ -1547,7 +1549,7 @@
 	/* Seed the input widgets with the current values */
 
 	/* Only look at the saved status if we can't find it in the parent status dialog's substatuses model */
-	gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter, 
+	gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter,
 		STATUS_EDITOR_COLUMN_ENABLE_SUBSTATUS, &parent_dialog_has_substatus, -1);
 	if (parent_dialog_has_substatus) {
 		gtk_tree_model_get(GTK_TREE_MODEL(status_editor->model), &iter,
@@ -1656,7 +1658,7 @@
 	 * And whether or not that emblem is visible
 	 */
 	SS_MENU_EMBLEM_VISIBLE_COLUMN,
-	
+
 	SS_MENU_NUM_COLUMNS
 };
 
--- a/pidgin/gtkscrollbook.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkscrollbook.h	Wed Mar 04 16:52:47 2009 +0000
@@ -51,7 +51,7 @@
 	GtkWidget *left_arrow;
 	GtkWidget *right_arrow;
 	GList *children;
-	
+
 	/* Padding for future expansion */
 	void (*_gtk_reserved1) (void);
 	void (*_gtk_reserved2) (void);
--- a/pidgin/gtksession.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksession.c	Wed Mar 04 16:52:47 2009 +0000
@@ -108,7 +108,7 @@
 	purple_debug(PURPLE_DEBUG_INFO, NULL, "done.\n");
 }
 
-/* We call any handler installed before (or after) ice_init but 
+/* We call any handler installed before (or after) ice_init but
  * avoid calling the default libICE handler which does an exit().
  *
  * This means we do nothing by default, which is probably correct,
--- a/pidgin/gtksmiley.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksmiley.c	Wed Mar 04 16:52:47 2009 +0000
@@ -225,6 +225,12 @@
 
 	entry = gtk_entry_get_text(GTK_ENTRY(s->smile));
 	if (!entry || !*entry) {
+		/*
+		 * TODO: We should enable/disable the add button based on
+		 *       whether the user has entered all required data.  That
+		 *       would eliminate the need for this check and provide a
+		 *       better user experience.
+		 */
 		purple_notify_error(s->parent, _("Custom Smiley"),
 				_("More Data needed"),
 				_("Please provide a shortcut to associate with the smiley."));
@@ -233,9 +239,12 @@
 
 	emoticon = purple_smileys_find_by_shortcut(entry);
 	if (emoticon && emoticon != s->smiley) {
+		gchar *msg;
+		msg = g_strdup_printf(_("A custom smiley for '%s' already exists.  "
+				"Please use a different shortcut."), entry);
 		purple_notify_error(s->parent, _("Custom Smiley"),
-				_("Duplicate Shortcut"),
-				_("A custom smiley for the selected shortcut already exists. Please specify a different shortcut."));
+				_("Duplicate Shortcut"), msg);
+		g_free(msg);
 		return;
 	}
 
@@ -273,7 +282,7 @@
 			gsize size = 0;
 			gchar *filename;
 			const gchar *dirname = purple_smileys_get_storing_dir();
-			
+
 			/* since this may be called before purple_smiley_new_* has ever been
 			 called, we create the storing dir, if it doesn't exist yet, to be
 			 able to save the pixbuf before adding the smiley */
@@ -286,7 +295,7 @@
 			                   dirname, g_strerror(errno));
 				}
 			}
-			
+
 			gdk_pixbuf_save_to_buffer(s->custom_pixbuf, &buffer, &size,
 				"png", NULL, "compression", "9", NULL, NULL);
 			filename = purple_util_get_image_filename(buffer, size);
@@ -385,7 +394,7 @@
 	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"));
+	label = gtk_label_new_with_mnemonic(_("_Image:"));
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 	gtk_widget_show(label);
 
@@ -415,8 +424,8 @@
 	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"));
+	/* Shortcut text */
+	label = gtk_label_new_with_mnemonic(_("S_hortcut text:"));
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 	gtk_widget_show(label);
 
@@ -520,9 +529,9 @@
 	gtk_tree_view_column_pack_start(column, rend, FALSE);
 	gtk_tree_view_column_add_attribute(column, rend, "pixbuf", ICON);
 
-	/* Shortcut */
+	/* Shortcut Text */
 	column = gtk_tree_view_column_new();
-	gtk_tree_view_column_set_title(column, _("Shortcut"));
+	gtk_tree_view_column_set_title(column, _("Shortcut Text"));
 	gtk_tree_view_column_set_resizable(column, TRUE);
 	gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
 
@@ -712,7 +721,7 @@
 			_("Custom Smiley Manager"),
 			NULL,
 			GTK_DIALOG_DESTROY_WITH_PARENT,
-			GTK_STOCK_ADD, GTK_RESPONSE_YES,
+			PIDGIN_STOCK_ADD, GTK_RESPONSE_YES,
 			PIDGIN_STOCK_MODIFY, PIDGIN_RESPONSE_MODIFY,
 			GTK_STOCK_DELETE, GTK_RESPONSE_NO,
 			GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
@@ -740,4 +749,3 @@
 
 	gtk_widget_show(win);
 }
-
--- a/pidgin/gtksmiley.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksmiley.h	Wed Mar 04 16:52:47 2009 +0000
@@ -25,8 +25,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 
-#ifndef _PIDGIN_GTKSMILEY_H_
-#define _PIDGIN_GTKSMILEY_H_
+#ifndef PIDGIN_GTKSMILEY_H
+#define PIDGIN_GTKSMILEY_H
 
 #include "smiley.h"
 
@@ -62,7 +62,7 @@
  *
  * @constreturn A GtkIMHmlSmiley list
  */
-GSList* pidgin_smileys_get_all(void);
+GSList *pidgin_smileys_get_all(void);
 
 /******************************************************************************
  * Smiley Manager
@@ -100,4 +100,4 @@
  */
 void pidgin_smiley_editor_set_image(PidginSmiley *editor, GdkPixbuf *image);
 
-#endif /* _PIDGIN_GTKSMILEY_H_*/
+#endif /* PIDGIN_GTKSMILEY_H */
--- a/pidgin/gtksound.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksound.c	Wed Mar 04 16:52:47 2009 +0000
@@ -40,6 +40,8 @@
 #include "notify.h"
 #include "prefs.h"
 #include "sound.h"
+#include "sound-theme.h"
+#include "theme-manager.h"
 #include "util.h"
 
 #include "gtkconv.h"
@@ -294,6 +296,7 @@
 	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/nick_said", "");
 	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/enabled/pounce_default", TRUE);
 	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/file/pounce_default", "");
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/sound/theme", "");
 	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/conv_focus", TRUE);
 	purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/mute", FALSE);
 	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/command", "");
@@ -557,6 +560,8 @@
 {
 	char *enable_pref;
 	char *file_pref;
+	const char *theme_name;
+	PurpleSoundTheme *theme;
 
 	if ((event == PURPLE_SOUND_BUDDY_ARRIVE) && mute_login_sounds)
 		return;
@@ -573,13 +578,31 @@
 	/* check NULL for sounds that don't have an option, ie buddy pounce */
 	if (purple_prefs_get_bool(enable_pref)) {
 		char *filename = g_strdup(purple_prefs_get_path(file_pref));
-		if(!filename || !strlen(filename)) {
+		theme_name = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme");
+
+		if (theme_name && *theme_name && (!filename || !*filename)) {
+			/* Use theme */
 			g_free(filename);
+
+			theme = PURPLE_SOUND_THEME(purple_theme_manager_find_theme(theme_name, "sound"));
+			filename = purple_sound_theme_get_file_full(theme, sounds[event].pref);
+
+			if(!g_file_test(filename, G_FILE_TEST_IS_REGULAR)){ /* Use Default sound in this case */
+				purple_debug_error("sound", "The file: (%s) %s\n from theme: %s, was not found or wasn't readable\n",
+							sounds[event].pref, filename, theme_name);
+				g_free(filename);
+			}
+		}
+
+		if (!filename || !strlen(filename)) {			    /* Use Default sounds */
+			g_free(filename);
+
 			/* XXX Consider creating a constant for "sounds/purple" to be shared with Finch */
 			filename = g_build_filename(DATADIR, "sounds", "purple", sounds[event].def, NULL);
 		}
 
 		purple_sound_play_file(filename, NULL);
+
 		g_free(filename);
 	}
 
@@ -587,6 +610,29 @@
 	g_free(file_pref);
 }
 
+gboolean
+pidgin_sound_is_customized(void)
+{
+	gint i;
+	gchar *path, *file;
+
+	for (i = 0; i < PURPLE_NUM_SOUNDS; i++) {
+		path = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s", sounds[i].pref);
+		file = g_strdup(purple_prefs_get_path(path));
+		g_free(path);
+
+		if (file && file[0] != '\0'){
+			g_free(file);
+			return TRUE;
+		}
+
+		g_free(file);
+	}
+
+	return FALSE;
+
+}
+
 static PurpleSoundUiOps sound_ui_ops =
 {
 	pidgin_sound_init,
--- a/pidgin/gtksound.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksound.h	Wed Mar 04 16:52:47 2009 +0000
@@ -63,6 +63,15 @@
  */
 void *pidgin_sound_get_handle(void);
 
+/**
+ * Returns true Pidgin is using customized sounds
+ *
+ * @return TRUE if non default sounds are used.
+ *
+ * @since 2.6.0
+ */
+gboolean pidgin_sound_is_customized(void);
+
 /*@}*/
 
 #endif /* _PIDGINSOUND_H_ */
--- a/pidgin/gtksourceiter.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksourceiter.c	Wed Mar 04 16:52:47 2009 +0000
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *  gtksourceiter.c
  *
  *  Pidgin is the legal property of its developers, whose names are too numerous
@@ -7,7 +7,7 @@
  *
  *  The following copyright notice applies to this file:
  *
- *  Copyright (C) 2000 - 2005 Paolo Maggi 
+ *  Copyright (C) 2000 - 2005 Paolo Maggi
  *  Copyright (C) 2002, 2003 Jeroen Zwartepoorte
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -206,7 +206,7 @@
 
 finally_2:
 	g_free (normalized_s1);
-	g_free (normalized_s2);	
+	g_free (normalized_s2);
 
 	return ret;
 }
@@ -247,7 +247,7 @@
 		{
 			/* being UTF8 correct sucks; this accounts for extra
 			   offsets coming from canonical decompositions of
-			   UTF8 characters (e.g. accented characters) which 
+			   UTF8 characters (e.g. accented characters) which
 			   g_utf8_normalize() performs */
 			gchar *normal;
 			gchar buffer[6];
@@ -530,14 +530,14 @@
  * @match_start: return location for start of match, or %%NULL.
  * @match_end: return location for end of match, or %%NULL.
  * @limit: bound for the search, or %%NULL for the end of the buffer.
- * 
- * Searches forward for @str. Any match is returned by setting 
- * @match_start to the first character of the match and @match_end to the 
+ *
+ * Searches forward for @str. Any match is returned by setting
+ * @match_start to the first character of the match and @match_end to the
  * first character after the match. The search will not continue past
  * @limit. Note that a search is a linear or O(n) operation, so you
  * may wish to use @limit to avoid locking up your UI on large
  * buffers.
- * 
+ *
  * If the #GTK_SOURCE_SEARCH_VISIBLE_ONLY flag is present, the match may
  * have invisible text interspersed in @str. i.e. @str will be a
  * possibly-noncontiguous subsequence of the matched range. similarly,
@@ -550,7 +550,7 @@
  *
  * Same as gtk_text_iter_forward_search(), but supports case insensitive
  * searching.
- * 
+ *
  * Return value: whether a match was found.
  **/
 gboolean
@@ -574,7 +574,7 @@
 	if ((flags & GTK_SOURCE_SEARCH_CASE_INSENSITIVE) == 0)
 		return gtk_text_iter_forward_search (iter, str, flags,
 						     match_start, match_end,
-						     limit); 
+						     limit);
 
 	if (limit && gtk_text_iter_compare (iter, limit) >= 0)
 		return FALSE;
@@ -650,10 +650,10 @@
  * @match_start: return location for start of match, or %%NULL.
  * @match_end: return location for end of match, or %%NULL.
  * @limit: location of last possible @match_start, or %%NULL for start of buffer.
- * 
+ *
  * Same as gtk_text_iter_backward_search(), but supports case insensitive
  * searching.
- * 
+ *
  * Return value: whether a match was found.
  **/
 gboolean
@@ -677,7 +677,7 @@
 	if ((flags & GTK_SOURCE_SEARCH_CASE_INSENSITIVE) == 0)
 		return gtk_text_iter_backward_search (iter, str, flags,
 						      match_start, match_end,
-						      limit); 
+						      limit);
 
 	if (limit && gtk_text_iter_compare (iter, limit) <= 0)
 		return FALSE;
--- a/pidgin/gtksourceiter.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksourceiter.h	Wed Mar 04 16:52:47 2009 +0000
@@ -1,4 +1,4 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *  gtksourceiter.h
  *
  *  Pidgin is the legal property of its developers, whose names are too numerous
@@ -7,7 +7,7 @@
  *
  *  The following copyright notice applies to this file:
  *
- *  Copyright (C) 2000 - 2005 Paolo Maggi 
+ *  Copyright (C) 2000 - 2005 Paolo Maggi
  *  Copyright (C) 2002, 2003 Jeroen Zwartepoorte
  *
  *  This program is free software; you can redistribute it and/or modify
--- a/pidgin/gtksourceundomanager.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksourceundomanager.c	Wed Mar 04 16:52:47 2009 +0000
@@ -4,8 +4,8 @@
  * This file is part of GtkSourceView
  *
  * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- * Copyright (C) 2002-2005  Paolo Maggi 
+ * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
+ * Copyright (C) 2002-2005  Paolo Maggi
  *
  * 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
@@ -19,7 +19,7 @@
  *
  * 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, 
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
  * Boston, MA 02111-1301, USA.
  */
 
@@ -49,14 +49,14 @@
 	GTK_SOURCE_UNDO_ACTION_INSERT_ANCHOR,
 } GtkSourceUndoActionType;
 
-/* 
+/*
  * We use offsets instead of GtkTextIters because the last ones
  * require to much memory in this context without giving us any advantage.
- */ 
+ */
 
 struct _GtkSourceUndoInsertAction
 {
-	gint   pos; 
+	gint   pos;
 	gchar *text;
 	gint   length;
 	gint   chars;
@@ -79,7 +79,7 @@
 struct _GtkSourceUndoAction
 {
 	GtkSourceUndoActionType action_type;
-	
+
 	union {
 		GtkSourceUndoInsertAction  insert;
 		GtkSourceUndoDeleteAction  delete;
@@ -92,7 +92,7 @@
 	guint mergeable : 1;
 
 	/* It is TRUE whether the action is marked as "modified".
-	 * An action is marked as "modified" if it changed the 
+	 * An action is marked as "modified" if it changed the
 	 * state of the buffer from "not modified" to "modified". Only the first
 	 * action of a group can be marked as modified.
 	 * There can be a single action marked as "modified" in the actions list.
@@ -106,29 +106,29 @@
 struct _GtkSourceUndoManagerPrivate
 {
 	GtkTextBuffer	*document;
-	
+
 	GList*		 actions;
-	gint 		 next_redo;	
+	gint 		 next_redo;
 
 	gint 		 actions_in_current_group;
-	
+
 	gint		 running_not_undoable_actions;
 
 	gint		 num_of_groups;
 
 	gint		 max_undo_levels;
-	
+
 	guint	 	 can_undo : 1;
 	guint		 can_redo : 1;
-	
+
 	/* It is TRUE whether, while undoing an action of the current group (with order_in_group > 1),
 	 * the state of the buffer changed from "not modified" to "modified".
 	 */
-	guint	 	 modified_undoing_group : 1;	
+	guint	 	 modified_undoing_group : 1;
 
 	/* Pointer to the action (in the action list) marked as "modified".
-	 * It is NULL when no action is marked as "modified". 
-	 * It is INVALID when the action marked as "modified" has been removed 
+	 * It is NULL when no action is marked as "modified".
+	 * It is INVALID when the action marked as "modified" has been removed
 	 * from the action list (freeing the list or resizing it) */
 	GtkSourceUndoAction *modified_action;
 };
@@ -143,33 +143,33 @@
 static void gtk_source_undo_manager_init 			(GtkSourceUndoManager 		*um);
 static void gtk_source_undo_manager_finalize 			(GObject 			*object);
 
-static void gtk_source_undo_manager_insert_text_handler 	(GtkTextBuffer 			*buffer, 
+static void gtk_source_undo_manager_insert_text_handler 	(GtkTextBuffer 			*buffer,
 							 	 GtkTextIter 			*pos,
-		                             		 	 const 	gchar 			*text, 
-							 	 gint 				 length, 
+		                             		 	 const 	gchar 			*text,
+							 	 gint 				 length,
 							 	 GtkSourceUndoManager 		*um);
 static void gtk_source_undo_manager_insert_anchor_handler (GtkTextBuffer *buffer,
 			                   GtkTextIter            *pos,
 			                   GtkTextChildAnchor     *anchor,
 			                   GtkSourceUndoManager   *um);
-static void gtk_source_undo_manager_delete_range_handler 	(GtkTextBuffer 			*buffer, 
+static void gtk_source_undo_manager_delete_range_handler 	(GtkTextBuffer 			*buffer,
 							 	 GtkTextIter 			*start,
                         		      		 	 GtkTextIter 			*end,
 							 	 GtkSourceUndoManager 		*um);
-static void gtk_source_undo_manager_begin_user_action_handler 	(GtkTextBuffer 			*buffer, 
+static void gtk_source_undo_manager_begin_user_action_handler 	(GtkTextBuffer 			*buffer,
 								 GtkSourceUndoManager 		*um);
 static void gtk_source_undo_manager_modified_changed_handler	(GtkTextBuffer                  *buffer,
 								 GtkSourceUndoManager           *um);
 
 static void gtk_source_undo_manager_free_action_list 		(GtkSourceUndoManager 		*um);
 
-static void gtk_source_undo_manager_add_action 			(GtkSourceUndoManager 		*um, 
+static void gtk_source_undo_manager_add_action 			(GtkSourceUndoManager 		*um,
 		                                         	 const GtkSourceUndoAction 	*undo_action);
-static void gtk_source_undo_manager_free_first_n_actions 	(GtkSourceUndoManager 		*um, 
+static void gtk_source_undo_manager_free_first_n_actions 	(GtkSourceUndoManager 		*um,
 								 gint 				 n);
 static void gtk_source_undo_manager_check_list_size 		(GtkSourceUndoManager 		*um);
 
-static gboolean gtk_source_undo_manager_merge_action 		(GtkSourceUndoManager 		*um, 
+static gboolean gtk_source_undo_manager_merge_action 		(GtkSourceUndoManager 		*um,
 		                                        	 const GtkSourceUndoAction 	*undo_action);
 
 static GObjectClass 	*parent_class 				= NULL;
@@ -216,7 +216,7 @@
 
         klass->can_undo 	= NULL;
 	klass->can_redo 	= NULL;
-	
+
 	undo_manager_signals[CAN_UNDO] =
    		g_signal_new ("can_undo",
 			      G_OBJECT_CLASS_TYPE (object_class),
@@ -269,7 +269,7 @@
 
 	g_return_if_fail (object != NULL);
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (object));
-	
+
    	um = GTK_SOURCE_UNDO_MANAGER (object);
 
 	g_return_if_fail (um->priv != NULL);
@@ -280,19 +280,19 @@
 	}
 
 	g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document),
-			  G_CALLBACK (gtk_source_undo_manager_delete_range_handler), 
+			  G_CALLBACK (gtk_source_undo_manager_delete_range_handler),
 			  um);
 
 	g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document),
-			  G_CALLBACK (gtk_source_undo_manager_insert_text_handler), 
+			  G_CALLBACK (gtk_source_undo_manager_insert_text_handler),
 			  um);
-	
+
 	g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document),
-			  G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler), 
+			  G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler),
 			  um);
-	
+
 	g_signal_handlers_disconnect_by_func (G_OBJECT (um->priv->document),
-			  G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler), 
+			  G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler),
 			  um);
 
 	g_free (um->priv);
@@ -311,19 +311,19 @@
   	um->priv->document = buffer;
 
 	g_signal_connect (G_OBJECT (buffer), "insert_text",
-			  G_CALLBACK (gtk_source_undo_manager_insert_text_handler), 
+			  G_CALLBACK (gtk_source_undo_manager_insert_text_handler),
 			  um);
 
 	g_signal_connect (G_OBJECT (buffer), "insert_child_anchor",
-			  G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler), 
+			  G_CALLBACK (gtk_source_undo_manager_insert_anchor_handler),
 			  um);
 
 	g_signal_connect (G_OBJECT (buffer), "delete_range",
-			  G_CALLBACK (gtk_source_undo_manager_delete_range_handler), 
+			  G_CALLBACK (gtk_source_undo_manager_delete_range_handler),
 			  um);
 
 	g_signal_connect (G_OBJECT (buffer), "begin_user_action",
-			  G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler), 
+			  G_CALLBACK (gtk_source_undo_manager_begin_user_action_handler),
 			  um);
 
 	g_signal_connect (G_OBJECT (buffer), "modified_changed",
@@ -332,7 +332,7 @@
 	return um;
 }
 
-void 
+void
 gtk_source_undo_manager_begin_not_undoable_action (GtkSourceUndoManager *um)
 {
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
@@ -341,18 +341,18 @@
 	++um->priv->running_not_undoable_actions;
 }
 
-static void 
+static void
 gtk_source_undo_manager_end_not_undoable_action_internal (GtkSourceUndoManager *um)
 {
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
 	g_return_if_fail (um->priv != NULL);
 
 	g_return_if_fail (um->priv->running_not_undoable_actions > 0);
-	
+
 	--um->priv->running_not_undoable_actions;
 }
 
-void 
+void
 gtk_source_undo_manager_end_not_undoable_action (GtkSourceUndoManager *um)
 {
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
@@ -361,26 +361,26 @@
 	gtk_source_undo_manager_end_not_undoable_action_internal (um);
 
 	if (um->priv->running_not_undoable_actions == 0)
-	{	
+	{
 		gtk_source_undo_manager_free_action_list (um);
-	
-		um->priv->next_redo = -1;	
+
+		um->priv->next_redo = -1;
 
 		if (um->priv->can_undo)
 		{
 			um->priv->can_undo = FALSE;
-			g_signal_emit (G_OBJECT (um), 
-				       undo_manager_signals [CAN_UNDO], 
-				       0, 
+			g_signal_emit (G_OBJECT (um),
+				       undo_manager_signals [CAN_UNDO],
+				       0,
 				       FALSE);
 		}
 
 		if (um->priv->can_redo)
 		{
 			um->priv->can_redo = FALSE;
-			g_signal_emit (G_OBJECT (um), 
-				       undo_manager_signals [CAN_REDO], 
-				       0, 
+			g_signal_emit (G_OBJECT (um),
+				       undo_manager_signals [CAN_REDO],
+				       0,
 				       FALSE);
 		}
 	}
@@ -395,7 +395,7 @@
 	return um->priv->can_undo;
 }
 
-gboolean 
+gboolean
 gtk_source_undo_manager_can_redo (const GtkSourceUndoManager *um)
 {
 	g_return_val_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um), FALSE);
@@ -408,31 +408,31 @@
 set_cursor (GtkTextBuffer *buffer, gint cursor)
 {
 	GtkTextIter iter;
-	
+
 	/* Place the cursor at the requested position */
 	gtk_text_buffer_get_iter_at_offset (buffer, &iter, cursor);
 	gtk_text_buffer_place_cursor (buffer, &iter);
 }
 
-static void 
+static void
 insert_text (GtkTextBuffer *buffer, gint pos, const gchar *text, gint len)
 {
 	GtkTextIter iter;
-	
+
 	gtk_text_buffer_get_iter_at_offset (buffer, &iter, pos);
 	gtk_text_buffer_insert (buffer, &iter, text, len);
 }
 
-static void 
+static void
 insert_anchor (GtkTextBuffer *buffer, gint pos, GtkTextChildAnchor *anchor)
 {
 	GtkTextIter iter;
-	
+
 	gtk_text_buffer_get_iter_at_offset (buffer, &iter, pos);
 	gtk_text_buffer_insert_child_anchor (buffer, &iter, anchor);
 }
 
-static void 
+static void
 delete_text (GtkTextBuffer *buffer, gint start, gint end)
 {
 	GtkTextIter start_iter;
@@ -464,7 +464,7 @@
 	return gtk_text_buffer_get_slice (buffer, &start_iter, &end_iter, TRUE);
 }
 
-void 
+void
 gtk_source_undo_manager_undo (GtkSourceUndoManager *um)
 {
 	GtkSourceUndoAction *undo_action;
@@ -473,13 +473,13 @@
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
 	g_return_if_fail (um->priv != NULL);
 	g_return_if_fail (um->priv->can_undo);
-	
+
 	um->priv->modified_undoing_group = FALSE;
 
 	gtk_source_undo_manager_begin_not_undoable_action (um);
 
 	do
-	{	
+	{
 		undo_action = g_list_nth_data (um->priv->actions, um->priv->next_redo + 1);
 		g_return_if_fail (undo_action != NULL);
 
@@ -490,7 +490,7 @@
 		if (undo_action->order_in_group <= 1)
 		{
 			/* Set modified to TRUE only if the buffer did not change its state from
-			 * "not modified" to "modified" undoing an action (with order_in_group > 1) 
+			 * "not modified" to "modified" undoing an action (with order_in_group > 1)
 			 * in current group. */
 			modified = (undo_action->modified && !um->priv->modified_undoing_group);
 		}
@@ -499,31 +499,31 @@
 		{
 			case GTK_SOURCE_UNDO_ACTION_DELETE:
 				insert_text (
-					um->priv->document, 
-					undo_action->action.delete.start, 
+					um->priv->document,
+					undo_action->action.delete.start,
 					undo_action->action.delete.text,
 					strlen (undo_action->action.delete.text));
 
 				if (undo_action->action.delete.forward)
 					set_cursor (
-						um->priv->document, 
+						um->priv->document,
 						undo_action->action.delete.start);
 				else
 					set_cursor (
-						um->priv->document, 
+						um->priv->document,
 						undo_action->action.delete.end);
 
 				break;
-				
+
 			case GTK_SOURCE_UNDO_ACTION_INSERT:
 				delete_text (
-					um->priv->document, 
-					undo_action->action.insert.pos, 
-					undo_action->action.insert.pos + 
-						undo_action->action.insert.chars); 
+					um->priv->document,
+					undo_action->action.insert.pos,
+					undo_action->action.insert.pos +
+						undo_action->action.insert.chars);
 
 				set_cursor (
-					um->priv->document, 
+					um->priv->document,
 					undo_action->action.insert.pos);
 				break;
 
@@ -551,29 +551,29 @@
 	}
 
 	gtk_source_undo_manager_end_not_undoable_action_internal (um);
-	
+
 	um->priv->modified_undoing_group = FALSE;
 
 	if (!um->priv->can_redo)
 	{
 		um->priv->can_redo = TRUE;
-		g_signal_emit (G_OBJECT (um), 
-			       undo_manager_signals [CAN_REDO], 
-			       0, 
+		g_signal_emit (G_OBJECT (um),
+			       undo_manager_signals [CAN_REDO],
+			       0,
 			       TRUE);
 	}
 
 	if (um->priv->next_redo >= (gint)(g_list_length (um->priv->actions) - 1))
 	{
 		um->priv->can_undo = FALSE;
-		g_signal_emit (G_OBJECT (um), 
-			       undo_manager_signals [CAN_UNDO], 
-			       0, 
+		g_signal_emit (G_OBJECT (um),
+			       undo_manager_signals [CAN_UNDO],
+			       0,
 			       FALSE);
 	}
 }
 
-void 
+void
 gtk_source_undo_manager_redo (GtkSourceUndoManager *um)
 {
 	GtkSourceUndoAction *undo_action;
@@ -582,7 +582,7 @@
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
 	g_return_if_fail (um->priv != NULL);
 	g_return_if_fail (um->priv->can_redo);
-	
+
 	undo_action = g_list_nth_data (um->priv->actions, um->priv->next_redo);
 	g_return_if_fail (undo_action != NULL);
 
@@ -597,29 +597,29 @@
 		}
 
 		--um->priv->next_redo;
-	
+
 		switch (undo_action->action_type)
 		{
 			case GTK_SOURCE_UNDO_ACTION_DELETE:
 				delete_text (
-					um->priv->document, 
-					undo_action->action.delete.start, 
-					undo_action->action.delete.end); 
+					um->priv->document,
+					undo_action->action.delete.start,
+					undo_action->action.delete.end);
 
 				set_cursor (
 					um->priv->document,
 					undo_action->action.delete.start);
 
 				break;
-				
+
 			case GTK_SOURCE_UNDO_ACTION_INSERT:
 				set_cursor (
 					um->priv->document,
 					undo_action->action.insert.pos);
 
 				insert_text (
-					um->priv->document, 
-					undo_action->action.insert.pos, 
+					um->priv->document,
+					undo_action->action.insert.pos,
 					undo_action->action.insert.text,
 					undo_action->action.insert.length);
 
@@ -646,7 +646,7 @@
 			undo_action = NULL;
 		else
 			undo_action = g_list_nth_data (um->priv->actions, um->priv->next_redo);
-			
+
 	} while ((undo_action != NULL) && (undo_action->order_in_group > 1));
 
 	if (modified)
@@ -689,7 +689,7 @@
 	g_free (action);
 }
 
-static void 
+static void
 gtk_source_undo_manager_free_action_list (GtkSourceUndoManager *um)
 {
 	GList *l;
@@ -712,18 +712,18 @@
 	}
 
 	g_list_free (um->priv->actions);
-	um->priv->actions = NULL;	
+	um->priv->actions = NULL;
 }
 
-static void 
-gtk_source_undo_manager_insert_text_handler (GtkTextBuffer 		*buffer, 
+static void
+gtk_source_undo_manager_insert_text_handler (GtkTextBuffer 		*buffer,
 					     GtkTextIter 		*pos,
-		                             const gchar 		*text, 
-					     gint 			 length, 
+		                             const gchar 		*text,
+					     gint 			 length,
 					     GtkSourceUndoManager 	*um)
 {
 	GtkSourceUndoAction undo_action;
-	
+
 	if (um->priv->running_not_undoable_actions > 0)
 		return;
 
@@ -766,15 +766,15 @@
 	gtk_source_undo_manager_add_action (um, &undo_action);
 }
 
-static void 
-gtk_source_undo_manager_delete_range_handler (GtkTextBuffer 		*buffer, 
+static void
+gtk_source_undo_manager_delete_range_handler (GtkTextBuffer 		*buffer,
 					      GtkTextIter 		*start,
-                        		      GtkTextIter 		*end, 
+                        		      GtkTextIter 		*end,
 					      GtkSourceUndoManager 	*um)
 {
 	GtkSourceUndoAction undo_action;
 	GtkTextIter insert_iter;
-	
+
 	if (um->priv->running_not_undoable_actions > 0)
 		return;
 
@@ -805,14 +805,14 @@
 		undo_action.mergeable = TRUE;
 
 	undo_action.modified = FALSE;
-	
+
 	gtk_source_undo_manager_add_action (um, &undo_action);
 
 	g_free (undo_action.action.delete.text);
 
 }
 
-static void 
+static void
 gtk_source_undo_manager_begin_user_action_handler (GtkTextBuffer *buffer, GtkSourceUndoManager *um)
 {
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
@@ -825,11 +825,11 @@
 }
 
 static void
-gtk_source_undo_manager_add_action (GtkSourceUndoManager 	*um, 
+gtk_source_undo_manager_add_action (GtkSourceUndoManager 	*um,
 				    const GtkSourceUndoAction 	*undo_action)
 {
 	GtkSourceUndoAction* action;
-	
+
 	if (um->priv->next_redo >= 0)
 	{
 		gtk_source_undo_manager_free_first_n_actions (um, um->priv->next_redo + 1);
@@ -845,7 +845,7 @@
 		if (action->action_type == GTK_SOURCE_UNDO_ACTION_INSERT)
 			action->action.insert.text = g_strndup (undo_action->action.insert.text, undo_action->action.insert.length);
 		else if (action->action_type == GTK_SOURCE_UNDO_ACTION_DELETE)
-			action->action.delete.text = g_strdup (undo_action->action.delete.text); 
+			action->action.delete.text = g_strdup (undo_action->action.delete.text);
 		else if (action->action_type == GTK_SOURCE_UNDO_ACTION_INSERT_ANCHOR)
 		{
 			/* Nothing needs to be done */
@@ -855,16 +855,16 @@
 			g_free (action);
 			g_return_if_reached ();
 		}
-		
+
 		++um->priv->actions_in_current_group;
 		action->order_in_group = um->priv->actions_in_current_group;
 
 		if (action->order_in_group == 1)
 			++um->priv->num_of_groups;
-	
+
 		um->priv->actions = g_list_prepend (um->priv->actions, action);
 	}
-	
+
 	gtk_source_undo_manager_check_list_size (um);
 
 	if (!um->priv->can_undo)
@@ -880,8 +880,8 @@
 	}
 }
 
-static void 
-gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager	*um, 
+static void
+gtk_source_undo_manager_free_first_n_actions (GtkSourceUndoManager	*um,
 					      gint 			 n)
 {
 	gint i;
@@ -904,21 +904,21 @@
 		um->priv->actions = g_list_delete_link (um->priv->actions,
 							um->priv->actions);
 
-		if (um->priv->actions == NULL) 
+		if (um->priv->actions == NULL)
 			return;
 	}
 }
 
-static void 
+static void
 gtk_source_undo_manager_check_list_size (GtkSourceUndoManager *um)
 {
 	gint undo_levels;
-	
+
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
 	g_return_if_fail (um->priv != NULL);
-	
+
 	undo_levels = gtk_source_undo_manager_get_max_undo_levels (um);
-	
+
 	if (undo_levels < 1)
 		return;
 
@@ -926,14 +926,14 @@
 	{
 		GtkSourceUndoAction *undo_action;
 		GList *last;
-		
+
 		last = g_list_last (um->priv->actions);
 		undo_action = (GtkSourceUndoAction*) last->data;
-			
+
 		do
 		{
 			GList *tmp;
-			
+
 			if (undo_action->order_in_group == 1)
 				--um->priv->num_of_groups;
 
@@ -945,32 +945,32 @@
 			tmp = g_list_previous (last);
 			um->priv->actions = g_list_delete_link (um->priv->actions, last);
 			last = tmp;
-			g_return_if_fail (last != NULL); 
+			g_return_if_fail (last != NULL);
 
 			undo_action = (GtkSourceUndoAction*) last->data;
 
-		} while ((undo_action->order_in_group > 1) || 
+		} while ((undo_action->order_in_group > 1) ||
 			 (um->priv->num_of_groups > undo_levels));
-	}	
+	}
 }
 
 /**
  * gtk_source_undo_manager_merge_action:
- * @um: a #GtkSourceUndoManager. 
+ * @um: a #GtkSourceUndoManager.
  * @undo_action: a #GtkSourceUndoAction.
- * 
+ *
  * This function tries to merge the undo action at the top of
  * the stack with a new undo action. So when we undo for example
  * typing, we can undo the whole word and not each letter by itself.
- * 
- * Return Value: %TRUE is merge was sucessful, %FALSE otherwise.
+ *
+ * Return Value: %TRUE is merge was successful, %FALSE otherwise.
  **/
-static gboolean 
-gtk_source_undo_manager_merge_action (GtkSourceUndoManager 	*um, 
+static gboolean
+gtk_source_undo_manager_merge_action (GtkSourceUndoManager 	*um,
 				      const GtkSourceUndoAction *undo_action)
 {
 	GtkSourceUndoAction *last_action;
-	
+
 	g_return_val_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um), FALSE);
 	g_return_val_if_fail (um->priv != NULL, FALSE);
 
@@ -990,7 +990,7 @@
 	}
 
 	if (undo_action->action_type == GTK_SOURCE_UNDO_ACTION_DELETE)
-	{				
+	{
 		if ((last_action->action.delete.forward != undo_action->action.delete.forward) ||
 		    ((last_action->action.delete.start != undo_action->action.delete.start) &&
 		     (last_action->action.delete.start != undo_action->action.delete.end)))
@@ -998,14 +998,14 @@
 			last_action->mergeable = FALSE;
 			return FALSE;
 		}
-		
+
 		if (last_action->action.delete.start == undo_action->action.delete.start)
 		{
 			gchar *str;
-			
+
 #define L  (last_action->action.delete.end - last_action->action.delete.start - 1)
 #define g_utf8_get_char_at(p,i) g_utf8_get_char(g_utf8_offset_to_pointer((p),(i)))
-		
+
 			/* Deleted with the delete key */
 			if ((g_utf8_get_char (undo_action->action.delete.text) != ' ') &&
 			    (g_utf8_get_char (undo_action->action.delete.text) != '\t') &&
@@ -1015,19 +1015,19 @@
 				last_action->mergeable = FALSE;
 				return FALSE;
 			}
-			
-			str = g_strdup_printf ("%s%s", last_action->action.delete.text, 
+
+			str = g_strdup_printf ("%s%s", last_action->action.delete.text,
 				undo_action->action.delete.text);
-			
+
 			g_free (last_action->action.delete.text);
-			last_action->action.delete.end += (undo_action->action.delete.end - 
+			last_action->action.delete.end += (undo_action->action.delete.end -
 							   undo_action->action.delete.start);
 			last_action->action.delete.text = str;
 		}
 		else
 		{
 			gchar *str;
-			
+
 			/* Deleted with the backspace key */
 			if ((g_utf8_get_char (undo_action->action.delete.text) != ' ') &&
 			    (g_utf8_get_char (undo_action->action.delete.text) != '\t') &&
@@ -1038,9 +1038,9 @@
 				return FALSE;
 			}
 
-			str = g_strdup_printf ("%s%s", undo_action->action.delete.text, 
+			str = g_strdup_printf ("%s%s", undo_action->action.delete.text,
 				last_action->action.delete.text);
-			
+
 			g_free (last_action->action.delete.text);
 			last_action->action.delete.start = undo_action->action.delete.start;
 			last_action->action.delete.text = str;
@@ -1049,10 +1049,10 @@
 	else if (undo_action->action_type == GTK_SOURCE_UNDO_ACTION_INSERT)
 	{
 		gchar* str;
-		
+
 #define I (last_action->action.insert.chars - 1)
-		
-		if ((undo_action->action.insert.pos != 
+
+		if ((undo_action->action.insert.pos !=
 		     	(last_action->action.insert.pos + last_action->action.insert.chars)) ||
 		    ((g_utf8_get_char (undo_action->action.insert.text) != ' ') &&
 		      (g_utf8_get_char (undo_action->action.insert.text) != '\t') &&
@@ -1064,9 +1064,9 @@
 			return FALSE;
 		}
 
-		str = g_strdup_printf ("%s%s", last_action->action.insert.text, 
+		str = g_strdup_printf ("%s%s", last_action->action.insert.text,
 				undo_action->action.insert.text);
-		
+
 		g_free (last_action->action.insert.text);
 		last_action->action.insert.length += undo_action->action.insert.length;
 		last_action->action.insert.text = str;
@@ -1080,7 +1080,7 @@
 	else
 		/* Unknown action inside undo merge encountered */
 		g_return_val_if_reached (TRUE);
-		
+
 	return TRUE;
 }
 
@@ -1098,7 +1098,7 @@
 				  	     gint			 max_undo_levels)
 {
 	gint old_levels;
-	
+
 	g_return_if_fail (um != NULL);
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
 
@@ -1107,7 +1107,7 @@
 
 	if (max_undo_levels < 1)
 		return;
-		
+
 	if (old_levels > max_undo_levels)
 	{
 		/* strip redo actions first */
@@ -1116,7 +1116,7 @@
 			gtk_source_undo_manager_free_first_n_actions (um, 1);
 			um->priv->next_redo--;
 		}
-		
+
 		/* now remove undo actions if necessary */
 		gtk_source_undo_manager_check_list_size (um);
 
@@ -1142,7 +1142,7 @@
 {
 	GtkSourceUndoAction *action;
 	GList *list;
-	
+
 	g_return_if_fail (GTK_SOURCE_IS_UNDO_MANAGER (um));
 	g_return_if_fail (um->priv != NULL);
 
@@ -1157,7 +1157,7 @@
 		action = NULL;
 
 	if (gtk_text_buffer_get_modified (buffer) == FALSE)
-	{	
+	{
 		if (action != NULL)
 			action->mergeable = FALSE;
 
@@ -1178,7 +1178,7 @@
 
 		return;
 	}
-	
+
 	/* gtk_text_buffer_get_modified (buffer) == TRUE */
 
 	g_return_if_fail (um->priv->modified_action == NULL);
--- a/pidgin/gtksourceundomanager.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtksourceundomanager.h	Wed Mar 04 16:52:47 2009 +0000
@@ -4,8 +4,8 @@
  * This file is part of GtkSourceView
  *
  * Copyright (C) 1998, 1999 Alex Roberts, Evan Lawrence
- * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi 
- * Copyright (C) 2002, 2003 Paolo Maggi 
+ * Copyright (C) 2000, 2001 Chema Celorio, Paolo Maggi
+ * Copyright (C) 2002, 2003 Paolo Maggi
  *
  * 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
@@ -19,10 +19,10 @@
  *
  * 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, 
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
  * Boston, MA 02111-1301, USA. * *
  */
- 
+
 #ifndef __GTK_SOURCE_UNDO_MANAGER_H__
 #define __GTK_SOURCE_UNDO_MANAGER_H__
 
@@ -44,7 +44,7 @@
 struct _GtkSourceUndoManager
 {
 	GObject base;
-	
+
 	GtkSourceUndoManagerPrivate *priv;
 };
 
@@ -67,14 +67,14 @@
 void			gtk_source_undo_manager_undo 		(GtkSourceUndoManager 	*um);
 void			gtk_source_undo_manager_redo 		(GtkSourceUndoManager 	*um);
 
-void			gtk_source_undo_manager_begin_not_undoable_action 
+void			gtk_source_undo_manager_begin_not_undoable_action
 								(GtkSourceUndoManager	*um);
-void			gtk_source_undo_manager_end_not_undoable_action 
+void			gtk_source_undo_manager_end_not_undoable_action
 								(GtkSourceUndoManager	*um);
 
-gint			gtk_source_undo_manager_get_max_undo_levels 
+gint			gtk_source_undo_manager_get_max_undo_levels
 								(GtkSourceUndoManager 	*um);
-void			gtk_source_undo_manager_set_max_undo_levels 
+void			gtk_source_undo_manager_set_max_undo_levels
 								(GtkSourceUndoManager 	*um,
 				  	     			 gint		 	 undo_levels);
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkstatus-icon-theme.c	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,72 @@
+/*
+ * Status Icon Themes for 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 "gtkstatus-icon-theme.h"
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/******************************************************************************
+ * GObject Stuff
+ *****************************************************************************/
+
+static void
+pidgin_status_icon_theme_finalize(GObject *obj)
+{
+	parent_class->finalize(obj);
+}
+
+static void
+pidgin_status_icon_theme_class_init(PidginStatusIconThemeClass *klass)
+{
+	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
+
+	parent_class = g_type_class_peek_parent(klass);
+
+	obj_class->finalize = pidgin_status_icon_theme_finalize;
+}
+
+GType
+pidgin_status_icon_theme_get_type(void)
+{
+	static GType type = 0;
+	if (type == 0) {
+		static const GTypeInfo info = {
+			sizeof (PidginStatusIconThemeClass),
+			NULL, /* base_init */
+			NULL, /* base_finalize */
+			(GClassInitFunc)pidgin_status_icon_theme_class_init, /* class_init */
+			NULL, /* class_finalize */
+			NULL, /* class_data */
+			sizeof (PidginStatusIconTheme),
+			0, /* n_preallocs */
+			NULL,
+			NULL, /* value table */
+		};
+		type = g_type_register_static(PIDGIN_TYPE_ICON_THEME,
+				"PidginStatusIconTheme", &info, 0);
+	}
+	return type;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/gtkstatus-icon-theme.h	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,71 @@
+/**
+ * @file status_icon-theme.h  Pidgin Icon Theme  Class API
+ */
+
+/* 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_STATUS_ICON_THEME_H
+#define PIDGIN_STATUS_ICON_THEME_H
+
+#include <glib-object.h>
+#include "gtkicon-theme.h"
+
+/**
+ * extends PidginIconTheme (gtkicon-theme.h)
+ * A pidgin status icon theme.
+ * This object represents a Pidgin status icon theme.
+ *
+ * PidginStatusIconTheme is a PidginIconTheme Object.
+ */
+typedef struct _PidginStatusIconTheme        PidginStatusIconTheme;
+typedef struct _PidginStatusIconThemeClass   PidginStatusIconThemeClass;
+
+#define PIDGIN_TYPE_STATUS_ICON_THEME            (pidgin_status_icon_theme_get_type ())
+#define PIDGIN_STATUS_ICON_THEME(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_STATUS_ICON_THEME, PidginStatusIconTheme))
+#define PIDGIN_STATUS_ICON_THEME_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_STATUS_ICON_THEME, PidginStatusIconThemeClass))
+#define PIDGIN_IS_STATUS_ICON_THEME(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_STATUS_ICON_THEME))
+#define PIDGIN_IS_STATUS_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_STATUS_ICON_THEME))
+#define PIDGIN_STATUS_ICON_THEME_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_STATUS_ICON_THEME, PidginStatusIconThemeClass))
+
+struct _PidginStatusIconTheme
+{
+	PidginIconTheme parent;
+};
+
+struct _PidginStatusIconThemeClass
+{
+	PidginIconThemeClass parent_class;
+};
+
+/**************************************************************************/
+/** @name Pidgin Status Icon Theme API                                          */
+/**************************************************************************/
+G_BEGIN_DECLS
+
+/**
+ * GObject foo.
+ * @internal.
+ */
+GType pidgin_status_icon_theme_get_type(void);
+
+G_END_DECLS
+#endif /* PIDGIN_STATUS_ICON_THEME_H */
--- a/pidgin/gtkstatusbox.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkstatusbox.c	Wed Mar 04 16:52:47 2009 +0000
@@ -1646,7 +1646,7 @@
 			pidgin_status_box_popdown (status_box);
 			return TRUE;
 		} else if (ewidget == status_box->toggle_button) {
-			status_box->popup_in_progress = TRUE;		
+			status_box->popup_in_progress = TRUE;
 		}
 
 		/* released outside treeview */
@@ -1698,7 +1698,7 @@
 				gtk_tree_path_free (path);
 				return ret;
 			}
-		} 
+		}
 	}
 	return FALSE;
 }
@@ -1777,9 +1777,9 @@
 	status_box->vsep = gtk_vseparator_new();
 	status_box->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
 
-	status_box->store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING, 
+	status_box->store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING,
 					       G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN);
-	status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING, 
+	status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING,
 							G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN);
 
 	gtk_cell_view_set_model(GTK_CELL_VIEW(status_box->cell_view), GTK_TREE_MODEL(status_box->store));
@@ -2529,7 +2529,7 @@
 {
 	GtkTextBuffer *buffer;
 	GtkTextIter iter;
-	int wrapped_lines;
+	int display_lines;
 	int lines;
 	GdkRectangle oneline;
 	int height;
@@ -2545,28 +2545,44 @@
 	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml));
 
 	height = 0;
-	wrapped_lines = 1;
+	display_lines = 1;
 	gtk_text_buffer_get_start_iter(buffer, &iter);
 	do {
 		gtk_text_view_get_iter_location(GTK_TEXT_VIEW(status_box->imhtml), &iter, &oneline);
 		height += oneline.height;
-		wrapped_lines++;
-		if (wrapped_lines > 4)
-			break;
-	} while (gtk_text_view_forward_display_line(GTK_TEXT_VIEW(status_box->imhtml), &iter));
+		display_lines++;
+	} while (display_lines <= 4 &&
+		gtk_text_view_forward_display_line(GTK_TEXT_VIEW(status_box->imhtml), &iter));
+
+	/*
+	 * This check fixes the case where the last character entered is a
+	 * newline (shift+return).  For some reason the
+	 * gtk_text_view_forward_display_line() function doesn't treat this
+	 * like a new line, and so we think the input box only needs to be
+	 * two lines instead of three, for example.  So we check if the
+	 * last character was a newline and add some extra height if so.
+	 */
+	if (display_lines <= 4
+		&& gtk_text_iter_backward_char(&iter)
+		&& gtk_text_iter_get_char(&iter) == '\n')
+	{
+		gtk_text_view_get_iter_location(GTK_TEXT_VIEW(status_box->imhtml), &iter, &oneline);
+		height += oneline.height;
+		display_lines++;
+	}
 
 	lines = gtk_text_buffer_get_line_count(buffer);
 
 	/* Show a maximum of 4 lines */
 	lines = MIN(lines, 4);
-	wrapped_lines = MIN(wrapped_lines, 4);
+	display_lines = MIN(display_lines, 4);
 
 	pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(status_box->imhtml));
 	pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(status_box->imhtml));
 	pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(status_box->imhtml));
 
 	height += (pad_top + pad_bottom) * lines;
-	height += (pad_inside) * (wrapped_lines - lines);
+	height += (pad_inside) * (display_lines - lines);
 
 	gtk_widget_set_size_request(status_box->vbox, -1, height + PIDGIN_HIG_BOX_SPACE);
 }
--- a/pidgin/gtkthemes.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkthemes.c	Wed Mar 04 16:52:47 2009 +0000
@@ -83,7 +83,7 @@
 {
 	char *theme_dir = NULL, *last_slash = NULL;
 	g_return_if_fail(NULL != file);
-	
+
 	if (!g_file_test(file, G_FILE_TEST_EXISTS)) return;
 	if ((theme_dir = g_strdup(file)) == NULL) return ;
 
@@ -169,12 +169,12 @@
 	for (wer = theme->list; wer != NULL; wer = theme->list) {
 		while (wer->smileys) {
 			GtkIMHtmlSmiley *uio = wer->smileys->data;
-			
+
 			if (uio->imhtml) {
 				g_signal_handlers_disconnect_matched(uio->imhtml, G_SIGNAL_MATCH_DATA,
 					0, 0, NULL, NULL, uio);
 			}
-				
+
 			if (uio->icon)
 				g_object_unref(uio->icon);
 			if (g_hash_table_lookup(already_freed, uio->file) == NULL) {
--- a/pidgin/gtkutils.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkutils.c	Wed Mar 04 16:52:47 2009 +0000
@@ -56,6 +56,9 @@
 #include "signals.h"
 #include "util.h"
 
+#include "gtkaccount.h"
+#include "gtkprefs.h"
+
 #include "gtkconv.h"
 #include "gtkdialogs.h"
 #include "gtkimhtml.h"
@@ -71,6 +74,7 @@
 } AopMenu;
 
 static guint accels_save_timer = 0;
+static GList *gnome_url_handlers = NULL;
 
 static gboolean
 url_clicked_idle_cb(gpointer data)
@@ -80,10 +84,12 @@
 	return FALSE;
 }
 
-static void
-url_clicked_cb(GtkWidget *w, const char *uri)
+static gboolean
+url_clicked_cb(GtkIMHtml *unused, GtkIMHtmlLink *link)
 {
+	const char *uri = gtk_imhtml_link_get_url(link);
 	g_idle_add(url_clicked_idle_cb, g_strdup(uri));
+	return TRUE;
 }
 
 static GtkIMHtmlFuncs gtkimhtml_cbs = {
@@ -102,9 +108,6 @@
 	g_return_if_fail(imhtml != NULL);
 	g_return_if_fail(GTK_IS_IMHTML(imhtml));
 
-	g_signal_connect(G_OBJECT(imhtml), "url_clicked",
-					 G_CALLBACK(url_clicked_cb), NULL);
-
 	pidgin_themes_smiley_themeize(imhtml);
 
 	gtk_imhtml_set_funcs(GTK_IMHTML(imhtml), &gtkimhtml_cbs);
@@ -567,7 +570,7 @@
 	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_container_add(GTK_CONTAINER(item), hbox);
 	gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
@@ -1924,7 +1927,7 @@
 #endif /* !NEW_STYLE_COMPLETION */
 
 #ifdef NEW_STYLE_COMPLETION
-static gboolean screenname_completion_match_func(GtkEntryCompletion *completion,
+static gboolean buddyname_completion_match_func(GtkEntryCompletion *completion,
 		const gchar *key, GtkTreeIter *iter, gpointer user_data)
 {
 	GtkTreeModel *model;
@@ -1957,7 +1960,7 @@
 	return FALSE;
 }
 
-static gboolean screenname_completion_match_selected_cb(GtkEntryCompletion *completion,
+static gboolean buddyname_completion_match_selected_cb(GtkEntryCompletion *completion,
 		GtkTreeModel *model, GtkTreeIter *iter, PidginCompletionData *data)
 {
 	GValue val;
@@ -1983,22 +1986,22 @@
 }
 
 static void
-add_screenname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias,
-								  const PurpleAccount *account, const char *screenname)
+add_buddyname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias,
+								  const PurpleAccount *account, const char *buddyname)
 {
 	GtkTreeIter iter;
 	gboolean completion_added = FALSE;
-	gchar *normalized_screenname;
+	gchar *normalized_buddyname;
 	gchar *tmp;
 
-	tmp = g_utf8_normalize(screenname, -1, G_NORMALIZE_DEFAULT);
-	normalized_screenname = g_utf8_casefold(tmp, -1);
+	tmp = g_utf8_normalize(buddyname, -1, G_NORMALIZE_DEFAULT);
+	normalized_buddyname = g_utf8_casefold(tmp, -1);
 	g_free(tmp);
 
 	/* There's no sense listing things like: 'xxx "xxx"'
-	   when the screenname and buddy alias match. */
-	if (buddy_alias && strcmp(buddy_alias, screenname)) {
-		char *completion_entry = g_strdup_printf("%s \"%s\"", screenname, buddy_alias);
+	   when the name and buddy alias match. */
+	if (buddy_alias && strcmp(buddy_alias, buddyname)) {
+		char *completion_entry = g_strdup_printf("%s \"%s\"", buddyname, buddy_alias);
 		char *tmp2 = g_utf8_normalize(buddy_alias, -1, G_NORMALIZE_DEFAULT);
 
 		tmp = g_utf8_casefold(tmp2, -1);
@@ -2007,8 +2010,8 @@
 		gtk_list_store_append(store, &iter);
 		gtk_list_store_set(store, &iter,
 				0, completion_entry,
-				1, screenname,
-				2, normalized_screenname,
+				1, buddyname,
+				2, normalized_buddyname,
 				3, tmp,
 				4, account,
 				-1);
@@ -2018,12 +2021,12 @@
 	}
 
 	/* There's no sense listing things like: 'xxx "xxx"'
-	   when the screenname and contact alias match. */
-	if (contact_alias && strcmp(contact_alias, screenname)) {
+	   when the name and contact alias match. */
+	if (contact_alias && strcmp(contact_alias, buddyname)) {
 		/* We don't want duplicates when the contact and buddy alias match. */
 		if (!buddy_alias || strcmp(contact_alias, buddy_alias)) {
 			char *completion_entry = g_strdup_printf("%s \"%s\"",
-							screenname, contact_alias);
+							buddyname, contact_alias);
 			char *tmp2 = g_utf8_normalize(contact_alias, -1, G_NORMALIZE_DEFAULT);
 
 			tmp = g_utf8_casefold(tmp2, -1);
@@ -2032,8 +2035,8 @@
 			gtk_list_store_append(store, &iter);
 			gtk_list_store_set(store, &iter,
 					0, completion_entry,
-					1, screenname,
-					2, normalized_screenname,
+					1, buddyname,
+					2, normalized_buddyname,
 					3, tmp,
 					4, account,
 					-1);
@@ -2044,18 +2047,18 @@
 	}
 
 	if (completion_added == FALSE) {
-		/* Add the buddy's screenname. */
+		/* Add the buddy's name. */
 		gtk_list_store_append(store, &iter);
 		gtk_list_store_set(store, &iter,
-				0, screenname,
-				1, screenname,
-				2, normalized_screenname,
+				0, buddyname,
+				1, buddyname,
+				2, normalized_buddyname,
 				3, NULL,
 				4, account,
 				-1);
 	}
 
-	g_free(normalized_screenname);
+	g_free(normalized_buddyname);
 }
 #endif /* NEW_STYLE_COMPLETION */
 
@@ -2064,8 +2067,8 @@
 	PidginFilterBuddyCompletionEntryFunc filter_func = data->filter_func;
 	gpointer user_data = data->filter_func_user_data;
 
- 	/* 1. Don't show buddies because we will have gotten them already.
- 	 * 2. The boxes that use this autocomplete code handle only IMs. */
+	/* 1. Don't show buddies because we will have gotten them already.
+	 * 2. The boxes that use this autocomplete code handle only IMs. */
 	if (!set->buddy && set->type == PURPLE_LOG_IM) {
 		PidginBuddyCompletionEntry entry;
 		entry.is_buddy = FALSE;
@@ -2073,7 +2076,7 @@
 
 		if (filter_func(&entry, user_data)) {
 #ifdef NEW_STYLE_COMPLETION
-			add_screenname_autocomplete_entry(data->store,
+			add_buddyname_autocomplete_entry(data->store,
 												NULL, NULL, set->account, set->name);
 #else
 			/* Steal the name for the GCompletion. */
@@ -2119,7 +2122,7 @@
 
 				if (filter_func(&entry, user_data)) {
 #ifdef NEW_STYLE_COMPLETION
-					add_screenname_autocomplete_entry(data->store,
+					add_buddyname_autocomplete_entry(data->store,
 														((PurpleContact *)cnode)->alias,
 														purple_buddy_get_contact_alias(entry.entry.buddy),
 														entry.entry.buddy->account,
@@ -2150,7 +2153,7 @@
 }
 
 static void
-screenname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data)
+buddyname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data)
 {
 	g_free(data);
 	purple_signals_disconnect_by_handle(widget);
@@ -2162,15 +2165,17 @@
 	add_completion_list(data);
 }
 
-
 void
 pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *accountopt, PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data)
 {
 	PidginCompletionData *data;
 
 #ifdef NEW_STYLE_COMPLETION
-	/* Store the displayed completion value, the screenname, the UTF-8 normalized & casefolded screenname,
-	 * the UTF-8 normalized & casefolded value for comparison, and the account. */
+	/*
+	 * Store the displayed completion value, the buddy name, the UTF-8
+	 * normalized & casefolded buddy name, the UTF-8 normalized &
+	 * casefolded value for comparison, and the account.
+	 */
 	GtkListStore *store;
 
 	GtkEntryCompletion *completion;
@@ -2191,15 +2196,15 @@
 
 	add_completion_list(data);
 
-	/* Sort the completion list by screenname. */
+	/* Sort the completion list by buddy name */
 	gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store),
 	                                     1, GTK_SORT_ASCENDING);
 
 	completion = gtk_entry_completion_new();
-	gtk_entry_completion_set_match_func(completion, screenname_completion_match_func, NULL, NULL);
+	gtk_entry_completion_set_match_func(completion, buddyname_completion_match_func, NULL, NULL);
 
 	g_signal_connect(G_OBJECT(completion), "match-selected",
-		G_CALLBACK(screenname_completion_match_selected_cb), data);
+		G_CALLBACK(buddyname_completion_match_selected_cb), data);
 
 	gtk_entry_set_completion(GTK_ENTRY(entry), completion);
 	g_object_unref(completion);
@@ -2246,7 +2251,7 @@
 	purple_signal_connect(purple_accounts_get_handle(), "account-removed", entry,
 						PURPLE_CALLBACK(repopulate_autocomplete), data);
 
-	g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(screenname_autocomplete_destroyed_cb), data);
+	g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(buddyname_autocomplete_destroyed_cb), data);
 }
 
 gboolean
@@ -3240,7 +3245,7 @@
  	style = gtk_widget_get_style(widget);
 	if (!style)
 		return "dim grey";
-	
+
 	snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
 	style->text_aa[GTK_STATE_NORMAL].red >> 8,
 	style->text_aa[GTK_STATE_NORMAL].green >> 8,
@@ -3480,3 +3485,198 @@
 	return pixbuf;
 }
 
+static void url_copy(GtkWidget *w, gchar *url)
+{
+	GtkClipboard *clipboard;
+
+	clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_PRIMARY);
+	gtk_clipboard_set_text(clipboard, url, -1);
+
+	clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_CLIPBOARD);
+	gtk_clipboard_set_text(clipboard, url, -1);
+}
+
+static gboolean
+link_context_menu(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
+{
+	GtkWidget *img, *item;
+	const char *url;
+
+	url = gtk_imhtml_link_get_url(link);
+
+	/* Open Link */
+	img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU);
+	item = gtk_image_menu_item_new_with_mnemonic(_("_Open Link"));
+	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
+	g_signal_connect_swapped(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_link_activate), link);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+	/* Copy Link Location */
+	img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
+	item = gtk_image_menu_item_new_with_mnemonic(_("_Copy Link Location"));
+	gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
+	g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(url_copy), (gpointer)url);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+	return TRUE;
+}
+
+static gboolean
+copy_email_address(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
+{
+	GtkWidget *img, *item;
+	const char *text;
+	char *address;
+#define MAILTOSIZE  (sizeof("mailto:") - 1)
+
+	text = gtk_imhtml_link_get_url(link);
+	g_return_val_if_fail(text && strlen(text) > MAILTOSIZE, FALSE);
+	address = (char*)text + MAILTOSIZE;
+
+	/* 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 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), address);
+	gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
+
+	return TRUE;
+}
+
+/* XXX: The following two functions are for demonstration purposes only! */
+static gboolean
+open_dialog(GtkIMHtml *imhtml, GtkIMHtmlLink *link)
+{
+	const char *url;
+	const char *str;
+
+	url = gtk_imhtml_link_get_url(link);
+	if (!url || strlen(url) < sizeof("open://"))
+		return FALSE;
+
+	str = url + sizeof("open://") - 1;
+
+	if (strcmp(str, "accounts") == 0)
+		pidgin_accounts_window_show();
+	else if (strcmp(str, "prefs") == 0)
+		pidgin_prefs_show();
+	else
+		return FALSE;
+	return TRUE;
+}
+
+static gboolean
+dummy(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
+{
+	return TRUE;
+}
+
+static gboolean
+register_gnome_url_handlers(void)
+{
+	char *tmp;
+	char *err;
+	char *c;
+	char *start;
+
+	tmp = g_find_program_in_path("gconftool-2");
+	if (tmp == NULL)
+		return FALSE;
+
+	tmp = NULL;
+	if (!g_spawn_command_line_sync("gconftool-2 --all-dirs /desktop/gnome/url-handlers",
+	                               &tmp, &err, NULL, NULL))
+	{
+		g_free(tmp);
+		g_free(err);
+		g_return_val_if_reached(FALSE);
+	}
+	g_free(err);
+	err = NULL;
+
+	for (c = start = tmp ; *c ; c++)
+	{
+		/* Skip leading spaces. */
+		if (c == start && *c == ' ')
+			start = c + 1;
+		else if (*c == '\n')
+		{
+			*c = '\0';
+			if (g_str_has_prefix(start, "/desktop/gnome/url-handlers/"))
+			{
+				char *cmd;
+				char *tmp2 = NULL;
+				char *protocol;
+
+				/* If there is an enabled boolean, honor it. */
+				cmd = g_strdup_printf("gconftool-2 -g %s/enabled", start);
+				if (g_spawn_command_line_sync(cmd, &tmp2, &err, NULL, NULL))
+				{
+					g_free(err);
+					err = NULL;
+					if (!strcmp(tmp2, "false\n"))
+					{
+						g_free(tmp2);
+						g_free(cmd);
+						start = c + 1;
+						continue;
+					}
+				}
+				g_free(cmd);
+				g_free(tmp2);
+
+				start += sizeof("/desktop/gnome/url-handlers/") - 1;
+
+				protocol = g_strdup_printf("%s:", start);
+				gnome_url_handlers = g_list_prepend(gnome_url_handlers, protocol);
+				gtk_imhtml_class_register_protocol(protocol, url_clicked_cb, link_context_menu);
+			}
+			start = c + 1;
+		}
+	}
+	g_free(tmp);
+
+	return (gnome_url_handlers != NULL);
+}
+
+void pidgin_utils_init(void)
+{
+	gtk_imhtml_class_register_protocol("http://", url_clicked_cb, link_context_menu);
+	gtk_imhtml_class_register_protocol("https://", url_clicked_cb, link_context_menu);
+	gtk_imhtml_class_register_protocol("ftp://", url_clicked_cb, link_context_menu);
+	gtk_imhtml_class_register_protocol("gopher://", url_clicked_cb, link_context_menu);
+	gtk_imhtml_class_register_protocol("mailto:", url_clicked_cb, copy_email_address);
+
+	/* Example custom URL handler. */
+	gtk_imhtml_class_register_protocol("open://", open_dialog, dummy);
+
+	/* If we're under GNOME, try registering the system URL handlers. */
+	if (purple_running_gnome())
+		register_gnome_url_handlers();
+}
+
+void pidgin_utils_uninit(void)
+{
+	gtk_imhtml_class_register_protocol("open://", NULL, NULL);
+
+	/* If we have GNOME handlers registered, unregister them. */
+	if (gnome_url_handlers)
+	{
+		GList *l;
+		for (l = gnome_url_handlers ; l ; l = l->next)
+		{
+			gtk_imhtml_class_register_protocol((char *)l->data, NULL, NULL);
+			g_free(l->data);
+		}
+		g_list_free(gnome_url_handlers);
+		gnome_url_handlers = NULL;
+		return;
+	}
+
+	gtk_imhtml_class_register_protocol("http://", NULL, NULL);
+	gtk_imhtml_class_register_protocol("https://", NULL, NULL);
+	gtk_imhtml_class_register_protocol("ftp://", NULL, NULL);
+	gtk_imhtml_class_register_protocol("mailto:", NULL, NULL);
+	gtk_imhtml_class_register_protocol("gopher://", NULL, NULL);
+}
+
--- a/pidgin/gtkutils.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkutils.h	Wed Mar 04 16:52:47 2009 +0000
@@ -136,7 +136,7 @@
  * Retrieves the main content box (vbox) from a pidgin dialog window
  *
  * @param dialog       The dialog window
- * @param homogeneous  TRUE if all children are to be given equal space allotments. 
+ * @param homogeneous  TRUE if all children are to be given equal space allotments.
  * @param spacing      the number of pixels to place by default between children
  *
  * @since 2.4.0
@@ -184,8 +184,8 @@
 void pidgin_toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle);
 
 /**
- * Checks if text has been entered into a GtkTextEntry widget.  If 
- * so, the GTK_RESPONSE_OK on the given dialog is set to TRUE.  
+ * Checks if text has been entered into a GtkTextEntry widget.  If
+ * so, the GTK_RESPONSE_OK on the given dialog is set to TRUE.
  * Otherwise GTK_RESPONSE_OK is set to FALSE.
  *
  * @param entry  The text entry widget.
@@ -355,7 +355,7 @@
  *
  * @param entry       The GtkEntry on which to setup autocomplete.
  * @param optmenu     A menu for accounts, returned by gaim_gtk_account_option_menu_new().
- *                    If @a optmenu is not @c NULL, it'll be updated when a screenname is chosen
+ *                    If @a optmenu is not @c NULL, it'll be updated when a username is chosen
  *                    from the autocomplete list.
  * @param filter_func A function for checking if an autocomplete entry
  *                    should be shown. This can be @c NULL.
@@ -364,7 +364,7 @@
 void pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *optmenu, PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data);
 
 /**
- * The default filter function for screenname autocomplete.
+ * The default filter function for username autocomplete.
  *
  * @param completion_entry The completion entry to filter.
  * @param all_accounts  If this is @c FALSE, only the autocompletion entries
@@ -385,9 +385,9 @@
  * @param entry     The GtkEntry on which to setup autocomplete.
  * @param optmenu   A menu for accounts, returned by
  *                  pidgin_account_option_menu_new().  If @a optmenu is not @c
- *                  NULL, it'll be updated when a screenname is chosen from the
+ *                  NULL, it'll be updated when a username is chosen from the
  *                  autocomplete list.
- * @param all       Whether to include screennames from disconnected accounts.
+ * @param all       Whether to include usernames from disconnected accounts.
  */
 void pidgin_setup_screenname_autocomplete(GtkWidget *entry, GtkWidget *optmenu, gboolean all);
 
@@ -473,7 +473,7 @@
 									 char **ret_alias);
 
 /**
- * Sets an ATK name for a given widget.  Also sets the labelled-by 
+ * Sets an ATK name for a given widget.  Also sets the labelled-by
  * and label-for ATK relationships.
  *
  * @param w The widget that we want to name.
@@ -509,10 +509,10 @@
 										gboolean *push_in, gpointer data);
 
 /**
- * A valid GtkMenuPositionFunc.  This is used to determine where 
- * to draw context menus when the menu is activated with the 
- * keyboard (shift+F10).  If the menu is activated with the mouse, 
- * then you should just use GTK's built-in position function, 
+ * A valid GtkMenuPositionFunc.  This is used to determine where
+ * to draw context menus when the menu is activated with the
+ * keyboard (shift+F10).  If the menu is activated with the mouse,
+ * then you should just use GTK's built-in position function,
  * because it does a better job of positioning the menu.
  *
  * @param menu The menu we are positioning.
@@ -612,13 +612,13 @@
  * @param parent      The parent window
  * @param callback    The callback to call when the window is closed. If the user chose an icon, the char* argument will point to its path
  * @param data        Data to pass to @a callback
- * @return            The file dialog 
+ * @return            The file dialog
  */
 GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char*,gpointer), gpointer data);
 
 /**
  * Converts a buddy icon to the required size and format
- * 
+ *
  * @param plugin     The prpl to convert the icon
  * @param path       The path of a file to convert
  * @param len        If not @c NULL, the length of the returned data will be set here.
@@ -706,7 +706,7 @@
 			const gchar *key, GtkTreeIter *iter, gpointer data);
 
 /**
- * Sets or resets a window to 'urgent,' by setting the URGENT hint in X 
+ * Sets or resets a window to 'urgent,' by setting the URGENT hint in X
  * or blinking in the win32 taskbar
  *
  * @param window  The window to draw attention to
@@ -792,7 +792,8 @@
  *
  * @param window    The window to make transient.
  *
- * @return  Whether the window was made transient or not.
+ * @return Whether the window was made transient or not.
+ *
  * @since 2.4.0
  */
 gboolean pidgin_auto_parent_window(GtkWidget *window);
@@ -818,9 +819,24 @@
  * @param  image   A PurpleStoredImage.
  *
  * @return   A GdkPixbuf created from the stored image.
+ *
  * @since 2.5.0
  */
-GdkPixbuf * pidgin_pixbuf_from_imgstore(PurpleStoredImage *image);
+GdkPixbuf *pidgin_pixbuf_from_imgstore(PurpleStoredImage *image);
+
+/**
+ * Initialize some utility functions.
+ *
+ * @since 2.6.0
+ */
+void pidgin_utils_init(void);
+
+/**
+ * Uninitialize some utility functions.
+ *
+ * @since 2.6.0
+ */
+void pidgin_utils_uninit(void);
 
 #endif /* _PIDGINUTILS_H_ */
 
--- a/pidgin/gtkwhiteboard.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/gtkwhiteboard.c	Wed Mar 04 16:52:47 2009 +0000
@@ -857,7 +857,7 @@
 {
 	GdkColor color;
 	GtkColorSelectionDialog *dialog;
-	
+
 	dialog = (GtkColorSelectionDialog *)gtk_color_selection_dialog_new(_("Select color"));
 
 	g_signal_connect(G_OBJECT(dialog->colorsel), "color-changed",
--- a/pidgin/pidgincombobox.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/pidgincombobox.c	Wed Mar 04 16:52:47 2009 +0000
@@ -112,7 +112,7 @@
 /* While debugging this evil code, I have learned that
  * there are actually 4 modes to this widget, which can
  * be characterized as follows
- * 
+ *
  * 1) menu mode, no child added
  *
  * tree_view -> NULL
@@ -127,9 +127,9 @@
  * popup_frame -> NULL
  *
  * 2) menu mode, child added
- * 
+ *
  * tree_view -> NULL
- * cell_view -> NULL 
+ * cell_view -> NULL
  * cell_view_frame -> NULL
  * button -> GtkToggleButton set_parent to combo
  * box -> NULL
@@ -140,7 +140,7 @@
  * popup_frame -> NULL
  *
  * 3) list mode, no child added
- * 
+ *
  * tree_view -> GtkTreeView, child of popup_frame
  * cell_view -> GtkCellView, regular child
  * cell_view_frame -> GtkFrame, set parent to combo
@@ -164,7 +164,7 @@
  * popup_widget -> tree_view
  * popup_window -> GtkWindow
  * popup_frame -> GtkFrame, child of popup_window
- * 
+ *
  */
 
 enum {
@@ -285,9 +285,9 @@
 						    gpointer          data);
 
 /* list */
-static void     gtk_combo_box_list_position        (GtkComboBox      *combo_box, 
-						    gint             *x, 
-						    gint             *y, 
+static void     gtk_combo_box_list_position        (GtkComboBox      *combo_box,
+						    gint             *x,
+						    gint             *y,
 						    gint             *width,
 						    gint             *height);
 
@@ -641,7 +641,7 @@
   if (GTK_WIDGET_REALIZED (widget))
     {
       if (combo_box->priv->tree_view && combo_box->priv->cell_view)
-	gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), 
+	gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
 					    &widget->style->base[GTK_WIDGET_STATE (widget)]);
     }
 
@@ -694,7 +694,7 @@
   gtk_combo_box_check_appearance (combo_box);
 
   if (combo_box->priv->tree_view && combo_box->priv->cell_view)
-    gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), 
+    gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
 					&widget->style->base[GTK_WIDGET_STATE (widget)]);
 }
 
@@ -725,7 +725,7 @@
       GTK_BIN (container)->child = NULL;
       gtk_widget_queue_resize (GTK_WIDGET (container));
     }
-  
+
   gtk_widget_set_parent (widget, GTK_WIDGET (container));
   GTK_BIN (container)->child = widget;
 
@@ -770,7 +770,7 @@
     appears_as_list = FALSE;
   else
     appears_as_list = TRUE;
-  
+
   if (appears_as_list)
     gtk_combo_box_list_destroy (combo_box);
   else if (GTK_IS_MENU (combo_box->priv->popup_widget))
@@ -785,7 +785,7 @@
       combo_box->priv->cell_view = gtk_cell_view_new ();
       gtk_widget_set_parent (combo_box->priv->cell_view, GTK_WIDGET (container));
       GTK_BIN (container)->child = combo_box->priv->cell_view;
-      
+
       gtk_widget_show (combo_box->priv->cell_view);
       gtk_cell_view_set_model (GTK_CELL_VIEW (combo_box->priv->cell_view),
 			       combo_box->priv->model);
@@ -856,7 +856,7 @@
   g_signal_handlers_disconnect_by_func (menu,
 					gtk_combo_box_menu_hide,
 					combo_box);
-  
+
   combo_box->priv->popup_widget = NULL;
 }
 
@@ -940,12 +940,12 @@
   GdkScreen *screen;
   gint monitor_num;
   GdkRectangle monitor;
-  
+
   /* FIXME: is using the size request here broken? */
    child = GTK_BIN (combo_box)->child;
-   
+
    gdk_window_get_origin (child->window, &sx, &sy);
-   
+
    if (GTK_WIDGET_NO_WINDOW (child))
       {
 	sx += child->allocation.x;
@@ -961,20 +961,20 @@
    *y = sy;
 
   screen = gtk_widget_get_screen (GTK_WIDGET (combo_box));
-  monitor_num = gdk_screen_get_monitor_at_window (screen, 
+  monitor_num = gdk_screen_get_monitor_at_window (screen,
 						  GTK_WIDGET (combo_box)->window);
   gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
-  
+
   if (*x < monitor.x)
     *x = monitor.x;
   else if (*x + req.width > monitor.x + monitor.width)
     *x = monitor.x + monitor.width - req.width;
-  
+
   if (monitor.y + monitor.height - *y - child->allocation.height >= req.height)
     *y += child->allocation.height;
   else if (*y - monitor.y >= req.height)
     *y -= req.height;
-  else if (monitor.y + monitor.height - *y - child->allocation.height > *y - monitor.y) 
+  else if (monitor.y + monitor.height - *y - child->allocation.height > *y - monitor.y)
     *y += child->allocation.height;
   else
     *y -= req.height;
@@ -1001,7 +1001,7 @@
   gint menu_width;
 
   g_return_if_fail (GTK_IS_COMBO_BOX (user_data));
-  
+
   combo_box = GTK_COMBO_BOX (user_data);
   widget = GTK_WIDGET (combo_box);
 
@@ -1042,7 +1042,7 @@
 
   /* Clamp the position on screen */
   screen_width = gdk_screen_get_width (gtk_widget_get_screen (widget));
-  
+
   if (menu_xpos < 0)
     menu_xpos = 0;
   else if ((menu_xpos + menu_width) > screen_width)
@@ -1066,13 +1066,13 @@
 
   combo_box = GTK_COMBO_BOX (user_data);
 
-  if (combo_box->priv->wrap_width > 0 || combo_box->priv->cell_view == NULL)	
+  if (combo_box->priv->wrap_width > 0 || combo_box->priv->cell_view == NULL)
     gtk_combo_box_menu_position_below (menu, x, y, push_in, user_data);
   else
     {
       menu_item = gtk_menu_get_active (GTK_MENU (combo_box->priv->popup_widget));
       if (menu_item)
-	gtk_menu_shell_select_item (GTK_MENU_SHELL (combo_box->priv->popup_widget), 
+	gtk_menu_shell_select_item (GTK_MENU_SHELL (combo_box->priv->popup_widget),
 				    menu_item);
 
       gtk_combo_box_menu_position_over (menu, x, y, push_in, user_data);
@@ -1082,9 +1082,9 @@
 #endif /* Gtk 2.2 */
 
 static void
-gtk_combo_box_list_position (GtkComboBox *combo_box, 
-			     gint        *x, 
-			     gint        *y, 
+gtk_combo_box_list_position (GtkComboBox *combo_box,
+			     gint        *x,
+			     gint        *y,
 			     gint        *width,
 			     gint        *height)
 {
@@ -1095,7 +1095,7 @@
   gint monitor_num;
   GdkRectangle monitor;
 #endif
-  
+
   sample = GTK_BIN (combo_box)->child;
 
   *width = sample->allocation.width;
@@ -1117,30 +1117,30 @@
       *x += sample->allocation.x;
       *y += sample->allocation.y;
     }
-  
+
 #if GTK_CHECK_VERSION(2,2,0)
   screen = gtk_widget_get_screen (GTK_WIDGET (combo_box));
-  monitor_num = gdk_screen_get_monitor_at_window (screen, 
+  monitor_num = gdk_screen_get_monitor_at_window (screen,
 						  GTK_WIDGET (combo_box)->window);
   gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
-  
+
   if (*x < monitor.x)
     *x = monitor.x;
   else if (*x + *width > monitor.x + monitor.width)
     *x = monitor.x + monitor.width - *width;
-  
+
   if (*y + sample->allocation.height + *height <= monitor.y + monitor.height)
     *y += sample->allocation.height;
   else
     *y -= *height;
 #endif /* Gtk 2.2 */
-} 
+}
 
 /**
  * gtk_combo_box_popup:
  * @combo_box: a #GtkComboBox
- * 
- * Pops up the menu or dropdown list of @combo_box. 
+ *
+ * Pops up the menu or dropdown list of @combo_box.
  *
  * This function is mostly intended for use by accessibility technologies;
  * applications should have little use for it.
@@ -1151,7 +1151,7 @@
 gtk_combo_box_popup (GtkComboBox *combo_box)
 {
   gint x, y, width, height;
-  
+
   g_return_if_fail (GTK_IS_COMBO_BOX (combo_box));
 
   if (GTK_WIDGET_MAPPED (combo_box->priv->popup_widget))
@@ -1172,7 +1172,7 @@
 	  gtk_widget_set_size_request (combo_box->priv->popup_widget,
                                        MAX (width, requisition.width), -1);
 	}
-      
+
       gtk_menu_popup (GTK_MENU (combo_box->priv->popup_widget),
 		      NULL, NULL,
 #if GTK_CHECK_VERSION(2,2,0)
@@ -1187,7 +1187,7 @@
   gtk_widget_show_all (combo_box->priv->popup_frame);
   gtk_combo_box_list_position (combo_box, &x, &y, &width, &height);
 
-  gtk_widget_set_size_request (combo_box->priv->popup_window, width, -1);  
+  gtk_widget_set_size_request (combo_box->priv->popup_window, width, -1);
   gtk_window_move (GTK_WINDOW (combo_box->priv->popup_window), x, y);
 
   /* popup */
@@ -1217,7 +1217,7 @@
 /**
  * gtk_combo_box_popdown:
  * @combo_box: a #GtkComboBox
- * 
+ *
  * Hides the menu or dropdown list of @combo_box.
  *
  * This function is mostly intended for use by accessibility technologies;
@@ -1305,7 +1305,7 @@
       GtkRequisition req;
 
       if (combo_box->priv->cell_view)
-	gtk_cell_view_get_size_of_row (GTK_CELL_VIEW (combo_box->priv->cell_view), 
+	gtk_cell_view_get_size_of_row (GTK_CELL_VIEW (combo_box->priv->cell_view),
                                        path, &req);
       else
         req.width = 0;
@@ -1335,7 +1335,7 @@
   bin_req.width = MAX (bin_req.width, combo_box->priv->width);
 
   gtk_combo_box_check_appearance (combo_box);
-      
+
   if (!combo_box->priv->tree_view)
     {
       /* menu mode */
@@ -1454,10 +1454,10 @@
           if (is_rtl)
             {
               child.x += req.width;
-              child.width = MAX(1, allocation->x + allocation->width 
+              child.width = MAX(1, allocation->x + allocation->width
                 - (border_width + 1 + xthickness + 2) - child.x);
             }
-          else 
+          else
             {
               child.width = child.x;
               child.x = allocation->x + border_width + 1 + xthickness + 2;
@@ -1623,16 +1623,16 @@
   GtkComboBox *combo_box = GTK_COMBO_BOX (widget);
   gint index;
   gint items;
-    
+
   index = gtk_combo_box_get_active (combo_box);
 
   if (index != -1)
     {
       items = gtk_tree_model_iter_n_children (combo_box->priv->model, NULL);
-      
+
       if (event->direction == GDK_SCROLL_UP)
         index--;
-      else 
+      else
         index++;
 
       gtk_combo_box_set_active (combo_box, CLAMP (index, 0, items - 1));
@@ -1694,15 +1694,15 @@
                              GTK_BIN (combo_box)->child->parent);
 
       combo_box->priv->box = gtk_hbox_new (FALSE, 0);
-      gtk_container_add (GTK_CONTAINER (combo_box->priv->button), 
+      gtk_container_add (GTK_CONTAINER (combo_box->priv->button),
 			 combo_box->priv->box);
 
       combo_box->priv->separator = gtk_vseparator_new ();
-      gtk_container_add (GTK_CONTAINER (combo_box->priv->box), 
+      gtk_container_add (GTK_CONTAINER (combo_box->priv->box),
 			 combo_box->priv->separator);
 
       combo_box->priv->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
-      gtk_container_add (GTK_CONTAINER (combo_box->priv->box), 
+      gtk_container_add (GTK_CONTAINER (combo_box->priv->box),
 			 combo_box->priv->arrow);
 
       gtk_widget_show_all (combo_box->priv->button);
@@ -1792,7 +1792,7 @@
 
   /* unparent will remove our latest ref */
   gtk_widget_unparent (combo_box->priv->button);
-  
+
   combo_box->priv->box = NULL;
   combo_box->priv->button = NULL;
   combo_box->priv->arrow = NULL;
@@ -1895,17 +1895,17 @@
   item = nth->data;
   if (nth->prev)
     last = nth->prev->data;
-  else 
+  else
     last = NULL;
   g_list_free (list);
 
   gtk_combo_box_item_get_size (combo_box, index, &cols, &rows);
-      
+
    if (combo_box->priv->col_column == -1 &&
       combo_box->priv->row_column == -1 &&
       last)
     {
-      gtk_container_child_get (GTK_CONTAINER (menu), 
+      gtk_container_child_get (GTK_CONTAINER (menu),
 			       last,
 			       "right_attach", &current_col,
 			       "top_attach", &current_row,
@@ -1926,12 +1926,12 @@
 	      current_col = 0;
 	      current_row++;
 	    }
-	  
+
 	  if (!menu_occupied (GTK_MENU (menu),
 			      current_col, current_col + cols,
 			      current_row, current_row + rows))
 	    break;
-	  
+
 	  current_col++;
 	}
     }
@@ -1949,19 +1949,19 @@
   GtkWidget *menu;
 
   menu = combo_box->priv->popup_widget;
-  
+
   /* do nothing unless we are in menu style and realized */
   if (combo_box->priv->tree_view || !GTK_IS_MENU_SHELL (menu))
     return;
-  
+
   /* get rid of all children */
   list = gtk_container_get_children (GTK_CONTAINER (menu));
-  
+
   for (j = g_list_last (list); j; j = j->prev)
     gtk_container_remove (GTK_CONTAINER (menu), j->data);
-  
+
   g_list_free (list);
-      
+
   /* and relayout */
   gtk_combo_box_menu_fill (combo_box);
 }
@@ -1980,7 +1980,7 @@
   if (event->type == GDK_BUTTON_PRESS && event->button == 1)
     {
       combo_box->priv->popup_in_progress = TRUE;
-      
+
       gtk_menu_set_active (GTK_MENU (combo_box->priv->popup_widget),
 			   combo_box->priv->active_item);
 
@@ -2053,7 +2053,7 @@
 
   if (!combo_box->priv->tree_view)
     gtk_combo_box_menu_row_deleted (model, path, user_data);
-  
+
   if (index == combo_box->priv->active_item)
     {
       gint items = gtk_tree_model_iter_n_children (model, NULL);
@@ -2090,7 +2090,7 @@
   if (!combo_box->priv->tree_view)
     gtk_combo_box_menu_rows_reordered (model, path, iter, new_order, user_data);
 }
-						    
+
 static void
 gtk_combo_box_model_row_changed (GtkTreeModel     *model,
 				 GtkTreePath      *path,
@@ -2103,7 +2103,7 @@
   if (index == combo_box->priv->active_item &&
       combo_box->priv->cell_view)
     gtk_widget_queue_resize (GTK_WIDGET (combo_box->priv->cell_view));
-  
+
   if (combo_box->priv->tree_view)
     gtk_combo_box_list_row_changed (model, path, iter, user_data);
   else
@@ -2174,7 +2174,7 @@
 
   gtk_combo_box_relayout (combo_box);
 }
-				    
+
 static void
 gtk_combo_box_menu_row_changed (GtkTreeModel *model,
                                 GtkTreePath  *path,
@@ -2238,12 +2238,12 @@
       gtk_frame_set_shadow_type (GTK_FRAME (combo_box->priv->cell_view_frame),
                                  GTK_SHADOW_IN);
 
-      gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view), 
+      gtk_cell_view_set_background_color (GTK_CELL_VIEW (combo_box->priv->cell_view),
 					  &GTK_WIDGET (combo_box)->style->base[GTK_WIDGET_STATE (combo_box)]);
 
       combo_box->priv->box = gtk_event_box_new ();
       /*
-      gtk_event_box_set_visible_window (GTK_EVENT_BOX (combo_box->priv->box), 
+      gtk_event_box_set_visible_window (GTK_EVENT_BOX (combo_box->priv->box),
 					FALSE);
       */
 
@@ -2253,7 +2253,7 @@
       gtk_widget_show_all (combo_box->priv->cell_view_frame);
 
       g_signal_connect (combo_box->priv->box, "button_press_event",
-			G_CALLBACK (gtk_combo_box_list_button_pressed), 
+			G_CALLBACK (gtk_combo_box_list_button_pressed),
 			combo_box);
     }
 
@@ -2269,7 +2269,7 @@
   if (combo_box->priv->model)
     gtk_tree_view_set_model (GTK_TREE_VIEW (combo_box->priv->tree_view),
 			     combo_box->priv->model);
-    
+
   g_signal_connect (combo_box->priv->tree_view, "button_press_event",
                     G_CALLBACK (gtk_combo_box_list_button_pressed),
                     combo_box);
@@ -2494,7 +2494,7 @@
   if (combo_box->priv->model)
     items = gtk_tree_model_iter_n_children (combo_box->priv->model, NULL);
 
-  if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) && 
+  if ((event->keyval == GDK_Down || event->keyval == GDK_KP_Down) &&
       state == GDK_MOD1_MASK)
     {
       gtk_combo_box_popup (combo_box);
@@ -2502,7 +2502,7 @@
       return TRUE;
     }
 
-  switch (event->keyval) 
+  switch (event->keyval)
     {
     case GDK_Down:
     case GDK_KP_Down:
@@ -2514,20 +2514,20 @@
       break;
     case GDK_Page_Up:
     case GDK_KP_Page_Up:
-    case GDK_Home: 
+    case GDK_Home:
     case GDK_KP_Home:
       new_index = 0;
       break;
     case GDK_Page_Down:
     case GDK_KP_Page_Down:
-    case GDK_End: 
+    case GDK_End:
     case GDK_KP_End:
       new_index = items - 1;
       break;
     default:
       return FALSE;
     }
-      
+
   if (items > 0)
     gtk_combo_box_set_active (combo_box, CLAMP (new_index, 0, items - 1));
 
@@ -2542,14 +2542,14 @@
   GtkComboBox *combo_box = GTK_COMBO_BOX (data);
   guint state = event->state & gtk_accelerator_get_default_mod_mask ();
 
-  if ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) && 
+  if ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) &&
       state == GDK_MOD1_MASK)
     {
       gtk_combo_box_popdown (combo_box);
 
       return TRUE;
     }
-  
+
   return FALSE;
 }
 
@@ -2562,35 +2562,35 @@
   guint state = event->state & gtk_accelerator_get_default_mod_mask ();
 
   if (event->keyval == GDK_Escape ||
-      ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) && 
+      ((event->keyval == GDK_Up || event->keyval == GDK_KP_Up) &&
        state == GDK_MOD1_MASK))
     {
       /* reset active item -- this is incredibly lame and ugly */
       gtk_combo_box_set_active (combo_box,
 				gtk_combo_box_get_active (combo_box));
-      
+
       gtk_combo_box_popdown (combo_box);
-      
+
       return TRUE;
     }
-    
+
   if (event->keyval == GDK_Return || event->keyval == GDK_KP_Enter ||
-      event->keyval == GDK_space || event->keyval == GDK_KP_Space) 
+      event->keyval == GDK_space || event->keyval == GDK_KP_Space)
   {
     gboolean ret = FALSE;
     GtkTreeIter iter;
     GtkTreeModel *model = NULL;
-    
+
     if (combo_box->priv->model)
       {
 	GtkTreeSelection *sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (combo_box->priv->tree_view));
-    
+
 	ret = gtk_tree_selection_get_selected (sel, &model, &iter);
       }
     if (ret)
       {
 	GtkTreePath *path;
-	
+
 	path = gtk_tree_model_get_path (model, &iter);
 	if (path)
 	  {
@@ -2600,7 +2600,7 @@
       }
 
     gtk_combo_box_popdown (combo_box);
-    
+
     return TRUE;
   }
 
@@ -2620,7 +2620,7 @@
 
   if (width > combo_box->priv->width)
     {
-      if (combo_box->priv->cell_view) 
+      if (combo_box->priv->cell_view)
 	{
 	  gtk_widget_set_size_request (combo_box->priv->cell_view, width, -1);
 	  gtk_widget_queue_resize (combo_box->priv->cell_view);
@@ -2742,11 +2742,11 @@
   GtkWidget *menu;
   GtkComboBox *combo_box;
   GSList *i;
-  
+
   g_return_if_fail (GTK_IS_COMBO_BOX (layout));
 
   combo_box = GTK_COMBO_BOX (layout);
- 
+
   if (combo_box->priv->cell_view)
     gtk_cell_layout_clear (GTK_CELL_LAYOUT (combo_box->priv->cell_view));
 
@@ -3082,7 +3082,7 @@
 
       gtk_combo_box_check_appearance (combo_box);
       gtk_combo_box_relayout (combo_box);
-      
+
       g_object_notify (G_OBJECT (combo_box), "wrap_width");
     }
 }
@@ -3112,9 +3112,9 @@
   if (row_span != combo_box->priv->row_column)
     {
       combo_box->priv->row_column = row_span;
-      
+
       gtk_combo_box_relayout (combo_box);
- 
+
       g_object_notify (G_OBJECT (combo_box), "row_span_column");
     }
 }
@@ -3144,7 +3144,7 @@
   if (column_span != combo_box->priv->col_column)
     {
       combo_box->priv->col_column = column_span;
-      
+
       gtk_combo_box_relayout (combo_box);
 
       g_object_notify (G_OBJECT (combo_box), "column_span_column");
@@ -3191,7 +3191,7 @@
 
   if (combo_box->priv->active_item == index_)
     return;
-  
+
   gtk_combo_box_set_active_internal (combo_box, index_);
 }
 
@@ -3252,9 +3252,9 @@
  * gtk_combo_box_get_active_iter:
  * @combo_box: A #GtkComboBox
  * @iter: The uninitialized #GtkTreeIter.
- * 
+ *
  * Sets @iter to point to the current active item, if it exists.
- * 
+ *
  * Return value: %TRUE, if @iter was set
  *
  * Since: 2.4
@@ -3293,10 +3293,10 @@
  * gtk_combo_box_set_active_iter:
  * @combo_box: A #GtkComboBox
  * @iter: The #GtkTreeIter.
- * 
- * Sets the current active item to be the one referenced by @iter. 
+ *
+ * Sets the current active item to be the one referenced by @iter.
  * @iter must correspond to a path of depth one.
- * 
+ *
  * Since: 2.4
  **/
 void
@@ -3310,7 +3310,7 @@
   path = gtk_tree_model_get_path (gtk_combo_box_get_model (combo_box), iter);
   g_return_if_fail (path != NULL);
   g_return_if_fail (gtk_tree_path_get_depth (path) == 1);
-  
+
   gtk_combo_box_set_active (combo_box, gtk_tree_path_get_indices (path)[0]);
   gtk_tree_path_free (path);
 }
@@ -3320,11 +3320,11 @@
  * @combo_box: A #GtkComboBox.
  * @model: A #GtkTreeModel.
  *
- * Sets the model used by @combo_box to be @model. Will unset a previously set 
+ * Sets the model used by @combo_box to be @model. Will unset a previously set
  * model (if applicable). If @model is %NULL, then it will unset the model.
- * 
- * Note that this function does not clear the cell renderers, you have to 
- * call gtk_combo_box_cell_layout_clear() yourself if you need to set up 
+ *
+ * Note that this function does not clear the cell renderers, you have to
+ * call gtk_combo_box_cell_layout_clear() yourself if you need to set up
  * different cell renderers for the new model.
  *
  * Since: 2.4
@@ -3345,7 +3345,7 @@
 
   if (model == combo_box->priv->model)
     return;
-  
+
   if (combo_box->priv->model)
     gtk_combo_box_unset_model (combo_box);
 
@@ -3368,7 +3368,7 @@
     g_signal_connect (combo_box->priv->model, "row_changed",
 		      G_CALLBACK (gtk_combo_box_model_row_changed),
 		      combo_box);
-      
+
   if (combo_box->priv->tree_view)
     {
       /* list mode */
@@ -3574,7 +3574,7 @@
 {
   GtkComboBox *combo_box = GTK_COMBO_BOX (object);
 
-  gtk_combo_box_popdown (combo_box); 
+  gtk_combo_box_popdown (combo_box);
 
   combo_box->priv->destroying = 1;
 
@@ -3589,14 +3589,14 @@
 {
   GtkComboBox *combo_box = GTK_COMBO_BOX (object);
   GSList *i;
-  
+
   if (GTK_IS_MENU (combo_box->priv->popup_widget))
     {
       gtk_combo_box_menu_destroy (combo_box);
       gtk_menu_detach (GTK_MENU (combo_box->priv->popup_widget));
       combo_box->priv->popup_widget = NULL;
     }
-  
+
   if (GTK_IS_TREE_VIEW (combo_box->priv->tree_view))
     gtk_combo_box_list_destroy (combo_box);
 
@@ -3655,13 +3655,13 @@
 {
   GObject *object = G_OBJECT (child);
   AttachInfo *ai = g_object_get_data (object, ATTACH_INFO_KEY);
-                                                                                                   
+
   if (!ai)
     {
       ai = g_new0 (AttachInfo, 1);
       g_object_set_data_full (object, ATTACH_INFO_KEY, ai, g_free);
     }
-                                                                                                   
+
   return ai;
 }
 
@@ -3693,25 +3693,25 @@
                  guint      bottom_attach)
 {
   GtkMenuShell *menu_shell;
-  
+
   g_return_if_fail (GTK_IS_MENU (menu));
   g_return_if_fail (GTK_IS_MENU_ITEM (child));
-  g_return_if_fail (child->parent == NULL || 
+  g_return_if_fail (child->parent == NULL ||
 		    child->parent == GTK_WIDGET (menu));
   g_return_if_fail (left_attach < right_attach);
   g_return_if_fail (top_attach < bottom_attach);
 
   menu_shell = GTK_MENU_SHELL (menu);
-  
+
   if (!child->parent)
     {
       AttachInfo *ai = get_attach_info (child);
-      
+
       ai->left_attach = left_attach;
       ai->right_attach = right_attach;
       ai->top_attach = top_attach;
       ai->bottom_attach = bottom_attach;
-      
+
       menu_shell->children = g_list_append (menu_shell->children, child);
 
       gtk_widget_set_parent (child, GTK_WIDGET (menu));
@@ -3741,7 +3741,7 @@
   /* g_return_val_if_fail (GTK_IS_LIST_STORE (combo_box->priv->model), NULL); */
 
   if (gtk_combo_box_get_active_iter (combo_box, &iter))
-    gtk_tree_model_get (gtk_combo_box_get_model(combo_box), &iter, 
+    gtk_tree_model_get (gtk_combo_box_get_model(combo_box), &iter,
     			0, &text, -1);
   return text;
 }
--- a/pidgin/pidginstock.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/pidginstock.c	Wed Mar 04 16:52:47 2009 +0000
@@ -26,17 +26,32 @@
  */
 #include "internal.h"
 #include "pidgin.h"
+#include "prefs.h"
+
+#include "gtkicon-theme-loader.h"
+#include "theme-manager.h"
 
 #include "pidginstock.h"
 
+/**************************************************************************
+ * Globals
+ **************************************************************************/
+
+static gboolean stock_initted = FALSE;
+static GtkIconSize microscopic, extra_small, small, medium, large, huge;
+
+/**************************************************************************
+ * Structures
+ **************************************************************************/
+
 static struct StockIcon
 {
 	const char *name;
 	const char *dir;
 	const char *filename;
 
-} const stock_icons[] =
-{
+} const stock_icons[] = {
+
 	{ PIDGIN_STOCK_ACTION,          NULL,      GTK_STOCK_EXECUTE          },
 #if GTK_CHECK_VERSION(2,6,0)
 	{ PIDGIN_STOCK_ALIAS,           NULL,      GTK_STOCK_EDIT             },
@@ -98,7 +113,7 @@
 	{ PIDGIN_STOCK_EDIT,                N_("_Edit"),       0, 0, NULL }
 };
 
-static struct SizedStockIcon {
+typedef struct {
   const char *name;
   const char *dir;
   const char *filename;
@@ -110,19 +125,10 @@
   gboolean huge;
   gboolean rtl;
   const char *translucent_name;
-} const sized_stock_icons [] = {
-	{ PIDGIN_STOCK_STATUS_AVAILABLE,   "status", "available.png", 	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I },
-	{ PIDGIN_STOCK_STATUS_AWAY, 	   "status", "away.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I },
-	{ PIDGIN_STOCK_STATUS_BUSY, 	"status", "busy.png", 		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I },
-	{ PIDGIN_STOCK_STATUS_CHAT, 	"status", "chat.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
-	{ PIDGIN_STOCK_STATUS_INVISIBLE,"status", "invisible.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
-	{ PIDGIN_STOCK_STATUS_XA, 	"status", "extended-away.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, PIDGIN_STOCK_STATUS_XA_I },
-	{ PIDGIN_STOCK_STATUS_LOGIN, 	"status", "log-in.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
-	{ PIDGIN_STOCK_STATUS_LOGOUT, 	"status", "log-out.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, NULL },
-	{ PIDGIN_STOCK_STATUS_OFFLINE, 	"status", "offline.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I  },
-	{ PIDGIN_STOCK_STATUS_PERSON, 	"status", "person.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_STATUS_MESSAGE, 	"toolbar", "message-new.png",   TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	
+} SizedStockIcon;
+
+const SizedStockIcon sized_stock_icons [] = {
+
 	{ PIDGIN_STOCK_STATUS_IGNORED,	"emblems", "blocked.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_STATUS_FOUNDER,	"emblems", "founder.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_STATUS_OPERATOR,	"emblems", "operator.png",	FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
@@ -175,39 +181,53 @@
 	{ PIDGIN_STOCK_ANIMATION_TYPING4,  "animations", "typing4.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_ANIMATION_TYPING5,  "animations", "typing5.png",FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 
-	{ PIDGIN_STOCK_TOOLBAR_BGCOLOR, "toolbar", "change-bgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_BLOCK, "emblems", "blocked.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_FGCOLOR, "toolbar", "change-fgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_SMILEY, "toolbar", "emote-select.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_FONT_FACE, "toolbar", "font-face.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, "toolbar", "font-size-down.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, "toolbar", "font-size-up.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_INSERT, "toolbar", "insert.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, "toolbar", "insert-image.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_INSERT_LINK, "toolbar", "insert-link.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW, "toolbar", "message-new.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_PENDING, "tray", "tray-new-im.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TOOLBAR_PLUGINS, "toolbar", "plugins.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
-	{ 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  },
-	{ PIDGIN_STOCK_TRAY_AWAY, "tray", "tray-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TRAY_BUSY, "tray", "tray-busy.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TRAY_XA, "tray", "tray-extended-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TRAY_OFFLINE, "tray", "tray-offline.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TRAY_CONNECT, "tray", "tray-connecting.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TRAY_PENDING, "tray", "tray-new-im.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
-	{ PIDGIN_STOCK_TRAY_EMAIL, "tray", "tray-message.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  }
+	{ PIDGIN_STOCK_TOOLBAR_BGCOLOR,		"toolbar", "change-bgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_BLOCK,		"emblems", "blocked.png",	 FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_FGCOLOR,		"toolbar", "change-fgcolor.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_SMILEY,		"toolbar", "emote-select.png",	 FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_FONT_FACE,	"toolbar", "font-face.png",	 FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER,	"toolbar", "font-size-down.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_TEXT_LARGER,	"toolbar", "font-size-up.png",	 FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_INSERT,		"toolbar", "insert.png", 	 FALSE,	TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE,	"toolbar", "insert-image.png",	 FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_INSERT_LINK,	"toolbar", "insert-link.png",	 FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_MESSAGE_NEW,	"toolbar", "message-new.png",	 FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_PENDING,		"toolbar", "message-new.png",	 FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_PLUGINS,		"toolbar", "plugins.png",	 FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ 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  }
 };
 
-static void
-add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
-	       gboolean rtl, const char *size, const char *file,
-		   gboolean translucent);
+const SizedStockIcon sized_status_icons [] = {
+
+	{ PIDGIN_STOCK_STATUS_AVAILABLE, "status", "available.png", 	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AVAILABLE_I },
+	{ PIDGIN_STOCK_STATUS_AWAY, 	 "status", "away.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_AWAY_I },
+	{ PIDGIN_STOCK_STATUS_BUSY, 	 "status", "busy.png", 		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_BUSY_I },
+	{ PIDGIN_STOCK_STATUS_CHAT, 	 "status", "chat.png",		TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+	{ PIDGIN_STOCK_STATUS_INVISIBLE, "status", "invisible.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL },
+	{ PIDGIN_STOCK_STATUS_XA, 	 "status", "extended-away.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE,  PIDGIN_STOCK_STATUS_XA_I },
+	{ PIDGIN_STOCK_STATUS_LOGIN, 	 "status", "log-in.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE,  NULL },
+	{ PIDGIN_STOCK_STATUS_LOGOUT, 	 "status", "log-out.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE,  NULL },
+	{ PIDGIN_STOCK_STATUS_OFFLINE, 	 "status", "offline.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, PIDGIN_STOCK_STATUS_OFFLINE_I  },
+	{ PIDGIN_STOCK_STATUS_PERSON, 	 "status", "person.png",	TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_STATUS_MESSAGE, 	 "toolbar", "message-new.png",  TRUE, 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  },
+	{ PIDGIN_STOCK_TRAY_AWAY,	"tray", "tray-away.png",	  FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_BUSY,	"tray", "tray-busy.png", 	  FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_XA,		"tray", "tray-extended-away.png", FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_OFFLINE,	"tray", "tray-offline.png",	  FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_CONNECT,	"tray", "tray-connecting.png",	  FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_PENDING,	"tray", "tray-new-im.png", 	  FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TRAY_EMAIL,	"tray", "tray-message.png",	  FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, NULL  }
+};
+
+/*****************************************************************************
+ * Private functions
+ *****************************************************************************/
 
 static gchar *
 find_file_common(const char *name)
@@ -257,16 +277,10 @@
 	return ret;
 }
 
-static void
-add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
-	       gboolean rtl, const char *size, const char *file)
-{
-	add_sized_icon_common(iconset, sizeid, dir, rtl, size, file, FALSE);
-}
 
 /* Altered from do_colorshift in gnome-panel */
 static void
-do_alphashift (GdkPixbuf *dest, GdkPixbuf *src)
+do_alphashift(GdkPixbuf *dest, GdkPixbuf *src)
 {
         gint i, j;
         gint width, height, has_alpha, srcrowstride, destrowstride;
@@ -300,28 +314,48 @@
         }
 }
 
-static void
-add_translucent_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
-	       gboolean rtl, const char *size, const char *file)
+static gchar *
+find_icon_file(PidginStatusIconTheme *theme, const gchar *size, SizedStockIcon sized_icon, gboolean rtl)
 {
-	add_sized_icon_common(iconset, sizeid, dir, rtl, size, file, TRUE);
+	const gchar *file, *dir;
+	gchar *file_full = NULL;
+	gchar *tmp;
+
+	if (theme != NULL) {
+		file = pidgin_icon_theme_get_icon(PIDGIN_ICON_THEME(theme), sized_icon.name);
+		dir = purple_theme_get_dir(PURPLE_THEME(theme));
+
+		if (rtl)
+			file_full = g_build_filename(dir, size, "rtl", file, NULL);
+		else
+			file_full = g_build_filename(dir, size, file, NULL);
+
+		if (g_file_test(file_full, G_FILE_TEST_IS_REGULAR))
+			return file_full;
+
+		g_free(file_full);
+	}
+
+	if (rtl)
+		tmp = g_build_filename("pixmaps", "pidgin", sized_icon.dir, size, "rtl", sized_icon.filename, NULL);
+	else
+		tmp = g_build_filename("pixmaps", "pidgin", sized_icon.dir, size, sized_icon.filename, NULL);
+
+	file_full = find_file_common(tmp);
+	g_free(tmp);
+	return file_full;
 }
 
 static void
-add_sized_icon_common(GtkIconSet *iconset, GtkIconSize sizeid, const char *dir,
-	       gboolean rtl, const char *size, const char *file,
-		   gboolean translucent)
+add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, PidginStatusIconTheme *theme,
+		const char *size, SizedStockIcon sized_icon, gboolean translucent)
 {
-	char *filename, *subpath;
+	char *filename;
 	GtkIconSource *source;
 	GdkPixbuf *pixbuf;
 
-	subpath = g_build_filename("pixmaps", "pidgin", dir, size, file, NULL);
-	filename = find_file_common(subpath);
-	g_free(subpath);
-	if (!filename)
-		return;
-
+	filename = find_icon_file(theme, size, sized_icon, FALSE);
+	g_return_if_fail(filename != NULL);
 	pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
 	if (translucent)
 		do_alphashift(pixbuf, pixbuf);
@@ -329,7 +363,7 @@
 	source = gtk_icon_source_new();
 	gtk_icon_source_set_pixbuf(source, pixbuf);
 	gtk_icon_source_set_direction(source, GTK_TEXT_DIR_LTR);
-	gtk_icon_source_set_direction_wildcarded(source, !rtl);
+	gtk_icon_source_set_direction_wildcarded(source, !sized_icon.rtl);
 	gtk_icon_source_set_size(source, sizeid);
 	gtk_icon_source_set_size_wildcarded(source, FALSE);
 	gtk_icon_source_set_state_wildcarded(source, TRUE);
@@ -349,17 +383,16 @@
 	g_free(filename);
 	g_object_unref(pixbuf);
 
-	if (rtl) {
-		subpath = g_build_filename("pixmaps", "pidgin", dir, size, "rtl", file, NULL);
-		filename = find_file_common(subpath);
-		g_free(subpath);
-		if (!filename)
-			return;
+	if (sized_icon.rtl) {
+		filename = find_icon_file(theme, size, sized_icon, TRUE);
+		g_return_if_fail(filename != NULL);
 		pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
 		if (translucent)
 			do_alphashift(pixbuf, pixbuf);
+
 		source = gtk_icon_source_new();
 		gtk_icon_source_set_pixbuf(source, pixbuf);
+		gtk_icon_source_set_filename(source, filename);
 		gtk_icon_source_set_direction(source, GTK_TEXT_DIR_RTL);
 		gtk_icon_source_set_size(source, sizeid);
 		gtk_icon_source_set_size_wildcarded(source, FALSE);
@@ -371,20 +404,90 @@
 	}
 }
 
+/*****************************************************************************
+ * Public API functions
+ *****************************************************************************/
+
+void
+pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme)
+{
+	GtkIconFactory *icon_factory;
+	gint i;
+	GtkIconSet *normal;
+	GtkIconSet *translucent = NULL;
+	GtkWidget *win;
+
+	if (theme != NULL) {
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme",
+				        purple_theme_get_name(PURPLE_THEME(theme)));
+		purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir",
+				      purple_theme_get_dir(PURPLE_THEME(theme)));
+	}
+	else {
+		purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme", "");
+		purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", "");
+	}
+
+	icon_factory = gtk_icon_factory_new();
+
+	gtk_icon_factory_add_default(icon_factory);
+
+	win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+	gtk_widget_realize(win);
+
+	for (i = 0; i < G_N_ELEMENTS(sized_status_icons); i++)
+	{
+		normal = gtk_icon_set_new();
+		if (sized_status_icons[i].translucent_name)
+			translucent = gtk_icon_set_new();
+
+#define ADD_SIZED_ICON(name, size) if (sized_status_icons[i].name) { \
+					add_sized_icon(normal, name, theme, size, sized_status_icons[i], FALSE); \
+					if (sized_status_icons[i].translucent_name) \
+						add_sized_icon(translucent, name, theme, size, sized_status_icons[i], TRUE); \
+				   }
+		ADD_SIZED_ICON(microscopic, "11");
+		ADD_SIZED_ICON(extra_small, "16");
+		ADD_SIZED_ICON(small, "22");
+		ADD_SIZED_ICON(medium, "32");
+		ADD_SIZED_ICON(large, "48");
+		ADD_SIZED_ICON(huge, "64");
+#undef ADD_SIZED_ICON
+
+		gtk_icon_factory_add(icon_factory, sized_status_icons[i].name, normal);
+		gtk_icon_set_unref(normal);
+
+		if (sized_status_icons[i].translucent_name) {
+			gtk_icon_factory_add(icon_factory, sized_status_icons[i].translucent_name, translucent);
+			gtk_icon_set_unref(translucent);
+		}
+	}
+
+
+	gtk_widget_destroy(win);
+	g_object_unref(G_OBJECT(icon_factory));
+}
+
 void
 pidgin_stock_init(void)
 {
-	static gboolean stock_initted = FALSE;
 	GtkIconFactory *icon_factory;
 	size_t i;
 	GtkWidget *win;
-	GtkIconSize microscopic, extra_small, small, medium, large, huge;
+	PidginIconThemeLoader *loader;
+	const gchar *path = NULL;
 
 	if (stock_initted)
 		return;
 
 	stock_initted = TRUE;
 
+	/* Setup the status icon theme */
+	loader = g_object_new(PIDGIN_TYPE_ICON_THEME_LOADER, "type", "status-icon", NULL);
+	purple_theme_manager_register_type(PURPLE_THEME_LOADER(loader));
+	purple_prefs_add_string(PIDGIN_PREFS_ROOT "/status/icon-theme", "");
+	purple_prefs_add_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", "");
+
 	/* Setup the icon factory. */
 	icon_factory = gtk_icon_factory_new();
 
@@ -394,6 +497,7 @@
 	win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 	gtk_widget_realize(win);
 
+	/* All non-sized icons */
 	for (i = 0; i < G_N_ELEMENTS(stock_icons); i++)
 	{
 		GtkIconSource *source;
@@ -432,7 +536,6 @@
 	}
 
 	/* register custom icon sizes */
-
 	microscopic =  gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_MICROSCOPIC, 11, 11);
 	extra_small =  gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL, 16, 16);
 	small =        gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_SMALL, 22, 22);
@@ -440,18 +543,13 @@
 	large =        gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_LARGE, 48, 48);
 	huge =         gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_HUGE, 64, 64);
 
+	/* All non-status sized icons */
 	for (i = 0; i < G_N_ELEMENTS(sized_stock_icons); i++)
 	{
-		GtkIconSet *iconset;
-
-		iconset = gtk_icon_set_new();
+		GtkIconSet *iconset = gtk_icon_set_new();
 
-#define ADD_SIZED_ICON(name, size) do { \
-		if (sized_stock_icons[i].name)  \
-			add_sized_icon(iconset, name,  \
-					sized_stock_icons[i].dir, sized_stock_icons[i].rtl, \
-					size, sized_stock_icons[i].filename); \
-		} while (0)
+#define ADD_SIZED_ICON(name, size) if (sized_stock_icons[i].name) \
+					add_sized_icon(iconset, name, NULL, size, sized_stock_icons[i], FALSE);
 		ADD_SIZED_ICON(microscopic, "11");
 		ADD_SIZED_ICON(extra_small, "16");
 		ADD_SIZED_ICON(small, "22");
@@ -462,32 +560,21 @@
 
 		gtk_icon_factory_add(icon_factory, sized_stock_icons[i].name, iconset);
 		gtk_icon_set_unref(iconset);
-
-		if (sized_stock_icons[i].translucent_name) {
-			iconset = gtk_icon_set_new();
-
-#define ADD_TRANS_ICON(name, size) do { \
-			if (sized_stock_icons[i].name) \
-				add_translucent_sized_icon(iconset, name, \
-						sized_stock_icons[i].dir, sized_stock_icons[i].rtl, \
-						size, sized_stock_icons[i].filename); \
-			} while (0)
-			ADD_TRANS_ICON(microscopic, "11");
-			ADD_TRANS_ICON(extra_small, "16");
-			ADD_TRANS_ICON(small, "22");
-			ADD_TRANS_ICON(medium, "32");
-			ADD_TRANS_ICON(large, "48");
-			ADD_TRANS_ICON(huge, "64");
-#undef ADD_TRANS_ICON
-
-			gtk_icon_factory_add(icon_factory, sized_stock_icons[i].translucent_name, iconset);
-			gtk_icon_set_unref(iconset);
-		}
 	}
 
 	gtk_widget_destroy(win);
 	g_object_unref(G_OBJECT(icon_factory));
 
+	/* Pre-load Status icon theme - this avoids a bug with displaying the correct icon in the tray, theme is destroyed after*/
+	if (purple_prefs_get_string(PIDGIN_PREFS_ROOT "/icon/status/theme") &&
+	   (path = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir"))) {
+
+		PidginStatusIconTheme *theme = PIDGIN_STATUS_ICON_THEME(purple_theme_loader_build(PURPLE_THEME_LOADER(loader), path));
+		pidgin_stock_load_status_icon_theme(theme);
+		g_object_unref(G_OBJECT(theme));
+
+	} else pidgin_stock_load_status_icon_theme(NULL);
+
 	/* Register the stock items. */
 	gtk_stock_add_static(stock_items, G_N_ELEMENTS(stock_items));
 }
--- a/pidgin/pidginstock.h	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/pidginstock.h	Wed Mar 04 16:52:47 2009 +0000
@@ -8,7 +8,7 @@
  * 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
@@ -24,6 +24,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
  */
 #include <gtk/gtkstock.h>
+#include "gtkstatus-icon-theme.h"
 
 #ifndef _PIDGIN_STOCK_H_
 #define _PIDGIN_STOCK_H_
@@ -177,6 +178,14 @@
 #define PIDGIN_ICON_SIZE_TANGO_MEDIUM         "pidgin-icon-size-tango-medium"
 #define PIDGIN_ICON_SIZE_TANGO_LARGE          "pidgin-icon-size-tango-large"
 #define PIDGIN_ICON_SIZE_TANGO_HUGE           "pidgin-icon-size-tango-huge"
+
+/**
+ * Loades all of the icons from the status icon theme into Pidgin stock
+ *
+ * @param theme		the theme to load, or null to load all the default icons
+ */
+void pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme);
+
 /**
  * Sets up the purple stock repository.
  */
--- a/pidgin/pixmaps/Makefile.am	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/pixmaps/Makefile.am	Wed Mar 04 16:52:47 2009 +0000
@@ -488,6 +488,7 @@
 		tray/32/tray-connecting.png \
 		tray/32/tray-extended-away.png \
 		tray/32/tray-invisible.png \
+		tray/32/tray-message.png \
 		tray/32/tray-new-im.png \
 		tray/32/tray-offline.png \
 		tray/32/tray-online.png
@@ -498,6 +499,7 @@
 		tray/48/tray-connecting.png \
 		tray/48/tray-extended-away.png \
 		tray/48/tray-invisible.png \
+		tray/48/tray-message.png \
 		tray/48/tray-new-im.png \
 		tray/48/tray-offline.png \
 		tray/48/tray-online.png
@@ -525,7 +527,6 @@
 		$(PROTOCOLS_16_SCALABLE)	\
 		$(PROTOCOLS_22_SCALABLE)	\
 		$(PROTOCOLS_48_SCALABLE)	\
-		$(TOOLBAR_11)		\
 		$(TOOLBAR_16_SCALABLE)	\
 		$(TOOLBAR_22_SCALABLE)
 
@@ -553,6 +554,7 @@
 		$(STATUS_32_RTL) \
 		$(STATUS_48) \
 		$(STATUS_48_RTL) \
+		$(TOOLBAR_11) \
 		$(TOOLBAR_16) \
 		$(TOOLBAR_22) \
 		$(TRAY_16) \
--- a/pidgin/plugins/gevolution/gevo-util.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/plugins/gevolution/gevo-util.c	Wed Mar 04 16:52:47 2009 +0000
@@ -27,13 +27,13 @@
 
 void
 gevo_add_buddy(PurpleAccount *account, const char *group_name,
-			   const char *screenname, const char *alias)
+			   const char *buddy_name, const char *alias)
 {
 	PurpleConversation *conv = NULL;
 	PurpleBuddy *buddy;
 	PurpleGroup *group;
 
-	conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, screenname, account);
+	conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, buddy_name, account);
 
 	if ((group = purple_find_group(group_name)) == NULL)
 	{
@@ -41,7 +41,7 @@
 		purple_blist_add_group(group, NULL);
 	}
 
-	buddy = purple_buddy_new(account, screenname, alias);
+	buddy = purple_buddy_new(account, buddy_name, alias);
 	purple_blist_add_buddy(buddy, NULL, group, NULL);
 	purple_account_add_buddy(account, buddy);
 
--- a/pidgin/plugins/gevolution/gevolution.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/plugins/gevolution/gevolution.c	Wed Mar 04 16:52:47 2009 +0000
@@ -52,7 +52,7 @@
 {
 	COLUMN_AUTOADD,
 	COLUMN_ICON,
-	COLUMN_SCREENNAME,
+	COLUMN_USERNAME,
 	COLUMN_DATA,
 	NUM_COLUMNS
 };
@@ -463,11 +463,11 @@
 	gtk_tree_view_column_add_attribute(column, renderer,
 									   "pixbuf", COLUMN_ICON);
 
-	/* Screenname */
+	/* Username */
 	renderer = gtk_cell_renderer_text_new();
 	gtk_tree_view_column_pack_start(column, renderer, TRUE);
 	gtk_tree_view_column_add_attribute(column, renderer,
-									   "text", COLUMN_SCREENNAME);
+									   "text", COLUMN_USERNAME);
 
 
 	/* Populate */
@@ -489,7 +489,7 @@
 						   purple_account_get_bool(account, "gevo-autoadd",
 												 FALSE),
 						   COLUMN_ICON, pixbuf,
-						   COLUMN_SCREENNAME,
+						   COLUMN_USERNAME,
 						   purple_account_get_username(account),
 						   COLUMN_DATA, account,
 						   -1);
--- a/pidgin/plugins/gevolution/new_person_dialog.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/plugins/gevolution/new_person_dialog.c	Wed Mar 04 16:52:47 2009 +0000
@@ -67,7 +67,7 @@
 }
 
 static void
-screenname_changed_cb(GtkEntry *entry, GevoNewPersonDialog *dialog)
+username_changed_cb(GtkEntry *entry, GevoNewPersonDialog *dialog)
 {
 	gtk_widget_set_sensitive(dialog->add_button,
 							 *gtk_entry_get_text(entry) != '\0');
@@ -85,7 +85,7 @@
 add_cb(GtkWidget *w, GevoNewPersonDialog *dialog)
 {
 	EContact *contact = NULL;
-	const char *screenname;
+	const char *username;
 	const char *firstname;
 	const char *lastname;
 	const char *email;
@@ -96,9 +96,9 @@
 	char *full_name = NULL;
 
 	if (dialog->person_only)
-		screenname = dialog->buddy->name;
+		username = dialog->buddy->name;
 	else
-		screenname = gtk_entry_get_text(GTK_ENTRY(dialog->screenname));
+		username = gtk_entry_get_text(GTK_ENTRY(dialog->username));
 
 	firstname  = gtk_entry_get_text(GTK_ENTRY(dialog->firstname));
 	lastname   = gtk_entry_get_text(GTK_ENTRY(dialog->lastname));
@@ -143,7 +143,7 @@
 
 		if (!strcmp(im_service, "prpl-oscar"))
 		{
-			if (isdigit(*screenname))
+			if (isdigit(*username))
 				field = E_CONTACT_IM_ICQ;
 			else
 				field = E_CONTACT_IM_AIM;
@@ -163,7 +163,7 @@
 
 		if (field > 0)
 		{
-			GList *list = g_list_append(NULL, g_strdup(screenname));
+			GList *list = g_list_append(NULL, g_strdup(username));
 
 			e_contact_set(contact, field, list);
 
@@ -203,7 +203,7 @@
 
 		group_name = pidgin_text_combo_box_entry_get_text(dialog->group_combo);
 
-		gevo_add_buddy(dialog->account, group_name, screenname, full_name);
+		gevo_add_buddy(dialog->account, group_name, username, full_name);
 	}
 
 	if (name != NULL)
@@ -289,15 +289,15 @@
 											 NULL, dialog);
 		add_pref_box(sg, vbox, _("Account type:"), dialog->accounts_menu);
 
-		/* Screen Name */
-		dialog->screenname = gtk_entry_new();
-		add_pref_box(sg, vbox, _("Username:"), dialog->screenname);
+		/* Username */
+		dialog->username = gtk_entry_new();
+		add_pref_box(sg, vbox, _("Username:"), dialog->username);
 
 		if (username != NULL)
-			gtk_entry_set_text(GTK_ENTRY(dialog->screenname), username);
+			gtk_entry_set_text(GTK_ENTRY(dialog->username), username);
 
-		g_signal_connect(G_OBJECT(dialog->screenname), "changed",
-						 G_CALLBACK(screenname_changed_cb), dialog);
+		g_signal_connect(G_OBJECT(dialog->username), "changed",
+						 G_CALLBACK(username_changed_cb), dialog);
 
 		/* Group */
 		dialog->group_combo = pidgin_text_combo_box_entry_new(NULL,
--- a/pidgin/plugins/history.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/plugins/history.c	Wed Mar 04 16:52:47 2009 +0000
@@ -62,36 +62,39 @@
 			return;
 
 		/* Find buddies for this conversation. */
-	        buddies = purple_find_buddies(account, name);
+		buddies = purple_find_buddies(account, name);
 
 		/* If we found at least one buddy, save the first buddy's alias. */
 		if (buddies != NULL)
 			alias = purple_buddy_get_contact_alias((PurpleBuddy *)buddies->data);
 
-	        for (cur = buddies; cur != NULL; cur = cur->next)
-	        {
-	                PurpleBlistNode *node = cur->data;
-	                if ((node != NULL) && ((node->prev != NULL) || (node->next != NULL)))
-	                {
+		for (cur = buddies; cur != NULL; cur = cur->next)
+		{
+			PurpleBlistNode *node = cur->data;
+			PurpleBlistNode *prev = purple_blist_node_get_sibling_prev(node);
+			PurpleBlistNode *next = purple_blist_node_get_sibling_next(node);
+			if ((node != NULL) && ((prev != NULL) || (next != NULL)))
+			{
 				PurpleBlistNode *node2;
+				PurpleBlistNode *parent = purple_blist_node_get_parent(node);
+				PurpleBlistNode *child = purple_blist_node_get_first_child(parent);
 
 				alias = purple_buddy_get_contact_alias((PurpleBuddy *)node);
 
 				/* We've found a buddy that matches this conversation.  It's part of a
 				 * PurpleContact with more than one PurpleBuddy.  Loop through the PurpleBuddies
 				 * in the contact and get all the logs. */
-				for (node2 = node->parent->child ; node2 != NULL ; node2 = node2->next)
+				for (node2 = child ; node2 != NULL ; node2 = purple_blist_node_get_sibling_next(node2))
 				{
-					logs = g_list_concat(
-						purple_log_get_logs(PURPLE_LOG_IM,
+					logs = g_list_concat(purple_log_get_logs(PURPLE_LOG_IM,
 							purple_buddy_get_name((PurpleBuddy *)node2),
 							purple_buddy_get_account((PurpleBuddy *)node2)),
-						logs);
+							logs);
 				}
 				break;
-	                }
-	        }
-	        g_slist_free(buddies);
+			}
+		}
+		g_slist_free(buddies);
 
 		if (logs == NULL)
 			logs = purple_log_get_logs(PURPLE_LOG_IM, name, account);
@@ -118,7 +121,7 @@
 
 	protocol = g_strdup(gtk_imhtml_get_protocol_name(GTK_IMHTML(gtkconv->imhtml)));
 	gtk_imhtml_set_protocol_name(GTK_IMHTML(gtkconv->imhtml),
-							      purple_account_get_protocol_name(((PurpleLog*)logs->data)->account));
+			purple_account_get_protocol_name(((PurpleLog*)logs->data)->account));
 
 	if (gtk_text_buffer_get_char_count(gtk_text_view_get_buffer(GTK_TEXT_VIEW(gtkconv->imhtml))))
 		gtk_imhtml_append_text(GTK_IMHTML(gtkconv->imhtml), "<BR>", options);
--- a/pidgin/plugins/perl/common/GtkLog.xs	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/plugins/perl/common/GtkLog.xs	Wed Mar 04 16:52:47 2009 +0000
@@ -7,9 +7,9 @@
 pidgin_log_get_handle()
 
 void
-pidgin_log_show(type, screenname, account)
+pidgin_log_show(type, buddyname, account)
 	Purple::LogType type
-	const char * screenname
+	const char * buddyname
 	Purple::Account account
 
 void
--- a/pidgin/plugins/ticker/ticker.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/plugins/ticker/ticker.c	Wed Mar 04 16:52:47 2009 +0000
@@ -91,7 +91,9 @@
 	PurpleContact *contact = user_data;
 	PurpleBuddy *b = purple_contact_get_priority_buddy(contact);
 
-	purple_conversation_new(PURPLE_CONV_TYPE_IM, b->account, b->name);
+	purple_conversation_new(PURPLE_CONV_TYPE_IM,
+	                        purple_buddy_get_account(b),
+							purple_buddy_get_name(b));
 	return TRUE;
 }
 
@@ -217,20 +219,25 @@
 
 static void buddy_ticker_show(void)
 {
-	PurpleBuddyList *list = purple_get_blist();
 	PurpleBlistNode *gnode, *cnode, *bnode;
 	PurpleBuddy *b;
 
-	if(!list)
-		return;
-
-	for(gnode = list->root; gnode; gnode = gnode->next) {
+	for(gnode = purple_blist_get_root();
+	    gnode;
+	    gnode = purple_blist_node_get_sibling_next(gnode))
+	{
 		if(!PURPLE_BLIST_NODE_IS_GROUP(gnode))
 			continue;
-		for(cnode = gnode->child; cnode; cnode = cnode->next) {
+		for(cnode = purple_blist_node_get_first_child(gnode);
+		    cnode;
+		    cnode = purple_blist_node_get_sibling_next(cnode))
+		{
 			if(!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
 				continue;
-			for(bnode = cnode->child; bnode; bnode = bnode->next) {
+			for(bnode = purple_blist_node_get_first_child(cnode);
+			    bnode;
+			    bnode = purple_blist_node_get_sibling_next(bnode))
+			{
 				if(!PURPLE_BLIST_NODE_IS_BUDDY(bnode))
 					continue;
 				b = (PurpleBuddy *)bnode;
--- a/pidgin/plugins/win32/winprefs/gtkappbar.c	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/plugins/win32/winprefs/gtkappbar.c	Wed Mar 04 16:52:47 2009 +0000
@@ -376,7 +376,7 @@
 		APPBARDATA abd;
 		MSG *msg = (MSG*)xevent;
 
-		purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanged\n");
+		purple_debug(PURPLE_DEBUG_MISC, "gtkappbar", "wnd_poschanged\n");
 
 		abd.hWnd = msg->hwnd;
 		abd.cbSize = sizeof(APPBARDATA);
@@ -391,7 +391,7 @@
         MSG *msg = (MSG*)xevent;
         WINDOWPOS *wpos = (WINDOWPOS*)msg->lParam;
 
-        purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanging\n");
+        purple_debug(PURPLE_DEBUG_MISC, "gtkappbar", "wnd_poschanging\n");
 
         if(ab->docked || ab->docking) {
                 wpos->x = ab->docked_rect.left;
@@ -526,7 +526,7 @@
 	        break;
 
         case ABN_FULLSCREENAPP:
-                purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "gtk_appbar_callback: ABN_FULLSCREENAPP: %d\n", (BOOL)msg->lParam);
+                purple_debug(PURPLE_DEBUG_MISC, "gtkappbar", "gtk_appbar_callback: ABN_FULLSCREENAPP: %d\n", (BOOL)msg->lParam);
 		if (!ab->iconized && ab->docked) {
 		if ((BOOL)msg->lParam) {
 			SetWindowPos(msg->hwnd, HWND_BOTTOM, 0, 0, 0, 0,
--- a/pidgin/win32/nsis/pidgin-installer.nsi	Wed Feb 25 22:59:41 2009 +0000
+++ b/pidgin/win32/nsis/pidgin-installer.nsi	Wed Mar 04 16:52:47 2009 +0000
@@ -709,6 +709,8 @@
     Push "ymsgr"
     Call un.UnregisterURIHandler
 
+    Delete "$INSTDIR\ca-certs\America_Online_Root_Certification_Authority_1.pem"
+    Delete "$INSTDIR\ca-certs\AOL_Member_CA.pem"
     Delete "$INSTDIR\ca-certs\CAcert_Class3.pem"
     Delete "$INSTDIR\ca-certs\CAcert_Root.pem"
     Delete "$INSTDIR\ca-certs\Equifax_Secure_CA.pem"
--- a/po/ChangeLog	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/ChangeLog	Wed Mar 04 16:52:47 2009 +0000
@@ -1,16 +1,31 @@
 Pidgin and Finch: The Pimpin' Penguin IM Clients That're Good for the Soul
 
+version 2.6.0
+
 version 2.5.5
+	* Afrikaans translation updated (Friedel Wolff)
 	* Bengali translation updated (Israt Jahan)
+	* Catalan translation updated (Josep Puigdemont)
+	* Chinese (Hong Kong) translation updated (Ambrose C. Li)
+	* Chinese (Traditional) translation updated (Ambrose C. Li)
 	* Czech translation updated (David Vachulka)
 	* Danish translation updated (Peter Bach)
+	* French translation updated (Éric Boumaour)
+	* German translation updated (Jochen Kemnade and Björn Voigt)
+	* Hungarian translation updated (Gabor Kelemen)
+	* Khmer translation added (Khoem Sokhem)
+	* Lithuanian translation updated (Laurynas Biveinis)
 	* Norwegian Bokmål translation updated (Hans Fredrik Nordhaug)
 	* Norwegian Nynorsk translation updated (Yngve Spjeld Landro)
+	* Portuguese (Brazilian) translation updated (Rodrigo Luiz
+	  Marques Flores)
+	* Punjabi translation updated (Amanpreet Singh Alam)
 	* Russian translation updated (Антон Самохвалов)
 	* Serbian translation updated (Miloš Popović)
 	* Serbian Latin translation updated (Miloš Popović)
 	* Slovak translation updated (loptosko)
 	* Slovenian translation updated (Martin Srebotnjak)
+	* Swedish translation updated (Peter Hjalmarsson)
 
 version 2.5.4
 	* Czech translation updated (David Vachulka)
--- a/po/POTFILES.in	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/POTFILES.in	Wed Mar 04 16:52:47 2009 +0000
@@ -133,6 +133,7 @@
 libpurple/protocols/oscar/peer.c
 libpurple/protocols/qq/buddy_info.c
 libpurple/protocols/qq/buddy_list.c
+libpurple/protocols/qq/buddy_memo.c
 libpurple/protocols/qq/buddy_opt.c
 libpurple/protocols/qq/group.c
 libpurple/protocols/qq/group_im.c
@@ -183,6 +184,7 @@
 libpurple/status.c
 libpurple/util.c
 libpurple/win32/libc_interface.c
+libpurple/xmlnode.c
 pidgin.desktop.in
 pidgin/eggtrayicon.c
 pidgin/gtkaccount.c
--- a/po/README	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/README	Wed Mar 04 16:52:47 2009 +0000
@@ -1,2 +1,2 @@
-For information on translating Pidgin, Libpurple, and Finch, please see
+For information on translating Pidgin, libpurple, and Finch, please see
 our wiki page at http://developer.pidgin.im/wiki/TipsForTranslators.
--- a/po/af.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/af.po	Wed Mar 04 16:52:47 2009 +0000
@@ -3,19 +3,21 @@
 # This file is distributed under the same license as the pidgin package.
 # Friedel Wolff <friedel BY translate.org.za>, 2006-2008.
 # Samuel Murray <afrikaans BY gmail.com>, 2007
+# F Wolff <friedel@translate.org.za>, 2009
 msgid ""
 msgstr ""
 "Project-Id-Version: 2.3.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-18 01:17-0800\n"
-"PO-Revision-Date: 2008-12-18 00:13+0200\n"
+"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"PO-Revision-Date: 2009-02-23 19:54+0200\n"
 "Last-Translator: F Wolff <friedel@translate.org.za>\n"
-"Language-Team: translate-discuss-swedish@lists.kde.org\n"
+"Language-Team: translate-discuss-af@lists.sourceforge.net\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: af\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Virtaal 0.2\n"
+"X-Generator: Virtaal 0.3.1\n"
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
@@ -32,7 +34,7 @@
 "Usage: %s [OPTION]...\n"
 "\n"
 "  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
+"  -d, --debug         print debugging messages to stderr\n"
 "  -h, --help          display this help and exit\n"
 "  -n, --nologin       don't automatically login\n"
 "  -v, --version       display the current version and exit\n"
@@ -41,7 +43,7 @@
 "Gebruik: %s [OPSIE]...\n"
 "\n"
 "  -c, --config=GIDS   gebruik GIDS vir konfigurasielêers\n"
-"  -d, --debug         skryf ontfoutboodskappe na stdout\n"
+"  -d, --debug         skryf ontfoutboodskappe na stderr\n"
 "  -h, --help          wys hierdie hulp en sluit af\n"
 "  -n, --nologin       moenie outomaties aanmeld nie\n"
 "  -v, --version       wys die huidige weergawe en sluit af\n"
@@ -1163,7 +1165,6 @@
 msgid "Change status to"
 msgstr "Verander status na:"
 
-#. Conversations
 msgid "Conversations"
 msgstr "Gesprekke"
 
@@ -1486,7 +1487,6 @@
 "Wanneer 'n nuwe gesprek geopen word, sal hierdie inprop die laaste gesprek "
 "in die huidige een invoeg."
 
-#, c-format
 msgid "Online"
 msgstr "Aanlyn"
 
@@ -1922,7 +1922,6 @@
 msgid "Transfer of file %s complete"
 msgstr "Oordrag van lêer %s voltooi"
 
-#, c-format
 msgid "File transfer complete"
 msgstr "Lêeroordrag voltooi"
 
@@ -1930,7 +1929,6 @@
 msgid "You canceled the transfer of %s"
 msgstr "U het die oordrag van %s gekanselleer"
 
-#, c-format
 msgid "File transfer cancelled"
 msgstr "Lêeroordrag gekanselleer"
 
@@ -2145,7 +2143,6 @@
 msgid "You are using %s, but this plugin requires %s."
 msgstr "U gebruik tans %s, maar hierdie inprop vereis %s."
 
-#, c-format
 msgid "This plugin has not defined an ID."
 msgstr "Hierdie inprop is nie as 'n ID gedefinieer nie."
 
@@ -2838,7 +2835,6 @@
 "Kon nie verbinding met plaaslike mDNS-bediener bewerkstellig nie.  Loop dit "
 "tans?"
 
-#. Creating the options for the protocol
 msgid "First name"
 msgstr "Naam"
 
@@ -2870,6 +2866,11 @@
 msgid "Purple Person"
 msgstr "Pers persoon"
 
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "Plaaslike poort"
+
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -3033,7 +3034,6 @@
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
-#, c-format
 msgid "Away"
 msgstr "Weg"
 
@@ -3917,7 +3917,6 @@
 msgid "Extended Away"
 msgstr "Vir lank weg"
 
-#, c-format
 msgid "Do Not Disturb"
 msgstr "Moenie pla nie"
 
@@ -4153,6 +4152,9 @@
 msgid "Re-initializing Stream"
 msgstr "Herinisialiseer stroom"
 
+msgid "Server doesn't support blocking"
+msgstr "Bediener ondersteun nie blokkering nie"
+
 msgid "Not Authorized"
 msgstr "Nie gemagtig nie"
 
@@ -4663,9 +4665,6 @@
 msgid "Select an action"
 msgstr "Stel 'n aksie op"
 
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Kan nie MSN-adresboek haal nie"
-
 #. 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
@@ -4907,7 +4906,6 @@
 msgid "Passport account not yet verified"
 msgstr "Paspoortrekening nog nie geverifieer nie"
 
-#, c-format
 msgid "Passport account suspended"
 msgstr "Paspoortrekening opgeskort"
 
@@ -4926,9 +4924,8 @@
 msgid "Other Contacts"
 msgstr "Ander kontakte"
 
-#, fuzzy
 msgid "Non-IM Contacts"
-msgstr "Verwyder kontak"
+msgstr ""
 
 msgid "Nudge"
 msgstr "Stootjie"
@@ -6112,7 +6109,6 @@
 msgid "Error. SSL support is not installed."
 msgstr "Fout. SSL-steun nie geïnstalleer nie."
 
-#, c-format
 msgid "This conference has been closed. No more messages can be sent."
 msgstr ""
 "Hierdie konferensie is gesluit. Geen verdere boodskappe kan gestuur word nie."
@@ -6377,23 +6373,18 @@
 msgid "Screen Sharing"
 msgstr "Skermdeling"
 
-#, c-format
 msgid "Free For Chat"
 msgstr "Beskikbaar vir geselsies"
 
-#, c-format
 msgid "Not Available"
 msgstr "Nie beskikbaar nie"
 
-#, c-format
 msgid "Occupied"
 msgstr "Beset"
 
-#, c-format
 msgid "Web Aware"
 msgstr "Web Aware"
 
-#, c-format
 msgid "Invisible"
 msgstr "Onsigbaar"
 
@@ -6492,13 +6483,11 @@
 msgid "_OK"
 msgstr "_Regso"
 
-#, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"U kan dalk binnekort ontkoppel word.  U moet dalk TOC gebruik tot dit "
-"reggemaak is.  Kontroleer %s vir bywerkings."
+#, fuzzy, c-format
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr ""
+"U kan dalk binnekort ontkoppel word.  As dit gebeur, kontroleer %s vir "
+"bywerkings."
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "Kan nie 'n geldige AIM-aanmeldhutswaarde kry nie."
@@ -6960,6 +6949,7 @@
 msgid "Get AIM Info"
 msgstr "Kry AIM-inligting"
 
+#. We only do this if the user is in our buddy list
 msgid "Edit Buddy Comment"
 msgstr "Wysig vriendkommentaar"
 
@@ -7067,7 +7057,6 @@
 msgid "Attempting to connect to %s:%hu."
 msgstr "Probeer tans om aan %s:%hu te koppel."
 
-#, c-format
 msgid "Attempting to connect via proxy server."
 msgstr "Probeer tans om via instaanbediener te koppel."
 
@@ -7295,7 +7284,6 @@
 msgid "Failed removing me from %d's buddy list"
 msgstr "%s het u van sy of haar vriendelys verwyder."
 
-#, fuzzy
 msgid "No reason given"
 msgstr "Geen rede gegee nie"
 
@@ -7331,32 +7319,26 @@
 msgid "You can only search for permanent Qun\n"
 msgstr "U kan net vir permanente QQ-groepe soek\n"
 
-#, fuzzy
 msgid "(Invalid UTF-8 string)"
-msgstr "Ongeldige instaaninstellings"
-
-#, fuzzy
+msgstr "(Ongeldige UTF-8-string)"
+
 msgid "Not member"
-msgstr "Ek is nie 'n lid nie"
+msgstr "Nie 'n lid nie"
 
 msgid "Member"
 msgstr "Lid"
 
-#, fuzzy
 msgid "Requesting"
-msgstr "Versoek-dialoog"
-
-#, fuzzy
+msgstr "Versoek tans"
+
 msgid "Admin"
-msgstr "Adium"
-
-#, fuzzy
+msgstr "Admin"
+
 msgid "Notice"
-msgstr "Kennisgewing:"
-
-#, fuzzy
+msgstr "Kennisgewing"
+
 msgid "Detail"
-msgstr "Verstek"
+msgstr "Detail"
 
 msgid "Creator"
 msgstr "Skepper"
@@ -7365,17 +7347,14 @@
 msgid "About me"
 msgstr "Omtrent %s"
 
-#, fuzzy
 msgid "Category"
-msgstr "Geselsiefout"
-
-#, fuzzy
+msgstr "Kategorie"
+
 msgid "The Qun does not allow others to join"
-msgstr "Hierdie groep laat nie ander toe om aan te sluit nie"
-
-#, fuzzy
+msgstr "De Qun laat nie ander toe om aan te sluit nie"
+
 msgid "Join QQ Qun"
-msgstr "Sluit by geselsie aan"
+msgstr "Sluit by QQ Qun aan"
 
 msgid "Input request here"
 msgstr "Gee versoek hier"
@@ -7401,9 +7380,8 @@
 msgid "Join Qun, Unknown Reply"
 msgstr ""
 
-#, fuzzy
 msgid "Quit Qun"
-msgstr "QQ-qun"
+msgstr ""
 
 msgid ""
 "Note, if you are the creator, \n"
@@ -7412,9 +7390,8 @@
 "Let wel, as u die skepper is, \n"
 "sal hierdie bewerking eindelik hierdie qun verwyder."
 
-#, fuzzy
 msgid "Sorry, you are not our style"
-msgstr "Jammer, u's nie my tipe nie..."
+msgstr "Jammer, u's nie my tipe nie"
 
 #, fuzzy
 msgid "Successfully changed Qun members"
@@ -7494,21 +7471,20 @@
 msgid "Invalid name"
 msgstr "Ongeldige naam"
 
-#, fuzzy
 msgid "Select icon..."
-msgstr "Kies vouer..."
-
-#, fuzzy, c-format
+msgstr "Kies ikoon..."
+
+#, c-format
 msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Aanmeldtyd</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Aanmeldtyd</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
 msgid "<b>Total Online Buddies</b>: %d<br>\n"
-msgstr "<b>Tans aanlyn</b>: %d<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Totale aantal vriende aanlyn</b>: %d<br>\n"
+
+#, c-format
 msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Vorige verfrissing</b>: %s<br>\n"
+msgstr "<b>Vorige verfrissing</b>: %d-%d-%d, %d:%d:%d<br>\n"
 
 #, c-format
 msgid "<b>Server</b>: %s<br>\n"
@@ -7522,9 +7498,9 @@
 msgid "<b>Connection Mode</b>: %s<br>\n"
 msgstr "<b>Verbindingmodus</b>: %s<br>\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "<b>My Internet IP</b>: %s:%d<br>\n"
-msgstr "<b>My internetadres</b>: %s<br>\n"
+msgstr "<b>My internetadres</b>: %s:%d<br>\n"
 
 #, c-format
 msgid "<b>Sent</b>: %lu<br>\n"
@@ -7546,13 +7522,13 @@
 msgid "<b>Received Duplicate</b>: %lu<br>\n"
 msgstr "<b>Duplikaat ontvang</b>: %lu<br>\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Aanmeldtyd</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>Tyd</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
 msgid "<b>IP</b>: %s<br>\n"
-msgstr "<b>Bediener</b>: %s<br>\n"
+msgstr "<b>IP</b>: %s<br>\n"
 
 msgid "Login Information"
 msgstr "Aanmeldinligting"
@@ -7571,6 +7547,10 @@
 msgid "<p><b>Acknowledgement</b>:<br>\n"
 msgstr "<b>Gestuur</b>: %lu<br>\n"
 
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<b>Vorige verfrissing</b>: %s<br>\n"
+
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr ""
 
@@ -7581,9 +7561,8 @@
 msgid "About OpenQ %s"
 msgstr "Omtrent %s"
 
-#, fuzzy
 msgid "Change Icon"
-msgstr "Stoor ikoon"
+msgstr "Verander ikoon"
 
 msgid "Change Password"
 msgstr "Verander wagwoord"
@@ -7598,6 +7577,10 @@
 msgid "About OpenQ"
 msgstr "Omtrent %s"
 
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Wysig adres"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -7617,7 +7600,7 @@
 
 #, fuzzy
 msgid "Select Server"
-msgstr "Kies gebruiker"
+msgstr "Kies bediener"
 
 msgid "QQ2005"
 msgstr ""
@@ -7637,6 +7620,9 @@
 msgid "Show server news"
 msgstr "Wys bedienernuus"
 
+msgid "Show chat room when msg comes"
+msgstr ""
+
 #, fuzzy
 msgid "Keep alive interval (seconds)"
 msgstr "Wakkerhou-interval(le)"
@@ -9284,6 +9270,9 @@
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "SIP-gebruikername mag nie spasies of @-simbole bevat nie"
 
+msgid "SIP connect server not specified"
+msgstr ""
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -11369,6 +11358,10 @@
 msgid "Macedonian"
 msgstr "Masedonies"
 
+#, fuzzy
+msgid "Mongolian"
+msgstr "Mongools"
+
 msgid "Bokmål Norwegian"
 msgstr "Bokmål-Noorweegs"
 
@@ -11483,8 +11476,30 @@
 "program nie.<BR><BR>"
 
 #, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin op irc.freenode.net<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">Vrae:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">Hulp d.m.v. e-pos:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">IRC-kanaal:</FONT> #pidgin op irc.freenode.net<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
 
 msgid "Current Developers"
 msgstr "Huidige programmeerders"
@@ -12139,6 +12154,10 @@
 msgid "Pidgin"
 msgstr "Pidgin"
 
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Sluit af omdat 'n ander libpurple-kliënt reeds loop.\n"
+
 msgid "Open All Messages"
 msgstr "Open alle boodskappe"
 
@@ -12478,6 +12497,10 @@
 msgid "No proxy"
 msgstr "Geen instaanbediener"
 
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "Gebruik afgeleë DNS met SOCKS4-instaanbedieners"
+
 msgid "_User:"
 msgstr "_Gebruiker:"
 
@@ -13918,9 +13941,6 @@
 msgid "Only when docked"
 msgstr "Net indien gedok"
 
-msgid "_Flash window when chat messages are received"
-msgstr "_Flits venster wanneer geselsieboodskappe ontvang word"
-
 msgid "Windows Pidgin Options"
 msgstr "Windows Pidgin-opsies"
 
@@ -13969,6 +13989,19 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "Hierdie inprop is nuttig om XMPP-bedieners of -kliënte te ontfout."
 
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Kan nie MSN-adresboek haal nie"
+
+#~ msgid ""
+#~ "You may be disconnected shortly.  You may want to use TOC until this is "
+#~ "fixed.  Check %s for updates."
+#~ msgstr ""
+#~ "U kan dalk binnekort ontkoppel word.  U moet dalk TOC gebruik tot dit "
+#~ "reggemaak is.  Kontroleer %s vir bywerkings."
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Flits venster wanneer geselsieboodskappe ontvang word"
+
 #~ msgid "Connection to server lost (no data received within %d second)"
 #~ msgid_plural ""
 #~ "Connection to server lost (no data received within %d seconds)"
--- a/po/bn.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/bn.po	Wed Mar 04 16:52:47 2009 +0000
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: Pidgin 2.5.3\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-13 09:58-0500\n"
+"POT-Creation-Date: 2009-02-27 10:17-0800\n"
 "PO-Revision-Date: 2008-11-13 17:07+0600\n"
 "Last-Translator: Israt Jahan <israt@ankur.org.bd>\n"
 "Language-Team: Bengali <core@bengalinux.org>\n"
@@ -21,24 +21,20 @@
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
-#: ../finch/finch.c:64 ../finch/finch.c:296 ../finch/finch.c:325
-#: ../finch/finch.c:413
 msgid "Finch"
 msgstr "Finch"
 
-#: ../finch/finch.c:208
 #, c-format
 msgid "%s. Try `%s -h' for more information.\n"
 msgstr "%s। আরও তথ্য জানাতে `%s -h' দ্বারা চেষ্টা করুন।\n"
 
-#: ../finch/finch.c:210
-#, c-format
+#, fuzzy, c-format
 msgid ""
 "%s\n"
 "Usage: %s [OPTION]...\n"
 "\n"
 "  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
+"  -d, --debug         print debugging messages to stderr\n"
 "  -h, --help          display this help and exit\n"
 "  -n, --nologin       don't automatically login\n"
 "  -v, --version       display the current version and exit\n"
@@ -53,7 +49,6 @@
 "  -v, --version       বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n"
 
 # tithi
-#: ../finch/finch.c:323 ../pidgin/gtkmain.c:732
 #, c-format
 msgid ""
 "%s encountered errors migrating your settings from %s to %s. Please "
@@ -64,263 +59,108 @@
 "করে তদন্ত করুন এবং নিজের হাতে পরিবর্তন শেষ করুন। অনুগ্রহ করে http://developer."
 "pidgin.im এ এই ত্রুটিটির প্রতিবেদন পাঠান"
 
-#: ../finch/gntaccount.c:126 ../finch/gntaccount.c:505 ../finch/gntblist.c:635
-#: ../finch/gntblist.c:798 ../finch/gntplugin.c:196 ../finch/gntplugin.c:244
-#: ../finch/gntrequest.c:380 ../finch/gntstatus.c:301 ../finch/gntstatus.c:310
-#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121
-#: ../finch/plugins/gntclipboard.c:128
-#: ../libpurple/protocols/jabber/buddy.c:2058
-#: ../libpurple/protocols/jabber/chat.c:704
-#: ../libpurple/protocols/jabber/chat.c:715
-#: ../libpurple/protocols/jabber/jabber.c:1779
-#: ../libpurple/protocols/qq/qq_process.c:90
-#: ../libpurple/protocols/silc/ops.c:76 ../libpurple/protocols/silc/ops.c:1473
-#: ../libpurple/protocols/silc10/ops.c:1451
 msgid "Error"
 msgstr "ত্রুটি"
 
-#: ../finch/gntaccount.c:126
 msgid "Account was not added"
 msgstr "একাউন্ট যুক্ত করা হয়নি"
 
 # তিথি
-#: ../finch/gntaccount.c:127
 msgid "Username of an account must be non-empty."
 msgstr "একটি একাউন্টের ব্যবহারকারীর নাম ফাঁকা থাকতে পারবে না।"
 
-#: ../finch/gntaccount.c:458
 msgid "New mail notifications"
 msgstr "নতুন মেইলের প্রজ্ঞাপণ"
 
-#: ../finch/gntaccount.c:468
 msgid "Remember password"
 msgstr "গুপ্তসংকেত স্মরণ রাখুন"
 
 # তিথি
-#: ../finch/gntaccount.c:506
 msgid "There are no protocol plugins installed."
 msgstr "এখানে কোনো প্রটোকল প্লাগইন সংস্থাপিত করা নেই।"
 
 # তিথি
-#: ../finch/gntaccount.c:507
 msgid "(You probably forgot to 'make install'.)"
 msgstr "(আপনি সম্ভবত 'সংস্থাপন করতে' ভুলে গেছেন।)"
 
-#: ../finch/gntaccount.c:517 ../finch/gntconn.c:138
-#: ../pidgin/gtkaccount.c:1498 ../pidgin/gtkblist.c:4796
 msgid "Modify Account"
 msgstr "একাউন্ট পরিবর্তন করুন"
 
-#: ../finch/gntaccount.c:517
 msgid "New Account"
 msgstr "নতুন একাউন্ট"
 
-#: ../finch/gntaccount.c:542 ../pidgin/gtkft.c:698
 msgid "Protocol:"
 msgstr "প্রটোকল:"
 
-#: ../finch/gntaccount.c:550
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:294
 msgid "Username:"
 msgstr "ব্যবহারকারীর নাম:"
 
-#: ../finch/gntaccount.c:563
 msgid "Password:"
 msgstr "গুপ্তসংকেত:"
 
-#: ../finch/gntaccount.c:573
 msgid "Alias:"
 msgstr "উপনাম:"
 
 #. Register checkbox
-#: ../finch/gntaccount.c:584
 msgid "Create this account on the server"
 msgstr "সার্ভারে এই একাউন্টটি তৈরী করুন।"
 
 #. Cancel button
 #. Cancel
-#: ../finch/gntaccount.c:600 ../finch/gntaccount.c:664
-#: ../finch/gntaccount.c:955 ../finch/gntblist.c:681 ../finch/gntblist.c:787
-#: ../finch/gntblist.c:835 ../finch/gntblist.c:1187 ../finch/gntblist.c:1424
-#: ../finch/gntblist.c:1558 ../finch/gntblist.c:2734 ../finch/gntblist.c:2785
-#: ../finch/gntblist.c:2859 ../finch/gntblist.c:2921 ../finch/gntcertmgr.c:90
-#: ../finch/gntconv.c:596 ../finch/gntplugin.c:532 ../finch/gntpounce.c:471
-#: ../finch/gntpounce.c:679 ../finch/gntprefs.c:265 ../finch/gntsound.c:1064
-#: ../finch/gntstatus.c:145 ../finch/gntstatus.c:485 ../finch/gntstatus.c:610
-#: ../finch/plugins/gnthistory.c:178 ../libpurple/account.c:1119
-#: ../libpurple/account.c:1451 ../libpurple/account.c:1486
-#: ../libpurple/conversation.c:1233 ../libpurple/plugins/buddynote.c:51
-#: ../libpurple/protocols/gg/gg.c:471 ../libpurple/protocols/gg/gg.c:613
-#: ../libpurple/protocols/gg/gg.c:742 ../libpurple/protocols/gg/gg.c:812
-#: ../libpurple/protocols/jabber/buddy.c:745
-#: ../libpurple/protocols/jabber/buddy.c:2452
-#: ../libpurple/protocols/jabber/buddy.c:2488
-#: ../libpurple/protocols/jabber/chat.c:813
-#: ../libpurple/protocols/jabber/jabber.c:1144
-#: ../libpurple/protocols/jabber/jabber.c:1153
-#: ../libpurple/protocols/jabber/jabber.c:1972
-#: ../libpurple/protocols/jabber/si.c:1103
-#: ../libpurple/protocols/jabber/usermood.c:199
-#: ../libpurple/protocols/jabber/usernick.c:78
-#: ../libpurple/protocols/jabber/xdata.c:401
-#: ../libpurple/protocols/msn/msn.c:320 ../libpurple/protocols/msn/msn.c:337
-#: ../libpurple/protocols/msn/msn.c:354 ../libpurple/protocols/msn/msn.c:371
-#: ../libpurple/protocols/msn/msn.c:392 ../libpurple/protocols/msnp9/msn.c:303
-#: ../libpurple/protocols/msnp9/msn.c:320
-#: ../libpurple/protocols/msnp9/msn.c:337
-#: ../libpurple/protocols/msnp9/msn.c:354
-#: ../libpurple/protocols/msnp9/msn.c:375
-#: ../libpurple/protocols/myspace/user.c:833
-#: ../libpurple/protocols/myspace/user.c:896
-#: ../libpurple/protocols/oscar/oscar.c:6320
-#: ../libpurple/protocols/oscar/peer.c:1052
-#: ../libpurple/protocols/qq/buddy_info.c:441
-#: ../libpurple/protocols/qq/buddy_opt.c:326
-#: ../libpurple/protocols/qq/buddy_opt.c:621
-#: ../libpurple/protocols/qq/buddy_opt.c:670
-#: ../libpurple/protocols/qq/buddy_opt.c:1137
-#: ../libpurple/protocols/qq/group.c:112
-#: ../libpurple/protocols/qq/group_join.c:151
-#: ../libpurple/protocols/qq/group_join.c:336
-#: ../libpurple/protocols/qq/group_opt.c:127
-#: ../libpurple/protocols/qq/group_opt.c:355
-#: ../libpurple/protocols/qq/qq_base.c:882
-#: ../libpurple/protocols/sametime/sametime.c:3445
-#: ../libpurple/protocols/sametime/sametime.c:3531
-#: ../libpurple/protocols/sametime/sametime.c:3705
-#: ../libpurple/protocols/sametime/sametime.c:5457
-#: ../libpurple/protocols/sametime/sametime.c:5547
-#: ../libpurple/protocols/sametime/sametime.c:5672
-#: ../libpurple/protocols/silc/buddy.c:455
-#: ../libpurple/protocols/silc/buddy.c:1079
-#: ../libpurple/protocols/silc/buddy.c:1194
-#: ../libpurple/protocols/silc/chat.c:619
-#: ../libpurple/protocols/silc/chat.c:753
-#: ../libpurple/protocols/silc/ops.c:1833
-#: ../libpurple/protocols/silc/silc.c:1058
-#: ../libpurple/protocols/silc/silc.c:1266
-#: ../libpurple/protocols/silc10/buddy.c:468
-#: ../libpurple/protocols/silc10/buddy.c:1087
-#: ../libpurple/protocols/silc10/buddy.c:1192
-#: ../libpurple/protocols/silc10/chat.c:600
-#: ../libpurple/protocols/silc10/chat.c:730
-#: ../libpurple/protocols/silc10/ops.c:1910
-#: ../libpurple/protocols/silc10/silc.c:761
-#: ../libpurple/protocols/silc10/silc.c:967
-#: ../libpurple/protocols/yahoo/yahoo.c:1000
-#: ../libpurple/protocols/yahoo/yahoo.c:3583
-#: ../libpurple/protocols/yahoo/yahoo.c:3594 ../pidgin/gtkaccount.c:1865
-#: ../pidgin/gtkaccount.c:2417 ../pidgin/gtkblist.c:686
-#: ../pidgin/gtkblist.c:7013 ../pidgin/gtkcertmgr.c:197
-#: ../pidgin/gtkdialogs.c:738 ../pidgin/gtkdialogs.c:877
-#: ../pidgin/gtkdialogs.c:969 ../pidgin/gtkdialogs.c:989
-#: ../pidgin/gtkdialogs.c:1013 ../pidgin/gtkdialogs.c:1035
-#: ../pidgin/gtkdialogs.c:1083 ../pidgin/gtkdialogs.c:1124
-#: ../pidgin/gtkdialogs.c:1180 ../pidgin/gtkdialogs.c:1219
-#: ../pidgin/gtkdialogs.c:1246 ../pidgin/gtkimhtmltoolbar.c:439
-#: ../pidgin/gtklog.c:327 ../pidgin/gtkplugin.c:302 ../pidgin/gtkpounce.c:1139
-#: ../pidgin/gtkprivacy.c:509 ../pidgin/gtkprivacy.c:525
-#: ../pidgin/gtkprivacy.c:550 ../pidgin/gtkprivacy.c:564
-#: ../pidgin/gtkrequest.c:273 ../pidgin/gtksavedstatuses.c:348
-#: ../pidgin/gtkstatusbox.c:1628
 msgid "Cancel"
 msgstr "বাতিল"
 
 #. Save button
 #. Save
-#: ../finch/gntaccount.c:604 ../finch/gntcertmgr.c:310 ../finch/gntdebug.c:335
-#: ../finch/gntplugin.c:532 ../finch/gntpounce.c:477 ../finch/gntprefs.c:265
-#: ../finch/gntsound.c:1061 ../finch/gntstatus.c:488 ../finch/gntstatus.c:598
-#: ../libpurple/account.c:1485 ../libpurple/plugins/buddynote.c:50
-#: ../libpurple/protocols/jabber/buddy.c:744 ../pidgin/gtkblist.c:686
-#: ../pidgin/gtkdebug.c:746 ../pidgin/gtkrequest.c:279
 msgid "Save"
 msgstr "সংরক্ষণ"
 
-#: ../finch/gntaccount.c:657 ../pidgin/gtkaccount.c:1856
-#: ../pidgin/gtksavedstatuses.c:336 ../pidgin/gtkstatusbox.c:1622
 #, c-format
 msgid "Are you sure you want to delete %s?"
 msgstr "আপনি কি নিশ্চিত আপনি %s মুছে ফেলতে চান?"
 
-#: ../finch/gntaccount.c:660
 msgid "Delete Account"
 msgstr "একাউন্ট মুছে ফেলুন"
 
 #. Delete button
-#: ../finch/gntaccount.c:663 ../finch/gntaccount.c:773
-#: ../finch/gntcertmgr.c:318 ../finch/gntpounce.c:678 ../finch/gntpounce.c:741
-#: ../finch/gntstatus.c:144 ../finch/gntstatus.c:210
-#: ../pidgin/gtkaccount.c:1864 ../pidgin/gtklog.c:326
-#: ../pidgin/gtkpounce.c:1138 ../pidgin/gtkrequest.c:276
-#: ../pidgin/gtksavedstatuses.c:347 ../pidgin/gtkstatusbox.c:1627
 msgid "Delete"
 msgstr "মুছুন"
 
-#: ../finch/gntaccount.c:734 ../finch/gntblist.c:2601 ../finch/gntui.c:94
-#: ../pidgin/gtkaccount.c:2278
 msgid "Accounts"
 msgstr "একাউন্টসমূহ"
 
-#: ../finch/gntaccount.c:740
 msgid "You can enable/disable accounts from the following list."
 msgstr "আপনি নিম্নোক্ত তালিকা হতে একাউন্টসমূহকে সক্রিয়/নিষ্ক্রিয় করতে পারেন।"
 
 #. Add button
-#: ../finch/gntaccount.c:764 ../finch/gntaccount.c:954 ../finch/gntblist.c:680
-#: ../finch/gntblist.c:787 ../finch/gntblist.c:835 ../finch/gntblist.c:3041
-#: ../finch/gntcertmgr.c:305 ../finch/gntnotify.c:443 ../finch/gntpounce.c:725
-#: ../finch/gntroomlist.c:275 ../finch/gntstatus.c:199
-#: ../libpurple/protocols/gg/gg.c:811
-#: ../libpurple/protocols/qq/buddy_opt.c:1136
-#: ../libpurple/protocols/sametime/sametime.c:5546
-#: ../libpurple/protocols/silc/chat.c:618
-#: ../libpurple/protocols/silc10/chat.c:599 ../pidgin/gtkaccount.c:2416
-#: ../pidgin/gtkblist.c:7012 ../pidgin/gtkconv.c:1745
-#: ../pidgin/gtkrequest.c:277
 msgid "Add"
 msgstr "যুক্ত"
 
 #. Modify button
-#: ../finch/gntaccount.c:769 ../finch/gntpounce.c:733
 msgid "Modify"
 msgstr "পরিবর্তন"
 
-#: ../finch/gntaccount.c:877 ../pidgin/gtkaccount.c:2363
 #, c-format
 msgid "%s%s%s%s has made %s his or her buddy%s%s"
 msgstr "%1s%2s%3s%4s, %5s-কে তার বন্ধু করেছেন%6s%7s"
 
-#: ../finch/gntaccount.c:950 ../pidgin/gtkaccount.c:2415
 msgid "Add buddy to your list?"
 msgstr "আপনার তালিকায় বন্ধু যোগ করতে চান কি?"
 
-#: ../finch/gntaccount.c:1010 ../pidgin/gtkaccount.c:2473
 #, c-format
 msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s"
 msgstr "%1s%2s%3s%4s তার বন্ধু তালিকা %s6%7s তে %5s কে যুক্ত করতে চায়"
 
-#: ../finch/gntaccount.c:1035 ../finch/gntaccount.c:1038
-#: ../finch/gntaccount.c:1065 ../pidgin/gtkaccount.c:2496
-#: ../pidgin/gtkaccount.c:2503
 msgid "Authorize buddy?"
 msgstr "বন্ধুকে কি প্রাধিকার দিতে চান?"
 
 # তিথি
-#: ../finch/gntaccount.c:1042 ../finch/gntaccount.c:1069
-#: ../libpurple/protocols/qq/group_info.c:160
-#: ../libpurple/protocols/qq/group_opt.c:451 ../pidgin/gtkaccount.c:2497
-#: ../pidgin/gtkaccount.c:2504
 msgid "Authorize"
 msgstr "অনুমোদিত"
 
-#: ../finch/gntaccount.c:1043 ../finch/gntaccount.c:1070
-#: ../libpurple/protocols/qq/group_opt.c:450 ../pidgin/gtkaccount.c:2498
-#: ../pidgin/gtkaccount.c:2505
 msgid "Deny"
 msgstr "প্রত্যাখ্যান করুন"
 
-#: ../finch/gntblist.c:277
 #, c-format
 msgid ""
 "Online: %d\n"
@@ -329,12 +169,10 @@
 "অনলাইন: %d\n"
 "মোট: %d"
 
-#: ../finch/gntblist.c:286
 #, c-format
 msgid "Account: %s (%s)"
 msgstr "একাউন্ট: %1s (%2s)"
 
-#: ../finch/gntblist.c:298
 #, c-format
 msgid ""
 "\n"
@@ -343,353 +181,190 @@
 "\n"
 "শেষ দেখা: %s আগে"
 
-#: ../finch/gntblist.c:318 ../pidgin/gtkprefs.c:327
-#: ../pidgin/pixmaps/emotes/default/24/default.theme.in.h:1
 msgid "Default"
 msgstr "পূর্বনির্ধারিত"
 
-#: ../finch/gntblist.c:624
 msgid "You must provide a username for the buddy."
 msgstr "আপনাকে অবশ্যই  বন্ধুর জন্য একটি নাম দিতে হবে।"
 
 # tithi
-#: ../finch/gntblist.c:626
 msgid "You must provide a group."
 msgstr "আপনাকে অবশ্যই একটি গ্রুপ প্রদান করতে হবে।"
 
-#: ../finch/gntblist.c:628
 msgid "You must select an account."
 msgstr "আপনাকে অবশ্যই একটি একাউন্ট নির্বাচন করতে হবে।"
 
 # tithi
-#: ../finch/gntblist.c:630
 msgid "The selected account is not online."
 msgstr "নির্বাচিত একাউন্টটি অনলাইনে নেই।"
 
-#: ../finch/gntblist.c:635
 msgid "Error adding buddy"
 msgstr "বন্ধুকে যুক্ত করতে ত্রুটি"
 
-#: ../finch/gntblist.c:662 ../libpurple/protocols/irc/irc.c:990
-#: ../libpurple/protocols/irc/msgs.c:370
-#: ../libpurple/protocols/jabber/jabber.c:1055
-#: ../libpurple/protocols/jabber/jabber.c:1057
-#: ../libpurple/protocols/oscar/oscar.c:4103
-#: ../libpurple/protocols/silc/buddy.c:1554
-#: ../libpurple/protocols/silc/ops.c:1210
-#: ../libpurple/protocols/silc/ops.c:1213
-#: ../libpurple/protocols/silc/ops.c:1349
-#: ../libpurple/protocols/silc/ops.c:1352
-#: ../libpurple/protocols/silc/silc.c:1240
-#: ../libpurple/protocols/silc10/buddy.c:1554
-#: ../libpurple/protocols/silc10/ops.c:1191
-#: ../libpurple/protocols/silc10/ops.c:1194
-#: ../libpurple/protocols/silc10/ops.c:1340
-#: ../libpurple/protocols/silc10/ops.c:1343
-#: ../libpurple/protocols/silc10/silc.c:941 ../pidgin/gtkaccount.c:1938
-#: ../pidgin/gtksavedstatuses.c:1013
 msgid "Username"
 msgstr "ব্যবহারকারীর নাম"
 
-#: ../finch/gntblist.c:665
 msgid "Alias (optional)"
 msgstr "উপনাম (ঐচ্ছিক)"
 
-#: ../finch/gntblist.c:668
 msgid "Add in group"
 msgstr "গ্রুপে যোগ দিন"
 
-#: ../finch/gntblist.c:672 ../finch/gntblist.c:766 ../finch/gntblist.c:1769
-#: ../finch/gntblist.c:2715 ../finch/gntblist.c:2771 ../finch/gntblist.c:2846
-#: ../finch/gntblist.c:2906 ../finch/gntnotify.c:186 ../finch/gntstatus.c:576
-#: ../libpurple/plugins/idle.c:153 ../libpurple/plugins/idle.c:190
-#: ../pidgin/gtkblist.c:3432 ../pidgin/gtknotify.c:532
-#: ../pidgin/gtkpounce.c:1306 ../pidgin/plugins/gevolution/gevolution.c:447
 msgid "Account"
 msgstr "একাউন্ট"
 
-#: ../finch/gntblist.c:678 ../finch/gntblist.c:1236
-#: ../libpurple/protocols/qq/buddy_opt.c:446
-#: ../libpurple/protocols/qq/qq.c:819 ../libpurple/protocols/silc/buddy.c:725
-#: ../libpurple/protocols/silc/buddy.c:1030
-#: ../libpurple/protocols/silc/buddy.c:1075
-#: ../libpurple/protocols/silc/buddy.c:1185
-#: ../libpurple/protocols/silc10/buddy.c:737
-#: ../libpurple/protocols/silc10/buddy.c:1036
-#: ../libpurple/protocols/silc10/buddy.c:1083
-#: ../libpurple/protocols/silc10/buddy.c:1183
-#: ../libpurple/protocols/yahoo/yahoo.c:3421 ../pidgin/gtkblist.c:6561
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:449
 msgid "Add Buddy"
 msgstr "বন্ধু যোগ করুন"
 
-#: ../finch/gntblist.c:678
 msgid "Please enter buddy information."
 msgstr "অনুগ্রহ করে বন্ধুর তথ্য প্রবেশ করান।"
 
-#: ../finch/gntblist.c:734 ../libpurple/blist.c:1245
 msgid "Chats"
 msgstr "আড্ডা"
 
 #. Extract their Name and put it in
-#: ../finch/gntblist.c:772 ../finch/gntblist.c:2710 ../finch/gntblist.c:2766
-#: ../finch/gntblist.c:2901 ../finch/gntconv.c:584 ../finch/gntroomlist.c:299
-#: ../libpurple/protocols/jabber/jabber.c:1072
-#: ../libpurple/protocols/jabber/jabber.c:1075
-#: ../libpurple/protocols/msn/msn.c:2018 ../libpurple/protocols/msn/msn.c:2083
-#: ../libpurple/protocols/msn/msn.c:2110
-#: ../libpurple/protocols/msnp9/msn.c:1724
-#: ../libpurple/protocols/msnp9/msn.c:1789
-#: ../libpurple/protocols/msnp9/msn.c:1816
-#: ../libpurple/protocols/qq/buddy_info.c:120 ../pidgin/gtkplugin.c:770
-#: ../pidgin/gtkroomlist.c:739
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:132
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:123
 msgid "Name"
 msgstr "নাম"
 
-#: ../finch/gntblist.c:775 ../finch/gntblist.c:1710
-#: ../libpurple/protocols/gg/gg.c:1636 ../libpurple/protocols/msn/msn.c:1837
-#: ../libpurple/protocols/msnp9/msn.c:1542
-#: ../libpurple/protocols/silc/chat.c:609
-#: ../libpurple/protocols/silc10/chat.c:590
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:704
-#: ../libpurple/protocols/zephyr/zephyr.c:791
-#: ../libpurple/protocols/zephyr/zephyr.c:1170 ../pidgin/gtkdialogs.c:988
-#: ../pidgin/gtkdialogs.c:1012 ../pidgin/gtkdialogs.c:1034
-#: ../pidgin/gtkrequest.c:280
 msgid "Alias"
 msgstr "উপনাম"
 
-#: ../finch/gntblist.c:778 ../finch/gntblist.c:3057
 msgid "Group"
 msgstr "গ্রুপ"
 
-#: ../finch/gntblist.c:782 ../finch/gntblist.c:1203
 msgid "Auto-join"
 msgstr "স্বয়ং-যোগদান"
 
-#: ../finch/gntblist.c:785 ../finch/gntblist.c:1238 ../pidgin/gtkblist.c:6926
 msgid "Add Chat"
 msgstr "আড্ডায় যোগ দিন"
 
 # tihi
-#: ../finch/gntblist.c:786
 msgid "You can edit more information from the context menu later."
 msgstr "আপনি পরবর্তীতে প্রসঙ্গ তালিকা হতে আরও তথ্য সম্পাদনা করতে পারেন।"
 
-#: ../finch/gntblist.c:798
 msgid "Error adding group"
 msgstr "গ্রুপ যুক্ত করতে ত্রুটি"
 
-#: ../finch/gntblist.c:799
 msgid "You must give a name for the group to add."
 msgstr "আপনাকে অবশ্যই  গ্রুপটি যোগ করার জন্য একটি নাম দিতে হবে।"
 
-#: ../finch/gntblist.c:833 ../finch/gntblist.c:1240
-#: ../libpurple/protocols/sametime/sametime.c:5456
-#: ../libpurple/protocols/sametime/sametime.c:5544 ../pidgin/gtkblist.c:7009
 msgid "Add Group"
 msgstr "গ্রুপ যুক্ত করুন"
 
-#: ../finch/gntblist.c:833
 msgid "Enter the name of the group"
 msgstr "গ্রুপের নাম প্রবেশ করান"
 
-#: ../finch/gntblist.c:1186 ../pidgin/gtkblist.c:685
 msgid "Edit Chat"
 msgstr "আড্ডা সম্পাদনা করা"
 
 # tihi
-#: ../finch/gntblist.c:1186
 msgid "Please Update the necessary fields."
 msgstr "অনুগ্রহ করে প্রয়োজনীয় ক্ষেত্রগুলো হালনাগাদ করুন।"
 
-#: ../finch/gntblist.c:1187 ../finch/gntstatus.c:205
 msgid "Edit"
 msgstr "সম্পাদন"
 
-#: ../finch/gntblist.c:1212
 msgid "Edit Settings"
 msgstr "বিন্যাসনসমূহ সম্পাদন করুন"
 
-#: ../finch/gntblist.c:1248 ../pidgin/gtkutils.c:984
 msgid "Information"
 msgstr "তথ্য"
 
-#: ../finch/gntblist.c:1248 ../pidgin/gtkutils.c:984
 msgid "Retrieving..."
 msgstr "উদ্ধার করছে..."
 
-#: ../finch/gntblist.c:1313 ../finch/gntconv.c:633
-#: ../libpurple/protocols/qq/qq.c:845 ../libpurple/protocols/silc/chat.c:906
-#: ../libpurple/protocols/silc10/chat.c:883
 msgid "Get Info"
 msgstr "তথ্য গ্রহণ করুন"
 
-#: ../finch/gntblist.c:1317
 msgid "Add Buddy Pounce"
 msgstr "বন্ধু পাউন্স যুক্ত করুন"
 
-#: ../finch/gntblist.c:1324 ../finch/gntconv.c:645
-#: ../libpurple/protocols/jabber/si.c:1103
-#: ../libpurple/protocols/oscar/oscar.c:668 ../libpurple/protocols/qq/qq.c:831
-#: ../pidgin/gtkconv.c:1684
 msgid "Send File"
 msgstr "ফাইল পাঠান"
 
-#: ../finch/gntblist.c:1331 ../libpurple/protocols/gg/gg.c:1685
-#: ../libpurple/protocols/msn/msn.c:798 ../libpurple/protocols/msnp9/msn.c:581
 msgid "Blocked"
 msgstr "আবদ্ধ"
 
-#: ../finch/gntblist.c:1336 ../pidgin/gtkblist.c:1465
-#: ../pidgin/gtkblist.c:1594
 msgid "Show when offline"
 msgstr "অফলাইনে থাকলে প্রদর্শন করুন"
 
-#: ../finch/gntblist.c:1419
 #, c-format
 msgid "Please enter the new name for %s"
 msgstr "অনুগ্রহ করে %s এর জন্য নতুন নাম প্রবেশ করান"
 
-#: ../finch/gntblist.c:1421 ../finch/gntblist.c:1710
 msgid "Rename"
 msgstr "পুনঃ নামকরণ করুন"
 
-#: ../finch/gntblist.c:1421
 msgid "Set Alias"
 msgstr "উপনাম নির্ধারন করুন"
 
 # tithi
-#: ../finch/gntblist.c:1422
 msgid "Enter empty string to reset the name."
 msgstr "নামটি পুনঃনির্ধারণ করতে খালি স্ট্রিং প্রবেশ করান।"
 
 # tithi
-#: ../finch/gntblist.c:1536
 msgid "Removing this contact will also remove all the buddies in the contact"
 msgstr "এই যোগাযোগটি অপসারণ করার কারণে যোগাযোগের সকল বন্ধুও অপসারিত হবে।"
 
 # tihi
-#: ../finch/gntblist.c:1544
 msgid "Removing this group will also remove all the buddies in the group"
 msgstr "এই গ্রুপটি অপসারণ করার কারণে গ্রুপের সকল বন্ধুও অপসারিত হবে।"
 
-#: ../finch/gntblist.c:1549
 #, c-format
 msgid "Are you sure you want to remove %s?"
 msgstr "আপনি কি নিশ্চিত আপনি %s অপসারণ করতে চান?"
 
 #. XXX: anything to do with the returned ui-handle?
-#: ../finch/gntblist.c:1552
 msgid "Confirm Remove"
 msgstr "অপসারণ নিশ্চিত করুন"
 
-#: ../finch/gntblist.c:1557 ../finch/gntblist.c:1712 ../finch/gntft.c:245
-#: ../pidgin/gtkconv.c:1742 ../pidgin/gtkrequest.c:278
-#: ../pidgin/gtkstatusbox.c:269
 msgid "Remove"
 msgstr "অপসারণ"
 
 #. Buddy List
-#: ../finch/gntblist.c:1686 ../finch/gntblist.c:3098 ../finch/gntprefs.c:258
-#: ../finch/gntui.c:95 ../pidgin/gtkblist.c:5292
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:326
 msgid "Buddy List"
 msgstr "Buddy List"
 
-#: ../finch/gntblist.c:1717
 msgid "Place tagged"
 msgstr "স্থান চিহ্নিত করা হয়েছে"
 
 # tithi
-#: ../finch/gntblist.c:1722
 msgid "Toggle Tag"
 msgstr "টোগল ট্যাগ"
 
-#: ../finch/gntblist.c:1726 ../finch/gntblist.c:2915
 msgid "View Log"
 msgstr "লগ প্রদর্শন"
 
 #. General
-#: ../finch/gntblist.c:1762 ../libpurple/protocols/gg/gg.c:584
-#: ../libpurple/protocols/gg/gg.c:965 ../libpurple/protocols/gg/gg.c:1034
-#: ../libpurple/protocols/gg/gg.c:2353
-#: ../libpurple/protocols/jabber/buddy.c:314
-#: ../libpurple/protocols/jabber/buddy.c:1267
-#: ../libpurple/protocols/jabber/buddy.c:2243
-#: ../libpurple/protocols/jabber/buddy.c:2435
-#: ../libpurple/protocols/jabber/jabber.c:1083
-#: ../libpurple/protocols/jabber/jabber.c:1799
-#: ../libpurple/protocols/jabber/jabber.c:1813
-#: ../libpurple/protocols/jabber/jabber.c:1827
-#: ../libpurple/protocols/jabber/jabber.c:1841
-#: ../libpurple/protocols/jabber/jabber.c:1855
-#: ../libpurple/protocols/msn/msn.c:1845 ../libpurple/protocols/msn/msn.c:2021
-#: ../libpurple/protocols/msnp9/msn.c:1550
-#: ../libpurple/protocols/msnp9/msn.c:1727
-#: ../libpurple/protocols/qq/buddy_info.c:112
-#: ../libpurple/protocols/silc/buddy.c:1550
-#: ../libpurple/protocols/silc/ops.c:1016
-#: ../libpurple/protocols/silc/ops.c:1199
-#: ../libpurple/protocols/silc/ops.c:1337
-#: ../libpurple/protocols/silc10/buddy.c:1550
-#: ../libpurple/protocols/silc10/ops.c:1036
-#: ../libpurple/protocols/silc10/ops.c:1179
-#: ../libpurple/protocols/silc10/ops.c:1328
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1066 ../pidgin/gtkblist.c:3456
 msgid "Nickname"
 msgstr "ডাকনাম"
 
 #. Never know what those translations might end up like...
 #. Idle stuff
-#: ../finch/gntblist.c:1784 ../finch/gntprefs.c:261
-#: ../libpurple/protocols/bonjour/bonjour.c:365
-#: ../libpurple/protocols/jabber/buddy.c:807
-#: ../libpurple/protocols/jabber/buddy.c:977
-#: ../libpurple/protocols/msn/msn.c:740 ../libpurple/protocols/msn/msn.c:760
-#: ../libpurple/protocols/msn/msn.c:768 ../libpurple/protocols/msn/state.c:32
-#: ../libpurple/protocols/msnp9/msn.c:560
-#: ../libpurple/protocols/msnp9/state.c:32
-#: ../libpurple/protocols/novell/novell.c:2843
-#: ../libpurple/protocols/oscar/oscar.c:3152
-#: ../libpurple/protocols/yahoo/yahoo.c:3175
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:710 ../pidgin/gtkblist.c:3484
-#: ../pidgin/gtkblist.c:3958 ../pidgin/gtkprefs.c:2076
 msgid "Idle"
 msgstr "অলস"
 
-#: ../finch/gntblist.c:1798
 msgid "On Mobile"
 msgstr "মোবাইলে"
 
-#: ../finch/gntblist.c:2105 ../pidgin/gtkdocklet.c:582
 msgid "New..."
 msgstr "নতুন..."
 
-#: ../finch/gntblist.c:2112 ../pidgin/gtkdocklet.c:583
 msgid "Saved..."
 msgstr "সংরক্ষিত..."
 
-#: ../finch/gntblist.c:2569 ../finch/gntplugin.c:352 ../finch/gntui.c:100
-#: ../pidgin/gtkplugin.c:719
 msgid "Plugins"
 msgstr "প্লাগইন"
 
-#: ../finch/gntblist.c:2723 ../finch/gntblist.c:2728
 msgid "Block/Unblock"
 msgstr "ব্লক/ব্লক সরান"
 
-#: ../finch/gntblist.c:2724 ../libpurple/protocols/gg/gg.c:1719
 msgid "Block"
 msgstr "ব্লক"
 
-#: ../finch/gntblist.c:2725 ../libpurple/protocols/gg/gg.c:1715
 msgid "Unblock"
 msgstr "ব্লক সরান"
 
-#: ../finch/gntblist.c:2730
 msgid ""
 "Please enter the username or alias of the person you would like to Block/"
 "Unblock."
@@ -700,77 +375,29 @@
 #. Not multiline
 #. Not masked?
 #. No hints?
-#: ../finch/gntblist.c:2733 ../finch/gntblist.c:2784 ../finch/gntblist.c:2920
-#: ../finch/gntcertmgr.c:89 ../finch/gntconn.c:137 ../finch/gntconv.c:595
-#: ../finch/gntnotify.c:81 ../finch/plugins/gnthistory.c:177
-#: ../libpurple/account.c:1118 ../libpurple/account.c:1450
-#: ../libpurple/protocols/gg/gg.c:470 ../libpurple/protocols/gg/gg.c:612
-#: ../libpurple/protocols/gg/gg.c:741
-#: ../libpurple/protocols/jabber/jabber.c:1971
-#: ../libpurple/protocols/jabber/xdata.c:400
-#: ../libpurple/protocols/msn/msn.c:319 ../libpurple/protocols/msn/msn.c:336
-#: ../libpurple/protocols/msn/msn.c:353 ../libpurple/protocols/msn/msn.c:370
-#: ../libpurple/protocols/msnp9/msn.c:302
-#: ../libpurple/protocols/msnp9/msn.c:319
-#: ../libpurple/protocols/msnp9/msn.c:336
-#: ../libpurple/protocols/msnp9/msn.c:353
-#: ../libpurple/protocols/myspace/user.c:832
-#: ../libpurple/protocols/myspace/user.c:895
-#: ../libpurple/protocols/oscar/oscar.c:6319
-#: ../libpurple/protocols/qq/buddy_opt.c:620
-#: ../libpurple/protocols/qq/group_opt.c:126
-#: ../libpurple/protocols/qq/qq_base.c:881
-#: ../libpurple/protocols/silc/buddy.c:454
-#: ../libpurple/protocols/silc/buddy.c:1193
-#: ../libpurple/protocols/silc/chat.c:448
-#: ../libpurple/protocols/silc/chat.c:485
-#: ../libpurple/protocols/silc/chat.c:752
-#: ../libpurple/protocols/silc/ops.c:1306
-#: ../libpurple/protocols/silc/ops.c:1832
-#: ../libpurple/protocols/silc/silc.c:1057
-#: ../libpurple/protocols/silc10/buddy.c:467
-#: ../libpurple/protocols/silc10/buddy.c:1191
-#: ../libpurple/protocols/silc10/chat.c:425
-#: ../libpurple/protocols/silc10/chat.c:464
-#: ../libpurple/protocols/silc10/chat.c:729
-#: ../libpurple/protocols/silc10/ops.c:1297
-#: ../libpurple/protocols/silc10/ops.c:1909
-#: ../libpurple/protocols/silc10/silc.c:760
-#: ../libpurple/protocols/yahoo/yahoo.c:999
-#: ../libpurple/protocols/yahoo/yahoo.c:3582
-#: ../libpurple/protocols/yahoo/yahoo.c:3593 ../pidgin/gtkcertmgr.c:195
-#: ../pidgin/gtkdialogs.c:737 ../pidgin/gtkdialogs.c:876
-#: ../pidgin/gtkdialogs.c:968 ../pidgin/gtkrequest.c:272
 msgid "OK"
 msgstr "ঠিক আছে"
 
-#: ../finch/gntblist.c:2779 ../pidgin/gtkdialogs.c:732
 msgid "New Instant Message"
 msgstr "নতুন তাৎক্ষণিক বার্তা"
 
-#: ../finch/gntblist.c:2781 ../pidgin/gtkdialogs.c:734
 msgid "Please enter the username or alias of the person you would like to IM."
 msgstr ""
 "অনুগ্রহ করে আপনি যে ব্যাক্তিকে তাৎক্ষণিক বার্তা পাঠাতে চান তার ব্যবহারকারী-নাম বা "
 "ডাকনাম প্রবেশ করান।"
 
-#: ../finch/gntblist.c:2842
 msgid "Channel"
 msgstr "চ্যানেল"
 
-#: ../finch/gntblist.c:2854 ../pidgin/gtkblist.c:1038
 msgid "Join a Chat"
 msgstr "আড্ডায় যোগ দিন"
 
-#: ../finch/gntblist.c:2856
 msgid "Please enter the name of the chat you want to join."
 msgstr "অনুগ্রহ করে আপনি যে আড্ডায় যোগ দিতে চান তার নাম প্রবেশ করান।"
 
-#: ../finch/gntblist.c:2858 ../finch/gntnotify.c:452
 msgid "Join"
 msgstr "যোগ দিন"
 
-#: ../finch/gntblist.c:2917 ../pidgin/gtkdialogs.c:965
 msgid ""
 "Please enter the username or alias of the person whose log you would like to "
 "view."
@@ -779,91 +406,67 @@
 "করান।"
 
 #. Create the "Options" frame.
-#: ../finch/gntblist.c:2971 ../finch/gntpounce.c:459 ../pidgin/gtkpounce.c:826
 msgid "Options"
 msgstr "পছন্দসমূহ"
 
-#: ../finch/gntblist.c:2977
 msgid "Send IM..."
 msgstr "তাৎক্ষনিক বার্তা প্রেরণ..."
 
-#: ../finch/gntblist.c:2982
 msgid "Block/Unblock..."
 msgstr "ব্লক করুন/ব্লক সরান..."
 
-#: ../finch/gntblist.c:2987 ../pidgin/gtkdocklet.c:711
 msgid "Join Chat..."
 msgstr "আড্ডায় যোগ দিন..."
 
-#: ../finch/gntblist.c:2992 ../finch/gntconv.c:657
 msgid "View Log..."
 msgstr "লগ প্রদর্শন..."
 
-#: ../finch/gntblist.c:2997
 msgid "View All Logs"
 msgstr "সব লগ প্রদর্শন করুন"
 
 # tithi
-#: ../finch/gntblist.c:3002
 msgid "Show"
 msgstr "প্রদর্শন করুন"
 
-#: ../finch/gntblist.c:3007
 msgid "Empty groups"
 msgstr "ফাঁকা গ্রুপগুলো"
 
-#: ../finch/gntblist.c:3014
 msgid "Offline buddies"
 msgstr "অফলাইন বন্ধুরা"
 
-#: ../finch/gntblist.c:3021
 msgid "Sort"
 msgstr "সাজান"
 
-#: ../finch/gntblist.c:3026
 msgid "By Status"
 msgstr "অবস্থা অনুসারে"
 
-#: ../finch/gntblist.c:3031 ../pidgin/gtkblist.c:4449
 msgid "Alphabetically"
 msgstr "বর্ণানুক্রমিকভাবে"
 
-#: ../finch/gntblist.c:3036
 msgid "By Log Size"
 msgstr "লগের আকার অনুসারে"
 
-#: ../finch/gntblist.c:3047
 msgid "Buddy"
 msgstr "বন্ধু"
 
-#: ../finch/gntblist.c:3052 ../libpurple/protocols/oscar/oscar.c:662
-#: ../libpurple/protocols/silc/silc.c:1003
-#: ../libpurple/protocols/silc/util.c:559
-#: ../libpurple/protocols/silc10/silc.c:704
-#: ../libpurple/protocols/silc10/util.c:553
 msgid "Chat"
 msgstr "আড্ডা"
 
-#: ../finch/gntblist.c:3062 ../finch/plugins/grouping.c:365
 msgid "Grouping"
 msgstr "দলগতকরণ"
 
-#: ../finch/gntcertmgr.c:85 ../pidgin/gtkcertmgr.c:188
 msgid "Certificate Import"
 msgstr "প্রত্যয়নপত্র আমদানি করুন"
 
 # তিথি
-#: ../finch/gntcertmgr.c:86 ../pidgin/gtkcertmgr.c:189
 msgid "Specify a hostname"
 msgstr "হোস্টনাম উল্লেখ করুন।"
 
 # tithi
-#: ../finch/gntcertmgr.c:87 ../pidgin/gtkcertmgr.c:190
 msgid "Type the host name this certificate is for."
 msgstr "এই প্রত্যয়ণপত্রের হোস্ট নাম টাইপ করুন।"
 
 # tithi
-#: ../finch/gntcertmgr.c:96 ../pidgin/gtkcertmgr.c:210
 #, c-format
 msgid ""
 "File %s could not be imported.\n"
@@ -873,21 +476,17 @@
 "নিশ্চিত করুন যে ফাইলটি পঠনযোগ্য এবং PEM বিন্যাসের।\n"
 
 # tithi
-#: ../finch/gntcertmgr.c:98 ../pidgin/gtkcertmgr.c:212
 msgid "Certificate Import Error"
 msgstr "প্রত্যয়ণপত্র আমদানি করার ত্রুটি"
 
 # tithi
-#: ../finch/gntcertmgr.c:99 ../pidgin/gtkcertmgr.c:213
 msgid "X.509 certificate import failed"
 msgstr "X.৫০৯ প্রত্যয়ণপত্র আমদানি করতে ব্যর্থ"
 
-#: ../finch/gntcertmgr.c:109 ../pidgin/gtkcertmgr.c:224
 msgid "Select a PEM certificate"
 msgstr "একটি PEM প্রত্যয়ণপত্র নির্বাচন করুন"
 
 # tithi
-#: ../finch/gntcertmgr.c:126 ../pidgin/gtkcertmgr.c:245
 #, c-format
 msgid ""
 "Export to file %s failed.\n"
@@ -897,27 +496,22 @@
 "পরীক্ষা করুন যে আপনার উদ্দিষ্ট পথে লিখন অনুমতি আছে\n"
 
 # tithi
-#: ../finch/gntcertmgr.c:128 ../pidgin/gtkcertmgr.c:247
 msgid "Certificate Export Error"
 msgstr "প্রত্যয়ণপত্র রপ্তানি করার ত্রুটি"
 
 # tithi
-#: ../finch/gntcertmgr.c:129 ../pidgin/gtkcertmgr.c:248
 msgid "X.509 certificate export failed"
 msgstr "X.৫০৯ প্রত্যয়ণপত্র রপ্তানি করতে ব্যর্থ"
 
 # tithi
-#: ../finch/gntcertmgr.c:158 ../pidgin/gtkcertmgr.c:298
 msgid "PEM X.509 Certificate Export"
 msgstr "PEM X.৫০৯ প্রত্যয়ণপত্র রপ্তানি করুন"
 
-#: ../finch/gntcertmgr.c:187
 #, c-format
 msgid "Certificate for %s"
 msgstr "%s-এর প্রত্যয়ণপত্র"
 
 # tithi
-#: ../finch/gntcertmgr.c:194
 #, c-format
 msgid ""
 "Common name: %s\n"
@@ -931,60 +525,41 @@
 "%s"
 
 # tithi
-#: ../finch/gntcertmgr.c:197
 msgid "SSL Host Certificate"
 msgstr "SSL হোস্ট প্রত্যয়ণপত্র"
 
 # tithi
-#: ../finch/gntcertmgr.c:232 ../pidgin/gtkcertmgr.c:371
 #, c-format
 msgid "Really delete certificate for %s?"
 msgstr "%s এর জন্য প্রত্যায়নপত্র কি সত্যিই মুছে ফেলতে চান?"
 
 # tithi
-#: ../finch/gntcertmgr.c:235 ../pidgin/gtkcertmgr.c:373
 msgid "Confirm certificate delete"
 msgstr "প্রত্যায়নপত্র মুছে ফেলা নিশ্চিত করুন"
 
 # tithi
-#: ../finch/gntcertmgr.c:292 ../pidgin/gtkcertmgr.c:613
 msgid "Certificate Manager"
 msgstr "প্রত্যায়নপত্র ব্যবস্থাপক"
 
 #. Creating the user splits
-#: ../finch/gntcertmgr.c:297 ../libpurple/protocols/bonjour/bonjour.c:705
-#: ../libpurple/protocols/silc/silc.c:1242
-#: ../libpurple/protocols/silc10/silc.c:943 ../pidgin/gtkcertmgr.c:446
 msgid "Hostname"
 msgstr "হোস্ট-নাম"
 
-#: ../finch/gntcertmgr.c:314 ../finch/gntnotify.c:446 ../pidgin/gtkconv.c:1721
-#: ../pidgin/gtkdebug.c:832
 msgid "Info"
 msgstr "তথ্য"
 
 #. Close button
-#: ../finch/gntcertmgr.c:323 ../finch/gntft.c:255 ../finch/gntnotify.c:194
-#: ../finch/gntplugin.c:220 ../finch/gntplugin.c:413 ../finch/gntpounce.c:750
-#: ../finch/gntroomlist.c:276 ../finch/gntstatus.c:216
-#: ../libpurple/protocols/msn/msn.c:475 ../libpurple/protocols/msnp9/msn.c:419
-#: ../libpurple/protocols/silc/util.c:385
-#: ../libpurple/protocols/silc10/util.c:377 ../pidgin/gtkaccount.c:2390
-#: ../pidgin/gtkrequest.c:275
 msgid "Close"
 msgstr "বন্ধ"
 
-#: ../finch/gntconn.c:126
 #, c-format
 msgid "%s (%s)"
 msgstr "%1s (%2s)"
 
-#: ../finch/gntconn.c:129
 #, c-format
 msgid "%s disconnected."
 msgstr "%s বিচ্ছিন্ন।"
 
-#: ../finch/gntconn.c:130
 #, c-format
 msgid ""
 "%s\n"
@@ -997,12 +572,10 @@
 "যতক্ষন পর্যন্ত না আপনি অ্যাকাউন্টটি ত্রুটিমুক্ত এবং পুনরায় সক্রিয় না করছেন ততক্ষন পর্যন্ত "
 "ফিঞ্চ পুনঃ সংযোগ করার চেষ্টা করবে না।"
 
-#: ../finch/gntconn.c:139
 msgid "Re-enable Account"
 msgstr "একাউন্ট পুনঃ সক্রিয় করুন"
 
 # tithi
-#: ../finch/gntconn.c:156
 msgid ""
 "The account has disconnected and you are no longer in this chat. You will be "
 "automatically rejoined in the chat when the account reconnects."
@@ -1010,45 +583,35 @@
 "এই একাউন্টটি বিচ্ছিন্ন হয়েছে এবং আপনি আর আড্ডায় নেই। একাউন্টটি পুনরায় সংযোজিত হলে "
 "আপনি স্বয়ংক্রিয় ভাবে পুনরায় আড্ডায় যুক্ত হবেন।"
 
-#: ../finch/gntconv.c:160
 msgid "No such command."
 msgstr "এমন কোনো নির্দেশ নেই।"
 
-#: ../finch/gntconv.c:164 ../pidgin/gtkconv.c:496
 msgid "Syntax Error:  You typed the wrong number of arguments to that command."
 msgstr "বাক্যরীতি ত্রুটি:  আপনি ঐ নির্দেশে ভূল সংখ্যক যুক্তি টাইপ করেছেন।"
 
-#: ../finch/gntconv.c:169 ../pidgin/gtkconv.c:502
 msgid "Your command failed for an unknown reason."
 msgstr "একটি অজানা কারণে আপনার নির্দেশ ব্যর্থ হয়েছে।"
 
-#: ../finch/gntconv.c:174 ../pidgin/gtkconv.c:509
 msgid "That command only works in chats, not IMs."
 msgstr "ঐ নির্দেশ শুধুমাত্র আড্ডাতেই প্রযোজ্য, তাৎক্ষণিক বার্তায় নয়।"
 
-#: ../finch/gntconv.c:177 ../pidgin/gtkconv.c:512
 msgid "That command only works in IMs, not chats."
 msgstr "ঐ নির্দেশটি শুধুমাত্র তাৎক্ষণিক বার্তাতেই প্রযোজ্য, আড্ডার ক্ষেত্রে নয়।"
 
-#: ../finch/gntconv.c:181 ../pidgin/gtkconv.c:517
 msgid "That command doesn't work on this protocol."
 msgstr "ঐ নির্দেশটি এই প্রোটোকলে কাজ করে না।"
 
-#: ../finch/gntconv.c:189
 msgid "Message was not sent, because you are not signed on."
 msgstr "বার্তা পাঠানো হয়নি, কারণ আপনি স্বাক্ষরিত নন।"
 
-#: ../finch/gntconv.c:269
 #, c-format
 msgid "%s (%s -- %s)"
 msgstr "%1s (%2s -- %3s)"
 
-#: ../finch/gntconv.c:292
 #, c-format
 msgid "%s [%s]"
 msgstr "%1s [%2s]"
 
-#: ../finch/gntconv.c:297 ../finch/gntconv.c:974 ../pidgin/gtkconv.c:3647
 #, c-format
 msgid ""
 "\n"
@@ -1057,33 +620,25 @@
 "\n"
 "%s টাইপ করছে..."
 
-#: ../finch/gntconv.c:316
 msgid "You have left this chat."
 msgstr "আপনি এই  আড্ডা ত্যাগ করেছেন।"
 
-#: ../finch/gntconv.c:434 ../pidgin/gtkconv.c:1407
 msgid "Logging started. Future messages in this conversation will be logged."
 msgstr "লগ করা শুরু হয়েছে। এই কথোপকথনের ভবিষৎ বার্তাসমূহ লগ করা হবে।"
 
-#: ../finch/gntconv.c:438 ../pidgin/gtkconv.c:1415
 msgid ""
 "Logging stopped. Future messages in this conversation will not be logged."
 msgstr "লগ করা বন্ধ করা হয়েছে। এই কথোপকথনের ভবিষৎ বার্তাসমূহ লগ করা হবে।"
 
-#: ../finch/gntconv.c:524
 msgid "Send To"
 msgstr "এখানে প্রেরণ করুন"
 
-#: ../finch/gntconv.c:588
 msgid "Invite message"
 msgstr "আমন্ত্রণ বার্তা"
 
-#: ../finch/gntconv.c:590 ../finch/gntnotify.c:455
-#: ../libpurple/protocols/sametime/sametime.c:3530
 msgid "Invite"
 msgstr "আমন্ত্রণ"
 
-#: ../finch/gntconv.c:592
 msgid ""
 "Please enter the name of the user you wish to invite,\n"
 "along with an optional invite message."
@@ -1091,54 +646,42 @@
 "একটি ঐচ্ছিক আমন্ত্রণ বার্তার সাথে,\n"
 "অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ করতে চান তার নামটি প্রবেশ করান।"
 
-#: ../finch/gntconv.c:610
 msgid "Conversation"
 msgstr "কথোপকথন"
 
-#: ../finch/gntconv.c:616
 msgid "Clear Scrollback"
 msgstr "স্ক্রলবেক পরিস্কার করুন"
 
-#: ../finch/gntconv.c:620 ../finch/gntprefs.c:191
 msgid "Show Timestamps"
 msgstr "সময়ছাপ প্রদর্শন করুন"
 
-#: ../finch/gntconv.c:638
 msgid "Add Buddy Pounce..."
 msgstr "বন্ধু পাউন্স যুক্ত করুন..."
 
-#: ../finch/gntconv.c:652
 msgid "Invite..."
 msgstr "আমন্ত্রণ..."
 
-#: ../finch/gntconv.c:661
 msgid "Enable Logging"
 msgstr "লগকরণ সক্রিয় করুন"
 
-#: ../finch/gntconv.c:667
 msgid "Enable Sounds"
 msgstr "শব্দ সক্রিয় করুন"
 
-#: ../finch/gntconv.c:927
 msgid "<AUTO-REPLY> "
 msgstr "<AUTO-REPLY>"
 
-#: ../finch/gntconv.c:1067
 #, c-format
 msgid "List of %d user:\n"
 msgid_plural "List of %d users:\n"
 msgstr[0] "%d ব্যবহারকারীর তালিকা:...\n"
 msgstr[1] "%d ব্যবহারকারীগণের তালিকা:\n"
 
-#: ../finch/gntconv.c:1227 ../pidgin/gtkconv.c:341
 msgid "Supported debug options are:  version"
 msgstr "সমর্থিত ডিবাগ পছন্দসমূহ হল: সংস্করণ"
 
-#: ../finch/gntconv.c:1263 ../pidgin/gtkconv.c:393
 msgid "No such command (in this context)."
 msgstr "এমন কোনো নির্দেশ নেই (এই প্রসঙ্গে)।"
 
-#: ../finch/gntconv.c:1266 ../pidgin/gtkconv.c:396
 msgid ""
 "Use \"/help &lt;command&gt;\" for help on a specific command.\n"
 "The following commands are available in this context:\n"
@@ -1148,7 +691,6 @@
 "এই ক্ষেত্রে নিম্নোক্ত নির্দেশসমূহ সহজলভ্য:\n"
 
 # tithi
-#: ../finch/gntconv.c:1311
 #, c-format
 msgid ""
 "%s is not a valid message class. See '/help msgcolor' for valid message "
@@ -1156,12 +698,10 @@
 msgstr "%s বার্তার বৈধ শ্রেণী নয়। বার্তাসমূহের বৈধ শ্রেণীর '/সহায়ক বার্তা-রং' দেখুন।"
 
 # tithi
-#: ../finch/gntconv.c:1318 ../finch/gntconv.c:1325
 #, c-format
 msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
 msgstr "%s বৈধ রং নয়। বৈধ রং এর জন্য '/সহায়ক বার্তা-রং' দেখুন।"
 
-#: ../finch/gntconv.c:1382 ../pidgin/gtkconv.c:7877
 msgid ""
 "say &lt;message&gt;:  Send a message normally as if you weren't using a "
 "command."
@@ -1169,55 +709,43 @@
 "বলুন &lt;বার্তা&gt;:  একটি বার্তা সাধারণত এমন ভাবে পাঠান যেন আপনি নির্দেশ ব্যবহার "
 "করেন নি।"
 
-#: ../finch/gntconv.c:1385 ../pidgin/gtkconv.c:7880
 msgid "me &lt;action&gt;:  Send an IRC style action to a buddy or chat."
 msgstr "আমি &lt;কার্য&gt;: কোনো বন্ধুকে বা আড্ডায় আইআরসি শৈলীর কার্য পাঠান।"
 
-#: ../finch/gntconv.c:1388 ../pidgin/gtkconv.c:7883
 msgid ""
 "debug &lt;option&gt;:  Send various debug information to the current "
 "conversation."
 msgstr "ডিবাগ &lt;পছন্দ&gt;:  বর্তমান কথোপকথনে বিভিন্ন ডিবাগ তথ্য পাঠান।"
 
-#: ../finch/gntconv.c:1391 ../pidgin/gtkconv.c:7886
 msgid "clear: Clears the conversation scrollback."
 msgstr "পরিস্কার: কথোপকথনের স্ক্রলবেক পরিস্কার করে।"
 
-#: ../finch/gntconv.c:1394 ../pidgin/gtkconv.c:7892
 msgid "help &lt;command&gt;:  Help on a specific command."
 msgstr "সহায়তা &lt;নির্দেশ&gt;: একটি সুনির্দিষ্ট নির্দেশের সহায়িকা।"
 
 # tithi
-#: ../finch/gntconv.c:1397
 msgid "users:  Show the list of users in the chat."
 msgstr "ব্যবহারকারীগণ: আড্ডায় ব্যবহারকারীদের তালিকা দেখান।"
 
-#: ../finch/gntconv.c:1402
 msgid "plugins: Show the plugins window."
 msgstr "প্লাগইন: প্লাগইনের উইন্ডো দেখান।"
 
-#: ../finch/gntconv.c:1405
 msgid "buddylist: Show the buddylist."
 msgstr "বন্ধু-তালিকা: বন্ধু-তালিকা দেখান।"
 
-#: ../finch/gntconv.c:1408
 msgid "accounts: Show the accounts window."
 msgstr "অ্যাকাউন্ট: অ্যাকাউন্টের উইন্ডো দেখান।"
 
-#: ../finch/gntconv.c:1411
 msgid "debugwin: Show the debug window."
 msgstr "ত্রুটিমুক্তকরণ উইন্ডো: ডিবাগ উইন্ডো দেখান।"
 
-#: ../finch/gntconv.c:1414
 msgid "prefs: Show the preference window."
 msgstr "পছন্দ: পছন্দের উইন্ডো দেখান।"
 
-#: ../finch/gntconv.c:1417
 msgid "statuses: Show the savedstatuses window."
 msgstr "অবস্থাসমূহ: সংরক্ষিত-অবস্থাসমূহের উইন্ডো দেখান।"
 
 # fix me tithi
-#: ../finch/gntconv.c:1423
 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;"
@@ -1231,12 +759,9 @@
 "প্রেক্ষাপট&10gt;: কালো, লাল, সবুজ, নীল, সাদা, ধূসর, গাঢ় ধূসর, ম্যাজেন্ডা, সায়ান, "
 "পূর্বনির্ধারিত<br><br>উদাহরণ:<br>    বার্তা-রং পূর্বনির্ধারিতভাবে সায়ান প্রেরণ করে"
 
-#: ../finch/gntdebug.c:269 ../pidgin/gtkconv.c:969 ../pidgin/gtkdebug.c:219
-#: ../pidgin/gtkft.c:545
 msgid "Unable to open file."
 msgstr "ফাইল খুলতে সমর্থ নয়।"
 
-#: ../finch/gntdebug.c:309 ../finch/gntui.c:98 ../pidgin/gtkdebug.c:689
 msgid "Debug Window"
 msgstr "ডিবাগ উইন্ডো"
 
@@ -1244,20 +769,16 @@
 #. * it's necessary to make the width of the debug window resizable ... like I said,
 #. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
 #.
-#: ../finch/gntdebug.c:330 ../pidgin/gtkdebug.c:751
 msgid "Clear"
 msgstr "মুছে ফেলো"
 
-#: ../finch/gntdebug.c:341
 msgid "Filter:"
 msgstr "পরিশ্রুতক:"
 
-#: ../finch/gntdebug.c:347 ../pidgin/gtkdebug.c:760
 msgid "Pause"
 msgstr "বিরতি"
 
 # fix me tithi
-#: ../finch/gntft.c:120 ../pidgin/gtkft.c:229
 #, c-format
 msgid "File Transfers - %d%% of %d file"
 msgid_plural "File Transfers - %d%% of %d files"
@@ -1265,123 +786,80 @@
 msgstr[1] "ফাইল স্থানান্তর করে - %d ফাইলসমূহের %d%%"
 
 #. Create the window.
-#: ../finch/gntft.c:127 ../finch/gntft.c:214 ../finch/gntui.c:99
-#: ../pidgin/gtkft.c:236 ../pidgin/gtkft.c:763
 msgid "File Transfers"
 msgstr "ফাইল স্থানান্তর করে"
 
-#: ../finch/gntft.c:219 ../pidgin/gtkft.c:647
 msgid "Progress"
 msgstr "অগ্রগতি"
 
-#: ../finch/gntft.c:219 ../pidgin/gtkft.c:654
 msgid "Filename"
 msgstr "ফাইল-নাম"
 
-#: ../finch/gntft.c:219 ../pidgin/gtkft.c:661
 msgid "Size"
 msgstr "আকার"
 
-#: ../finch/gntft.c:219
 msgid "Speed"
 msgstr "গতি"
 
-#: ../finch/gntft.c:219 ../pidgin/gtkft.c:668
 msgid "Remaining"
 msgstr "অবশিষ্ট"
 
 #. XXX: Use of ggp_str_to_uin() is an ugly hack!
-#: ../finch/gntft.c:219 ../finch/gntstatus.c:547 ../finch/gntstatus.c:576
-#: ../libpurple/protocols/bonjour/bonjour.c:369
-#: ../libpurple/protocols/gg/gg.c:954 ../libpurple/protocols/gg/gg.c:1642
-#: ../libpurple/protocols/gg/gg.c:1650
-#: ../libpurple/protocols/jabber/buddy.c:822
-#: ../libpurple/protocols/jabber/buddy.c:826
-#: ../libpurple/protocols/jabber/buddy.c:991
-#: ../libpurple/protocols/jabber/jabber.c:1764
-#: ../libpurple/protocols/msn/msn.c:752 ../libpurple/protocols/msn/msn.c:762
-#: ../libpurple/protocols/msn/msn.c:767 ../libpurple/protocols/msn/msn.c:770
-#: ../libpurple/protocols/msnp9/msn.c:559
-#: ../libpurple/protocols/novell/novell.c:2853
-#: ../libpurple/protocols/oscar/oscar.c:921
-#: ../libpurple/protocols/oscar/oscar.c:2959
-#: ../libpurple/protocols/sametime/sametime.c:3320
-#: ../libpurple/protocols/sametime/sametime.c:4212
-#: ../libpurple/protocols/yahoo/yahoo.c:3326 ../pidgin/gtkblist.c:3528
-#: ../pidgin/gtkblist.c:3542 ../pidgin/gtkblist.c:3544
-#: ../pidgin/gtksavedstatuses.c:1032 ../pidgin/gtksavedstatuses.c:1183
 msgid "Status"
 msgstr "অবস্থা"
 
-#: ../finch/gntft.c:229
 msgid "Close this window when all transfers finish"
 msgstr "সব স্থানান্তর শেষ হলে এই উইন্ডোটি বন্ধ করুন"
 
-#: ../finch/gntft.c:236
 msgid "Clear finished transfers"
 msgstr "সমাপ্তকৃত স্থানান্তরসমূহ পরিস্কার করুন"
 
-#: ../finch/gntft.c:250 ../finch/gntroomlist.c:273
 msgid "Stop"
 msgstr "থামুন"
 
-#: ../finch/gntft.c:323 ../pidgin/gtkft.c:169 ../pidgin/gtkft.c:936
 msgid "Waiting for transfer to begin"
 msgstr "স্থানান্তর শুরু করার জন্য অপেক্ষা করছে"
 
-#: ../finch/gntft.c:390 ../pidgin/gtkft.c:163 ../pidgin/gtkft.c:1017
 msgid "Canceled"
 msgstr "বাতিল করা হয়েছে"
 
-#: ../finch/gntft.c:392 ../pidgin/gtkft.c:1019
 msgid "Failed"
 msgstr "ব্যর্থ হয়েছে"
 
-#: ../finch/gntft.c:438 ../pidgin/gtkft.c:134
 #, c-format
 msgid "%.2f KiB/s"
 msgstr "%.2f কিলোবাইট/সেকেন্ডে"
 
-#: ../finch/gntft.c:449
 msgid "Sent"
 msgstr "প্রেরিত"
 
-#: ../finch/gntft.c:449
 msgid "Received"
 msgstr "গৃহীত"
 
-#: ../finch/gntft.c:450 ../pidgin/gtkft.c:160 ../pidgin/gtkft.c:1082
 msgid "Finished"
 msgstr "শেষ"
 
-#: ../finch/gntft.c:452
 #, c-format
 msgid "The file was saved as %s."
 msgstr "ফাইলটি %s হিসেবে সংরক্ষণ করা হয়েছিল।"
 
-#: ../finch/gntft.c:459
 msgid "Sending"
 msgstr "পাঠাচ্ছে"
 
-#: ../finch/gntft.c:459
 msgid "Receiving"
 msgstr "গ্রহণ করছে"
 
-#: ../finch/gntlog.c:192
 #, c-format
 msgid "Conversation in %s on %s"
 msgstr "%1s এ %2s এর উপর কথোপকথন"
 
-#: ../finch/gntlog.c:195
 #, c-format
 msgid "Conversation with %s on %s"
 msgstr "%2s এর উপর %1s-এর সঙ্গে কথোপকথন"
 
-#: ../finch/gntlog.c:238 ../pidgin/gtklog.c:503
 msgid "%B %Y"
 msgstr "%B %Y"
 
-#: ../finch/gntlog.c:278 ../pidgin/gtklog.c:550
 msgid ""
 "System events will only be logged if the \"Log all status changes to system "
 "log\" preference is enabled."
@@ -1389,7 +867,6 @@
 "\"সকল অবস্থার পরিবর্তনসমূহ সিস্টেমের লগে লগ করুন\" প্রাধিকার যদি সক্রিয় থাকে তবে "
 "শুধুমাত্র সিস্টেমের ইভেন্টগুলো লগ করা হবে।"
 
-#: ../finch/gntlog.c:282 ../pidgin/gtklog.c:554
 msgid ""
 "Instant messages will only be logged if the \"Log all instant messages\" "
 "preference is enabled."
@@ -1397,114 +874,88 @@
 "\"সব তাৎক্ষণিক বার্তা লগ করুন\" প্রাধিকার যদি সক্রিয় থাকে তবে শুধুমাত্র তাৎক্ষণিক "
 "বার্তাগুলো লগ করা হবে।"
 
-#: ../finch/gntlog.c:285 ../pidgin/gtklog.c:557
 msgid ""
 "Chats will only be logged if the \"Log all chats\" preference is enabled."
 msgstr ""
 "\"সব আড্ডা লগ করুন\" প্রাধিকার যদি সক্রিয় থাকে তবে শুধুমাত্র আড্ডাগুলো লগ করা হবে।"
 
-#: ../finch/gntlog.c:291 ../pidgin/gtklog.c:566
 msgid "No logs were found"
 msgstr "কোনো লগ খুঁজে পাওয়া যায়নি।"
 
-#: ../finch/gntlog.c:338 ../pidgin/gtklog.c:646
 msgid "Total log size:"
 msgstr "মোট লগ আকার:"
 
 # fix me tithi
 #. Search box *********
-#: ../finch/gntlog.c:346
 msgid "Scroll/Search: "
 msgstr "স্ক্রল করুন/খুঁজুন:"
 
-#: ../finch/gntlog.c:404 ../pidgin/gtklog.c:716
 #, c-format
 msgid "Conversations in %s"
 msgstr "%s-এ কথোপকথন"
 
-#: ../finch/gntlog.c:412 ../finch/gntlog.c:485 ../pidgin/gtklog.c:724
-#: ../pidgin/gtklog.c:799
 #, c-format
 msgid "Conversations with %s"
 msgstr "%s-এর সঙ্গে কথোপকথন"
 
-#: ../finch/gntlog.c:414
 msgid "All Conversations"
 msgstr "সকল কথোপকথন"
 
-#: ../finch/gntlog.c:510 ../pidgin/gtklog.c:824
 msgid "System Log"
 msgstr "সিস্টেম লগ"
 
-#: ../finch/gntnotify.c:177
 msgid "Emails"
 msgstr "ই-মেইলসমূহ"
 
-#: ../finch/gntnotify.c:183 ../finch/gntnotify.c:243
 msgid "You have mail!"
 msgstr "আপনার মেইল আছে!"
 
-#: ../finch/gntnotify.c:186 ../pidgin/gtknotify.c:539
 msgid "Sender"
 msgstr "প্রেরক"
 
-#: ../finch/gntnotify.c:186 ../pidgin/gtknotify.c:546
 msgid "Subject"
 msgstr "বিষয়"
 
-#: ../finch/gntnotify.c:214
 #, c-format
 msgid "%s (%s) has %d new message."
 msgid_plural "%s (%s) has %d new messages."
 msgstr[0] "%1s (%2s) এর  %3dটি নতুন বার্তা আছে।"
 msgstr[1] "%1s (%2s)-এর  %3dগুলো নতুন বার্তা আছে।"
 
-#: ../finch/gntnotify.c:243 ../pidgin/gtknotify.c:354
 msgid "New Mail"
 msgstr "নতুন মেইল"
 
-#: ../finch/gntnotify.c:349 ../pidgin/gtknotify.c:983
 #, c-format
 msgid "Info for %s"
 msgstr "%s এর জন্য তথ্য"
 
-#: ../finch/gntnotify.c:350 ../libpurple/protocols/toc/toc.c:476
-#: ../pidgin/gtknotify.c:984
 msgid "Buddy Information"
 msgstr "বন্ধুর তথ্য"
 
-#: ../finch/gntnotify.c:440 ../libpurple/protocols/qq/group_join.c:338
 msgid "Continue"
 msgstr "অব্যাহত"
 
-#: ../finch/gntnotify.c:449 ../pidgin/gtkconv.c:1671
 msgid "IM"
 msgstr "তাৎক্ষণিক বার্তা"
 
-#: ../finch/gntnotify.c:458
 msgid "(none)"
 msgstr "(কোনটি না)"
 
-#: ../finch/gntnotify.c:484
 msgid "URI"
 msgstr "URI"
 
 # tithi
-#: ../finch/gntplugin.c:84 ../finch/gntplugin.c:93
 msgid "ERROR"
 msgstr "ত্রুটি"
 
-#: ../finch/gntplugin.c:84
 msgid "loading plugin failed"
 msgstr "প্লাগইন লোড করতে ব্যর্থ"
 
 # tithi
-#: ../finch/gntplugin.c:93
 msgid "unloading plugin failed"
 msgstr "প্লাগইন লোডহীন করতে ব্যর্থ।"
 
 # tithi
-#: ../finch/gntplugin.c:139
 #, c-format
 msgid ""
 "Name: %s\n"
@@ -1522,46 +973,37 @@
 "ফাইলের নাম: %6s\n"
 
 # tithi
-#: ../finch/gntplugin.c:197
 msgid "Plugin need to be loaded before you can configure it."
 msgstr "প্লাগইন বিন্যাস করার পূর্বে আপনার এটা  লোড করা প্রয়োজন।"
 
 # tithi
-#: ../finch/gntplugin.c:245
 msgid "No configuration options for this plugin."
 msgstr "এই প্লাগইনের জন্য কোনো বিন্যাসন পছন্দ নেই।"
 
-#: ../finch/gntplugin.c:266
 msgid "Error loading plugin"
 msgstr "প্লাগইনটি লোডে ত্রুটি"
 
 # tithi
-#: ../finch/gntplugin.c:267
 msgid "The selected file is not a valid plugin."
 msgstr "নির্বাচিত ফাইলটি বৈধ প্লাগইন নয়।"
 
 # tithi
-#: ../finch/gntplugin.c:268
 msgid ""
 "Please open the debug window and try again to see the exact error message."
 msgstr ""
 "অনুগ্রহপূর্বক ত্রুটিমুক্তকরণ উইন্ডো খুলুন এবং সঠিক ত্রুটি বার্তাটি দেখতে পুনরায় চেষ্টা করুন।"
 
-#: ../finch/gntplugin.c:331
 msgid "Select plugin to install"
 msgstr "সংস্থাপনে জন্য প্লাগইন নির্বাচন করুন"
 
 # tithi
-#: ../finch/gntplugin.c:357
 msgid "You can (un)load plugins from the following list."
 msgstr "আপনি নিম্নোক্ত তালিকা হতে প্লাগইনগুলোকে লোড(মুক্ত) করতে পারেন।"
 
 # tithi
-#: ../finch/gntplugin.c:408
 msgid "Install Plugin..."
 msgstr "প্লাগইন সংস্থাপন করুন..."
 
-#: ../finch/gntplugin.c:418
 msgid "Configure Plugin"
 msgstr "প্লাগইন পছন্দসই বিন্যাস করুন"
 
@@ -1570,397 +1012,296 @@
 #. (that should have been "effect," right?)
 #. Back to instant-apply! I win!  BU-HAHAHA!
 #. Create the window
-#: ../finch/gntplugin.c:524 ../finch/gntplugin.c:531 ../finch/gntprefs.c:264
-#: ../finch/gntui.c:103 ../pidgin/gtkprefs.c:2200
 msgid "Preferences"
 msgstr "প্রাধিকারসমূহ"
 
-#: ../finch/gntpounce.c:193 ../pidgin/gtkpounce.c:270
 msgid "Please enter a buddy to pounce."
 msgstr "অনুগ্রহ করে পাউন্স করার জন্য একজন বন্ধু প্রবেশ করান।"
 
-#: ../finch/gntpounce.c:338 ../pidgin/gtkpounce.c:538
 msgid "New Buddy Pounce"
 msgstr "নতুন বন্ধু পাউন্স করুন"
 
-#: ../finch/gntpounce.c:338 ../pidgin/gtkpounce.c:538
 msgid "Edit Buddy Pounce"
 msgstr "বন্ধু পাউন্স সম্পাদন করুন"
 
-#: ../finch/gntpounce.c:343
 msgid "Pounce Who"
 msgstr "কাকে পাউন্স"
 
 #. Account:
-#: ../finch/gntpounce.c:346 ../finch/gntstatus.c:456
 msgid "Account:"
 msgstr "একাউন্ট:"
 
-#: ../finch/gntpounce.c:368
 msgid "Buddy name:"
 msgstr "বন্ধুর নাম:"
 
 #. Create the "Pounce When Buddy..." frame.
-#: ../finch/gntpounce.c:386 ../pidgin/gtkpounce.c:606
 msgid "Pounce When Buddy..."
 msgstr "পাউন্স করুন যখন বন্ধু..."
 
-#: ../finch/gntpounce.c:388
 msgid "Signs on"
 msgstr "সাইন অন"
 
-#: ../finch/gntpounce.c:389
 msgid "Signs off"
 msgstr "সাইন অফ"
 
-#: ../finch/gntpounce.c:390
 msgid "Goes away"
 msgstr "অনুপস্থিত"
 
-#: ../finch/gntpounce.c:391
 msgid "Returns from away"
 msgstr "দূর হতে ফিরে আসে"
 
-#: ../finch/gntpounce.c:392
 msgid "Becomes idle"
 msgstr "অলস হয়ে যায়"
 
-#: ../finch/gntpounce.c:393
 msgid "Is no longer idle"
 msgstr "আর অলস থাকবে না"
 
-#: ../finch/gntpounce.c:394
 msgid "Starts typing"
 msgstr "টাইপ শুরু করছে"
 
-#: ../finch/gntpounce.c:395
 msgid "Pauses while typing"
 msgstr "টাইপ করার সময় বিরতি দিন"
 
-#: ../finch/gntpounce.c:396
 msgid "Stops typing"
 msgstr "টাইপ বন্ধ করে"
 
-#: ../finch/gntpounce.c:397
 msgid "Sends a message"
 msgstr "বার্তা পাঠায়"
 
 #. Create the "Action" frame.
-#: ../finch/gntpounce.c:426 ../pidgin/gtkpounce.c:667
 msgid "Action"
 msgstr "কার্য"
 
-#: ../finch/gntpounce.c:428
 msgid "Open an IM window"
 msgstr "তাৎক্ষনিক বার্তার উইন্ডো খুলুন"
 
-#: ../finch/gntpounce.c:429
 msgid "Pop up a notification"
 msgstr "একটি ঘোষণা পপআপ করুন"
 
-#: ../finch/gntpounce.c:430
 msgid "Send a message"
 msgstr "একটি বার্তা পাঠান"
 
-#: ../finch/gntpounce.c:431
 msgid "Execute a command"
 msgstr "একটি নির্দেশ কার্যকর করুন"
 
-#: ../finch/gntpounce.c:432
 msgid "Play a sound"
 msgstr "শব্দ বাজান"
 
-#: ../finch/gntpounce.c:460
 msgid "Pounce only when my status is not Available"
 msgstr "আমার অবস্থা সহজলভ্য না থাকলে শুধুমাত্র পাউন্স করুন"
 
 # tithi
-#: ../finch/gntpounce.c:462 ../pidgin/gtkpounce.c:1319
 msgid "Recurring"
 msgstr "পুনরাবৃত্তি"
 
-#: ../finch/gntpounce.c:630
 msgid "Cannot create pounce"
 msgstr "পাউন্স তৈরী করতে পারে না"
 
-#: ../finch/gntpounce.c:631
 msgid "You do not have any accounts."
 msgstr "আপনার কোনো একাউন্ট নেই।"
 
 # tithi
-#: ../finch/gntpounce.c:632
 msgid "You must create an account first before you can create a pounce."
 msgstr "আপনি একটি পাউন্স তৈরি করার পূর্বে আপনাকে অবশ্যই একটি একাউন্ট তৈরি করতে হবে।"
 
-#: ../finch/gntpounce.c:674 ../pidgin/gtkpounce.c:1134
 #, c-format
 msgid "Are you sure you want to delete the pounce on %s for %s?"
 msgstr "আপনি কি নিশ্চিত আপনি %2s এর জন্য %1s এর পাউন্স মুছে ফেলতে চান?"
 
-#: ../finch/gntpounce.c:708 ../finch/gntui.c:96 ../pidgin/gtkpounce.c:1362
 msgid "Buddy Pounces"
 msgstr "বন্ধু পাউন্স করে"
 
-#: ../finch/gntpounce.c:817 ../pidgin/gtkpounce.c:1461
 #, c-format
 msgid "%s has started typing to you (%s)"
 msgstr "%1s আপনার কাছে টাইপ করা শুরু করেছে (%2s)"
 
-#: ../finch/gntpounce.c:818 ../pidgin/gtkpounce.c:1463
 #, c-format
 msgid "%s has paused while typing to you (%s)"
 msgstr "%1s আপনার কাছে টাইপ করার সময় বিরতি নিয়েছে (%2s)"
 
-#: ../finch/gntpounce.c:819 ../pidgin/gtkpounce.c:1465
 #, c-format
 msgid "%s has signed on (%s)"
 msgstr "%1s সাইন অন করেছে (%2s)"
 
-#: ../finch/gntpounce.c:820 ../pidgin/gtkpounce.c:1467
 #, c-format
 msgid "%s has returned from being idle (%s)"
 msgstr "%1s অলস অবস্থা থেকে ফিরে এসেছে (%2s)"
 
-#: ../finch/gntpounce.c:821 ../pidgin/gtkpounce.c:1469
 #, c-format
 msgid "%s has returned from being away (%s)"
 msgstr "%1s দূর হতে ফিরে এসেছে (%2s)"
 
-#: ../finch/gntpounce.c:822 ../pidgin/gtkpounce.c:1471
 #, c-format
 msgid "%s has stopped typing to you (%s)"
 msgstr "%1s আপনার কাছে টাইপ করা বন্ধ করে দিয়েছে (%2s)"
 
-#: ../finch/gntpounce.c:823 ../pidgin/gtkpounce.c:1473
 #, c-format
 msgid "%s has signed off (%s)"
 msgstr "%1s অখলাইনে আছে (%2s)"
 
-#: ../finch/gntpounce.c:824 ../pidgin/gtkpounce.c:1475
 #, c-format
 msgid "%s has become idle (%s)"
 msgstr "%1s অলস আছে (%2s)"
 
-#: ../finch/gntpounce.c:825 ../pidgin/gtkpounce.c:1477
 #, c-format
 msgid "%s has gone away. (%s)"
 msgstr "%1s এখন অনুপস্থিত। (%2s)"
 
-#: ../finch/gntpounce.c:826 ../pidgin/gtkpounce.c:1479
 #, c-format
 msgid "%s has sent you a message. (%s)"
 msgstr "%1s আপনাকে একটি বার্তা পাঠিয়েছে। (%2s)"
 
-#: ../finch/gntpounce.c:845 ../pidgin/gtkpounce.c:1480
+#, c-format
 msgid "Unknown pounce event. Please report this!"
 msgstr "অজানা পাউন্স ইভেন্ট। অনুগ্রহ করে এটি রিপোর্ট করুন!"
 
 # tithi
-#: ../finch/gntprefs.c:92
 msgid "Based on keyboard use"
 msgstr "কী-বোর্ডের ব্যবহারের উপর নির্ভর করে"
 
-#: ../finch/gntprefs.c:94 ../pidgin/gtkprefs.c:2081
 msgid "From last sent message"
 msgstr "সর্বশেষ পাঠানো বার্তা থেকে"
 
-#: ../finch/gntprefs.c:96 ../pidgin/gtkprefs.c:945 ../pidgin/gtkprefs.c:953
-#: ../pidgin/gtkprefs.c:2080 ../pidgin/gtkprefs.c:2094
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:333
 msgid "Never"
 msgstr "কখনো নয়"
 
-#: ../finch/gntprefs.c:184
 msgid "Show Idle Time"
 msgstr "অলস সময় প্রদর্শন করুন"
 
-#: ../finch/gntprefs.c:185
 msgid "Show Offline Buddies"
 msgstr "অফলাইন বন্ধুগণদের প্রদর্শন করুন"
 
-#: ../finch/gntprefs.c:192
 msgid "Notify buddies when you are typing"
 msgstr "আপনার টাইপ করার সময় বন্ধুদের অবগত করুন"
 
-#: ../finch/gntprefs.c:198 ../finch/plugins/gnthistory.c:153
 msgid "Log format"
 msgstr "লগ বিন্যাস"
 
-#: ../finch/gntprefs.c:199 ../finch/plugins/gnthistory.c:143
 msgid "Log IMs"
 msgstr "তাৎক্ষণিক বার্তাগুলো লগ করুন"
 
-#: ../finch/gntprefs.c:200 ../finch/plugins/gnthistory.c:144
 msgid "Log chats"
 msgstr "আড্ডাসমূহ লগ করুন"
 
-#: ../finch/gntprefs.c:201
 msgid "Log status change events"
 msgstr "লগ অবস্থা ইভেন্ট পরিবর্তন করে"
 
-#: ../finch/gntprefs.c:207
 msgid "Report Idle time"
 msgstr "অলস সময় রিপোর্ট করুন"
 
-#: ../finch/gntprefs.c:208
 msgid "Change status when idle"
 msgstr "অলস থাকলে অবস্থা পরিবর্তন করুন"
 
-#: ../finch/gntprefs.c:209
 msgid "Minutes before changing status"
 msgstr "অবস্থা পরিবর্তন করার পূর্বের মিনিট"
 
-#: ../finch/gntprefs.c:210
 msgid "Change status to"
 msgstr "অবস্থা পরিবর্তন করুন"
 
-#. Conversations
-#: ../finch/gntprefs.c:259 ../pidgin/gtkprefs.c:1043 ../pidgin/gtkprefs.c:2167
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:340
 msgid "Conversations"
 msgstr "কথোপকথন"
 
-#: ../finch/gntprefs.c:260 ../finch/plugins/gnthistory.c:151
-#: ../pidgin/gtkprefs.c:1614 ../pidgin/gtkprefs.c:2178
 msgid "Logging"
 msgstr "লগ করছে"
 
-#: ../finch/gntrequest.c:381
 msgid "You must fill all the required fields."
 msgstr "আপনাকে অবশ্যই প্রয়োজনীয় ক্ষেত্রসমূহ পূরণ করতে হবে।"
 
-#: ../finch/gntrequest.c:382
 msgid "The required fields are underlined."
 msgstr "প্রয়োজনীয় ক্ষেত্রসমূহকে নিম্নরেখাঙ্কিত করা হয়েছে।"
 
 # tithi
-#: ../finch/gntrequest.c:640
 msgid "Not implemented yet."
 msgstr "এখনও বাস্তবায়িত হয়নি।"
 
-#: ../finch/gntrequest.c:745 ../pidgin/gtkrequest.c:1552
-#: ../pidgin/gtkrequest.c:1598
 msgid "Save File..."
 msgstr "ফাইল সংরক্ষণ করুন..."
 
-#: ../finch/gntrequest.c:745 ../pidgin/gtkrequest.c:1553
-#: ../pidgin/gtkrequest.c:1599
 msgid "Open File..."
 msgstr "ফাইল খুলুন..."
 
-#: ../finch/gntrequest.c:762
 msgid "Choose Location..."
 msgstr "স্থান পছন্দ করুন..."
 
 # tithi
-#: ../finch/gntroomlist.c:208
 msgid "Hit 'Enter' to find more rooms of this category."
 msgstr "এই শ্রেণীবিভাগের আরও কিছু কক্ষ খুঁজে পেতে 'Enter' চাপুন।"
 
-#: ../finch/gntroomlist.c:274
 msgid "Get"
 msgstr "গ্রহণ করুন"
 
 #. Create the window.
-#: ../finch/gntroomlist.c:286 ../finch/gntui.c:101 ../pidgin/gtkroomlist.c:523
 msgid "Room List"
 msgstr "কক্ষের তালিকা"
 
-#: ../finch/gntsound.c:96 ../pidgin/gtksound.c:62
 msgid "Buddy logs in"
 msgstr "বন্ধু লগইন করে"
 
-#: ../finch/gntsound.c:97 ../pidgin/gtksound.c:63
 msgid "Buddy logs out"
 msgstr "বন্ধু লগআউট করে"
 
-#: ../finch/gntsound.c:98 ../pidgin/gtksound.c:64
 msgid "Message received"
 msgstr "বার্তা গ্রহণ করা হয়েছে"
 
-#: ../finch/gntsound.c:99 ../pidgin/gtksound.c:65
 msgid "Message received begins conversation"
 msgstr "বার্তা গ্রহন করায় কথাবার্তা শুরু হয়েছে"
 
-#: ../finch/gntsound.c:100 ../pidgin/gtksound.c:66
 msgid "Message sent"
 msgstr "বার্তা পাঠানো হয়েছে"
 
-#: ../finch/gntsound.c:101 ../pidgin/gtksound.c:67
 msgid "Person enters chat"
 msgstr "ব্যক্তি আড্ডায় প্রবেশ করেছে"
 
-#: ../finch/gntsound.c:102 ../pidgin/gtksound.c:68
 msgid "Person leaves chat"
 msgstr "ব্যক্তি আড্ডা ত্যাগ করেছে"
 
-#: ../finch/gntsound.c:103 ../pidgin/gtksound.c:69
 msgid "You talk in chat"
 msgstr "আপনি আড্ডায় কথা বলছেন"
 
-#: ../finch/gntsound.c:104 ../pidgin/gtksound.c:70
 msgid "Others talk in chat"
 msgstr "অন্যান্যরা আড্ডায় কথা বলছে"
 
-#: ../finch/gntsound.c:106 ../pidgin/gtksound.c:73
 msgid "Someone says your username in chat"
 msgstr "কেউ একজন আড্ডায় আপনার ব্যবহারকারীর নাম বলছে"
 
 # tithi
-#: ../finch/gntsound.c:367 ../pidgin/gtksound.c:309
 msgid "GStreamer Failure"
 msgstr "GStreamer ব্যর্থতা"
 
-#: ../finch/gntsound.c:368 ../pidgin/gtksound.c:310
 msgid "GStreamer failed to initialize."
 msgstr "GStreamer আরম্ভ হতে ব্যর্থ।"
 
 # tithi
-#: ../finch/gntsound.c:722 ../finch/gntsound.c:808 ../pidgin/gtkpounce.c:178
-#: ../pidgin/gtkpounce.c:189 ../pidgin/gtkpounce.c:321
-#: ../pidgin/gtkpounce.c:691 ../pidgin/gtkpounce.c:953
-#: ../pidgin/gtkprefs.c:1738 ../pidgin/gtkprefs.c:1827
-#: ../pidgin/gtkprefs.c:2023
 msgid "(default)"
 msgstr "(পূর্বনির্ধারিত)"
 
-#: ../finch/gntsound.c:735
 msgid "Select Sound File ..."
 msgstr "সাউন্ড ফাইল নির্বাচন করুন..."
 
-#: ../finch/gntsound.c:910
 msgid "Sound Preferences"
 msgstr "সাউন্ডের অগ্রাধিকারসমুহ"
 
-#: ../finch/gntsound.c:921
 msgid "Profiles"
 msgstr "ব্যাক্তিগত বিবরণীসমূহ"
 
-#: ../finch/gntsound.c:960 ../pidgin/gtkprefs.c:1884
 msgid "Automatic"
 msgstr "স্বয়ংক্রিয়"
 
-#: ../finch/gntsound.c:963
 msgid "Console Beep"
 msgstr "কনসোল বীপ করছে"
 
-#: ../finch/gntsound.c:964 ../pidgin/gtkprefs.c:1888
 msgid "Command"
 msgstr "নির্দেশ"
 
-#: ../finch/gntsound.c:965
 msgid "No Sound"
 msgstr "কোনো শব্দ নাই"
 
-#: ../finch/gntsound.c:967 ../pidgin/gtkprefs.c:1879
 msgid "Sound Method"
 msgstr "শব্দের প্রক্রিয়া"
 
-#: ../finch/gntsound.c:972
 msgid "Method: "
 msgstr "প্রক্রিয়া:"
 
-#: ../finch/gntsound.c:979
 #, c-format
 msgid ""
 "Sound Command\n"
@@ -1970,82 +1311,56 @@
 "(ফাইলের নামের জন্য %s)"
 
 #. Sound options
-#: ../finch/gntsound.c:987 ../pidgin/gtkprefs.c:1910
 msgid "Sound Options"
 msgstr "শব্দের পছন্দসমূহ"
 
-#: ../finch/gntsound.c:988
 msgid "Sounds when conversation has focus"
 msgstr "কথোপকথন ফোকাস করলে শব্দ করে"
 
-#: ../finch/gntsound.c:996 ../pidgin/gtkprefs.c:943 ../pidgin/gtkprefs.c:955
-#: ../pidgin/gtkprefs.c:1921 ../pidgin/plugins/timestamp_format.c:42
-#: ../pidgin/plugins/timestamp_format.c:51
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:334
 msgid "Always"
 msgstr "সর্বদা"
 
-#: ../finch/gntsound.c:997 ../pidgin/gtkprefs.c:1919
 msgid "Only when available"
 msgstr "শুধুমাত্র যখন সহজলভ্য"
 
-#: ../finch/gntsound.c:998 ../pidgin/gtkprefs.c:1920
 msgid "Only when not available"
 msgstr "শুধুমাত্র যখন সহজলভ্য নয়"
 
-#: ../finch/gntsound.c:1005
 msgid "Volume(0-100):"
 msgstr "ভলিউম(০-১০০):"
 
 #. Sound events
-#: ../finch/gntsound.c:1024 ../pidgin/gtkprefs.c:1949
 msgid "Sound Events"
 msgstr "শব্দ ইভেন্টসমূহ"
 
-#: ../finch/gntsound.c:1026 ../pidgin/gtkprefs.c:2008
 msgid "Event"
 msgstr "ইভেন্ট"
 
-#: ../finch/gntsound.c:1026
 msgid "File"
 msgstr "ফাইল"
 
-#: ../finch/gntsound.c:1045
 msgid "Test"
 msgstr "পরীক্ষা"
 
-#: ../finch/gntsound.c:1048 ../pidgin/gtkpounce.c:695
 msgid "Reset"
 msgstr "পুনঃ বিন্যাস করুন"
 
-#: ../finch/gntsound.c:1051
 msgid "Choose..."
 msgstr "পছন্দ করুন..."
 
-#: ../finch/gntstatus.c:138
 #, c-format
 msgid "Are you sure you want to delete \"%s\""
 msgstr "আপনি কি  নিশ্চিত আপনি \"%s\" মুছে ফেলতে চান"
 
-#: ../finch/gntstatus.c:141
 msgid "Delete Status"
 msgstr "অবস্থা মুছুন"
 
-#: ../finch/gntstatus.c:176 ../pidgin/gtksavedstatuses.c:631
 msgid "Saved Statuses"
 msgstr "সংরক্ষিত অবস্থাসমূহ"
 
-#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:539
-#: ../libpurple/protocols/jabber/buddy.c:326
-#: ../libpurple/protocols/jabber/buddy.c:1375
-#: ../libpurple/protocols/msn/msn.c:871
-#: ../libpurple/protocols/myspace/myspace.c:507
-#: ../libpurple/protocols/novell/novell.c:1493
-#: ../libpurple/protocols/qq/group_info.c:141 ../pidgin/gtksavedstatuses.c:530
 msgid "Title"
 msgstr "শিরোনাম"
 
-#: ../finch/gntstatus.c:183 ../pidgin/gtksavedstatuses.c:545
 msgid "Type"
 msgstr "ধরন"
 
@@ -2057,136 +1372,76 @@
 #. user_settable
 #. not independent
 #. Attributes - each status can have a message.
-#: ../finch/gntstatus.c:183 ../finch/gntstatus.c:564 ../finch/gntstatus.c:576
-#: ../libpurple/protocols/bonjour/bonjour.c:281
-#: ../libpurple/protocols/bonjour/bonjour.c:288
-#: ../libpurple/protocols/bonjour/bonjour.c:371
-#: ../libpurple/protocols/gg/gg.c:992 ../libpurple/protocols/gg/gg.c:1645
-#: ../libpurple/protocols/gg/gg.c:1661 ../libpurple/protocols/gg/gg.c:1671
-#: ../libpurple/protocols/gg/gg.c:1677 ../libpurple/protocols/gg/gg.c:1686
-#: ../libpurple/protocols/gg/gg.c:1691 ../libpurple/protocols/irc/irc.c:243
-#: ../libpurple/protocols/jabber/jabber.c:1796
-#: ../libpurple/protocols/jabber/jabber.c:1810
-#: ../libpurple/protocols/jabber/jabber.c:1824
-#: ../libpurple/protocols/jabber/jabber.c:1838
-#: ../libpurple/protocols/jabber/jabber.c:1852
-#: ../libpurple/protocols/jabber/jabber.c:1868
-#: ../libpurple/protocols/msn/msn.c:823 ../libpurple/protocols/msn/msn.c:829
-#: ../libpurple/protocols/msn/msn.c:835 ../libpurple/protocols/msn/msn.c:841
-#: ../libpurple/protocols/msn/msn.c:846 ../libpurple/protocols/msn/msn.c:851
-#: ../libpurple/protocols/myspace/myspace.c:484
-#: ../libpurple/protocols/novell/novell.c:2856
-#: ../libpurple/protocols/novell/novell.c:2959
-#: ../libpurple/protocols/novell/novell.c:2965
-#: ../libpurple/protocols/novell/novell.c:2971
-#: ../libpurple/protocols/oscar/oscar.c:5993
-#: ../libpurple/protocols/oscar/oscar.c:6007
-#: ../libpurple/protocols/oscar/oscar.c:6023
-#: ../libpurple/protocols/oscar/oscar.c:6030
-#: ../libpurple/protocols/oscar/oscar.c:6037
-#: ../libpurple/protocols/sametime/sametime.c:3343
-#: ../libpurple/protocols/sametime/sametime.c:3349
-#: ../libpurple/protocols/sametime/sametime.c:3355
-#: ../libpurple/protocols/sametime/sametime.c:3434
-#: ../libpurple/protocols/silc/buddy.c:1566
-#: ../libpurple/protocols/silc10/buddy.c:1566
-#: ../libpurple/protocols/simple/simple.c:247
-#: ../libpurple/protocols/yahoo/yahoo.c:3854
-#: ../libpurple/protocols/yahoo/yahoo.c:3860
-#: ../libpurple/protocols/zephyr/zephyr.c:2358
-#: ../pidgin/gtksavedstatuses.c:560 ../pidgin/gtksavedstatuses.c:1047
 msgid "Message"
 msgstr "বার্তা"
 
 #. Use
-#: ../finch/gntstatus.c:194 ../finch/gntstatus.c:593
 msgid "Use"
 msgstr "ব্যবহার করুন"
 
-#: ../finch/gntstatus.c:301
 msgid "Invalid title"
 msgstr "অবৈধ শিরোনাম"
 
 # tithi
-#: ../finch/gntstatus.c:302
 msgid "Please enter a non-empty title for the status."
 msgstr "অনুগ্রহ করে অবস্থার জন্য খালি নয় এমন শিরোনাম প্রবেশ করান।"
 
-#: ../finch/gntstatus.c:310
 msgid "Duplicate title"
 msgstr "অনুরুপ শিরোনাম"
 
-#: ../finch/gntstatus.c:311
 msgid "Please enter a different title for the status."
 msgstr "অনুগ্রহ করে অবস্থাটির জন্য একটি ভিন্ন শিরোনাম প্রবেশ করান।"
 
-#: ../finch/gntstatus.c:452
 msgid "Substatus"
 msgstr "উপঅবস্থা"
 
-#: ../finch/gntstatus.c:464 ../pidgin/gtkft.c:701
 msgid "Status:"
 msgstr "অবস্থা:"
 
-#: ../finch/gntstatus.c:479
 msgid "Message:"
 msgstr "বার্তা:"
 
-#: ../finch/gntstatus.c:528
 msgid "Edit Status"
 msgstr "অবস্থা সম্পাদন করুন"
 
-#: ../finch/gntstatus.c:570
 msgid "Use different status for following accounts"
 msgstr "নিম্নোক্ত একাউন্টসমুহের জন্য ভিন্ন অবস্থা ব্যবহার করুন"
 
 #. Save & Use
-#: ../finch/gntstatus.c:604
 msgid "Save & Use"
 msgstr "সংরক্ষণ এবং ব্যবহার করুন"
 
 # tithi
-#: ../finch/gntui.c:97
 msgid "Certificates"
 msgstr "প্রত্যয়ন পত্র"
 
-#: ../finch/gntui.c:102 ../pidgin/gtkprefs.c:2169
 msgid "Sounds"
 msgstr "শব্দসমূহ"
 
-#: ../finch/gntui.c:104
 msgid "Statuses"
 msgstr "অবস্থাসমূহ"
 
-#: ../finch/plugins/gntclipboard.c:115 ../finch/plugins/gntclipboard.c:121
-#: ../finch/plugins/gntclipboard.c:128
 msgid "Error loading the plugin."
 msgstr "প্লাগইন লোড করার ত্রুটি।"
 
-#: ../finch/plugins/gntclipboard.c:116
 msgid "Couldn't find X display"
 msgstr "X প্রদর্শন খুঁজে পাবে না"
 
-#: ../finch/plugins/gntclipboard.c:122
 msgid "Couldn't find window"
 msgstr "উইন্ডো খুঁজে পাবে না"
 
 # tithi
-#: ../finch/plugins/gntclipboard.c:129
 msgid "This plugin cannot be loaded because it was not built with X11 support."
 msgstr "এই প্লাগইনটি লোড করা যায় না কারণ এটি X11 সমর্থনে তৈরী হয়নি।"
 
 # tithi
-#: ../finch/plugins/gntclipboard.c:158
 msgid "GntClipboard"
 msgstr "GntClipboard"
 
-#: ../finch/plugins/gntclipboard.c:160
 msgid "Clipboard plugin"
 msgstr "ক্লিপবোর্ড প্লাগইন"
 
 # tithi
-#: ../finch/plugins/gntclipboard.c:161
 msgid ""
 "When the gnt clipboard contents change, the contents are made available to "
 "X, if possible."
@@ -2194,83 +1449,66 @@
 "যদি সম্ভব হয় , যখন gnt ক্লিপবোর্ডের বিষয়বস্তুসমূহ পরিবর্তন হয়, তখন X এ বিষয়বস্তুসমূহ "
 "সহজলভ্য করুন।"
 
-#: ../finch/plugins/gntgf.c:231
 #, c-format
 msgid "%s just signed on"
 msgstr "%s অনলাইনে"
 
-#: ../finch/plugins/gntgf.c:238
 #, c-format
 msgid "%s just signed off"
 msgstr "%s অফলাইনে"
 
-#: ../finch/plugins/gntgf.c:246
 #, c-format
 msgid "%s sent you a message"
 msgstr "%s আপনাকে একটি বার্তা পাঠিয়েছে"
 
 # tithi
-#: ../finch/plugins/gntgf.c:265
 #, c-format
 msgid "%s said your nick in %s"
 msgstr "%1s আপনার ডাক নাম %2s এ বলছে"
 
-#: ../finch/plugins/gntgf.c:267
 #, c-format
 msgid "%s sent a message in %s"
 msgstr "%1s %2s এ একটি বার্তা পাঠিয়েছে"
 
-#: ../finch/plugins/gntgf.c:305
 msgid "Buddy signs on/off"
 msgstr "বন্ধু সাইন চালু/বন্ধ"
 
-#: ../finch/plugins/gntgf.c:306
 msgid "You receive an IM"
 msgstr "আপনার একটি তাৎক্ষনিক বার্তা গ্রহণ করেছেন"
 
-#: ../finch/plugins/gntgf.c:307
 msgid "Someone speaks in a chat"
 msgstr "কেউ একজন আড্ডায় কথা বলছে"
 
-#: ../finch/plugins/gntgf.c:308
 msgid "Someone says your name in a chat"
 msgstr "কেউ একজন আড্ডায় আপনার নাম ধরে ডাকছে"
 
 # tithi
-#: ../finch/plugins/gntgf.c:336
 msgid "Notify with a toaster when"
 msgstr "টোস্টার দ্বারা অবগতি করুন যখন"
 
 # tithi
-#: ../finch/plugins/gntgf.c:351
 msgid "Beep too!"
 msgstr "শব্দও করবে!"
 
 # tithi
-#: ../finch/plugins/gntgf.c:357
 msgid "Set URGENT for the terminal window."
 msgstr "টারমিনাল উইন্ডোর জন্য জরুরী নির্ধারণ করুন।"
 
 # tithi
-#: ../finch/plugins/gntgf.c:377
 msgid "GntGf"
 msgstr "GntGf"
 
 # tithi
-#: ../finch/plugins/gntgf.c:379 ../finch/plugins/gntgf.c:380
 msgid "Toaster plugin"
 msgstr "টোস্টার প্লাগইন"
 
-#: ../finch/plugins/gnthistory.c:114 ../pidgin/plugins/history.c:133
 #, c-format
 msgid "<b>Conversation with %s on %s:</b><br>"
 msgstr "<b>%2s এ %2s এর সাথে কথোপকথন:</b><br>"
 
-#: ../finch/plugins/gnthistory.c:172 ../pidgin/plugins/history.c:160
 msgid "History Plugin Requires Logging"
 msgstr "ইতিহাস প্লাগইনের লগ করা প্রয়োজন"
 
-#: ../finch/plugins/gnthistory.c:173 ../pidgin/plugins/history.c:161
 msgid ""
 "Logging can be enabled from Tools -> Preferences -> Logging.\n"
 "\n"
@@ -2282,15 +1520,12 @@
 "তাৎক্ষণিক বার্তার জন্য কার্যবিবরণীসমূহ সক্রিয় করছে এবং/বা একই ধরনের কথাবার্তার জন্য "
 "আড্ডা ইতিহাস সক্রিয় করবে।"
 
-#: ../finch/plugins/gnthistory.c:217
 msgid "GntHistory"
 msgstr "GntHistory"
 
-#: ../finch/plugins/gnthistory.c:219 ../pidgin/plugins/history.c:204
 msgid "Shows recently logged conversations in new conversations."
 msgstr "নতুন কথোপকথনসমূহে সাম্প্রতিক লগকৃত কথোপকথনসমূহ প্রদর্শন করে।"
 
-#: ../finch/plugins/gnthistory.c:220 ../pidgin/plugins/history.c:205
 msgid ""
 "When a new conversation is opened this plugin will insert the last "
 "conversation into the current conversation."
@@ -2298,189 +1533,128 @@
 "যখন একটি নতুন কথোপকথন খোলা হয় তখন এই প্লাগ-ইনটি নতুন কথোপকথনে সর্বশেষ কথোপকথন "
 "প্রবেশ করবে।"
 
-#: ../finch/plugins/grouping.c:44 ../libpurple/protocols/oscar/oscar.c:756
-#: ../libpurple/protocols/qq/qq.c:260
 msgid "Online"
 msgstr "অনলাইন"
 
-#: ../finch/plugins/grouping.c:46 ../finch/plugins/grouping.c:143
-#: ../libpurple/protocols/gg/gg.c:927
-#: ../libpurple/protocols/jabber/buddy.c:2060
-#: ../libpurple/protocols/novell/novell.c:2846
-#: ../libpurple/protocols/oscar/oscar.c:915
-#: ../libpurple/protocols/oscar/oscar.c:5825
-#: ../libpurple/protocols/qq/qq.c:257 ../libpurple/protocols/qq/qq.c:264
-#: ../libpurple/protocols/qq/qq.c:425
-#: ../libpurple/protocols/yahoo/yahoo.c:3177 ../libpurple/status.c:159
-#: ../pidgin/gtkblist.c:3528 ../pidgin/gtkblist.c:3934
-#: ../pidgin/gtkdocklet.c:561 ../pidgin/gtkstatusbox.c:1099
 msgid "Offline"
 msgstr "অফলাইন "
 
-#: ../finch/plugins/grouping.c:115 ../pidgin/gtkblist.c:3564
 msgid "Online Buddies"
 msgstr "অফলাইন বন্ধু"
 
-#: ../finch/plugins/grouping.c:115
 msgid "Offline Buddies"
 msgstr "অফলাইন বন্ধু"
 
-#: ../finch/plugins/grouping.c:125
 msgid "Online/Offline"
 msgstr "অনলাইন/অফলাইন"
 
 # tithi
-#: ../finch/plugins/grouping.c:162
 msgid "Meebo"
 msgstr "Meebo"
 
-#: ../finch/plugins/grouping.c:211
 msgid "No Grouping"
 msgstr "দলগত নয়"
 
 # tithi
-#: ../finch/plugins/grouping.c:292
 msgid "Nested Subgroup"
 msgstr "নেস্টেড উপদল"
 
 # tithi
-#: ../finch/plugins/grouping.c:324
 msgid "Nested Grouping (experimental)"
 msgstr "নেস্টেড দলগতকরণ (পরীক্ষামূলক)"
 
-#: ../finch/plugins/grouping.c:367 ../finch/plugins/grouping.c:368
 msgid "Provides alternate buddylist grouping options."
 msgstr "পর্যাক্রমিক বন্ধু-তালিকার দলগতকরণ পছন্দসমূহ প্রদান করে।"
 
 # tithi
-#: ../finch/plugins/lastlog.c:69
 msgid "Lastlog"
 msgstr "সর্বশেষ-লগ"
 
 # tithi
 #. Translator Note: The "backlog" is the conversation buffer/history.
-#: ../finch/plugins/lastlog.c:100
 msgid "lastlog: Searches for a substring in the backlog."
 msgstr "সর্বশেষ-লগ: ব্যাকলগে উপস্ট্রিং খুঁজছে।"
 
 # tithi
-#: ../finch/plugins/lastlog.c:122
 msgid "GntLastlog"
 msgstr "GntLastlog"
 
 # tithi
-#: ../finch/plugins/lastlog.c:124 ../finch/plugins/lastlog.c:125
 msgid "Lastlog plugin."
 msgstr "সর্বশেষ-লগ প্লাগইন।"
 
-#: ../libpurple/account.c:888
 msgid "accounts"
 msgstr "একাউন্টসমূহ"
 
-#: ../libpurple/account.c:1064 ../libpurple/protocols/jabber/auth.c:204
-#: ../libpurple/protocols/silc/silc.c:474
 msgid "Password is required to sign on."
 msgstr "যোগদানের জন্য গুপ্তসংকেত আবশ্যক।"
 
-#: ../libpurple/account.c:1098
 #, c-format
 msgid "Enter password for %s (%s)"
 msgstr "%1s (%2s) এর জন্য গুপ্তসংকেত প্রবেশ করান"
 
-#: ../libpurple/account.c:1105
 msgid "Enter Password"
 msgstr "গুপ্তসংকেত প্রবেশ করান"
 
-#: ../libpurple/account.c:1110
 msgid "Save password"
 msgstr "গুপ্তসংকেত সংরক্ষণ করুন"
 
-#: ../libpurple/account.c:1145 ../libpurple/connection.c:126
-#: ../libpurple/connection.c:204
 #, c-format
 msgid "Missing protocol plugin for %s"
 msgstr "%s এর জন্য নিরুদ্দিষ্ট প্রটোকল প্লাগইন"
 
-#: ../libpurple/account.c:1147 ../libpurple/connection.c:129
 msgid "Connection Error"
 msgstr "সংযোগ ত্রুটি"
 
-#: ../libpurple/account.c:1371 ../libpurple/protocols/gg/gg.c:650
-#: ../libpurple/protocols/jabber/jabber.c:1924
 msgid "New passwords do not match."
 msgstr "নতুন গুপ্তসংকেতসমূহ মিলছে না।"
 
-#: ../libpurple/account.c:1384
 msgid "Fill out all fields completely."
 msgstr "সব ক্ষেত্র সম্পূর্ণরুপে পূরণ করুন।"
 
-#: ../libpurple/account.c:1416
 msgid "Original password"
 msgstr "মূল গুপ্তসংকেত"
 
-#: ../libpurple/account.c:1424
 msgid "New password"
 msgstr "নতুন গুপ্তসংকেত"
 
-#: ../libpurple/account.c:1432
 msgid "New password (again)"
 msgstr "নতুন গুপ্তসংকেত (আবার)"
 
-#: ../libpurple/account.c:1439
 #, c-format
 msgid "Change password for %s"
 msgstr "%s এর জন্য গুপ্তসংকেত পরিবর্তন করুন"
 
-#: ../libpurple/account.c:1447
 msgid "Please enter your current password and your new password."
 msgstr "অনুগ্রহ করে আপনার বর্তমান গুপ্তসংকেত এবং নতুন গুপ্তসংকেত প্রবেশ করান।"
 
-#: ../libpurple/account.c:1478
 #, c-format
 msgid "Change user information for %s"
 msgstr "%s এর জন্য ব্যবহাকারীর তথ্য পরিবর্তন করুন"
 
-#: ../libpurple/account.c:1481 ../libpurple/protocols/toc/toc.c:1670
 msgid "Set User Info"
 msgstr "ব্যবহারকারীর তথ্য নির্ধারণ করুন"
 
-#: ../libpurple/account.c:1952 ../libpurple/protocols/gg/gg.c:936
-#: ../libpurple/protocols/jabber/buddy.c:826
-#: ../libpurple/protocols/jabber/buddy.c:2056
-#: ../libpurple/protocols/jabber/buddy.c:2073
-#: ../libpurple/protocols/novell/novell.c:2849
-#: ../libpurple/protocols/qq/group_info.c:126
-#: ../libpurple/protocols/qq/qq.c:320 ../pidgin/gtkft.c:166
 msgid "Unknown"
 msgstr "অজানা"
 
-#: ../libpurple/blist.c:522 ../libpurple/blist.c:1346
-#: ../libpurple/blist.c:1558 ../libpurple/blist.c:1560
-#: ../libpurple/protocols/jabber/roster.c:68
-#: ../libpurple/protocols/myspace/myspace.c:3481 ../pidgin/gtkblist.c:6447
-#: ../pidgin/plugins/gevolution/gevo-util.c:67
-#: ../pidgin/plugins/gevolution/gevolution.c:96
 msgid "Buddies"
 msgstr "বন্ধুগণ"
 
-#: ../libpurple/blist.c:549
 msgid "buddy list"
 msgstr "বন্ধু তালিকা"
 
 # tithi
-#: ../libpurple/certificate.c:558
 msgid "(DOES NOT MATCH)"
 msgstr "(মিলে না)"
 
 # tithi
 #. Make messages
-#: ../libpurple/certificate.c:562
 #, c-format
 msgid "%s has presented the following certificate for just-this-once use:"
 msgstr "শুধুমাত্র-এটি-একবার ব্যবহারের জন্য %s নিম্নলিখিত প্রত্যয়ন পত্র উপস্থাপন করেছে:"
 
 # tithi
-#: ../libpurple/certificate.c:563
 #, c-format
 msgid ""
 "Common name: %s %s\n"
@@ -2491,54 +1665,45 @@
 
 # tithi
 #. TODO: Find what the handle ought to be
-#: ../libpurple/certificate.c:568
 msgid "Single-use Certificate Verification"
 msgstr "একক-ব্যবহারের প্রত্যয়ন পত্রের সত্যতা যাচাই"
 
 # tithi
 #. Scheme name
 #. Pool name
-#: ../libpurple/certificate.c:897
 msgid "Certificate Authorities"
 msgstr "প্রত্যয়ন পত্রের কর্তৃপক্ষ"
 
 # tithi
 #. Scheme name
 #. Pool name
-#: ../libpurple/certificate.c:1065
 msgid "SSL Peers Cache"
 msgstr "SSL পিয়ার্স ক্যাশে"
 
 #. Make messages
-#: ../libpurple/certificate.c:1196
 #, c-format
 msgid "Accept certificate for %s?"
 msgstr "%s এর জন্য কি প্রত্যয়ন পত্র গ্রহণ করবেন?"
 
 # tithi
 #. TODO: Find what the handle ought to be
-#: ../libpurple/certificate.c:1202
 msgid "SSL Certificate Verification"
 msgstr "SSL প্রত্যয়ন পত্রের সত্যতা যাচাই"
 
 #. Number of actions
-#: ../libpurple/certificate.c:1211
 msgid "Accept"
 msgstr "গ্রহণ করুন"
 
-#: ../libpurple/certificate.c:1212
 msgid "Reject"
 msgstr "প্রত্যাখান করুন"
 
 # tithi
-#: ../libpurple/certificate.c:1213
 msgid "_View Certificate..."
 msgstr "প্রত্যয়ন পত্র দেখুন...(_V)"
 
 # tithi
 #. Prompt the user to authenticate the certificate
 #. vrq will be completed by user_auth
-#: ../libpurple/certificate.c:1315
 #, c-format
 msgid ""
 "The certificate presented by \"%s\" is self-signed. It cannot be "
@@ -2548,7 +1713,6 @@
 "যাবে না।"
 
 # tithi
-#: ../libpurple/certificate.c:1333
 #, c-format
 msgid "The certificate chain presented for %s is not valid."
 msgstr "%s এর জন্য উপস্থাপিত প্রত্যয়ন পত্রের শৃঙ্খল বৈধ নয়।"
@@ -2558,17 +1722,14 @@
 #. stifle it.
 #. TODO: Probably wrong.
 #. TODO: Probably wrong
-#: ../libpurple/certificate.c:1341 ../libpurple/certificate.c:1411
 msgid "SSL Certificate Error"
 msgstr "SSL প্রত্যয়ন পত্রের ত্রুটি"
 
-#: ../libpurple/certificate.c:1342
 msgid "Invalid certificate chain"
 msgstr "অবৈধ প্রত্যয়ন পত্রের শৃঙ্খল"
 
 # tithi
 #. vrq will be completed by user_auth
-#: ../libpurple/certificate.c:1363
 msgid ""
 "You have no database of root certificates, so this certificate cannot be "
 "validated."
@@ -2578,13 +1739,11 @@
 
 # tithi
 #. vrq will be completed by user_auth
-#: ../libpurple/certificate.c:1386
 msgid ""
 "The root certificate this one claims to be issued by is unknown to Pidgin."
 msgstr "মূল প্রত্যয়ন পত্রটি যার দ্বারা প্রদান করা হয়েছে তা পিজিনের কাছে অপরিচিত।"
 
 # tithi
-#: ../libpurple/certificate.c:1403
 #, c-format
 msgid ""
 "The certificate chain presented by %s does not have a valid digital "
@@ -2594,7 +1753,6 @@
 "%s দ্বারা উপস্থাপিত প্রত্যয়ন পত্র শৃঙ্খলের প্রত্যয়ন পত্রের কর্তৃপক্ষ হতে প্রাপ্ত বৈধ "
 "ডিজিটাল স্বাক্ষর নেই যা দ্বারা এটি দাবী করে যে এর স্বাক্ষর আছে।"
 
-#: ../libpurple/certificate.c:1412
 msgid "Invalid certificate authority signature"
 msgstr "অবৈধ প্রত্যয়ন পত্র কতৃপক্ষের স্বাক্ষর"
 
@@ -2603,7 +1761,6 @@
 #. TODO: Provide the user with more guidance about why he is
 #. being prompted
 #. vrq will be completed by user_auth
-#: ../libpurple/certificate.c:1438
 #, c-format
 msgid ""
 "The certificate presented by \"%s\" claims to be from \"%s\" instead.  This "
@@ -2615,7 +1772,6 @@
 
 # tithi
 #. Make messages
-#: ../libpurple/certificate.c:1900
 #, c-format
 msgid ""
 "Common name: %s\n"
@@ -2633,128 +1789,94 @@
 "মেয়াদ উত্তীর্ণের তারিখ: %s\n"
 
 #. TODO: Find what the handle ought to be
-#: ../libpurple/certificate.c:1912
 msgid "Certificate Information"
 msgstr "প্রত্যদন পত্রের তথ্য"
 
-#: ../libpurple/connection.c:128
 msgid "Registration Error"
 msgstr "নিবন্ধন ত্রুটি"
 
-#: ../libpurple/connection.c:206
 msgid "Unregistration Error"
 msgstr "নিবন্ধনহীন ত্রুটি"
 
-#: ../libpurple/connection.c:366
 #, c-format
 msgid "+++ %s signed on"
 msgstr "+++ %s এখন অনলাইন "
 
-#: ../libpurple/connection.c:396
 #, c-format
 msgid "+++ %s signed off"
 msgstr "+++ %s এখন অফলাইন"
 
-#: ../libpurple/connection.c:549 ../libpurple/plugin.c:279
-#: ../libpurple/protocols/jabber/buddy.c:2376
-#: ../libpurple/protocols/msn/servconn.c:140
-#: ../libpurple/protocols/msn/session.c:381
-#: ../libpurple/protocols/msnp9/servconn.c:139
-#: ../libpurple/protocols/msnp9/session.c:343
-#: ../libpurple/protocols/oscar/family_chatnav.c:63
 msgid "Unknown error"
 msgstr "অজানা ত্রুটি"
 
-#: ../libpurple/conversation.c:168
 msgid "Unable to send message: The message is too large."
 msgstr "বার্তা পাঠাতে সমর্থ নয়: বার্তাটি খুবই বড়।"
 
-#: ../libpurple/conversation.c:171 ../libpurple/conversation.c:184
 #, c-format
 msgid "Unable to send message to %s."
 msgstr "%s-এ বার্তাটি পাঠাতে সমর্থ নয়।"
 
-#: ../libpurple/conversation.c:172
 msgid "The message is too large."
 msgstr "বার্তাটি খুবই বড়।"
 
-#: ../libpurple/conversation.c:181 ../libpurple/protocols/bonjour/jabber.c:297
-#: ../libpurple/protocols/bonjour/jabber.c:340
-#: ../libpurple/protocols/qq/qq_process.c:90
 msgid "Unable to send message."
 msgstr "বার্তা পাঠাতে সমর্থ নয়।"
 
-#: ../libpurple/conversation.c:1229
 msgid "Send Message"
 msgstr "বার্তা প্রেরণ করুন"
 
-#: ../libpurple/conversation.c:1232
 msgid "_Send Message"
 msgstr "বার্তা প্রেরণ করুন (_S)"
 
-#: ../libpurple/conversation.c:1638
 #, c-format
 msgid "%s entered the room."
 msgstr "%s এই কক্ষে প্রবেশ করেছে।"
 
-#: ../libpurple/conversation.c:1641
 #, c-format
 msgid "%s [<I>%s</I>] entered the room."
 msgstr "%1s [<I>%2s</I>] এই কক্ষে প্রবেশ করেছে।"
 
-#: ../libpurple/conversation.c:1751
 #, c-format
 msgid "You are now known as %s"
 msgstr "আপনি এখন %s নামে পরিচিত"
 
-#: ../libpurple/conversation.c:1771
 #, c-format
 msgid "%s is now known as %s"
 msgstr "%1s এখন %2s নামে পরিচিত"
 
-#: ../libpurple/conversation.c:1846
 #, c-format
 msgid "%s left the room."
 msgstr "%s এই কক্ষে ত্যাগ করেছে।"
 
-#: ../libpurple/conversation.c:1849
 #, c-format
 msgid "%s left the room (%s)."
 msgstr "%1s (%2s) এই কক্ষে ত্যাগ করেছে।"
 
-#: ../libpurple/dbus-server.c:591
 #, c-format
 msgid "Failed to get connection: %s"
 msgstr "সংযোগ পেতে ব্যর্থ: %s"
 
-#: ../libpurple/dbus-server.c:603
 #, c-format
 msgid "Failed to get name: %s"
 msgstr "নাম পেতে ব্যর্থ: %s"
 
-#: ../libpurple/dbus-server.c:617
 #, c-format
 msgid "Failed to get serv name: %s"
 msgstr "সার্ভার নাম পেতে ব্যর্থ: %s"
 
 # tithi
-#: ../libpurple/dbus-server.h:86
 msgid "Purple's D-BUS server is not running for the reason listed below"
 msgstr "Purple-এর D-BUS সার্ভার নিচের তালিকাভুক্ত কারণের জন্য চলছে না"
 
-#: ../libpurple/desktopitem.c:287 ../libpurple/desktopitem.c:878
 msgid "No name"
 msgstr "কোনো নাম নেই"
 
-#: ../libpurple/dnsquery.c:527
 msgid "Unable to create new resolver process\n"
 msgstr "নতুন সমাধান পদ্ধতি তৈরী করতে অক্ষম\n"
 
-#: ../libpurple/dnsquery.c:532
 msgid "Unable to send request to resolver process\n"
 msgstr "সমাধানকারীর পদ্ধতিতে অনুরোধ পাঠাতে অক্ষম\n"
 
-#: ../libpurple/dnsquery.c:565 ../libpurple/dnsquery.c:720
 #, c-format
 msgid ""
 "Error resolving %s:\n"
@@ -2763,13 +1885,10 @@
 "%1s সমাধানে ত্রুটি: \n"
 "%2s"
 
-#: ../libpurple/dnsquery.c:568 ../libpurple/dnsquery.c:734
-#: ../libpurple/dnsquery.c:852
 #, c-format
 msgid "Error resolving %s: %d"
 msgstr "%1s সমাধানে ত্রুটি: %2d"
 
-#: ../libpurple/dnsquery.c:590
 #, c-format
 msgid ""
 "Error reading from resolver process:\n"
@@ -2779,22 +1898,18 @@
 "%s"
 
 # tithi
-#: ../libpurple/dnsquery.c:594
+#, c-format
 msgid "Resolver process exited without answering our request"
 msgstr "সমাধানকারী পদ্ধতি আমাদের অনুরোধের উত্তর না দিয়ে প্রস্থান করেছে"
 
 # tithi
-#: ../libpurple/dnsquery.c:784
 #, c-format
 msgid "Thread creation failure: %s"
 msgstr "থ্রেড সৃষ্টি ব্যর্থ: %s"
 
-#: ../libpurple/dnsquery.c:785 ../libpurple/protocols/qq/buddy_opt.c:988
-#: ../libpurple/protocols/qq/buddy_opt.c:1241
 msgid "Unknown reason"
 msgstr "অজানা কারণ"
 
-#: ../libpurple/ft.c:210
 #, c-format
 msgid ""
 "Error reading %s: \n"
@@ -2803,7 +1918,6 @@
 "%1s পড়ায় ত্রুটি: \n"
 "%2s।\n"
 
-#: ../libpurple/ft.c:214
 #, c-format
 msgid ""
 "Error writing %s: \n"
@@ -2812,7 +1926,6 @@
 "%1s লেখায় ত্রুটি: \n"
 "%2s।\n"
 
-#: ../libpurple/ft.c:218
 #, c-format
 msgid ""
 "Error accessing %s: \n"
@@ -2822,39 +1935,31 @@
 "%s।\n"
 
 # tithi
-#: ../libpurple/ft.c:254
 msgid "Directory is not writable."
 msgstr "নির্দেশিকা লিখনযোগ্য নয়।"
 
-#: ../libpurple/ft.c:269
 msgid "Cannot send a file of 0 bytes."
 msgstr "০ বাইটের কোনো ফাইল পাঠাতে পারে না।"
 
-#: ../libpurple/ft.c:279
 msgid "Cannot send a directory."
 msgstr "নির্দেশিকা পাঠাতে পারে না।"
 
-#: ../libpurple/ft.c:288
 #, c-format
 msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
 msgstr "%s নিয়মিত কোনো ফাইল নয়। কাপুরুষোচিত ভাবে উপরিলেখ করতে প্রত্যাখ্যান করছে।\n"
 
-#: ../libpurple/ft.c:348
 #, c-format
 msgid "%s wants to send you %s (%s)"
 msgstr "%1s আপনাকে %2s (%3s) পাঠাতে চায়"
 
-#: ../libpurple/ft.c:355
 #, c-format
 msgid "%s wants to send you a file"
 msgstr "%s আপনাকে একটি ফাইল পাঠাতে চায়"
 
-#: ../libpurple/ft.c:398
 #, c-format
 msgid "Accept file transfer request from %s?"
 msgstr "%s এর ফাইল স্থানান্তর করার অনুরোধ গ্রহন করবেন কি?"
 
-#: ../libpurple/ft.c:402
 #, c-format
 msgid ""
 "A file is available for download from:\n"
@@ -2865,181 +1970,147 @@
 "দূরবর্তী হোস্ট: %s\n"
 "দূরবর্তী পোর্ট: %d"
 
-#: ../libpurple/ft.c:437
 #, c-format
 msgid "%s is offering to send file %s"
 msgstr "%1s %2s ফাইলটি পাঠানোর প্রস্তাব দিচ্ছে"
 
-#: ../libpurple/ft.c:490
 #, c-format
 msgid "%s is not a valid filename.\n"
 msgstr "%s বৈধ ফাইল নাম নয়।\n"
 
-#: ../libpurple/ft.c:511
 #, c-format
 msgid "Offering to send %s to %s"
 msgstr "%2s এ %1s পাঠানোর প্রস্তাব দিচ্ছে"
 
-#: ../libpurple/ft.c:523
 #, c-format
 msgid "Starting transfer of %s from %s"
 msgstr "%2s হতে %1s-এর স্থানান্তর শুরু হচ্ছে"
 
-#: ../libpurple/ft.c:700
 #, c-format
 msgid "Transfer of file %s complete"
 msgstr "%s ফাইলের স্থানান্তর সম্পূর্ণ"
 
-#: ../libpurple/ft.c:703
 msgid "File transfer complete"
 msgstr "ফাইল স্থানান্তর সম্পূর্ণ"
 
-#: ../libpurple/ft.c:1138
 #, c-format
 msgid "You canceled the transfer of %s"
 msgstr "আপনি %s এর স্থানান্তর বাতিল করেছেন"
 
-#: ../libpurple/ft.c:1143
 msgid "File transfer cancelled"
 msgstr "ফাইল স্থানান্তর বাতিল করা হয়েছে"
 
-#: ../libpurple/ft.c:1201
 #, c-format
 msgid "%s canceled the transfer of %s"
 msgstr "%1s %2s-এর স্থানান্তর বাতিল করেছে"
 
-#: ../libpurple/ft.c:1206
 #, c-format
 msgid "%s canceled the file transfer"
 msgstr "%s ফাইল স্থানান্তর বাতিল করেছে"
 
-#: ../libpurple/ft.c:1263
 #, c-format
 msgid "File transfer to %s failed."
 msgstr "%s এ ফাইলের স্থানান্তর ব্যর্থ হয়েছে।"
 
-#: ../libpurple/ft.c:1265
 #, c-format
 msgid "File transfer from %s failed."
 msgstr "%s থেকে ফাইলের স্থানান্তর ব্যর্থ হয়েছে।"
 
-#: ../libpurple/gconf/purple.schemas.in.h:1
 msgid "Run the command in a terminal"
 msgstr "নির্দেশটি টার্মিনালে চালান"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:2
 msgid "The command used to handle \"aim\" URLs, if enabled."
 msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"aim\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:3
 msgid "The command used to handle \"gg\" URLs, if enabled."
 msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"gg\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:4
 msgid "The command used to handle \"icq\" URLs, if enabled."
 msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"icq\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:5
 msgid "The command used to handle \"irc\" URLs, if enabled."
 msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"irc\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:6
 msgid "The command used to handle \"msnim\" URLs, if enabled."
 msgstr ""
 "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"msnim\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:7
 msgid "The command used to handle \"sip\" URLs, if enabled."
 msgstr "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"sip\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:8
 msgid "The command used to handle \"xmpp\" URLs, if enabled."
 msgstr ""
 "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"xmpp\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:9
 msgid "The command used to handle \"ymsgr\" URLs, if enabled."
 msgstr ""
 "যদি সক্রিয় থাকে, এই নির্দেশটি ‌‌\"ymsgr\" এর URL নিয়ন্ত্রণ করতে ব্যবহার করা হয়।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:10
 msgid "The handler for \"aim\" URLs"
 msgstr "‌‌‌\"aim\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:11
 msgid "The handler for \"gg\" URLs"
 msgstr "‌‌‌\"gg\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:12
 msgid "The handler for \"icq\" URLs"
 msgstr "‌‌‌\"icq\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:13
 msgid "The handler for \"irc\" URLs"
 msgstr "‌‌‌\"irc\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:14
 msgid "The handler for \"msnim\" URLs"
 msgstr "‌‌‌\"msnim\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:15
 msgid "The handler for \"sip\" URLs"
 msgstr "‌‌‌\"sip\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:16
 msgid "The handler for \"xmpp\" URLs"
 msgstr "‌‌‌\"xmpp\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:17
 msgid "The handler for \"ymsgr\" URLs"
 msgstr "\"ymsgr\" এর URL-এর জন্য নিয়ন্ত্রণকারী"
 
 # fix me tithi
-#: ../libpurple/gconf/purple.schemas.in.h:18
 msgid ""
 "True if the command specified in the \"command\" key should handle \"aim\" "
 "URLs."
 msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"aim\" এর URL নিয়ন্ত্রণ করে।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:19
 msgid ""
 "True if the command specified in the \"command\" key should handle \"gg\" "
 "URLs."
 msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"gg\" এর URL নিয়ন্ত্রণ করে।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:20
 msgid ""
 "True if the command specified in the \"command\" key should handle \"icq\" "
 "URLs."
 msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"icq\" এর URL নিয়ন্ত্রণ করে।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:21
 msgid ""
 "True if the command specified in the \"command\" key should handle \"irc\" "
 "URLs."
 msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"irc\" এর URL নিয়ন্ত্রণ করে।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:22
 msgid ""
 "True if the command specified in the \"command\" key should handle \"msnim\" "
 "URLs."
@@ -3047,21 +2118,18 @@
 "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"msnim\" এর URL নিয়ন্ত্রণ করে।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:23
 msgid ""
 "True if the command specified in the \"command\" key should handle \"sip\" "
 "URLs."
 msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"sip\" এর URL নিয়ন্ত্রণ করে।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:24
 msgid ""
 "True if the command specified in the \"command\" key should handle \"xmpp\" "
 "URLs."
 msgstr "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"xmpp\" এর URL নিয়ন্ত্রণ করে।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:25
 msgid ""
 "True if the command specified in the \"command\" key should handle \"ymsgr\" "
 "URLs."
@@ -3069,78 +2137,62 @@
 "সত্য যদি \"নির্দেশ\" কী-তে উল্লেখিত নির্দেশটি \"ymsgr\" এর URL নিয়ন্ত্রণ করে।"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:26
 msgid ""
 "True if the command used to handle this type of URL should be run in a "
 "terminal."
 msgstr "সত্য হবে যদি এই ধরনের URL নিয়ন্ত্রণ করতে ব্যবহৃত নির্দেশটি টার্মিনালে চলে। "
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:27
 msgid "Whether the specified command should handle \"aim\" URLs"
 msgstr "উল্লেখিত নির্দেশটি \"aim\" এর URL নিয়ন্ত্রণ করবে কিনা"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:28
 msgid "Whether the specified command should handle \"gg\" URLs"
 msgstr "উল্লেখিত নির্দেশটি \"gg\" এর URL নিয়ন্ত্রণ করবে কিনা"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:29
 msgid "Whether the specified command should handle \"icq\" URLs"
 msgstr "উল্লেখিত নির্দেশটি \"icq\" এর URL নিয়ন্ত্রণ করবে কিনা"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:30
 msgid "Whether the specified command should handle \"irc\" URLs"
 msgstr "উল্লেখিত নির্দেশটি \"irc\" এর URL নিয়ন্ত্রণ করবে কিনা"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:31
 msgid "Whether the specified command should handle \"msnim\" URLs"
 msgstr "উল্লেখিত নির্দেশটি \"msnim\" এর URL নিয়ন্ত্রণ করবে কিনা"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:32
 msgid "Whether the specified command should handle \"sip\" URLs"
 msgstr "উল্লেখিত নির্দেশটি \"sip\" এর URL নিয়ন্ত্রণ করবে কিনা"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:33
 msgid "Whether the specified command should handle \"xmpp\" URLs"
 msgstr "উল্লেখিত নির্দেশটি \"xmpp\" এর URL নিয়ন্ত্রণ করবে কিনা"
 
 # tithi
-#: ../libpurple/gconf/purple.schemas.in.h:34
 msgid "Whether the specified command should handle \"ymsgr\" URLs"
 msgstr "উল্লেখিত নির্দেশটি \"ymsgr\" এর URL নিয়ন্ত্রণ করবে কিনা"
 
-#: ../libpurple/log.c:183
 msgid "<b><font color=\"red\">The logger has no read function</font></b>"
 msgstr "<b><font color=\"red\">এই লগাকারীর পাঠ করার কোনো  ফাংশন নেই</font></b>"
 
-#: ../libpurple/log.c:597
 msgid "HTML"
 msgstr "এইচটিএমএল"
 
-#: ../libpurple/log.c:611
 msgid "Plain text"
 msgstr "সরল পাঠ"
 
 # tithi
-#: ../libpurple/log.c:625
 msgid "Old flat format"
 msgstr "পুরাতন সম্পূর্ণ বিন্যাস"
 
-#: ../libpurple/log.c:850
 msgid "Logging of this conversation failed."
 msgstr "এই কথোপকথোনে সংযুক্তকরণ ব্যর্থ।"
 
-#: ../libpurple/log.c:1292
 msgid "XML"
 msgstr "এক্সএমএল"
 
-#: ../libpurple/log.c:1376
 #, c-format
 msgid ""
 "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
@@ -3149,7 +2201,6 @@
 "<font color=\"#16569E\"><font size=\"2\">(%1s)</font> <b>%2s &3lt;স্বয়ংক্রিয়-"
 "উত্তর&4gt;:</b></font> %5s<br/>\n"
 
-#: ../libpurple/log.c:1378
 #, c-format
 msgid ""
 "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
@@ -3158,51 +2209,42 @@
 "<font color=\"#A82F2F\"><font size=\"2\">(%1s)</font> <b>%2s &3lt;স্বয়ংক্রিয়-"
 "উত্তর&4gt;:</b></font> %5s<br/>\n"
 
-#: ../libpurple/log.c:1436 ../libpurple/log.c:1569
 msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
 msgstr "<font color=\"red\"><b>লগ পথ খুঁজতে অক্ষম</b></font>"
 
-#: ../libpurple/log.c:1448 ../libpurple/log.c:1578
 #, c-format
 msgid "<font color=\"red\"><b>Could not read file: %s</b></font>"
 msgstr "<font color=\"red\"><b>ফাইল পড়তে পারেনি: %s</b></font>"
 
-#: ../libpurple/log.c:1510
 #, c-format
 msgid "(%s) %s <AUTO-REPLY>: %s\n"
 msgstr "(%1s) %2s <AUTO-REPLY>: %3s\n"
 
 # tithi
-#: ../libpurple/plugin.c:362
 #, c-format
 msgid "You are using %s, but this plugin requires %s."
 msgstr "আপনি %1s ব্যবহার করছেন, কিন্তু এই প্লাগইনের %2s প্রয়োজন।"
 
 # tithi
-#: ../libpurple/plugin.c:377
 msgid "This plugin has not defined an ID."
 msgstr "এই প্লাগইন একটি আইডি নির্ধারণ করেনি।"
 
 # tithi
-#: ../libpurple/plugin.c:445
 #, c-format
 msgid "Plugin magic mismatch %d (need %d)"
 msgstr "প্লাগইন ম্যাজিক %1d এর সাথে মিলে না (%2d প্রয়োজন)"
 
 # tithi
-#: ../libpurple/plugin.c:462
 #, c-format
 msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
 msgstr "ABI সংস্করণ %1d এর সাথে মিলে না।%2d.x (%3d.%4d.x প্রয়োজন)"
 
 # tithi
-#: ../libpurple/plugin.c:479
 msgid ""
 "Plugin does not implement all required functions (list_icon, login and close)"
 msgstr ""
 "প্লাগইন সকল প্রয়োজনীয় ফাংশন বাস্তবায়ন করে না (লিস্ট-আইকন (_i), লগইন এবং বন্ধ করুন)"
 
-#: ../libpurple/plugin.c:544
 #, c-format
 msgid ""
 "The required plugin %s was not found. Please install this plugin and try "
@@ -3211,88 +2253,62 @@
 "প্রয়োজনীয় প্লাগইন %s খুঁজে পাওয়া যায়নি। অনুগ্রহ করে এই প্লাগইনটি সংস্থাপন করুন এবং "
 "পুনরায় চেষ্টা করুন।"
 
-#: ../libpurple/plugin.c:549
 msgid "Unable to load the plugin"
 msgstr "প্লাগইনটি লোড করতে অক্ষম"
 
-#: ../libpurple/plugin.c:571
 #, c-format
 msgid "The required plugin %s was unable to load."
 msgstr "প্রয়োজনীয় প্লাগইন %s লোড করতে অক্ষম।"
 
-#: ../libpurple/plugin.c:575
 msgid "Unable to load your plugin."
 msgstr "আপনার প্লাগইনটি লোড করতে অক্ষম।"
 
-#: ../libpurple/plugin.c:665
 #, c-format
 msgid "%s requires %s, but it failed to unload."
 msgstr "%1s এর %2s প্রয়োজন, কিন্তু এটি লোডহীন করতে ব্যর্থ।"
 
-#: ../libpurple/plugins/autoaccept.c:23
 msgid "Autoaccept"
 msgstr "স্বয়ংক্রিয়-গ্রহণ"
 
-#: ../libpurple/plugins/autoaccept.c:25 ../libpurple/plugins/autoaccept.c:26
 msgid "Auto-accept file transfer requests from selected users."
 msgstr "নির্বাচিত ব্যবহারকারীর কাছ থেকে স্বয়ং-গ্রহণ ফাইলের স্থানান্তর অনুরোধ করছে।"
 
-#: ../libpurple/plugins/autoaccept.c:81
 #, c-format
 msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed."
 msgstr "\"%1s\" হতে \"%2s\" স্বয়ং-গৃহীত ফাইল স্থানান্তর সম্পূর্ণ হয়েছে।"
 
-#: ../libpurple/plugins/autoaccept.c:83
 msgid "Autoaccept complete"
 msgstr "স্বয়ং-গ্রহণ সম্পন্ন"
 
-#: ../libpurple/plugins/autoaccept.c:196
 #, c-format
 msgid "When a file-transfer request arrives from %s"
 msgstr "যখন %s থেকে ফাইল-স্থানান্তর অনুরোধ পৌছায়"
 
 # tithi
-#: ../libpurple/plugins/autoaccept.c:198
 msgid "Set Autoaccept Setting"
 msgstr "স্বয়ং-গ্রহণ বিন্যাসন নির্ধারণ করুন"
 
-#: ../libpurple/plugins/autoaccept.c:200
 msgid "_Save"
 msgstr "সংরক্ষণ (_S)"
 
-#: ../libpurple/plugins/autoaccept.c:201 ../libpurple/plugins/idle.c:170
-#: ../libpurple/plugins/idle.c:204 ../libpurple/plugins/idle.c:230
-#: ../libpurple/protocols/oscar/oscar.c:1617
-#: ../libpurple/protocols/oscar/oscar.c:2493
-#: ../libpurple/protocols/oscar/oscar.c:2541
-#: ../libpurple/protocols/oscar/oscar.c:6108
-#: ../libpurple/protocols/oscar/oscar.c:6163
-#: ../libpurple/protocols/oscar/oscar.c:6394
-#: ../libpurple/protocols/oscar/oscar.c:6464 ../libpurple/request.h:1401
-#: ../libpurple/request.h:1411
 msgid "_Cancel"
 msgstr "বাতিল (_C)"
 
 # tithi
-#: ../libpurple/plugins/autoaccept.c:204
 msgid "Ask"
 msgstr "জিজ্ঞাসা করুন"
 
-#: ../libpurple/plugins/autoaccept.c:205
 msgid "Auto Accept"
 msgstr "স্বয়ং গ্রহণ করুন"
 
-#: ../libpurple/plugins/autoaccept.c:206
 msgid "Auto Reject"
 msgstr "স্বয়ং প্রত্যাখ্যান করুন"
 
-#: ../libpurple/plugins/autoaccept.c:221
 msgid "Autoaccept File Transfers..."
 msgstr "স্বয়ংক্রিয়-গ্রহণ ফাইল স্থানান্তর করে..."
 
 # tithi
 #. XXX: Is there a better way than this? There really should be.
-#: ../libpurple/plugins/autoaccept.c:251
 msgid ""
 "Path to save the files in\n"
 "(Please provide the full path)"
@@ -3300,12 +2316,10 @@
 "ফাইলটি সংরক্ষণ করার পথ\n"
 "(অনুগ্রহ করে সম্পূর্ণ পথ প্রদান করুন)"
 
-#: ../libpurple/plugins/autoaccept.c:256
 msgid "Automatically reject from users not in buddy list"
 msgstr "বন্ধু তালিকার বহির্ভুত ব্যবহারকারীগণ হতে স্বয়ংক্রিয় ভাবে বাতিল করুন"
 
 # tithi
-#: ../libpurple/plugins/autoaccept.c:260
 msgid ""
 "Notify with a popup when an autoaccepted file transfer is complete\n"
 "(only when there's no conversation with the sender)"
@@ -3313,22 +2327,15 @@
 "একটি স্বয়ং-গৃহীত ফাইল স্থানান্তর সম্পূর্ণ হলে পপ-আপ দ্বারা অবগত করুন\n"
 "(শুধুমাত্র যখন প্রেরকের সঙ্গে কোনো কথোপকথন হয় না)"
 
-#: ../libpurple/plugins/autoaccept.c:265
 msgid "Create a new directory for each user"
 msgstr "প্রত্যেক ব্যবহারকারীর জন্য একটি নির্দেশিকা তৈরী করুন"
 
-#: ../libpurple/plugins/buddynote.c:46 ../libpurple/protocols/msn/msn.c:2094
-#: ../libpurple/protocols/msn/msn.c:2124
-#: ../libpurple/protocols/msnp9/msn.c:1800
-#: ../libpurple/protocols/msnp9/msn.c:1830
 msgid "Notes"
 msgstr "নোট"
 
-#: ../libpurple/plugins/buddynote.c:47
 msgid "Enter your notes below..."
 msgstr "আপনার নোটগুলো নীচে প্রবেশ করান..."
 
-#: ../libpurple/plugins/buddynote.c:65
 msgid "Edit Notes..."
 msgstr "নোট সম্পাদন করুন..."
 
@@ -3340,20 +2347,17 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/buddynote.c:90 ../pidgin/plugins/gtkbuddynote.c:74
 msgid "Buddy Notes"
 msgstr "বন্ধু নোট"
 
 # tithi
 #. *< name
 #. *< version
-#: ../libpurple/plugins/buddynote.c:92 ../pidgin/plugins/gtkbuddynote.c:76
 msgid "Store notes on particular buddies."
 msgstr "নির্দিষ্ট বন্ধুদের কাছে নোট সলরক্ষণ করুন"
 
 # tithi
 #. *< summary
-#: ../libpurple/plugins/buddynote.c:93 ../pidgin/plugins/gtkbuddynote.c:77
 msgid "Adds the option to store notes for buddies on your buddy list."
 msgstr "আপনার বন্ধু তালিকায় বন্ধুদের জন্য নোট সংরক্ষণ করতে পছন্দ যোগ করে।"
 
@@ -3363,7 +2367,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/ciphertest.c:264
 msgid "Cipher Test"
 msgstr "সাইফার পরীক্ষা"
 
@@ -3372,7 +2375,6 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/ciphertest.c:267 ../libpurple/plugins/ciphertest.c:269
 msgid "Tests the ciphers that ship with libpurple."
 msgstr "লিবপার্পল সহ সিপ করে এমন সাইফারগুলো পরীক্ষা করে।"
 
@@ -3382,7 +2384,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/dbus-example.c:155
 msgid "DBus Example"
 msgstr "DBus উদাহরণ"
 
@@ -3390,8 +2391,6 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/dbus-example.c:158
-#: ../libpurple/plugins/dbus-example.c:160
 msgid "DBus Plugin Example"
 msgstr "DBus প্লাগইন এর উদাহরণ"
 
@@ -3401,7 +2400,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/filectl.c:248
 msgid "File Control"
 msgstr "ফাইল নিয়ন্ত্রণ করুন"
 
@@ -3409,50 +2407,38 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/filectl.c:251 ../libpurple/plugins/filectl.c:253
 msgid "Allows control by entering commands in a file."
 msgstr "ফাইলে নির্দেশসমূহ প্রবেশ করার মাধ্যমে নিয়ন্ত্রণ অনুমোদন করুন।"
 
-#: ../libpurple/plugins/idle.c:158 ../libpurple/plugins/idle.c:218
 msgid "Minutes"
 msgstr "মিনিট"
 
 #. This is a cultural reference.  Dy'er Mak'er is a song by Led Zeppelin.
 #. If that doesn't translate well into your language, drop the 's before translating.
-#: ../libpurple/plugins/idle.c:165 ../libpurple/plugins/idle.c:199
-#: ../libpurple/plugins/idle.c:225 ../libpurple/plugins/idle.c:318
 msgid "I'dle Mak'er"
 msgstr "অ'লস তৈরীকার'ক"
 
-#: ../libpurple/plugins/idle.c:166 ../libpurple/plugins/idle.c:258
 msgid "Set Account Idle Time"
 msgstr "একাউন্টের অলস সময় নির্ধারণ করুন"
 
-#: ../libpurple/plugins/idle.c:169 ../libpurple/plugins/idle.c:229
 msgid "_Set"
 msgstr "নির্ধারণ (_S)"
 
-#: ../libpurple/plugins/idle.c:184
 msgid "None of your accounts are idle."
 msgstr "আপনার কোনো একাউন্ট অলস নেই।"
 
-#: ../libpurple/plugins/idle.c:200 ../libpurple/plugins/idle.c:262
 msgid "Unset Account Idle Time"
 msgstr "একাউন্টের অলস সময় অপসারণ করুন"
 
-#: ../libpurple/plugins/idle.c:203
 msgid "_Unset"
 msgstr "অনির্ধারণ করুন (_U)"
 
-#: ../libpurple/plugins/idle.c:226 ../libpurple/plugins/idle.c:266
 msgid "Set Idle Time for All Accounts"
 msgstr "সব একাউন্টের জন্য অলস সময় নির্ধারণ করুন"
 
-#: ../libpurple/plugins/idle.c:271
 msgid "Unset Idle Time for All Idled Accounts"
 msgstr "সব অলস একাউন্টের জন্য অলস সময় অপসারণ করুন"
 
-#: ../libpurple/plugins/idle.c:320 ../libpurple/plugins/idle.c:321
 msgid "Allows you to hand-configure how long you've been idle"
 msgstr "আপনি কতক্ষণ অলস থাকবেন তা আপনাকে নিজ হাতে-বিন্যাস করতে অনুমোদন করে"
 
@@ -3462,19 +2448,16 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/ipc-test-client.c:87
 msgid "IPC Test Client"
 msgstr "IPC পরীক্ষণ ক্লায়েন্ট"
 
 #. *< name
 #. *< version
 #. *  summary
-#: ../libpurple/plugins/ipc-test-client.c:90
 msgid "Test plugin IPC support, as a client."
 msgstr "ক্লায়েন্ট হিসেবে, প্লাগইনের IPC সমর্থন পরীক্ষা করুন।"
 
 #. *  description
-#: ../libpurple/plugins/ipc-test-client.c:92
 msgid ""
 "Test plugin IPC support, as a client. This locates the server plugin and "
 "calls the commands registered."
@@ -3488,39 +2471,32 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/ipc-test-server.c:74
 msgid "IPC Test Server"
 msgstr "IPC পরীক্ষণ সার্ভার"
 
 #. *< name
 #. *< version
 #. *  summary
-#: ../libpurple/plugins/ipc-test-server.c:77
 msgid "Test plugin IPC support, as a server."
 msgstr "সার্ভার হিসেবে, প্লাগইনের IPC সমর্থন পরীক্ষা করুন।"
 
 #. *  description
-#: ../libpurple/plugins/ipc-test-server.c:79
 msgid "Test plugin IPC support, as a server. This registers the IPC commands."
 msgstr ""
 "সার্ভার হিসেবে, প্লাগইনের IPC সমর্থন পরীক্ষা করুন। এটি IPC নির্দেশগুলো নিবন্ধন করে।"
 
-#: ../libpurple/plugins/joinpart.c:232
 msgid "Join/Part Hiding Configuration"
 msgstr "লুকানো বিন্যাসকরণ যুক্ত/বিভক্ত করুন"
 
 # tithi
-#: ../libpurple/plugins/joinpart.c:236
 msgid "Minimum Room Size"
 msgstr "নূন্যতম কক্ষের আকার"
 
 # tithi
-#: ../libpurple/plugins/joinpart.c:241
 msgid "User Inactivity Timeout (in minutes)"
 msgstr "ব্যবহারকারীর নিষ্ক্রয়তার সময়সীমা উত্তীর্ণ (মিনিটে)"
 
 # tithi
-#: ../libpurple/plugins/joinpart.c:246
 msgid "Apply hiding rules to buddies"
 msgstr "বন্ধুদের উপর লুকানোর নিয়ম প্রয়োগ করুন"
 
@@ -3531,7 +2507,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/joinpart.c:276
 msgid "Join/Part Hiding"
 msgstr "যুক্ত/বিভক্ত গোপনকরণ"
 
@@ -3539,13 +2514,11 @@
 #. *< name
 #. *< version
 #. *  summary
-#: ../libpurple/plugins/joinpart.c:279
 msgid "Hides extraneous join/part messages."
 msgstr "অসংশ্লিষ্ট যুক্ত/বিভক্ত বার্তাগুলো গোপন করে।"
 
 # tithi
 #. *  description
-#: ../libpurple/plugins/joinpart.c:281
 msgid ""
 "This plugin hides join/part messages in large rooms, except for those users "
 "actively taking part in a conversation."
@@ -3557,69 +2530,52 @@
 #. * offset is way off.  The user should never really see it, but
 #. * it's here just in case.  The parens are to make it clear it's
 #. * not a real timezone.
-#: ../libpurple/plugins/log_reader.c:499
 msgid "(UTC)"
 msgstr "(UTC)"
 
-#: ../libpurple/plugins/log_reader.c:1558
 msgid "User is offline."
 msgstr "ব্যবহারকারী অফলাইনে।"
 
-#: ../libpurple/plugins/log_reader.c:1564
 msgid "Auto-response sent:"
 msgstr "স্বয়ং-জবাব পাঠানো হয়েছে:"
 
-#: ../libpurple/plugins/log_reader.c:1579
-#: ../libpurple/plugins/log_reader.c:1582
-#: ../libpurple/plugins/statenotify.c:93
 #, c-format
 msgid "%s has signed off."
 msgstr "%s অফলাইনে।"
 
-#: ../libpurple/plugins/log_reader.c:1603
 msgid "One or more messages may have been undeliverable."
 msgstr "এক বা একাধিক বার্তা পাঠানো যাচ্ছে না।"
 
-#: ../libpurple/plugins/log_reader.c:1613
 msgid "You were disconnected from the server."
 msgstr "আপনি সার্ভার থেকে বিচ্ছিন্ন ছিলেন।"
 
-#: ../libpurple/plugins/log_reader.c:1621
 msgid ""
 "You are currently disconnected. Messages will not be received unless you are "
 "logged in."
 msgstr ""
 "আপনি বর্তমানে বিচ্ছিন্ন। আপনি লগ ইন না করা পর্যন্ত বার্তাসমূহ গ্রহণ করা হবে না।"
 
-#: ../libpurple/plugins/log_reader.c:1636
 msgid "Message could not be sent because the maximum length was exceeded."
 msgstr "সর্বোচ্চ সীমা অতিক্রান্ত হওয়ায় বার্তা পাঠানো যাচ্ছে না।"
 
-#: ../libpurple/plugins/log_reader.c:1641
 msgid "Message could not be sent."
 msgstr "বার্তা পাঠানো সম্ভব হয়নি।"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2723
-#: ../libpurple/plugins/log_reader.c:2879
 msgid "Adium"
 msgstr "অডিয়াম"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2736
-#: ../libpurple/plugins/log_reader.c:2884
 msgid "Fire"
 msgstr "আগুন"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2748
-#: ../libpurple/plugins/log_reader.c:2888
 msgid "Messenger Plus!"
 msgstr "বার্তাবাহক প্লাস!"
 
@@ -3627,24 +2583,18 @@
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2762
-#: ../libpurple/plugins/log_reader.c:2893
 msgid "QIP"
 msgstr "QIP"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2774
-#: ../libpurple/plugins/log_reader.c:2897
 msgid "MSN Messenger"
 msgstr "এমএসএন বার্তাবাহক"
 
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2786
-#: ../libpurple/plugins/log_reader.c:2901
 msgid "Trillian"
 msgstr "ট্রিলিয়ান"
 
@@ -3652,27 +2602,21 @@
 #. The names of IM clients are marked for translation at the request of
 #. translators who wanted to transliterate them.  Many translators
 #. choose to leave them alone.  Choose what's best for your language.
-#: ../libpurple/plugins/log_reader.c:2798
-#: ../libpurple/plugins/log_reader.c:2905
 msgid "aMSN"
 msgstr "aMSN"
 
 #. Add general preferences.
-#: ../libpurple/plugins/log_reader.c:2861
 msgid "General Log Reading Configuration"
 msgstr "সাধারণ লগ পড়ার বিন্যাসন"
 
-#: ../libpurple/plugins/log_reader.c:2865
 msgid "Fast size calculations"
 msgstr "দ্রুত আকার গণনাসমূহ"
 
 # fix me- tithi
-#: ../libpurple/plugins/log_reader.c:2869
 msgid "Use name heuristics"
 msgstr "নাম হিউরিস্টিক ব্যবহার করুন"
 
 #. Add Log Directory preferences.
-#: ../libpurple/plugins/log_reader.c:2875
 msgid "Log Directory"
 msgstr "লগ নির্দেশিকা"
 
@@ -3682,19 +2626,16 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/log_reader.c:2934
 msgid "Log Reader"
 msgstr "লগ পাঠক"
 
 #. *< name
 #. *< version
 #. * summary
-#: ../libpurple/plugins/log_reader.c:2938
 msgid "Includes other IM clients' logs in the log viewer."
 msgstr "লগ প্রদর্শকে অন্যান্য আইএম ক্লায়েন্টদের লগসমূহ অন্তর্ভুক্ত করে।"
 
 #. * description
-#: ../libpurple/plugins/log_reader.c:2942
 msgid ""
 "When viewing logs, this plugin will include logs from other IM clients. "
 "Currently, this includes Adium, MSN Messenger, and Trillian.\n"
@@ -3708,22 +2649,17 @@
 "সতর্কতা: এই প্লাগইনটি এখনও আলফা কোড এবং প্রায়সই নষ্ট হতে পারে।  আপনার নিজ "
 "দ্বায়িত্বে ব্যবহার করুন!"
 
-#: ../libpurple/plugins/mono/loader/mono.c:217
 msgid "Mono Plugin Loader"
 msgstr "মোনো প্লাগইন লোডকারী"
 
 # sam: mono?
-#: ../libpurple/plugins/mono/loader/mono.c:219
-#: ../libpurple/plugins/mono/loader/mono.c:220
 msgid "Loads .NET plugins with Mono."
 msgstr "মোনো এর সাথে .NET প্লাগইন লোড করে"
 
 # tithi
-#: ../libpurple/plugins/newline.c:57
 msgid "Add new line in IMs"
 msgstr "আইএম এ নতুন লাইন যোগ করুন"
 
-#: ../libpurple/plugins/newline.c:61
 msgid "Add new line in Chats"
 msgstr "আড্ডায় নতুন লাইন যোগ করুন"
 
@@ -3736,19 +2672,16 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/newline.c:104
 msgid "New Line"
 msgstr "নতুন লাইন"
 
 #. *< name
 #. *< version
-#: ../libpurple/plugins/newline.c:106
 msgid "Prepends a newline to displayed message."
 msgstr "প্রদর্শিত বার্তায় নতুন-লাইন যোগ করে।"
 
 # tithi
 #. *< summary
-#: ../libpurple/plugins/newline.c:107
 msgid ""
 "Prepends a newline to messages so that the rest of the message appears below "
 "the username in the conversation window."
@@ -3757,17 +2690,14 @@
 "অবশিষ্ট বার্তাসমূহ উপস্থিত হয়।"
 
 # tithi
-#: ../libpurple/plugins/offlinemsg.c:23
 msgid "Offline Message Emulation"
 msgstr "অফলাইন বার্তা অনুকরন করুন"
 
 # tithi
-#: ../libpurple/plugins/offlinemsg.c:25 ../libpurple/plugins/offlinemsg.c:26
 msgid "Save messages sent to an offline user as pounce."
 msgstr "অফলাইন ব্যবহারকারীকে পাঠানো বার্তা পাউন্স হিসেবে সংরক্ষণ করুন।"
 
 # tithi
-#: ../libpurple/plugins/offlinemsg.c:95
 msgid ""
 "The rest of the messages will be saved as pounce. You can edit/delete the "
 "pounce from the `Buddy Pounce' dialog."
@@ -3775,7 +2705,6 @@
 "অবশিষ্ট বার্তাগুলো পাউন্স হিসেবে সংরক্ষিত হবে। আপনি 'বন্ধু পাউন্স' সংলাপ হতে পাউন্স "
 "সম্পাদনা/মুছে ফেলতে পারেন।"
 
-#: ../libpurple/plugins/offlinemsg.c:156
 #, c-format
 msgid ""
 "\"%s\" is currently offline. Do you want to save the rest of the messages in "
@@ -3784,52 +2713,24 @@
 "\"%s\" বর্তমানে অফলাইনে আছেন। আপনি কি অবশিষ্ট বার্তাগুলো পাউন্সে সংরক্ষণ করতে চান "
 "এবং \"%s\" যখন পুনরায় লগইন করে তখন তাদেরকে স্বয়ংক্রিয় ভাবে পাঠাতে চান?"
 
-#: ../libpurple/plugins/offlinemsg.c:160
 msgid "Offline Message"
 msgstr "অফলাইন বার্তা"
 
 # tithi
-#: ../libpurple/plugins/offlinemsg.c:161
 msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
 msgstr "আপনি 'বন্ধু পাউন্স' সংলাপ হতে পাউন্স সম্পাদনা/মুছে ফেলতে পারেন।"
 
-#: ../libpurple/plugins/offlinemsg.c:165
-#: ../libpurple/protocols/msn/dialog.c:141
-#: ../libpurple/protocols/msn/msn.c:796 ../libpurple/protocols/msn/msn.c:799
-#: ../libpurple/protocols/msnp9/dialog.c:133
-#: ../libpurple/protocols/msnp9/msn.c:566
-#: ../libpurple/protocols/msnp9/msn.c:582
-#: ../libpurple/protocols/novell/novell.c:1929
-#: ../libpurple/protocols/silc/buddy.c:317
-#: ../libpurple/protocols/silc/pk.c:113 ../libpurple/protocols/silc/wb.c:308
-#: ../libpurple/protocols/silc10/buddy.c:314
-#: ../libpurple/protocols/silc10/pk.c:119
-#: ../libpurple/protocols/silc10/wb.c:307 ../pidgin/gtkrequest.c:270
 msgid "Yes"
 msgstr "হ্যাঁ"
 
-#: ../libpurple/plugins/offlinemsg.c:166
-#: ../libpurple/protocols/msn/dialog.c:142
-#: ../libpurple/protocols/msn/msn.c:796 ../libpurple/protocols/msn/msn.c:799
-#: ../libpurple/protocols/msnp9/dialog.c:134
-#: ../libpurple/protocols/msnp9/msn.c:566
-#: ../libpurple/protocols/msnp9/msn.c:582
-#: ../libpurple/protocols/novell/novell.c:1930
-#: ../libpurple/protocols/silc/buddy.c:318
-#: ../libpurple/protocols/silc/pk.c:114 ../libpurple/protocols/silc/wb.c:309
-#: ../libpurple/protocols/silc10/buddy.c:315
-#: ../libpurple/protocols/silc10/pk.c:120
-#: ../libpurple/protocols/silc10/wb.c:308 ../pidgin/gtkrequest.c:271
 msgid "No"
 msgstr "না"
 
 # tithi
-#: ../libpurple/plugins/offlinemsg.c:193
 msgid "Save offline messages in pounce"
 msgstr "অফলাইন বার্তা পাউন্সে সংরক্ষণ করুন"
 
 # tithi
-#: ../libpurple/plugins/offlinemsg.c:197
 msgid "Do not ask. Always save in pounce."
 msgstr "জিজ্ঞাসা করবেন না। সবসময় পাউন্সে সংরক্ষণ করুন।"
 
@@ -3839,28 +2740,23 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/perl/perl.c:656
 msgid "Perl Plugin Loader"
 msgstr "পার্ল প্লাগইন লোডকারী"
 
 #. *< name
 #. *< version
 #. *< summary
-#: ../libpurple/plugins/perl/perl.c:658 ../libpurple/plugins/perl/perl.c:659
 msgid "Provides support for loading perl plugins."
 msgstr "পার্ল প্লাগইন লোড করার জন্য সমর্থন করে।"
 
 # tithi
-#: ../libpurple/plugins/psychic.c:20
 msgid "Psychic Mode"
 msgstr "সাইকিক পরিমন্ডল"
 
 # fix me tithi
-#: ../libpurple/plugins/psychic.c:21
 msgid "Psychic mode for incoming conversation"
 msgstr "আগত কথোপকথোনের জন্য সাইকিক পরিমন্ডল"
 
-#: ../libpurple/plugins/psychic.c:22
 msgid ""
 "Causes conversation windows to appear as other users begin to message you.  "
 "This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
@@ -3869,24 +2765,19 @@
 "হয়।  এটি AIM, ICQ, XMPP, Sametime, এবং Yahoo এর জন্য কাজ করে!"
 
 # tithi
-#: ../libpurple/plugins/psychic.c:72
 msgid "You feel a disturbance in the force..."
 msgstr "আপনি গতিতে একটি অসুবিধা অনুভব করছেন..."
 
-#: ../libpurple/plugins/psychic.c:91
 msgid "Only enable for users on the buddy list"
 msgstr "শুধুমাত্র বন্ধু তালিকার ব্যবহারকারীর জন্য সক্রিয় করুন"
 
-#: ../libpurple/plugins/psychic.c:96
 msgid "Disable when away"
 msgstr "দূরে থাকার সময় নিষ্ক্রিয় করুন"
 
 # tithi
-#: ../libpurple/plugins/psychic.c:100
 msgid "Display notification message in conversations"
 msgstr "কথোপকথনে বিজ্ঞপ্তি বার্তা প্রদর্শন করুন"
 
-#: ../libpurple/plugins/psychic.c:105
 msgid "Raise psychic conversations"
 msgstr "সাইকিক কথাবার্তা হচ্ছে"
 
@@ -3896,7 +2787,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/signals-test.c:778
 msgid "Signals Test"
 msgstr "সংকেতসমূহের পরীক্ষা"
 
@@ -3904,8 +2794,6 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/signals-test.c:781
-#: ../libpurple/plugins/signals-test.c:783
 msgid "Test to see that all signals are working properly."
 msgstr "সকল সংকেত সঠিকভাবে কাজ করছে কিনা তা দেখতে পরীক্ষা করুন।"
 
@@ -3915,7 +2803,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/simple.c:37
 msgid "Simple Plugin"
 msgstr "সহজ প্লাগইন"
 
@@ -3923,14 +2810,11 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/simple.c:40 ../libpurple/plugins/simple.c:42
 msgid "Tests to see that most things are working."
 msgstr "অধিকাংশ জিনিস সঠিকভাবে কাজ করছে কিনা তা দেখতে পরীক্ষা করুন।"
 
 # tithi
 #. Scheme name
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:908
-#: ../libpurple/plugins/ssl/ssl-nss.c:857
 msgid "X.509 Certificates"
 msgstr "X.৫০৯ প্রত্যয়ন পত্র"
 
@@ -3940,7 +2824,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:984
 msgid "GNUTLS"
 msgstr "GNUTLS"
 
@@ -3948,8 +2831,6 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:987
-#: ../libpurple/plugins/ssl/ssl-gnutls.c:989
 msgid "Provides SSL support through GNUTLS."
 msgstr "GNUTLS এর মাধ্যমে এসএসএল সমর্থন প্রদান করে।"
 
@@ -3959,7 +2840,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/ssl/ssl-nss.c:934
 msgid "NSS"
 msgstr "NSS"
 
@@ -3967,8 +2847,6 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/ssl/ssl-nss.c:937
-#: ../libpurple/plugins/ssl/ssl-nss.c:939
 msgid "Provides SSL support through Mozilla NSS."
 msgstr "মজিলা NSS এর মাধ্যমে SSL সমর্থন প্রদান করে।"
 
@@ -3978,7 +2856,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/ssl/ssl.c:94
 msgid "SSL"
 msgstr "SSL"
 
@@ -3986,48 +2863,38 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/ssl/ssl.c:97 ../libpurple/plugins/ssl/ssl.c:99
 msgid "Provides a wrapper around SSL support libraries."
 msgstr "এসএসএল সমর্থন লাইব্রেরিসমূহের চারদিকে মোড়ক প্রদান করে।"
 
-#: ../libpurple/plugins/statenotify.c:63
 #, c-format
 msgid "%s is no longer away."
 msgstr "%s আর দূরে থাকবে না।"
 
-#: ../libpurple/plugins/statenotify.c:65
 #, c-format
 msgid "%s has gone away."
 msgstr "%s দূরে চলে গেছে।"
 
-#: ../libpurple/plugins/statenotify.c:75
 #, c-format
 msgid "%s has become idle."
 msgstr "%s এখন অলস।"
 
-#: ../libpurple/plugins/statenotify.c:77
 #, c-format
 msgid "%s is no longer idle."
 msgstr "%s আর অলস থাকবে না।"
 
-#: ../libpurple/plugins/statenotify.c:86
 #, c-format
 msgid "%s has signed on."
 msgstr "%s এখন অনলাইন।"
 
-#: ../libpurple/plugins/statenotify.c:104
 msgid "Notify When"
 msgstr "জানাবে যখন"
 
-#: ../libpurple/plugins/statenotify.c:107
 msgid "Buddy Goes _Away"
 msgstr "বন্ধু অনুপস্থিত (_A)"
 
-#: ../libpurple/plugins/statenotify.c:110
 msgid "Buddy Goes _Idle"
 msgstr "বন্ধু অলস (_I)"
 
-#: ../libpurple/plugins/statenotify.c:113
 msgid "Buddy _Signs On/Off"
 msgstr "বন্ধু সাইন অন/অফ (_S)"
 
@@ -4037,7 +2904,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../libpurple/plugins/statenotify.c:161
 msgid "Buddy State Notification"
 msgstr "বন্ধুর অবস্থার প্রজ্ঞাপন"
 
@@ -4045,8 +2911,6 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/plugins/statenotify.c:164
-#: ../libpurple/plugins/statenotify.c:167
 msgid ""
 "Notifies in a conversation window when a buddy goes or returns from away or "
 "idle."
@@ -4054,16 +2918,13 @@
 "যখন বন্ধু অনুপস্থিত বা অলস থাকে বা এইসব থেকে ফিরে আসে তখন কথোপকথন উইন্ডোতে "
 "প্রজ্ঞাপন পাঠায়।"
 
-#: ../libpurple/plugins/tcl/tcl.c:423
 msgid "Tcl Plugin Loader"
 msgstr "টিসিএল প্লাগইন লোডকারী"
 
-#: ../libpurple/plugins/tcl/tcl.c:425 ../libpurple/plugins/tcl/tcl.c:426
 msgid "Provides support for loading Tcl plugins"
 msgstr "টিসিএল প্লাগইন লোড করার জন্য সমর্থন প্রদান করে"
 
 # tithi
-#: ../libpurple/plugins/tcl/tcl.c:509
 msgid ""
 "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
 "install ActiveTCL from http://www.activestate.com\n"
@@ -4072,7 +2933,6 @@
 "http://www.activestate.com থেকে সক্রিয় TCL সংস্থাপন করুন\n"
 
 # tithi
-#: ../libpurple/protocols/bonjour/bonjour.c:93
 msgid ""
 "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
 "pidgin.im/BonjourWindows for more information."
@@ -4080,58 +2940,25 @@
 "উইন্ডোজ টুলকিটের জন্য অ্যাপল বোনজুর খুঁজে পাওয়া যায়নি, আরও তথ্যের জন্য http://d."
 "pidgin.im/BonjourWindows এর FAQ দেখুন।"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:112
 msgid "Unable to listen for incoming IM connections\n"
 msgstr "আগত আইএম সংযোগসূমহের জন্য শুনতে অক্ষম\n"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:139
 msgid ""
 "Unable to establish connection with the local mDNS server.  Is it running?"
 msgstr "স্থানীয় এমডিএনএস সার্ভারের সাথে সংযোগ স্থাপনে ব্যর্থ। এটা কি চলছে?"
 
-#. Creating the options for the protocol
-#: ../libpurple/protocols/bonjour/bonjour.c:381
-#: ../libpurple/protocols/bonjour/bonjour.c:709
-#: ../libpurple/protocols/gg/gg.c:579
-#: ../libpurple/protocols/jabber/jabber.c:1087
 msgid "First name"
 msgstr "প্রথম নাম"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:383
-#: ../libpurple/protocols/bonjour/bonjour.c:712
-#: ../libpurple/protocols/gg/gg.c:574
-#: ../libpurple/protocols/jabber/jabber.c:1091
 msgid "Last name"
 msgstr "শেষ নাম"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:387
-#: ../libpurple/protocols/bonjour/bonjour.c:715
-#: ../libpurple/protocols/gg/gg.c:441
-#: ../libpurple/protocols/jabber/buddy.c:323
-#: ../libpurple/protocols/jabber/buddy.c:1339
-#: ../libpurple/protocols/jabber/buddy.c:1352
-#: ../libpurple/protocols/jabber/buddy.c:2245
-#: ../libpurple/protocols/jabber/jabber.c:1079
-#: ../libpurple/protocols/qq/buddy_info.c:121
-#: ../libpurple/protocols/silc/ops.c:1055
-#: ../libpurple/protocols/silc/silc.c:1005
-#: ../libpurple/protocols/silc/silc.c:1246
-#: ../libpurple/protocols/silc/util.c:561
-#: ../libpurple/protocols/silc10/ops.c:1075
-#: ../libpurple/protocols/silc10/silc.c:706
-#: ../libpurple/protocols/silc10/silc.c:947
-#: ../libpurple/protocols/silc10/util.c:555
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1061
 msgid "Email"
 msgstr "ই-মেইল"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:390
-#: ../libpurple/protocols/bonjour/bonjour.c:718
 msgid "AIM Account"
 msgstr "এআইএম একাউন্ট"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:393
-#: ../libpurple/protocols/bonjour/bonjour.c:721
 msgid "XMPP Account"
 msgstr "XMPP একাউন্ট"
 
@@ -4145,389 +2972,256 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/bonjour/bonjour.c:526
-#: ../libpurple/protocols/bonjour/bonjour.c:528
 msgid "Bonjour Protocol Plugin"
 msgstr "Bonjour প্রটোকল প্লাগইন"
 
-#: ../libpurple/protocols/bonjour/bonjour.c:668
 msgid "Purple Person"
 msgstr "পার্পেল ব্যক্তি"
 
-#: ../libpurple/protocols/bonjour/bonjour.h:33
+#. Creating the options for the protocol
+#, fuzzy
+msgid "Local Port"
+msgstr "এলাকা"
+
 msgid "Bonjour"
 msgstr "Bonjour"
 
-#: ../libpurple/protocols/bonjour/jabber.c:386
 #, c-format
 msgid "%s has closed the conversation."
 msgstr "%s কথোপকথন বন্ধ করে দিয়েছে।"
 
-#: ../libpurple/protocols/bonjour/jabber.c:478
-#: ../libpurple/protocols/bonjour/jabber.c:543
-#: ../libpurple/protocols/bonjour/jabber.c:588
-#: ../libpurple/protocols/bonjour/jabber.c:759
-#: ../libpurple/protocols/bonjour/jabber.c:777
 msgid "Unable to send the message, the conversation couldn't be started."
 msgstr "বার্তা পাঠাতে অক্ষম, কথোপকথন শুরু হতে পারে নি।"
 
-#: ../libpurple/protocols/bonjour/jabber.c:684
 msgid "Cannot open socket"
 msgstr "সকেট খোলা যাচ্ছে না"
 
-#: ../libpurple/protocols/bonjour/jabber.c:712
 msgid "Could not bind socket to port"
 msgstr "পোর্টের সাথে সকেটকে সংযুক্ত করা যায়নি"
 
-#: ../libpurple/protocols/bonjour/jabber.c:722
 msgid "Could not listen on socket"
 msgstr "সকেট এ শোনা যাচ্ছে না"
 
 # tithi
-#: ../libpurple/protocols/bonjour/mdns_win32.c:110
 msgid "Error communicating with local mDNSResponder."
 msgstr "স্থানীয় mDNSResponder এর সঙ্গে যোগাযোগে ত্রুটি।"
 
-#: ../libpurple/protocols/gg/gg.c:75 ../libpurple/proxy.c:2139
 msgid "Invalid proxy settings"
 msgstr "অবৈধ প্রক্সি বিন্যাসনসমূহ"
 
-#: ../libpurple/protocols/gg/gg.c:76 ../libpurple/proxy.c:2139
 msgid ""
 "Either the host name or port number specified for your given proxy type is "
 "invalid."
 msgstr "আপনার প্রদত্ত প্রক্সির ধরনের জন্য উল্লেখিত হোস্ট নাম বা পোর্ট নম্বর অবৈধ।"
 
-#: ../libpurple/protocols/gg/gg.c:110 ../libpurple/protocols/gg/gg.c:132
-#: ../libpurple/protocols/gg/gg.c:171
 msgid "Token Error"
 msgstr "টোকেন ত্রুটি"
 
-#: ../libpurple/protocols/gg/gg.c:111 ../libpurple/protocols/gg/gg.c:133
-#: ../libpurple/protocols/gg/gg.c:172
 msgid "Unable to fetch the token.\n"
 msgstr "টোকেন আনতে অক্ষম।\n"
 
-#: ../libpurple/protocols/gg/gg.c:249 ../libpurple/protocols/gg/gg.c:256
-#: ../libpurple/protocols/gg/gg.c:262
 msgid "Save Buddylist..."
 msgstr "বন্ধুর তালিকা সংরক্ষণ করুন..."
 
-#: ../libpurple/protocols/gg/gg.c:250
 msgid "Your buddylist is empty, nothing was written to the file."
 msgstr "আপনার বন্ধু তালিকাটি ফাঁকা, ফাইলে কিছুই লেখা ছিল না।"
 
-#: ../libpurple/protocols/gg/gg.c:257
 msgid "Buddylist saved successfully!"
 msgstr "বন্ধু তালিকা সফলভাবে সংরক্ষিত হয়েছে!"
 
-#: ../libpurple/protocols/gg/gg.c:260
 #, c-format
 msgid "Couldn't write buddy list for %s to %s"
 msgstr "%1s এর জন্য %2s এ বন্ধুর তালিকা লিখতে পারেনি।"
 
-#: ../libpurple/protocols/gg/gg.c:281 ../libpurple/protocols/gg/gg.c:282
 msgid "Couldn't load buddylist"
 msgstr "বন্ধু-তালিকা লোড করা যায়নি।"
 
-#: ../libpurple/protocols/gg/gg.c:298
 msgid "Load Buddylist..."
 msgstr "বন্ধুর-তালিকা লোড করুন..."
 
-#: ../libpurple/protocols/gg/gg.c:299
 msgid "Buddylist loaded successfully!"
 msgstr "বন্ধু-তালিকা সফলভাবে লোড করা হয়েছে।"
 
-#: ../libpurple/protocols/gg/gg.c:310
 msgid "Save buddylist..."
 msgstr "বন্ধু-তালিকা সংরক্ষণ করুন..."
 
-#: ../libpurple/protocols/gg/gg.c:320 ../libpurple/protocols/gg/gg.c:2206
 msgid "Load buddylist from file..."
 msgstr "ফাইল থেকে বন্ধু-তালিকা লোড করুন..."
 
-#: ../libpurple/protocols/gg/gg.c:353
 msgid "Fill in the registration fields."
 msgstr "নিবন্ধন ক্ষেত্রে পূরণ করুন।"
 
-#: ../libpurple/protocols/gg/gg.c:360
 msgid "Passwords do not match."
 msgstr "গুপ্তসংকেত মিলে না।"
 
-#: ../libpurple/protocols/gg/gg.c:370
 msgid "Unable to register new account. Error occurred.\n"
 msgstr "নতুন একাউন্ট নিবন্ধন করতে ব্যর্থ। ত্রুটি দেখা দিয়েছে।\n"
 
-#: ../libpurple/protocols/gg/gg.c:383
 msgid "New Gadu-Gadu Account Registered"
 msgstr "নতুন গাদু-গাদু একাউন্ট নিবন্ধন করা হয়েছে"
 
-#: ../libpurple/protocols/gg/gg.c:384
 msgid "Registration completed successfully!"
 msgstr "নিবন্ধন সফলভাবে শেষ হয়েছে!"
 
-#: ../libpurple/protocols/gg/gg.c:446 ../libpurple/protocols/gg/gg.c:714
-#: ../libpurple/protocols/jabber/jabber.c:1062
-#: ../libpurple/protocols/jabber/jabber.c:1065
-#: ../libpurple/protocols/jabber/jabber.c:1957
 msgid "Password"
 msgstr "গুপ্তসংকেত"
 
-#: ../libpurple/protocols/gg/gg.c:451 ../libpurple/protocols/gg/gg.c:719
 msgid "Password (retype)"
 msgstr "গুপ্তসংকেত (পুনরায় টাইপ করুন)"
 
-#: ../libpurple/protocols/gg/gg.c:456 ../libpurple/protocols/gg/gg.c:724
 msgid "Enter current token"
 msgstr "বর্তমান টোকেন প্রবেশ করান"
 
-#: ../libpurple/protocols/gg/gg.c:462 ../libpurple/protocols/gg/gg.c:730
 msgid "Current token"
 msgstr "বর্তমান টোকেন"
 
-#: ../libpurple/protocols/gg/gg.c:466 ../libpurple/protocols/gg/gg.c:467
 msgid "Register New Gadu-Gadu Account"
 msgstr "নতুন গাদু-গাদু একাউন্ট নিবন্ধন করুন"
 
-#: ../libpurple/protocols/gg/gg.c:468
 msgid "Please, fill in the following fields"
 msgstr "অনুগ্রহ করে, নিচের ক্ষেত্রসমূহে পূরণ করুন"
 
-#: ../libpurple/protocols/gg/gg.c:589 ../libpurple/protocols/gg/gg.c:969
-#: ../libpurple/protocols/gg/gg.c:1037
-#: ../libpurple/protocols/jabber/jabber.c:1099
-#: ../libpurple/protocols/oscar/oscar.c:3979
-#: ../libpurple/protocols/oscar/oscar.c:3987
 msgid "City"
 msgstr "শহর"
 
-#: ../libpurple/protocols/gg/gg.c:594
 msgid "Year of birth"
 msgstr "জন্ম সন"
 
-#: ../libpurple/protocols/gg/gg.c:597 ../libpurple/protocols/msn/msn.c:2023
-#: ../libpurple/protocols/msnp9/msn.c:1729
-#: ../libpurple/protocols/myspace/user.c:130
-#: ../libpurple/protocols/oscar/oscar.c:3938
-#: ../libpurple/protocols/qq/buddy_info.c:119
-#: ../libpurple/protocols/qq/qq.c:314 ../libpurple/protocols/qq/qq.c:317
-#: ../libpurple/protocols/qq/qq.c:320 ../libpurple/protocols/qq/qq.c:324
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1091
 msgid "Gender"
 msgstr "লিঙ্গ"
 
-#: ../libpurple/protocols/gg/gg.c:598
 msgid "Male or female"
 msgstr "পুরুষ অথবা মহিলা"
 
-#: ../libpurple/protocols/gg/gg.c:599
-#: ../libpurple/protocols/oscar/oscar.c:3938
-#: ../libpurple/protocols/qq/buddy_info.c:67
-#: ../libpurple/protocols/qq/qq.c:314
 msgid "Male"
 msgstr "পুরুষ"
 
-#: ../libpurple/protocols/gg/gg.c:600
-#: ../libpurple/protocols/oscar/oscar.c:3938
-#: ../libpurple/protocols/qq/buddy_info.c:68
-#: ../libpurple/protocols/qq/qq.c:317
 msgid "Female"
 msgstr "মহিলা"
 
-#: ../libpurple/protocols/gg/gg.c:604
 msgid "Only online"
 msgstr "শুধুমাত্র অনলাইন"
 
-#: ../libpurple/protocols/gg/gg.c:608 ../libpurple/protocols/gg/gg.c:609
 msgid "Find buddies"
 msgstr "বন্ধু খোঁজ করুন"
 
-#: ../libpurple/protocols/gg/gg.c:610
 msgid "Please, enter your search criteria below"
 msgstr "অনুগ্রহ করে, আপনার অনুসন্ধান শর্তাবলী নীচে প্রবেশ করান"
 
-#: ../libpurple/protocols/gg/gg.c:644
 msgid "Fill in the fields."
 msgstr "ক্ষেত্রসমূহে পূরণ করুন।"
 
-#: ../libpurple/protocols/gg/gg.c:656
 msgid "Your current password is different from the one that you specified."
 msgstr "আপনার বর্তমান গুপ্তসংকেতটি আপনার উল্লেখিত একটি গুপ্তসংকেত থেকে পৃথক"
 
-#: ../libpurple/protocols/gg/gg.c:670
 msgid "Unable to change password. Error occurred.\n"
 msgstr "গুপ্তসংকেত পরিবর্তনে অক্ষম। ত্রুটি দেখা দিয়েছে।\n"
 
-#: ../libpurple/protocols/gg/gg.c:679
 msgid "Change password for the Gadu-Gadu account"
 msgstr "গাদু-গাদু একাউন্টের জন্য গুপ্তসংকেত পরিবর্তন করুন"
 
-#: ../libpurple/protocols/gg/gg.c:680
 msgid "Password was changed successfully!"
 msgstr "গুপ্তসংকেত সফলভাবে পরিবর্তিত হয়েছিল!"
 
-#: ../libpurple/protocols/gg/gg.c:709
 msgid "Current password"
 msgstr "বর্তমান গুপ্তসংকেত"
 
-#: ../libpurple/protocols/gg/gg.c:734
 msgid "Please, enter your current password and your new password for UIN: "
 msgstr ""
 "অনুগ্রহ করে, UIN-এর জন্য আপনার বর্তমান গুপ্তসংকেত এবং আপনার নতুন গুপ্তসংকেত প্রবেশ "
 "করান:"
 
-#: ../libpurple/protocols/gg/gg.c:738 ../libpurple/protocols/gg/gg.c:739
 msgid "Change Gadu-Gadu Password"
 msgstr "গাদু-গাদু গুপ্তসংকেত পরিবর্তন করুন"
 
-#: ../libpurple/protocols/gg/gg.c:804
 #, c-format
 msgid "Select a chat for buddy: %s"
 msgstr "বন্ধুর জন্য আড্ডা নির্বাচন করুন: %s"
 
-#: ../libpurple/protocols/gg/gg.c:807 ../libpurple/protocols/gg/gg.c:808
 msgid "Add to chat..."
 msgstr "আড্ডায় যোগ দিন..."
 
-#: ../libpurple/protocols/gg/gg.c:930
-#: ../libpurple/protocols/jabber/buddy.c:2062
-#: ../libpurple/protocols/msn/state.c:29 ../libpurple/protocols/msn/state.c:30
-#: ../libpurple/protocols/msn/state.c:37 ../libpurple/protocols/msn/state.c:38
-#: ../libpurple/protocols/msnp9/state.c:29
-#: ../libpurple/protocols/msnp9/state.c:30
-#: ../libpurple/protocols/msnp9/state.c:37
-#: ../libpurple/protocols/msnp9/state.c:38
-#: ../libpurple/protocols/novell/novell.c:2834
-#: ../libpurple/protocols/qq/qq.c:409
-#: ../libpurple/protocols/yahoo/yahoo.c:3179 ../libpurple/status.c:160
-#: ../pidgin/gtkdocklet.c:545 ../pidgin/gtkstatusbox.c:1095
 msgid "Available"
 msgstr "সহজলভ্য"
 
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
-#: ../libpurple/protocols/gg/gg.c:933 ../libpurple/protocols/irc/irc.c:556
-#: ../libpurple/protocols/irc/msgs.c:364
-#: ../libpurple/protocols/jabber/buddy.c:2066
-#: ../libpurple/protocols/novell/novell.c:2837
-#: ../libpurple/protocols/oscar/oscar.c:750
-#: ../libpurple/protocols/oscar/oscar.c:5853
-#: ../libpurple/protocols/qq/qq.c:267 ../libpurple/protocols/qq/qq.c:413
-#: ../libpurple/protocols/silc/buddy.c:1491
-#: ../libpurple/protocols/silc10/buddy.c:1491
-#: ../libpurple/protocols/yahoo/yahoo.c:3756
-#: ../libpurple/protocols/yahoo/yahoo.c:3830 ../libpurple/status.c:163
-#: ../pidgin/gtkdocklet.c:549 ../pidgin/gtkprefs.c:2090
-#: ../pidgin/gtkstatusbox.c:1096
 msgid "Away"
 msgstr "এখানে নেই"
 
-#: ../libpurple/protocols/gg/gg.c:958 ../libpurple/protocols/gg/gg.c:1028
-#: ../libpurple/protocols/oscar/oscar.c:2958
-#: ../libpurple/protocols/oscar/oscar.c:3905
 msgid "UIN"
 msgstr "UIN"
 
-#: ../libpurple/protocols/gg/gg.c:961 ../libpurple/protocols/gg/gg.c:1031
-#: ../libpurple/protocols/jabber/buddy.c:2239
-#: ../libpurple/protocols/jabber/buddy.c:2425
-#: ../libpurple/protocols/oscar/oscar.c:3916
-#: ../libpurple/protocols/silc/ops.c:1004
-#: ../libpurple/protocols/silc10/ops.c:1024
 msgid "First Name"
 msgstr "প্রথম নাম"
 
-#: ../libpurple/protocols/gg/gg.c:974 ../libpurple/protocols/gg/gg.c:1040
 msgid "Birth Year"
 msgstr "জন্ম সাল"
 
-#: ../libpurple/protocols/gg/gg.c:1022 ../libpurple/protocols/gg/gg.c:1091
-#: ../libpurple/protocols/oscar/oscar.c:4092
 msgid "Unable to display the search results."
 msgstr "অনুসন্ধান ফলাফল প্রদর্শন করতে অক্ষম।"
 
-#: ../libpurple/protocols/gg/gg.c:1082
 msgid "Gadu-Gadu Public Directory"
 msgstr "গাদু-গাদু জনসাধারণ নির্দেশিকা"
 
-#: ../libpurple/protocols/gg/gg.c:1083
 msgid "Search results"
 msgstr "অনুসন্ধান ফলাফল"
 
-#: ../libpurple/protocols/gg/gg.c:1122
 msgid "No matching users found"
 msgstr "কোনো সমন্বয়কারী ব্যবহারকারী পাওয়া যায়নি।"
 
-#: ../libpurple/protocols/gg/gg.c:1123
 msgid "There are no users matching your search criteria."
 msgstr "আপনার অনুসন্ধানের শর্তাবলী সাথে মেলে এমন কোনো ব্যবহারকারী নেই।"
 
-#: ../libpurple/protocols/gg/gg.c:1383 ../libpurple/protocols/gg/gg.c:1541
 msgid "Unable to read socket"
 msgstr "সকেট পড়তে ব্যর্থ"
 
-#: ../libpurple/protocols/gg/gg.c:1475
 msgid "Buddy list downloaded"
 msgstr "বন্ধু তালিকা ডাউনলোড করা হয়েছে"
 
-#: ../libpurple/protocols/gg/gg.c:1476
 msgid "Your buddy list was downloaded from the server."
 msgstr "আপনার বন্ধু তালিকা সার্ভার থেকে ডাউনলোড করা হয়েছে।"
 
-#: ../libpurple/protocols/gg/gg.c:1483
 msgid "Buddy list uploaded"
 msgstr "বন্ধু তালিকা আপলোড করা হয়েছে"
 
-#: ../libpurple/protocols/gg/gg.c:1484
 msgid "Your buddy list was stored on the server."
 msgstr "আপনার বন্ধু তালিকাটি সার্ভারে সংরক্ষণ করা হয়েছিল।"
 
-#: ../libpurple/protocols/gg/gg.c:1578 ../libpurple/protocols/gg/gg.c:1783
 msgid "Connection failed."
 msgstr "সংযোগ ব্যর্থ।"
 
-#: ../libpurple/protocols/gg/gg.c:1706
 msgid "Add to chat"
 msgstr "আড্ডার যোগ দিন"
 
-#: ../libpurple/protocols/gg/gg.c:1734
 msgid "Chat _name:"
 msgstr "আড্ডার নাম (_n):"
 
-#: ../libpurple/protocols/gg/gg.c:2079
 msgid "Chat error"
 msgstr "আড্ডা ত্রুটি"
 
-#: ../libpurple/protocols/gg/gg.c:2080
 msgid "This chat name is already in use"
 msgstr "এই আড্ডা নামটি ইতোমধ্যে ব্যবহৃত হচ্ছে"
 
-#: ../libpurple/protocols/gg/gg.c:2159
 msgid "Not connected to the server."
 msgstr "সার্ভারের সাথে সংযুক্ত নয়।"
 
-#: ../libpurple/protocols/gg/gg.c:2178
 msgid "Find buddies..."
 msgstr "বন্ধু খুঁজুন..."
 
-#: ../libpurple/protocols/gg/gg.c:2184
 msgid "Change password..."
 msgstr "গুপ্তসঙ্কেত পরিবর্তন করুন..."
 
-#: ../libpurple/protocols/gg/gg.c:2190
 msgid "Upload buddylist to Server"
 msgstr "সার্ভারে বন্ধু তালিকা আপলোড করুন"
 
-#: ../libpurple/protocols/gg/gg.c:2194
 msgid "Download buddylist from Server"
 msgstr "সার্ভার থেকে বন্ধু তালিকা ডাউনলোড করুন"
 
-#: ../libpurple/protocols/gg/gg.c:2198
 msgid "Delete buddylist from Server"
 msgstr "সার্ভার থেকে বন্ধু তালিকা মুছে ফেলুন"
 
-#: ../libpurple/protocols/gg/gg.c:2202
 msgid "Save buddylist to file..."
 msgstr "ফাইলে বন্ধুর তালিকা সংরক্ষণ করুন..."
 
@@ -4542,152 +3236,82 @@
 #. id
 #. name
 #. version
-#: ../libpurple/protocols/gg/gg.c:2305
 msgid "Gadu-Gadu Protocol Plugin"
 msgstr "Gadu-Gadu প্রটোকল প্লাগইন"
 
 #. summary
-#: ../libpurple/protocols/gg/gg.c:2306
 msgid "Polish popular IM"
 msgstr "জনপ্রিয় আইএম পরিমার্জন করুন"
 
-#: ../libpurple/protocols/gg/gg.c:2354
 msgid "Gadu-Gadu User"
 msgstr "গাদু-গাদু ব্যবহারকারী"
 
-#: ../libpurple/protocols/irc/cmds.c:43
-#: ../libpurple/protocols/silc/silc.c:1890
-#: ../libpurple/protocols/silc10/silc.c:1609
 #, c-format
 msgid "Unknown command: %s"
 msgstr "অজানা নির্দেশ: %s"
 
-#: ../libpurple/protocols/irc/cmds.c:536
-#: ../libpurple/protocols/jabber/chat.c:617
-#: ../libpurple/protocols/silc/silc.c:1580
-#: ../libpurple/protocols/silc10/silc.c:1299
 #, c-format
 msgid "current topic is: %s"
 msgstr "বর্তমান বিষয় হচ্ছে: %s"
 
-#: ../libpurple/protocols/irc/cmds.c:540
-#: ../libpurple/protocols/jabber/chat.c:621
-#: ../libpurple/protocols/silc/silc.c:1584
-#: ../libpurple/protocols/silc10/silc.c:1303
 msgid "No topic is set"
 msgstr "কোনো বিষয় নির্ধারণ করা হয়নি"
 
-#: ../libpurple/protocols/irc/dcc_send.c:304
-#: ../libpurple/protocols/irc/dcc_send.c:345
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:318
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:327
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:336
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1110
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1514
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1565
 msgid "File Transfer Failed"
 msgstr "ফাইল বিনিময় ব্যর্থ"
 
-#: ../libpurple/protocols/irc/dcc_send.c:305
-#: ../libpurple/protocols/irc/dcc_send.c:346
 msgid "Could not open a listening port."
 msgstr "শোনার কোনো পোর্ট খুলতে পারছে না।"
 
-#: ../libpurple/protocols/irc/irc.c:77
 msgid "Error displaying MOTD"
 msgstr "MOTD দেখানোর সময় ত্রুটি দেখা দিয়েছে"
 
-#: ../libpurple/protocols/irc/irc.c:77
 msgid "No MOTD available"
 msgstr "কোনো MOTD সহজলভ্য নয়"
 
-#: ../libpurple/protocols/irc/irc.c:78
 msgid "There is no MOTD associated with this connection."
 msgstr "এই সংযোগের সাথে সম্পর্কিত কোনো MOTD নেই।"
 
-#: ../libpurple/protocols/irc/irc.c:81
 #, c-format
 msgid "MOTD for %s"
 msgstr "%s এর জন্য MOTD"
 
-#: ../libpurple/protocols/irc/irc.c:127 ../libpurple/protocols/irc/irc.c:167
-#: ../libpurple/protocols/irc/irc.c:645 ../libpurple/protocols/irc/irc.c:674
-#: ../libpurple/protocols/myspace/myspace.c:2060
 msgid "Server has disconnected"
 msgstr "সার্ভার বিচ্ছিন্ন হয়েছে"
 
-#: ../libpurple/protocols/irc/irc.c:258
 msgid "View MOTD"
 msgstr "MOTD প্রদর্শন করুন"
 
-#: ../libpurple/protocols/irc/irc.c:270 ../libpurple/protocols/silc/chat.c:33
-#: ../libpurple/protocols/silc10/chat.c:33
 msgid "_Channel:"
 msgstr "চ্যানেল (_C):"
 
-#: ../libpurple/protocols/irc/irc.c:276
-#: ../libpurple/protocols/jabber/chat.c:60 ../pidgin/gtkaccount.c:553
 msgid "_Password:"
 msgstr "গুপ্তসংকেত (_P):"
 
 # tithi
-#: ../libpurple/protocols/irc/irc.c:309
 msgid "IRC nicks may not contain whitespace"
 msgstr "IRC এর ডাকনামসমূহ ফাঁকা স্থান ধারণ নাও করতে পারে"
 
 #. 1. connect to server
 #. connect to the server
-#: ../libpurple/protocols/irc/irc.c:330
-#: ../libpurple/protocols/jabber/jabber.c:1423
-#: ../libpurple/protocols/msn/session.c:406
-#: ../libpurple/protocols/msnp9/session.c:368
-#: ../libpurple/protocols/myspace/myspace.c:2196
-#: ../libpurple/protocols/novell/novell.c:2199
-#: ../libpurple/protocols/oscar/oscar.c:1449
-#: ../libpurple/protocols/sametime/sametime.c:3784
-#: ../libpurple/protocols/simple/simple.c:1957
-#: ../libpurple/protocols/yahoo/yahoo.c:3004
-#: ../libpurple/protocols/zephyr/zephyr.c:1588 ../pidgin/gtkstatusbox.c:693
 msgid "Connecting"
 msgstr "সংযোগ করছে"
 
-#: ../libpurple/protocols/irc/irc.c:340
-#: ../libpurple/protocols/jabber/jabber.c:755
-#: ../libpurple/protocols/jabber/jabber.c:1223
 msgid "SSL support unavailable"
 msgstr "এসএসএল সমর্থন অপ্রাপ্য"
 
-#: ../libpurple/protocols/irc/irc.c:353
-#: ../libpurple/protocols/myspace/myspace.c:2214
-#: ../libpurple/protocols/simple/simple.c:485
-#: ../libpurple/protocols/simple/simple.c:1860
 msgid "Couldn't create socket"
 msgstr "সকেট তৈরী করা যাচ্ছে না"
 
-#: ../libpurple/protocols/irc/irc.c:451
-#: ../libpurple/protocols/oscar/oscar.c:1445
 msgid "Couldn't connect to host"
 msgstr "হোস্টের সাথে সংযুক্ত করা যাচ্ছে না"
 
-#: ../libpurple/protocols/irc/irc.c:640 ../libpurple/protocols/irc/irc.c:669
-#: ../libpurple/protocols/myspace/myspace.c:2054
 msgid "Read error"
 msgstr "পড়ায় ত্রুটি"
 
-#: ../libpurple/protocols/irc/irc.c:810
-#: ../libpurple/protocols/silc/chat.c:1401
-#: ../libpurple/protocols/silc10/chat.c:1426
-#: ../libpurple/protocols/yahoo/yahoochat.c:1508
 msgid "Users"
 msgstr "ব্যবহারকারীরা"
 
-#: ../libpurple/protocols/irc/irc.c:813
-#: ../libpurple/protocols/sametime/sametime.c:3431
-#: ../libpurple/protocols/silc/chat.c:1404
-#: ../libpurple/protocols/silc/ops.c:1406
-#: ../libpurple/protocols/silc10/chat.c:1429
-#: ../libpurple/protocols/silc10/ops.c:1382
-#: ../libpurple/protocols/yahoo/yahoochat.c:1517
 msgid "Topic"
 msgstr "বিষয়"
 
@@ -4699,54 +3323,29 @@
 #. *< id
 #. *< name
 #. *< version
-#: ../libpurple/protocols/irc/irc.c:952
 msgid "IRC Protocol Plugin"
 msgstr "আইআরসি প্রটোকল প্লাগইন"
 
 # tithi
 #. *  summary
-#: ../libpurple/protocols/irc/irc.c:953
 msgid "The IRC Protocol Plugin that Sucks Less"
 msgstr "IRC প্রটোকল প্লাগইন যা কম সমস্য়া তৈরি করে"
 
 #. host to connect to
-#: ../libpurple/protocols/irc/irc.c:978 ../libpurple/protocols/irc/msgs.c:377
-#: ../libpurple/protocols/msn/msn.c:2622
-#: ../libpurple/protocols/msnp9/msn.c:2326
-#: ../libpurple/protocols/oscar/oscar.c:6857
-#: ../libpurple/protocols/sametime/sametime.c:5787
-#: ../libpurple/protocols/silc/ops.c:1262
-#: ../libpurple/protocols/silc/ops.c:1356
-#: ../libpurple/protocols/silc10/ops.c:1244
-#: ../libpurple/protocols/silc10/ops.c:1347
-#: ../libpurple/protocols/simple/simple.c:2141
-#: ../libpurple/protocols/toc/toc.c:2327
 msgid "Server"
 msgstr "সার্ভার"
 
 #. port to connect to
-#: ../libpurple/protocols/irc/irc.c:981 ../libpurple/protocols/msn/msn.c:2627
-#: ../libpurple/protocols/msnp9/msn.c:2331
-#: ../libpurple/protocols/oscar/oscar.c:6860
-#: ../libpurple/protocols/sametime/sametime.c:5792
-#: ../libpurple/protocols/silc/silc.c:2181
-#: ../libpurple/protocols/silc10/silc.c:1904
-#: ../libpurple/protocols/toc/toc.c:2331
 msgid "Port"
 msgstr "পোর্ট"
 
-#: ../libpurple/protocols/irc/irc.c:984
 msgid "Encodings"
 msgstr "সঙ্কেতায়নসমূহ"
 
 # tithi
-#: ../libpurple/protocols/irc/irc.c:987
 msgid "Auto-detect incoming UTF-8"
 msgstr "আসন্ন UTF-8 স্বয়ং-শনাক্ত করে"
 
-#: ../libpurple/protocols/irc/irc.c:993 ../libpurple/protocols/irc/msgs.c:371
-#: ../libpurple/protocols/silc/silc.c:1244
-#: ../libpurple/protocols/silc10/silc.c:945
 msgid "Real name"
 msgstr "আসল নাম"
 
@@ -4754,175 +3353,132 @@
 #. option = purple_account_option_string_new(_("Quit message"), "quitmsg", IRC_DEFAULT_QUIT);
 #. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
 #.
-#: ../libpurple/protocols/irc/irc.c:1001
 msgid "Use SSL"
 msgstr "SSL ব্যবহার করুন"
 
-#: ../libpurple/protocols/irc/msgs.c:196
 msgid "Bad mode"
 msgstr "খারাপ মেজাজ"
 
 # tithi
-#: ../libpurple/protocols/irc/msgs.c:219
 #, c-format
 msgid "Ban on %s by %s, set %s ago"
 msgstr "%2s দ্বারা %1s এ বাধা, %3s আগে নির্ধারণ করুন"
 
-#: ../libpurple/protocols/irc/msgs.c:223
 #, c-format
 msgid "Ban on %s"
 msgstr "%s এ বাধা দিচ্ছে"
 
-#: ../libpurple/protocols/irc/msgs.c:238
 msgid "End of ban list"
 msgstr "নিষিদ্ধ তালিকার শেষে"
 
-#: ../libpurple/protocols/irc/msgs.c:252
 #, c-format
 msgid "You are banned from %s."
 msgstr "আপনি %s থেকে নিষিদ্ধ।"
 
-#: ../libpurple/protocols/irc/msgs.c:253
 msgid "Banned"
 msgstr "নিষিদ্ধ করা হয়েছে"
 
-#: ../libpurple/protocols/irc/msgs.c:270
 #, c-format
 msgid "Cannot ban %s: banlist is full"
 msgstr "%s নিষিদ্ধ করা যাচ্ছে না: নিষিদ্ধ তালিকা পূর্ণ"
 
-#: ../libpurple/protocols/irc/msgs.c:355
 msgid " <i>(ircop)</i>"
 msgstr "<i>(ircop)</i>"
 
-#: ../libpurple/protocols/irc/msgs.c:356
 msgid " <i>(identified)</i>"
 msgstr "<i>(শনাক্তকৃত)</i>"
 
-#: ../libpurple/protocols/irc/msgs.c:357
-#: ../libpurple/protocols/oscar/oscar.c:3906
-#: ../libpurple/protocols/silc/ops.c:1435
-#: ../libpurple/protocols/silc10/ops.c:1414
 msgid "Nick"
 msgstr "ডাকনাম"
 
 # tithi
-#: ../libpurple/protocols/irc/msgs.c:383
-#: ../libpurple/protocols/silc/ops.c:1281
-#: ../libpurple/protocols/silc10/ops.c:1272
 msgid "Currently on"
 msgstr "বর্তমানে"
 
-#: ../libpurple/protocols/irc/msgs.c:388
 msgid "Idle for"
 msgstr "এর জন্য অলস"
 
-#: ../libpurple/protocols/irc/msgs.c:391
 msgid "Online since"
 msgstr "যখন থেকে অনলাইন "
 
-#: ../libpurple/protocols/irc/msgs.c:395
 msgid "<b>Defining adjective:</b>"
 msgstr "<b>বিশেষন নির্ধারন করছে:</b>"
 
 # tithi
-#: ../libpurple/protocols/irc/msgs.c:395
 msgid "Glorious"
 msgstr "চমৎকার"
 
-#: ../libpurple/protocols/irc/msgs.c:479
 #, c-format
 msgid "%s has changed the topic to: %s"
 msgstr "%1s বিষয় পরিবর্তন করছে: %2s"
 
-#: ../libpurple/protocols/irc/msgs.c:481
 #, c-format
 msgid "%s has cleared the topic."
 msgstr "%s বিষয়টি পরিস্কার করেছে।"
 
-#: ../libpurple/protocols/irc/msgs.c:489
 #, c-format
 msgid "The topic for %s is: %s"
 msgstr "%1s এর জন্য বিষয় হলো: %2s"
 
-#: ../libpurple/protocols/irc/msgs.c:507
 #, c-format
 msgid "Unknown message '%s'"
 msgstr "অজানা বার্তা '%s'"
 
-#: ../libpurple/protocols/irc/msgs.c:508
 msgid "Unknown message"
 msgstr "অজানা বার্তা"
 
-#: ../libpurple/protocols/irc/msgs.c:508
 msgid "The IRC server received a message it did not understand."
 msgstr "IRC সার্ভার এমন একটি বার্তা পেয়েছে যা এটা বুঝতে পারেনি।"
 
-#: ../libpurple/protocols/irc/msgs.c:529
 #, c-format
 msgid "Users on %s: %s"
 msgstr "%1s এর ব্যবহারকারী: %2s"
 
-#: ../libpurple/protocols/irc/msgs.c:636
 msgid "Time Response"
 msgstr "সাড়া দেওয়ার সময়"
 
-#: ../libpurple/protocols/irc/msgs.c:637
 msgid "The IRC server's local time is:"
 msgstr "আইআরসি সার্ভারের স্থানীয় সময় হলো:"
 
-#: ../libpurple/protocols/irc/msgs.c:648
 msgid "No such channel"
 msgstr "এমন কোনো চ্যানেল নেই"
 
 #. does this happen?
-#: ../libpurple/protocols/irc/msgs.c:659
 msgid "no such channel"
 msgstr "এমন কোনো চ্যানেল নেই"
 
-#: ../libpurple/protocols/irc/msgs.c:662
 msgid "User is not logged in"
 msgstr "ব্যবহারকারী লগইন অবস্থায় নেই"
 
-#: ../libpurple/protocols/irc/msgs.c:667
 msgid "No such nick or channel"
 msgstr "এমন কোনো ডাকনাম বা চ্যানেল নেই"
 
-#: ../libpurple/protocols/irc/msgs.c:687
 msgid "Could not send"
 msgstr "পাঠানো সম্ভব হয়নি"
 
-#: ../libpurple/protocols/irc/msgs.c:743
 #, c-format
 msgid "Joining %s requires an invitation."
 msgstr "%s এর অংশগ্রহনের জন্যে আমন্ত্রণ প্রয়োজন"
 
-#: ../libpurple/protocols/irc/msgs.c:744
 msgid "Invitation only"
 msgstr "শুধুমাত্র আমন্ত্রণ"
 
-#: ../libpurple/protocols/irc/msgs.c:860
 #, c-format
 msgid "You have been kicked by %s: (%s)"
 msgstr "%1s দ্বারা আপনাকে বের করে দেয়া হয়েছে: (%2s)"
 
 #. Remove user from channel
-#: ../libpurple/protocols/irc/msgs.c:865 ../libpurple/protocols/silc/ops.c:714
-#: ../libpurple/protocols/silc10/ops.c:720
 #, c-format
 msgid "Kicked by %s (%s)"
 msgstr "%1s (%2s) দ্বারা বহিষ্কৃত"
 
-#: ../libpurple/protocols/irc/msgs.c:888
 #, c-format
 msgid "mode (%s %s) by %s"
 msgstr "%s দ্বারা (%s %s) পরিমন্ডল"
 
-#: ../libpurple/protocols/irc/msgs.c:978 ../libpurple/protocols/irc/msgs.c:979
 msgid "Invalid nickname"
 msgstr "অবৈধ ডাকনাম"
 
-#: ../libpurple/protocols/irc/msgs.c:980
 msgid ""
 "Your selected nickname was rejected by the server.  It probably contains "
 "invalid characters."
@@ -4930,7 +3486,6 @@
 "আপনার নির্বাচিত ডাকনামটি সার্ভার দ্বারা বাতিল করা হয়েছে। এটি সম্ভবত অবৈধ বর্ণচিহ্ন "
 "ধারণ করে।"
 
-#: ../libpurple/protocols/irc/msgs.c:985
 msgid ""
 "Your selected account name was rejected by the server.  It probably contains "
 "invalid characters."
@@ -4938,54 +3493,41 @@
 "আপনার নির্বাচিত একাউন্ট নাম সার্ভার থেকে বাতিল করা হয়েছে। এটি সম্ভবত অবৈধ "
 "বর্ণচিহ্ন ধারণ করে।"
 
-#: ../libpurple/protocols/irc/msgs.c:1033
 msgid "Cannot change nick"
 msgstr "ডাকনাম পরিবর্তন করতে পারে না"
 
-#: ../libpurple/protocols/irc/msgs.c:1033
 msgid "Could not change nick"
 msgstr "ডাকনাম পরিবর্তন করতে পারেনি"
 
-#: ../libpurple/protocols/irc/msgs.c:1058
 #, c-format
 msgid "You have parted the channel%s%s"
 msgstr "আপনি চ্যানেল%s%s বিভক্ত করেছেন"
 
-#: ../libpurple/protocols/irc/msgs.c:1102
 msgid "Error: invalid PONG from server"
 msgstr "ত্রুটি: সার্ভার থেকে অবৈধ PONG"
 
-#: ../libpurple/protocols/irc/msgs.c:1104
 #, c-format
 msgid "PING reply -- Lag: %lu seconds"
 msgstr "PING উত্তর ‌‌-- পরে: %lu সেকেন্ড"
 
-#: ../libpurple/protocols/irc/msgs.c:1195
 #, c-format
 msgid "Cannot join %s: Registration is required."
 msgstr "%s যুক্ত করতে পারে না: নিবন্ধন আবশ্যক।"
 
-#: ../libpurple/protocols/irc/msgs.c:1196
-#: ../libpurple/protocols/silc/ops.c:1106
-#: ../libpurple/protocols/silc10/ops.c:1128
 msgid "Cannot join channel"
 msgstr "চ্যানেলে অংশগ্রহণ করতে পারে না"
 
-#: ../libpurple/protocols/irc/msgs.c:1230
 msgid "Nick or channel is temporarily unavailable."
 msgstr "ডাকনাম বা চ্যানেল সাময়িকভাবে অপ্রাপ্য"
 
-#: ../libpurple/protocols/irc/msgs.c:1242
 #, c-format
 msgid "Wallops from %s"
 msgstr "%s থেকে Wallop"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:124
 msgid "action &lt;action to perform&gt;:  Perform an action."
 msgstr "কর্ম &1lt;&2gt সম্পন্ন করার কাজ;:  একটি কাজ সম্পন্ন করেন।"
 
-#: ../libpurple/protocols/irc/parse.c:125
 msgid ""
 "away [message]:  Set an away message, or use no message to return from being "
 "away."
@@ -4994,15 +3536,12 @@
 "অনুপস্থিত আবস্থা থেকে ফিরে আসুন।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:126
 msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
 msgstr "ctcp <nick> <msg>: ডাকনামকে ctcp বার্তা পাঠায়।"
 
-#: ../libpurple/protocols/irc/parse.c:127
 msgid "chanserv: Send a command to chanserv"
 msgstr "chanserv: chanserv এ নির্দেশ পাঠান"
 
-#: ../libpurple/protocols/irc/parse.c:128
 msgid ""
 "deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from "
 "someone. You must be a channel operator to do this."
@@ -5010,7 +3549,6 @@
 "deop &1lt;ডাকনাম১&2gt; [ডাকনাম২] ...: কারও কাছ থেকে চ্যনেল অপারেটর অবস্থা মুছে "
 "ফেলুন। এটি করতে আপনাকে অবশ্যই চ্যানেল পরিচালক হতে হবে।"
 
-#: ../libpurple/protocols/irc/parse.c:129
 msgid ""
 "devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from "
 "someone, preventing them from speaking if the channel is moderated (+m). You "
@@ -5021,7 +3559,6 @@
 "আপনাকে অবশ্যই চ্যানেল অপারেটর হতে হবে।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:130
 msgid ""
 "invite &lt;nick&gt; [room]:  Invite someone to join you in the specified "
 "channel, or the current channel."
@@ -5030,7 +3567,6 @@
 "চ্যানেলে যুক্ত করাতে কাউকে আমন্ত্রন জানান।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:131
 msgid ""
 "j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
 "channels, optionally providing a channel key for each if needed."
@@ -5039,7 +3575,6 @@
 "ঐচ্ছিকভাবে একটি চ্যানেল কী প্রদান করে এক বা একাধিক চ্যানেল প্রবেশ করান।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:132
 msgid ""
 "join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
 "channels, optionally providing a channel key for each if needed."
@@ -5048,7 +3583,6 @@
 "প্রত্যেককে ঐচ্ছিকভাবে একটি চ্যানেল কী প্রদান করে এক বা একাধিক চ্যানেল প্রবেশ করান।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:133
 msgid ""
 "kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a "
 "channel operator to do this."
@@ -5056,7 +3590,6 @@
 "মুছে ফেলা &1lt;ডাকনাম&2gt; [বার্তা]:  একটি চ্যানেল থেকে কাউকে অপসারণ করুন। এটা "
 "করতে আপনাকে অবশ্যই চ্যানেলে অপারেটর হতে হবে।"
 
-#: ../libpurple/protocols/irc/parse.c:134
 msgid ""
 "list:  Display a list of chat rooms on the network. <i>Warning, some servers "
 "may disconnect you upon doing this.</i>"
@@ -5065,17 +3598,14 @@
 "disconnect you upon doing this</i>"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:135
 msgid "me &lt;action to perform&gt;:  Perform an action."
 msgstr "আমাকে &1lt;সম্পাদনার কাজ&2gt;:  একটি কাজ সম্পাদন করুন।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:136
 msgid "memoserv: Send a command to memoserv"
 msgstr "স্মৃতি সার্ভার: স্মৃতি সার্ভারে একটি নির্দেশ পাঠান"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:137
 msgid ""
 "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel "
 "or user mode."
@@ -5084,7 +3614,6 @@
 "ব্যবহারকারীর মোড নির্ধারন বা অনির্ধারণ করুন।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:138
 msgid ""
 "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
 "opposed to a channel)."
@@ -5092,26 +3621,20 @@
 "বার্তা &1lt;ডাকনাম&2gt; &3lt;বার্তা&4gt;:  একজন ব্যবহারকারীকে একটি ব্যক্তিগত "
 "বার্তা পাঠান (একটি চ্যানেলের বিপরীতে)।"
 
-#: ../libpurple/protocols/irc/parse.c:139
 msgid "names [channel]:  List the users currently in a channel."
 msgstr "নামসমূহ [চ্যানেল১]: চ্যানেলে বর্তমান ব্যবহারকারীদের তালিকা করুন।"
 
-#: ../libpurple/protocols/irc/parse.c:140
-#: ../libpurple/protocols/jabber/jabber.c:2543
 msgid "nick &lt;new nickname&gt;:  Change your nickname."
 msgstr "ডাকনাম &1lt;নতুন ডাকনাম&2gt;: আপনার ডাকনাম পরিবর্তন করুন।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:141
 msgid "nickserv: Send a command to nickserv"
 msgstr "ডাকনাম-সার্ভার: ডাকনাম-সার্ভারে একটি নির্দেশ পাঠান"
 
-#: ../libpurple/protocols/irc/parse.c:142
 msgid "notice &lt;target&lt;:  Send a notice to a user or channel."
 msgstr "ঘোষণা &1lt;লক্ষ্য&2lt;: ব্যবহারকারীর কাছে বা চ্যানেলে একটি ঘোষণা পাঠান।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:143
 msgid ""
 "op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You "
 "must be a channel operator to do this."
@@ -5120,7 +3643,6 @@
 "মেমে নিন। এটা করতে আপনাকে অবশ্যই একজন চ্যানেল অপারেটর হতে হবে।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:144
 msgid ""
 "operwall &lt;message&gt;:  If you don't know what this is, you probably "
 "can't use it."
@@ -5129,12 +3651,10 @@
 "ব্যবহার করতে পারবেন না।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:145
 msgid "operserv: Send a command to operserv"
 msgstr "অপারেটর-সার্ভার: অপারেটর-সার্ভারে একটি নির্দেশ পাঠান"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:146
 msgid ""
 "part [room] [message]:  Leave the current channel, or a specified channel, "
 "with an optional message."
@@ -5143,7 +3663,6 @@
 "ত্যাগ করুন।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:147
 msgid ""
 "ping [nick]:  Asks how much lag a user (or the server if no user specified) "
 "has."
@@ -5152,7 +3671,6 @@
 "ব্যবহারকারী উল্লেখিত না থাকে) করুন।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:148
 msgid ""
 "query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
 "opposed to a channel)."
@@ -5160,16 +3678,13 @@
 "জিজ্ঞাসা &1lt;ডাকনাম&2gt; &3lt;বার্তা&4gt;: একজন ব্যবহারকারীকে একটি ব্যক্তিগত "
 "বার্তা পাঠান (একটি চ্যানেলের বিপরীত হিসেবে)।"
 
-#: ../libpurple/protocols/irc/parse.c:149
 msgid "quit [message]:  Disconnect from the server, with an optional message."
 msgstr "প্রস্থান করুন [বার্তা]: একটি ঐচ্ছিক বার্তাসহ, সার্ভারের থেকে বিচ্ছিন্ন করুন।"
 
-#: ../libpurple/protocols/irc/parse.c:150
 msgid "quote [...]:  Send a raw command to the server."
 msgstr "উক্তি [...]: সার্ভারে একটি অরুপান্তরিত বার্তা পাঠান"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:151
 msgid ""
 "remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a "
 "channel operator to do this."
@@ -5177,28 +3692,23 @@
 "অপসারণ করুন &1lt;ডাকনাম&2gt; [বার্তা]: একটি রুম থেকে কোনও একজন অপসারণ করুন। এটা "
 "করতে আপনাকে অবশ্যই একজন চ্যানেল অপারেটর হতে হবে।"
 
-#: ../libpurple/protocols/irc/parse.c:152
 msgid "time: Displays the current local time at the IRC server."
 msgstr "সময়: আইআরসি সার্ভারে বর্তমান স্থানীয় সময় প্রদর্শন করে।"
 
-#: ../libpurple/protocols/irc/parse.c:153
 msgid "topic [new topic]:  View or change the channel topic."
 msgstr "বিষয়বস্তু [নতুন বিষয়বস্তু]: চ্যানেলের বিষয়বস্তু প্রদর্শন বা পরিবর্তন করুন।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:154
 msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;:  Set or unset a user mode."
 msgstr ""
 "ব্যবহারকারী মোড &1lt;+|-&2gt;&3lt;A-Za-z&4gt;: ব্যবহারকারীr মোড নির্ধারণ বা "
 "অনির্ধারণ করুন।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:155
 msgid "version [nick]: send CTCP VERSION request to a user"
 msgstr "সংস্করণ [ডাকনাম]: একজন ব্যবহারকারীকে CTCP সংস্করণ অনুরোধ পাঠান"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:156
 msgid ""
 "voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You "
 "must be a channel operator to do this."
@@ -5207,7 +3717,6 @@
 "মেনে নিন। এটা করতে আপনাকে অবশ্যই চ্যানেল অপারেটর হতে হবে।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:157
 msgid ""
 "wallops &lt;message&gt;:  If you don't know what this is, you probably can't "
 "use it."
@@ -5216,69 +3725,47 @@
 "করতে পারবেন না।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:158
 msgid "whois [server] &lt;nick&gt;:  Get information on a user."
 msgstr "কে [সার্ভার] &1lt;ডাকনাম&2gt;: একজন ব্যবহারকারীর তথ্য গ্রহণ করুন।"
 
 # tithi
-#: ../libpurple/protocols/irc/parse.c:159
 msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
 msgstr "কে ছিল&1lt;ডাকনাম&2gt;: বন্ধ রয়েছে এমন একজন ব্যবহারকারীর তথ্য গ্রহণ করুন।"
 
-#: ../libpurple/protocols/irc/parse.c:544
 #, c-format
 msgid "Reply time from %s: %lu seconds"
 msgstr "%1s হতে উত্তর দেয়ার সময়: %2lu সেকেন্ড"
 
-#: ../libpurple/protocols/irc/parse.c:545
 msgid "PONG"
 msgstr "PONG"
 
-#: ../libpurple/protocols/irc/parse.c:545
 msgid "CTCP PING reply"
 msgstr "CTCP PING উত্তর"
 
-#: ../libpurple/protocols/irc/parse.c:657
-#: ../libpurple/protocols/irc/parse.c:664 ../libpurple/protocols/toc/toc.c:191
-#: ../libpurple/protocols/toc/toc.c:694 ../libpurple/protocols/toc/toc.c:710
-#: ../libpurple/protocols/toc/toc.c:786
 msgid "Disconnected."
 msgstr "বিচ্ছিন্ন।"
 
-#: ../libpurple/protocols/jabber/adhoccommands.c:143
-#: ../libpurple/protocols/jabber/jabber.c:816
-#: ../libpurple/protocols/jabber/jabber.c:846
-#: ../libpurple/protocols/jabber/jabber.c:2127
 msgid "Unknown Error"
 msgstr "অজানা ত্রুটি"
 
-#: ../libpurple/protocols/jabber/adhoccommands.c:145
-#: ../libpurple/protocols/jabber/adhoccommands.c:146
 msgid "Ad-Hoc Command Failed"
 msgstr "এড-হক নির্দেশ ব্যর্থ"
 
-#: ../libpurple/protocols/jabber/adhoccommands.c:182
 msgid "execute"
 msgstr "কার্যকর করুন"
 
 # tithi
-#: ../libpurple/protocols/jabber/auth.c:55
 msgid "Server requires TLS/SSL for login.  No TLS/SSL support found."
 msgstr ""
 "সার্ভারের লগইন করার জন্য TSL/SSL আবশ্যক,  কোনো TLS/SSL সমর্থন খুঁজে পাওয়া যায়নি।"
 
 # tithi
-#: ../libpurple/protocols/jabber/auth.c:60
 msgid "You require encryption, but no TLS/SSL support found."
 msgstr "আপনার এনক্রিপশন প্রয়োজন, কিন্তু কোনো TLS/SSL সমর্থন খুঁজে পাওয়া যায়নি।"
 
-#: ../libpurple/protocols/jabber/auth.c:125
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "একটি এনক্রিপশনবিহীন স্ট্রীমে সার্ভারের সরল-পাঠ প্রমাণীকরণ প্রয়োজন"
 
-#: ../libpurple/protocols/jabber/auth.c:328
-#: ../libpurple/protocols/jabber/auth.c:548
-#: ../libpurple/protocols/jabber/auth.c:667
 #, c-format
 msgid ""
 "%s requires plaintext authentication over an unencrypted connection.  Allow "
@@ -5287,141 +3774,74 @@
 "একটি এনক্রিপশনবিহীন সংযোগে %s এর সরল-পাঠ প্রমাণীকরণ প্রয়োজন। এটি অনুমোদন করুন এবং "
 "প্রমাণীকরণ কি অব্যাহত রাখতে চান?"
 
-#: ../libpurple/protocols/jabber/auth.c:330
-#: ../libpurple/protocols/jabber/auth.c:331
-#: ../libpurple/protocols/jabber/auth.c:550
-#: ../libpurple/protocols/jabber/auth.c:551
-#: ../libpurple/protocols/jabber/auth.c:669
-#: ../libpurple/protocols/jabber/auth.c:670
 msgid "Plaintext Authentication"
 msgstr "সরল-পাঠ প্রমাণীকরণ"
 
-#: ../libpurple/protocols/jabber/auth.c:493
-#: ../libpurple/protocols/jabber/auth.c:606
-#: ../libpurple/protocols/jabber/auth.c:851
-#: ../libpurple/protocols/jabber/auth.c:1003
-#: ../libpurple/protocols/jabber/auth.c:1030
-#: ../libpurple/protocols/jabber/auth.c:1076
-#: ../libpurple/protocols/jabber/jabber.c:131
 msgid "Invalid response from server."
 msgstr "সার্ভার থেকে অবৈধ সাড়া।"
 
-#: ../libpurple/protocols/jabber/auth.c:564
-#: ../libpurple/protocols/jabber/auth.c:683
 msgid "Server does not use any supported authentication method"
 msgstr "সার্ভার কোনো সমর্থিত প্রমাণীকরণ প্রক্রিয়া ব্যবহার করে না।"
 
-#: ../libpurple/protocols/jabber/auth.c:874
-#: ../libpurple/protocols/jabber/auth.c:900
 msgid "Invalid challenge from server"
 msgstr "সার্ভার থেকে অবৈধ চ্যালেঞ্জ"
 
-#: ../libpurple/protocols/jabber/auth.c:976
 msgid "SASL error"
 msgstr "SASL ত্রুটি"
 
-#: ../libpurple/protocols/jabber/buddy.c:311
-#: ../libpurple/protocols/jabber/buddy.c:1241
-#: ../libpurple/protocols/sametime/sametime.c:4190
-#: ../libpurple/protocols/silc/ops.c:1000
-#: ../libpurple/protocols/silc10/ops.c:1020
 msgid "Full Name"
 msgstr "পুরো নাম"
 
-#: ../libpurple/protocols/jabber/buddy.c:312
-#: ../libpurple/protocols/jabber/buddy.c:1252
-#: ../libpurple/protocols/silc/ops.c:1012
-#: ../libpurple/protocols/silc10/ops.c:1032
 msgid "Family Name"
 msgstr "পারিবারিক নাম"
 
-#: ../libpurple/protocols/jabber/buddy.c:313
-#: ../libpurple/protocols/jabber/buddy.c:1254
 msgid "Given Name"
 msgstr "প্রদত্ত নাম"
 
-#: ../libpurple/protocols/jabber/buddy.c:315
-#: ../libpurple/protocols/jabber/jabber.c:1115
 msgid "URL"
 msgstr "URL"
 
-#: ../libpurple/protocols/jabber/buddy.c:316
-#: ../libpurple/protocols/jabber/buddy.c:1298
 msgid "Street Address"
 msgstr "রাস্তার ঠিকানা"
 
-#: ../libpurple/protocols/jabber/buddy.c:317
-#: ../libpurple/protocols/jabber/buddy.c:1296
 msgid "Extended Address"
 msgstr "বর্ধিত ঠিকানা"
 
-#: ../libpurple/protocols/jabber/buddy.c:318
-#: ../libpurple/protocols/jabber/buddy.c:1300
 msgid "Locality"
 msgstr "এলাকা"
 
-#: ../libpurple/protocols/jabber/buddy.c:319
-#: ../libpurple/protocols/jabber/buddy.c:1302
 msgid "Region"
 msgstr "এলাকা"
 
-#: ../libpurple/protocols/jabber/buddy.c:320
-#: ../libpurple/protocols/jabber/buddy.c:1304
 msgid "Postal Code"
 msgstr "পোষ্টাল কোড"
 
-#: ../libpurple/protocols/jabber/buddy.c:321
-#: ../libpurple/protocols/jabber/buddy.c:1307
-#: ../libpurple/protocols/silc/silc.c:1250
-#: ../libpurple/protocols/silc10/silc.c:951
 msgid "Country"
 msgstr "দেশ"
 
 #. lots of clients (including purple) do this, but it's
 #. * out of spec
-#: ../libpurple/protocols/jabber/buddy.c:322
-#: ../libpurple/protocols/jabber/buddy.c:1321
-#: ../libpurple/protocols/jabber/buddy.c:1327
 msgid "Telephone"
 msgstr "টেলিফোন"
 
-#: ../libpurple/protocols/jabber/buddy.c:324
-#: ../libpurple/protocols/jabber/buddy.c:1368
 msgid "Organization Name"
 msgstr "সংগঠনের নাম"
 
-#: ../libpurple/protocols/jabber/buddy.c:325
-#: ../libpurple/protocols/jabber/buddy.c:1370
 msgid "Organization Unit"
 msgstr "সংগঠন একক"
 
-#: ../libpurple/protocols/jabber/buddy.c:327
-#: ../libpurple/protocols/jabber/buddy.c:1377
 msgid "Role"
 msgstr "ভূমিকা"
 
-#: ../libpurple/protocols/jabber/buddy.c:328
-#: ../libpurple/protocols/jabber/buddy.c:1270
-#: ../libpurple/protocols/msn/msn.c:2092
-#: ../libpurple/protocols/msnp9/msn.c:1798
-#: ../libpurple/protocols/oscar/oscar.c:3955
 msgid "Birthday"
 msgstr "জন্মদিন"
 
-#: ../libpurple/protocols/jabber/buddy.c:329
-#: ../libpurple/protocols/jabber/buddy.c:1379
-#: ../libpurple/protocols/jabber/chat.c:802
-#: ../libpurple/protocols/jabber/usermood.c:190 ../pidgin/gtkblist.c:3540
-#: ../pidgin/gtkplugin.c:584 ../pidgin/gtkprefs.c:688
 msgid "Description"
 msgstr "বিবরণ"
 
-#: ../libpurple/protocols/jabber/buddy.c:739
-#: ../libpurple/protocols/jabber/buddy.c:740
 msgid "Edit XMPP vCard"
 msgstr "XMPP vCard সম্পাদনা করুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:741
 msgid ""
 "All items below are optional. Enter only the information with which you feel "
 "comfortable."
@@ -5429,364 +3849,226 @@
 "নিচের সব বিষয়গুলো ঐচ্ছিক। আপনি যে তথ্য প্রবেশ করাতে স্বাচ্ছন্দবোধ করেন শুধুমাত্র তা "
 "প্রবেশ করান।"
 
-#: ../libpurple/protocols/jabber/buddy.c:797
-#: ../libpurple/protocols/jabber/buddy.c:966
 msgid "Client"
 msgstr "ক্লায়েন্ট"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:801
-#: ../libpurple/protocols/jabber/buddy.c:970
 msgid "Operating System"
 msgstr "অপারেটিং সিস্টেম"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:841
-#: ../libpurple/protocols/jabber/buddy.c:1011
 msgid "Last Activity"
 msgstr "শেষ সক্রিয়তা"
 
-#: ../libpurple/protocols/jabber/buddy.c:843
-#: ../libpurple/protocols/jabber/buddy.c:1013
 msgid "Service Discovery Info"
 msgstr "সেবা আবিষ্কারের তথ্য"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:845
-#: ../libpurple/protocols/jabber/buddy.c:1015
 msgid "Service Discovery Items"
 msgstr "সেবা আবিষ্কারের বিষয়োপকরনসমূহ"
 
-#: ../libpurple/protocols/jabber/buddy.c:847
-#: ../libpurple/protocols/jabber/buddy.c:1017
 msgid "Extended Stanza Addressing"
 msgstr "বর্ধিত স্ট্যানজা উদ্দেশ করছে"
 
-#: ../libpurple/protocols/jabber/buddy.c:849
-#: ../libpurple/protocols/jabber/buddy.c:1019
 msgid "Multi-User Chat"
 msgstr "একাধিক-ব্যবহারকারী সম্বলিত আড্ডা"
 
-#: ../libpurple/protocols/jabber/buddy.c:851
-#: ../libpurple/protocols/jabber/buddy.c:1021
 msgid "Multi-User Chat Extended Presence Information"
 msgstr "একাধিক-ব্যবহারকারীর বর্ধিত উপস্থিতি তথ্য"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:853
-#: ../libpurple/protocols/jabber/buddy.c:1023
 msgid "In-Band Bytestreams"
 msgstr "In-Band বাইট-প্রবাহ"
 
-#: ../libpurple/protocols/jabber/buddy.c:855
-#: ../libpurple/protocols/jabber/buddy.c:1025
 msgid "Ad-Hoc Commands"
 msgstr "Ad-Hoc নির্দেশসমূহ"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:857
-#: ../libpurple/protocols/jabber/buddy.c:1027
 msgid "PubSub Service"
 msgstr "PubSub সেবা"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:859
-#: ../libpurple/protocols/jabber/buddy.c:1029
 msgid "SOCKS5 Bytestreams"
 msgstr "SOCKS5 বাইট-প্রবাহ"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:861
-#: ../libpurple/protocols/jabber/buddy.c:1031
 msgid "Out of Band Data"
 msgstr "ব্যান্ড তথ্যের বাইরে"
 
-#: ../libpurple/protocols/jabber/buddy.c:863
-#: ../libpurple/protocols/jabber/buddy.c:1033
 msgid "XHTML-IM"
 msgstr "XHTML-IM"
 
-#: ../libpurple/protocols/jabber/buddy.c:865
-#: ../libpurple/protocols/jabber/buddy.c:1035
 msgid "In-Band Registration"
 msgstr "ইন ব্যান্ড নিবন্ধন"
 
-#: ../libpurple/protocols/jabber/buddy.c:867
-#: ../libpurple/protocols/jabber/buddy.c:1037
 msgid "User Location"
 msgstr "ব্যবহারকারীর অবস্থান"
 
 # fix me tithi
-#: ../libpurple/protocols/jabber/buddy.c:869
-#: ../libpurple/protocols/jabber/buddy.c:1039
 msgid "User Avatar"
 msgstr "ব্যবহারকারী অ্যাভাটার"
 
-#: ../libpurple/protocols/jabber/buddy.c:871
-#: ../libpurple/protocols/jabber/buddy.c:1041
 msgid "Chat State Notifications"
 msgstr "আড্ডার অবস্থার প্রজ্ঞাপন"
 
-#: ../libpurple/protocols/jabber/buddy.c:873
-#: ../libpurple/protocols/jabber/buddy.c:1043
 msgid "Software Version"
 msgstr "সফটওয়্যায় সংস্করণ"
 
 # fix me tithi
-#: ../libpurple/protocols/jabber/buddy.c:875
-#: ../libpurple/protocols/jabber/buddy.c:1045
 msgid "Stream Initiation"
 msgstr "প্রবাহ শুরু করুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:877
-#: ../libpurple/protocols/jabber/buddy.c:1047
-#: ../libpurple/protocols/sametime/sametime.c:3292
 msgid "File Transfer"
 msgstr "ফাইল স্থানান্তর করুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:879
-#: ../libpurple/protocols/jabber/buddy.c:1049
 msgid "User Mood"
 msgstr "ব্যবহাকারীরর পরিমন্ডল"
 
-#: ../libpurple/protocols/jabber/buddy.c:881
-#: ../libpurple/protocols/jabber/buddy.c:1051
 msgid "User Activity"
 msgstr "ব্যবহারকারীর কাজকর্ম"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:883
-#: ../libpurple/protocols/jabber/buddy.c:1053
 msgid "Entity Capabilities"
 msgstr "সত্তার সক্ষমতা"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:885
-#: ../libpurple/protocols/jabber/buddy.c:1055
 msgid "Encrypted Session Negotiations"
 msgstr "সঙ্কেতায়িত অধিবেশনের আলোচনা"
 
-#: ../libpurple/protocols/jabber/buddy.c:887
-#: ../libpurple/protocols/jabber/buddy.c:1057
 msgid "User Tune"
 msgstr "ব্যবহারকারীর সুর"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:889
-#: ../libpurple/protocols/jabber/buddy.c:1059
 msgid "Roster Item Exchange"
 msgstr "রোস্টার বিষয়োপকরণ পরিবর্তন করুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:891
-#: ../libpurple/protocols/jabber/buddy.c:1061
 msgid "Reachability Address"
 msgstr "পৌঁছানোর মতো ঠিকানা"
 
-#: ../libpurple/protocols/jabber/buddy.c:893
-#: ../libpurple/protocols/jabber/buddy.c:1063
 msgid "User Profile"
 msgstr "ব্যবহারকারীর প্রোফাইল"
 
-#: ../libpurple/protocols/jabber/buddy.c:895
-#: ../libpurple/protocols/jabber/buddy.c:1065
 msgid "Jingle"
 msgstr "ছন্দ"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:897
-#: ../libpurple/protocols/jabber/buddy.c:1067
 msgid "Jingle Audio"
 msgstr "ছন্দময় অডিও"
 
-#: ../libpurple/protocols/jabber/buddy.c:899
-#: ../libpurple/protocols/jabber/buddy.c:1069
 msgid "User Nickname"
 msgstr "ব্যবহারকারীর ডাকনাম"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:901
-#: ../libpurple/protocols/jabber/buddy.c:1071
 msgid "Jingle ICE UDP"
 msgstr "ছন্দময় ICE UDP"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:903
-#: ../libpurple/protocols/jabber/buddy.c:1073
 msgid "Jingle ICE TCP"
 msgstr "ছন্দময়  ICE TCP"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:905
-#: ../libpurple/protocols/jabber/buddy.c:1075
 msgid "Jingle Raw UDP"
 msgstr "ছন্দময় Raw UDP"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:907
-#: ../libpurple/protocols/jabber/buddy.c:1077
 msgid "Jingle Video"
 msgstr "ছন্দময় ভিডিও"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:909
-#: ../libpurple/protocols/jabber/buddy.c:1079
 msgid "Jingle DTMF"
 msgstr "ছন্দময় DTMF"
 
-#: ../libpurple/protocols/jabber/buddy.c:911
-#: ../libpurple/protocols/jabber/buddy.c:1081
 msgid "Message Receipts"
 msgstr "বার্তা গ্রহণ করা হয়েছে"
 
-#: ../libpurple/protocols/jabber/buddy.c:913
-#: ../libpurple/protocols/jabber/buddy.c:1083
 msgid "Public Key Publishing"
 msgstr "সর্বসাধারণের কী প্রকাশ করা হচ্ছে"
 
-#: ../libpurple/protocols/jabber/buddy.c:915
-#: ../libpurple/protocols/jabber/buddy.c:1085
 msgid "User Chatting"
 msgstr "ব্যবহারকারী আড্ডা দিচ্ছে"
 
-#: ../libpurple/protocols/jabber/buddy.c:917
-#: ../libpurple/protocols/jabber/buddy.c:1087
 msgid "User Browsing"
 msgstr "ব্যবহাকারী ব্রাউজ করছে"
 
-#: ../libpurple/protocols/jabber/buddy.c:919
-#: ../libpurple/protocols/jabber/buddy.c:1089
 msgid "User Gaming"
 msgstr "ব্যবহারকারীরা খেলছে"
 
-#: ../libpurple/protocols/jabber/buddy.c:921
-#: ../libpurple/protocols/jabber/buddy.c:1091
 msgid "User Viewing"
 msgstr "ব্যবহারকারীরা দেখছে"
 
-#: ../libpurple/protocols/jabber/buddy.c:923
-#: ../libpurple/protocols/jabber/buddy.c:1093
-#: ../libpurple/protocols/silc/ops.c:1613
-#: ../libpurple/protocols/silc/ops.c:1618
-#: ../libpurple/protocols/silc10/ops.c:1612
-#: ../libpurple/protocols/silc10/ops.c:1617
 msgid "Ping"
 msgstr "পিঙ্গ করুন"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:925
-#: ../libpurple/protocols/jabber/buddy.c:1095
 msgid "Stanza Encryption"
 msgstr "স্ট্যানজা সঙ্কেতায়ন"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:927
-#: ../libpurple/protocols/jabber/buddy.c:1097
 msgid "Entity Time"
 msgstr "সত্ত্বার সময়"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:929
-#: ../libpurple/protocols/jabber/buddy.c:1099
 msgid "Delayed Delivery"
 msgstr "বিলম্বিত সরবরাহ"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:931
-#: ../libpurple/protocols/jabber/buddy.c:1101
 msgid "Collaborative Data Objects"
 msgstr "সহযোগি উপাত্ত অবজেক্ট"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:933
-#: ../libpurple/protocols/jabber/buddy.c:1103
 msgid "File Repository and Sharing"
 msgstr "ফাইল ভান্ডার এবং শেয়ার করছে"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:935
-#: ../libpurple/protocols/jabber/buddy.c:1105
 msgid "STUN Service Discovery for Jingle"
 msgstr "ছন্দময়তার জন্য STUN সেবা আবিষ্কার"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:937
-#: ../libpurple/protocols/jabber/buddy.c:1107
 msgid "Simplified Encrypted Session Negotiation"
 msgstr "সহজবোধ্য সঙ্কেতায়িত অধিবেশনের আলোচনা"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:939
-#: ../libpurple/protocols/jabber/buddy.c:1109
 msgid "Hop Check"
 msgstr "হপ পরীক্ষা করুন"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:947
-#: ../libpurple/protocols/jabber/buddy.c:1117
-#: ../libpurple/protocols/oscar/oscar.c:3171
 msgid "Capabilities"
 msgstr "সক্ষমতা"
 
-#: ../libpurple/protocols/jabber/buddy.c:997
-#: ../libpurple/protocols/jabber/jabber.c:1795
-#: ../libpurple/protocols/jabber/jabber.c:1809
-#: ../libpurple/protocols/jabber/jabber.c:1823
-#: ../libpurple/protocols/jabber/jabber.c:1837
-#: ../libpurple/protocols/jabber/jabber.c:1851
 msgid "Priority"
 msgstr "অগ্রাধিকার"
 
-#: ../libpurple/protocols/jabber/buddy.c:1002
-#: ../libpurple/protocols/jabber/libxmpp.c:212
-#: ../libpurple/protocols/jabber/si.c:1088
 msgid "Resource"
 msgstr "সম্পদ"
 
-#: ../libpurple/protocols/jabber/buddy.c:1256
-#: ../libpurple/protocols/silc/ops.c:1008
-#: ../libpurple/protocols/silc10/ops.c:1028
 msgid "Middle Name"
 msgstr "মধ্য নাম"
 
-#: ../libpurple/protocols/jabber/buddy.c:1289
-#: ../libpurple/protocols/jabber/jabber.c:1095
-#: ../libpurple/protocols/oscar/oscar.c:3978
-#: ../libpurple/protocols/oscar/oscar.c:3986
-#: ../libpurple/protocols/qq/buddy_info.c:116
-#: ../libpurple/protocols/silc/ops.c:1044
-#: ../libpurple/protocols/silc10/ops.c:1064
 msgid "Address"
 msgstr "ঠিকানা"
 
-#: ../libpurple/protocols/jabber/buddy.c:1294
 msgid "P.O. Box"
 msgstr "পি.ও. বক্স"
 
-#: ../libpurple/protocols/jabber/buddy.c:1400
 msgid "Photo"
 msgstr "ছবি"
 
-#: ../libpurple/protocols/jabber/buddy.c:1400
 msgid "Logo"
 msgstr "লোগো"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:1971
 msgid "Un-hide From"
 msgstr "এর হতে উন্মোচিত"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:1975
 msgid "Temporarily Hide From"
 msgstr "এর হতে সাময়িকভাবে লুকান"
 
 #. && NOT ME
-#: ../libpurple/protocols/jabber/buddy.c:1983
 msgid "Cancel Presence Notification"
 msgstr "উপস্থিতির প্রজ্ঞাপন বাতিল করুন"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:1990
 msgid "(Re-)Request authorization"
 msgstr "(পুনরায়-)অনুরোধের প্রাপ্তাধিকার"
 
@@ -5794,54 +4076,37 @@
 #. if(NOT ME)
 #. shouldn't this just happen automatically when the buddy is
 #. removed?
-#: ../libpurple/protocols/jabber/buddy.c:1999
 msgid "Unsubscribe"
 msgstr "অংশীদারী ত্যাগ করুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:2014
 msgid "Log In"
 msgstr "লগইন করুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:2018
 msgid "Log Out"
 msgstr "লগ আউট করুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:2064
-#: ../libpurple/protocols/jabber/jabber.c:1808
 msgid "Chatty"
 msgstr "আড্ডাবাজ"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:2068
 msgid "Extended Away"
 msgstr "আরও বর্ধিত করুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:2070
-#: ../libpurple/protocols/jabber/jabber.c:1850
-#: ../libpurple/protocols/oscar/oscar.c:744
-#: ../libpurple/protocols/oscar/oscar.c:6029
-#: ../libpurple/protocols/sametime/sametime.c:3354
 msgid "Do Not Disturb"
 msgstr "বিরক্ত করবেন না"
 
 # tithi
-#: ../libpurple/protocols/jabber/buddy.c:2237
 msgid "JID"
 msgstr "JID"
 
-#: ../libpurple/protocols/jabber/buddy.c:2241
-#: ../libpurple/protocols/jabber/buddy.c:2430
-#: ../libpurple/protocols/oscar/oscar.c:3917
 msgid "Last Name"
 msgstr "শেষ নাম"
 
-#: ../libpurple/protocols/jabber/buddy.c:2273
 msgid "The following are the results of your search"
 msgstr "নিম্নোক্ত আপনার অনুসন্ধানের ফলাফল"
 
 # fix-me tithi
 #. current comment from Jabber User Directory users.jabber.org
-#: ../libpurple/protocols/jabber/buddy.c:2358
 msgid ""
 "Find a contact by entering the search criteria in the given fields. Note: "
 "Each field supports wild card searches (%)"
@@ -5849,179 +4114,121 @@
 "প্রদত্ত ক্ষেত্রে সন্ধান বৈশিষ্ট্য প্রবেশ করার মাধ্যমে একটি যোগাযোগ খুঁজুন। নোট: প্রত্যেক "
 "ক্ষেত্র ওয়াইল্ড কার্ড অনুসন্ধানসমূহ সমর্থন করে (%)"
 
-#: ../libpurple/protocols/jabber/buddy.c:2378
 msgid "Directory Query Failed"
 msgstr "নির্দেশিকা জিজ্ঞাসা ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/jabber/buddy.c:2379
 msgid "Could not query the directory server."
 msgstr "নির্দেশক সার্ভার সম্পর্কে প্রশ্ন করেনি"
 
 #. Try to translate the message (see static message
 #. list in jabber_user_dir_comments[])
-#: ../libpurple/protocols/jabber/buddy.c:2413
 #, c-format
 msgid "Server Instructions: %s"
 msgstr "সার্ভার নিয়মাবলী: %s"
 
-#: ../libpurple/protocols/jabber/buddy.c:2420
 msgid "Fill in one or more fields to search for any matching XMPP users."
 msgstr "যেকোনো সমন্বয়করণ XMPP ব্যবহারকারীর জন্য খুঁজতে এক বা একাধিক ক্ষেত্র পূরন করুন।"
 
-#: ../libpurple/protocols/jabber/buddy.c:2440
-#: ../libpurple/protocols/novell/novell.c:1497
-#: ../libpurple/protocols/oscar/oscar.c:3920
-#: ../libpurple/protocols/oscar/oscar.c:3929
 msgid "Email Address"
 msgstr "ই-মেইল ঠিকানা"
 
-#: ../libpurple/protocols/jabber/buddy.c:2449
-#: ../libpurple/protocols/jabber/buddy.c:2450
 msgid "Search for XMPP users"
 msgstr "XMPP ব্যবহারকারীর জন্য অনুসন্ধান করুন"
 
 #. "Search"
-#: ../libpurple/protocols/jabber/buddy.c:2451
-#: ../libpurple/protocols/qq/group.c:111
-#: ../libpurple/protocols/sametime/sametime.c:5671
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:474
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:356
 msgid "Search"
 msgstr "খুঁজুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:2466
 msgid "Invalid Directory"
 msgstr "অবৈধ নির্দেশিকা"
 
-#: ../libpurple/protocols/jabber/buddy.c:2483
 msgid "Enter a User Directory"
 msgstr "একটি ব্যবহারকারীর নির্দেশিকা প্রবেশ করান"
 
-#: ../libpurple/protocols/jabber/buddy.c:2484
 msgid "Select a user directory to search"
 msgstr "খোঁজার জন্য একটি ব্যবহারকারী নির্দেশিকা নির্বাচন করুন"
 
-#: ../libpurple/protocols/jabber/buddy.c:2487
 msgid "Search Directory"
 msgstr "অনুসন্ধান নির্দেশিকা"
 
-#: ../libpurple/protocols/jabber/chat.c:42
-#: ../libpurple/protocols/oscar/oscar.c:5540
-#: ../libpurple/protocols/yahoo/yahoochat.c:1057
 msgid "_Room:"
 msgstr "কক্ষ: (_R)"
 
-#: ../libpurple/protocols/jabber/chat.c:48
 msgid "_Server:"
 msgstr "সার্ভার: (_S)"
 
-#: ../libpurple/protocols/jabber/chat.c:54
 msgid "_Handle:"
 msgstr "হ্যান্ডেল: (_H)"
 
-#: ../libpurple/protocols/jabber/chat.c:232
 #, c-format
 msgid "%s is not a valid room name"
 msgstr "%s বৈধ কক্ষের নাম নয়"
 
-#: ../libpurple/protocols/jabber/chat.c:233
 msgid "Invalid Room Name"
 msgstr "অবৈধ কক্ষের নাম"
 
-#: ../libpurple/protocols/jabber/chat.c:239
 #, c-format
 msgid "%s is not a valid server name"
 msgstr "%s বৈধ সার্ভার নাম নয়"
 
-#: ../libpurple/protocols/jabber/chat.c:240
-#: ../libpurple/protocols/jabber/chat.c:241
 msgid "Invalid Server Name"
 msgstr "অবৈধ সার্ভার নাম"
 
-#: ../libpurple/protocols/jabber/chat.c:246
 #, c-format
 msgid "%s is not a valid room handle"
 msgstr "%s বৈধ কক্ষ নিয়ন্ত্রণ নয়"
 
-#: ../libpurple/protocols/jabber/chat.c:247
-#: ../libpurple/protocols/jabber/chat.c:248
 msgid "Invalid Room Handle"
 msgstr "অবৈধ কক্ষ নিয়ন্ত্রণ"
 
-#: ../libpurple/protocols/jabber/chat.c:422
 msgid "Configuration error"
 msgstr "বিন্যাসন ত্রুটি"
 
-#: ../libpurple/protocols/jabber/chat.c:431
-#: ../libpurple/protocols/jabber/chat.c:574
 msgid "Unable to configure"
 msgstr "বিন্যাস করতে অক্ষম"
 
-#: ../libpurple/protocols/jabber/chat.c:446
 msgid "Room Configuration Error"
 msgstr "কক্ষ বিন্যাসন ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/jabber/chat.c:447
 msgid "This room is not capable of being configured"
 msgstr "এই কক্ষটি বিন্যাসিত হতে সক্ষম নয়"
 
-#: ../libpurple/protocols/jabber/chat.c:496
-#: ../libpurple/protocols/jabber/chat.c:565
 msgid "Registration error"
 msgstr "নিবন্ধণ ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/jabber/chat.c:653
 msgid "Nick changing not supported in non-MUC chatrooms"
 msgstr "ডাকনাম পরিবর্তন MUC-বহিঃস্থ আড্ডারুমে সমর্থিত নয়"
 
-#: ../libpurple/protocols/jabber/chat.c:705
-#: ../libpurple/protocols/jabber/chat.c:716
-#: ../libpurple/protocols/silc/ops.c:1473
-#: ../libpurple/protocols/silc10/ops.c:1451
 msgid "Error retrieving room list"
 msgstr "রুম তালিকা উদ্ধার করার ত্রুটি"
 
-#: ../libpurple/protocols/jabber/chat.c:764
 msgid "Invalid Server"
 msgstr "অবৈধ সার্ভার"
 
-#: ../libpurple/protocols/jabber/chat.c:808
 msgid "Enter a Conference Server"
 msgstr "একটি কনফারেন্স সার্ভার প্রবেশ করান"
 
-#: ../libpurple/protocols/jabber/chat.c:809
 msgid "Select a conference server to query"
 msgstr "অনুসন্ধানের জন্য একটি কনফারেন্স সার্ভার প্রবেশ করান"
 
-#: ../libpurple/protocols/jabber/chat.c:812
 msgid "Find Rooms"
 msgstr "কক্ষ খুঁজুন"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:185
 msgid "You require encryption, but it is not available on this server."
 msgstr "আপনার সঙ্কেতায়ন প্রয়োজন, কিন্তু এটি এই সার্ভারটিতে সহজলভ্য নয়।"
 
-#: ../libpurple/protocols/jabber/jabber.c:309
-#: ../libpurple/protocols/jabber/jabber.c:334
 msgid "Write error"
 msgstr "লিখন ত্রুটি"
 
-#: ../libpurple/protocols/jabber/jabber.c:452
 msgid "Ping timeout"
 msgstr "পিঙ্গ সময়-উত্তীর্ণ হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:506
-#: ../libpurple/protocols/jabber/jabber.c:551
 msgid "Read Error"
 msgstr "পাঠ ত্রুটি"
 
-#: ../libpurple/protocols/jabber/jabber.c:592
-#: ../libpurple/protocols/oscar/flap_connection.c:450
-#: ../libpurple/protocols/yahoo/yahoo.c:2613
-#: ../libpurple/protocols/yahoo/yahoo.c:2645
 #, c-format
 msgid ""
 "Could not establish a connection with the server:\n"
@@ -6030,655 +4237,463 @@
 "সার্ভারের সাথে সংযোগ স্থাপন করতে পারে না:\n"
 "%s"
 
-#: ../libpurple/protocols/jabber/jabber.c:656
 msgid "Unable to create socket"
 msgstr "সকেট তৈরী করতে অক্ষম"
 
-#: ../libpurple/protocols/jabber/jabber.c:729
-#: ../libpurple/protocols/jabber/jabber.c:1201
 msgid "Invalid XMPP ID"
 msgstr "অবৈধ XMPP ID"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:736
 msgid "Invalid XMPP ID. Domain must be set."
 msgstr "অবৈধ XMPP ID। ডোমেইন অবশ্যই নির্ধারণ করতে হবে।"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:801
 #, c-format
 msgid "Registration of %s@%s successful"
 msgstr "%1s@%2s এর নিবন্ধন সফল"
 
-#: ../libpurple/protocols/jabber/jabber.c:807
 #, c-format
 msgid "Registration to %s successful"
 msgstr "%s এ নিবন্ধন সফল হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:809
-#: ../libpurple/protocols/jabber/jabber.c:810
 msgid "Registration Successful"
 msgstr "নিবন্ধন সফল হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:818
-#: ../libpurple/protocols/jabber/jabber.c:819
 msgid "Registration Failed"
 msgstr "নিবন্ধন ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:837
 #, c-format
 msgid "Registration from %s successfully removed"
 msgstr "%s হতে নিবন্ধন সফলভাবে অপসারণ করা হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:839
-#: ../libpurple/protocols/jabber/jabber.c:840
 msgid "Unregistration Successful"
 msgstr "অনিবন্ধন সফল হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:848
-#: ../libpurple/protocols/jabber/jabber.c:849
 msgid "Unregistration Failed"
 msgstr "অনিবন্ধন ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:1015
-#: ../libpurple/protocols/jabber/jabber.c:1016
 msgid "Already Registered"
 msgstr "ইতোমধ্যে নিবন্ধিত"
 
-#: ../libpurple/protocols/jabber/jabber.c:1103
-#: ../libpurple/protocols/oscar/oscar.c:3980
-#: ../libpurple/protocols/oscar/oscar.c:3988
 msgid "State"
 msgstr "রাজ্য"
 
-#: ../libpurple/protocols/jabber/jabber.c:1107
 msgid "Postal code"
 msgstr "ডাক সংকেত"
 
-#: ../libpurple/protocols/jabber/jabber.c:1111
-#: ../libpurple/protocols/silc/ops.c:1049
-#: ../libpurple/protocols/silc/silc.c:1007
-#: ../libpurple/protocols/silc/util.c:563
-#: ../libpurple/protocols/silc10/ops.c:1069
-#: ../libpurple/protocols/silc10/silc.c:708
-#: ../libpurple/protocols/silc10/util.c:557
 msgid "Phone"
 msgstr "ফোন"
 
-#: ../libpurple/protocols/jabber/jabber.c:1119
 msgid "Date"
 msgstr "তারিখ"
 
-#: ../libpurple/protocols/jabber/jabber.c:1123
 msgid "Unregister"
 msgstr "অনিবন্ধন"
 
-#: ../libpurple/protocols/jabber/jabber.c:1130
 msgid ""
 "Please fill out the information below to change your account registration."
 msgstr "আপনার একাউন্ট নিবন্ধন পরিবর্তন করতে অনুগ্রহ করে নিচের তথ্য পূরণ করুন।"
 
-#: ../libpurple/protocols/jabber/jabber.c:1133
 msgid "Please fill out the information below to register your new account."
 msgstr "আপনার নতুন একাউন্ট নিবন্ধন পরিবর্তন করতে অনুগ্রহ করে নিচের তথ্য পূরণ করুন।"
 
-#: ../libpurple/protocols/jabber/jabber.c:1141
-#: ../libpurple/protocols/jabber/jabber.c:1142
 msgid "Register New XMPP Account"
 msgstr "নতুন XMPP একাউন্ট নিবন্ধন করুন"
 
-#: ../libpurple/protocols/jabber/jabber.c:1143
-#: ../libpurple/protocols/jabber/jabber.c:1152
 msgid "Register"
 msgstr "নিবন্ধন করুন"
 
-#: ../libpurple/protocols/jabber/jabber.c:1148
 #, c-format
 msgid "Change Account Registration at %s"
 msgstr "%s এ একাউন্ট নিবন্ধন পরিবর্তন করুন"
 
-#: ../libpurple/protocols/jabber/jabber.c:1149
 #, c-format
 msgid "Register New Account at %s"
 msgstr "%s এ নতুন একাউন্ট নিবন্ধন করুন"
 
-#: ../libpurple/protocols/jabber/jabber.c:1152
 msgid "Change Registration"
 msgstr "নিবন্ধন পরিবর্তন করুন"
 
-#: ../libpurple/protocols/jabber/jabber.c:1248
-#: ../libpurple/protocols/jabber/jabber.c:1249
 msgid "Error unregistering account"
 msgstr "একাউন্ট নিবন্ধনহীন করার ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1254
-#: ../libpurple/protocols/jabber/jabber.c:1255
 msgid "Account successfully unregistered"
 msgstr "একাউন্ট সফলভাবে অনিবন্ধীত করা হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:1427
 msgid "Initializing Stream"
 msgstr "স্ট্রীম প্রস্তুত করছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:1432
 msgid "Initializing SSL/TLS"
 msgstr "SSL/TLS প্রস্তুত করছে"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1436
-#: ../libpurple/protocols/msn/session.c:412
-#: ../libpurple/protocols/msnp9/session.c:374
 msgid "Authenticating"
 msgstr "প্রমাণীকরণ"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1454
 msgid "Re-initializing Stream"
 msgstr "স্ট্রীম পুনরায় প্রস্তুত করছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:1536
-#: ../libpurple/protocols/jabber/jabber.c:1537
 msgid "Server doesn't support blocking"
 msgstr "সার্ভার আবদ্ধকরণ সমর্থন করে না"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1648
-#: ../libpurple/protocols/jabber/jabber.c:2105
-#: ../libpurple/protocols/jabber/jabber.c:2148
-#: ../libpurple/protocols/jabber/jabber.c:2186
-#: ../libpurple/protocols/oscar/oscar.c:908
-#: ../libpurple/protocols/oscar/oscar.c:5823
 msgid "Not Authorized"
 msgstr "অনুমোদিত নয়"
 
-#: ../libpurple/protocols/jabber/jabber.c:1695
 msgid "Both"
 msgstr "উভয়"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1697
 msgid "From (To pending)"
 msgstr "হতে (অমীমাংসিত)"
 
-#: ../libpurple/protocols/jabber/jabber.c:1699
 msgid "From"
 msgstr "হতে"
 
-#: ../libpurple/protocols/jabber/jabber.c:1702
 msgid "To"
 msgstr "প্রতি"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1704
 msgid "None (To pending)"
 msgstr "কোনটি নয় (অমীমাংসিত)"
 
-#: ../libpurple/protocols/jabber/jabber.c:1706
-#: ../pidgin/plugins/gevolution/eds-utils.c:73
-#: ../pidgin/plugins/gevolution/eds-utils.c:86
 msgid "None"
 msgstr "কোনটি না"
 
-#: ../libpurple/protocols/jabber/jabber.c:1709
 msgid "Subscription"
 msgstr "শেয়ারকরণ"
 
-#: ../libpurple/protocols/jabber/jabber.c:1719
-#: ../libpurple/protocols/jabber/jabber.c:1722
-#: ../libpurple/protocols/jabber/jabber.c:1797
-#: ../libpurple/protocols/jabber/jabber.c:1811
-#: ../libpurple/protocols/jabber/jabber.c:1825
-#: ../libpurple/protocols/jabber/jabber.c:1839
-#: ../libpurple/protocols/jabber/jabber.c:1853
-#: ../libpurple/protocols/jabber/usermood.c:181
-#: ../libpurple/protocols/silc/buddy.c:1572
-#: ../libpurple/protocols/silc/ops.c:1225
-#: ../libpurple/protocols/silc10/buddy.c:1572
-#: ../libpurple/protocols/silc10/ops.c:1207
 msgid "Mood"
 msgstr "অবস্থা"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1731
-#: ../libpurple/protocols/msn/msn.c:715
 msgid "Now Listening"
 msgstr "এখন শুনছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:1798
-#: ../libpurple/protocols/jabber/jabber.c:1812
-#: ../libpurple/protocols/jabber/jabber.c:1826
-#: ../libpurple/protocols/jabber/jabber.c:1840
-#: ../libpurple/protocols/jabber/jabber.c:1854
 msgid "Mood Text"
 msgstr "মোড পাঠ"
 
-#: ../libpurple/protocols/jabber/jabber.c:1800
-#: ../libpurple/protocols/jabber/jabber.c:1814
-#: ../libpurple/protocols/jabber/jabber.c:1828
-#: ../libpurple/protocols/jabber/jabber.c:1842
-#: ../libpurple/protocols/jabber/jabber.c:1856
 msgid "Allow Buzz"
 msgstr "বাজ অনুমোদন করুন"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1874
 msgid "Tune Artist"
 msgstr "টিউন শিল্পী"
 
-#: ../libpurple/protocols/jabber/jabber.c:1875
 msgid "Tune Title"
 msgstr "টিউন শিরোনাম"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1876
 msgid "Tune Album"
 msgstr "টিউন অ্যালবাম"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1877
 msgid "Tune Genre"
 msgstr "টিউনের ধরন"
 
-#: ../libpurple/protocols/jabber/jabber.c:1878
 msgid "Tune Comment"
 msgstr "টিউনের মন্তব্য"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1879
 msgid "Tune Track"
 msgstr "টিউন গতিপথ"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1880
 msgid "Tune Time"
 msgstr "টিউন সময়"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1881
 msgid "Tune Year"
 msgstr "টিউন সন"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:1882
 msgid "Tune URL"
 msgstr "টিউন URL"
 
-#: ../libpurple/protocols/jabber/jabber.c:1898
 msgid "Password Changed"
 msgstr "গুপ্তসংকেত পরিবর্তিত হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:1899
 msgid "Your password has been changed."
 msgstr "আপনার গুপ্তসংকেত পরিবর্তিত হয়েছে।"
 
-#: ../libpurple/protocols/jabber/jabber.c:1905
-#: ../libpurple/protocols/jabber/jabber.c:1906
 msgid "Error changing password"
 msgstr "গুপ্তসংকেত পরিবর্তনে ত্রুটি"
 
-#: ../libpurple/protocols/jabber/jabber.c:1963
 msgid "Password (again)"
 msgstr "গুপ্তসংকেত (আবার)"
 
-#: ../libpurple/protocols/jabber/jabber.c:1969
-#: ../libpurple/protocols/jabber/jabber.c:1970
 msgid "Change XMPP Password"
 msgstr "XMPP গুপ্তসংকেত পরিবর্তন করুন"
 
-#: ../libpurple/protocols/jabber/jabber.c:1970
 msgid "Please enter your new password"
 msgstr "আপনার নতুন গুপ্তসংকেতটি প্রবেশ করান"
 
-#: ../libpurple/protocols/jabber/jabber.c:1984
-#: ../libpurple/protocols/oscar/oscar.c:6612
-#: ../libpurple/protocols/silc/silc.c:1328
-#: ../libpurple/protocols/silc10/silc.c:1029
 msgid "Set User Info..."
 msgstr "ব্যবহারকারীর তথ্য নির্ধারণ করুন..."
 
 #. if (js->protocol_options & CHANGE_PASSWORD) {
-#: ../libpurple/protocols/jabber/jabber.c:1989
-#: ../libpurple/protocols/oscar/oscar.c:6623
-#: ../libpurple/protocols/silc/silc.c:1324
-#: ../libpurple/protocols/silc10/silc.c:1025
 msgid "Change Password..."
 msgstr "গুপ্তসংকেত পরিবর্তন করুন..."
 
 #. }
-#: ../libpurple/protocols/jabber/jabber.c:1994
 msgid "Search for Users..."
 msgstr "ব্যবহারকারীর জন্য খুঁজুন..."
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2085
 msgid "Bad Request"
 msgstr "খারাপ অনুরোধ"
 
-#: ../libpurple/protocols/jabber/jabber.c:2087
 msgid "Conflict"
 msgstr "দ্বন্দ্ব"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2089
 msgid "Feature Not Implemented"
 msgstr "বৈশিষ্ট্য এখনও বাস্তবায়িত হয়নি"
 
-#: ../libpurple/protocols/jabber/jabber.c:2091
 msgid "Forbidden"
 msgstr "নিষিদ্ধ"
 
-#: ../libpurple/protocols/jabber/jabber.c:2093
 msgid "Gone"
 msgstr "চলে গেছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:2095
-#: ../libpurple/protocols/jabber/jabber.c:2176
 msgid "Internal Server Error"
 msgstr "অভ্যন্তরীণ সার্ভার ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2097
 msgid "Item Not Found"
 msgstr "বিষয়োপকরণ খুঁজে পাওয়া যায়নি"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2099
 msgid "Malformed XMPP ID"
 msgstr "বিকৃত XMPP ID"
 
-#: ../libpurple/protocols/jabber/jabber.c:2101
 msgid "Not Acceptable"
 msgstr "গ্রহণযোগ্য নয়"
 
-#: ../libpurple/protocols/jabber/jabber.c:2103
 msgid "Not Allowed"
 msgstr "অনুমোদিত নয়"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2107
 msgid "Payment Required"
 msgstr "অর্থপ্রদান প্রয়োজন"
 
-#: ../libpurple/protocols/jabber/jabber.c:2109
 msgid "Recipient Unavailable"
 msgstr "প্রাপক অপ্রাপ্য"
 
-#: ../libpurple/protocols/jabber/jabber.c:2113
 msgid "Registration Required"
 msgstr "নিবন্ধন প্রয়োজন"
 
-#: ../libpurple/protocols/jabber/jabber.c:2115
 msgid "Remote Server Not Found"
 msgstr "দূরবর্তী সার্ভার খুঁজে পাওয়া যায়নি"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2117
 msgid "Remote Server Timeout"
 msgstr "দূরবর্তী সার্ভারের সময় উত্তীর্ণ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2119
 msgid "Server Overloaded"
 msgstr "সার্ভার অতিরিক্ত বোঝাইকৃত"
 
-#: ../libpurple/protocols/jabber/jabber.c:2121
 msgid "Service Unavailable"
 msgstr "পরিসেবা অপ্রাপ্য"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2123
 msgid "Subscription Required"
 msgstr "শেয়ারকরণ প্রয়োজন"
 
-#: ../libpurple/protocols/jabber/jabber.c:2125
 msgid "Unexpected Request"
 msgstr "অপ্রত্যাশিত অনুরোধ"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2133
 msgid "Authorization Aborted"
 msgstr "প্রাপ্তাধিকার বাতিলকৃত"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2135
 msgid "Incorrect encoding in authorization"
 msgstr "প্রাপ্তাধিকারে ত্রুটিপূর্ণ সঙ্কেতায়ন"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2137
 msgid "Invalid authzid"
 msgstr "অবৈধ প্রাপ্তাধিকার"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2139
 msgid "Invalid Authorization Mechanism"
 msgstr "অবৈধ প্রাপ্তাধিকার কৌশল"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2142
 msgid "Authorization mechanism too weak"
 msgstr "প্রাপ্তাধিকার কৌশল খুব দূর্বল"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2150
 msgid "Temporary Authentication Failure"
 msgstr "সাময়িক প্রমাণীকরণ ব্যর্থ"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2153
 msgid "Authentication Failure"
 msgstr "প্রমাণীকরণ ব্যর্থ"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2161
 msgid "Bad Format"
 msgstr "খারাপ বিন্যাস"
 
-#: ../libpurple/protocols/jabber/jabber.c:2163
 msgid "Bad Namespace Prefix"
 msgstr "খারাপ নাম-পরিসরের উপপদ"
 
-#: ../libpurple/protocols/jabber/jabber.c:2166
 msgid "Resource Conflict"
 msgstr "সম্পদ দ্বন্দ্ব তৈরি করে"
 
-#: ../libpurple/protocols/jabber/jabber.c:2168
-#: ../libpurple/protocols/silc/silc.c:351
-#: ../libpurple/protocols/silc10/ops.c:1725
 msgid "Connection Timeout"
 msgstr "সংযোগ সময় উত্তীর্ণ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2170
 msgid "Host Gone"
 msgstr "হোস্ট চলে গেছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:2172
 msgid "Host Unknown"
 msgstr "অজানা হোস্ট"
 
-#: ../libpurple/protocols/jabber/jabber.c:2174
 msgid "Improper Addressing"
 msgstr "অনুপযুক্ত নির্দেশকরণ"
 
-#: ../libpurple/protocols/jabber/jabber.c:2178
 msgid "Invalid ID"
 msgstr "অবৈধ আইডি"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2180
 msgid "Invalid Namespace"
 msgstr "অবৈধ নামপরিসর"
 
-#: ../libpurple/protocols/jabber/jabber.c:2182
 msgid "Invalid XML"
 msgstr "অবৈধ এক্সএমএল"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2184
 msgid "Non-matching Hosts"
 msgstr "সমন্বয়হীন হোস্ট"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2188
 msgid "Policy Violation"
 msgstr "নীতিমালা লঙ্ঘন"
 
-#: ../libpurple/protocols/jabber/jabber.c:2190
 msgid "Remote Connection Failed"
 msgstr "দূরবর্তী সংযোগ ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/jabber/jabber.c:2192
 msgid "Resource Constraint"
 msgstr "সম্পদের  সীমাবদ্ধতা"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2194
 msgid "Restricted XML"
 msgstr "নিয়ন্ত্রিত XML"
 
-#: ../libpurple/protocols/jabber/jabber.c:2196
 msgid "See Other Host"
 msgstr "অন্যান্য হোষ্ট দেখুন"
 
-#: ../libpurple/protocols/jabber/jabber.c:2198
 msgid "System Shutdown"
 msgstr "সিস্টেম বন্ধ করুন"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2200
 msgid "Undefined Condition"
 msgstr "অনির্ধারিত শর্ত"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2202
 msgid "Unsupported Encoding"
 msgstr "অসমর্থিত সঙ্কেতায়ন"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2204
 msgid "Unsupported Stanza Type"
 msgstr "অসমর্থিত স্ট্যানজা ধরন"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2206
 msgid "Unsupported Version"
 msgstr "অসমর্থিত সংস্করণ"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2208
 msgid "XML Not Well Formed"
 msgstr "XMLসঠিক ভাবে গঠিত নয়"
 
-#: ../libpurple/protocols/jabber/jabber.c:2210
 msgid "Stream Error"
 msgstr "স্ট্রীম ত্রুটি"
 
-#: ../libpurple/protocols/jabber/jabber.c:2295
 #, c-format
 msgid "Unable to ban user %s"
 msgstr "%s ব্যবহারকারীকে নিষিদ্ধ করতে অক্ষম"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2315
 #, c-format
 msgid "Unknown affiliation: \"%s\""
 msgstr "অজানা সম্পর্ক: \"%s\""
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2320
 #, c-format
 msgid "Unable to affiliate user %s as \"%s\""
 msgstr "%1s ব্যবহারকারীকে \"%2s\" হিসেবে সম্পর্কিত করতে অসমর্থ"
 
-#: ../libpurple/protocols/jabber/jabber.c:2339
 #, c-format
 msgid "Unknown role: \"%s\""
 msgstr "অজানা ভূমিকা: \"%s\""
 
-#: ../libpurple/protocols/jabber/jabber.c:2344
 #, c-format
 msgid "Unable to set role \"%s\" for user: %s"
 msgstr "ব্যবহারকারীর জন্য \"%1s\" ভূমিকা নির্ধারণ করতে ব্যর্থ: %2s"
 
-#: ../libpurple/protocols/jabber/jabber.c:2397
 #, c-format
 msgid "Unable to kick user %s"
 msgstr "%s ব্যবহারকারীকে বের করে দিতে অক্ষম"
 
-#: ../libpurple/protocols/jabber/jabber.c:2428
 #, c-format
 msgid "Unable to ping user %s"
 msgstr "%s ব্যবহারকারীকে পিঙ্গ করতে অক্ষম"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2446
-#: ../libpurple/protocols/jabber/jabber.c:2457
 #, c-format
 msgid "Unable to buzz, because there is nothing known about user %s."
 msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারীর সম্পর্কে কোনো কিছু জানা নেই।"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2452
 #, c-format
 msgid "Unable to buzz, because user %s might be offline."
 msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারীরা সম্ভবত অফলাইনে।"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2483
 #, c-format
 msgid "Unable to buzz, because the user %s does not support it."
 msgstr "বাজ দিতে ব্যর্থ, কারণ %s ব্যবহারকারী এটি সমর্থন করে না।"
 
 #. Yahoo only supports one attention command: the 'buzz'.
 #. This is index number YAHOO_BUZZ.
-#: ../libpurple/protocols/jabber/jabber.c:2503
-#: ../libpurple/protocols/yahoo/yahoo.c:4218
 msgid "Buzz"
 msgstr "বাজ"
 
-#: ../libpurple/protocols/jabber/jabber.c:2504
-#: ../libpurple/protocols/yahoo/yahoo.c:4219
 #, c-format
 msgid "%s has buzzed you!"
 msgstr "%s আপনাকে বাজ দিয়েছে!"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2504
-#: ../libpurple/protocols/yahoo/yahoo.c:4219
 #, c-format
 msgid "Buzzing %s..."
 msgstr "%s বাজ দিচ্ছে..."
 
-#: ../libpurple/protocols/jabber/jabber.c:2535
 msgid "config:  Configure a chat room."
 msgstr "বিন্যাস: একটি আড্ডার কক্ষ পছন্দসই বিন্যাস করুন।"
 
-#: ../libpurple/protocols/jabber/jabber.c:2539
 msgid "configure:  Configure a chat room."
 msgstr "বিন্যাসন: একটি আড্ডার কক্ষ পছন্দসই বিন্যাস করুন।"
 
-#: ../libpurple/protocols/jabber/jabber.c:2548
 msgid "part [room]:  Leave the room."
 msgstr "অংশ [কক্ষ]:  কক্ষ ত্যাগ করুন।"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2553
 msgid "register:  Register with a chat room."
 msgstr "নিবন্ধন করুন: আড্ডা রুমের সাথে নিবন্ধন করুন।"
 
-#: ../libpurple/protocols/jabber/jabber.c:2559
 msgid "topic [new topic]:  View or change the topic."
 msgstr "বিষয়বস্তু [নতুন বিষয়বস্তু]:  বিষয়বস্তু প্রদর্শন অথবা পরিবর্তন করুন।"
 
-#: ../libpurple/protocols/jabber/jabber.c:2565
 msgid "ban &lt;user&gt; [reason]:  Ban a user from the room."
 msgstr ""
 "নিষিদ্ধ &lt;ব্যবহারকারী&2gt; [কারণ]: একজন ব্যবহারকারীকে কক্ষ থেকে নিষিদ্ধ করুন।"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2571
 msgid ""
 "affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
 "affiliation with the room."
@@ -6687,7 +4702,6 @@
 "সঙ্গে একটি ব্যবহারকারীর সম্পর্ক নির্ধারণ করুন।"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2577
 msgid ""
 "role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
 "role in the room."
@@ -6695,23 +4709,19 @@
 "ভূমিকা &1lt;ব্যবহারকারী&2gt; &3lt;সমন্বয়জ্ঞ|অংশগ্রহনকারী|পরিদর্শক|কেউনা&4gt;: কক্ষে "
 "ব্যবহারকারীর ভূমিকা নির্ধারণ করুন।"
 
-#: ../libpurple/protocols/jabber/jabber.c:2583
 msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
 msgstr ""
 "আমন্ত্রণ &1lt;ব্যবহাকারী&2gt; [বার্তা]: একজন ব্যবহারকারীকে কক্ষে আমন্ত্রণ জানান"
 
-#: ../libpurple/protocols/jabber/jabber.c:2589
 msgid "join: &lt;room&gt; [password]:  Join a chat on this server."
 msgstr "যোগ দিন: &1lt;কক্ষ&2gt; [গুপ্তসঙ্কেত]:  এই সার্ভারের একটি আড্ডায় অংশ নিন।"
 
-#: ../libpurple/protocols/jabber/jabber.c:2595
 msgid "kick &lt;user&gt; [reason]:  Kick a user from the room."
 msgstr ""
 "বের করে দিন &1lt;ব্যবহারকারী&2gt; [কারণ]:  কক্ষ থেকে একজন ব্যবহারকারীকে বের করে "
 "দিন।"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2600
 msgid ""
 "msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
 msgstr ""
@@ -6719,14 +4729,11 @@
 "বার্তা পাঠান।"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2606
 msgid "ping &lt;jid&gt;:\tPing a user/component/server."
 msgstr ""
 "ping &lt;jid&gt;:                    একজন ব্যবহারকারী/উপকরণ/সার্ভারকে পিঙ্গ করুন।"
 
 # tithi
-#: ../libpurple/protocols/jabber/jabber.c:2611
-#: ../libpurple/protocols/yahoo/yahoo.c:4242
 msgid "buzz: Buzz a user to get their attention"
 msgstr "বাজ: ব্যবহারকারীকে তার মনযোগ পেতে বাজ দিন"
 
@@ -6740,110 +4747,83 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/jabber/libxmpp.c:172
-#: ../libpurple/protocols/jabber/libxmpp.c:174
 msgid "XMPP Protocol Plugin"
 msgstr "XMPP প্রটোকল প্লাগইন"
 
 #. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
-#: ../libpurple/protocols/jabber/libxmpp.c:208 ../pidgin/gtkaccount.c:535
 msgid "Domain"
 msgstr "ডোমেইন"
 
 # tithi
-#: ../libpurple/protocols/jabber/libxmpp.c:216
 msgid "Require SSL/TLS"
 msgstr "SSL/TSL প্রয়োজন"
 
 # tithi
-#: ../libpurple/protocols/jabber/libxmpp.c:220
 msgid "Force old (port 5223) SSL"
 msgstr "পুরাতন (পোর্ট ৫২২৩) SSL কে চাপ দিন"
 
 # tithi
-#: ../libpurple/protocols/jabber/libxmpp.c:225
 msgid "Allow plaintext auth over unencrypted streams"
 msgstr "অসঙ্কেতায়িত স্ট্রীমে সরল-পাঠ অধিকার অনুমোদন করুন"
 
-#: ../libpurple/protocols/jabber/libxmpp.c:230
-#: ../libpurple/protocols/myspace/myspace.c:3630
-#: ../libpurple/protocols/simple/simple.c:2147
 msgid "Connect port"
 msgstr "সংযোগ পোর্ট"
 
 #. TODO: default to automatically try different ports. Make the user be
 #. * able to set the first port to try (like LastConnectedPort in Windows client).
 #. Account options
-#: ../libpurple/protocols/jabber/libxmpp.c:234
-#: ../libpurple/protocols/myspace/myspace.c:3627
-#: ../libpurple/protocols/silc/silc.c:2177
-#: ../libpurple/protocols/silc10/silc.c:1900
 msgid "Connect server"
 msgstr "সংযোগ সার্ভার"
 
-#: ../libpurple/protocols/jabber/libxmpp.c:239
 msgid "File transfer proxies"
 msgstr "ফাইল স্থানান্তরণ প্রক্সি"
 
 # tithi
 #. this should probably be part of global smiley theme settings later on,
 #. shared with MSN
-#: ../libpurple/protocols/jabber/libxmpp.c:248
 msgid "Show Custom Smileys"
 msgstr "স্বনির্বাচিত স্মাইলিগুলো প্রদর্শন করুন"
 
-#: ../libpurple/protocols/jabber/message.c:110
 #, c-format
 msgid "%s has left the conversation."
 msgstr "%s কথোপকথন ত্যাগ করেছে।"
 
-#: ../libpurple/protocols/jabber/message.c:166
 #, c-format
 msgid "Message from %s"
 msgstr "%s হতে বার্তা"
 
-#: ../libpurple/protocols/jabber/message.c:230
 #, c-format
 msgid "%s has set the topic to: %s"
 msgstr "%1s বিষয়বস্তু নির্ধারণ করেছেন: %2s"
 
-#: ../libpurple/protocols/jabber/message.c:232
 #, c-format
 msgid "The topic is: %s"
 msgstr "বিষয়বস্তু হলো: %s"
 
-#: ../libpurple/protocols/jabber/message.c:280
 #, c-format
 msgid "Message delivery to %s failed: %s"
 msgstr "%1s এ বার্তা পাঠানো ব্যর্থ হয়েছে: %2s"
 
-#: ../libpurple/protocols/jabber/message.c:283
 msgid "XMPP Message Error"
 msgstr "XMPP বার্তা ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/jabber/message.c:589
 #, c-format
 msgid "(Code %s)"
 msgstr "(কোড %s)"
 
 # tithi
-#: ../libpurple/protocols/jabber/parser.c:251
 msgid "XML Parse error"
 msgstr "XML পার্স ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/jabber/presence.c:445
 msgid "Unknown Error in presence"
 msgstr "বর্তমানে অজানা ত্রুটি"
 
-#: ../libpurple/protocols/jabber/presence.c:528
-#: ../libpurple/protocols/jabber/presence.c:529
 msgid "Create New Room"
 msgstr "নতুন কক্ষ তৈরী করুন"
 
 # tithi
-#: ../libpurple/protocols/jabber/presence.c:530
 msgid ""
 "You are creating a new room.  Would you like to configure it, or accept the "
 "default settings?"
@@ -6851,144 +4831,103 @@
 "আপনি একটি নতুন কক্ষ তৈরি করছেন।  আপনি কি এটি বিন্যাস করতে আগ্রহী, বা পূর্বনির্ধারিত "
 "বিন্যাসনসমূহ গ্রহণ করবেন?"
 
-#: ../libpurple/protocols/jabber/presence.c:536
 msgid "_Configure Room"
 msgstr "কক্ষ বিন্যাস করুন (_C)"
 
-#: ../libpurple/protocols/jabber/presence.c:537
 msgid "_Accept Defaults"
 msgstr "পূর্বনির্ধারিত গ্রহণ (_A)"
 
-#: ../libpurple/protocols/jabber/presence.c:579
 #, c-format
 msgid "Error joining chat %s"
 msgstr "%s আড্ডায় অংশগ্রহনের ত্রুটি"
 
-#: ../libpurple/protocols/jabber/presence.c:582
 #, c-format
 msgid "Error in chat %s"
 msgstr "%s আড্ডায় ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/jabber/si.c:1003
 #, c-format
 msgid "Unable to send file to %s, user does not support file transfers"
 msgstr "%s এ ফাইল পাঠাতে অক্ষম, ব্যবহাকারীরা ফাইল স্থানান্তর সমর্থন করে না"
 
-#: ../libpurple/protocols/jabber/si.c:1004
-#: ../libpurple/protocols/jabber/si.c:1005
-#: ../libpurple/protocols/jabber/si.c:1074
 msgid "File Send Failed"
 msgstr "ফাইল পাঠানো ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/jabber/si.c:1067
 #, c-format
 msgid "Unable to send file to %s, invalid JID"
 msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, অবৈধ JID"
 
-#: ../libpurple/protocols/jabber/si.c:1069
 #, c-format
 msgid "Unable to send file to %s, user is not online"
 msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, ব্যবহারকারী অনলাইনে নেই"
 
-#: ../libpurple/protocols/jabber/si.c:1071
 #, c-format
 msgid "Unable to send file to %s, not subscribed to user presence"
 msgstr "%s এ ফাইল পাঠাতে সমর্থ ছিল না, ব্যবহারকারী উপস্থিতিতে সম্মত নয়"
 
 # fix me tithi
-#: ../libpurple/protocols/jabber/si.c:1086
 #, c-format
 msgid "Please select the resource of %s to which you would like to send a file"
 msgstr ""
 "অনুগ্রহ করে আপনি %s এর এমন একটি সম্পদ নির্বাচন করুন যাতে আপনি একটি ফাইল পাঠাতে চান"
 
-#: ../libpurple/protocols/jabber/si.c:1102
 msgid "Select a Resource"
 msgstr "একটি সম্পদ নির্বাচন করুন"
 
-#: ../libpurple/protocols/jabber/usermood.c:194
-#: ../libpurple/protocols/jabber/usermood.c:195
 msgid "Edit User Mood"
 msgstr "ব্যবহাকারীরর মোড সম্পাদন করুন"
 
 # tithi
-#: ../libpurple/protocols/jabber/usermood.c:196
 msgid "Please select your mood from the list."
 msgstr "অনুগ্রহ করে তালিকা থেকে আপনার মোড নির্বাচন করুন।"
 
-#: ../libpurple/protocols/jabber/usermood.c:198
-#: ../libpurple/protocols/jabber/usernick.c:78
 msgid "Set"
 msgstr "নির্ধারন করুন"
 
-#: ../libpurple/protocols/jabber/usermood.c:206
 msgid "Set Mood..."
 msgstr "মোড নির্ধারন করুন..."
 
-#: ../libpurple/protocols/jabber/usernick.c:76
 msgid "Set User Nickname"
 msgstr "ব্যবহারকারীর ডাকনাম নির্ধারন করুন"
 
-#: ../libpurple/protocols/jabber/usernick.c:76
 msgid "Please specify a new nickname for you."
 msgstr "অনুগ্রহ করে আপনার জন্য নতুন ডাকনাম নির্দিষ্ট করুন।"
 
 # tithi
-#: ../libpurple/protocols/jabber/usernick.c:77
 msgid ""
 "This information is visible to all contacts on your contact list, so choose "
 "something appropriate."
 msgstr ""
 "এই তথ্যটি আপনার যোগাযোগ তালিকার সকল যোগাযোগে দৃশ্যমান, সুতরাং উপযুক্ত কিছু পছন্দ করুন।"
 
-#: ../libpurple/protocols/jabber/usernick.c:100
 msgid "Set Nickname..."
 msgstr "ডাকনাম নির্ধারণ করুন..."
 
-#: ../libpurple/protocols/jabber/xdata.c:379
 msgid "Actions"
 msgstr "কার্যসমূহ"
 
-#: ../libpurple/protocols/jabber/xdata.c:381
 msgid "Select an action"
 msgstr "একটি কার্য নির্বাচন করুন"
 
-#: ../libpurple/protocols/msn/contact.c:801
-msgid "Unable to retrieve MSN Address Book"
-msgstr "MSN ঠিকানা বই পুনরূদ্ধারে ব্যর্থ হয়েছে"
-
 #. 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
-#: ../libpurple/protocols/msn/contact.c:968
-#: ../libpurple/protocols/msn/contact.c:1076
-#: ../libpurple/protocols/msn/userlist.c:695
-#: ../libpurple/protocols/msnp9/userlist.c:653
 #, c-format
 msgid "Unable to add \"%s\"."
 msgstr "\"%s\" যোগ করতে সমর্থ নয়।"
 
-#: ../libpurple/protocols/msn/contact.c:969
-#: ../libpurple/protocols/msn/contact.c:1077
 msgid "Buddy Add error"
 msgstr "বন্ধু যোগ করতে ত্রুটি"
 
-#: ../libpurple/protocols/msn/contact.c:970
-#: ../libpurple/protocols/msn/contact.c:1078
 msgid "The username specified does not exist."
 msgstr "উল্লেখিত ব্য়বহারকারীর নামটি বিদ্যমান নয়।"
 
 # fix me tithi
-#: ../libpurple/protocols/msn/dialog.c:118
-#: ../libpurple/protocols/msnp9/dialog.c:110
 #, c-format
 msgid "Buddy list synchronization issue in %s (%s)"
 msgstr "%1s (%2s) এ বন্ধু তালিকার এককালবর্তীকরণ বিষয়"
 
 # tithi
-#: ../libpurple/protocols/msn/dialog.c:124
-#: ../libpurple/protocols/msnp9/dialog.c:116
 #, c-format
 msgid ""
 "%s on the local list is inside the group \"%s\" but not on the server list. "
@@ -7000,8 +4939,6 @@
 # msgstr ""
 # "স্থানীয় তালিকার %s গ্রুপ এ আছেন কিন্তু সার্ভার তালিকায় নেই।আপনি কি এই বন্ধুটিকে যোগ "
 # "করতে চান?"
-#: ../libpurple/protocols/msn/dialog.c:132
-#: ../libpurple/protocols/msnp9/dialog.c:124
 #, c-format
 msgid ""
 "%s is on the local list but not on the server list. Do you want this buddy "
@@ -7010,387 +4947,304 @@
 "%s স্থানীয় তালিকায় আছে কিন্তু সার্ভার তালিকায় নেই। আপনি কি এই বন্ধুটিকে যোগ করতে "
 "চান?"
 
-#: ../libpurple/protocols/msn/error.c:36
-#: ../libpurple/protocols/msnp9/error.c:36
+#, c-format
 msgid "Unable to parse message"
 msgstr "বার্তা পার্স করা সম্ভব হয়নি"
 
-#: ../libpurple/protocols/msn/error.c:40
-#: ../libpurple/protocols/msnp9/error.c:41
+#, c-format
 msgid "Syntax Error (probably a client bug)"
 msgstr "বাক্যরীতি ত্রুটি (সম্ভবত ক্লায়েন্টের ভূল)"
 
-#: ../libpurple/protocols/msn/error.c:44
-#: ../libpurple/protocols/msnp9/error.c:46
+#, c-format
 msgid "Invalid email address"
 msgstr "অবৈধ ই‌-মেইল ঠিকানা"
 
-#: ../libpurple/protocols/msn/error.c:47
-#: ../libpurple/protocols/msnp9/error.c:49
+#, c-format
 msgid "User does not exist"
 msgstr "ব্যবহারকারী বিদ্যমান নয়"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:50
-#: ../libpurple/protocols/msnp9/error.c:53
+#, c-format
 msgid "Fully qualified domain name missing"
 msgstr "সম্পূর্ণভাবে যোগ্য ডোমেইন নাম নিরুদ্দিষ্ট"
 
-#: ../libpurple/protocols/msn/error.c:53
-#: ../libpurple/protocols/msnp9/error.c:56
+#, c-format
 msgid "Already logged in"
 msgstr "ইতোমধ্যে লগইন করেছে"
 
-#: ../libpurple/protocols/msn/error.c:56
-#: ../libpurple/protocols/msnp9/error.c:59
+#, c-format
 msgid "Invalid username"
 msgstr "অবৈধ ব্যবহারকারীর নাম"
 
-#: ../libpurple/protocols/msn/error.c:59
-#: ../libpurple/protocols/msnp9/error.c:62
+#, c-format
 msgid "Invalid friendly name"
 msgstr "অবৈধ বন্ধুসুলভ নাম"
 
-#: ../libpurple/protocols/msn/error.c:62
-#: ../libpurple/protocols/msnp9/error.c:65
+#, c-format
 msgid "List full"
 msgstr "তালিকা পূর্ণ"
 
-#: ../libpurple/protocols/msn/error.c:65
-#: ../libpurple/protocols/msnp9/error.c:68
+#, c-format
 msgid "Already there"
 msgstr "ইতোমধ্যে সেখানে আছে"
 
-#: ../libpurple/protocols/msn/error.c:69
-#: ../libpurple/protocols/msnp9/error.c:72
+#, c-format
 msgid "Not on list"
 msgstr "তালিকায় নেই"
 
-#: ../libpurple/protocols/msn/error.c:72
-#: ../libpurple/protocols/msnp9/error.c:75
-#: ../libpurple/protocols/zephyr/zephyr.c:759
+#, c-format
 msgid "User is offline"
 msgstr "ব্যবহারকারী অফলাইনে"
 
-#: ../libpurple/protocols/msn/error.c:75
-#: ../libpurple/protocols/msnp9/error.c:78
+#, c-format
 msgid "Already in the mode"
 msgstr "ইতোমধ্যে পরিমন্ডলে আছে"
 
-#: ../libpurple/protocols/msn/error.c:79
-#: ../libpurple/protocols/msnp9/error.c:82
+#, c-format
 msgid "Already in opposite list"
 msgstr "ইতোমধ্যে বিপরীত তালিকায় আছে"
 
-#: ../libpurple/protocols/msn/error.c:83
-#: ../libpurple/protocols/msnp9/error.c:86
+#, c-format
 msgid "Too many groups"
 msgstr "অতিরিক্ত গ্রুপ"
 
-#: ../libpurple/protocols/msn/error.c:86
-#: ../libpurple/protocols/msnp9/error.c:89
+#, c-format
 msgid "Invalid group"
 msgstr "অবৈধ গ্রুপ"
 
-#: ../libpurple/protocols/msn/error.c:89
-#: ../libpurple/protocols/msnp9/error.c:92
+#, c-format
 msgid "User not in group"
 msgstr "ব্যবহারকারী গ্রুপে নেই"
 
-#: ../libpurple/protocols/msn/error.c:92
-#: ../libpurple/protocols/msnp9/error.c:95
+#, c-format
 msgid "Group name too long"
 msgstr "গ্রুপ নামটি অত্যন্ত দীর্ঘ"
 
-#: ../libpurple/protocols/msn/error.c:95
-#: ../libpurple/protocols/msnp9/error.c:98
+#, c-format
 msgid "Cannot remove group zero"
 msgstr "গ্রুপ জিরো মুছে ফেলতে পারে না"
 
-#: ../libpurple/protocols/msn/error.c:99
-#: ../libpurple/protocols/msnp9/error.c:103
+#, c-format
 msgid "Tried to add a user to a group that doesn't exist"
 msgstr "ব্যবহারকারীকে এমন একটি গ্রুপে যোগদানের চেষ্টা করা হয়েছে যা বিদ্যমান নেই"
 
-#: ../libpurple/protocols/msn/error.c:102
-#: ../libpurple/protocols/msnp9/error.c:107
+#, c-format
 msgid "Switchboard failed"
 msgstr "সুইচবোর্ড ব্যর্থ"
 
-#: ../libpurple/protocols/msn/error.c:106
-#: ../libpurple/protocols/msnp9/error.c:111
+#, c-format
 msgid "Notify transfer failed"
 msgstr "প্রজ্ঞাপন স্থানান্তর ব্যর্থ"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:111
-#: ../libpurple/protocols/msnp9/error.c:116
+#, c-format
 msgid "Required fields missing"
 msgstr "প্রয়োজনীয় ক্ষেত্র নিরুদ্দিষ্ট"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:115
-#: ../libpurple/protocols/msnp9/error.c:120
+#, c-format
 msgid "Too many hits to a FND"
 msgstr "একটি FND এ খুব বেশি আঘাত করা হয়েছে"
 
-#: ../libpurple/protocols/msn/error.c:119
-#: ../libpurple/protocols/msnp9/error.c:124
-#: ../libpurple/protocols/oscar/oscar.c:123
+#, c-format
 msgid "Not logged in"
 msgstr "লগইন করা হয়নি"
 
-#: ../libpurple/protocols/msn/error.c:123
-#: ../libpurple/protocols/msnp9/error.c:128
+#, c-format
 msgid "Service temporarily unavailable"
 msgstr "সাময়িকভাবে সেবা পাওয়া যাচ্ছে না"
 
-#: ../libpurple/protocols/msn/error.c:126
-#: ../libpurple/protocols/msnp9/error.c:131
+#, c-format
 msgid "Database server error"
 msgstr "উপাত্তধার সার্ভারের ত্রুটি"
 
-#: ../libpurple/protocols/msn/error.c:130
-#: ../libpurple/protocols/msnp9/error.c:135
+#, c-format
 msgid "Command disabled"
 msgstr "নির্দেশ নিষ্ক্রিয়"
 
-#: ../libpurple/protocols/msn/error.c:134
-#: ../libpurple/protocols/msnp9/error.c:139
+#, c-format
 msgid "File operation error"
 msgstr "ফাইল পরিচালনের ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:138
-#: ../libpurple/protocols/msnp9/error.c:143
+#, c-format
 msgid "Memory allocation error"
 msgstr "মেমোরি বরাদ্দে ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:142
-#: ../libpurple/protocols/msnp9/error.c:147
+#, c-format
 msgid "Wrong CHL value sent to server"
 msgstr "ভূল CHL মান সার্ভারে পাঠিয়েছিল"
 
-#: ../libpurple/protocols/msn/error.c:147
-#: ../libpurple/protocols/msnp9/error.c:152
+#, c-format
 msgid "Server busy"
 msgstr "সার্ভার ব্যস্ত"
 
-#: ../libpurple/protocols/msn/error.c:150
-#: ../libpurple/protocols/msn/error.c:164
-#: ../libpurple/protocols/msn/error.c:222
-#: ../libpurple/protocols/msnp9/error.c:155
-#: ../libpurple/protocols/msnp9/error.c:170
-#: ../libpurple/protocols/msnp9/error.c:230
+#, c-format
 msgid "Server unavailable"
 msgstr "সার্ভার অপ্রাপ্য "
 
 # fix me tithi
-#: ../libpurple/protocols/msn/error.c:153
-#: ../libpurple/protocols/msnp9/error.c:158
+#, c-format
 msgid "Peer notification server down"
 msgstr "পিয়ার প্রজ্ঞাপন সার্ভার নিস্ক্রিয়"
 
-#: ../libpurple/protocols/msn/error.c:157
-#: ../libpurple/protocols/msnp9/error.c:162
+#, c-format
 msgid "Database connect error"
 msgstr "উপাত্তধার সংযোগে ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:161
-#: ../libpurple/protocols/msnp9/error.c:167
+#, c-format
 msgid "Server is going down (abandon ship)"
 msgstr "সার্ভার নিস্ক্রিয় হয়ে যাচ্ছে (ত্যাগ করুন)"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:168
-#: ../libpurple/protocols/msnp9/error.c:174
+#, c-format
 msgid "Error creating connection"
 msgstr "সংযোগ তৈরিতে ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:172
-#: ../libpurple/protocols/msnp9/error.c:179
+#, c-format
 msgid "CVR parameters are either unknown or not allowed"
 msgstr "CVR প্যারামিটারসমূহ হয় অজানা বা অনুমোদিত নয়"
 
-#: ../libpurple/protocols/msn/error.c:176
-#: ../libpurple/protocols/msnp9/error.c:183
+#, c-format
 msgid "Unable to write"
 msgstr "লিখতে সমর্থ নয়"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:179
-#: ../libpurple/protocols/msnp9/error.c:186
+#, c-format
 msgid "Session overload"
 msgstr "অধিবেশন অতিরিক্ত"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:183
-#: ../libpurple/protocols/msnp9/error.c:190
+#, c-format
 msgid "User is too active"
 msgstr "ব্যবহারকারী অনেক বেশি সক্রিয়"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:186
-#: ../libpurple/protocols/msnp9/error.c:193
+#, c-format
 msgid "Too many sessions"
 msgstr "অনেক বেশি অধিবেশন"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:189
-#: ../libpurple/protocols/msnp9/error.c:196
+#, c-format
 msgid "Passport not verified"
 msgstr "পাসপোর্ট পরীক্ষা করা হয়নি"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:192
-#: ../libpurple/protocols/msnp9/error.c:199
+#, c-format
 msgid "Bad friend file"
 msgstr "খারাপ বন্ধু ফাইল"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:196
-#: ../libpurple/protocols/msnp9/error.c:203
+#, c-format
 msgid "Not expected"
 msgstr "প্রত্যাশিত ছিল না"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:201
-#: ../libpurple/protocols/msnp9/error.c:209
+#, c-format
 msgid "Friendly name changes too rapidly"
 msgstr "বন্ধুভাবাপন্ন নাম খুব দ্রুত পরিবর্তন হয়"
 
-#: ../libpurple/protocols/msn/error.c:210
-#: ../libpurple/protocols/msnp9/error.c:218
+#, c-format
 msgid "Server too busy"
 msgstr "সার্ভার অত্যন্ত ব্যস্ত"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:214
-#: ../libpurple/protocols/msnp9/error.c:222
-#: ../libpurple/protocols/oscar/oscar.c:1541
-#: ../libpurple/protocols/silc/silc.c:339
-#: ../libpurple/protocols/silc10/ops.c:1713
-#: ../libpurple/protocols/toc/toc.c:728 ../libpurple/proxy.c:1589
+#, c-format
 msgid "Authentication failed"
 msgstr "প্রমাণীকরণ ব্যর্থ"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:217
-#: ../libpurple/protocols/msnp9/error.c:225
+#, c-format
 msgid "Not allowed when offline"
 msgstr "অফলাইনে অনুমোদিত নয়"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:225
-#: ../libpurple/protocols/msnp9/error.c:233
+#, c-format
 msgid "Not accepting new users"
 msgstr "নতুন ব্যবহারকারী গ্রহণ করছে না"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:228
-#: ../libpurple/protocols/msnp9/error.c:237
+#, c-format
 msgid "Kids Passport without parental consent"
 msgstr "অভিভাবক অনুমোদন ব্যতীত শিশুদের পাসপোর্ট"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:231
-#: ../libpurple/protocols/msnp9/error.c:241
+#, c-format
 msgid "Passport account not yet verified"
 msgstr "এখনও পাসপোর্ট একাউন্ট পরীক্ষা করা হয়নি"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:234
 msgid "Passport account suspended"
 msgstr "পাসপোর্ট একাউন্ট স্থগিত"
 
-#: ../libpurple/protocols/msn/error.c:237
-#: ../libpurple/protocols/msnp9/error.c:244
+#, c-format
 msgid "Bad ticket"
 msgstr "ত্রুটিযুক্ত টিকেট"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:243
-#: ../libpurple/protocols/msnp9/error.c:249
 #, c-format
 msgid "Unknown Error Code %d"
 msgstr "অজানা ত্রুটি কোড %d"
 
 # tithi
-#: ../libpurple/protocols/msn/error.c:258
-#: ../libpurple/protocols/msnp9/error.c:263
 #, c-format
 msgid "MSN Error: %s\n"
 msgstr "MSN ত্রুটি: %s\n"
 
-#: ../libpurple/protocols/msn/group.h:36
 msgid "Other Contacts"
 msgstr "অন্যান্য যোগাযোগসমূহ"
 
-#: ../libpurple/protocols/msn/group.h:39
 msgid "Non-IM Contacts"
 msgstr "IM নয় এমন যোগাযোগসমূহ"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:136 ../libpurple/protocols/msnp9/msn.c:137
 msgid "Nudge"
 msgstr "একান্তে"
 
-#: ../libpurple/protocols/msn/msn.c:137 ../libpurple/protocols/msnp9/msn.c:138
 #, c-format
 msgid "%s has nudged you!"
 msgstr "%s আপনাকে একান্তে যোগ করেছেন!"
 
 # fix-me tithi
-#: ../libpurple/protocols/msn/msn.c:137 ../libpurple/protocols/msnp9/msn.c:138
 #, c-format
 msgid "Nudging %s..."
 msgstr "%s মনোযোগ আকর্ষন করছে..."
 
-#: ../libpurple/protocols/msn/msn.c:150 ../libpurple/protocols/msnp9/msn.c:151
-#: ../libpurple/protocols/myspace/myspace.c:3002
 msgid "Email Address..."
 msgstr "ই-মেইল ঠিকানা..."
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:189 ../libpurple/protocols/msnp9/msn.c:190
 msgid "Your new MSN friendly name is too long."
 msgstr "আপনার নতুন MSN বন্ধুভাবাপন্ন নাম খুব দীর্ঘ।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:315 ../libpurple/protocols/msnp9/msn.c:298
 msgid "Set your friendly name."
 msgstr "আপনার বন্ধুভাবাপন্ন নাম নির্ধারণ করুন।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:316 ../libpurple/protocols/msnp9/msn.c:299
 msgid "This is the name that other MSN buddies will see you as."
 msgstr "এটি এমন নাম যা দ্বারা অন্যান্য MSN বন্ধুরা আপনাকে দেখবে।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:334 ../libpurple/protocols/msnp9/msn.c:317
 msgid "Set your home phone number."
 msgstr "আপনার বাসার ফোন নাম্বার দিন।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:351 ../libpurple/protocols/msnp9/msn.c:334
 msgid "Set your work phone number."
 msgstr "আপনার কাজের ফোন নাম্বার দিন।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:368 ../libpurple/protocols/msnp9/msn.c:351
 msgid "Set your mobile phone number."
 msgstr "আপনার মোবাইল ফোন নাম্বার দিন।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:383 ../libpurple/protocols/msnp9/msn.c:366
 msgid "Allow MSN Mobile pages?"
 msgstr "MSN মোবাইল পেজগুলো কি অনুমোদন করবেন?"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:384 ../libpurple/protocols/msnp9/msn.c:367
 msgid ""
 "Do you want to allow or disallow people on your buddy list to send you MSN "
 "Mobile pages to your cell phone or other mobile device?"
@@ -7398,102 +5252,65 @@
 "আপনি কি আপনার বন্ধু তালিকার জনগণকে আপনার সেল ফোন বা অন্যান্য মোবাইল ডিভাইসে MSN "
 "মোবাইল পৃষ্ঠাসমূহ পাঠাতে অনুমোদন দিতে চান বা চান না?"
 
-#: ../libpurple/protocols/msn/msn.c:390 ../libpurple/protocols/msnp9/msn.c:373
 msgid "Allow"
 msgstr "অনুমোদন করুন"
 
-#: ../libpurple/protocols/msn/msn.c:391 ../libpurple/protocols/msnp9/msn.c:374
 msgid "Disallow"
 msgstr "অনুমোদন করবিন না"
 
-#: ../libpurple/protocols/msn/msn.c:406
 #, c-format
 msgid "Blocked Text for %s"
 msgstr "%s এর জন্য ব্লককৃত পাঠ"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:408
 msgid "No text is blocked for this account."
 msgstr "এই একাউন্টটির জন্য কোনো পাঠ আবদ্ধ নয়।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:411
 #, c-format
 msgid ""
 "MSN servers are currently blocking the following regular expressions:<br/>%s"
 msgstr "MSN সার্ভার বর্তমানে নিম্নলিখিত নিয়মিত রাশিসমূহ আবদ্ধ করছে:<br/>%s"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:432
 msgid "This account does not have email enabled."
 msgstr "এই একাউন্টটি ই-মেইল সক্রিয় নেই।"
 
-#: ../libpurple/protocols/msn/msn.c:472 ../libpurple/protocols/msnp9/msn.c:416
 msgid "Send a mobile message."
 msgstr "মোবাইল বার্তা পাঠান।"
 
-#: ../libpurple/protocols/msn/msn.c:474 ../libpurple/protocols/msnp9/msn.c:418
 msgid "Page"
 msgstr "পৃষ্ঠা"
 
-#: ../libpurple/protocols/msn/msn.c:718
 msgid "Playing a game"
 msgstr "একটি খেলা খেলছে"
 
-#: ../libpurple/protocols/msn/msn.c:721
 msgid "Working"
 msgstr "কাজ করছে"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:795 ../libpurple/protocols/msnp9/msn.c:565
 msgid "Has you"
 msgstr "আপনার কি"
 
-#: ../libpurple/protocols/msn/msn.c:803 ../libpurple/protocols/msnp9/msn.c:586
 msgid "Home Phone Number"
 msgstr "বাসার ফোন নম্বর"
 
-#: ../libpurple/protocols/msn/msn.c:807 ../libpurple/protocols/msnp9/msn.c:590
 msgid "Work Phone Number"
 msgstr "অফিসের ফোন নম্বর "
 
-#: ../libpurple/protocols/msn/msn.c:811 ../libpurple/protocols/msnp9/msn.c:594
 msgid "Mobile Phone Number"
 msgstr "মোবাইল ফোন নম্বর"
 
-#: ../libpurple/protocols/msn/msn.c:834 ../libpurple/protocols/msn/state.c:33
-#: ../libpurple/protocols/msnp9/msn.c:613
-#: ../libpurple/protocols/msnp9/state.c:33
-#: ../libpurple/protocols/yahoo/yahoo.c:3155
-#: ../libpurple/protocols/yahoo/yahoo.c:3864
 msgid "Be Right Back"
 msgstr "এক্ষুনি আসছি"
 
-#: ../libpurple/protocols/msn/msn.c:840 ../libpurple/protocols/msn/state.c:31
-#: ../libpurple/protocols/msnp9/msn.c:617
-#: ../libpurple/protocols/msnp9/state.c:31
-#: ../libpurple/protocols/novell/novell.c:2840
-#: ../libpurple/protocols/novell/novell.c:2970
-#: ../libpurple/protocols/qq/qq.c:273 ../libpurple/protocols/qq/qq.c:421
-#: ../libpurple/protocols/silc/buddy.c:1495
-#: ../libpurple/protocols/silc/silc.c:57
-#: ../libpurple/protocols/silc10/buddy.c:1495
-#: ../libpurple/protocols/silc10/silc.c:48
-#: ../libpurple/protocols/yahoo/yahoo.c:3157
-#: ../libpurple/protocols/yahoo/yahoo.c:3867
 msgid "Busy"
 msgstr "ব্যস্ত"
 
-#: ../libpurple/protocols/msn/msn.c:845 ../libpurple/protocols/msnp9/msn.c:621
-#: ../libpurple/protocols/yahoo/yahoo.c:3165
-#: ../libpurple/protocols/yahoo/yahoo.c:3879
 msgid "On the Phone"
 msgstr "ফোন এ কথা বলছি"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:850 ../libpurple/protocols/msnp9/msn.c:625
-#: ../libpurple/protocols/yahoo/yahoo.c:3169
-#: ../libpurple/protocols/yahoo/yahoo.c:3885
 msgid "Out to Lunch"
 msgstr "দুপুরে খাবার জন্য বাইরে"
 
@@ -7503,361 +5320,203 @@
 #. saveable
 #. should be user_settable some day
 #. independent
-#: ../libpurple/protocols/msn/msn.c:869
-#: ../libpurple/protocols/myspace/myspace.c:506
 msgid "Artist"
 msgstr "শিল্পী"
 
-#: ../libpurple/protocols/msn/msn.c:870
 msgid "Album"
 msgstr "এ্যালবাম"
 
-#: ../libpurple/protocols/msn/msn.c:872
 msgid "Game Title"
 msgstr "খেলার শিরোনাম"
 
-#: ../libpurple/protocols/msn/msn.c:873
 msgid "Office Title"
 msgstr "অফিসের শিরোনাম"
 
-#: ../libpurple/protocols/msn/msn.c:886 ../libpurple/protocols/msnp9/msn.c:653
 msgid "Set Friendly Name..."
 msgstr "বন্ধুসুলভ নাম নির্ধারন করুন..."
 
-#: ../libpurple/protocols/msn/msn.c:891 ../libpurple/protocols/msnp9/msn.c:658
 msgid "Set Home Phone Number..."
 msgstr "বাসার ফোন নম্বর নির্ধারন করুন..."
 
-#: ../libpurple/protocols/msn/msn.c:895 ../libpurple/protocols/msnp9/msn.c:662
 msgid "Set Work Phone Number..."
 msgstr "অফিসের ফোন নম্বর নির্ধারন করুন..."
 
-#: ../libpurple/protocols/msn/msn.c:899 ../libpurple/protocols/msnp9/msn.c:666
 msgid "Set Mobile Phone Number..."
 msgstr "মোবাইল ফোন নম্বর নির্ধারন করুন..."
 
-#: ../libpurple/protocols/msn/msn.c:905 ../libpurple/protocols/msnp9/msn.c:672
 msgid "Enable/Disable Mobile Devices..."
 msgstr "মোবাইল ডিভাইসসমূহ সক্রিয়/নিষ্ক্রিয় করুন..."
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:910 ../libpurple/protocols/msnp9/msn.c:677
 msgid "Allow/Disallow Mobile Pages..."
 msgstr "মোবাইল পৃষ্ঠাগুলোকে অনুমোদন করুন/করবেন না..."
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:917
 msgid "View Blocked Text..."
 msgstr "ব্লককৃত পাঠ দেখান..."
 
-#: ../libpurple/protocols/msn/msn.c:923 ../libpurple/protocols/msnp9/msn.c:688
 msgid "Open Hotmail Inbox"
 msgstr "হটমেইল ইনবক্স খুলুন"
 
-#: ../libpurple/protocols/msn/msn.c:946 ../libpurple/protocols/msnp9/msn.c:712
 msgid "Send to Mobile"
 msgstr "মোবাইলে পাঠান"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:956 ../libpurple/protocols/msnp9/msn.c:722
-#: ../libpurple/protocols/novell/novell.c:3426
 msgid "Initiate _Chat"
 msgstr "আড্ডা প্রস্তুত করুন (_C)"
 
-#: ../libpurple/protocols/msn/msn.c:994 ../libpurple/protocols/msnp9/msn.c:761
 msgid "SSL support is needed for MSN. Please install a supported SSL library."
 msgstr ""
 "MSN এর জন্য SSL সমর্থন প্রয়োজন। অনুগ্রহ করে একটি সমর্থিত SSL লাইব্রেরী সংস্থাপন করুন।"
 
-#: ../libpurple/protocols/msn/msn.c:1025
-#: ../libpurple/protocols/msnp9/msn.c:792
 msgid "Failed to connect to server."
 msgstr "সার্ভারে সংযোগ দিতে ব্যর্থ হয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:1951 ../libpurple/protocols/msn/msn.c:2293
-#: ../libpurple/protocols/msnp9/msn.c:1655
-#: ../libpurple/protocols/msnp9/msn.c:1998
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:809
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1200
 msgid "Error retrieving profile"
 msgstr "বৃত্তান্ত উদ্ধারে ত্রুটি"
 
-#: ../libpurple/protocols/msn/msn.c:2015
-#: ../libpurple/protocols/msnp9/msn.c:1721 ../pidgin/plugins/convcolors.c:371
-#: ../pidgin/plugins/pidginrc.c:375
 msgid "General"
 msgstr "সাধারন"
 
-#: ../libpurple/protocols/msn/msn.c:2022
-#: ../libpurple/protocols/msnp9/msn.c:1728
-#: ../libpurple/protocols/myspace/user.c:126
-#: ../libpurple/protocols/oscar/oscar.c:3960
-#: ../libpurple/protocols/qq/buddy_info.c:118
-#: ../libpurple/protocols/qq/qq.c:309
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1081
 msgid "Age"
 msgstr "বয়স"
 
-#: ../libpurple/protocols/msn/msn.c:2024
-#: ../libpurple/protocols/msnp9/msn.c:1730
-#: ../libpurple/protocols/qq/buddy_info.c:127
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1096
 msgid "Occupation"
 msgstr "পেশা"
 
-#: ../libpurple/protocols/msn/msn.c:2025
-#: ../libpurple/protocols/msnp9/msn.c:1731
-#: ../libpurple/protocols/myspace/user.c:134
-#: ../libpurple/protocols/novell/novell.c:1487
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1076
-#: ../libpurple/protocols/zephyr/zephyr.c:801
-#: ../libpurple/protocols/zephyr/zephyr.c:1178
 msgid "Location"
 msgstr "স্থান"
 
-#: ../libpurple/protocols/msn/msn.c:2030 ../libpurple/protocols/msn/msn.c:2222
-#: ../libpurple/protocols/msn/msn.c:2228 ../libpurple/protocols/msn/msn.c:2235
-#: ../libpurple/protocols/msnp9/msn.c:1736
-#: ../libpurple/protocols/msnp9/msn.c:1928
-#: ../libpurple/protocols/msnp9/msn.c:1934
-#: ../libpurple/protocols/msnp9/msn.c:1941
 msgid "Hobbies and Interests"
 msgstr "শখ এবং আগ্রহ"
 
-#: ../libpurple/protocols/msn/msn.c:2036 ../libpurple/protocols/msn/msn.c:2156
-#: ../libpurple/protocols/msn/msn.c:2162 ../libpurple/protocols/msn/msn.c:2169
-#: ../libpurple/protocols/msn/msn.c:2177 ../libpurple/protocols/msn/msn.c:2184
-#: ../libpurple/protocols/msnp9/msn.c:1742
-#: ../libpurple/protocols/msnp9/msn.c:1862
-#: ../libpurple/protocols/msnp9/msn.c:1868
-#: ../libpurple/protocols/msnp9/msn.c:1875
-#: ../libpurple/protocols/msnp9/msn.c:1883
-#: ../libpurple/protocols/msnp9/msn.c:1890
 msgid "A Little About Me"
 msgstr "আমার সম্পর্কে অল্প কিছু"
 
-#: ../libpurple/protocols/msn/msn.c:2053
-#: ../libpurple/protocols/msnp9/msn.c:1759
 msgid "Social"
 msgstr "সামাজিক"
 
-#: ../libpurple/protocols/msn/msn.c:2055
-#: ../libpurple/protocols/msnp9/msn.c:1761
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1086
 msgid "Marital Status"
 msgstr "বৈবাহিক অবস্থা"
 
-#: ../libpurple/protocols/msn/msn.c:2056
-#: ../libpurple/protocols/msnp9/msn.c:1762
 msgid "Interests"
 msgstr "আগ্রহসমূহ"
 
-#: ../libpurple/protocols/msn/msn.c:2057
-#: ../libpurple/protocols/msnp9/msn.c:1763
 msgid "Pets"
 msgstr "পোষা প্রাণীসমূহ"
 
-#: ../libpurple/protocols/msn/msn.c:2058
-#: ../libpurple/protocols/msnp9/msn.c:1764
 msgid "Hometown"
 msgstr "শহুরে-বাড়ি"
 
-#: ../libpurple/protocols/msn/msn.c:2059
-#: ../libpurple/protocols/msnp9/msn.c:1765
 msgid "Places Lived"
 msgstr "বসবাসরত অবস্থান"
 
-#: ../libpurple/protocols/msn/msn.c:2060
-#: ../libpurple/protocols/msnp9/msn.c:1766
 msgid "Fashion"
 msgstr "ফ্যাশন"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:2061
-#: ../libpurple/protocols/msnp9/msn.c:1767
 msgid "Humor"
 msgstr "হাস্যরস"
 
-#: ../libpurple/protocols/msn/msn.c:2062
-#: ../libpurple/protocols/msnp9/msn.c:1768
 msgid "Music"
 msgstr "সংগীত"
 
-#: ../libpurple/protocols/msn/msn.c:2063 ../libpurple/protocols/msn/msn.c:2244
-#: ../libpurple/protocols/msn/msn.c:2250
-#: ../libpurple/protocols/msnp9/msn.c:1769
-#: ../libpurple/protocols/msnp9/msn.c:1950
-#: ../libpurple/protocols/msnp9/msn.c:1956
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1138
 msgid "Favorite Quote"
 msgstr "প্রিয় উক্তি"
 
-#: ../libpurple/protocols/msn/msn.c:2080
-#: ../libpurple/protocols/msnp9/msn.c:1786
 msgid "Contact Info"
 msgstr "যোগাযোগের তথ্য"
 
-#: ../libpurple/protocols/msn/msn.c:2081
-#: ../libpurple/protocols/msnp9/msn.c:1787
 msgid "Personal"
 msgstr "ব্যক্তিগত"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:2084
-#: ../libpurple/protocols/msnp9/msn.c:1790
 msgid "Significant Other"
 msgstr "গুরুত্বপূর্ণ অন্যান্য"
 
-#: ../libpurple/protocols/msn/msn.c:2085
-#: ../libpurple/protocols/msnp9/msn.c:1791
 msgid "Home Phone"
 msgstr "বাসার ফোন"
 
-#: ../libpurple/protocols/msn/msn.c:2086
-#: ../libpurple/protocols/msnp9/msn.c:1792
 msgid "Home Phone 2"
 msgstr "বাসার ফোন ২"
 
-#: ../libpurple/protocols/msn/msn.c:2087
-#: ../libpurple/protocols/msnp9/msn.c:1793
-#: ../libpurple/protocols/oscar/oscar.c:3976
 msgid "Home Address"
 msgstr "বাসার ঠিকানা"
 
-#: ../libpurple/protocols/msn/msn.c:2088
-#: ../libpurple/protocols/msnp9/msn.c:1794
 msgid "Personal Mobile"
 msgstr "ব্যক্তিগত মোবাইল"
 
-#: ../libpurple/protocols/msn/msn.c:2089
-#: ../libpurple/protocols/msnp9/msn.c:1795
 msgid "Home Fax"
 msgstr "বাসার ফ্যাক্স"
 
-#: ../libpurple/protocols/msn/msn.c:2090
-#: ../libpurple/protocols/msnp9/msn.c:1796
 msgid "Personal Email"
 msgstr "ব্যক্তিগত ই-মেইল"
 
-#: ../libpurple/protocols/msn/msn.c:2091
-#: ../libpurple/protocols/msnp9/msn.c:1797
 msgid "Personal IM"
 msgstr "ব্যক্তিগত আইএম"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:2093
-#: ../libpurple/protocols/msnp9/msn.c:1799
 msgid "Anniversary"
 msgstr "বার্ষিকী"
 
 #. Business
-#: ../libpurple/protocols/msn/msn.c:2109
-#: ../libpurple/protocols/msnp9/msn.c:1815
 msgid "Work"
 msgstr "অফিস"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:2111
-#: ../libpurple/protocols/msnp9/msn.c:1817
-#: ../libpurple/protocols/silc/ops.c:1024
-#: ../libpurple/protocols/silc10/ops.c:1044
 msgid "Job Title"
 msgstr "কাজের শিরোনাম"
 
-#: ../libpurple/protocols/msn/msn.c:2112
-#: ../libpurple/protocols/msnp9/msn.c:1818
-#: ../libpurple/protocols/oscar/oscar.c:3994
 msgid "Company"
 msgstr "কোম্পানী"
 
-#: ../libpurple/protocols/msn/msn.c:2113
-#: ../libpurple/protocols/msnp9/msn.c:1819
-#: ../libpurple/protocols/novell/novell.c:1489
 msgid "Department"
 msgstr "বিভাগ"
 
-#: ../libpurple/protocols/msn/msn.c:2114
-#: ../libpurple/protocols/msnp9/msn.c:1820
 msgid "Profession"
 msgstr "পেশা"
 
-#: ../libpurple/protocols/msn/msn.c:2115
-#: ../libpurple/protocols/msnp9/msn.c:1821
 msgid "Work Phone"
 msgstr "অফিস ফোন"
 
-#: ../libpurple/protocols/msn/msn.c:2116
-#: ../libpurple/protocols/msnp9/msn.c:1822
 msgid "Work Phone 2"
 msgstr "অফিস ফোন ২"
 
-#: ../libpurple/protocols/msn/msn.c:2117
-#: ../libpurple/protocols/msnp9/msn.c:1823
-#: ../libpurple/protocols/oscar/oscar.c:3984
 msgid "Work Address"
 msgstr "অফিস ঠিকানা"
 
-#: ../libpurple/protocols/msn/msn.c:2118
-#: ../libpurple/protocols/msnp9/msn.c:1824
 msgid "Work Mobile"
 msgstr "অফিস মোবাইল"
 
-#: ../libpurple/protocols/msn/msn.c:2119
-#: ../libpurple/protocols/msnp9/msn.c:1825
 msgid "Work Pager"
 msgstr "অফিস পেইজার"
 
-#: ../libpurple/protocols/msn/msn.c:2120
-#: ../libpurple/protocols/msnp9/msn.c:1826
 msgid "Work Fax"
 msgstr "অফিস ফ্যাক্স"
 
-#: ../libpurple/protocols/msn/msn.c:2121
-#: ../libpurple/protocols/msnp9/msn.c:1827
 msgid "Work Email"
 msgstr "অফিস ই-মেইল"
 
-#: ../libpurple/protocols/msn/msn.c:2122
-#: ../libpurple/protocols/msnp9/msn.c:1828
 msgid "Work IM"
 msgstr "অফিস আইএম"
 
-#: ../libpurple/protocols/msn/msn.c:2123
-#: ../libpurple/protocols/msnp9/msn.c:1829
 msgid "Start Date"
 msgstr "শুরুর তারিখ"
 
-#: ../libpurple/protocols/msn/msn.c:2193 ../libpurple/protocols/msn/msn.c:2199
-#: ../libpurple/protocols/msn/msn.c:2206 ../libpurple/protocols/msn/msn.c:2213
-#: ../libpurple/protocols/msnp9/msn.c:1899
-#: ../libpurple/protocols/msnp9/msn.c:1905
-#: ../libpurple/protocols/msnp9/msn.c:1912
-#: ../libpurple/protocols/msnp9/msn.c:1919
 msgid "Favorite Things"
 msgstr "প্রিয় জিনিসসমূহ"
 
-#: ../libpurple/protocols/msn/msn.c:2258
-#: ../libpurple/protocols/msnp9/msn.c:1964
 msgid "Last Updated"
 msgstr "সর্বশেষ হালনাগাদকৃত"
 
-#: ../libpurple/protocols/msn/msn.c:2269
-#: ../libpurple/protocols/msnp9/msn.c:1975
-#: ../libpurple/protocols/qq/buddy_info.c:128
-#: ../libpurple/protocols/silc/ops.c:1040
-#: ../libpurple/protocols/silc10/ops.c:1060
 msgid "Homepage"
 msgstr "হোমপেজ"
 
-#: ../libpurple/protocols/msn/msn.c:2295
-#: ../libpurple/protocols/msnp9/msn.c:1999
 msgid "The user has not created a public profile."
 msgstr "ব্যবহারকারী কোনো জনসাধারণের প্রোফাইল তৈরী করেনি।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:2296
-#: ../libpurple/protocols/msnp9/msn.c:2000
 msgid ""
 "MSN reported not being able to find the user's profile. This either means "
 "that the user does not exist, or that the user exists but has not created a "
@@ -7868,19 +5527,12 @@
 "বৃত্তান্ত তৈরি করেনি।"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:2300
-#: ../libpurple/protocols/msnp9/msn.c:2004
 msgid ""
 "Could not find any information in the user's profile. The user most likely "
 "does not exist."
 msgstr ""
 "ব্যবহারকারীর বৃত্তান্তে কোনো তথ্য খুঁজে পায়নি। ব্যবহারকারী সম্ভবত বিদ্যমান থাকবে না।"
 
-#: ../libpurple/protocols/msn/msn.c:2308
-#: ../libpurple/protocols/myspace/user.c:193
-#: ../libpurple/protocols/myspace/user.c:196
-#: ../libpurple/protocols/oscar/oscar.c:3192
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1236
 msgid "View web profile"
 msgstr "ওয়েব প্রোফাইল দেখুন"
 
@@ -7893,139 +5545,91 @@
 #. *< name
 #. *< version
 #. *< summary
-#: ../libpurple/protocols/msn/msn.c:2596 ../libpurple/protocols/msn/msn.c:2597
 msgid "Windows Live Messenger Protocol Plugin"
 msgstr "উইন্ডোজের সরাসরি মেসেনজার প্রোটোকল প্লাগইন"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:2631
-#: ../libpurple/protocols/msnp9/msn.c:2335
 msgid "Use HTTP Method"
 msgstr "HTTP পদ্ধতি ব্যবহার করুন"
 
-#: ../libpurple/protocols/msn/msn.c:2636
-#: ../libpurple/protocols/msnp9/msn.c:2340
 msgid "HTTP Method Server"
 msgstr "HTTP পদ্ধতির সার্ভার"
 
 # tithi
-#: ../libpurple/protocols/msn/msn.c:2641
-#: ../libpurple/protocols/msnp9/msn.c:2345
 msgid "Show custom smileys"
 msgstr "স্বনির্বাচিত স্মাইলীগুলো দেখান"
 
 # fix -me tithi
-#: ../libpurple/protocols/msn/msn.c:2649
-#: ../libpurple/protocols/msnp9/msn.c:2353
 msgid "nudge: nudge a user to get their attention"
 msgstr "নাজ: ব্যবহারকারীদের মনোযোগ পেতে তাদেরকে নাজ দিন"
 
 # tithi
-#: ../libpurple/protocols/msn/nexus.c:359
 msgid "Windows Live ID authentication:Unable to connect"
 msgstr "উইন্ডোজ সরাসরি আইডি প্রমাণীকরণ:সংযোগ করতে অক্ষম"
 
 # tithi
-#: ../libpurple/protocols/msn/nexus.c:366
 msgid "Windows Live ID authentication:Invalid response"
 msgstr "উইন্ডোজ সরাসরি  আইডি প্রমাণীকরণ:অবৈধ সাড়া"
 
-#: ../libpurple/protocols/msn/notification.c:176
-#: ../libpurple/protocols/msnp9/notification.c:178
 #, c-format
 msgid "%s is not a valid group."
 msgstr "%s কোনো বৈধ গ্রুপ নয়।"
 
-#: ../libpurple/protocols/msn/notification.c:182
-#: ../libpurple/protocols/msn/notification.c:961
-#: ../libpurple/protocols/msn/session.c:391
-#: ../libpurple/protocols/msnp9/notification.c:184
-#: ../libpurple/protocols/msnp9/notification.c:534
-#: ../libpurple/protocols/msnp9/session.c:353
-#: ../libpurple/protocols/yahoo/yahoo.c:2140
 msgid "Unknown error."
 msgstr "অজানা ত্রুটি।"
 
-#: ../libpurple/protocols/msn/notification.c:185
-#: ../libpurple/protocols/msnp9/notification.c:187
 #, c-format
 msgid "%s on %s (%s)"
 msgstr "%2s (%3s) এ %1s"
 
-#: ../libpurple/protocols/msn/notification.c:475
 #, c-format
 msgid "%s just sent you a Nudge!"
 msgstr "%s আপনার দৃষ্টি আকর্ষন করছে!"
 
 #. char *adl = g_strndup(payload, len);
-#: ../libpurple/protocols/msn/notification.c:765
-#: ../libpurple/protocols/msn/notification.c:795
 #, c-format
 msgid "Unknown error (%d)"
 msgstr "অজানা ত্রুটি (%d)"
 
-#: ../libpurple/protocols/msn/notification.c:773
-#: ../libpurple/protocols/msn/notification.c:796
-#: ../libpurple/protocols/sametime/sametime.c:4487
 msgid "Unable to add user"
 msgstr "ব্যবহারকারী যোগ করতে সমর্থ নয়"
 
-#: ../libpurple/protocols/msn/notification.c:836
 msgid "The following users are missing from your addressbook"
 msgstr "আপনার ঠিকানা বই থেকে নিম্নোক্ত ব্যবহারকারীরা হারিয়ে গেছে"
 
-#: ../libpurple/protocols/msn/notification.c:927
-#: ../libpurple/protocols/msnp9/notification.c:500
 #, c-format
 msgid "Unable to add user on %s (%s)"
 msgstr "%1s (%2s) এ ব্যবহারকারী যোগ করতে সমর্থ নয়"
 
-#: ../libpurple/protocols/msn/notification.c:931
-#: ../libpurple/protocols/msnp9/notification.c:504
 #, c-format
 msgid "Unable to block user on %s (%s)"
 msgstr "%1s (%2s) এ ব্যবহারকারী আবদ্ধ করতে সমর্থ নয়"
 
-#: ../libpurple/protocols/msn/notification.c:935
-#: ../libpurple/protocols/msnp9/notification.c:508
 #, c-format
 msgid "Unable to permit user on %s (%s)"
 msgstr "%1s (%2s) ব্যবহারকারীকে অনুমতি প্রদান করতে সমর্থ নয়"
 
-#: ../libpurple/protocols/msn/notification.c:943
-#: ../libpurple/protocols/msnp9/notification.c:516
 #, c-format
 msgid "%s could not be added because your buddy list is full."
 msgstr "আপনার বন্ধু তালিকা পূর্ণ থাকার কারণে %s কে যোগ করা যাচ্ছে না।"
 
-#: ../libpurple/protocols/msn/notification.c:952
-#: ../libpurple/protocols/msnp9/notification.c:525
 #, c-format
 msgid "%s is not a valid passport account."
 msgstr "%s বৈধ পাসপোর্ট একাউন্ট নয়।"
 
-#: ../libpurple/protocols/msn/notification.c:957
-#: ../libpurple/protocols/msnp9/notification.c:530
 msgid "Service Temporarily Unavailable."
 msgstr "সাময়িকভাবে সেবা পাওয়া যাচ্ছে না।"
 
-#: ../libpurple/protocols/msn/notification.c:1196
 msgid "Mobile message was not sent because it was too long."
 msgstr "মোবাইল বার্তাটি অনেক বড় বিধায় পাঠানো হয়নি।"
 
-#: ../libpurple/protocols/msn/notification.c:1375
-#: ../libpurple/protocols/msnp9/notification.c:899
 msgid "Unable to rename group"
 msgstr "গ্রুপ পুনরায় নামকরণ করতে সমর্থ নয়"
 
-#: ../libpurple/protocols/msn/notification.c:1402
-#: ../libpurple/protocols/msnp9/notification.c:954
 msgid "Unable to delete group"
 msgstr "গ্রুপ মুছে ফেলতে অক্ষম"
 
 # tithi
-#: ../libpurple/protocols/msn/notification.c:1935
-#: ../libpurple/protocols/msnp9/notification.c:1373
 #, c-format
 msgid ""
 "The MSN server will shut down for maintenance in %d minute. You will "
@@ -8053,7 +5657,6 @@
 "রক্ষনাবেক্ষন সম্পূর্ন হবার পর, আপনি সফলভাবে সাইন ইন করতে পারবেন।"
 
 # tithi
-#: ../libpurple/protocols/msn/oim.c:400
 msgid ""
 "Message was not sent because the system is unavailable. This normally "
 "happens when the user is blocked or does not exist."
@@ -8061,42 +5664,26 @@
 "বার্তা পাঠানো হয়নি কারণ সিস্টেম সহজলভ্য  নয়। এইটি সাধারণত ঘটে যখন ব্যবহারকারী "
 "আবদ্ধ বা ব্যবহারকারী বিদ্যমান থাকে না।"
 
-#: ../libpurple/protocols/msn/oim.c:405
 msgid "Message was not sent because messages are being sent too quickly."
 msgstr "বার্তা পাঠানো যায়নি কারণ বার্তাগুলো খুব তাড়াতাড়ি পাঠানো হচ্ছিল।"
 
-#: ../libpurple/protocols/msn/oim.c:409
 msgid "Message was not sent because an unknown encoding error occurred."
 msgstr "অজানা সঙ্কেতায়ন ত্রুটি সংঘটিত হওয়ার কারণে বার্তা পাঠানো যায়নি।"
 
-#: ../libpurple/protocols/msn/oim.c:413
 msgid "Message was not sent because an unknown error occurred."
 msgstr "অজানা ত্রুটি সংঘটিত হওয়ার কারণে বার্তা পাঠানো যায়নি।"
 
-#: ../libpurple/protocols/msn/servconn.c:134
-#: ../libpurple/protocols/msnp9/nexus.c:146
-#: ../libpurple/protocols/msnp9/servconn.c:133
-#: ../libpurple/protocols/qq/qq_network.c:840
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1565
-#: ../libpurple/protocols/yahoo/yahoochat.c:1425
-#: ../libpurple/protocols/yahoo/yahoochat.c:1451
 msgid "Unable to connect"
 msgstr "সংযোগ করতে সমর্থ নয়"
 
 # tithi
-#: ../libpurple/protocols/msn/servconn.c:136
-#: ../libpurple/protocols/msnp9/servconn.c:135
 msgid "Writing error"
 msgstr "লিখন ত্রুটি"
 
-#: ../libpurple/protocols/msn/servconn.c:138
-#: ../libpurple/protocols/msnp9/servconn.c:137
 msgid "Reading error"
 msgstr "পাঠ ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/msn/servconn.c:145
-#: ../libpurple/protocols/msnp9/servconn.c:144
 #, c-format
 msgid ""
 "Connection error from %s server:\n"
@@ -8105,44 +5692,28 @@
 "%1s সার্ভার হতে সংযোগের ত্রুটি:\n"
 "%2s"
 
-#: ../libpurple/protocols/msn/session.c:353
-#: ../libpurple/protocols/msnp9/session.c:315
 msgid "Our protocol is not supported by the server."
 msgstr "আমাদের প্রটোকল সার্ভার সমর্থন করে না।"
 
-#: ../libpurple/protocols/msn/session.c:358
-#: ../libpurple/protocols/msnp9/session.c:320
 msgid "Error parsing HTTP."
 msgstr "HTTP পার্স করতে ত্রুটি।"
 
-#: ../libpurple/protocols/msn/session.c:362
-#: ../libpurple/protocols/msnp9/session.c:324
-#: ../libpurple/protocols/oscar/flap_connection.c:439
-#: ../libpurple/protocols/yahoo/yahoo.c:161
 msgid "You have signed on from another location."
 msgstr "আপনি অন্য স্থান থেকে সাইন অন করেছেন।"
 
-#: ../libpurple/protocols/msn/session.c:368
-#: ../libpurple/protocols/msnp9/session.c:330
 msgid "The MSN servers are temporarily unavailable. Please wait and try again."
 msgstr ""
 "সাময়িকভাবে এমএসএন সার্ভার পাওয়া যাচ্ছে না। অনুগ্রহ করে অপেক্ষা করুন এবং পুনরায় "
 "চেষ্টা করুন"
 
 # tithi
-#: ../libpurple/protocols/msn/session.c:374
-#: ../libpurple/protocols/msnp9/session.c:336
 msgid "The MSN servers are going down temporarily."
 msgstr "MSN সার্ভার সাময়িকভাবে নিস্ক্রিয় হচ্ছে।"
 
-#: ../libpurple/protocols/msn/session.c:379
-#: ../libpurple/protocols/msnp9/session.c:341
 #, c-format
 msgid "Unable to authenticate: %s"
 msgstr "প্রমাণীকরণ করতে অক্ষম: %s"
 
-#: ../libpurple/protocols/msn/session.c:385
-#: ../libpurple/protocols/msnp9/session.c:347
 msgid ""
 "Your MSN buddy list is temporarily unavailable. Please wait and try again."
 msgstr ""
@@ -8150,84 +5721,52 @@
 "পুনরায় চেষ্টা করুন।"
 
 # tithi
-#: ../libpurple/protocols/msn/session.c:407
-#: ../libpurple/protocols/msn/session.c:409
-#: ../libpurple/protocols/msnp9/session.c:369
-#: ../libpurple/protocols/msnp9/session.c:371
 msgid "Handshaking"
 msgstr "হ্যান্ডসেকিং"
 
-#: ../libpurple/protocols/msn/session.c:408
-#: ../libpurple/protocols/msnp9/session.c:370
 msgid "Transferring"
 msgstr "স্থানান্তর করছে"
 
 # tithi
-#: ../libpurple/protocols/msn/session.c:410
-#: ../libpurple/protocols/msnp9/session.c:372
 msgid "Starting authentication"
 msgstr "প্রমাণীকরণ শুরু করছে"
 
 # tithi
-#: ../libpurple/protocols/msn/session.c:411
-#: ../libpurple/protocols/msnp9/session.c:373
 msgid "Getting cookie"
 msgstr "কুকি গ্রহণ করছে"
 
-#: ../libpurple/protocols/msn/session.c:413
-#: ../libpurple/protocols/msnp9/session.c:375
 msgid "Sending cookie"
 msgstr "কুকি পাঠাচ্ছে"
 
-#: ../libpurple/protocols/msn/session.c:414
-#: ../libpurple/protocols/msnp9/session.c:376
 msgid "Retrieving buddy list"
 msgstr "বন্ধু তালিকা উদ্ধার করছে"
 
-#: ../libpurple/protocols/msn/state.c:34
-#: ../libpurple/protocols/msnp9/state.c:34
 msgid "Away From Computer"
 msgstr "কম্পিউটার থেকে দূরে"
 
-#: ../libpurple/protocols/msn/state.c:35
-#: ../libpurple/protocols/msnp9/state.c:35
 msgid "On The Phone"
 msgstr "ফোন এ কথা বলছে"
 
-#: ../libpurple/protocols/msn/state.c:36
-#: ../libpurple/protocols/msnp9/state.c:36
 msgid "Out To Lunch"
 msgstr "লাঞ্চ এর জন্য বাইরে"
 
-#: ../libpurple/protocols/msn/switchboard.c:427
-#: ../libpurple/protocols/msnp9/switchboard.c:411
 msgid "Message may have not been sent because a timeout occurred:"
 msgstr "সময় শেষ হয়ে যাওযার কারণে বার্তা সম্ভবত পাঠানো হয়নি:"
 
 # tithi
-#: ../libpurple/protocols/msn/switchboard.c:463
-#: ../libpurple/protocols/msnp9/switchboard.c:419
 msgid "Message could not be sent, not allowed while invisible:"
 msgstr "বার্তা পাঠানো যাবে না, অদৃশ্য অবস্থায় অনুমোদিত নয়:"
 
-#: ../libpurple/protocols/msn/switchboard.c:467
-#: ../libpurple/protocols/msnp9/switchboard.c:423
 msgid "Message could not be sent because the user is offline:"
 msgstr "বার্তা পাঠানো যাচ্ছে না কারণ ব্যবহারকারী অফলাইনে:"
 
-#: ../libpurple/protocols/msn/switchboard.c:471
-#: ../libpurple/protocols/msnp9/switchboard.c:427
 msgid "Message could not be sent because a connection error occurred:"
 msgstr "বার্তা পাঠানো যাচ্ছে না কারণ সংযোগে ত্রুটি সংঘটিত হয়েছে:"
 
-#: ../libpurple/protocols/msn/switchboard.c:475
-#: ../libpurple/protocols/msnp9/switchboard.c:431
 msgid "Message could not be sent because we are sending too quickly:"
 msgstr "বার্তা পাঠানো যাচ্ছে না কারন আমরা খুব তাড়াতাড়ি পাঠাচ্ছি:"
 
 # tithi
-#: ../libpurple/protocols/msn/switchboard.c:479
-#: ../libpurple/protocols/msnp9/switchboard.c:435
 msgid ""
 "Message could not be sent because we were unable to establish a session with "
 "the server. This is likely a server problem, try again in a few minutes:"
@@ -8235,49 +5774,35 @@
 "বার্তা পাঠানো যাচ্ছে না কারণ আমরা সার্ভারের সাথে একটি অধিবেশন প্রতিষ্ঠিত করতে "
 "অক্ষম ছিলাম। এটি সম্ভবত সার্ভার সমস্যা, কয়েক মিনিটের মধ্যে পুনরায় একটি চেষ্টা করুন:"
 
-#: ../libpurple/protocols/msn/switchboard.c:486
-#: ../libpurple/protocols/msnp9/switchboard.c:442
 msgid ""
 "Message could not be sent because an error with the switchboard occurred:"
 msgstr "সুইচবোর্ডে ত্রুটি থাকার কারনে বার্তা পাঠানো যায়নি:"
 
-#: ../libpurple/protocols/msn/switchboard.c:494
-#: ../libpurple/protocols/msnp9/switchboard.c:450
 msgid "Message may have not been sent because an unknown error occurred:"
 msgstr "একটি অজানা ত্রুটির সংঘটিত হওয়ার কারণে বার্তা হয়ত পাঠানো যায়নি:"
 
-#: ../libpurple/protocols/msn/userlist.c:211
-#: ../libpurple/protocols/msnp9/userlist.c:262
 #, c-format
 msgid "%s has added you to his or her buddy list."
 msgstr "%s আপনাকে তার বন্ধু তালিকায় যোগ করেছেন।"
 
-#: ../libpurple/protocols/msn/userlist.c:276
-#: ../libpurple/protocols/msnp9/userlist.c:331
 #, c-format
 msgid "%s has removed you from his or her buddy list."
 msgstr "%s আপনাকে তার বন্ধু তালিকা থেকে অপসারণ করেছে।"
 
-#: ../libpurple/protocols/msn/userlist.c:641
 msgid "Delete Buddy from Address Book?"
 msgstr "ঠিকানার বই থেকে কি বন্ধু মুছে ফেলতে চান?"
 
-#: ../libpurple/protocols/msn/userlist.c:642
 msgid "Do you want to delete this buddy from your address book as well?"
 msgstr "আপনি কি এই বন্ধুটিকেও আপনার ঠিকানা বই থেকে মুছে ফেলতে চান?"
 
-#: ../libpurple/protocols/msn/userlist.c:698
-#: ../libpurple/protocols/msnp9/userlist.c:655
 msgid "The username specified is invalid."
 msgstr "উল্লেখিত ব্য়বহারকারীর নামটি অবৈধ।"
 
 # tithi
-#: ../libpurple/protocols/msnp9/msn.c:390
 msgid "This Hotmail account may not be active."
 msgstr "এই হটমেইল একাউন্টটি সক্রিয় নাও থাকতে পারে।"
 
 # tithi
-#: ../libpurple/protocols/msnp9/msn.c:2012
 msgid "Profile URL"
 msgstr "প্রোফাইল URL"
 
@@ -8291,92 +5816,69 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/msnp9/msn.c:2299
-#: ../libpurple/protocols/msnp9/msn.c:2301
 msgid "MSN Protocol Plugin"
 msgstr "MSN প্রোটোকল প্লাগইন"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:136
 #, c-format
 msgid "No such user: %s"
 msgstr "এমন কোনো ব্যবহারকারী নেই: %s"
 
-#: ../libpurple/protocols/myspace/myspace.c:138
 msgid "User lookup"
 msgstr "ব্যবহারকারী দেখছে"
 
-#: ../libpurple/protocols/myspace/myspace.c:675
 msgid "Reading challenge"
 msgstr "পড়তে সমস্যা হচ্ছে"
 
 # fix me tithi
-#: ../libpurple/protocols/myspace/myspace.c:685
 msgid "Unexpected challenge length from server"
 msgstr "সার্ভারের অপ্রত্যাশিত চ্যালেঞ্জ সীমা"
 
-#: ../libpurple/protocols/myspace/myspace.c:689
-#: ../libpurple/protocols/qq/qq_process.c:1010
 msgid "Logging in"
 msgstr "সংযুক্ত হচ্ছে"
 
-#: ../libpurple/protocols/myspace/myspace.c:786
 msgid "MySpaceIM - No Username Set"
 msgstr "MySpaceIM - কোনো ব্যবহারকারীর নাম বিন্যাস করা হয়নি"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:787
 msgid "You appear to have no MySpace username."
 msgstr "আপনি MySpace ব্যবহারকারীর-নাম ব্যতিত উপস্থিত হয়েছেন।"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:788
 msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
 msgstr "আপনি কি এখন একটি নির্ধারণ করতে আগ্রহী? (নোট: এটি পরিবর্তন করা যায় না!)"
 
-#: ../libpurple/protocols/myspace/myspace.c:825
-#: ../libpurple/protocols/qq/qq_base.c:484
-#: ../libpurple/protocols/qq/qq_base.c:533
-#: ../libpurple/protocols/qq/qq_base.c:577
 msgid "Lost connection with server"
 msgstr "সার্ভারের সাথে সংযোগ বিচ্ছিন্ন হয়েছে"
 
 #. Can't write _()'d strings in array initializers. Workaround.
-#: ../libpurple/protocols/myspace/myspace.c:861
 msgid "New mail messages"
 msgstr "নতুন মেইল বার্তাসমূহ"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:862
 msgid "New blog comments"
 msgstr "নতুন ব্লগ মন্তব্য"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:863
 msgid "New profile comments"
 msgstr "নতুন প্রোফাইল মন্তব্য"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:864
 msgid "New friend requests!"
 msgstr "নতুন বন্ধু অনুরোধ!"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:865
 msgid "New picture comments"
 msgstr "নতুন ছবি মন্তব্য"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:893
 msgid "MySpace"
 msgstr "MySpace"
 
-#: ../libpurple/protocols/myspace/myspace.c:1000
 msgid "IM Friends"
 msgstr "IM বন্ধুসমূহ"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:1136
 #, c-format
 msgid ""
 "%d buddy was added or updated from the server (including buddies already on "
@@ -8391,25 +5893,20 @@
 "সার্ভার থেকে  %d বন্ধুসমূহ যোগ বা হালনাগাদ করা  হয়েছিল ( সার্ভার-পার্শ্বের তালিকায় "
 "বিদ্যমান বন্ধুরা সহ)"
 
-#: ../libpurple/protocols/myspace/myspace.c:1140
 msgid "Add contacts from server"
 msgstr "সার্ভার থেকে যোগাযোগগুলো যোগ করুন"
 
 #. The session is now set up, ready to be connected. This emits the
 #. * signedOn signal, so clients can now do anything with msimprpl, and
 #. * we're ready for it (session key, userid, username all setup).
-#: ../libpurple/protocols/myspace/myspace.c:1191
-#: ../libpurple/protocols/sametime/sametime.c:1553
 msgid "Connected"
 msgstr "সংযুক্ত"
 
-#: ../libpurple/protocols/myspace/myspace.c:1804
 #, c-format
 msgid "Protocol error, code %d: %s"
 msgstr "প্রোটকল ত্রুটি, কোড %1d: %2s"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:1826
 #, c-format
 msgid ""
 "%s Your password is %d characters, greater than the expected maximum length "
@@ -8422,68 +5919,50 @@
 "cfm?fuseaction=accountSettings। গুপ্তসংকেত সংক্ষিপ্ত করুন এবং পুনরায় চেষ্টা করুন।"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:1849
 msgid "MySpaceIM Error"
 msgstr "MySpaceIM ত্রুটি"
 
-#: ../libpurple/protocols/myspace/myspace.c:2014
 msgid "Invalid input condition"
 msgstr "অবৈধ ইনপুট শর্ত"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:2069
 msgid "Read buffer full (2)"
 msgstr "পাঠ বাফার পূর্ণ (২)"
 
-#: ../libpurple/protocols/myspace/myspace.c:2112
 msgid "Unparseable message"
 msgstr "পার্স অযোগ্য বার্তা"
 
-#: ../libpurple/protocols/myspace/myspace.c:2155
 #, c-format
 msgid "Couldn't connect to host: %s (%d)"
 msgstr "হোস্টের সাথে সংযুক্ত করা যায়নি: %1s (%2d)"
 
-#: ../libpurple/protocols/myspace/myspace.c:2646
-#: ../libpurple/protocols/myspace/myspace.c:2680
 msgid "Failed to add buddy"
 msgstr "বন্ধু যোগ করতে ব্যর্থ"
 
-#: ../libpurple/protocols/myspace/myspace.c:2646
 msgid "'addbuddy' command failed."
 msgstr "\"বন্ধু যোগ করুন\" নির্দেশটি ব্যর্থ হয়েছে।"
 
-#: ../libpurple/protocols/myspace/myspace.c:2680
-#: ../libpurple/protocols/myspace/myspace.c:2728
 msgid "persist command failed"
 msgstr "যুক্তির নির্দেশ ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/myspace/myspace.c:2709
-#: ../libpurple/protocols/myspace/myspace.c:2728
-#: ../libpurple/protocols/myspace/myspace.c:2741
 msgid "Failed to remove buddy"
 msgstr "বন্ধু অপসারণ করতে ব্যর্থ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:2709
 msgid "'delbuddy' command failed"
 msgstr "'বন্ধু মুছে ফেলুন' নির্দেশ ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/myspace/myspace.c:2741
 msgid "blocklist command failed"
 msgstr "ব্লক-লিস্ট নির্দেশ ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/myspace/myspace.c:3094
 msgid "Missing Cipher"
 msgstr "হারিয়ে যাওয়া সাইফার"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:3095
 msgid "The RC4 cipher could not be found"
 msgstr "RC4 ছাইফারকে খুঁজে পাওয়া যায়নি"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:3096
 msgid ""
 "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
 "not be loaded."
@@ -8492,123 +5971,93 @@
 "না।"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:3123
-#: ../libpurple/protocols/myspace/myspace.c:3189
 msgid "Add friends from MySpace.com"
 msgstr "MySpace.com থেকে বন্ধু যোগ করুন"
 
-#: ../libpurple/protocols/myspace/myspace.c:3124
 msgid "Importing friends failed"
 msgstr "বন্ধুদের আনতে ব্যর্থ হয়েছে"
 
 #. TODO: find out how
-#: ../libpurple/protocols/myspace/myspace.c:3182
 msgid "Find people..."
 msgstr "জনগণ খুঁজুন..."
 
-#: ../libpurple/protocols/myspace/myspace.c:3185
 msgid "Change IM name..."
 msgstr "IM নাম পরিবর্তন করুন..."
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:3571
 msgid "myim URL handler"
 msgstr "myim URL নিয়ন্ত্রক"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:3572
 msgid "No suitable MySpaceIM account could be found to open this myim URL."
 msgstr "এই myim URL খুলতে কোনো উপযুক্ত MySpaceIM একাউন্ট খুঁজে পাওয়া যাবে না।"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:3573
 msgid "Enable the proper MySpaceIM account and try again."
 msgstr "উপযুক্ত MySpaceIM একাউন্ট সক্রিয় করুন এবং পুনরায় চেষ্টা করুন।"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:3634
 msgid "Show display name in status text"
 msgstr "অবস্থা পাঠে প্রদর্শন নাম দেখান"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:3637
 msgid "Show headline in status text"
 msgstr "অবস্থা পাঠে শিরোনাম দেখান"
 
 # fix me tithi
-#: ../libpurple/protocols/myspace/myspace.c:3642
 msgid "Send emoticons"
 msgstr "আবেগীয় প্রতীকগুলো পাঠান"
 
 # tithi
-#: ../libpurple/protocols/myspace/myspace.c:3647
 msgid "Screen resolution (dots per inch)"
 msgstr "পর্দার রিসোলিউশন (প্রতি ইঞ্চির ডট)"
 
 # fix me tithi
-#: ../libpurple/protocols/myspace/myspace.c:3650
 msgid "Base font size (points)"
 msgstr "ভিত্তির ফন্ট আকার (বিন্দু)"
 
-#: ../libpurple/protocols/myspace/user.c:119
-#: ../libpurple/protocols/zephyr/zephyr.c:789
-#: ../libpurple/protocols/zephyr/zephyr.c:1167
 msgid "User"
 msgstr "ব্যবহারকারী"
 
-#: ../libpurple/protocols/myspace/user.c:139
 msgid "Headline"
 msgstr "শিরোনাম"
 
-#: ../libpurple/protocols/myspace/user.c:155
 msgid "Song"
 msgstr "গান"
 
 # tithi
-#: ../libpurple/protocols/myspace/user.c:165
 msgid "Total Friends"
 msgstr "সব বন্ধু"
 
-#: ../libpurple/protocols/myspace/user.c:183
-#: ../libpurple/protocols/qq/qq.c:1086
 msgid "Client Version"
 msgstr "ক্লায়েন্ট সংস্করণ"
 
-#: ../libpurple/protocols/myspace/user.c:815
 msgid "MySpaceIM - Username Available"
 msgstr "MySpaceIM -ব্যবহারকারীর নাম সহজলভ্য"
 
 # tithi
-#: ../libpurple/protocols/myspace/user.c:816
 msgid "This username is available. Would you like to set it?"
 msgstr "এই ব্যবহারকারীর-নামটি সহজলভ্য। আপনি কি এটি নির্ধারন করতে আগ্রহী?"
 
 # tithi
-#: ../libpurple/protocols/myspace/user.c:817
 msgid "ONCE SET, THIS CANNOT BE CHANGED!"
 msgstr "একবার নির্ধারণ করলে, এটি আর পরিবর্তন করা যাবে না!"
 
 # tithi
-#: ../libpurple/protocols/myspace/user.c:828
-#: ../libpurple/protocols/myspace/user.c:891
 msgid "MySpaceIM - Please Set a Username"
 msgstr "MySpaceIM- অনুগ্রহ করে একটি ব্যবহারকারীর নাম নির্ধারন করুন"
 
-#: ../libpurple/protocols/myspace/user.c:829
 msgid "This username is unavailable."
 msgstr "এই ব্যহারকারীর নামটি অপ্রাপ্য।"
 
-#: ../libpurple/protocols/myspace/user.c:830
 msgid "Please try another username:"
 msgstr "অনুগ্রহ করে অন্য একটি ব্যবহারকারীর নাম চেষ্টা করুন:"
 
 #. Protocol won't log in now without a username set.. Disconnect
-#: ../libpurple/protocols/myspace/user.c:881
 msgid "No username set"
 msgstr "কোনো ব্যবহারকারীর নাম নির্ধারণ করা নেই"
 
 # tithi
-#: ../libpurple/protocols/myspace/user.c:892
 msgid "Please enter a username to check its availability:"
 msgstr "অনুগ্রহ করে এর সহজলভ্যতা পরীক্ষা করতে একটি ব্যবহারকারীর নাম প্রবেশ করান:"
 
@@ -8619,35 +6068,28 @@
 #. * projectile or weapon."  This term often has an electrical
 #. * connotation, for example, "he was zapped by electricity when
 #. * he put a fork in the toaster."
-#: ../libpurple/protocols/myspace/zap.c:44
-#: ../libpurple/protocols/myspace/zap.c:217
 msgid "Zap"
 msgstr "আক্রমণ করুন"
 
-#: ../libpurple/protocols/myspace/zap.c:44
 #, c-format
 msgid "%s has zapped you!"
 msgstr "%s আপনাকে আক্রমণ করেছে! "
 
 # tithi
-#: ../libpurple/protocols/myspace/zap.c:45
 #, c-format
 msgid "Zapping %s..."
 msgstr "%s আক্রমণ করছে ..."
 
 # tithi
 #. Whack means "to hit or strike someone with a sharp blow"
-#: ../libpurple/protocols/myspace/zap.c:48
 msgid "Whack"
 msgstr "সজোরে আঘাত করুন"
 
-#: ../libpurple/protocols/myspace/zap.c:49
 #, c-format
 msgid "%s has whacked you!"
 msgstr "%s আপনাকে আঘাত করেছে!"
 
 # tithi
-#: ../libpurple/protocols/myspace/zap.c:49
 #, c-format
 msgid "Whacking %s..."
 msgstr "%s সজোরে আঘাত করছে..."
@@ -8655,83 +6097,68 @@
 #. Torch means "to set on fire."  Don't worry, this doesn't
 #. * make a whole lot of sense in English, either.  Feel free
 #. * to translate it literally.
-#: ../libpurple/protocols/myspace/zap.c:54
 msgid "Torch"
 msgstr "আলোকপাত করুন"
 
-#: ../libpurple/protocols/myspace/zap.c:55
 #, c-format
 msgid "%s has torched you!"
 msgstr "%s আপনার উপর আলোকপাত করেছে!"
 
 # tithi
-#: ../libpurple/protocols/myspace/zap.c:55
 #, c-format
 msgid "Torching %s..."
 msgstr "%s আলোকপাত করছে..."
 
 # fix me tithi
 #. Smooch means "to kiss someone, often enthusiastically"
-#: ../libpurple/protocols/myspace/zap.c:58
 msgid "Smooch"
 msgstr "অন্তরঙ্গতা"
 
-#: ../libpurple/protocols/myspace/zap.c:59
 #, c-format
 msgid "%s has smooched you!"
 msgstr "%s আপনার সাথে অন্তরঙ্গ হয়েছে!"
 
 # fix me tithi
-#: ../libpurple/protocols/myspace/zap.c:59
 #, c-format
 msgid "Smooching %s..."
 msgstr "%s অন্তরঙ্গ করছে..."
 
 # tithi
 #. A hug is a display of affection; wrapping your arms around someone
-#: ../libpurple/protocols/myspace/zap.c:62
 msgid "Hug"
 msgstr "জড়িয়ে ধরুন"
 
-#: ../libpurple/protocols/myspace/zap.c:62
 #, c-format
 msgid "%s has hugged you!"
 msgstr "%s আপনাকে জড়িয়ে ধরেছে!"
 
 # tithi
-#: ../libpurple/protocols/myspace/zap.c:63
 #, c-format
 msgid "Hugging %s..."
 msgstr "%s জড়িয়ে ধরছে..."
 
 #. Slap means "to hit someone with an open/flat hand"
-#: ../libpurple/protocols/myspace/zap.c:66
 msgid "Slap"
 msgstr "চড় মারুন"
 
-#: ../libpurple/protocols/myspace/zap.c:67
 #, c-format
 msgid "%s has slapped you!"
 msgstr "%s আপনাকে চড় মেরেছে!"
 
 # tithi
-#: ../libpurple/protocols/myspace/zap.c:67
 #, c-format
 msgid "Slapping %s..."
 msgstr "%s চড় মারছে..."
 
 # fix me tithi
 #. Goose means "to pinch someone on their butt"
-#: ../libpurple/protocols/myspace/zap.c:70
 msgid "Goose"
 msgstr "আঘাত করুন"
 
-#: ../libpurple/protocols/myspace/zap.c:71
 #, c-format
 msgid "%s has goosed you!"
 msgstr "%s আপনাকে আঘাত করেছে!"
 
-#: ../libpurple/protocols/myspace/zap.c:71
 #, c-format
 msgid "Goosing %s..."
 msgstr "%s আঘাত করছে..."
@@ -8740,17 +6167,14 @@
 #. A high-five is when two people's hands slap each other
 #. * in the air above their heads.  It is done to celebrate
 #. * something, often a victory, or to congratulate someone.
-#: ../libpurple/protocols/myspace/zap.c:76
 msgid "High-five"
 msgstr "হাই-ফাইভ"
 
-#: ../libpurple/protocols/myspace/zap.c:77
 #, c-format
 msgid "%s has high-fived you!"
 msgstr "%s আপনার সাথে হাই-ফাইভ করেছে!"
 
 # tithi
-#: ../libpurple/protocols/myspace/zap.c:77
 #, c-format
 msgid "High-fiving %s..."
 msgstr "%s হাই-ফাইভ করেছে..."
@@ -8759,17 +6183,14 @@
 #. We're not entirely sure what the MySpace people mean by
 #. * this... but we think it's the equivalent of "prank."  Or, for
 #. * someone to perform a mischievous trick or practical joke.
-#: ../libpurple/protocols/myspace/zap.c:82
 msgid "Punk"
 msgstr "মজা"
 
-#: ../libpurple/protocols/myspace/zap.c:83
 #, c-format
 msgid "%s has punk'd you!"
 msgstr "%s আপনার সাথে মজা করেছে!"
 
 # tithi
-#: ../libpurple/protocols/myspace/zap.c:83
 #, c-format
 msgid "Punking %s..."
 msgstr "%s মজা করছে..."
@@ -8782,199 +6203,157 @@
 #. * gesture, so it does not carry a harsh negative
 #. * connotation.  It is generally used in a playful tone
 #. * with friends.
-#: ../libpurple/protocols/myspace/zap.c:92
 msgid "Raspberry"
 msgstr "অঙ্গভঙ্গি"
 
 # fix me tithi
-#: ../libpurple/protocols/myspace/zap.c:93
 #, c-format
 msgid "%s has raspberried you!"
 msgstr "%s আপনাকে অঙ্গভঙ্গি দিয়েছে!"
 
 # tithi
-#: ../libpurple/protocols/myspace/zap.c:93
 #, c-format
 msgid "Raspberrying %s..."
 msgstr "%s অঙ্গভঙ্গি করছে..."
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1864
 msgid "Required parameters not passed in"
 msgstr "প্রয়োজনীয় মানসমূহ প্রবেশ করা হয়নি"
 
-#: ../libpurple/protocols/novell/nmuser.c:1867
 msgid "Unable to write to network"
 msgstr "নেটওয়ার্কে লিখতে ব্যর্থ"
 
-#: ../libpurple/protocols/novell/nmuser.c:1870
 msgid "Unable to read from network"
 msgstr "নেটওয়ার্ক থেকে পড়তে ব্যর্থ"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1873
 msgid "Error communicating with server"
 msgstr "সার্ভারের সাথে যোগাযোগের ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1877
 msgid "Conference not found"
 msgstr "অধিবেশন পাওয়া যাচ্ছে না"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1880
 msgid "Conference does not exist"
 msgstr "অধিবেশন বিদ্যমান নয়"
 
-#: ../libpurple/protocols/novell/nmuser.c:1884
 msgid "A folder with that name already exists"
 msgstr "ইতোমধ্যে ঐ নামের একটি ফোল্ডার বিদ্যমান"
 
-#: ../libpurple/protocols/novell/nmuser.c:1887
 msgid "Not supported"
 msgstr "সমর্থিত নয়"
 
-#: ../libpurple/protocols/novell/nmuser.c:1891
 msgid "Password has expired"
 msgstr "গুপ্তসঙ্কেতের মেয়াদ শেষ"
 
-#: ../libpurple/protocols/novell/nmuser.c:1894
 msgid "Incorrect password"
 msgstr "ভুল গুপ্তসঙ্কেতে"
 
-#: ../libpurple/protocols/novell/nmuser.c:1897
 msgid "User not found"
 msgstr "ব্যবহারকারী খুঁজে পাওয়া যায়নি"
 
-#: ../libpurple/protocols/novell/nmuser.c:1900
 msgid "Account has been disabled"
 msgstr "একাউন্টটি নিষ্ক্রিয় করা হয়েছে"
 
-#: ../libpurple/protocols/novell/nmuser.c:1903
 msgid "The server could not access the directory"
 msgstr "সার্ভার নির্দেশিকায় প্রবেশ করতে পারে না"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1906
 msgid "Your system administrator has disabled this operation"
 msgstr "আপনার সিস্টেম প্রশাসক এই অপারেশনটি নিষ্ক্রিয় করেছে"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1909
 msgid "The server is unavailable; try again later"
 msgstr "সার্ভার অপ্রাপ্য; পরবর্তীতে আবার চেষ্টা করুন"
 
-#: ../libpurple/protocols/novell/nmuser.c:1912
 msgid "Cannot add a contact to the same folder twice"
 msgstr "একই ফোল্ডারে একটি যোগাযোগ দুইবার যোগ করা যাবে না"
 
-#: ../libpurple/protocols/novell/nmuser.c:1915
 msgid "Cannot add yourself"
 msgstr "আপনি নিজেকে যোগ করতে পারবেন না"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1918
 msgid "Master archive is misconfigured"
 msgstr "মাস্টার আর্কাইভ ভূলভাবে-বিন্যাসিত"
 
-#: ../libpurple/protocols/novell/nmuser.c:1922
 msgid "Incorrect username or password"
 msgstr "ভুল ব্যবহারকারীর নাম বা গুপ্তসংকেত"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1925
 msgid "Could not recognize the host of the username you entered"
 msgstr "আপনার প্রবেশকৃত ব্যবহারকারীর-নামের হোস্ট শনাক্ত করতে পারে না"
 
-#: ../libpurple/protocols/novell/nmuser.c:1928
 msgid ""
 "Your account has been disabled because too many incorrect passwords were "
 "entered"
 msgstr ""
 "আপনার একাউন্টটি নিষ্ক্রিয় করা হয়েছে কারণ অনেকগুলো ভুল গুপ্তসংকেত প্রবেশ করা হয়েছিল"
 
-#: ../libpurple/protocols/novell/nmuser.c:1931
 msgid "You cannot add the same person twice to a conversation"
 msgstr "আপনি একটি কথোপকথনে একই ব্যক্তিকে দুইবার যোগ করতে পারেন না"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1935
 msgid "You have reached your limit for the number of contacts allowed"
 msgstr "আপনি আপনার অনুমোদিত যোগাযোগ সংখ্যার সীমায় পৌঁছেছেন"
 
-#: ../libpurple/protocols/novell/nmuser.c:1938
 msgid "You have entered an incorrect username"
 msgstr "আপনি একটি ভুল ব্যবহারকারীর নাম প্রবেশ করেছেন"
 
-#: ../libpurple/protocols/novell/nmuser.c:1941
 msgid "An error occurred while updating the directory"
 msgstr "নির্দেশিকাটি হালনাগাদ করার সময় একটি ত্রুটি দেখা দিয়েছে"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1944
 msgid "Incompatible protocol version"
 msgstr "অসঙ্গতিপূর্ণ প্রোটোকল সংস্করণ"
 
-#: ../libpurple/protocols/novell/nmuser.c:1947
 msgid "The user has blocked you"
 msgstr "এই ব্যবহারকারী আপনাকে ব্লক করে রেখেছে"
 
 # tithi
-#: ../libpurple/protocols/novell/nmuser.c:1950
 msgid ""
 "This evaluation version does not allow more than ten users to log in at one "
 "time"
 msgstr ""
 "এই মূল্যায়ন সংস্করণটি একই সময়ে দশজন ব্যবহারকারীর অধিক লগইন করতে অনুমোদন করে না"
 
-#: ../libpurple/protocols/novell/nmuser.c:1953
 msgid "The user is either offline or you are blocked"
 msgstr "এই ব্যবহারকারী হয় অফলাইনে বা আপনাকে ব্লক করে রেখেছে"
 
-#: ../libpurple/protocols/novell/nmuser.c:1956
 #, c-format
 msgid "Unknown error: 0x%X"
 msgstr "অজানা ত্রুটি: 0x%X"
 
-#: ../libpurple/protocols/novell/novell.c:124
 #, c-format
 msgid "Login failed (%s)."
 msgstr "লগইন ব্যর্থ হয়েছে (%s)।"
 
-#: ../libpurple/protocols/novell/novell.c:255
 #, c-format
 msgid "Unable to send message. Could not get details for user (%s)."
 msgstr ""
 "বার্তা পাঠানো সম্ভব হয়নি। ব্যবহারকারী (%s) সম্পর্কে বিস্তারিত তথ্য পাওয়া যায়নি।"
 
-#: ../libpurple/protocols/novell/novell.c:404
 #, c-format
 msgid "Unable to add %s to your buddy list (%s)."
 msgstr "%s কে আপনার বন্ধুতালিকায় (%s) যোগ করতে সমর্থ নয়।"
 
 #. TODO: Improve this! message to who or for what conference?
-#: ../libpurple/protocols/novell/novell.c:430
 #, c-format
 msgid "Unable to send message (%s)."
 msgstr "বার্তা (%s) পাঠাতে সমর্থ নয়।"
 
-#: ../libpurple/protocols/novell/novell.c:501
-#: ../libpurple/protocols/novell/novell.c:993
 #, c-format
 msgid "Unable to invite user (%s)."
 msgstr "ব্যবহারকারীকে (%s) আমন্ত্রন জানাতে সমর্থ নয়।"
 
-#: ../libpurple/protocols/novell/novell.c:540
 #, c-format
 msgid "Unable to send message to %s. Could not create the conference (%s)."
 msgstr "%s এ বার্তা পাঠাতে সমর্থ নয়। অধিবেশন (%s) তৈরি করতে পারে না। "
 
-#: ../libpurple/protocols/novell/novell.c:545
 #, c-format
 msgid "Unable to send message. Could not create the conference (%s)."
 msgstr "বার্তা পাঠাতে সমর্থ নয়। অধিবেশন (%s) তৈরি করতে পারে না। "
 
-#: ../libpurple/protocols/novell/novell.c:592
 #, c-format
 msgid ""
 "Unable to move user %s to folder %s in the server side list. Error while "
@@ -8983,7 +6362,6 @@
 "ব্যবহারকারী %s কে সার্ভারের পার্শ্বের তালিকার %s ফোল্ডারে সরিয়ে নিতে সমর্থ নয়। "
 "ফোল্ডার (%s) তৈরীর সময় ত্রুটি দেখা দিয়েছে।"
 
-#: ../libpurple/protocols/novell/novell.c:640
 #, c-format
 msgid ""
 "Unable to add %s to your buddy list. Error creating folder in server side "
@@ -8993,65 +6371,49 @@
 "তৈরীর সময় ত্রুটি দেখা দিয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/novell/novell.c:713
 #, c-format
 msgid "Could not get details for user %s (%s)."
 msgstr "%1s (%2s) ব্যবহারকারীর জন্য বিস্তারিত বর্ণনা পাবে না।"
 
 # msgstr "ব্যবহারকারী %s এর বিবরন পাওয়া যাচ্ছে না"
-#: ../libpurple/protocols/novell/novell.c:759
-#: ../libpurple/protocols/novell/novell.c:905
 #, c-format
 msgid "Unable to add user to privacy list (%s)."
 msgstr "ব্যক্তিগত তালিকায় (%s) ব্যবহারকারী যোগ করা সম্ভব হয়নি।"
 
-#: ../libpurple/protocols/novell/novell.c:806
 #, c-format
 msgid "Unable to add %s to deny list (%s)."
 msgstr "নিষিদ্ধ তালিকায় (%s) %s যোগ করা সম্ভব হয়নি।"
 
-#: ../libpurple/protocols/novell/novell.c:859
 #, c-format
 msgid "Unable to add %s to permit list (%s)."
 msgstr "অনুমোদিত তালিকায় (%s) %s যোগ করা সম্ভব হয়নি।"
 
-#: ../libpurple/protocols/novell/novell.c:927
 #, c-format
 msgid "Unable to remove %s from privacy list (%s)."
 msgstr "%s কে ব্যক্তিগত তালিকা (%s) থেকে মুছে ফেলতে সমর্থ হয়নি।"
 
-#: ../libpurple/protocols/novell/novell.c:950
-#: ../libpurple/protocols/novell/novell.c:1656
 #, c-format
 msgid "Unable to change server side privacy settings (%s)."
 msgstr "সার্ভার পার্শ্বের ব্যাক্তিগত বিন্যাসনসমূহ (%s) পরিবর্তন করতে সমর্থ হয়নি।"
 
-#: ../libpurple/protocols/novell/novell.c:1020
 #, c-format
 msgid "Unable to create conference (%s)."
 msgstr "অধিবেশন (%s) শুরু করতে সমর্থ হয়নি।"
 
 # tithi
-#: ../libpurple/protocols/novell/novell.c:1131
-#: ../libpurple/protocols/novell/novell.c:1702
 msgid "Error communicating with server. Closing connection."
 msgstr "সার্ভারের সঙ্গে যোগাযোগে ত্রুটি। সংযোগ বন্ধ করছে।"
 
-#: ../libpurple/protocols/novell/novell.c:1485
 msgid "Telephone Number"
 msgstr "টেলিফোন নম্বর"
 
-#: ../libpurple/protocols/novell/novell.c:1491
 msgid "Personal Title"
 msgstr "ব্যক্তিগত শিরোনাম"
 
 # tithi
-#: ../libpurple/protocols/novell/novell.c:1495
 msgid "Mailstop"
 msgstr "মেইল-বন্ধ"
 
-#: ../libpurple/protocols/novell/novell.c:1511
-#: ../libpurple/protocols/sametime/sametime.c:4184
 msgid "User ID"
 msgstr "ব্যবহারকারী আইডি"
 
@@ -9061,39 +6423,31 @@
 #. purple_notify_user_info_add_pair(user_info, tag, value);
 #. }
 #.
-#: ../libpurple/protocols/novell/novell.c:1524
 msgid "Full name"
 msgstr "সম্পূর্ন নাম"
 
-#: ../libpurple/protocols/novell/novell.c:1646
 #, c-format
 msgid "GroupWise Conference %d"
 msgstr "GroupWise অধিবেশন %d"
 
 # tithi
-#: ../libpurple/protocols/novell/novell.c:1729
 msgid "Authenticating..."
 msgstr "প্রমাণীকরণ..."
 
-#: ../libpurple/protocols/novell/novell.c:1743
 msgid "Unable to connect to server."
 msgstr "সার্ভারের সাথে সংযোগ স্থাপনে অসমর্থ।"
 
-#: ../libpurple/protocols/novell/novell.c:1746
 msgid "Waiting for response..."
 msgstr "উত্তরের জন্য অপেক্ষা করছে..."
 
-#: ../libpurple/protocols/novell/novell.c:1881
 #, c-format
 msgid "%s has been invited to this conversation."
 msgstr "%s এই কথোপকথনে আমন্ত্রিত হয়েছে।"
 
-#: ../libpurple/protocols/novell/novell.c:1909
 msgid "Invitation to Conversation"
 msgstr "কথোপকথনে আমন্ত্রণ"
 
 # tithi
-#: ../libpurple/protocols/novell/novell.c:1910
 #, c-format
 msgid ""
 "Invitation from: %s\n"
@@ -9104,23 +6458,19 @@
 "\n"
 "প্রেরিত: %2s"
 
-#: ../libpurple/protocols/novell/novell.c:1912
 msgid "Would you like to join the conversation?"
 msgstr "আপনি কি কথোপকথনে অংশগ্রহন করতে ইচ্ছুক?"
 
 # tithi
-#: ../libpurple/protocols/novell/novell.c:2028
 msgid "You have been logged out because you logged in at another workstation."
 msgstr "আপনাকে প্রস্থান করছেন কারণ আপনি অন্য একটি ওয়ার্ক-ষ্টেশনে সংযুক্ত হয়েছেন।"
 
 # tithi
-#: ../libpurple/protocols/novell/novell.c:2085
 #, c-format
 msgid ""
 "%s appears to be offline and did not receive the message that you just sent."
 msgstr "%s অফলাইনে উপস্থিত এবং আপনার প্রেরিত বার্তাটি গ্রহণ করেনি।"
 
-#: ../libpurple/protocols/novell/novell.c:2185
 msgid ""
 "Unable to connect to server. Please enter the address of the server you wish "
 "to connect to."
@@ -9129,12 +6479,10 @@
 "ঠিকানা প্রবেশ করান।"
 
 # tithi
-#: ../libpurple/protocols/novell/novell.c:2214
 msgid "Error. SSL support is not installed."
 msgstr "ত্রুটি। SSL সমর্থন সংস্থাপিত নয়।"
 
 # tithi
-#: ../libpurple/protocols/novell/novell.c:2522
 msgid "This conference has been closed. No more messages can be sent."
 msgstr "এই অধিবেশনটি বন্ধ করা হয়েছে। আর কোনো বার্তা পাঠানো যাবে না।"
 
@@ -9149,43 +6497,24 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/novell/novell.c:3537
-#: ../libpurple/protocols/novell/novell.c:3539
 msgid "Novell GroupWise Messenger Protocol Plugin"
 msgstr "নোভেল GroupWise বার্তাবাহক প্রোটোকল প্লাগইন"
 
-#: ../libpurple/protocols/novell/novell.c:3564
 msgid "Server address"
 msgstr "সার্ভারের ঠিকানা"
 
-#: ../libpurple/protocols/novell/novell.c:3568
 msgid "Server port"
 msgstr "সার্ভারের পোর্ট"
 
-#: ../libpurple/protocols/oscar/family_chatnav.c:62
 msgid "Could not join chat room"
 msgstr "আড্ডার রুমে যুক্ত হতে পারেনি"
 
-#: ../libpurple/protocols/oscar/family_chatnav.c:63
 msgid "Invalid chat room name"
 msgstr "অবৈধ আড্ডার রুমের নাম"
 
-#: ../libpurple/protocols/oscar/flap_connection.c:443
-#: ../libpurple/protocols/qq/qq_network.c:400
-#: ../libpurple/protocols/yahoo/yahoo.c:2524
-#: ../libpurple/protocols/yahoo/yahoo.c:2692
-#: ../libpurple/protocols/yahoo/ycht.c:482 ../libpurple/proxy.c:801
-#: ../libpurple/proxy.c:1325 ../libpurple/proxy.c:1439
-#: ../libpurple/proxy.c:1675 ../libpurple/proxy.c:1750
 msgid "Server closed the connection."
 msgstr "সার্ভার সংযোগটি বন্ধ করে দিয়েছে।"
 
-#: ../libpurple/protocols/oscar/flap_connection.c:445
-#: ../libpurple/protocols/qq/qq_network.c:392
-#: ../libpurple/protocols/yahoo/yahoo.c:2517
-#: ../libpurple/protocols/yahoo/yahoo.c:2685 ../libpurple/proxy.c:812
-#: ../libpurple/proxy.c:1337 ../libpurple/proxy.c:1451
-#: ../libpurple/proxy.c:1686 ../libpurple/proxy.c:1762
 #, c-format
 msgid ""
 "Lost connection with server:\n"
@@ -9194,10 +6523,6 @@
 "সার্ভারের সাথে সংযুক্ত হারিয়েছে:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/flap_connection.c:448
-#: ../libpurple/proxy.c:1354 ../libpurple/proxy.c:1384
-#: ../libpurple/proxy.c:1464 ../libpurple/proxy.c:1535
-#: ../libpurple/proxy.c:1636 ../libpurple/proxy.c:1775
 msgid "Received invalid data on connection with server."
 msgstr "সার্ভারের সাথে সংযুক্ত অবস্থায় অবৈধ উপাত্ত গ্রহণ করেছে।"
 
@@ -9211,13 +6536,10 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/oscar/libaim.c:118
-#: ../libpurple/protocols/oscar/libaim.c:120
 msgid "AIM Protocol Plugin"
 msgstr "এআইএম প্রোটোকল প্লাগইন"
 
 # tithi
-#: ../libpurple/protocols/oscar/libicq.c:35
 msgid "ICQ UIN..."
 msgstr "ICQ UIN..."
 
@@ -9231,47 +6553,35 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/oscar/libicq.c:127
-#: ../libpurple/protocols/oscar/libicq.c:129
 msgid "ICQ Protocol Plugin"
 msgstr "আইসিকিউ প্রোটোকল প্লাগইন"
 
 # tithi
-#: ../libpurple/protocols/oscar/libicq.c:156
-#: ../libpurple/protocols/yahoo/yahoo.c:4516
-#: ../libpurple/protocols/zephyr/zephyr.c:2988
 msgid "Encoding"
 msgstr "সঙ্কেতায়ন"
 
-#: ../libpurple/protocols/oscar/odc.c:42
 msgid "The remote user has closed the connection."
 msgstr "দূরবর্তী ব্যবহারকারী যোগাযোগটি বন্ধ করে দিয়েছে।"
 
-#: ../libpurple/protocols/oscar/odc.c:44
 msgid "The remote user has declined your request."
 msgstr "দূরবর্তী ব্যবহারকারী আপনার অনুরোধ অস্বীকার করেছে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/odc.c:46
 #, c-format
 msgid "Lost connection with the remote user:<br>%s"
 msgstr "দূরবর্তী ব্যবহারকারীর সঙ্গে সংযোগ হারিয়েছে:<br>%s"
 
 # tithi
-#: ../libpurple/protocols/oscar/odc.c:49
 msgid "Received invalid data on connection with remote user."
 msgstr "দূরবর্তী ব্যবহারকারীর সাথে সংযুক্ত অবস্থায় অবৈধ উপাত্ত গ্রহণ করেছে।"
 
-#: ../libpurple/protocols/oscar/odc.c:51
 msgid "Could not establish a connection with the remote user."
 msgstr "দূরবর্তী ব্য়বহারকারীর সাথে সংযোগ স্থাপন করতে পারেনি।"
 
-#: ../libpurple/protocols/oscar/odc.c:562
 msgid "Direct IM established"
 msgstr "সরাসরি IM স্থাপন করা হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/oscar/odc.c:601
 #, c-format
 msgid ""
 "%s tried to send you a %s file, but we only allow files up to %s over Direct "
@@ -9282,128 +6592,102 @@
 "চেষ্টা করুন।\n"
 
 # tithi
-#: ../libpurple/protocols/oscar/oft.c:656
 #, c-format
 msgid "File %s is %s, which is larger than the maximum size of %s."
 msgstr "ফাইল %1s হলো %2s, যা %3s এর সর্বোচ্চ আকার অপেক্ষা বৃহত্তর।"
 
-#: ../libpurple/protocols/oscar/oscar.c:119
 msgid "Invalid error"
 msgstr "অবৈধ ত্রুটি"
 
-#: ../libpurple/protocols/oscar/oscar.c:120
 msgid "Invalid SNAC"
 msgstr "অবৈধ SNAC"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:121
 msgid "Rate to host"
 msgstr "হোস্টের হার"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:122
 msgid "Rate to client"
 msgstr "গ্রাহকের হার"
 
-#: ../libpurple/protocols/oscar/oscar.c:124
 msgid "Service unavailable"
 msgstr "সেবা অপ্রাপ্য"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:125
 msgid "Service not defined"
 msgstr "সেবা নির্ধারিত নয়"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:126
 msgid "Obsolete SNAC"
 msgstr "অপ্রচলিত SNAC"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:127
 msgid "Not supported by host"
 msgstr "হোস্ট দ্বারা সমর্থিত নয়"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:128
 msgid "Not supported by client"
 msgstr "গ্রাহক দ্বারা সমর্থিত নয়"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:129
 msgid "Refused by client"
 msgstr "গ্রাহক দ্বারা অস্বীকৃত"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:130
 msgid "Reply too big"
 msgstr "উত্তর অনেক বেশি বড়"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:131
 msgid "Responses lost"
 msgstr "সাড়াসমূহ হারিয়েছে"
 
-#: ../libpurple/protocols/oscar/oscar.c:132
 msgid "Request denied"
 msgstr "অনুরোধ প্রত্যাখ্যান করা হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:133
 msgid "Busted SNAC payload"
 msgstr "বাস্টেড SNAC পেলোড"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:134
 msgid "Insufficient rights"
 msgstr "অপর্যাপ্ত অধিকার"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:135
 msgid "In local permit/deny"
 msgstr "স্থানীয় অনুমতি/অস্বীকার এ"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:136
 msgid "Warning level too high (sender)"
 msgstr "সতর্কতা স্তর খুব উচ্চ (প্রেরক)"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:137
 msgid "Warning level too high (receiver)"
 msgstr "সতর্কতা স্তর খুব উচ্চ (গ্রাহক)"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:138
 msgid "User temporarily unavailable"
 msgstr "ব্যবহারকারী সাময়িকভাবে অপ্রাপ্য"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:139
 msgid "No match"
 msgstr "কোনো মিল নেই"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:140
 msgid "List overflow"
 msgstr "তালিকা অতিরিক্ত"
 
-#: ../libpurple/protocols/oscar/oscar.c:141
 msgid "Request ambiguous"
 msgstr "অনুরোধ অস্পষ্ট"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:142
 msgid "Queue full"
 msgstr "সারি পূর্ণ"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:143
 msgid "Not while on AOL"
 msgstr "এই সময়ে AOL এ নেই"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:351
 msgid ""
 "(There was an error receiving this message.  The buddy you are speaking with "
 "is probably using a different encoding than expected.  If you know what "
@@ -9416,7 +6700,6 @@
 "পছন্দসমূহে উল্লেখ করতে পারেন।)"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:460
 #, c-format
 msgid ""
 "(There was an error receiving this message.  Either you and %s have "
@@ -9426,152 +6709,110 @@
 "আছে, বা %s এর একটি ত্রুটিপূর্ণ গ্রাহক রয়েছে।)"
 
 #. Label
-#: ../libpurple/protocols/oscar/oscar.c:653 ../pidgin/gtkutils.c:2457
-#: ../pidgin/gtkutils.c:2487
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:336
 msgid "Buddy Icon"
 msgstr "বন্ধু আইকন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:656
 msgid "Voice"
 msgstr "কন্ঠ"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:659
 msgid "AIM Direct IM"
 msgstr "AIM সরাসরি IM"
 
-#: ../libpurple/protocols/oscar/oscar.c:665
-#: ../libpurple/protocols/oscar/oscar.c:6236
 msgid "Get File"
 msgstr "ফাইল গ্রহণ করুন"
 
-#: ../libpurple/protocols/oscar/oscar.c:672
 msgid "Games"
 msgstr "খেলা"
 
-#: ../libpurple/protocols/oscar/oscar.c:675
 msgid "Add-Ins"
 msgstr "অন্তর্যোগসমূহ"
 
-#: ../libpurple/protocols/oscar/oscar.c:678
 msgid "Send Buddy List"
 msgstr "বন্ধু তালিকা পাঠান"
 
-#: ../libpurple/protocols/oscar/oscar.c:681
 msgid "ICQ Direct Connect"
 msgstr "ICQ সরাসরি সংযোগ"
 
-#: ../libpurple/protocols/oscar/oscar.c:684
 msgid "AP User"
 msgstr "AP ব্যবহারকারী"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:687
 msgid "ICQ RTF"
 msgstr "ICQ RTF"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:690
 msgid "Nihilist"
 msgstr "নাস্তিবাদী"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:693
 msgid "ICQ Server Relay"
 msgstr "ICQ সার্ভার সম্প্রচার"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:696
 msgid "Old ICQ UTF8"
 msgstr "পুরাতন ICQ UTF8"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:699
 msgid "Trillian Encryption"
 msgstr "ট্রিলিয়ন সঙ্কেতায়ন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:702
 msgid "ICQ UTF8"
 msgstr "ICQ UTF8"
 
-#: ../libpurple/protocols/oscar/oscar.c:705
 msgid "Hiptop"
 msgstr "হিপটপ"
 
-#: ../libpurple/protocols/oscar/oscar.c:708
 msgid "Security Enabled"
 msgstr "নিরাপত্তা সক্রিয়কৃত"
 
-#: ../libpurple/protocols/oscar/oscar.c:711
 msgid "Video Chat"
 msgstr "ভিডিও আড্ডা"
 
-#: ../libpurple/protocols/oscar/oscar.c:715
 msgid "iChat AV"
 msgstr "আইআড্ডা AV"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:718
 msgid "Live Video"
 msgstr "সরাসরি ভিডিও"
 
-#: ../libpurple/protocols/oscar/oscar.c:721
 msgid "Camera"
 msgstr "ক্যামেরা"
 
-#: ../libpurple/protocols/oscar/oscar.c:724
 msgid "Screen Sharing"
 msgstr "স্ক্রীন শেয়ারকরণ"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:742
-#: ../libpurple/protocols/oscar/oscar.c:6001
 msgid "Free For Chat"
 msgstr "আড্ডার জন্য মুক্ত"
 
-#: ../libpurple/protocols/oscar/oscar.c:746
-#: ../libpurple/protocols/oscar/oscar.c:6036
 msgid "Not Available"
 msgstr "বিদ্যমান নেই "
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:748
-#: ../libpurple/protocols/oscar/oscar.c:6022
 msgid "Occupied"
 msgstr "অধিষ্টিত"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:752
 msgid "Web Aware"
 msgstr "ওয়েব সচেতন"
 
-#: ../libpurple/protocols/oscar/oscar.c:754 ../libpurple/protocols/qq/qq.c:270
-#: ../libpurple/protocols/qq/qq.c:417
-#: ../libpurple/protocols/yahoo/yahoo.c:3173 ../libpurple/status.c:162
-#: ../pidgin/gtkdocklet.c:557 ../pidgin/gtkstatusbox.c:1098
 msgid "Invisible"
 msgstr "অদৃশ্য"
 
-#: ../libpurple/protocols/oscar/oscar.c:962
-#: ../libpurple/protocols/oscar/oscar.c:3913
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:721 ../pidgin/gtkprefs.c:1207
 msgid "IP Address"
 msgstr "আইপি ঠিকানা"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:968
 msgid "Warning Level"
 msgstr "সতর্কতা স্তর"
 
-#: ../libpurple/protocols/oscar/oscar.c:978
 msgid "Buddy Comment"
 msgstr "বন্ধুর মন্তব্য"
 
 # fix me tithi
-#: ../libpurple/protocols/oscar/oscar.c:1118
 #, c-format
 msgid ""
 "Could not connect to authentication server:\n"
@@ -9580,7 +6821,6 @@
 "প্রমাণীকরণ সাথে সংযুক্ত করা যায়নি:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:1126
 #, c-format
 msgid ""
 "Could not connect to BOS server:\n"
@@ -9589,23 +6829,19 @@
 "BOS সার্ভারের সাথে সংযুক্ত করা যায়নি:\n"
 "%s"
 
-#: ../libpurple/protocols/oscar/oscar.c:1158
 msgid "Username sent"
 msgstr "ব্যবহারকারীর-নাম পাঠানো হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:1163
 msgid "Connection established, cookie sent"
 msgstr "সংযোগ প্রতিষ্ঠিত, কুকি পাঠানো হয়েছে "
 
 # tithi
 #. TODO: Don't call this with ssi
-#: ../libpurple/protocols/oscar/oscar.c:1192
 msgid "Finalizing connection"
 msgstr "সংযোগ চূড়ান্ত করা হচ্ছে"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:1420
 #, c-format
 msgid ""
 "Unable to login: Could not sign on as %s because the username is invalid.  "
@@ -9618,37 +6854,25 @@
 
 #. Unregistered screen name
 #. uid is not exist
-#: ../libpurple/protocols/oscar/oscar.c:1506
-#: ../libpurple/protocols/qq/qq_base.c:1109
-#: ../libpurple/protocols/yahoo/yahoo.c:2144
 msgid "Invalid username."
 msgstr "অবৈধ ব্যবহারকারীর নাম।"
 
-#: ../libpurple/protocols/oscar/oscar.c:1512
-#: ../libpurple/protocols/qq/qq_base.c:415
-#: ../libpurple/protocols/qq/qq_base.c:1100
-#: ../libpurple/protocols/simple/simple.c:1130
-#: ../libpurple/protocols/yahoo/yahoo.c:2166
 msgid "Incorrect password."
 msgstr "ভুল গুপ্তসংকেত।"
 
 # tithi
 #. Suspended account
-#: ../libpurple/protocols/oscar/oscar.c:1516
 msgid "Your account is currently suspended."
 msgstr "আপনার একাউন্টটি বর্তমানে স্থগিত।"
 
 # tithi
 #. service temporarily unavailable
-#: ../libpurple/protocols/oscar/oscar.c:1521
 msgid "The AOL Instant Messenger service is temporarily unavailable."
 msgstr "AOL তাৎক্ষণিক বার্তাবাহক সার্ভিস সাময়িকভাবে অপ্রাপ্য।"
 
 # tithi
 #. screen name connecting too frequently
 #. IP address connecting too frequently
-#: ../libpurple/protocols/oscar/oscar.c:1525
-#: ../libpurple/protocols/oscar/oscar.c:1538
 msgid ""
 "You have been connecting and disconnecting too frequently. Wait ten minutes "
 "and try again. If you continue to try, you will need to wait even longer."
@@ -9658,105 +6882,76 @@
 "করতে হবে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:1531
 #, c-format
 msgid "The client version you are using is too old. Please upgrade at %s"
 msgstr "আপনার ব্যবহৃত গ্রাহক সংস্করণ খুব পুরনো। অনুগ্রহ করে %s এ উন্নততর করুন"
 
-#: ../libpurple/protocols/oscar/oscar.c:1573
 msgid "Could Not Connect"
 msgstr "সংযোগ দিতে পারে না"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:1577
 msgid "Received authorization"
 msgstr "গৃহীত অনুমোদন প্রাপ্ত"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:1600
 msgid "The SecurID key entered is invalid."
 msgstr "অবৈধ নিরাপদ-আইডি কী প্রবেশ করা হয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:1613
 msgid "Enter SecurID"
 msgstr "নিরাপদ-আইডি প্রবেশ করান"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:1614
 msgid "Enter the 6 digit number from the digital display."
 msgstr "ডিজিটাল প্রদর্শন থেকে ৬ ডিজিটের সংখ্যা প্রবেশ করান।"
 
 #. *
 #. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
 #.
-#: ../libpurple/protocols/oscar/oscar.c:1616
-#: ../libpurple/protocols/oscar/oscar.c:2492
-#: ../libpurple/protocols/oscar/oscar.c:2540
-#: ../libpurple/protocols/oscar/oscar.c:6107
-#: ../libpurple/protocols/oscar/oscar.c:6393 ../libpurple/request.h:1401
 msgid "_OK"
 msgstr "ঠিক আছে (_O)"
 
-#: ../libpurple/protocols/oscar/oscar.c:1657
 #, c-format
 msgid "You may be disconnected shortly.  If so, check %s for updates."
 msgstr "আপনি সাময়িকভাবে বিচ্ছিন্ন থাকতে পারেন।  হালনাগাদের জন্য %s পরীক্ষা করুন."
 
-#: ../libpurple/protocols/oscar/oscar.c:1661
-#: ../libpurple/protocols/oscar/oscar.c:1710
 msgid "Unable to get a valid AIM login hash."
 msgstr "একটি বৈধ AIM লগইন হ্যাশ পেতে ব্যর্থ।"
 
-#: ../libpurple/protocols/oscar/oscar.c:1706
-#: ../libpurple/protocols/oscar/oscar.c:1808
 #, c-format
 msgid "You may be disconnected shortly.  Check %s for updates."
 msgstr "আপনি সাময়িকভাবে বিচ্ছিন্ন থাকতে পারেন।  হালনাগাদের জন্য %s পরীক্ষা করুন।"
 
-#: ../libpurple/protocols/oscar/oscar.c:1812
 msgid "Unable to get a valid login hash."
 msgstr "একটি বৈধ লগইন হ্যাশ পেতে ব্যর্থ।"
 
-#: ../libpurple/protocols/oscar/oscar.c:1843
 msgid "Password sent"
 msgstr "গুপ্তসঙ্কেত পাঠানো হয়েছে"
 
-#: ../libpurple/protocols/oscar/oscar.c:1899
 msgid "Unable to initialize connection"
 msgstr "সংযোগ প্রস্তুত করতে ব্যর্থ"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2461
 msgid "Please authorize me so I can add you to my buddy list."
 msgstr ""
 "অনুগ্রহ করে আমাকে অনুমোদন দিন যেন আমি আপনাকে আমার বন্ধু তালিকায় যুক্ত করতে পারি।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2490
 msgid "Authorization Request Message:"
 msgstr "প্রাপ্তাধিকার অনুরোধ বার্তা:"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2491
 msgid "Please authorize me!"
 msgstr "অনুগ্রহ করে আমাকে অনুমোদন দিন!"
 
-#: ../libpurple/protocols/oscar/oscar.c:2531
-#: ../libpurple/protocols/oscar/oscar.c:2539
-#: ../libpurple/protocols/oscar/oscar.c:2666
-#: ../libpurple/protocols/oscar/oscar.c:5509
-#: ../libpurple/protocols/yahoo/yahoo.c:998
 msgid "No reason given."
 msgstr "কোনো কারন দর্শানো হয়নি।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2538
 msgid "Authorization Denied Message:"
 msgstr "প্রাপ্তাধিকার অগ্রাহ্য বার্তা:"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2666
 #, c-format
 msgid ""
 "The user %u has denied your request to add them to your buddy list for the "
@@ -9768,20 +6963,17 @@
 "%2s"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2667
 msgid "ICQ authorization denied."
 msgstr "ICQ প্রাপ্তাধিকার অগ্রাহ্য।"
 
 # tithi
 #. Someone has granted you authorization
-#: ../libpurple/protocols/oscar/oscar.c:2674
 #, c-format
 msgid "The user %u has granted your request to add them to your buddy list."
 msgstr ""
 "%u ব্যবহারকারী আপনার বন্ধু তালিকাতে তাদেরকে যোগ করতে আপনার অনুরোধ গ্রহণ করেছে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2682
 #, c-format
 msgid ""
 "You have received a special message\n"
@@ -9795,7 +6987,6 @@
 "%3s "
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2690
 #, c-format
 msgid ""
 "You have received an ICQ page\n"
@@ -9809,7 +7000,6 @@
 "%3s"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2698
 #, c-format
 msgid ""
 "You have received an ICQ email from %s [%s]\n"
@@ -9823,32 +7013,26 @@
 "%3s"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2719
 #, c-format
 msgid "ICQ user %u has sent you a buddy: %s (%s)"
 msgstr "ICQ %1u ব্যবহারকারী আপনাকে একটি বন্ধু পাঠিয়েছে: %2s (%3s)"
 
-#: ../libpurple/protocols/oscar/oscar.c:2725
 msgid "Do you want to add this buddy to your buddy list?"
 msgstr "আপনি কি এই বন্ধুকে আপনার বন্ধু তালিকায় যোগ করতে চান?"
 
-#: ../libpurple/protocols/oscar/oscar.c:2730 ../pidgin/gtkroomlist.c:315
 msgid "_Add"
 msgstr "যোগ করুন (_A)"
 
-#: ../libpurple/protocols/oscar/oscar.c:2731
 msgid "_Decline"
 msgstr "প্রত্যাখান করুন (_D)"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2855
 #, c-format
 msgid "You missed %hu message from %s because it was invalid."
 msgid_plural "You missed %hu messages from %s because they were invalid."
 msgstr[0] "আপনি %2$s এর %1$hu বার্তাটি হারিয়েছেন কারণ এটি অবৈধ ছিল।"
 msgstr[1] "আপনি %2$s এর %1$hu বার্তাসমূহ হারিয়েছেন কারণ এটি অবৈধ ছিল।"
 
-#: ../libpurple/protocols/oscar/oscar.c:2864
 #, c-format
 msgid "You missed %hu message from %s because it was too large."
 msgid_plural "You missed %hu messages from %s because they were too large."
@@ -9856,7 +7040,6 @@
 msgstr[1] "আপনি %1hu বার্তাসমূহ %2s হতে  হারিয়েছেন কারণ তারা অনেক বড় ছিল।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:2873
 #, c-format
 msgid ""
 "You missed %hu message from %s because the rate limit has been exceeded."
@@ -9868,7 +7051,6 @@
 "আপনি %1hu বার্তাসমূহ %2s হতে  হারিয়েছেন কারণ হারের সীমা অতিক্রম করা হয়েছিল।"
 
 # fix me tithi
-#: ../libpurple/protocols/oscar/oscar.c:2882
 #, c-format
 msgid ""
 "You missed %hu message from %s because his/her warning level is too high."
@@ -9878,7 +7060,6 @@
 msgstr[1] "আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ তার সতর্কতা স্তর খুব উচ্চ।"
 
 # fix me tithi
-#: ../libpurple/protocols/oscar/oscar.c:2891
 #, c-format
 msgid "You missed %hu message from %s because your warning level is too high."
 msgid_plural ""
@@ -9886,7 +7067,6 @@
 msgstr[0] "আপনি %1hu বার্তাটি %2s হতে হারিয়েছেন কারণ আপনার সতর্কতা স্তর খুব উচ্চ।"
 msgstr[1] "আপনি %1hu বার্তাসমূহ %2s হতে হারিয়েছেন কারণ আপনার সতর্কতা স্তর খুব উচ্চ।"
 
-#: ../libpurple/protocols/oscar/oscar.c:2900
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
 msgid_plural "You missed %hu messages from %s for an unknown reason."
@@ -9894,50 +7074,37 @@
 msgstr[1] "আপনি অজ্ঞাত কারণে %1hu বার্তাসমূহ %2s হতে হারিয়েছেন।"
 
 #. Data is assumed to be the destination sn
-#: ../libpurple/protocols/oscar/oscar.c:3055
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "বার্তা পাঠানো অসমর্থ: %s।"
 
-#: ../libpurple/protocols/oscar/oscar.c:3055
-#: ../libpurple/protocols/oscar/oscar.c:3060
-#: ../libpurple/protocols/oscar/oscar.c:3124
 msgid "Unknown reason."
 msgstr "অজ্ঞাত কারণ।"
 
-#: ../libpurple/protocols/oscar/oscar.c:3058
-#: ../libpurple/protocols/sametime/sametime.c:2466
 #, c-format
 msgid "Unable to send message to %s:"
 msgstr "%s এ বার্তা পাঠাতে সমর্থ নয়:"
 
-#: ../libpurple/protocols/oscar/oscar.c:3124
 #, c-format
 msgid "User information not available: %s"
 msgstr "ব্যবহারকারীর তথ্য সহজলভ্য় নয়: %s"
 
-#: ../libpurple/protocols/oscar/oscar.c:3161
 msgid "Online Since"
 msgstr "যখন থেকে অনলাইনে"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:3166
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1185
 msgid "Member Since"
 msgstr "যখন থেকে সদস্য"
 
-#: ../libpurple/protocols/oscar/oscar.c:3184
 msgid "Profile"
 msgstr "প্রোফাইল"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:3266
 msgid "Your AIM connection may be lost."
 msgstr "আপনার AIM সংযোগ হয়ত নষ্ট হয়ে গেছে।"
 
 # tithi
 #. The conversion failed!
-#: ../libpurple/protocols/oscar/oscar.c:3454
 msgid ""
 "[Unable to display a message from this user because it contained invalid "
 "characters.]"
@@ -9946,7 +7113,6 @@
 "করেছিল।]"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:3618
 msgid ""
 "The last action you attempted could not be performed because you are over "
 "the rate limit. Please wait 10 seconds and try again."
@@ -9954,59 +7120,44 @@
 "আপনি সর্বশেষ যে কার্যটে চেষ্টা করেছেন তা সম্পাদন করা যায়নি কারণ আপনি হারের সীমা "
 "অতিক্রম করেছেন। অনুগ্রহ করে ১০ সেকেন্ড অপেক্ষা করুন এবং পুনরায় চেষ্টা করুন।"
 
-#: ../libpurple/protocols/oscar/oscar.c:3703
-#: ../libpurple/protocols/toc/toc.c:977
 #, c-format
 msgid "You have been disconnected from chat room %s."
 msgstr "আপনাকে %s আড্ডার রুম থেকে বিচ্ছিন্ন করা হয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:3935
-#: ../libpurple/protocols/silc/util.c:591
-#: ../libpurple/protocols/silc10/util.c:586
 msgid "Mobile Phone"
 msgstr "মোবাইল ফোন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:3964
 msgid "Personal Web Page"
 msgstr "ব্যক্তিগত ওয়েব পেজ"
 
 #. aim_userinfo_t
 #. strip_html_tags
-#: ../libpurple/protocols/oscar/oscar.c:3972
 msgid "Additional Information"
 msgstr "অতিরিক্ত তথ্য"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:3981
-#: ../libpurple/protocols/oscar/oscar.c:3989
 msgid "Zip Code"
 msgstr "জিপ কোড"
 
-#: ../libpurple/protocols/oscar/oscar.c:3992
 msgid "Work Information"
 msgstr "কাজের তথ্য"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:3995
 msgid "Division"
 msgstr "বিভাগ"
 
-#: ../libpurple/protocols/oscar/oscar.c:3996
 msgid "Position"
 msgstr "অবস্থান"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4000
 msgid "Web Page"
 msgstr "ওয়েব পেজ"
 
-#: ../libpurple/protocols/oscar/oscar.c:4058
 msgid "Pop-Up Message"
 msgstr "পপ-আপ বার্তা"
 
-#: ../libpurple/protocols/oscar/oscar.c:4098
 #, c-format
 msgid "The following username is associated with %s"
 msgid_plural "The following usernames are associated with %s"
@@ -10014,24 +7165,20 @@
 msgstr[1] "নিম্নবর্ণিত ব্যবহারকারীর-নামসমূহ  %s এর সাথে সম্পর্কিত"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4129
 #, c-format
 msgid "No results found for email address %s"
 msgstr "%s ই-মেইল ঠিকানার জন্য কোনো ফলাফল খুঁজে পায়নি"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4150
 #, c-format
 msgid "You should receive an email asking to confirm %s."
 msgstr "আপনি %s নিশ্চিত করতে একটি ই-মেইল গ্রহণ করবেন।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4152
 msgid "Account Confirmation Requested"
 msgstr "একাউন্ট নিশ্চিতকরণ অনুরোধ করা হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4185
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to format username because the requested name differs "
@@ -10041,13 +7188,11 @@
 "ভিন্ন।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4187
 #, c-format
 msgid "Error 0x%04x: Unable to format username because it is invalid."
 msgstr "ত্রুটি 0x%04x: ব্যবহারকারীর নাম বিন্যাস করতে অক্ষম কারণ এটি অবৈধ।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4189
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to format username because the requested name is too "
@@ -10056,7 +7201,6 @@
 "ত্রুটি 0x%04x: ব্যবহারকারীর নাম বিন্যাস করতে অক্ষম কারণ অনুরোধকৃত নাম খুব দীর্ঘ।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4191
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to change email address because there is already a "
@@ -10066,7 +7210,6 @@
 "ইতোমধ্যে একটি অনুরোধ অমীমাংসিত রয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4193
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to change email address because the given address has "
@@ -10076,7 +7219,6 @@
 "অনেক বেশি ব্যবহারকারী নাম রয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4195
 #, c-format
 msgid ""
 "Error 0x%04x: Unable to change email address because the given address is "
@@ -10084,39 +7226,32 @@
 msgstr "ত্রুটি 0x%04x: ই-মেইল ঠিকানা পরিবর্তন করতে অক্ষম কারণ প্রদত্ত ঠিকানা অবৈধ।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4197
 #, c-format
 msgid "Error 0x%04x: Unknown error."
 msgstr "ত্রুটি 0x%04x: অজানা ত্রুটি।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4199
 msgid "Error Changing Account Info"
 msgstr "একাউন্ট তথ্য পরিবর্তনের ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4205
 #, c-format
 msgid "The email address for %s is %s"
 msgstr "%1s এর ই-মেইল ঠিকানা %2s"
 
-#: ../libpurple/protocols/oscar/oscar.c:4207
 msgid "Account Info"
 msgstr "একাউন্ট তথ্য"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4393
 msgid ""
 "Your IM Image was not sent. You must be Direct Connected to send IM Images."
 msgstr ""
 "আপনার IM চিত্র পাঠানো হয়নি। আপনাকে IM চিত্র পাঠাতে সরাসরি সংযুক্ত থাকতে হবে।"
 
-#: ../libpurple/protocols/oscar/oscar.c:4664
 msgid "Unable to set AIM profile."
 msgstr "AIM প্রোফাইল নির্ধারণ করতে ব্যর্থ।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4665
 msgid ""
 "You have probably requested to set your profile before the login procedure "
 "completed.  Your profile remains unset; try setting it again when you are "
@@ -10127,7 +7262,6 @@
 "আপনাকে সম্পূর্ণভাবে সংযুক্ত।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4679
 #, c-format
 msgid ""
 "The maximum profile length of %d byte has been exceeded.  It has been "
@@ -10143,12 +7277,10 @@
 "হয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4684
 msgid "Profile too long."
 msgstr "প্রোফাইল বেশ বড়।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4728
 #, c-format
 msgid ""
 "The maximum away message length of %d byte has been exceeded.  It has been "
@@ -10161,12 +7293,10 @@
 msgstr[1] ""
 "সর্বোচ্চ %d বাইট দৈর্ঘ্যের বার্তা অতিক্রম করা হয়েছে।  আপনার জন্য এটা হ্রাস করা হয়েছে।"
 
-#: ../libpurple/protocols/oscar/oscar.c:4733
 msgid "Away message too long."
 msgstr "দূরের বার্তাটি খুব দীর্ঘ।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4806
 #, c-format
 msgid ""
 "Could not add the buddy %s because the username is invalid.  Usernames must "
@@ -10177,18 +7307,13 @@
 "বৈধ ই-মেইল ঠিকানা থাকতে হবে, বা একটি বর্ণ দ্বারা শুরু হবে এবং শুধুমাত্র বর্ণ, সংখ্যা "
 "এবং স্পেস ধারণ করবে, বা শুধুমাত্র সংখ্যা ধারণ করবে।"
 
-#: ../libpurple/protocols/oscar/oscar.c:4808
-#: ../libpurple/protocols/oscar/oscar.c:5278
-#: ../libpurple/protocols/oscar/oscar.c:5293
 msgid "Unable to Add"
 msgstr "যোগ করতে সমর্থ নয়"
 
-#: ../libpurple/protocols/oscar/oscar.c:4927
 msgid "Unable to Retrieve Buddy List"
 msgstr "বন্ধু তালিকা উদ্ধার করতে সমর্থ নয়"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:4928
 msgid ""
 "The AIM servers were temporarily unable to send your buddy list.  Your buddy "
 "list is not lost, and will probably become available in a few minutes."
@@ -10197,16 +7322,10 @@
 "নষ্ট হয়নি, এবং সম্ভবত কয়েক মিনিটের মধ্যে সহজলভ্য হবে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:5119
-#: ../libpurple/protocols/oscar/oscar.c:5121
-#: ../libpurple/protocols/oscar/oscar.c:5360
-#: ../libpurple/protocols/oscar/oscar.c:5361
-#: ../libpurple/protocols/oscar/oscar.c:5366
 msgid "Orphans"
 msgstr "অনাথ"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:5276
 #, c-format
 msgid ""
 "Could not add the buddy %s because you have too many buddies in your buddy "
@@ -10216,17 +7335,13 @@
 "করে একজনকে অপসারণ করুন এবং পুনরায় চেষ্টা করুন।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:5276
-#: ../libpurple/protocols/oscar/oscar.c:5291
 msgid "(no name)"
 msgstr "(কোনো নাম নেই)"
 
-#: ../libpurple/protocols/oscar/oscar.c:5290
 #, c-format
 msgid "Could not add the buddy %s for an unknown reason."
 msgstr "একটি অজানা কারণে %s বন্ধুকে যুক্ত করা যায়নি।"
 
-#: ../libpurple/protocols/oscar/oscar.c:5424
 #, c-format
 msgid ""
 "The user %s has given you permission to add him or her to your buddy list.  "
@@ -10236,26 +7351,22 @@
 "ব্যবহারকারীকে যুক্ত করতে চান?"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:5432
 msgid "Authorization Given"
 msgstr "প্রাপ্তাধিকার দেওয়া হয়েছে"
 
 # tithi
 #. Granted
-#: ../libpurple/protocols/oscar/oscar.c:5505
 #, c-format
 msgid "The user %s has granted your request to add them to your buddy list."
 msgstr ""
 "%s ব্যবহারকারী আপনার বন্ধু তালিকায় তাদেরকে যোগ করতে আপনার অনুরোধ গ্রহণ করেছে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:5506
 msgid "Authorization Granted"
 msgstr "প্রাপ্তাধিকার গ্রহণ করা হয়েছে"
 
 # tithi
 #. Denied
-#: ../libpurple/protocols/oscar/oscar.c:5509
 #, c-format
 msgid ""
 "The user %s has denied your request to add them to your buddy list for the "
@@ -10267,43 +7378,34 @@
 "%2s"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:5510
 msgid "Authorization Denied"
 msgstr "প্রাপ্তাধিকার বাতিল করেছে"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:5546
-#: ../libpurple/protocols/toc/toc.c:1371
 msgid "_Exchange:"
 msgstr "বিনিময় করুন: (_E)"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:5659
 msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
 msgstr ""
 "আপনার আইএম চিত্র পাঠানো হয়নি।  আপনি AIM আড্ডাতে আইএম চিত্র পাঠাতে পারেন না।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:5995
 msgid "iTunes Music Store Link"
 msgstr "আই-টিউন সঙ্গীত সংরক্ষণ লিংক"
 
-#: ../libpurple/protocols/oscar/oscar.c:6104
 #, c-format
 msgid "Buddy Comment for %s"
 msgstr "%s-এর জন্য বন্ধুর মন্তব্য"
 
-#: ../libpurple/protocols/oscar/oscar.c:6105
 msgid "Buddy Comment:"
 msgstr "বন্ধুর মন্তব্য:"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6152
 #, c-format
 msgid "You have selected to open a Direct IM connection with %s."
 msgstr "আপনি %s এর সঙ্গে একটি সরাসরি IM সংযোগ খুলতে নির্বাচন করেছেন।"
 
-#: ../libpurple/protocols/oscar/oscar.c:6156
 msgid ""
 "Because this reveals your IP address, it may be considered a security risk.  "
 "Do you wish to continue?"
@@ -10311,76 +7413,60 @@
 "এটি আপনার IP ঠিকানা প্রকাশ করার কারণে, এতে গোপনীয়তার ঝুঁকি থাকতে পারে।  আপনি কি "
 "অব্যাহত রাখতে চান? "
 
-#: ../libpurple/protocols/oscar/oscar.c:6162
-#: ../libpurple/protocols/oscar/peer.c:1051
 msgid "C_onnect"
 msgstr "সংযোগ দিন (_o)"
 
-#: ../libpurple/protocols/oscar/oscar.c:6197
 msgid "Get AIM Info"
 msgstr "এআইএম তথ্য গ্রহণ করুন"
 
 #. We only do this if the user is in our buddy list
-#: ../libpurple/protocols/oscar/oscar.c:6206
 msgid "Edit Buddy Comment"
 msgstr "বন্ধুর মন্তব্য সম্পাদন করুন"
 
-#: ../libpurple/protocols/oscar/oscar.c:6215
 msgid "Get Status Msg"
 msgstr "অবস্থার বার্তা গ্রহণ করুন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6228
 msgid "Direct IM"
 msgstr "সরাসরি IM"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6250
 msgid "Re-request Authorization"
 msgstr "পুনঃ-অনুরোধ প্রাপ্তাধিকার"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6309
 msgid "Require authorization"
 msgstr "প্রাপ্তাধিকার প্রয়োজন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6312
 msgid "Web aware (enabling this will cause you to receive SPAM!)"
 msgstr "ওয়েব সচেতন (এইটি সক্রিয় করার কারণে আপনি SPAM গ্রহণ করবেন!)"
 
-#: ../libpurple/protocols/oscar/oscar.c:6317
 msgid "ICQ Privacy Options"
 msgstr "ICQ ব্যক্তিগত পছন্দসমূহ"
 
-#: ../libpurple/protocols/oscar/oscar.c:6337
 msgid "The new formatting is invalid."
 msgstr "নতুন বিন্যাসকরণটি অবৈধ।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6338
 msgid "Username formatting can change only capitalization and whitespace."
 msgstr ""
 "ব্যবহারকারীর-নাম বিন্যাসকরণ শুধুমাত্র ঊর্ধ্ববর্ণানুক্রমিক এবং ফাঁকা জায়গা পরিবর্তন করতে "
 "পারে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6391
 msgid "Change Address To:"
 msgstr "ঠিকানা পরিবর্তন করুন:"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6437
 msgid "<i>you are not waiting for authorization</i>"
 msgstr "<i>আপনি প্রাপ্তাধিকারের জন্য অপেক্ষা করছেন না</i>"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6440
 msgid "You are awaiting authorization from the following buddies"
 msgstr "আপনি নিম্নোক্ত বন্ধু থেকে প্রাপ্তাধিকারের জন্য অপেক্ষা করছেন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6441
 msgid ""
 "You can re-request authorization from these buddies by right-clicking on "
 "them and selecting \"Re-request Authorization.\""
@@ -10389,74 +7475,59 @@
 "তাদের থেকে প্রাপ্তাধিকার পুনরায় অনুরোধ করতে পারেন।"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6458
 msgid "Find Buddy by Email"
 msgstr "ই-মেইলের মাধ্যমে বন্ধু খুঁজুন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6459
 msgid "Search for a buddy by email address"
 msgstr "ই-মেইল ঠিকানার মাধ্যমে বন্ধু খুঁজুন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6460
 msgid "Type the email address of the buddy you are searching for."
 msgstr "আপনি যে বন্ধু খুঁজছেন তার ই-মেইল ঠিকানা টাইপ করুন।"
 
-#: ../libpurple/protocols/oscar/oscar.c:6463
 msgid "_Search"
 msgstr "খুঁজুন (_S)"
 
-#: ../libpurple/protocols/oscar/oscar.c:6618
 msgid "Set User Info (web)..."
 msgstr "ব্যবহারকারী তথ্য নির্ধারণ করুন (ওয়েব)..."
 
-#: ../libpurple/protocols/oscar/oscar.c:6629
 msgid "Change Password (web)"
 msgstr "গুপ্তসংকেত পরিবর্তন করুন (ওয়েব)"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6633
 msgid "Configure IM Forwarding (web)"
 msgstr "IM অগ্রবর্তীকরণ বিন্যাসন করুন (ওয়েব)"
 
 #. ICQ actions
-#: ../libpurple/protocols/oscar/oscar.c:6643
 msgid "Set Privacy Options..."
 msgstr "ব্যক্তিগত পছন্দসমূহ নির্ধারণ করুন..."
 
 #. AIM actions
-#: ../libpurple/protocols/oscar/oscar.c:6650
 msgid "Confirm Account"
 msgstr "একাউন্ট নিশ্চিত করুন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6654
 msgid "Display Currently Registered Email Address"
 msgstr "বর্তমানে নিবন্ধণকৃত ই-মেইল ঠিকানা প্রদর্শন করুন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6658
 msgid "Change Currently Registered Email Address..."
 msgstr "বর্তমানে নিবন্ধণকৃত ই-মেইল ঠিকানা পরিবর্তন করুন..."
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6665
 msgid "Show Buddies Awaiting Authorization"
 msgstr "বন্ধুদের অপেক্ষমান প্রাপ্তাধিকার প্রদর্শন করুন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6671
 msgid "Search for Buddy by Email Address..."
 msgstr "ই-মেইল ঠিকানার মাধ্যমে বন্ধুদের খুঁজুন..."
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6676
 msgid "Search for Buddy by Information"
 msgstr "তথ্য দ্বারা বন্ধুদের খুঁজুন"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6864
 msgid ""
 "Always use AIM/ICQ proxy server for\n"
 "file transfers and direct IM (slower,\n"
@@ -10467,33 +7538,27 @@
 "(অপেক্ষাকৃত ধীর, কিন্তু আপনার আইপি ঠিকানা প্রকাশ করে না)"
 
 # tithi
-#: ../libpurple/protocols/oscar/oscar.c:6868
 msgid "Allow multiple simultaneous logins"
 msgstr "একাধিক যুগপৎ লগইন অনুমোদন করুন"
 
 # tithi
-#: ../libpurple/protocols/oscar/peer.c:703
 #, c-format
 msgid "Asking %s to connect to us at %s:%hu for Direct IM."
 msgstr ""
 "%2s এ আমাদের সাথে সংযোগ করতে %1s কে জিজ্ঞাসা করছে: সরাসরি আইএম এর জন্য %3hu।"
 
-#: ../libpurple/protocols/oscar/peer.c:788
 #, c-format
 msgid "Attempting to connect to %s:%hu."
 msgstr "%1s এর সাথে সংযোগ স্থাপনের চেষ্টা করছে:%2hu।"
 
-#: ../libpurple/protocols/oscar/peer.c:862
 msgid "Attempting to connect via proxy server."
 msgstr "প্রক্সি সার্ভারের মাধ্যমে সংযোগ স্থাপনের চেষ্টা করছে।"
 
 # tithi
-#: ../libpurple/protocols/oscar/peer.c:1039
 #, c-format
 msgid "%s has just asked to directly connect to %s"
 msgstr "%1s এইমাত্র %2s এর সাথে সরাসরি সংযোগ করতে জিজ্ঞাসা করেছে"
 
-#: ../libpurple/protocols/oscar/peer.c:1043
 msgid ""
 "This requires a direct connection between the two computers and is necessary "
 "for IM Images.  Because your IP address will be revealed, this may be "
@@ -10504,476 +7569,344 @@
 "পারে।"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:42
 msgid "Aquarius"
 msgstr "কুম্ভ রাশি"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:42
 msgid "Pisces"
 msgstr "মীন রাশি"
 
-#: ../libpurple/protocols/qq/buddy_info.c:42
 msgid "Aries"
 msgstr "মেষ রাশি"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:42
 msgid "Taurus"
 msgstr "বৃষ রাশি"
 
-#: ../libpurple/protocols/qq/buddy_info.c:43
 msgid "Gemini"
 msgstr "মিথুন রাশি"
 
-#: ../libpurple/protocols/qq/buddy_info.c:43
 msgid "Cancer"
 msgstr "কর্কট রাশি"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:43
 msgid "Leo"
 msgstr "সিংহ রাশি"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:43
 msgid "Virgo"
 msgstr "কন্যা রাশি"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:43
 msgid "Libra"
 msgstr "তুলা রাশি"
 
-#: ../libpurple/protocols/qq/buddy_info.c:44
 msgid "Scorpio"
 msgstr "বৃশ্চিক রাশি"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:44
 msgid "Sagittarius"
 msgstr "ধনু রাশি"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:44
 msgid "Capricorn"
 msgstr "মকর রাশি"
 
-#: ../libpurple/protocols/qq/buddy_info.c:49
 msgid "Rat"
 msgstr "ইদুর"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:49
 msgid "Ox"
 msgstr "ষাঁড়"
 
-#: ../libpurple/protocols/qq/buddy_info.c:49
 msgid "Tiger"
 msgstr "বাঘ"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:49
 msgid "Rabbit"
 msgstr "খরগোশ"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:50
 msgid "Dragon"
 msgstr "ড্রাগন"
 
-#: ../libpurple/protocols/qq/buddy_info.c:50
 msgid "Snake"
 msgstr "সাপ"
 
-#: ../libpurple/protocols/qq/buddy_info.c:50
 msgid "Horse"
 msgstr "ঘোড়া"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:50
 msgid "Goat"
 msgstr "ছাগল"
 
-#: ../libpurple/protocols/qq/buddy_info.c:50
 msgid "Monkey"
 msgstr "বানর"
 
-#: ../libpurple/protocols/qq/buddy_info.c:51
 msgid "Rooster"
 msgstr "মোরগ"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:51
 msgid "Dog"
 msgstr "কুকুর"
 
-#: ../libpurple/protocols/qq/buddy_info.c:51
 msgid "Pig"
 msgstr "শূকর"
 
-#: ../libpurple/protocols/qq/buddy_info.c:56
 msgid "Other"
 msgstr "অন্যান্য"
 
-#: ../libpurple/protocols/qq/buddy_info.c:61
 msgid "Visible"
 msgstr "দৃশ্যমান"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:61
 msgid "Friend Only"
 msgstr "শুধুমাত্র বন্ধু"
 
-#: ../libpurple/protocols/qq/buddy_info.c:61
-#: ../libpurple/protocols/qq/buddy_info.c:66
 msgid "Private"
 msgstr "ব্যক্তিগত"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:111
 msgid "QQ Number"
 msgstr "QQ নম্বর"
 
-#: ../libpurple/protocols/qq/buddy_info.c:113
 msgid "Country/Region"
 msgstr "দেশ/এলাকা"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:114
 msgid "Province/State"
 msgstr "প্রদেশ/রাজ্য"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:115
 msgid "Zipcode"
 msgstr "জিপকোড"
 
-#: ../libpurple/protocols/qq/buddy_info.c:117
 msgid "Phone Number"
 msgstr "টেলিফোন নম্বর"
 
-#: ../libpurple/protocols/qq/buddy_info.c:129
 msgid "Authorize adding"
 msgstr "অনুমোদিত সংযুক্তকরণ"
 
-#: ../libpurple/protocols/qq/buddy_info.c:133
 msgid "Cellphone Number"
 msgstr "সেলফোন নম্বর"
 
-#: ../libpurple/protocols/qq/buddy_info.c:135
 msgid "Personal Introduction"
 msgstr "ব্যক্তিগত ভূমিকা"
 
-#: ../libpurple/protocols/qq/buddy_info.c:136
 msgid "City/Area"
 msgstr "শহর/এলাকা"
 
-#: ../libpurple/protocols/qq/buddy_info.c:140
 msgid "Publish Mobile"
 msgstr "মোবাইল প্রকাশ করুন"
 
-#: ../libpurple/protocols/qq/buddy_info.c:141
 msgid "Publish Contact"
 msgstr "যোগাযোগ প্রকাশ করুন"
 
-#: ../libpurple/protocols/qq/buddy_info.c:142
 msgid "College"
 msgstr "কলেজ"
 
-#: ../libpurple/protocols/qq/buddy_info.c:143
 msgid "Horoscope"
 msgstr "রাশি চক্র"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:144
 msgid "Zodiac"
 msgstr "জোডিয়াক"
 
-#: ../libpurple/protocols/qq/buddy_info.c:145
 msgid "Blood"
 msgstr "রক্ত"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_info.c:195
 msgid "True"
 msgstr "সত্য"
 
-#: ../libpurple/protocols/qq/buddy_info.c:195
 msgid "False"
 msgstr "মিথ্যা"
 
-#: ../libpurple/protocols/qq/buddy_info.c:415
-#: ../libpurple/protocols/qq/buddy_info.c:416
-#: ../libpurple/protocols/qq/qq.c:770
 msgid "Modify Contact"
 msgstr "যোগাযোগ পরিবর্তন করুন"
 
-#: ../libpurple/protocols/qq/buddy_info.c:418
-#: ../libpurple/protocols/qq/buddy_info.c:419
-#: ../libpurple/protocols/qq/qq.c:767
 msgid "Modify Address"
 msgstr "ঠিকানা পরিবর্তন করুন"
 
-#: ../libpurple/protocols/qq/buddy_info.c:421
-#: ../libpurple/protocols/qq/buddy_info.c:422
-#: ../libpurple/protocols/qq/qq.c:764
 msgid "Modify Extended Information"
 msgstr "বর্ধিত তথ্য পরিবর্তন করুন"
 
-#: ../libpurple/protocols/qq/buddy_info.c:426
-#: ../libpurple/protocols/qq/buddy_info.c:427
-#: ../libpurple/protocols/qq/qq.c:761
 msgid "Modify Information"
 msgstr "তথ্য পরিবর্তন করুন"
 
-#: ../libpurple/protocols/qq/buddy_info.c:440
 msgid "Update"
 msgstr "হালনাগাদ করুন"
 
-#: ../libpurple/protocols/qq/buddy_info.c:460
 msgid "Could not change buddy information."
 msgstr "বন্ধুর তথ্য পরিবর্তন করতে পারে না।"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_opt.c:320
 #, c-format
 msgid "%u requires verification"
 msgstr "%u এর সত্যতা যাচাই করা প্রয়োজন"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:321
 msgid "Add buddy question"
 msgstr "বন্ধুর প্রশ্ন যোগ করুন"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_opt.c:322
 msgid "Enter answer here"
 msgstr "এখানে উত্তর প্রবেশ করান"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:325
-#: ../libpurple/protocols/qq/buddy_opt.c:669
-#: ../libpurple/protocols/qq/group_join.c:149
 msgid "Send"
 msgstr "প্রেরণ করুন"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:446
 msgid "Invalid answer."
 msgstr "অবৈধ উত্তর।"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:618
-#: ../libpurple/protocols/qq/group_opt.c:124
-#: ../libpurple/protocols/yahoo/yahoo.c:997
 msgid "Authorization denied message:"
 msgstr "প্রাপ্তাধিকার বার্তা অস্বীকার করেছে:"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_opt.c:619
 msgid "Sorry, you're not my style."
 msgstr "দুঃখিত,আপনি আমার শৈলী নয়।"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:664
 #, c-format
 msgid "%u needs authorization"
 msgstr "%u এর প্রাপ্তাধিকার প্রয়োজন"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:665
 msgid "Add buddy authorize"
 msgstr "বন্ধুর অনুমোদন যোগ করুন"
 
 # tithi
-#: ../libpurple/protocols/qq/buddy_opt.c:666
 msgid "Enter request here"
 msgstr "এখানে অনুরোধ প্রবেশ করান"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:667
-#: ../libpurple/protocols/qq/group_join.c:148
 msgid "Would you be my friend?"
 msgstr "আপনি কি আমার বন্ধু হবেন?"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:704
-#: ../libpurple/protocols/qq/buddy_opt.c:729
-#: ../libpurple/protocols/qq/buddy_opt.c:733
-#: ../libpurple/protocols/qq/buddy_opt.c:749
-#: ../libpurple/protocols/qq/buddy_opt.c:774
-#: ../libpurple/protocols/qq/buddy_opt.c:1248
 msgid "QQ Buddy"
 msgstr "QQ বন্ধু"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:704
 msgid "Add buddy"
 msgstr "বন্ধু যোগ করুন"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:704
 msgid "Invalid QQ Number"
 msgstr "অবৈধ QQ নম্বর"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:729
-#: ../libpurple/protocols/qq/buddy_opt.c:733
 msgid "Failed sending authorize"
 msgstr "অনুমোদন পাঠাতে ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:748
 #, c-format
 msgid "Failed removing buddy %u"
 msgstr "%u বন্ধুকে অপসারণ করতে ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:773
 #, c-format
 msgid "Failed removing me from %d's buddy list"
 msgstr "%d এর বন্ধু তালিকা থেকে আমাকে অপসারণ করতে ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:984
-#: ../libpurple/protocols/qq/buddy_opt.c:1100
-#: ../libpurple/protocols/qq/buddy_opt.c:1225
-#: ../libpurple/protocols/qq/buddy_opt.c:1236
 msgid "No reason given"
 msgstr "কোনো কারন দর্শানো হয়নি"
 
 #. only need to get value
-#: ../libpurple/protocols/qq/buddy_opt.c:1130
 #, c-format
 msgid "You have been added by %s"
 msgstr "আপনি %s দ্বারা সংযুক্ত হয়েছেন"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:1132
 msgid "Would you like to add him?"
 msgstr "আপনি কি তাকে যোগ করতে চান?"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:1245
 #, c-format
 msgid "Rejected by %s"
 msgstr "%s দ্বারা বাতিল করা হয়েছে"
 
-#: ../libpurple/protocols/qq/buddy_opt.c:1246
 #, c-format
 msgid "Message: %s"
 msgstr "বার্তা: %s"
 
 # tithi
-#: ../libpurple/protocols/qq/group.c:65
 msgid "ID: "
 msgstr "আইডি:"
 
-#: ../libpurple/protocols/qq/group.c:98
 msgid "Group ID"
 msgstr "দলের আইডি"
 
 # tithi
-#: ../libpurple/protocols/qq/group.c:107
 msgid "QQ Qun"
 msgstr "QQ Qun"
 
-#: ../libpurple/protocols/qq/group.c:108
 msgid "Please enter Qun number"
 msgstr "অনুগ্রহ করে Qun নম্বর প্রবেশ করান"
 
 # tithi
-#: ../libpurple/protocols/qq/group.c:109
 msgid "You can only search for permanent Qun\n"
 msgstr "আপনি শুধুমাত্র স্থায়ী Qun খুঁজতে পারেন\n"
 
-#: ../libpurple/protocols/qq/group_im.c:398
-#: ../libpurple/protocols/qq/group_im.c:402
-#: ../libpurple/protocols/qq/im.c:1287 ../libpurple/protocols/qq/im.c:1291
 msgid "(Invalid UTF-8 string)"
 msgstr "(অবৈধ UTF-8 স্ট্রিং)"
 
 # tithi
-#: ../libpurple/protocols/qq/group_info.c:114
 msgid "Not member"
 msgstr "সদস্য নয়"
 
 # tithi
-#: ../libpurple/protocols/qq/group_info.c:117
-#: ../libpurple/protocols/qq/qq.c:336
 msgid "Member"
 msgstr "সদস্য"
 
-#: ../libpurple/protocols/qq/group_info.c:120
 msgid "Requesting"
 msgstr "অনুরোধ করছে"
 
-#: ../libpurple/protocols/qq/group_info.c:123
 msgid "Admin"
 msgstr "প্রশাসন"
 
-#: ../libpurple/protocols/qq/group_info.c:142
 msgid "Notice"
 msgstr "বিজ্ঞপ্তি"
 
-#: ../libpurple/protocols/qq/group_info.c:143
 msgid "Detail"
 msgstr "বিস্তারিত"
 
 # tithi
-#: ../libpurple/protocols/qq/group_info.c:148
 msgid "Creator"
 msgstr "তৈরীকারক"
 
-#: ../libpurple/protocols/qq/group_info.c:152
 msgid "About me"
 msgstr "আমার সম্পর্কে"
 
-#: ../libpurple/protocols/qq/group_info.c:156
 msgid "Category"
 msgstr "শ্রেণী"
 
 # tithi
-#: ../libpurple/protocols/qq/group_join.c:95
 msgid "The Qun does not allow others to join"
 msgstr "Qun অন্যদের যুক্ত করতে অনুমতি দেয় না"
 
-#: ../libpurple/protocols/qq/group_join.c:146
 msgid "Join QQ Qun"
 msgstr "QQ Qun যুক্ত করুন"
 
 # tithi
-#: ../libpurple/protocols/qq/group_join.c:147
 msgid "Input request here"
 msgstr "এখানে অনুরোধ ইনপুট দিন"
 
 # tithi
-#: ../libpurple/protocols/qq/group_join.c:222
 #, c-format
 msgid "Successfully joined Qun %s (%u)"
 msgstr "%s (%u) Qun সফলভাবে যুক্ত করেছে"
 
-#: ../libpurple/protocols/qq/group_join.c:226
 msgid "Successfully joined Qun"
 msgstr "Qun সফলভাবে যুক্ত করেছে"
 
 # tithi
-#: ../libpurple/protocols/qq/group_join.c:270
 #, c-format
 msgid "Qun %u denied from joining"
 msgstr "%u Qun যুক্তকরণ বাতিল করেছে"
 
-#: ../libpurple/protocols/qq/group_join.c:271
-#: ../libpurple/protocols/qq/group_join.c:279
-#: ../libpurple/protocols/qq/group_join.c:331
-#: ../libpurple/protocols/qq/group_opt.c:348
-#: ../libpurple/protocols/qq/group_opt.c:445
-#: ../libpurple/protocols/qq/group_opt.c:482
 msgid "QQ Qun Operation"
 msgstr "QQ Qun অপারেশন"
 
-#: ../libpurple/protocols/qq/group_join.c:271
-#: ../libpurple/protocols/qq/group_join.c:279
 msgid "Failed:"
 msgstr "ব্যর্থ:"
 
 # tithi
-#: ../libpurple/protocols/qq/group_join.c:279
 msgid "Join Qun, Unknown Reply"
 msgstr "Qun যুক্ত করুন, অজানা উত্তর"
 
-#: ../libpurple/protocols/qq/group_join.c:332
-#: ../libpurple/protocols/qq/qq.c:848
 msgid "Quit Qun"
 msgstr "Qun ত্যাগ করুন"
 
 # tithi
-#: ../libpurple/protocols/qq/group_join.c:333
 msgid ""
 "Note, if you are the creator, \n"
 "this operation will eventually remove this Qun."
@@ -10982,245 +7915,203 @@
 "এই অপারেশনটি সবশেষে এই Qunটি অপসারণ করবে।"
 
 # tithi
-#: ../libpurple/protocols/qq/group_opt.c:125
 msgid "Sorry, you are not our style"
 msgstr "দুঃখিত,আপনি আমাদের শৈলী নন"
 
-#: ../libpurple/protocols/qq/group_opt.c:207
 msgid "Successfully changed Qun members"
 msgstr "Qun সদস্যদের সফলভাবে পরিবর্তন করা হয়েছে"
 
-#: ../libpurple/protocols/qq/group_opt.c:251
 msgid "Successfully changed Qun information"
 msgstr "Qun তথ্য সফলভাবে পরিবর্তন করা হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/qq/group_opt.c:349
 msgid "You have successfully created a Qun"
 msgstr "আপনি Qun সফলভাবে তৈরি করেছেন"
 
-#: ../libpurple/protocols/qq/group_opt.c:350
 msgid "Would you like to set up detailed information now?"
 msgstr "আপনি কি এখন বিস্তারিত তথ্য সংস্থাপন করতে চান?"
 
-#: ../libpurple/protocols/qq/group_opt.c:354
 msgid "Setup"
 msgstr "সংস্থাপন করুন"
 
-#: ../libpurple/protocols/qq/group_opt.c:425
 #, c-format
 msgid "%u requested to join Qun %u for %s"
 msgstr "%1$u %3$s এর জন্য %2$u Qun যোগ করতে অনুরোধ করছে"
 
-#: ../libpurple/protocols/qq/group_opt.c:438
 #, c-format
 msgid "%u request to join Qun %u"
 msgstr "%1u %2u Qun যোগ করতে অনুরোধ করছে"
 
-#: ../libpurple/protocols/qq/group_opt.c:480
 #, c-format
 msgid "Failed to join Qun %u, operated by admin %u"
 msgstr "%u প্রশাসন দ্বারা পরিচালিত, Qun %u যোগ করতে ব্যর্থ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/qq/group_opt.c:522
 #, c-format
 msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
 msgstr "<b>%3$s এর জন্য %2$u প্রশাসন দ্বারা %1$u Qun যুক্ত করার অনুমোদন দিয়েছে</b>"
 
-#: ../libpurple/protocols/qq/group_opt.c:557
 #, c-format
 msgid "<b>Removed buddy %u.</b>"
 msgstr "<b>%u বন্ধু অপসারণ করা হয়েছে।</b>"
 
 # tithi
-#: ../libpurple/protocols/qq/group_opt.c:590
 #, c-format
 msgid "<b>New buddy %u joined.</b>"
 msgstr "<b>নতুন %u বন্ধু যোগদান করেছে।</b>"
 
-#: ../libpurple/protocols/qq/qq.c:276
 #, c-format
 msgid "Unknown-%d"
 msgstr "অজানা-%d"
 
-#: ../libpurple/protocols/qq/qq.c:330
 msgid "Level"
 msgstr "স্তর"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:339
 msgid " VIP"
 msgstr " VIP"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:342
 msgid " TCP"
 msgstr " TCP"
 
-#: ../libpurple/protocols/qq/qq.c:345
 msgid " FromMobile"
 msgstr " FromMobile"
 
-#: ../libpurple/protocols/qq/qq.c:348
 msgid " BindMobile"
 msgstr " BindMobile"
 
-#: ../libpurple/protocols/qq/qq.c:351
 msgid " Video"
 msgstr "ভিডিও"
 
-#: ../libpurple/protocols/qq/qq.c:355
 msgid " Zone"
 msgstr "এলাকা"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:357 ../libpurple/protocols/qq/qq.c:370
 msgid "Flag"
 msgstr "পতাকা"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:365
 msgid "Ver"
 msgstr "Ver"
 
-#: ../libpurple/protocols/qq/qq.c:454 ../libpurple/protocols/qq/qq.c:907
 msgid "Invalid name"
 msgstr "অবৈধ নাম"
 
-#: ../libpurple/protocols/qq/qq.c:500
 msgid "Select icon..."
 msgstr "আইকন নির্বাচন করুন..."
 
-#: ../libpurple/protocols/qq/qq.c:570
 #, c-format
 msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
 msgstr "<b>লগইন সময়</b>: %1d-%2d-%3d, %4d:%5d:%6d<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:573
 #, c-format
 msgid "<b>Total Online Buddies</b>: %d<br>\n"
 msgstr "<b>সর্বমোট অনলাইন বন্ধু</b>: %d<br>\n"
 
 # fix me tithi
-#: ../libpurple/protocols/qq/qq.c:575
 #, c-format
 msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
 msgstr "<b>সর্বশেষ রিফ্রেশ</b>: %1d-%2d-%3d, %4d:%5d:%6d<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:581
 #, c-format
 msgid "<b>Server</b>: %s<br>\n"
 msgstr "<b>সার্ভার</b>: %s<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:582
 #, c-format
 msgid "<b>Client Tag</b>: %s<br>\n"
 msgstr "<b>ক্লায়েন্ট ট্যাগ</b>: %s<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:583
 #, c-format
 msgid "<b>Connection Mode</b>: %s<br>\n"
 msgstr "<b>সংযোগ মোড</b>: %s<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:584
 #, c-format
 msgid "<b>My Internet IP</b>: %s:%d<br>\n"
 msgstr "<b>আমার ইন্টারনেট IP</b>: %1s:%2d<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:588
 #, c-format
 msgid "<b>Sent</b>: %lu<br>\n"
 msgstr "<b>পাঠানো হয়েছে</b>: %lu<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:589
 #, c-format
 msgid "<b>Resend</b>: %lu<br>\n"
 msgstr "<b>পুনরায় পাঠানো হয়েছে</b>: %lu<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:590
 #, c-format
 msgid "<b>Lost</b>: %lu<br>\n"
 msgstr "<b>হারিয়ে গেছে</b>: %lu<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:591
 #, c-format
 msgid "<b>Received</b>: %lu<br>\n"
 msgstr "<b>গৃহীত</b>: %lu<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:592
 #, c-format
 msgid "<b>Received Duplicate</b>: %lu<br>\n"
 msgstr "<b>অনুরুপ গৃহীত হয়েছে</b>: %lu<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:599
 #, c-format
 msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
 msgstr "<b>সময়</b>: %1d-%2d-%3d, %4d:%5d:%6d<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:604
 #, c-format
 msgid "<b>IP</b>: %s<br>\n"
 msgstr "<b>আইপি</b>: %s<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:609
 msgid "Login Information"
 msgstr "লগইন তথ্য"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:625
 msgid "<p><b>Original Author</b>:<br>\n"
 msgstr "<p><b> মূল লেখক</b>:<br>\n"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:628
 msgid "<p><b>Code Contributors</b>:<br>\n"
 msgstr "<p><b> কোড অংশগ্রহণকারীগণ</b>:<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:643
 msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
 msgstr "<p><b>প্রিয় প্যাচ লেখকগণ </b>:<br>\n"
 
-#: ../libpurple/protocols/qq/qq.c:650
 msgid "<p><b>Acknowledgement</b>:<br>\n"
 msgstr "<p><b>প্রাপ্তিস্বীকার</b>:<br>\n"
 
+# tithi
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b> মূল লেখক</b>:<br>\n"
+
 # fix me tithi
-#: ../libpurple/protocols/qq/qq.c:663
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr "<p><i>এবং, সমস্ত ছেলে পিছন-কামরায়...</i><br>\n"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:664
 msgid "<i>Feel free to join us!</i> :)"
 msgstr "<i>আমাদের সাথে উন্মুক্তভাবে যোগদান করুন!</i> :)"
 
-#: ../libpurple/protocols/qq/qq.c:667
 #, c-format
 msgid "About OpenQ %s"
 msgstr "%s ওপেনQ সম্পর্কে"
 
-#: ../libpurple/protocols/qq/qq.c:758
 msgid "Change Icon"
 msgstr "আইকন পরিবর্তন করুন"
 
-#: ../libpurple/protocols/qq/qq.c:773 ../libpurple/protocols/toc/toc.c:1680
 msgid "Change Password"
 msgstr "গুপ্তসংকেত পরিবর্তন করুন"
 
-#: ../libpurple/protocols/qq/qq.c:776
 msgid "Account Information"
 msgstr "একাউন্ট তথ্য"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:779
 msgid "Update all QQ Quns"
 msgstr "সব QQ Quns হালনাগাদ করুন"
 
-#: ../libpurple/protocols/qq/qq.c:782
 msgid "About OpenQ"
 msgstr "ওপেনQ সম্বন্ধে"
 
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "ঠিকানা পরিবর্তন করুন"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -11231,140 +8122,112 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/qq/qq.c:1011 ../libpurple/protocols/qq/qq.c:1013
 msgid "QQ Protocol Plugin"
 msgstr "QQ প্রটোকল প্লাগইন"
 
-#: ../libpurple/protocols/qq/qq.c:1051
 msgid "Auto"
 msgstr "স্বয়ংক্রিয়"
 
-#: ../libpurple/protocols/qq/qq.c:1068
 msgid "Select Server"
 msgstr "সার্ভার নির্বাচন করুন"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:1072
 msgid "QQ2005"
 msgstr "QQ২০০৫"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:1077
 msgid "QQ2007"
 msgstr "QQ২০০৭"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:1082
 msgid "QQ2008"
 msgstr "QQ২০০৮"
 
-#: ../libpurple/protocols/qq/qq.c:1089
 msgid "Connect by TCP"
 msgstr "TCP দ্বারা সংযোগ করুন"
 
-#: ../libpurple/protocols/qq/qq.c:1092
 msgid "Show server notice"
 msgstr "সার্ভারের নোটিশ প্রদর্শন করুন"
 
-#: ../libpurple/protocols/qq/qq.c:1095
 msgid "Show server news"
 msgstr "সার্ভারের খবর প্রদর্শন করুন"
 
+msgid "Show chat room when msg comes"
+msgstr ""
+
 # fix me tithi
-#: ../libpurple/protocols/qq/qq.c:1098
 msgid "Keep alive interval (seconds)"
 msgstr "বিরতি সক্রিয় রাখুন (সেকেন্ড)"
 
 # tithi
-#: ../libpurple/protocols/qq/qq.c:1101
 msgid "Update interval (seconds)"
 msgstr "বিরতি হালনাগাদ করুন (সেকেন্ড)"
 
 # fix me tithi
-#: ../libpurple/protocols/qq/qq_base.c:75
-#: ../libpurple/protocols/qq/qq_base.c:163
 msgid "Cannot decrypt server reply"
 msgstr "সার্ভার জবাব অসঙ্কেতায়ন করে না"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_base.c:314
 #, c-format
 msgid "Failed requesting token, 0x%02X"
 msgstr "টোকেন চাইতে ব্যর্থ, 0x%02X"
 
-#: ../libpurple/protocols/qq/qq_base.c:323
 #, c-format
 msgid "Invalid token len, %d"
 msgstr "অবৈধ টোকেন দৈর্ঘ্য, %d"
 
 # Fix me tithi
 #. extend redirect used in QQ2006
-#: ../libpurple/protocols/qq/qq_base.c:408
 msgid "Redirect_EX is not currently supported"
 msgstr "পুনঃনির্দেশিতEX বর্তমানে সমর্থিত নয় (_E)"
 
 #. need activation
 #. need activation
 #. need activation
-#: ../libpurple/protocols/qq/qq_base.c:419
-#: ../libpurple/protocols/qq/qq_base.c:1105
 msgid "Activation required"
 msgstr "সক্রিয়করণ আবশ্যক"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_base.c:427
 #, c-format
 msgid "Unknown reply code when logging in (0x%02X)"
 msgstr "(0x%02X) এ লগইন করার সময় অজানা উত্তর কোড"
 
 # fix me tithi
-#: ../libpurple/protocols/qq/qq_base.c:658
 msgid "Could not decrypt server reply"
 msgstr "সার্ভার জবাব অসঙ্কেতায়ন করতে পারেনি"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_base.c:750
 msgid "Requesting captcha"
 msgstr "captcha অনুরোধ করছে"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_base.c:795
 msgid "Checking captcha"
 msgstr "captcha পরীক্ষা করছে"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_base.c:818
 msgid "Failed captcha verification"
 msgstr "captcha যাচাইকরণ ব্যর্থ হয়েছে"
 
 # fix me tithi
-#: ../libpurple/protocols/qq/qq_base.c:868
 msgid "Captcha Image"
 msgstr "Captcha চিত্র"
 
-#: ../libpurple/protocols/qq/qq_base.c:872
 msgid "Enter code"
 msgstr "কোড প্রবেশ করান"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_base.c:877
-#: ../libpurple/protocols/qq/qq_base.c:878
 msgid "QQ Captcha Verification"
 msgstr "QQ Captcha যাচাইকরণ"
 
-#: ../libpurple/protocols/qq/qq_base.c:879
 msgid "Enter the text from the image"
 msgstr "চিত্র হতে পাঠ প্রবেশ করান"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_base.c:1116
 #, c-format
 msgid "Unknown reply when checking password (0x%02X)"
 msgstr "গুপ্তসঙ্কেত পরীক্ষণ করার সময় অজানা উত্তর (0x%02X)"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_base.c:1262
-#: ../libpurple/protocols/qq/qq_base.c:1451
 #, c-format
 msgid ""
 "Unknown reply code when logging in (0x%02X):\n"
@@ -11374,61 +8237,40 @@
 "%s"
 
 #. we didn't successfully connect. tdt->toc_fd is valid here
-#: ../libpurple/protocols/qq/qq_network.c:211
-#: ../libpurple/protocols/qq/qq_network.c:236
-#: ../libpurple/protocols/toc/toc.c:173
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:158
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:238
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1195
-#: ../libpurple/protocols/yahoo/ycht.c:550
 msgid "Unable to connect."
 msgstr "সংযুক্ত করতে ব্যর্থ।"
 
-#: ../libpurple/protocols/qq/qq_network.c:370
-#: ../libpurple/protocols/qq/qq_network.c:496
 msgid "Socket error"
 msgstr "সকেট ত্রুটি"
 
-#: ../libpurple/protocols/qq/qq_network.c:507
 msgid "Unable to read from socket"
 msgstr "সকেট থেকে পাঠ করতে ব্যর্থ"
 
-#: ../libpurple/protocols/qq/qq_network.c:590
-#: ../libpurple/protocols/yahoo/yahoo_packet.c:307
 msgid "Write Error"
 msgstr "লিখন ত্রুটি"
 
-#: ../libpurple/protocols/qq/qq_network.c:666
 msgid "Connection lost"
 msgstr "সংযোগ হারিয়ে গেছে"
 
-#: ../libpurple/protocols/qq/qq_network.c:789
 msgid "Getting server"
 msgstr "সার্ভার পাচ্ছে"
 
-#: ../libpurple/protocols/qq/qq_network.c:794
 msgid "Requesting token"
 msgstr "টোকেন অনুরোধ করছে"
 
-#: ../libpurple/protocols/qq/qq_network.c:867
-#: ../libpurple/protocols/simple/simple.c:1809
 msgid "Couldn't resolve host"
 msgstr "হোস্ট সমাধান করা সম্ভব হয়নি"
 
-#: ../libpurple/protocols/qq/qq_network.c:947
 msgid "Invalid server or port"
 msgstr "অবৈধ সার্ভার বা পোর্ট"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_network.c:951
 msgid "Connecting to server"
 msgstr "সার্ভারে সংযোজিত হচ্ছে"
 
-#: ../libpurple/protocols/qq/qq_process.c:75
 msgid "QQ Error"
 msgstr "QQ ত্রুটি"
 
-#: ../libpurple/protocols/qq/qq_process.c:114
 #, c-format
 msgid ""
 "Server News:\n"
@@ -11441,17 +8283,14 @@
 "%2s\n"
 "%3s"
 
-#: ../libpurple/protocols/qq/qq_process.c:152
 #, c-format
 msgid "%s:%s"
 msgstr "%1s:%2s"
 
-#: ../libpurple/protocols/qq/qq_process.c:422
 #, c-format
 msgid "From %s:"
 msgstr "%s থেকে:"
 
-#: ../libpurple/protocols/qq/qq_process.c:423
 #, c-format
 msgid ""
 "Server notice From %s: \n"
@@ -11461,12 +8300,10 @@
 "%2s"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_process.c:543
 msgid "Unknown SERVER CMD"
 msgstr "অজানা সার্ভার CMD"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_process.c:559
 #, c-format
 msgid ""
 "Error reply of %s(0x%02X)\n"
@@ -11475,191 +8312,149 @@
 "%1s(0x%02X) এর ত্রুটিপূর্ণ উত্তর\n"
 "রুম %2u, উত্তর 0x%02X"
 
-#: ../libpurple/protocols/qq/qq_process.c:562
 msgid "QQ Qun Command"
 msgstr "QQ Qun নির্দেশ"
 
 # tithi
-#: ../libpurple/protocols/qq/qq_process.c:953
 msgid "Could not decrypt login reply"
 msgstr "লগইন উত্তর অসঙ্কেতায়ন করতে পারে না"
 
 # fix me tithi
-#: ../libpurple/protocols/qq/qq_process.c:1024
 msgid "Unknown LOGIN CMD"
 msgstr "অজানা লগইন CMD"
 
-#: ../libpurple/protocols/qq/qq_process.c:1146
 msgid "Unknown CLIENT CMD"
 msgstr "অজানা ক্লায়েন্ট CMD"
 
-#: ../libpurple/protocols/qq/send_file.c:702
 #, c-format
 msgid "%d has declined the file %s"
 msgstr "%1d %2s ফাইলটি প্রত্যাখ্যান করেছে"
 
-#: ../libpurple/protocols/qq/send_file.c:705
-#: ../libpurple/protocols/qq/send_file.c:736
 msgid "File Send"
 msgstr "ফাইল প্রেরণ করা হয়েছে"
 
-#: ../libpurple/protocols/qq/send_file.c:733
 #, c-format
 msgid "%d canceled the transfer of %s"
 msgstr "%1d %2s-এর স্থানান্তর বাতিল করেছেন"
 
-#: ../libpurple/protocols/sametime/sametime.c:420
 msgid "Connection closed (writing)"
 msgstr "সংযোগ বন্ধ করা হয়েছে (লিখছে)"
 
-#: ../libpurple/protocols/sametime/sametime.c:1299
 #, c-format
 msgid "<b>Group Title:</b> %s<br>"
 msgstr "<b>দলের শিরোনাম:</b> %s<br>"
 
-#: ../libpurple/protocols/sametime/sametime.c:1300
 #, c-format
 msgid "<b>Notes Group ID:</b> %s<br>"
 msgstr "<b>নোটের দল আইডি:</b> %s<br>"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1302
 #, c-format
 msgid "Info for Group %s"
 msgstr "%s দলের জন্য তথ্য"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1304
 msgid "Notes Address Book Information"
 msgstr "নোটের ঠিকানা বইয়ের তথ্য"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1336
 msgid "Invite Group to Conference..."
 msgstr "অধিবেশনে গ্রুপকে আমন্ত্রণ জানান..."
 
-#: ../libpurple/protocols/sametime/sametime.c:1346
 msgid "Get Notes Address Book Info"
 msgstr "নোটের ঠিকানা বইয়ের তথ্য গ্রহণ করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1513
 msgid "Sending Handshake"
 msgstr "হ্যান্ডসেক পাঠাচ্ছে"
 
-#: ../libpurple/protocols/sametime/sametime.c:1518
 msgid "Waiting for Handshake Acknowledgement"
 msgstr "হ্যান্ডশেকের সাড়া পাওয়ার জন্য অপেক্ষা করছে"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1523
 msgid "Handshake Acknowledged, Sending Login"
 msgstr "হ্যান্ডসেক সাড়া দিয়েছে, লগইন পাঠাচ্ছে"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1528
 msgid "Waiting for Login Acknowledgement"
 msgstr "লগইন সাড়ার জন্য অপেক্ষা করছে"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1533
 msgid "Login Redirected"
 msgstr "লগইন পুনঃ নির্দেশিত"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1539
 msgid "Forcing Login"
 msgstr "লগইন বাধ্য করছে"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1543
 msgid "Login Acknowledged"
 msgstr "লগইন সাড়া দিয়েছে"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1548
 msgid "Starting Services"
 msgstr "সেবা শুরু করছে"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1685
 #, c-format
 msgid ""
 "A Sametime administrator has issued the following announcement on server %s"
 msgstr "একটি এককালীন প্রশাসক %s সার্ভারে নিম্নলিখিত ঘোষণা প্রচার করেছে"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1690
 msgid "Sametime Administrator Announcement"
 msgstr "এককালীন প্রশাসকের ঘোষণা"
 
-#: ../libpurple/protocols/sametime/sametime.c:1743
 msgid "Connection reset"
 msgstr "সংযোগ পুনরায় বিন্যাস করুন"
 
-#: ../libpurple/protocols/sametime/sametime.c:1755
 #, c-format
 msgid "Error reading from socket: %s"
 msgstr "সকেট থেকে পড়ায় ত্রুটি: %s"
 
 #. this is a regular connect, error out
-#: ../libpurple/protocols/sametime/sametime.c:1780
-#: ../libpurple/protocols/sametime/sametime.c:3788
 msgid "Unable to connect to host"
 msgstr "হোস্টের সাথে সংযোগে ব্যর্থ"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1821
 #, c-format
 msgid "Announcement from %s"
 msgstr "%s হতে ঘোষণা"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:1995
 msgid "Conference Closed"
 msgstr "অধিবেশন বন্ধ"
 
-#: ../libpurple/protocols/sametime/sametime.c:2460
 msgid "Unable to send message: "
 msgstr "বার্তা পাঠাতে অসমর্থ:"
 
-#: ../libpurple/protocols/sametime/sametime.c:3016
 msgid "Place Closed"
 msgstr "স্থান বন্ধ"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3286
 msgid "Microphone"
 msgstr "মাইক্রোফোন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3287
 msgid "Speakers"
 msgstr "স্পিকারসমূহ"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3288
 msgid "Video Camera"
 msgstr "ভিডিও ক্যামেরা"
 
-#: ../libpurple/protocols/sametime/sametime.c:3326
-#: ../libpurple/protocols/sametime/sametime.c:4207
 msgid "Supports"
 msgstr "সমর্থনসমূহ"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3331
-#: ../libpurple/protocols/sametime/sametime.c:4181
 msgid "External User"
 msgstr "বাহ্যিক ব্যবহারকারী"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3437
 msgid "Create conference with user"
 msgstr "ব্যবহারকারীর সাথে অধিবেশন তৈরি করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3438
 #, c-format
 msgid ""
 "Please enter a topic for the new conference, and an invitation message to be "
@@ -11668,32 +8463,26 @@
 "অনুগ্রহ করে নতুন অধিবেশনের জন্য একটি বিষয় প্রবেশ করান, এবং %s এ একটি আমন্ত্রণ বার্তা "
 "পাঠাতে হবে"
 
-#: ../libpurple/protocols/sametime/sametime.c:3442
 msgid "New Conference"
 msgstr "নতুন অধিবেশন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3444
 msgid "Create"
 msgstr "তৈরি করুন "
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3509
 msgid "Available Conferences"
 msgstr "সহজলভ্য অধিবেশনসমূহ"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3515
 msgid "Create New Conference..."
 msgstr "নতুন অধিবেশন তৈরি করুন..."
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3522
 msgid "Invite user to a conference"
 msgstr "ব্যবহারকারীকে অধিবেশনে আমন্ত্রন জানান"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3523
 #, c-format
 msgid ""
 "Select a conference from the list below to send an invite to user %s. Select "
@@ -11705,31 +8494,25 @@
 "তবে \"নতুন অধিবেশন তৈরি করুন\" নির্বাচন করুন।"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3528
 msgid "Invite to Conference"
 msgstr "অধিবেশনে আমন্ত্রন জানান"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3619
 msgid "Invite to Conference..."
 msgstr "অধিবেশনে আমন্ত্রন জানান..."
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3624
 msgid "Send TEST Announcement"
 msgstr "পরীক্ষণ ঘোষণা পাঠান"
 
-#: ../libpurple/protocols/sametime/sametime.c:3643 ../pidgin/gtkconv.c:4591
 msgid "Topic:"
 msgstr "বিষয়:"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3671
 msgid "No Sametime Community Server specified"
 msgstr "কোনো এককালীন সম্প্রদায় সার্ভার উল্লেখ করা হয়নি"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3696
 #, c-format
 msgid ""
 "No host or IP address has been configured for the Meanwhile account %s. "
@@ -11739,47 +8522,36 @@
 "লগইন অব্যাহত রাখতে নিচে একটি প্রবেশ করান।"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3701
 msgid "Meanwhile Connection Setup"
 msgstr "ইতোমধ্যে সংযোগ সংস্থাপন করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:3702
 msgid "No Sametime Community Server Specified"
 msgstr "কোনো এককালীন সম্প্রদায় সার্ভার উল্লেখিত নয়"
 
-#: ../libpurple/protocols/sametime/sametime.c:3704
 msgid "Connect"
 msgstr "সংযোগ দিন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:4197
 #, c-format
 msgid "Unknown (0x%04x)<br>"
 msgstr "অজানা (0x%04x)<br>"
 
-#: ../libpurple/protocols/sametime/sametime.c:4199
 msgid "Last Known Client"
 msgstr "সর্বশেষ পরিচিত গ্রাহক"
 
-#: ../libpurple/protocols/sametime/sametime.c:4363
-#: ../libpurple/protocols/sametime/sametime.c:5566
 msgid "User Name"
 msgstr "ব্যবহারকারীর নাম"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:4366
-#: ../libpurple/protocols/sametime/sametime.c:5569
 msgid "Sametime ID"
 msgstr "এককালীন আইডি"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:4390
 msgid "An ambiguous user ID was entered"
 msgstr "একটি অনিশ্চিত ব্যবহারকারী আইডি প্রবেশ করা হয়েছিল"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:4391
 #, c-format
 msgid ""
 "The identifier '%s' may possibly refer to any of the following users. Please "
@@ -11789,17 +8561,14 @@
 "করে নিচের তালিকা থেকে সঠিক ব্যবহারকারী নির্বাচন করে আপনার বন্ধু তালিকাতে তাদেরকে "
 "যোগ করুন।"
 
-#: ../libpurple/protocols/sametime/sametime.c:4396
 msgid "Select User"
 msgstr "ব্যবহারকারী নির্বাচন করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:4480
 msgid "Unable to add user: user not found"
 msgstr "ব্যবহারকারী যোগ করতে অক্ষম: ব্যবহারকারী খুঁজে পায়নি"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:4482
 #, c-format
 msgid ""
 "The identifier '%s' did not match any users in your Sametime community. This "
@@ -11808,7 +8577,6 @@
 "'%s' শনাক্তকারী আপনার এককালীন সম্প্রদায়ের কোনো ব্যবহারকারীর সাথে সমন্বয় করে না। "
 "এই এন্ট্রিটি আপনার বন্ধু তালিকা থেকে অপসারণ করা হয়েছে।"
 
-#: ../libpurple/protocols/sametime/sametime.c:5071
 #, c-format
 msgid ""
 "Error reading file %s: \n"
@@ -11817,72 +8585,57 @@
 "%1s ফাইল পড়ায় ত্রুটি: \n"
 "%2s\n"
 
-#: ../libpurple/protocols/sametime/sametime.c:5206
 msgid "Remotely Stored Buddy List"
 msgstr "দূর হতে সংরক্ষিত বন্ধু তালিকা"
 
-#: ../libpurple/protocols/sametime/sametime.c:5211
 msgid "Buddy List Storage Mode"
 msgstr "বন্ধু তালিকার সংরক্ষন পদ্ধতি"
 
-#: ../libpurple/protocols/sametime/sametime.c:5214
 msgid "Local Buddy List Only"
 msgstr "শুধুমাত্র স্থানীয় বন্ধু তালিকা"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5216
 msgid "Merge List from Server"
 msgstr "সার্ভারের তালিকা একত্রিত করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5218
 msgid "Merge and Save List to Server"
 msgstr "সার্ভারে তালিকা একত্রিত এবং সংরক্ষণ করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5220
 msgid "Synchronize List with Server"
 msgstr "সার্ভারের সঙ্গে সমকালীন তালিকা"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5275
 #, c-format
 msgid "Import Sametime List for Account %s"
 msgstr "%s একাউন্টের জন্য এককালীন তালিকা আমদানি করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5315
 #, c-format
 msgid "Export Sametime List for Account %s"
 msgstr "%s একাউন্টের জন্য এককালীন তালিকা রপ্তানি করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5369
 msgid "Unable to add group: group exists"
 msgstr "দল যোগ করতে অক্ষম: দল বিদ্যমান"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5370
 #, c-format
 msgid "A group named '%s' already exists in your buddy list."
 msgstr "'%s' নামের একটি দল আপনার বন্ধু তালিকায় ইতোমধ্যে বিদ্যমান রয়েছে।"
 
-#: ../libpurple/protocols/sametime/sametime.c:5373
-#: ../libpurple/protocols/sametime/sametime.c:5503
 msgid "Unable to add group"
 msgstr "দল যোগ করতে ব্যর্থ"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5432
 msgid "Possible Matches"
 msgstr "সম্ভাব্য মিলসমূহ"
 
-#: ../libpurple/protocols/sametime/sametime.c:5448
 msgid "Notes Address Book group results"
 msgstr "নোটের ঠিকানা বইয়ের দলগত ফলাফল"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5449
 #, c-format
 msgid ""
 "The identifier '%s' may possibly refer to any of the following Notes Address "
@@ -11893,17 +8646,14 @@
 "পারে। অনুগ্রহ করে নিচের তালিকা থেকে সঠিক গ্রুপ নির্বাচন করে আপনার বন্ধু তালিকায় এটি "
 "যোগ করুন।"
 
-#: ../libpurple/protocols/sametime/sametime.c:5454
 msgid "Select Notes Address Book"
 msgstr "নোটের ঠিকানা বই নির্বাচন করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5497
 msgid "Unable to add group: group not found"
 msgstr "দল যোগ করতে অক্ষম: দল খুঁজে পায়নি"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5499
 #, c-format
 msgid ""
 "The identifier '%s' did not match any Notes Address Book groups in your "
@@ -11912,12 +8662,10 @@
 "'%s' শনাক্তকারী আপনার এককালীন সম্প্রদায়ের কোনো নোট ঠিকানা বইয়ের দলের সাথে সমন্বয় "
 "করেনি।"
 
-#: ../libpurple/protocols/sametime/sametime.c:5540
 msgid "Notes Address Book Group"
 msgstr "নোটের ঠিকানা বইয়ের দল"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5541
 msgid ""
 "Enter the name of a Notes Address Book group in the field below to add the "
 "group and its members to your buddy list."
@@ -11925,13 +8673,11 @@
 "নিচের ক্ষেত্রে নোটের ঠিকানা বইয়ের গ্রুপের নাম প্রবেশ করে আপনার বন্ধু তালিকায় শ্রেণী "
 "এবং এর সদসদের যোগ করুন।"
 
-#: ../libpurple/protocols/sametime/sametime.c:5590
 #, c-format
 msgid "Search results for '%s'"
 msgstr "'%s' এর সন্ধান ফলাফল"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5591
 #, c-format
 msgid ""
 "The identifier '%s' may possibly refer to any of the following users. You "
@@ -11942,30 +8688,24 @@
 "সম্ভবত নিচের কার্য বোতাম দ্বারা আপনার বন্ধু তালিকাতে এই ব্যবহারকারীসমূহ যোগ করতে "
 "পারেন বা তাদেরকে বার্তা পাঠাতে পারেন।"
 
-#: ../libpurple/protocols/sametime/sametime.c:5598 ../pidgin/gtknotify.c:793
 msgid "Search Results"
 msgstr "অনুসন্ধানের ফলাফল"
 
-#: ../libpurple/protocols/sametime/sametime.c:5623
 msgid "No matches"
 msgstr "কোনে মিল নেই"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5624
 #, c-format
 msgid "The identifier '%s' did not match any users in your Sametime community."
 msgstr "'%s' শনাক্তকারী আপনার এককালীন সম্প্রদায়ের কোনো ব্যবহারকারীর সাথে মিলেনি।"
 
-#: ../libpurple/protocols/sametime/sametime.c:5628
 msgid "No Matches"
 msgstr "কোনো মিল নেই"
 
-#: ../libpurple/protocols/sametime/sametime.c:5665
 msgid "Search for a user"
 msgstr "একজন ব্যবহারকারীর জন্য অনুসন্ধান করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5666
 msgid ""
 "Enter a name or partial ID in the field below to search for matching users "
 "in your Sametime community."
@@ -11973,137 +8713,79 @@
 "আপনার এককালীন সম্প্রদায়ের সমন্বয়করণ ব্যবহারকারীর জন্য অনুসন্ধান করতে নিচের ক্ষেত্রে "
 "একটি নাম বা আংশিক আইডি প্রবেশ করান।"
 
-#: ../libpurple/protocols/sametime/sametime.c:5669
 msgid "User Search"
 msgstr "ব্যবহারকারী অনুসন্ধান করুন"
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5682
 msgid "Import Sametime List..."
 msgstr "এককালীন তালিকা আমদানি করুন..."
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5686
 msgid "Export Sametime List..."
 msgstr "এককালীন তালিকা রপ্তানি করুন..."
 
-#: ../libpurple/protocols/sametime/sametime.c:5690
 msgid "Add Notes Address Book Group..."
 msgstr "নোটের ঠিকানা বইয়ের দল যোগ করুন..."
 
-#: ../libpurple/protocols/sametime/sametime.c:5694
 msgid "User Search..."
 msgstr "ব্যবহারকারী অনুসন্ধান করুন..."
 
 # tithi
-#: ../libpurple/protocols/sametime/sametime.c:5800
 msgid "Force login (ignore server redirects)"
 msgstr "লগইন বাধ্য করুন  (সার্ভারের পুনঃ নির্দেশনাগুলো উপেক্ষা করুন)"
 
 # tithi
 #. pretend to be Sametime Connect
-#: ../libpurple/protocols/sametime/sametime.c:5810
 msgid "Hide client identity"
 msgstr "গ্রাহক পরিচয় গোপন করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:52
-#: ../libpurple/protocols/silc/buddy.c:410
-#: ../libpurple/protocols/silc/buddy.c:538
-#: ../libpurple/protocols/silc/buddy.c:700
-#: ../libpurple/protocols/silc/ft.c:423
-#: ../libpurple/protocols/silc10/buddy.c:52
-#: ../libpurple/protocols/silc10/buddy.c:421
-#: ../libpurple/protocols/silc10/buddy.c:546
-#: ../libpurple/protocols/silc10/buddy.c:712
-#: ../libpurple/protocols/silc10/ft.c:338
 #, c-format
 msgid "User %s is not present in the network"
 msgstr "%s ব্যবহারকারী নেটওয়ার্কে উপস্থিত নেই"
 
-#: ../libpurple/protocols/silc/buddy.c:53
-#: ../libpurple/protocols/silc/buddy.c:110
-#: ../libpurple/protocols/silc/buddy.c:115
-#: ../libpurple/protocols/silc/buddy.c:119
-#: ../libpurple/protocols/silc/buddy.c:124
-#: ../libpurple/protocols/silc/buddy.c:129
-#: ../libpurple/protocols/silc/buddy.c:134
-#: ../libpurple/protocols/silc/buddy.c:254
-#: ../libpurple/protocols/silc10/buddy.c:53
-#: ../libpurple/protocols/silc10/buddy.c:115
-#: ../libpurple/protocols/silc10/buddy.c:120
-#: ../libpurple/protocols/silc10/buddy.c:124
-#: ../libpurple/protocols/silc10/buddy.c:129
-#: ../libpurple/protocols/silc10/buddy.c:134
-#: ../libpurple/protocols/silc10/buddy.c:139
-#: ../libpurple/protocols/silc10/buddy.c:257
 msgid "Key Agreement"
 msgstr "মূল চুক্তি"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:54
-#: ../libpurple/protocols/silc10/buddy.c:54
 msgid "Cannot perform the key agreement"
 msgstr "মূল চুক্তি সম্পাদন করতে পারে না"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:111
-#: ../libpurple/protocols/silc10/buddy.c:116
 msgid "Error occurred during key agreement"
 msgstr "মূল চুক্তির সময় ত্রুটি ঘটেছিল"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:115
-#: ../libpurple/protocols/silc10/buddy.c:120
 msgid "Key Agreement failed"
 msgstr "মূং চুক্তি ব্যর্থ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:120
-#: ../libpurple/protocols/silc10/buddy.c:125
 msgid "Timeout during key agreement"
 msgstr "মূল চুক্তির সময় মেয়াদ উত্তীর্ণ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:125
-#: ../libpurple/protocols/silc10/buddy.c:130
 msgid "Key agreement was aborted"
 msgstr "মূল চুক্তি বাতিল করা হয়েছিল"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:130
-#: ../libpurple/protocols/silc10/buddy.c:135
 msgid "Key agreement is already started"
 msgstr "মূল চুক্তি ইতোমধ্যে শুরু হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:135
-#: ../libpurple/protocols/silc10/buddy.c:140
 msgid "Key agreement cannot be started with yourself"
 msgstr "মূল চুক্তি আপনার সঙ্গে শুরু করা যায় না"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:255
-#: ../libpurple/protocols/silc/buddy.c:383
-#: ../libpurple/protocols/silc/buddy.c:497
-#: ../libpurple/protocols/silc/buddy.c:508
-#: ../libpurple/protocols/silc10/buddy.c:258
-#: ../libpurple/protocols/silc10/buddy.c:389
-#: ../libpurple/protocols/silc10/buddy.c:514
 msgid "The remote user is not present in the network any more"
 msgstr "দূরবর্তী ব্যবহারকারী আর নেটওয়ার্কে উপস্থিত থাকবে না"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:298
-#: ../libpurple/protocols/silc10/buddy.c:295
 #, c-format
 msgid ""
 "Key agreement request received from %s. Would you like to perform the key "
 "agreement?"
 msgstr "মূল চুক্তির অনুরোধ %s থেকে গ্রহণ করেছে। আপনি কি মূল চুক্তি সম্পাদন করতে আগ্রহী?"
 
-#: ../libpurple/protocols/silc/buddy.c:302
-#: ../libpurple/protocols/silc10/buddy.c:299
 #, c-format
 msgid ""
 "The remote user is waiting key agreement on:\n"
@@ -12115,105 +8797,46 @@
 "দূরবর্তী পোর্ট: %d"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:315
-#: ../libpurple/protocols/silc10/buddy.c:312
 msgid "Key Agreement Request"
 msgstr "মূল চুক্তির অনুরোধ"
 
-#: ../libpurple/protocols/silc/buddy.c:382
-#: ../libpurple/protocols/silc/buddy.c:412
-#: ../libpurple/protocols/silc/buddy.c:452
-#: ../libpurple/protocols/silc10/buddy.c:388
-#: ../libpurple/protocols/silc10/buddy.c:423
-#: ../libpurple/protocols/silc10/buddy.c:465
 msgid "IM With Password"
 msgstr "গুপ্তসঙ্কেত যুক্ত আইএম"
 
-#: ../libpurple/protocols/silc/buddy.c:413
-#: ../libpurple/protocols/silc10/buddy.c:424
 msgid "Cannot set IM key"
 msgstr "আইএম কী বিন্যাস করতে পারে না"
 
-#: ../libpurple/protocols/silc/buddy.c:453
-#: ../libpurple/protocols/silc10/buddy.c:466
 msgid "Set IM Password"
 msgstr "আইএম গুপ্তসঙ্কেত বিন্যাস করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:496
-#: ../libpurple/protocols/silc/buddy.c:507
-#: ../libpurple/protocols/silc/buddy.c:540
-#: ../libpurple/protocols/silc/ops.c:1516
-#: ../libpurple/protocols/silc/ops.c:1527
-#: ../libpurple/protocols/silc10/buddy.c:513
-#: ../libpurple/protocols/silc10/buddy.c:548
-#: ../libpurple/protocols/silc10/ops.c:1494
-#: ../libpurple/protocols/silc10/ops.c:1505
 msgid "Get Public Key"
 msgstr "সর্বসাধারণ কী গ্রহণ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:541
-#: ../libpurple/protocols/silc/ops.c:1517
-#: ../libpurple/protocols/silc/ops.c:1528
-#: ../libpurple/protocols/silc10/buddy.c:549
-#: ../libpurple/protocols/silc10/ops.c:1495
-#: ../libpurple/protocols/silc10/ops.c:1506
 msgid "Cannot fetch the public key"
 msgstr "সর্বসাধারণ কী পুনরুদ্ধার করতে পারে না"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:622
-#: ../libpurple/protocols/silc/buddy.c:1670
-#: ../libpurple/protocols/silc10/buddy.c:635
-#: ../libpurple/protocols/silc10/buddy.c:1669
 msgid "Show Public Key"
 msgstr "সর্বসাধারণ কী দেখান"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:623
-#: ../libpurple/protocols/silc/buddy.c:1030
-#: ../libpurple/protocols/silc/chat.c:238
-#: ../libpurple/protocols/silc10/buddy.c:636
-#: ../libpurple/protocols/silc10/buddy.c:1036
-#: ../libpurple/protocols/silc10/chat.c:237
 msgid "Could not load public key"
 msgstr "সর্বসাধারণ কী লোড করতে পারেনি"
 
-#: ../libpurple/protocols/silc/buddy.c:701
-#: ../libpurple/protocols/silc/ops.c:1066
-#: ../libpurple/protocols/silc/ops.c:1181
-#: ../libpurple/protocols/silc/ops.c:1303
-#: ../libpurple/protocols/silc/ops.c:1304
-#: ../libpurple/protocols/silc/ops.c:1322
-#: ../libpurple/protocols/silc10/buddy.c:713
-#: ../libpurple/protocols/silc10/ops.c:1087
-#: ../libpurple/protocols/silc10/ops.c:1159
-#: ../libpurple/protocols/silc10/ops.c:1294
-#: ../libpurple/protocols/silc10/ops.c:1295
-#: ../libpurple/protocols/silc10/ops.c:1313
 msgid "User Information"
 msgstr "ব্যবহারকারী তথ্য"
 
-#: ../libpurple/protocols/silc/buddy.c:702
-#: ../libpurple/protocols/silc/ops.c:1182
-#: ../libpurple/protocols/silc/ops.c:1323
-#: ../libpurple/protocols/silc10/buddy.c:714
-#: ../libpurple/protocols/silc10/ops.c:1160
-#: ../libpurple/protocols/silc10/ops.c:1314
 msgid "Cannot get user information"
 msgstr "ব্যবহারকারীর তথ্য গ্রহণ করতে পারে না"
 
 # fix me tithi
-#: ../libpurple/protocols/silc/buddy.c:723
-#: ../libpurple/protocols/silc10/buddy.c:735
 #, c-format
 msgid "The %s buddy is not trusted"
 msgstr "%s বন্ধু বিশ্বাসযোগ্য নয়"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:726
-#: ../libpurple/protocols/silc10/buddy.c:738
 msgid ""
 "You cannot receive buddy notifications until you import his/her public key.  "
 "You can use the Get Public Key command to get the public key."
@@ -12223,21 +8846,15 @@
 "ব্যবহার করতে পারেন না।"
 
 #. Open file selector to select the public key.
-#: ../libpurple/protocols/silc/buddy.c:1062
-#: ../libpurple/protocols/silc10/buddy.c:1070
 msgid "Open..."
 msgstr "খুলুন..."
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1073
-#: ../libpurple/protocols/silc10/buddy.c:1081
 #, c-format
 msgid "The %s buddy is not present in the network"
 msgstr "%s বন্ধু নেটওয়ার্কে উপস্থিত নেই"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1076
-#: ../libpurple/protocols/silc10/buddy.c:1084
 msgid ""
 "To add the buddy you must import his/her public key. Press Import to import "
 "a public key."
@@ -12246,19 +8863,13 @@
 "আমদানি করতে 'আমদানি করুন' চাপুন।"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1080
-#: ../libpurple/protocols/silc10/buddy.c:1088
 msgid "_Import..."
 msgstr "আমদানি করুন... (_I)"
 
-#: ../libpurple/protocols/silc/buddy.c:1186
-#: ../libpurple/protocols/silc10/buddy.c:1184
 msgid "Select correct user"
 msgstr "সঠিক ব্যবহারকারী নির্বাচন করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1188
-#: ../libpurple/protocols/silc10/buddy.c:1186
 msgid ""
 "More than one user was found with the same public key. Select the correct "
 "user from the list to add to the buddy list."
@@ -12267,8 +8878,6 @@
 "তালিকা থেকে সঠিক ব্যবহারকারী নির্বাচন করুন।"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1190
-#: ../libpurple/protocols/silc10/buddy.c:1188
 msgid ""
 "More than one user was found with the same name. Select the correct user "
 "from the list to add to the buddy list."
@@ -12277,335 +8886,177 @@
 "সঠিক ব্যবহারকারী নির্বাচন করুন।"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1489
-#: ../libpurple/protocols/silc10/buddy.c:1489
 msgid "Detached"
 msgstr "আলাদা"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1493
-#: ../libpurple/protocols/silc/silc.c:59
-#: ../libpurple/protocols/silc10/buddy.c:1493
-#: ../libpurple/protocols/silc10/silc.c:50
 msgid "Indisposed"
 msgstr "অক্ষম"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1497
-#: ../libpurple/protocols/silc/silc.c:61
-#: ../libpurple/protocols/silc10/buddy.c:1497
-#: ../libpurple/protocols/silc10/silc.c:52
 msgid "Wake Me Up"
 msgstr "আমাকে জাগান"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1499
-#: ../libpurple/protocols/silc/silc.c:53
-#: ../libpurple/protocols/silc10/buddy.c:1499
-#: ../libpurple/protocols/silc10/silc.c:44
 msgid "Hyper Active"
 msgstr "অতিমাত্রায় সক্রিয়"
 
-#: ../libpurple/protocols/silc/buddy.c:1501
-#: ../libpurple/protocols/silc10/buddy.c:1501
 msgid "Robot"
 msgstr "যন্ত্রমানব"
 
-#: ../libpurple/protocols/silc/buddy.c:1508
-#: ../libpurple/protocols/silc/silc.c:978
-#: ../libpurple/protocols/silc/util.c:522
-#: ../libpurple/protocols/silc10/buddy.c:1508
-#: ../libpurple/protocols/silc10/silc.c:679
-#: ../libpurple/protocols/silc10/util.c:515
 msgid "Happy"
 msgstr "সুখী"
 
-#: ../libpurple/protocols/silc/buddy.c:1510
-#: ../libpurple/protocols/silc/silc.c:980
-#: ../libpurple/protocols/silc/util.c:524
-#: ../libpurple/protocols/silc10/buddy.c:1510
-#: ../libpurple/protocols/silc10/silc.c:681
-#: ../libpurple/protocols/silc10/util.c:517
 msgid "Sad"
 msgstr "দু:খী"
 
-#: ../libpurple/protocols/silc/buddy.c:1512
-#: ../libpurple/protocols/silc/silc.c:982
-#: ../libpurple/protocols/silc/util.c:526
-#: ../libpurple/protocols/silc10/buddy.c:1512
-#: ../libpurple/protocols/silc10/silc.c:683
-#: ../libpurple/protocols/silc10/util.c:519
 msgid "Angry"
 msgstr "রাগী"
 
-#: ../libpurple/protocols/silc/buddy.c:1514
-#: ../libpurple/protocols/silc/silc.c:984
-#: ../libpurple/protocols/silc/util.c:528
-#: ../libpurple/protocols/silc10/buddy.c:1514
-#: ../libpurple/protocols/silc10/silc.c:685
-#: ../libpurple/protocols/silc10/util.c:521
 msgid "Jealous"
 msgstr "ঈর্ষান্বিত"
 
-#: ../libpurple/protocols/silc/buddy.c:1516
-#: ../libpurple/protocols/silc/silc.c:986
-#: ../libpurple/protocols/silc/util.c:530
-#: ../libpurple/protocols/silc10/buddy.c:1516
-#: ../libpurple/protocols/silc10/silc.c:687
-#: ../libpurple/protocols/silc10/util.c:523
 msgid "Ashamed"
 msgstr "লজ্জিত"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1518
-#: ../libpurple/protocols/silc/silc.c:988
-#: ../libpurple/protocols/silc/util.c:532
-#: ../libpurple/protocols/silc10/buddy.c:1518
-#: ../libpurple/protocols/silc10/silc.c:689
-#: ../libpurple/protocols/silc10/util.c:525
 msgid "Invincible"
 msgstr "অজেয়"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1520
-#: ../libpurple/protocols/silc/util.c:534
-#: ../libpurple/protocols/silc10/buddy.c:1520
-#: ../libpurple/protocols/silc10/util.c:527
 msgid "In Love"
 msgstr "ভালবাসাতে"
 
-#: ../libpurple/protocols/silc/buddy.c:1522
-#: ../libpurple/protocols/silc/silc.c:992
-#: ../libpurple/protocols/silc/util.c:536
-#: ../libpurple/protocols/silc10/buddy.c:1522
-#: ../libpurple/protocols/silc10/silc.c:693
-#: ../libpurple/protocols/silc10/util.c:529
 msgid "Sleepy"
 msgstr "ঘুমন্ত"
 
-#: ../libpurple/protocols/silc/buddy.c:1524
-#: ../libpurple/protocols/silc/silc.c:994
-#: ../libpurple/protocols/silc/util.c:538
-#: ../libpurple/protocols/silc10/buddy.c:1524
-#: ../libpurple/protocols/silc10/silc.c:695
-#: ../libpurple/protocols/silc10/util.c:531
 msgid "Bored"
 msgstr "বিরক্ত"
 
-#: ../libpurple/protocols/silc/buddy.c:1526
-#: ../libpurple/protocols/silc/silc.c:996
-#: ../libpurple/protocols/silc/util.c:540
-#: ../libpurple/protocols/silc10/buddy.c:1526
-#: ../libpurple/protocols/silc10/silc.c:697
-#: ../libpurple/protocols/silc10/util.c:533
 msgid "Excited"
 msgstr "উত্তেজিত"
 
-#: ../libpurple/protocols/silc/buddy.c:1528
-#: ../libpurple/protocols/silc/silc.c:998
-#: ../libpurple/protocols/silc/util.c:542
-#: ../libpurple/protocols/silc10/buddy.c:1528
-#: ../libpurple/protocols/silc10/silc.c:699
-#: ../libpurple/protocols/silc10/util.c:535
 msgid "Anxious"
 msgstr "উদ্বিগ্ন"
 
-#: ../libpurple/protocols/silc/buddy.c:1560
-#: ../libpurple/protocols/silc/ops.c:1220
-#: ../libpurple/protocols/silc10/buddy.c:1560
-#: ../libpurple/protocols/silc10/ops.c:1202
 msgid "User Modes"
 msgstr "ব্যবহাকারীর পরিমন্ডলসমূহ"
 
-#: ../libpurple/protocols/silc/buddy.c:1577
-#: ../libpurple/protocols/silc/ops.c:1237
-#: ../libpurple/protocols/silc10/buddy.c:1577
-#: ../libpurple/protocols/silc10/ops.c:1219
 msgid "Preferred Contact"
 msgstr "পছন্দের যোগাযোগ"
 
-#: ../libpurple/protocols/silc/buddy.c:1582
-#: ../libpurple/protocols/silc/ops.c:1242
-#: ../libpurple/protocols/silc10/buddy.c:1582
-#: ../libpurple/protocols/silc10/ops.c:1224
 msgid "Preferred Language"
 msgstr "পছন্দের ভাষা"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1587
-#: ../libpurple/protocols/silc/ops.c:1247
-#: ../libpurple/protocols/silc10/buddy.c:1587
-#: ../libpurple/protocols/silc10/ops.c:1229
 msgid "Device"
 msgstr "ডিভাইস"
 
-#: ../libpurple/protocols/silc/buddy.c:1592
-#: ../libpurple/protocols/silc/ops.c:1252
-#: ../libpurple/protocols/silc10/buddy.c:1592
-#: ../libpurple/protocols/silc10/ops.c:1234
-#: ../libpurple/protocols/silc10/silc.c:747
-#: ../libpurple/protocols/silc10/silc.c:749
 msgid "Timezone"
 msgstr "সময়-এলাকা"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1597
-#: ../libpurple/protocols/silc/ops.c:1257
-#: ../libpurple/protocols/silc10/buddy.c:1597
-#: ../libpurple/protocols/silc10/ops.c:1239
 msgid "Geolocation"
 msgstr "ভৌগলিক-অবস্থান"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1653
-#: ../libpurple/protocols/silc10/buddy.c:1651
 msgid "Reset IM Key"
 msgstr "IM কী পুনঃ বিন্যাস করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1658
-#: ../libpurple/protocols/silc10/buddy.c:1657
 msgid "IM with Key Exchange"
 msgstr "কী বিনিময় সহ IM"
 
-#: ../libpurple/protocols/silc/buddy.c:1663
-#: ../libpurple/protocols/silc10/buddy.c:1662
 msgid "IM with Password"
 msgstr "গুপ্তসঙ্কেত যুক্ত আইএম"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1676
-#: ../libpurple/protocols/silc10/buddy.c:1675
 msgid "Get Public Key..."
 msgstr "সর্বসাধারণ কী গ্রহণ করুন..."
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1683
-#: ../libpurple/protocols/silc/ops.c:1625
-#: ../libpurple/protocols/silc10/buddy.c:1682
-#: ../libpurple/protocols/silc10/ops.c:1624
 msgid "Kill User"
 msgstr "ব্যবহারকারীকে মুছে ফেলুন"
 
 # tithi
-#: ../libpurple/protocols/silc/buddy.c:1693
-#: ../libpurple/protocols/silc/chat.c:1000
-#: ../libpurple/protocols/silc10/buddy.c:1692
-#: ../libpurple/protocols/silc10/chat.c:977
 msgid "Draw On Whiteboard"
 msgstr "সাদা-বোর্ডে অংকন করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:39
-#: ../libpurple/protocols/silc10/chat.c:39
 msgid "_Passphrase:"
 msgstr "প্যাস-ফ্রেজ (_P):"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:80
-#: ../libpurple/protocols/silc10/chat.c:80
 #, c-format
 msgid "Channel %s does not exist in the network"
 msgstr "নেটওয়ার্কে %s চ্যানেল বিদ্যমান নেই"
 
-#: ../libpurple/protocols/silc/chat.c:81
-#: ../libpurple/protocols/silc/chat.c:176
-#: ../libpurple/protocols/silc10/chat.c:81
-#: ../libpurple/protocols/silc10/chat.c:174
 msgid "Channel Information"
 msgstr "চ্যানেল তথ্য"
 
-#: ../libpurple/protocols/silc/chat.c:82
-#: ../libpurple/protocols/silc10/chat.c:82
 msgid "Cannot get channel information"
 msgstr "চ্যানেলের তথ্য পায় না"
 
-#: ../libpurple/protocols/silc/chat.c:119
-#: ../libpurple/protocols/silc10/chat.c:119
 #, c-format
 msgid "<b>Channel Name:</b> %s"
 msgstr "<b>চ্যানেলের নাম:</b> %s"
 
-#: ../libpurple/protocols/silc/chat.c:122
-#: ../libpurple/protocols/silc10/chat.c:122
 #, c-format
 msgid "<br><b>User Count:</b> %d"
 msgstr "<br><b>ব্যবহারকারী গণনা করুন:</b> %d"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:129
-#: ../libpurple/protocols/silc10/chat.c:129
 #, c-format
 msgid "<br><b>Channel Founder:</b> %s"
 msgstr "<br><b>চ্যানেল প্রতিষ্ঠাতা:</b> %s"
 
-#: ../libpurple/protocols/silc/chat.c:138
-#: ../libpurple/protocols/silc10/chat.c:138
 #, c-format
 msgid "<br><b>Channel Cipher:</b> %s"
 msgstr "<br><b>চ্যানেল সাইফার:</b> %s"
 
 # tithi
 #. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC
-#: ../libpurple/protocols/silc/chat.c:143
-#: ../libpurple/protocols/silc10/chat.c:142
 #, c-format
 msgid "<br><b>Channel HMAC:</b> %s"
 msgstr "<br><b>চ্যানেল HMAC:</b> %s"
 
-#: ../libpurple/protocols/silc/chat.c:148
-#: ../libpurple/protocols/silc10/chat.c:147
 #, c-format
 msgid "<br><b>Channel Topic:</b><br>%s"
 msgstr "<br><b>চ্যানেলের বিষয়:</b><br>%s"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:153
-#: ../libpurple/protocols/silc10/chat.c:152
+#, c-format
 msgid "<br><b>Channel Modes:</b> "
 msgstr "<br><b>চ্যানেল মোড:</b>"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:167
-#: ../libpurple/protocols/silc10/chat.c:165
 #, c-format
 msgid "<br><b>Founder Key Fingerprint:</b><br>%s"
 msgstr "<br><b> প্রতিষ্ঠাতার মূল হস্তাঙ্গুলির-ছাপ:</b><br>%s"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:168
-#: ../libpurple/protocols/silc10/chat.c:166
 #, c-format
 msgid "<br><b>Founder Key Babbleprint:</b><br>%s"
 msgstr "<br><b>প্রতিষ্ঠাতার মূল ব্যাবলপ্রিন্ট:</b><br>%s"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:237
-#: ../libpurple/protocols/silc10/chat.c:236
 msgid "Add Channel Public Key"
 msgstr "চ্যানেলের সর্বসাধারণ কী যুক্ত করুন"
 
 # tithi
 #. Add new public key
-#: ../libpurple/protocols/silc/chat.c:305
-#: ../libpurple/protocols/silc10/chat.c:291
 msgid "Open Public Key..."
 msgstr "সর্বসাধারণ কী খুলুন..."
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:424
-#: ../libpurple/protocols/silc10/chat.c:401
 msgid "Channel Passphrase"
 msgstr "চ্যানেলের প্যাস-ফ্রেজ"
 
-#: ../libpurple/protocols/silc/chat.c:431
-#: ../libpurple/protocols/silc10/chat.c:408
 msgid "Channel Public Keys List"
 msgstr "চ্যানেলের সর্বসাধারণ কী এর তালিকা"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:436
-#: ../libpurple/protocols/silc10/chat.c:413
+#, c-format
 msgid ""
 "Channel authentication is used to secure the channel from unauthorized "
 "access. The authentication may be based on passphrase and digital "
@@ -12620,136 +9071,80 @@
 "করতে সক্ষম হবে।"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:445
-#: ../libpurple/protocols/silc/chat.c:446
-#: ../libpurple/protocols/silc/chat.c:482
-#: ../libpurple/protocols/silc/chat.c:483
-#: ../libpurple/protocols/silc/chat.c:934
-#: ../libpurple/protocols/silc10/chat.c:422
-#: ../libpurple/protocols/silc10/chat.c:423
-#: ../libpurple/protocols/silc10/chat.c:461
-#: ../libpurple/protocols/silc10/chat.c:462
-#: ../libpurple/protocols/silc10/chat.c:911
 msgid "Channel Authentication"
 msgstr "চ্যানেলের প্রমাণীকরণ"
 
-#: ../libpurple/protocols/silc/chat.c:447
-#: ../libpurple/protocols/silc/chat.c:484
-#: ../libpurple/protocols/silc10/chat.c:424
-#: ../libpurple/protocols/silc10/chat.c:463
 msgid "Add / Remove"
 msgstr "যোগ / অপসরণ করুন"
 
-#: ../libpurple/protocols/silc/chat.c:600
-#: ../libpurple/protocols/silc10/chat.c:581
 msgid "Group Name"
 msgstr "গ্রুপের নাম"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:604
-#: ../libpurple/protocols/silc/ops.c:1830
-#: ../libpurple/protocols/silc/silc.c:1255
-#: ../libpurple/protocols/silc10/chat.c:585
-#: ../libpurple/protocols/silc10/ops.c:1907
-#: ../libpurple/protocols/silc10/silc.c:956
 msgid "Passphrase"
 msgstr "প্যাস-ফ্রেজ"
 
-#: ../libpurple/protocols/silc/chat.c:615
-#: ../libpurple/protocols/silc10/chat.c:596
 #, c-format
 msgid "Please enter the %s channel private group name and passphrase."
 msgstr "অনুগ্রহ করে %s চ্যানেলের ব্যক্তিগত গ্রুপের নাম ও প্যাস-ফ্রেজ প্রবেশ করান।"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:617
-#: ../libpurple/protocols/silc10/chat.c:598
 msgid "Add Channel Private Group"
 msgstr "চ্যানেলের ব্যক্তিগত গ্রুপ যোগ করুন"
 
-#: ../libpurple/protocols/silc/chat.c:749
-#: ../libpurple/protocols/silc10/chat.c:726
 msgid "User Limit"
 msgstr "ব্যবহারকারীর সীমা"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:750
-#: ../libpurple/protocols/silc10/chat.c:727
 msgid "Set user limit on channel. Set to zero to reset user limit."
 msgstr ""
 "চ্যানেলে ব্যবহারকারীর সীমা নির্ধারণ করুন। ব্যবহারকারী সীমা পুনঃ বিন্যাস করতে শূন্যে "
 "নির্ধরণ করুন।"
 
-#: ../libpurple/protocols/silc/chat.c:914
-#: ../libpurple/protocols/silc10/chat.c:891
 msgid "Invite List"
 msgstr "আমন্ত্রন তালিকা"
 
-#: ../libpurple/protocols/silc/chat.c:919
-#: ../libpurple/protocols/silc10/chat.c:896
 msgid "Ban List"
 msgstr "নিষিদ্ধ তালিকা"
 
-#: ../libpurple/protocols/silc/chat.c:927
-#: ../libpurple/protocols/silc10/chat.c:904
 msgid "Add Private Group"
 msgstr "ব্যক্তিগত দল যোগ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:940
-#: ../libpurple/protocols/silc10/chat.c:917
 msgid "Reset Permanent"
 msgstr "স্থায়ীভাবে পুনরায় বিন্যাস করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:945
-#: ../libpurple/protocols/silc10/chat.c:922
 msgid "Set Permanent"
 msgstr "স্থায়ীভাবে বিন্যাস করুন"
 
-#: ../libpurple/protocols/silc/chat.c:953
-#: ../libpurple/protocols/silc10/chat.c:930
 msgid "Set User Limit"
 msgstr "ব্যবহারকারীর সীমা নির্ধারন করুন"
 
-#: ../libpurple/protocols/silc/chat.c:959
-#: ../libpurple/protocols/silc10/chat.c:936
 msgid "Reset Topic Restriction"
 msgstr "বিষয়বস্তুর নিষেধাজ্ঞা পুনরায় নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:964
-#: ../libpurple/protocols/silc10/chat.c:941
 msgid "Set Topic Restriction"
 msgstr "বিষয়বস্তুর নিষেধাজ্ঞা নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:971
-#: ../libpurple/protocols/silc10/chat.c:948
 msgid "Reset Private Channel"
 msgstr "ব্যক্তিগত চ্যানেল পুনরায় নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:976
-#: ../libpurple/protocols/silc10/chat.c:953
 msgid "Set Private Channel"
 msgstr "ব্যক্তিগত চ্যানেল নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:983
-#: ../libpurple/protocols/silc10/chat.c:960
 msgid "Reset Secret Channel"
 msgstr "গোপন চ্যানেল পুনরায় নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:988
-#: ../libpurple/protocols/silc10/chat.c:965
 msgid "Set Secret Channel"
 msgstr "গোপন চ্যানেল নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:1049
-#: ../libpurple/protocols/silc10/chat.c:1102
 #, c-format
 msgid ""
 "You have to join the %s channel before you are able to join the private group"
@@ -12757,343 +9152,199 @@
 "আপনি ব্যক্তিগত গ্রুপে যোগদানে সমর্থ হওয়ার পূর্বে আপনাকে অবশ্যই %s চ্যানেলে যোগ দিতে "
 "হবে"
 
-#: ../libpurple/protocols/silc/chat.c:1051
-#: ../libpurple/protocols/silc10/chat.c:1104
 msgid "Join Private Group"
 msgstr "ব্যক্তিগত গ্রুপে যোগ দিন"
 
 # tithi
-#: ../libpurple/protocols/silc/chat.c:1052
-#: ../libpurple/protocols/silc10/chat.c:1105
 msgid "Cannot join private group"
 msgstr "ব্যক্তিগত চ্যানেলে যোগ দিতে পারে না"
 
-#: ../libpurple/protocols/silc/chat.c:1248
-#: ../libpurple/protocols/silc/silc.c:1452
-#: ../libpurple/protocols/silc10/chat.c:1299
-#: ../libpurple/protocols/silc10/silc.c:1162
 msgid "Call Command"
 msgstr "নির্দেশ কল করুন"
 
-#: ../libpurple/protocols/silc/chat.c:1248
-#: ../libpurple/protocols/silc/silc.c:1453
-#: ../libpurple/protocols/silc10/chat.c:1299
-#: ../libpurple/protocols/silc10/silc.c:1162
 msgid "Cannot call command"
 msgstr "নির্দেশ কল করতে পারে না"
 
-#: ../libpurple/protocols/silc/chat.c:1249
-#: ../libpurple/protocols/silc/silc.c:1454
-#: ../libpurple/protocols/silc10/chat.c:1300
-#: ../libpurple/protocols/silc10/silc.c:1163
 msgid "Unknown command"
 msgstr "অজানা নির্দেশ"
 
-#: ../libpurple/protocols/silc/ft.c:85 ../libpurple/protocols/silc/ft.c:101
-#: ../libpurple/protocols/silc/ft.c:104 ../libpurple/protocols/silc/ft.c:108
-#: ../libpurple/protocols/silc/ft.c:112 ../libpurple/protocols/silc/ft.c:116
-#: ../libpurple/protocols/silc/ft.c:120 ../libpurple/protocols/silc/ft.c:272
-#: ../libpurple/protocols/silc/ft.c:277 ../libpurple/protocols/silc/ft.c:282
-#: ../libpurple/protocols/silc/ft.c:288 ../libpurple/protocols/silc/ft.c:425
-#: ../libpurple/protocols/silc10/ft.c:89 ../libpurple/protocols/silc10/ft.c:92
-#: ../libpurple/protocols/silc10/ft.c:96
-#: ../libpurple/protocols/silc10/ft.c:100
-#: ../libpurple/protocols/silc10/ft.c:104
-#: ../libpurple/protocols/silc10/ft.c:205
-#: ../libpurple/protocols/silc10/ft.c:210
-#: ../libpurple/protocols/silc10/ft.c:215
-#: ../libpurple/protocols/silc10/ft.c:221
-#: ../libpurple/protocols/silc10/ft.c:340
 msgid "Secure File Transfer"
 msgstr "নিরাপদ ফাইল স্থানান্তর"
 
-#: ../libpurple/protocols/silc/ft.c:86 ../libpurple/protocols/silc/ft.c:102
-#: ../libpurple/protocols/silc/ft.c:105 ../libpurple/protocols/silc/ft.c:109
-#: ../libpurple/protocols/silc/ft.c:113 ../libpurple/protocols/silc/ft.c:117
-#: ../libpurple/protocols/silc/ft.c:121 ../libpurple/protocols/silc10/ft.c:90
-#: ../libpurple/protocols/silc10/ft.c:93 ../libpurple/protocols/silc10/ft.c:97
-#: ../libpurple/protocols/silc10/ft.c:101
-#: ../libpurple/protocols/silc10/ft.c:105
 msgid "Error during file transfer"
 msgstr "ফাইল স্থানান্তরের ত্রুটি"
 
-#: ../libpurple/protocols/silc/ft.c:87
 msgid "Remote disconnected"
 msgstr "দূরবর্তী সংযোগ বিচ্ছিন্ন"
 
 # tithi
-#: ../libpurple/protocols/silc/ft.c:106 ../libpurple/protocols/silc10/ft.c:94
 msgid "Permission denied"
 msgstr "অনুমতি অস্বীকৃত"
 
 # tithi
-#: ../libpurple/protocols/silc/ft.c:110 ../libpurple/protocols/silc10/ft.c:98
 msgid "Key agreement failed"
 msgstr "মূল চুক্তি ব্যর্থ"
 
 # fix me tithi
-#: ../libpurple/protocols/silc/ft.c:114
 msgid "Connection timed out"
 msgstr "সংযোগ সময় শেষ"
 
-#: ../libpurple/protocols/silc/ft.c:118
 msgid "Creating connection failed"
 msgstr "সংযোগ তৈরীতে ব্যর্থ"
 
-#: ../libpurple/protocols/silc/ft.c:122 ../libpurple/protocols/silc10/ft.c:102
 msgid "File transfer session does not exist"
 msgstr "ফাইল স্থানান্তর অধিবেশন বিদ্যমান নয়"
 
-#: ../libpurple/protocols/silc/ft.c:273 ../libpurple/protocols/silc10/ft.c:206
 msgid "No file transfer session active"
 msgstr "কোনো ফাইল স্থানান্তর অধিবেশন সক্রিয় নয়"
 
-#: ../libpurple/protocols/silc/ft.c:278 ../libpurple/protocols/silc10/ft.c:211
 msgid "File transfer already started"
 msgstr "ফাইল স্থানান্তর ইতোমধ্যে শুরু হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/ft.c:283 ../libpurple/protocols/silc10/ft.c:216
 msgid "Could not perform key agreement for file transfer"
 msgstr "ফাইল স্থানান্তরের জন্য মূল চুক্তি সম্পাদন করতে পারে না"
 
-#: ../libpurple/protocols/silc/ft.c:289 ../libpurple/protocols/silc10/ft.c:222
 msgid "Could not start the file transfer"
 msgstr "ফাইল স্থানান্তর শুরু করেনি"
 
-#: ../libpurple/protocols/silc/ft.c:426 ../libpurple/protocols/silc10/ft.c:341
 msgid "Cannot send file"
 msgstr "ফাইল পাঠাতে পারে না"
 
-#: ../libpurple/protocols/silc/ops.c:76
 msgid "Error occurred"
 msgstr "ত্রুটি সংঘটিত হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:548 ../libpurple/protocols/silc/ops.c:557
-#: ../libpurple/protocols/silc/ops.c:566
-#: ../libpurple/protocols/silc10/ops.c:554
-#: ../libpurple/protocols/silc10/ops.c:563
-#: ../libpurple/protocols/silc10/ops.c:572
 #, c-format
 msgid "%s has changed the topic of <I>%s</I> to: %s"
 msgstr "%1s <I>%2s</I> এর বিষয়বস্তু পরিবর্তন করেছে: %3s"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:632
-#: ../libpurple/protocols/silc10/ops.c:638
 #, c-format
 msgid "<I>%s</I> set channel <I>%s</I> modes to: %s"
 msgstr "<I>%s</I> চ্যানেল <I>%s</I> মোডসমূহ নির্ধারণ করে: %s"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:636
-#: ../libpurple/protocols/silc10/ops.c:642
 #, c-format
 msgid "<I>%s</I> removed all channel <I>%s</I> modes"
 msgstr "<I>%s</I> সমস্ত চ্যানেল <I>%s</I> মোডসমূহ অপসারণ করেছে"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:669
-#: ../libpurple/protocols/silc10/ops.c:675
 #, c-format
 msgid "<I>%s</I> set <I>%s's</I> modes to: %s"
 msgstr "<I>%s</I> মোড <I> %s</I> নির্ধারণ করে: %s-এ"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:677
-#: ../libpurple/protocols/silc10/ops.c:683
 #, c-format
 msgid "<I>%s</I> removed all <I>%s's</I> modes"
 msgstr "<I>%s's</I> সব <I>%s</I> মোডসমূহ অপসারণ করেছে"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:706
-#: ../libpurple/protocols/silc10/ops.c:712
 #, c-format
 msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)"
 msgstr "আপনি <I>%s</I> (%s) দ্বারা <I>%s</I> প্রত্যাখাতি হয়েছন"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:733 ../libpurple/protocols/silc/ops.c:738
-#: ../libpurple/protocols/silc/ops.c:743
-#: ../libpurple/protocols/silc10/ops.c:742
-#: ../libpurple/protocols/silc10/ops.c:747
-#: ../libpurple/protocols/silc10/ops.c:752
 #, c-format
 msgid "You have been killed by %s (%s)"
 msgstr "আপনাকে %1s (%2s) দ্বারা অপসারণ করা হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:764 ../libpurple/protocols/silc/ops.c:769
-#: ../libpurple/protocols/silc/ops.c:774
-#: ../libpurple/protocols/silc10/ops.c:773
-#: ../libpurple/protocols/silc10/ops.c:778
-#: ../libpurple/protocols/silc10/ops.c:783
 #, c-format
 msgid "Killed by %s (%s)"
 msgstr "%1s (%2s) দ্বারা অপসারণ করা হয়েছে"
 
-#: ../libpurple/protocols/silc/ops.c:811
-#: ../libpurple/protocols/silc10/ops.c:829
 msgid "Server signoff"
 msgstr "সার্ভার সাইন-অফ"
 
-#: ../libpurple/protocols/silc/ops.c:997
-#: ../libpurple/protocols/silc10/ops.c:1017
 msgid "Personal Information"
 msgstr "ব্যক্তিগত তথ্য"
 
-#: ../libpurple/protocols/silc/ops.c:1020
-#: ../libpurple/protocols/silc10/ops.c:1040
 msgid "Birth Day"
 msgstr "জন্মদিন"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1028
-#: ../libpurple/protocols/silc10/ops.c:1048
 msgid "Job Role"
 msgstr "কর্ম ভূমিকা"
 
-#: ../libpurple/protocols/silc/ops.c:1032
-#: ../libpurple/protocols/silc/silc.c:1248
-#: ../libpurple/protocols/silc10/ops.c:1052
-#: ../libpurple/protocols/silc10/silc.c:949
 msgid "Organization"
 msgstr "সংঘঠন"
 
-#: ../libpurple/protocols/silc/ops.c:1036
-#: ../libpurple/protocols/silc10/ops.c:1056
 msgid "Unit"
 msgstr "একক"
 
-#: ../libpurple/protocols/silc/ops.c:1060
-#: ../libpurple/protocols/silc10/ops.c:1080
 msgid "Note"
 msgstr "নোট"
 
-#: ../libpurple/protocols/silc/ops.c:1106
-#: ../libpurple/protocols/silc10/ops.c:1128
 msgid "Join Chat"
 msgstr "আড্ডায় যোগ দিন"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1140
-#: ../libpurple/protocols/silc10/chat.c:1039
 #, c-format
 msgid "You are channel founder on <I>%s</I>"
 msgstr "আপনি <I>%s</I> এ চ্যানেল প্রতিষ্ঠাতা"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1144
-#: ../libpurple/protocols/silc10/chat.c:1043
 #, c-format
 msgid "Channel founder on <I>%s</I> is <I>%s</I>"
 msgstr "<I>%s</I> এর চ্যানেল প্রতিষ্ঠাতা হলো <I>%s</I>"
 
-#: ../libpurple/protocols/silc/ops.c:1203
-#: ../libpurple/protocols/silc/ops.c:1341
-#: ../libpurple/protocols/silc10/ops.c:1183
-#: ../libpurple/protocols/silc10/ops.c:1332
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1071
 msgid "Real Name"
 msgstr "আসল নাম"
 
-#: ../libpurple/protocols/silc/ops.c:1231
-#: ../libpurple/protocols/silc10/ops.c:1213
 msgid "Status Text"
 msgstr "অবস্থা পাঠ"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1293
-#: ../libpurple/protocols/silc/ops.c:1367
-#: ../libpurple/protocols/silc10/ops.c:1285
-#: ../libpurple/protocols/silc10/ops.c:1357
 msgid "Public Key Fingerprint"
 msgstr "সর্বসাধারণ কী-এর হস্তাঙ্গুলির-ছাপ"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1294
-#: ../libpurple/protocols/silc/ops.c:1368
-#: ../libpurple/protocols/silc10/ops.c:1286
-#: ../libpurple/protocols/silc10/ops.c:1358
 msgid "Public Key Babbleprint"
 msgstr "সর্বসাধারণ কী-এর ব্যাবলপ্রিন্ট"
 
-#: ../libpurple/protocols/silc/ops.c:1307
-#: ../libpurple/protocols/silc10/ops.c:1298
 msgid "_More..."
 msgstr "আরও... (_M)"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1386
-#: ../libpurple/protocols/silc/silc.c:1312
-#: ../libpurple/protocols/silc10/ops.c:1371
-#: ../libpurple/protocols/silc10/silc.c:1013
 msgid "Detach From Server"
 msgstr "সার্ভার থেকে বিচ্ছিন্ন"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1386
-#: ../libpurple/protocols/silc10/ops.c:1371
 msgid "Cannot detach"
 msgstr "বিচ্ছিন্ন হতে পারে না"
 
-#: ../libpurple/protocols/silc/ops.c:1406
-#: ../libpurple/protocols/silc10/ops.c:1382
 msgid "Cannot set topic"
 msgstr "বিষয়বস্তু ঠিক করতে পারে না"
 
-#: ../libpurple/protocols/silc/ops.c:1435
-#: ../libpurple/protocols/silc10/ops.c:1414
 msgid "Failed to change nickname"
 msgstr "ডাকনাম পরিবর্তন করতে ব্যর্থ"
 
-#: ../libpurple/protocols/silc/ops.c:1484
-#: ../libpurple/protocols/silc10/ops.c:1462
 msgid "Roomlist"
 msgstr "রুম-তালিকা"
 
-#: ../libpurple/protocols/silc/ops.c:1484
-#: ../libpurple/protocols/silc10/ops.c:1462
 msgid "Cannot get room list"
 msgstr "রুম-তালিকা পাওয়া যাচ্ছে না"
 
-#: ../libpurple/protocols/silc/ops.c:1485
 msgid "Network is empty"
 msgstr "নেটওয়ার্ক খালি"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1529
-#: ../libpurple/protocols/silc10/ops.c:1507
 msgid "No public key was received"
 msgstr "কোনো সর্বসাধারণ কী খুঁজে পায়নি"
 
-#: ../libpurple/protocols/silc/ops.c:1541
-#: ../libpurple/protocols/silc/ops.c:1554
-#: ../libpurple/protocols/silc10/ops.c:1519
-#: ../libpurple/protocols/silc10/ops.c:1532
 msgid "Server Information"
 msgstr "সার্ভারের তথ্য"
 
-#: ../libpurple/protocols/silc/ops.c:1542
-#: ../libpurple/protocols/silc10/ops.c:1520
 msgid "Cannot get server information"
 msgstr "সার্ভারের তথ্য গ্রহণ করতে পারে না"
 
-#: ../libpurple/protocols/silc/ops.c:1565
-#: ../libpurple/protocols/silc10/ops.c:1549
-#: ../libpurple/protocols/silc10/ops.c:1558
 msgid "Server Statistics"
 msgstr "সার্ভারের পরিসংখ্যান"
 
-#: ../libpurple/protocols/silc/ops.c:1566
-#: ../libpurple/protocols/silc10/ops.c:1550
 msgid "Cannot get server statistics"
 msgstr "সার্ভার পরিসংখ্যান পাওয়া যাচ্ছে না"
 
-#: ../libpurple/protocols/silc/ops.c:1573
-#: ../libpurple/protocols/silc10/ops.c:1581
 #, c-format
 msgid ""
 "Local server start time: %s\n"
@@ -13128,65 +9379,42 @@
 "মোট সার্ভারের পরিচালকগণ: %14d\n"
 "মোট রাউটারের পরিচালকগণ: %15d\n"
 
-#: ../libpurple/protocols/silc/ops.c:1605
-#: ../libpurple/protocols/silc10/ops.c:1604
 msgid "Network Statistics"
 msgstr "নেটওয়ার্ক পরিসংখ্যান"
 
-#: ../libpurple/protocols/silc/ops.c:1613
-#: ../libpurple/protocols/silc10/ops.c:1612
 msgid "Ping failed"
 msgstr "পিঙ্গ ব্যর্থ"
 
-#: ../libpurple/protocols/silc/ops.c:1618
-#: ../libpurple/protocols/silc10/ops.c:1617
 msgid "Ping reply received from server"
 msgstr "সার্ভার থেকে পিঙ্গ এর উত্তর গ্রহন করা হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1626
-#: ../libpurple/protocols/silc10/ops.c:1625
 msgid "Could not kill user"
 msgstr "ব্যবহারকারীকে বিচ্ছিন্ন করা সম্ভব হচ্ছে না"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1665
 msgid "WATCH"
 msgstr "পর্যবেক্ষণ করুন"
 
-#: ../libpurple/protocols/silc/ops.c:1665
 msgid "Cannot watch user"
 msgstr "ব্যবহারকারীকে পর্যবেক্ষণ করতে পারছে না"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1741
-#: ../libpurple/protocols/silc/ops.c:1792
-#: ../libpurple/protocols/silc/silc.c:395
-#: ../libpurple/protocols/silc10/ops.c:1817
-#: ../libpurple/protocols/silc10/ops.c:1864
-#: ../libpurple/protocols/silc10/silc.c:194
 msgid "Resuming session"
 msgstr "অধিবেশন পুনরায় শুরু করছে"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1743
-#: ../libpurple/protocols/silc10/ops.c:1819
 msgid "Authenticating connection"
 msgstr "সংযোগ প্রমাণ করছে"
 
-#: ../libpurple/protocols/silc/ops.c:1794
-#: ../libpurple/protocols/silc10/ops.c:1866
 msgid "Verifying server public key"
 msgstr "সার্ভারের সর্বসাধারণ কী পরীক্ষা করছে"
 
 # tithi
-#: ../libpurple/protocols/silc/ops.c:1831
-#: ../libpurple/protocols/silc10/ops.c:1908
 msgid "Passphrase required"
 msgstr "প্যাস-ফ্রেজ প্রয়োজন"
 
 # tithi
-#: ../libpurple/protocols/silc/pk.c:98 ../libpurple/protocols/silc10/pk.c:104
 #, c-format
 msgid ""
 "Received %s's public key. Your local copy does not match this key. Would you "
@@ -13196,14 +9424,12 @@
 "আপনি কি তারপরও এই সর্বসাধারণ কী গ্রহণে আগ্রহী?"
 
 # tithi
-#: ../libpurple/protocols/silc/pk.c:103 ../libpurple/protocols/silc10/pk.c:109
 #, c-format
 msgid "Received %s's public key. Would you like to accept this public key?"
 msgstr ""
 "%s এর সর্বসাধারণ কী গ্রহণ করেছে। আপনি কি তারপরও এই সর্বসাধারণ কী গ্রহণে আগ্রহী?"
 
 # tithi
-#: ../libpurple/protocols/silc/pk.c:107 ../libpurple/protocols/silc10/pk.c:113
 #, c-format
 msgid ""
 "Fingerprint and babbleprint for the %s key are:\n"
@@ -13216,122 +9442,79 @@
 "%2s\n"
 "%3s\n"
 
-#: ../libpurple/protocols/silc/pk.c:110 ../libpurple/protocols/silc/pk.c:139
-#: ../libpurple/protocols/silc10/pk.c:116
-#: ../libpurple/protocols/silc10/pk.c:142
 msgid "Verify Public Key"
 msgstr "সর্বসাধারণ কী যাচাই করুন"
 
-#: ../libpurple/protocols/silc/pk.c:115 ../libpurple/protocols/silc10/pk.c:121
 msgid "_View..."
 msgstr "প্রদর্শন করুন... (_V)"
 
 # tithi
-#: ../libpurple/protocols/silc/pk.c:140 ../libpurple/protocols/silc10/pk.c:143
 msgid "Unsupported public key type"
 msgstr "অসমর্থিত সর্বসাধারণ কী এর ধরন"
 
-#: ../libpurple/protocols/silc/silc.c:320
-#: ../libpurple/protocols/silc10/ops.c:1755
 msgid "Disconnected by server"
 msgstr "সার্ভার দ্বারা বিচ্ছিন্ন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:328
-#: ../libpurple/protocols/silc10/ops.c:1701
 msgid "Error during connecting to SILC Server"
 msgstr "SILC সার্ভারে সংযোগের সময় ত্রুটি"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:334
-#: ../libpurple/protocols/silc10/ops.c:1707
 msgid "Key Exchange failed"
 msgstr "কী বিনিময় ব্যর্থ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:344
-#: ../libpurple/protocols/silc10/ops.c:1718
 msgid ""
 "Resuming detached session failed. Press Reconnect to create new connection."
 msgstr ""
 "বিচ্ছিন্ন অধিবেশনটি পুনরায় শুরু করতে ব্যর্থ হয়েছে। অনুগ্রহ করে নতুন সংযোগ তৈরী করতে "
 "'পুনরায় সংযোগ' চাপুন।"
 
-#: ../libpurple/protocols/silc/silc.c:374
-#: ../libpurple/protocols/silc/silc.c:421
-#: ../libpurple/protocols/silc10/silc.c:164
 msgid "Connection failed"
 msgstr "সংযোগ ব্যর্থ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:398
-#: ../libpurple/protocols/silc10/silc.c:197
 msgid "Performing key exchange"
 msgstr "কী বিনিময় সম্পাদন করছে"
 
-#: ../libpurple/protocols/silc/silc.c:450
-#: ../libpurple/protocols/silc10/silc.c:362
 msgid "Unable to create connection"
 msgstr "সংযোগ তৈরী করতে ব্যর্থ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:493
-#: ../libpurple/protocols/silc/silc.c:509
-#: ../libpurple/protocols/silc/silc.c:538
-#: ../libpurple/protocols/silc10/silc.c:341
 msgid "Could not load SILC key pair"
 msgstr "SILC কী যুগল লোড করতে পারেনি"
 
 # tithi
 #. Progress
-#: ../libpurple/protocols/silc/silc.c:523
-#: ../libpurple/protocols/silc10/silc.c:330
 msgid "Connecting to SILC Server"
 msgstr "SILC সার্ভারে সংযোগ করছে"
 
-#: ../libpurple/protocols/silc/silc.c:569
-#: ../libpurple/protocols/silc10/silc.c:272
 msgid "Out of memory"
 msgstr "মেমোরীর বাইরে"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:620
-#: ../libpurple/protocols/silc10/silc.c:318
 msgid "Cannot initialize SILC protocol"
 msgstr "SILC প্রটোকল চালু করতে পারে না"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:633
-#: ../libpurple/protocols/silc10/silc.c:325
 msgid "Error loading SILC key pair"
 msgstr "SILC কী যুগল লোডে ত্রুটি"
 
-#: ../libpurple/protocols/silc/silc.c:690
-#: ../libpurple/protocols/silc/silc.c:1863
-#: ../libpurple/protocols/silc10/silc.c:405
-#: ../libpurple/protocols/silc10/silc.c:1582
 #, c-format
 msgid "Download %s: %s"
 msgstr "%1s ডাউনলোড করুন: %2s"
 
-#: ../libpurple/protocols/silc/silc.c:974
-#: ../libpurple/protocols/silc10/silc.c:675
 msgid "Your Current Mood"
 msgstr "আপনার বর্তমান অবস্থা"
 
-#: ../libpurple/protocols/silc/silc.c:976
-#: ../libpurple/protocols/silc10/silc.c:677 ../pidgin/gtkprefs.c:1792
+#, c-format
 msgid "Normal"
 msgstr "স্বাভাবিক"
 
-#: ../libpurple/protocols/silc/silc.c:990
-#: ../libpurple/protocols/silc10/silc.c:691
 msgid "In love"
 msgstr "ভালবাসায়"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1001
-#: ../libpurple/protocols/silc10/silc.c:702
 msgid ""
 "\n"
 "Your Preferred Contact Methods"
@@ -13339,67 +9522,40 @@
 "\n"
 "আপনাকে পছন্দের যোগাযোগ পদ্ধতি সমূহ"
 
-#: ../libpurple/protocols/silc/silc.c:1009
-#: ../libpurple/protocols/silc/util.c:567
-#: ../libpurple/protocols/silc10/silc.c:710
-#: ../libpurple/protocols/silc10/util.c:561
 msgid "SMS"
 msgstr "এসএমএস"
 
-#: ../libpurple/protocols/silc/silc.c:1011
-#: ../libpurple/protocols/silc/util.c:569
-#: ../libpurple/protocols/silc10/silc.c:712
-#: ../libpurple/protocols/silc10/util.c:563
 msgid "MMS"
 msgstr "এমএমএস"
 
-#: ../libpurple/protocols/silc/silc.c:1013
-#: ../libpurple/protocols/silc10/silc.c:714
 msgid "Video conferencing"
 msgstr "ভিডিও অধিবেশন চলছে"
 
-#: ../libpurple/protocols/silc/silc.c:1018
-#: ../libpurple/protocols/silc10/silc.c:719
 msgid "Your Current Status"
 msgstr "আপনার বর্তমান অবস্থা"
 
-#: ../libpurple/protocols/silc/silc.c:1025
-#: ../libpurple/protocols/silc10/silc.c:726
 msgid "Online Services"
 msgstr "অনলাইন সেবাসমূহ"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1028
-#: ../libpurple/protocols/silc10/silc.c:729
 msgid "Let others see what services you are using"
 msgstr "আপনি কি সেবাসমূহ ব্যবহার করছেন তা অন্যদের দেখতে দিন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1034
-#: ../libpurple/protocols/silc10/silc.c:735
 msgid "Let others see what computer you are using"
 msgstr "আপনি কি কম্পিউটার ব্যবহার করছেন তা অন্যদের দেখতে দিন"
 
-#: ../libpurple/protocols/silc/silc.c:1041
-#: ../libpurple/protocols/silc10/silc.c:742
 msgid "Your VCard File"
 msgstr "আপনার ভি-কার্ড ফাইল"
 
-#: ../libpurple/protocols/silc/silc.c:1047
 msgid "Timezone (UTC)"
 msgstr "সময়-এলাকা (ইউটিসি)"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1051
-#: ../libpurple/protocols/silc/silc.c:1052
-#: ../libpurple/protocols/silc10/silc.c:754
-#: ../libpurple/protocols/silc10/silc.c:755
 msgid "User Online Status Attributes"
 msgstr "ব্যবহারকারীর অনলাইন অবস্থার বৈশিষ্ট্যাবলী"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1053
-#: ../libpurple/protocols/silc10/silc.c:756
 msgid ""
 "You can let other users see your online status information and your personal "
 "information. Please fill the information you would like other users to see "
@@ -13409,237 +9565,148 @@
 "পারেন। অনুগ্রহ করে আপনি নিজের সম্বন্ধে যে তথ্য অন্যান্য ব্যবহারকারীকে দেখতে দিতে চান "
 "তা পূরণ করুন।"
 
-#: ../libpurple/protocols/silc/silc.c:1094
-#: ../libpurple/protocols/silc/silc.c:1100
-#: ../libpurple/protocols/silc/silc.c:1721
-#: ../libpurple/protocols/silc10/silc.c:797
-#: ../libpurple/protocols/silc10/silc.c:803
-#: ../libpurple/protocols/silc10/silc.c:1440
 msgid "Message of the Day"
 msgstr "দিনের বার্তা"
 
-#: ../libpurple/protocols/silc/silc.c:1094
-#: ../libpurple/protocols/silc10/silc.c:797
 msgid "No Message of the Day available"
 msgstr "আজকের দিনের কোনো বার্তা সহজলভ্য নয়"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1095
-#: ../libpurple/protocols/silc/silc.c:1716
-#: ../libpurple/protocols/silc10/silc.c:798
-#: ../libpurple/protocols/silc10/silc.c:1435
 msgid "There is no Message of the Day associated with this connection"
 msgstr "এই সংযোগের সাথে সম্পর্কিত আজকের দিনের কোনো বার্তা নেই"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1146
-#: ../libpurple/protocols/silc/silc.c:1192
-#: ../libpurple/protocols/silc/silc.c:1263
-#: ../libpurple/protocols/silc/silc.c:1264
-#: ../libpurple/protocols/silc10/silc.c:849
-#: ../libpurple/protocols/silc10/silc.c:893
-#: ../libpurple/protocols/silc10/silc.c:964
-#: ../libpurple/protocols/silc10/silc.c:965
 msgid "Create New SILC Key Pair"
 msgstr "নতুন SILC কী যুগল তৈরি করুন"
 
-#: ../libpurple/protocols/silc/silc.c:1146
-#: ../libpurple/protocols/silc10/silc.c:849
 msgid "Passphrases do not match"
 msgstr "প্যাস-ফ্রেজ মিলে না"
 
-#: ../libpurple/protocols/silc/silc.c:1192
-#: ../libpurple/protocols/silc10/silc.c:893
 msgid "Key Pair Generation failed"
 msgstr "কী জোড়া তৈরী করতে ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/silc/silc.c:1231
-#: ../libpurple/protocols/silc10/silc.c:932
 msgid "Key length"
 msgstr "কী-এর দৈর্ঘ্য"
 
-#: ../libpurple/protocols/silc/silc.c:1233
-#: ../libpurple/protocols/silc10/silc.c:934
 msgid "Public key file"
 msgstr "সর্বসাধারণ কী ফাইল"
 
-#: ../libpurple/protocols/silc/silc.c:1235
-#: ../libpurple/protocols/silc10/silc.c:936
 msgid "Private key file"
 msgstr "বযক্তিগত কী ফাইল"
 
-#: ../libpurple/protocols/silc/silc.c:1258
-#: ../libpurple/protocols/silc10/silc.c:959
 msgid "Passphrase (retype)"
 msgstr "প্যাস-ফ্রেজ (পুনরায় টাইপ করুন)"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1265
-#: ../libpurple/protocols/silc10/silc.c:966
 msgid "Generate Key Pair"
 msgstr "কী যুগল তৈরি করুন"
 
-#: ../libpurple/protocols/silc/silc.c:1308
-#: ../libpurple/protocols/silc10/silc.c:1009
 msgid "Online Status"
 msgstr "অনলাইন অবস্থা"
 
-#: ../libpurple/protocols/silc/silc.c:1316
-#: ../libpurple/protocols/silc10/silc.c:1017
 msgid "View Message of the Day"
 msgstr "দিনের বার্তাটি প্রদর্শন করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1320
-#: ../libpurple/protocols/silc10/silc.c:1021
 msgid "Create SILC Key Pair..."
 msgstr "SILC কী যুগল তৈরি করুন..."
 
-#: ../libpurple/protocols/silc/silc.c:1412
-#: ../libpurple/protocols/silc10/silc.c:1120
 #, c-format
 msgid "User <I>%s</I> is not present in the network"
 msgstr "<I>%s</I> ব্যবহারকারী নেটওয়ার্কে উপস্থিত নেই"
 
-#: ../libpurple/protocols/silc/silc.c:1592
-#: ../libpurple/protocols/silc10/silc.c:1311
 msgid "Topic too long"
 msgstr "বিষয়বস্তু অত্যন্ত দীর্ঘ"
 
-#: ../libpurple/protocols/silc/silc.c:1673
-#: ../libpurple/protocols/silc10/silc.c:1392
 msgid "You must specify a nick"
 msgstr "আপনাকে একটি ডাকনাম উল্লেখ করতে হবে"
 
-#: ../libpurple/protocols/silc/silc.c:1775
-#: ../libpurple/protocols/silc10/silc.c:1494
 #, c-format
 msgid "channel %s not found"
 msgstr "%s চ্যানেলটি খুঁজে পাওয়া যায়নি"
 
-#: ../libpurple/protocols/silc/silc.c:1780
-#: ../libpurple/protocols/silc10/silc.c:1499
 #, c-format
 msgid "channel modes for %s: %s"
 msgstr "%1s-এর চ্যানেল মোড: %2s"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1782
-#: ../libpurple/protocols/silc10/silc.c:1501
 #, c-format
 msgid "no channel modes are set on %s"
 msgstr "%s এ কোনো চ্যানেল মোড নির্ধারণ করা হয়নি"
 
-#: ../libpurple/protocols/silc/silc.c:1795
-#: ../libpurple/protocols/silc10/silc.c:1514
 #, c-format
 msgid "Failed to set cmodes for %s"
 msgstr "%s-এর জন্য সি-মোড নির্ধারণ করতে ব্যর্থ"
 
-#: ../libpurple/protocols/silc/silc.c:1825
-#: ../libpurple/protocols/silc10/silc.c:1544
 #, c-format
 msgid "Unknown command: %s, (may be a client bug)"
 msgstr "অজানা নির্দেশ: %s, (সম্ভবত এটি একটি ক্লায়েন্ট ত্রুটি)"
 
-#: ../libpurple/protocols/silc/silc.c:1906
-#: ../libpurple/protocols/silc10/silc.c:1625
 msgid "part [channel]:  Leave the chat"
 msgstr "অংশ [চ্যানেল]:  আড্ডা ত্যাগ করুন"
 
-#: ../libpurple/protocols/silc/silc.c:1910
-#: ../libpurple/protocols/silc10/silc.c:1629
 msgid "leave [channel]:  Leave the chat"
 msgstr "ত্যাগ করুন [চ্যানেল]:  আড্ডা ত্যাগ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1914
-#: ../libpurple/protocols/silc10/silc.c:1633
 msgid "topic [&lt;new topic&gt;]:  View or change the topic"
 msgstr "বিষয়বস্তু [&1lt;নতুন বিষয়বস্তু &2gt;]: বিষয়বস্তু দেখুন বা পরিবর্তন করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1919
-#: ../libpurple/protocols/silc10/silc.c:1638
 msgid "join &lt;channel&gt; [&lt;password&gt;]:  Join a chat on this network"
 msgstr ""
 "যুক্ত হোন &1lt;চ্যানেল&2gt; [&3lt;গুপ্তসঙ্কেত&4gt;]:  এই নেটওয়ার্কের একটি আড্ডায় যোগ "
 "দিন"
 
-#: ../libpurple/protocols/silc/silc.c:1923
-#: ../libpurple/protocols/silc10/silc.c:1642
 msgid "list:  List channels on this network"
 msgstr "তালিকা:  এই নেটওয়ার্কের চ্যানেলসমূহের তালিকা তৈরী করুন"
 
 # fix -me tithi
-#: ../libpurple/protocols/silc/silc.c:1927
-#: ../libpurple/protocols/silc10/silc.c:1646
 msgid "whois &lt;nick&gt;:  View nick's information"
 msgstr "কে &1lt;ডাকনাম&2gt;:  ডাকনামের তথ্য দেখুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1931
-#: ../libpurple/protocols/silc10/silc.c:1650
-#: ../libpurple/protocols/zephyr/zephyr.c:2706
 msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user"
 msgstr ""
 "বার্তা &1lt;ডাকনাম&2gt; &3lt;বার্তা&4gt;:  ব্যবহারকারীকে একটি ব্যক্তিগত বার্তা "
 "পাঠান"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1935
-#: ../libpurple/protocols/silc10/silc.c:1654
 msgid "query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
 msgstr ""
 "জিজ্ঞাসা &1lt;ডাকনাম&2gt; [&3lt;বার্তা&4gt;]:  ব্যবহারকারীকে একটি ব্যক্তিগত বার্তা "
 "পাঠান"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1939
-#: ../libpurple/protocols/silc10/silc.c:1658
 msgid "motd:  View the server's Message Of The Day"
 msgstr "দিনের সেরা বার্তা:  সার্ভারের 'দিনের সেরা বার্তা' দেখুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1943
-#: ../libpurple/protocols/silc10/silc.c:1662
 msgid "detach:  Detach this session"
 msgstr "বিচ্ছিন্ন:  অধিবেশনটিকে বিচ্ছিন্ন করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1947
-#: ../libpurple/protocols/silc10/silc.c:1666
 msgid "quit [message]:  Disconnect from the server, with an optional message"
 msgstr "ত্যাগ করুন [বার্তা]:  একটি ঐচ্ছিক বার্তার সহ, সার্ভার হতে বিচ্ছিন্ন করুন"
 
-#: ../libpurple/protocols/silc/silc.c:1951
-#: ../libpurple/protocols/silc10/silc.c:1670
 msgid "call &lt;command&gt;:  Call any silc client command"
 msgstr "কল করুন &1lt;নির্দেশ&2gt;:  যেকোনো silc ক্লায়েন্টের নির্দেশ কল করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1957
-#: ../libpurple/protocols/silc10/silc.c:1676
 msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]:  Kill nick"
 msgstr ""
 "মুছে ফেলুন &1lt;ডাকনাম&2gt; [-সর্বসাধারণ-কী|&3lt;কারণ&4gt;]:  ডাকনাম মুছে ফেলুন"
 
 # ডাকনাম
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1961
-#: ../libpurple/protocols/silc10/silc.c:1680
 msgid "nick &lt;newnick&gt;:  Change your nickname"
 msgstr "ডাকনাম &1lt;নতুন ডাকনাম&2gt;:  আপনার ডাকনাম পরিবর্তন করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1965
-#: ../libpurple/protocols/silc10/silc.c:1684
 msgid "whowas &lt;nick&gt;:  View nick's information"
 msgstr "কে ছিল &1lt;ডাকনাম&2gt;:  ডাকনামের তথ্য দেখুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1969
-#: ../libpurple/protocols/silc10/silc.c:1688
 msgid ""
 "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display "
 "channel modes"
@@ -13648,8 +9715,6 @@
 "পরিবর্তন করুন বা প্রদর্শন করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1973
-#: ../libpurple/protocols/silc10/silc.c:1692
 msgid ""
 "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes "
 "on channel"
@@ -13658,23 +9723,17 @@
 "ডাকনামের মোডসমূহ পরিবর্তন করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1977
-#: ../libpurple/protocols/silc10/silc.c:1696
 msgid "umode &lt;usermodes&gt;:  Set your modes in the network"
 msgstr ""
 "ইউ-মোড &1lt;ব্যবহারকারীর-মোডসমূহ&2gt;:  নেটওয়ার্কে আপনার মোডসমূহ নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1981
-#: ../libpurple/protocols/silc10/silc.c:1700
 msgid "oper &lt;nick&gt; [-pubkey]:  Get server operator privileges"
 msgstr ""
 "অপারেটর &1lt;ডাকনাম&2gt; [-সর্বসাধারণ-কী]:  সার্ভার অপারেটরের প্রাধিকারগুলো গ্রহণ "
 "করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1985
-#: ../libpurple/protocols/silc10/silc.c:1704
 msgid ""
 "invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from "
 "channel invite list"
@@ -13683,54 +9742,38 @@
 "চ্যানেলের আমন্ত্রন তালিকা থেকে যোগ করুন/মুছে ফেলুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1989
-#: ../libpurple/protocols/silc10/silc.c:1708
 msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]:  Kick client from channel"
 msgstr ""
 "অপসারণ করুন &1lt;চ্যানেল&2gt; &3lt;ডাকনাম&4gt; [মন্তব্য]:  চ্যানেল থেকে গ্রাহককে "
 "অপসারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1993
-#: ../libpurple/protocols/silc10/silc.c:1712
 msgid "info [server]:  View server administrative details"
 msgstr "তথ্য [সার্ভার]: সার্ভারের প্রশাসনিক বিবরণ দেখুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:1997
-#: ../libpurple/protocols/silc10/silc.c:1716
 msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]:  Ban client from channel"
 msgstr ""
 "নিষিদ্ধ [&1lt;চ্যানেল&2gt; +|-&3lt;ডাকনাম&4gt;]:  চ্যানেল হতে গ্রাহককে নিষিদ্ধ করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:2001
-#: ../libpurple/protocols/silc10/silc.c:1720
 msgid "getkey &lt;nick|server&gt;:  Retrieve client's or server's public key"
 msgstr ""
 "কী-গ্রহণ করুন &1lt;ডাকনাম সার্ভার&2gt;:  গ্রাহক বা সার্ভারের সর্বসাধারণ কী পুনরুদ্ধার "
 "করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:2005
-#: ../libpurple/protocols/silc10/silc.c:1724
 msgid "stats:  View server and network statistics"
 msgstr "পরিসংখ্যান: সার্ভার এবং নেটওয়ার্কের পরিসংখ্যান দেখুন"
 
-#: ../libpurple/protocols/silc/silc.c:2009
-#: ../libpurple/protocols/silc10/silc.c:1728
 msgid "ping:  Send PING to the connected server"
 msgstr "পিঙ্গ:  সংযুক্ত সার্ভারে একটি পিঙ্গ পাঠান"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:2014
-#: ../libpurple/protocols/silc10/silc.c:1733
 msgid "users &lt;channel&gt;:  List users in channel"
 msgstr "ব্যবহারকারীগণ &1lt;চ্যানেল&2gt;:  চ্যানেল ব্যবহারকারীর তালিকা করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:2018
-#: ../libpurple/protocols/silc10/silc.c:1737
 msgid ""
 "names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List "
 "specific users in channel(s)"
@@ -13747,152 +9790,102 @@
 #. *< name
 #. *< version
 #. *  summary
-#: ../libpurple/protocols/silc/silc.c:2130
-#: ../libpurple/protocols/silc10/silc.c:1862
 msgid "SILC Protocol Plugin"
 msgstr "SILC প্রটোকল প্লাগইন"
 
 # tithi
 #. *  description
-#: ../libpurple/protocols/silc/silc.c:2132
-#: ../libpurple/protocols/silc10/silc.c:1864
 msgid "Secure Internet Live Conferencing (SILC) Protocol"
 msgstr "ইন্টারনেটে সরাসরি মতবিনিময় করার নিরাপদ (SILC) প্রটোকল"
 
-#: ../libpurple/protocols/silc/silc.c:2173
-#: ../libpurple/protocols/silc10/silc.c:1896 ../pidgin/gtkprefs.c:2170
 msgid "Network"
 msgstr "নেটওয়ার্ক"
 
-#: ../libpurple/protocols/silc/silc.c:2184
-#: ../libpurple/protocols/silc10/silc.c:1907
 msgid "Public Key file"
 msgstr "সর্বসাধারণ কী ফাইল"
 
-#: ../libpurple/protocols/silc/silc.c:2188
-#: ../libpurple/protocols/silc10/silc.c:1911
 msgid "Private Key file"
 msgstr "ব্যক্তিগত কী ফাইল"
 
-#: ../libpurple/protocols/silc/silc.c:2198
-#: ../libpurple/protocols/silc10/silc.c:1921
 msgid "Cipher"
 msgstr "সাইফার"
 
-#: ../libpurple/protocols/silc/silc.c:2208
-#: ../libpurple/protocols/silc10/silc.c:1931
 msgid "HMAC"
 msgstr "HMAC"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:2211
 msgid "Use Perfect Forward Secrecy"
 msgstr "যথার্থ অগ্রগামী গোপনীয়তা ব্যবহার করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:2215
-#: ../libpurple/protocols/silc10/silc.c:1934
 msgid "Public key authentication"
 msgstr "সর্বসাধারণ কী প্রমাণীকরণ"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:2218
-#: ../libpurple/protocols/silc10/silc.c:1937
 msgid "Block IMs without Key Exchange"
 msgstr "কী বিনিময় ব্যতিত IM গুলোকে ব্লক করুন"
 
 # Fixme
 # block = বন্ধ? - tithi
-#: ../libpurple/protocols/silc/silc.c:2221
-#: ../libpurple/protocols/silc10/silc.c:1940
 msgid "Block messages to whiteboard"
 msgstr "হোয়াটবোর্ডে বার্তাগুলো ব্লক করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:2224
-#: ../libpurple/protocols/silc10/silc.c:1943
 msgid "Automatically open whiteboard"
 msgstr "স্বয়ংক্রিয়ভাবে হোয়াটবোর্ড খুলুন"
 
 # tithi
-#: ../libpurple/protocols/silc/silc.c:2227
-#: ../libpurple/protocols/silc10/silc.c:1946
 msgid "Digitally sign and verify all messages"
 msgstr "সকল বার্তা ডিজিটাল স্বাক্ষর করুন এবং যাচাই করুন"
 
 # tithi
-#: ../libpurple/protocols/silc/util.c:207
-#: ../libpurple/protocols/silc/util.c:250
-#: ../libpurple/protocols/silc10/util.c:207
-#: ../libpurple/protocols/silc10/util.c:247
 msgid "Creating SILC key pair..."
 msgstr "SILC কী যুগল তৈরি করছে..."
 
-#: ../libpurple/protocols/silc/util.c:216
-#: ../libpurple/protocols/silc/util.c:259
 msgid "Cannot create SILC key pair\n"
 msgstr "SILC কী যুগল তৈরী করতে পারে না\n"
 
 #. Hint for translators: Please check the tabulator width here and in
 #. the next strings (short strings: 2 tabs, longer strings 1 tab,
 #. sum: 3 tabs or 24 characters)
-#: ../libpurple/protocols/silc/util.c:363
-#: ../libpurple/protocols/silc10/util.c:355
 #, c-format
 msgid "Real Name: \t%s\n"
 msgstr "আসল নাম: \t%s\n"
 
-#: ../libpurple/protocols/silc/util.c:365
-#: ../libpurple/protocols/silc10/util.c:357
 #, c-format
 msgid "User Name: \t%s\n"
 msgstr "ব্যবহারকারীর নাম: \t%s\n"
 
-#: ../libpurple/protocols/silc/util.c:367
-#: ../libpurple/protocols/silc10/util.c:359
 #, c-format
 msgid "Email: \t\t%s\n"
 msgstr "ই-মেইল: \t\t%s\n"
 
-#: ../libpurple/protocols/silc/util.c:369
-#: ../libpurple/protocols/silc10/util.c:361
 #, c-format
 msgid "Host Name: \t%s\n"
 msgstr "হোস্ট নাম: \t%s\n"
 
-#: ../libpurple/protocols/silc/util.c:371
-#: ../libpurple/protocols/silc10/util.c:363
 #, c-format
 msgid "Organization: \t%s\n"
 msgstr "সংগঠন: \t%s\n"
 
-#: ../libpurple/protocols/silc/util.c:373
-#: ../libpurple/protocols/silc10/util.c:365
 #, c-format
 msgid "Country: \t%s\n"
 msgstr "দেশ: \t%s\n"
 
-#: ../libpurple/protocols/silc/util.c:374
-#: ../libpurple/protocols/silc10/util.c:366
 #, c-format
 msgid "Algorithm: \t%s\n"
 msgstr "এলগোরিদম: \t%s\n"
 
 # tithi
-#: ../libpurple/protocols/silc/util.c:375
-#: ../libpurple/protocols/silc10/util.c:367
 #, c-format
 msgid "Key Length: \t%d bits\n"
 msgstr "কী দৈর্ঘ্য: \t%d বিট\n"
 
-#: ../libpurple/protocols/silc/util.c:377
 #, c-format
 msgid "Version: \t%s\n"
 msgstr "সংস্করণ: \t%s\n"
 
 # tithi
-#: ../libpurple/protocols/silc/util.c:379
-#: ../libpurple/protocols/silc10/util.c:369
 #, c-format
 msgid ""
 "Public Key Fingerprint:\n"
@@ -13904,8 +9897,6 @@
 "\n"
 
 # tithi
-#: ../libpurple/protocols/silc/util.c:380
-#: ../libpurple/protocols/silc10/util.c:370
 #, c-format
 msgid ""
 "Public Key Babbleprint:\n"
@@ -13914,46 +9905,30 @@
 "সর্বসাধারণ কী এর ব্যাবল-প্রিন্ট:\n"
 "%s"
 
-#: ../libpurple/protocols/silc/util.c:382
-#: ../libpurple/protocols/silc/util.c:383
-#: ../libpurple/protocols/silc10/util.c:374
-#: ../libpurple/protocols/silc10/util.c:375
 msgid "Public Key Information"
 msgstr "সর্বসাধারণ কী এর তথ্য"
 
-#: ../libpurple/protocols/silc/util.c:565
-#: ../libpurple/protocols/silc10/util.c:559
 msgid "Paging"
 msgstr "পেজিং"
 
-#: ../libpurple/protocols/silc/util.c:571
-#: ../libpurple/protocols/silc10/util.c:565
 msgid "Video Conferencing"
 msgstr "ভিডিও আলোচনা সভা চলছে"
 
-#: ../libpurple/protocols/silc/util.c:589
-#: ../libpurple/protocols/silc10/util.c:584
 msgid "Computer"
 msgstr "কম্পিউটার"
 
-#: ../libpurple/protocols/silc/util.c:593
-#: ../libpurple/protocols/silc10/util.c:588
 msgid "PDA"
 msgstr "পিডিএ"
 
-#: ../libpurple/protocols/silc/util.c:595
-#: ../libpurple/protocols/silc10/util.c:590
 msgid "Terminal"
 msgstr "টার্মিনাল"
 
 # tithi
-#: ../libpurple/protocols/silc/wb.c:288 ../libpurple/protocols/silc10/wb.c:287
 #, c-format
 msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
 msgstr "%s হোয়াটবোর্ডে বার্তা পাঠিয়েছিল। আপনি কি হোয়াটবোর্ডটি খুলতে আগ্রহী?"
 
 # tithi
-#: ../libpurple/protocols/silc/wb.c:292 ../libpurple/protocols/silc10/wb.c:291
 #, c-format
 msgid ""
 "%s sent message to whiteboard on %s channel. Would you like to open the "
@@ -13961,110 +9936,94 @@
 msgstr ""
 "%2s চ্যানেলের হোয়াটবোর্ডে %1s বার্তা পাঠিয়েছিল। আপনি কি হোয়াটবোর্ডটি খুলতে আগ্রহী?"
 
-#: ../libpurple/protocols/silc/wb.c:306 ../libpurple/protocols/silc10/wb.c:305
 msgid "Whiteboard"
 msgstr "হোয়াইট-বোর্ড"
 
-#: ../libpurple/protocols/silc10/ops.c:1559
 msgid "No server statistics available"
 msgstr "কোনো সার্ভার পরিসংখ্যান সহজলভ্য নয়"
 
 # tithi
-#: ../libpurple/protocols/silc10/ops.c:1937
+#, c-format
 msgid "Failure: Version mismatch, upgrade your client"
 msgstr "ব্যর্থতা: সংস্করণ অমিল, আপনার ক্লায়েন্ট উন্নততর করুন"
 
-#: ../libpurple/protocols/silc10/ops.c:1940
+#, c-format
 msgid "Failure: Remote does not trust/support your public key"
 msgstr "ব্যর্থতা: রিমোট আপনার সর্বাসাধারণ কী বিশ্বাস/সমর্থন করে না"
 
 # tithi
-#: ../libpurple/protocols/silc10/ops.c:1943
+#, c-format
 msgid "Failure: Remote does not support proposed KE group"
 msgstr "ব্যর্থ: রিমোট প্রস্তাবিত কেই গ্রুপ সমর্থন করে না"
 
 # tithi
-#: ../libpurple/protocols/silc10/ops.c:1946
+#, c-format
 msgid "Failure: Remote does not support proposed cipher"
 msgstr "ব্যর্থ: রিমোট প্রস্তাবিত ছাইফার সমর্থন করে না"
 
 # tithi
-#: ../libpurple/protocols/silc10/ops.c:1949
+#, c-format
 msgid "Failure: Remote does not support proposed PKCS"
 msgstr "ব্যর্থ: রিমোট প্রস্তাবিত পিকেসিএস সমর্থন করে না"
 
 # tithi
-#: ../libpurple/protocols/silc10/ops.c:1952
+#, c-format
 msgid "Failure: Remote does not support proposed hash function"
 msgstr "ব্যর্থ: রিমোট প্রস্তাবিত হ্যাস ফাংশন সমর্থন করে না"
 
 # tithi
-#: ../libpurple/protocols/silc10/ops.c:1955
+#, c-format
 msgid "Failure: Remote does not support proposed HMAC"
 msgstr "ব্যর্থ: রিমোট প্রস্তাবিত এইচএমএসি সমর্থন করে না"
 
 # tithi
-#: ../libpurple/protocols/silc10/ops.c:1957
+#, c-format
 msgid "Failure: Incorrect signature"
 msgstr "ব্যর্থতা: ভূল স্বাক্ষর"
 
 # tithi
-#: ../libpurple/protocols/silc10/ops.c:1959
+#, c-format
 msgid "Failure: Invalid cookie"
 msgstr "ব্যর্থতা: অবৈধ কুকি"
 
 # tithi
-#: ../libpurple/protocols/silc10/ops.c:1970
+#, c-format
 msgid "Failure: Authentication failed"
 msgstr "ব্যর্থতা: প্রমাণীকরণ ব্যর্থ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/silc10/silc.c:186
 msgid "Cannot initialize SILC Client connection"
 msgstr "SILC ক্লায়েন্ট সংযোগ প্রাথমিকভাবে প্রস্তুত করতে পারে না"
 
 # fix me tithi
-#: ../libpurple/protocols/silc10/silc.c:295
 msgid "John Noname"
 msgstr "জন নোনেম"
 
 # tithi
-#: ../libpurple/protocols/silc10/silc.c:339
 #, c-format
 msgid "Could not load SILC key pair: %s"
 msgstr "SILC কী যুগল লোড করতে পারেনি: %s"
 
-#: ../libpurple/protocols/simple/simple.c:435
 msgid "Could not write"
 msgstr "লিখতে পারেনি"
 
-#: ../libpurple/protocols/simple/simple.c:459
-#: ../libpurple/protocols/simple/simple.c:1748
 msgid "Could not connect"
 msgstr "সংযোগ দিতে পারেনি"
 
-#: ../libpurple/protocols/simple/simple.c:1145
 msgid "Unknown server response."
 msgstr "অজানা সার্ভার উত্তর।"
 
 # tithi
-#: ../libpurple/protocols/simple/simple.c:1784
-#: ../libpurple/protocols/simple/simple.c:1830
-#: ../libpurple/protocols/simple/simple.c:1845
-#: ../libpurple/protocols/simple/simple.c:1900
 msgid "Could not create listen socket"
 msgstr "শ্রবণ সকেট তৈরি করতে পারেনি"
 
-#: ../libpurple/protocols/simple/simple.c:1910
 msgid "Could not resolve hostname"
 msgstr "হোস্ট-নাম স্থির করা হয়নি"
 
 # tihi
-#: ../libpurple/protocols/simple/simple.c:1928
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "SIP এর ব্যবহারকারী-নামগুলো ফাঁকা-জায়গা বা @ চিহ্ন ধারণ করতে পারে না"
 
-#: ../libpurple/protocols/simple/simple.c:1945
 msgid "SIP connect server not specified"
 msgstr "SIP সংযোগ সার্ভার সুনির্দিষ্ট নয়"
 
@@ -14077,172 +10036,151 @@
 #. *< id
 #. *< name
 #. *< version
-#: ../libpurple/protocols/simple/simple.c:2115
 msgid "SIP/SIMPLE Protocol Plugin"
 msgstr "SIP/সাধারণ প্রটোকল প্লাগইন"
 
 # tithi
 #. *  summary
-#: ../libpurple/protocols/simple/simple.c:2116
 msgid "The SIP/SIMPLE Protocol Plugin"
 msgstr "SIP/সাধারণ প্রটোকল প্লাগইন"
 
 # tithi
-#: ../libpurple/protocols/simple/simple.c:2144
 msgid "Publish status (note: everyone may watch you)"
 msgstr "প্রকাশ অবস্থা (নোট: আপনাকে সবাই পর্যবেক্ষণ করতে পারে)"
 
-#: ../libpurple/protocols/simple/simple.c:2150
 msgid "Use UDP"
 msgstr "UDP ব্যবহার করুন"
 
-#: ../libpurple/protocols/simple/simple.c:2152
 msgid "Use proxy"
 msgstr "প্রক্সি ব্যবহার করুন"
 
-#: ../libpurple/protocols/simple/simple.c:2154
 msgid "Proxy"
 msgstr "প্রক্সি"
 
-#: ../libpurple/protocols/simple/simple.c:2156
 msgid "Auth User"
 msgstr "স্বীকৃত ব্যবহারকারী"
 
-#: ../libpurple/protocols/simple/simple.c:2158
 msgid "Auth Domain"
 msgstr "স্বীকৃত ডোমেইন"
 
-#: ../libpurple/protocols/toc/toc.c:139
 #, c-format
 msgid "Looking up %s"
 msgstr "%s খোঁজা হচ্ছে"
 
-#: ../libpurple/protocols/toc/toc.c:148
 #, c-format
 msgid "Connect to %s failed"
 msgstr "%s-এর সাথে সংযোগ দিতে ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/toc/toc.c:201
 #, c-format
 msgid "Signon: %s"
 msgstr "সাইনঅন: %s"
 
-#: ../libpurple/protocols/toc/toc.c:488
 #, c-format
 msgid "Unable to write file %s."
 msgstr "%s ফাইলে লিখতে ব্যর্থ হয়েছে।"
 
-#: ../libpurple/protocols/toc/toc.c:491
 #, c-format
 msgid "Unable to read file %s."
 msgstr "%s ফাইলে পড়তে ব্যর্থ হয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:494
 #, c-format
 msgid "Message too long, last %s bytes truncated."
 msgstr "বার্তাটি খুব দীর্ঘ, শেষ %s বাইট বাদ দেয়া হয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:497
 #, c-format
 msgid "%s not currently logged in."
 msgstr "%s বর্তমানে লগইন নেই।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:500
 #, c-format
 msgid "Warning of %s not allowed."
 msgstr "%s এর সতর্কতা অনুমোদিত নয়।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:503
+#, c-format
 msgid "A message has been dropped, you are exceeding the server speed limit."
 msgstr "একটি বার্তা বাদ দেয়া হয়েছে, আপনি সার্ভারের গতি সীমা অতিক্রম করছেন।"
 
-#: ../libpurple/protocols/toc/toc.c:506
 #, c-format
 msgid "Chat in %s is not available."
 msgstr "%s-এ আড্ডা সহজলভ্য নয়।"
 
-#: ../libpurple/protocols/toc/toc.c:509
 #, c-format
 msgid "You are sending messages too fast to %s."
 msgstr "আপনি %s এ খুব দ্রুত বার্তা পাঠাচ্ছেন।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:512
 #, c-format
 msgid "You missed an IM from %s because it was too big."
 msgstr "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব বড় ছিল।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:515
 #, c-format
 msgid "You missed an IM from %s because it was sent too fast."
 msgstr "আপনি %s থেকে একটি তাৎক্ষণিক বার্তা পাননি কারণ এটি খুব দ্রুত পাঠানো হয়েছিল।"
 
-#: ../libpurple/protocols/toc/toc.c:518
+#, c-format
 msgid "Failure."
 msgstr "ব্যর্থতা।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:521
+#, c-format
 msgid "Too many matches."
 msgstr "অনেক বেশি মিল।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:524
+#, c-format
 msgid "Need more qualifiers."
 msgstr "আরও নিয়ন্ত্রণকারী প্রয়োজন।"
 
-#: ../libpurple/protocols/toc/toc.c:527
+#, c-format
 msgid "Dir service temporarily unavailable."
 msgstr "নির্দেশিকা সেবা সাময়িকভাবে অপ্রাপ্য"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:530
+#, c-format
 msgid "Email lookup restricted."
 msgstr "ই-মেইল অনুসন্ধান নিষিদ্ধ।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:533
+#, c-format
 msgid "Keyword ignored."
 msgstr "মূল-শব্দ অগ্রাহ্য করা হয়েছে।"
 
-#: ../libpurple/protocols/toc/toc.c:536
+#, c-format
 msgid "No keywords."
 msgstr "কোনো মূল-শব্দ নেই।"
 
-#: ../libpurple/protocols/toc/toc.c:539
+#, c-format
 msgid "User has no directory information."
 msgstr "ব্যবহারকারীর কোনো নির্দেশিকা তথ্য নেই।"
 
-#: ../libpurple/protocols/toc/toc.c:543
+#, c-format
 msgid "Country not supported."
 msgstr "দেশটি সমর্থিত নয়।"
 
-#: ../libpurple/protocols/toc/toc.c:546
 #, c-format
 msgid "Failure unknown: %s."
 msgstr "ব্যর্থতা অজানা: %s।"
 
-#: ../libpurple/protocols/toc/toc.c:549
+#, c-format
 msgid "Incorrect username or password."
 msgstr "ভুল ব্যবহারকারীর-নাম বা গুপ্তসংকেত।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:552
+#, c-format
 msgid "The service is temporarily unavailable."
 msgstr "সেবাটি সাময়িকভাবে অপ্রাপ্য।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:555
+#, c-format
 msgid "Your warning level is currently too high to log in."
 msgstr "আপনার সতর্কতা স্তর লগইন করার জন্য বর্তমানে খুব উচ্চ।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:558
+#, c-format
 msgid ""
 "You have been connecting and disconnecting too frequently.  Wait ten minutes "
 "and try again.  If you continue to try, you will need to wait even longer."
@@ -14251,86 +10189,68 @@
 "করুন। আপনি যদি চেষ্টা অব্যাহত রাখেন, আপনাকে দীর্ঘ সময় অপেক্ষা করতে হতে পারে।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:560
 #, c-format
 msgid "An unknown signon error has occurred: %s."
 msgstr "একটি অজানা সাইনঅন ত্রুটি সংঘটিত হয়েছে: %s।"
 
 #  tithi
-#: ../libpurple/protocols/toc/toc.c:563
 #, c-format
 msgid "An unknown error, %d, has occurred.  Info: %s"
 msgstr "একটি অজানা ত্রুটি, %d, সংঘটিত হয়েছে।  তথ্য: %s"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:590
 msgid "Invalid Groupname"
 msgstr "অবৈধ গ্রুপনাম"
 
-#: ../libpurple/protocols/toc/toc.c:674
 msgid "Connection Closed"
 msgstr "সংযোগ বন্ধ করা হয়েছে "
 
-#: ../libpurple/protocols/toc/toc.c:714
 msgid "Waiting for reply..."
 msgstr "উত্তরের অপেক্ষায়..."
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:792
 msgid "TOC has come back from its pause. You may now send messages again."
 msgstr "TOC পুনরায় সচল হয়েছে। আপনি এখন পুনরায় বার্তা পাঠাতে পারেন।"
 
-#: ../libpurple/protocols/toc/toc.c:995
 msgid "Password Change Successful"
 msgstr "গুপ্তসংকেত পরিবর্তন সফল হয়েছে"
 
-#: ../libpurple/protocols/toc/toc.c:1366 ../pidgin/gtkblist.c:6981
 msgid "_Group:"
 msgstr "গ্রুপ: (_G)"
 
-#: ../libpurple/protocols/toc/toc.c:1535
 msgid "Get Dir Info"
 msgstr "নির্দেশিকা তথ্য গ্রহণ করুন"
 
-#: ../libpurple/protocols/toc/toc.c:1675
 msgid "Set Dir Info"
 msgstr "নির্দেশিকা তথ্য নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:1797
 #, c-format
 msgid "Could not open %s for writing!"
 msgstr "লেখার জন্য %s খুলতে পারেনি!"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:1833
 msgid "File transfer failed; other side probably canceled."
 msgstr "ফাইল স্থানান্তর ব্যর্থ হয়েছে; অন্য দিক সম্ভবত বাতিল হয়েছে।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:1878 ../libpurple/protocols/toc/toc.c:1918
-#: ../libpurple/protocols/toc/toc.c:2042 ../libpurple/protocols/toc/toc.c:2130
 msgid "Could not connect for transfer."
 msgstr "স্থানান্তরের জন্য সংযোগ করতে পারেনি।"
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:2075
 msgid "Could not write file header.  The file will not be transferred."
 msgstr "ফাইল শিরোনাম লিখতে পারেনি।  ফাইল স্থানান্তর করা হবে না।"
 
-#: ../libpurple/protocols/toc/toc.c:2175
 msgid "Save As..."
 msgstr "এভাবে সংরক্ষণ করুন..."
 
 # tithi
-#: ../libpurple/protocols/toc/toc.c:2209
 #, c-format
 msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
 msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
 msgstr[0] " %1s %2s-কে  %3d ফাইলটি গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s"
 msgstr[1] "%1s %2s-কে %3d ফাইলসমূহ গ্রহণ করতে অনুরোধ করে: %4s (%.2f %5s)%6s%7s"
 
-#: ../libpurple/protocols/toc/toc.c:2216
 #, c-format
 msgid "%s requests you to send them a file"
 msgstr "%s আপনাকে একটি ফাইল পাঠাতে অনুরোধ করেছেন"
@@ -14345,28 +10265,23 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/toc/toc.c:2306 ../libpurple/protocols/toc/toc.c:2308
 msgid "TOC Protocol Plugin"
 msgstr "TOC প্রটোকল প্লাগইন"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:751
 #, c-format
 msgid "%s has sent you a webcam invite, which is not yet supported."
 msgstr "%s আপনাকে ওয়েবক্যাম আমন্ত্রন পাঠিয়েছেন, যা এখনও সমর্থিত নয়।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:810
 msgid "Your Yahoo! message did not get sent."
 msgstr "আপনার ইয়াহু! বার্তাটি পৌঁছায়নি।"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:923
 #, c-format
 msgid "Yahoo! system message for %s:"
 msgstr "%s-এর জন্য ইয়াহু! সিস্টেম বার্তা:"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:1015
 #, c-format
 msgid ""
 "%s has (retroactively) denied your request to add them to your list for the "
@@ -14376,17 +10291,14 @@
 "অনুরোধ বাতিল করেছে: %s।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:1018
 #, c-format
 msgid "%s has (retroactively) denied your request to add them to your list."
 msgstr "%s (আইনগতভাবে) আপনার তালিকাতে তাদের যোগ করতে আপনার অনুরোধ বাতিল করেছে।"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:1020
 msgid "Add buddy rejected"
 msgstr "বন্ধু যোগ প্রত্যাখ্যান করেছে"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2007
 #, c-format
 msgid ""
 "The Yahoo server has requested the use of an unrecognized authentication "
@@ -14397,11 +10309,9 @@
 "ইয়াহুতে সফলভাবে যুক্ত হতে পারবেন না।  হালনাগাদসমূহের জন্য %s পরীক্ষা করুন।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2011
 msgid "Failed Yahoo! Authentication"
 msgstr "ইয়াহু! প্রমাণীকরণ ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2091
 #, c-format
 msgid ""
 "You have tried to ignore %s, but the user is on your buddy list.  Clicking "
@@ -14410,53 +10320,38 @@
 "আপনি %s কে অগ্রাহ্য করতে চাচ্ছেন, কিন্তু ব্যবহারকারী আপনার বন্ধু তালিকায় রয়েছেন। "
 "\"হ্যাঁ\" ক্লিক করলে আপনার বন্ধু অপসারিত হবে এবং অগ্রাহ্য করা হবে।"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2094
 msgid "Ignore buddy?"
 msgstr "বন্ধু কি অগ্রাহ্য করবেন?"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2170
 msgid "Your account is locked, please log in to the Yahoo! website."
 msgstr "আপনার একাউন্ট বন্ধ, অনুগ্রহ করে ইয়াহু! ওয়েবসাইটে লগইন করুন।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2174
 #, c-format
 msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
 msgstr "অজানা ত্রুটি নাম্বার %d। ইয়াহু! ওয়েব সাইটে লগইন করলে হয়ত এটি ঠিক হতে পারে।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2227
 #, c-format
 msgid "Could not add buddy %s to group %s to the server list on account %s."
 msgstr "%3s একাউন্টের সার্ভার তালিকায় %2s গ্রুপে %1s বন্ধুকে যোগ করতে পারেনি।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2230
 msgid "Could not add buddy to server list"
 msgstr "সার্ভার তালিকায় বন্ধু যোগ করতে পারেনি।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:2352
 #, c-format
 msgid "[ Audible %s/%s/%s.swf ] %s"
 msgstr "[ শ্রবণযোগ্য %1s/%2s/%3s.swf ] %4s"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2708
 msgid "Received unexpected HTTP response from server."
 msgstr "সার্ভার থেকে অপ্রত্যাশিত এইচটিটিপি সাড়া পেয়েছে।"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2738
-#: ../libpurple/protocols/yahoo/yahoo.c:2926
-#: ../libpurple/protocols/yahoo/yahoo.c:3032
-#: ../libpurple/protocols/yahoo/yahoo.c:3043
-#: ../libpurple/protocols/yahoo/yahoochat.c:1525
-#: ../libpurple/protocols/yahoo/yahoochat.c:1595
-#: ../libpurple/protocols/yahoo/ycht.c:586
 msgid "Connection problem"
 msgstr "সংযোগ সমস্যা"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2764
 #, c-format
 msgid ""
 "Lost connection with %s:\n"
@@ -14465,7 +10360,6 @@
 "%1s এর সাথে সংযোগ হারিয়েছে:\n"
 "%2s"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:2789
 #, c-format
 msgid ""
 "Could not establish a connection with %s:\n"
@@ -14474,112 +10368,80 @@
 "%1s এর সাথে সংযোগ স্থাপন করতে পারেনি:\n"
 "%2s"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3159
-#: ../libpurple/protocols/yahoo/yahoo.c:3870
 msgid "Not at Home"
 msgstr "বাসায় নেই"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3161
-#: ../libpurple/protocols/yahoo/yahoo.c:3873
 msgid "Not at Desk"
 msgstr "ডেস্কে নেই"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3163
-#: ../libpurple/protocols/yahoo/yahoo.c:3876
 msgid "Not in Office"
 msgstr "অফিসে নেই"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3167
-#: ../libpurple/protocols/yahoo/yahoo.c:3882
 msgid "On Vacation"
 msgstr "ছুটিতে"
 
 # fix me tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3171
-#: ../libpurple/protocols/yahoo/yahoo.c:3888
 msgid "Stepped Out"
 msgstr "চলে গেছে"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3264
-#: ../libpurple/protocols/yahoo/yahoo.c:3294
 msgid "Not on server list"
 msgstr "সার্ভার তালিকায় নেই"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3311
-#: ../libpurple/protocols/yahoo/yahoo.c:3369
 msgid "Appear Online"
 msgstr "অনলাইনে আছেন"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3314
-#: ../libpurple/protocols/yahoo/yahoo.c:3390
 msgid "Appear Permanently Offline"
 msgstr "স্থায়ীভাবে অফলাইনে আছেন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3332
 msgid "Presence"
 msgstr "উপস্থিতি"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3375
 msgid "Appear Offline"
 msgstr "অফলাইনে উপস্থিত"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3384
 msgid "Don't Appear Permanently Offline"
 msgstr "অফলাইনে স্থায়ীভাবে থাকছে না"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3432
 msgid "Join in Chat"
 msgstr "আড্ডায় যোগ দিন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3438
 msgid "Initiate Conference"
 msgstr "আলোচনা সভা শুরু করুন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3466
 msgid "Presence Settings"
 msgstr "উপস্থিতির বিন্যাসনসমূহ"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:3472
 msgid "Start Doodling"
 msgstr "হিজিবিজি কাজ শুরু করুন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3580
 msgid "Activate which ID?"
 msgstr "কোন আইডি সক্রিয় করা হবে?"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3591
 msgid "Join whom in chat?"
 msgstr "কার সাথে আড্ডায় যোগ দিতে চান?"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3603
 msgid "Activate ID..."
 msgstr "আইডি সক্রিয় করুন..."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3607
 msgid "Join User in Chat..."
 msgstr "ব্যবহারকারীকে আড্ডায় যোগ করুন..."
 
-#: ../libpurple/protocols/yahoo/yahoo.c:3612
 msgid "Open Inbox"
 msgstr "ইনবক্স খুলুন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4233
 msgid "join &lt;room&gt;:  Join a chat room on the Yahoo network"
 msgstr "যোগ দিন &1lt;রুম&2gt;:  ইয়াহু নেটওয়ার্কের একটি আড্ডার রুমে যোগ দিন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4238
 msgid "list: List rooms on the Yahoo network"
 msgstr "তালিকা: ইয়াহু নেটওয়ার্কে রুমের তালিকা করুন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4246
 msgid "doodle: Request user to start a Doodle session"
 msgstr "হিজিবিজি: ব্যবহারকারীকে একটি হিজিবিজি অধিবেশন শুরু করতে অনুরোধ করুন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4355
 msgid "Yahoo ID..."
 msgstr "ইয়াহু আইডি..."
 
@@ -14593,90 +10455,66 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/yahoo/yahoo.c:4464
-#: ../libpurple/protocols/yahoo/yahoo.c:4466
 msgid "Yahoo Protocol Plugin"
 msgstr "ইয়াহু প্রটোকল প্লাগইন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4489
 msgid "Yahoo Japan"
 msgstr "ইয়াহু জাপান"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4492
 msgid "Pager server"
 msgstr "পেজার সার্ভার"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4495
 msgid "Japan Pager server"
 msgstr "জাপানী পেজার সার্ভার"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4498
 msgid "Pager port"
 msgstr "পেজার পোর্ট"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4501
 msgid "File transfer server"
 msgstr "ফাইল স্থানান্তর সার্ভার"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4504
 msgid "Japan file transfer server"
 msgstr "জাপান ফাইল স্থানান্তর সার্ভার"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4507
 msgid "File transfer port"
 msgstr "ফাইল স্থানান্তর পোর্ট"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4510
 msgid "Chat room locale"
 msgstr "আড্ডা রুমের অবস্থা"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo.c:4513
 msgid "Ignore conference and chatroom invitations"
 msgstr "আলোচনা সভা এবং আড্ডার-রুমের আমন্ত্রন অগ্রাহ্য করুন"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4521
 msgid "Chat room list URL"
 msgstr "আড্ডার রুম তালিকার ইউআরএল"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4524
 msgid "Yahoo Chat server"
 msgstr "ইয়াহু আড্ডা সার্ভার"
 
-#: ../libpurple/protocols/yahoo/yahoo.c:4527
 msgid "Yahoo Chat port"
 msgstr "ইয়াহু আড্ডার পোর্ট"
 
 #. Write a local message to this conversation showing that a request for a
 #. * Doodle session has been made
 #.
-#: ../libpurple/protocols/yahoo/yahoo_doodle.c:98
 msgid "Sent Doodle request."
 msgstr "হিজিবিজি অনুরোধ পাঠানো হয়েছে"
 
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:319
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:328
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:337
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1111
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1515
 msgid "Unable to establish file descriptor."
 msgstr "ফাইল বর্ণনাকারী স্থাপন করতে অক্ষম।"
 
-#: ../libpurple/protocols/yahoo/yahoo_filexfer.c:1410
 #, c-format
 msgid "%s is trying to send you a group of %d files.\n"
 msgstr "%s আপনাকে %d ফাইলের একটি গ্রুপ পাঠানোর চেষ্টা করছে।\n"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:798
 msgid "Yahoo! Japan Profile"
 msgstr "ইয়াহু! জাপান প্রোফাইল"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:799
 msgid "Yahoo! Profile"
 msgstr "ইয়াহু! প্রোফাইল"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:839
 msgid ""
 "Sorry, profiles marked as containing adult content are not supported at this "
 "time."
@@ -14685,7 +10523,6 @@
 "এখন সমর্থিত নয়।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:841
 msgid ""
 "If you wish to view this profile, you will need to visit this link in your "
 "web browser:"
@@ -14693,49 +10530,36 @@
 "আপনি যদি এই বৃত্তান্তটি দেখতে চান, আপনাকে আপনার ওয়েব ব্রাউজারের এই লিংকটি "
 "পরিদর্শন করতে হবে:"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1033
 msgid "Yahoo! ID"
 msgstr "ইয়াহু! আইডি"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1109
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1113
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1117
 msgid "Hobbies"
 msgstr "শখ"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1127
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1131
 msgid "Latest News"
 msgstr "সাম্প্রতিক খবর"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1152
 msgid "Home Page"
 msgstr "হোম পেজ"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1167
 msgid "Cool Link 1"
 msgstr "কুল লিংক ১"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1172
 msgid "Cool Link 2"
 msgstr "কুল লিংক ২"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1176
 msgid "Cool Link 3"
 msgstr "কুল লিংক ৩"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1190
 msgid "Last Update"
 msgstr "সর্বশেষ পরিবর্ধন"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1203
 msgid ""
 "This profile is in a language or format that is not supported at this time."
 msgstr "এই বৃত্তান্তটি এমন একটি ভাষায় বা বিন্যাসে যা এখন সমর্থিত নয়।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1218
 msgid ""
 "Could not retrieve the user's profile. This most likely is a temporary "
 "server-side problem. Please try again later."
@@ -14743,7 +10567,6 @@
 "ব্যবহারকারীর বৃত্তান্ত উদ্ধার করতে পারনি। এটি সম্ভাবত একটি অস্থায়ী সার্ভার-পার্শ্বের "
 "সমস্যা। অনুগ্রহ করে পরবর্তীতে আবার চেষ্টা করুন।"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1221
 msgid ""
 "Could not retrieve the user's profile. This most likely means that the user "
 "does not exist; however, Yahoo! sometimes does fail to find a user's "
@@ -14753,42 +10576,34 @@
 "নেই; যাই হোক, ইয়্যাহু! কখনোও ব্যবহারকারীর বৃত্তান্ত খুঁজে পেতে ব্যর্থ হয়। আপনি যদি "
 "জানেন যে ব্যবহারকারী বিদ্যমান, অনুগ্রহ করে পরবর্তীতে আবার চেষ্টা করুন।"
 
-#: ../libpurple/protocols/yahoo/yahoo_profile.c:1227
 msgid "The user's profile is empty."
 msgstr "ব্যবহারকারীর প্রোফাইল ফাঁকা।"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoochat.c:222
 #, c-format
 msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
 msgstr ""
 "\"%3s\" এর কারণে %1s \"%2s\" রুমে আপনার আলোচনা সভার আমন্ত্রণ অস্বীকার করেছেন।"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:224
 msgid "Invitation Rejected"
 msgstr "আমন্ত্রন প্রত্যাখ্যান করা হয়েছে"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:443
 msgid "Failed to join chat"
 msgstr "আড্ডায় যোগ দিতে ব্যর্থ"
 
 #. -6
-#: ../libpurple/protocols/yahoo/yahoochat.c:446
 msgid "Unknown room"
 msgstr "অজানা রুম"
 
 #. -15
-#: ../libpurple/protocols/yahoo/yahoochat.c:449
 msgid "Maybe the room is full"
 msgstr "সম্ভবত রুমটি পূর্ণ"
 
 #. -35
-#: ../libpurple/protocols/yahoo/yahoochat.c:452
 msgid "Not available"
 msgstr "বিদ্যমান নেই"
 
 # tithi
-#: ../libpurple/protocols/yahoo/yahoochat.c:456
 msgid ""
 "Unknown error. You may need to logout and wait five minutes before being "
 "able to rejoin a chatroom"
@@ -14796,47 +10611,35 @@
 "অজানা ত্রুটি। একটি আড্ডা-রুমে পুনরায় যোগদানের পূর্বে আপনাকে সম্ভবত লগ আউট করতে হবে "
 "এবং পাঁচ মিনিট অপেক্ষা করতে হবে।"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:539
 #, c-format
 msgid "You are now chatting in %s."
 msgstr "আপনি এখন %s-এ আড্ডা দিচ্ছেন।"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:728
 msgid "Failed to join buddy in chat"
 msgstr "বন্ধুকে আড্ডায় অংশগ্রহন করাতে ব্যর্থ হয়েছে"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:729
 msgid "Maybe they're not in a chat?"
 msgstr "সম্ভবত তারা আড্ডায় নেই?"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:1425
-#: ../libpurple/protocols/yahoo/yahoochat.c:1451
 msgid "Fetching the room list failed."
 msgstr "রুমের তালিকা খুঁজতে ব্যর্থ হয়েছে।"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:1511
 msgid "Voices"
 msgstr "কন্ঠস্বরসমূহ"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:1514
 msgid "Webcams"
 msgstr "ওয়েবক্যামসমূহ"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:1525
-#: ../libpurple/protocols/yahoo/yahoochat.c:1595
 msgid "Unable to fetch room list."
 msgstr "রুমের তালিকা খুঁজতে অক্ষম।"
 
-#: ../libpurple/protocols/yahoo/yahoochat.c:1588
 msgid "User Rooms"
 msgstr "ব্যবহারকারীর রুম"
 
 # tithi
-#: ../libpurple/protocols/yahoo/ycht.c:457
 msgid "Connection problem with the YCHT server."
 msgstr "YCHT সার্ভারের সাথে সংযোগে সমস্যা।"
 
-#: ../libpurple/protocols/yahoo/ycht.c:476
 #, c-format
 msgid ""
 "Lost connection with server\n"
@@ -14845,7 +10648,6 @@
 "সার্ভারের সাথে সংযোগ হারিয়েছে\n"
 "%s"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:357
 msgid ""
 "(There was an error converting this message.\t Check the 'Encoding' option "
 "in the Account Editor)"
@@ -14853,87 +10655,68 @@
 "(এই বার্তাটি রুপান্তরে একটি ত্রুটি ছিল।                      একাউন্ট সম্পাদকে "
 "'সঙ্কেতায়ন' পছন্দ পরীক্ষা করুন)"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:755
 #, c-format
 msgid "Unable to send to chat %s,%s,%s"
 msgstr "%1s,%2s,%3s আড্ডায় পাঠাতে সমর্থ নয়।"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:794
-#: ../libpurple/protocols/zephyr/zephyr.c:1173
 msgid "Hidden or not logged-in"
 msgstr "লুকানো বা লগইন অবস্থায় নেই"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:800
-#: ../libpurple/protocols/zephyr/zephyr.c:1175
 #, c-format
 msgid "<br>At %s since %s"
 msgstr "<br>%s হতে %s এ"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:1513
-#: ../libpurple/protocols/zephyr/zephyr.c:1514
 msgid "Anyone"
 msgstr "যে কেউ"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:2375
 msgid "_Class:"
 msgstr "শ্রেণী: (_C)"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2381
 msgid "_Instance:"
 msgstr "ঘটনা: (_I)"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:2387
 msgid "_Recipient:"
 msgstr "প্রাপক: (_R)"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2398
 #, c-format
 msgid "Attempt to subscribe to %s,%s,%s failed"
 msgstr "%1s,%2s,%3s এর গ্রাহক হবার চেষ্টা ব্যর্থ হয়েছে"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2711
 msgid "zlocate &lt;nick&gt;: Locate user"
 msgstr "z-নির্দেশ করুন &1lt;ডাকনাম&2gt;: ব্যবহারকারী নির্দেশ করুন"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2716
 msgid "zl &lt;nick&gt;: Locate user"
 msgstr "zl &lt;ডাকনাম&gt;: ব্যবহারকারী নির্দেশ করুন"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2721
 msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
 msgstr "দৃষ্টান্ত &1lt;দৃষ্টান্ত&2gt;: এই শ্রেনীতে ব্যবহারের জন্য দৃষ্টান্ত নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2726
 msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
 msgstr "দৃষ্টান্ত &1lt;দৃষ্টান্ত&2gt;: এই শ্রেণীতে ব্যবহারের জন্য দৃষ্টান্ত নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2731
 msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
 msgstr "বিষয়বস্তু &1lt;দৃষ্টান্ত&2gt;: এই শ্রেণীতে ব্যবহারের জন্য দৃষ্টান্ত নির্ধারণ করুন"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2737
 msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
 msgstr ""
 "বিষয় &1lt;শ্রেণী&2gt; &3lt;দৃষ্টান্ত&4gt; &5lt;প্রাপক&6gt;: একটি নতুন আড্ডায় "
 "অংশগ্রহন করুন"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2742
 msgid ""
 "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
 msgstr "zi &1lt;দৃষ্টান্ত&2gt;; একটি বার্তা পাঠান &3It;বার্তা,<i>দৃষ্টান্ত</i>,*&4gt;"
 
 # fix-me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2748
 msgid ""
 "zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
 "<i>instance</i>,*&gt;"
@@ -14942,7 +10725,6 @@
 "<i>দৃষ্টান্ত</i>,*&6gt;"
 
 # fix-me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2754
 msgid ""
 "zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
 "<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
@@ -14951,7 +10733,6 @@
 "<i>শ্রেণী</i>,<i>দৃষ্টান্ত</i>,<i>প্রাপক</i>&8gt;"
 
 # fix-me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2760
 msgid ""
 "zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
 "<i>instance</i>,<i>recipient</i>&gt;"
@@ -14960,16 +10741,13 @@
 "i>,<i>প্রাপক</i>&6gt;"
 
 # fix-me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2765
 msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
 msgstr "zc &1lt;শ্রেণী&2gt;: একটি বার্তা পাঠান &3lt;<i>শ্রেণী</i>,ব্যক্তিগত,*&4gt;"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:2841
 msgid "Resubscribe"
 msgstr "পুনরায় গ্রাহক হোন"
 
 # fix me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2844
 msgid "Retrieve subscriptions from server"
 msgstr "সার্ভার থেকে শেয়ারসমূহ উদ্ধার করুন"
 
@@ -14984,49 +10762,37 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../libpurple/protocols/zephyr/zephyr.c:2937
-#: ../libpurple/protocols/zephyr/zephyr.c:2939
 msgid "Zephyr Protocol Plugin"
 msgstr "Zephyr প্রটোকল প্লাগইন"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:2964
 msgid "Use tzc"
 msgstr "tzc ব্যবহার করুন"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:2967
 msgid "tzc command"
 msgstr "tzc নির্দেশ"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2970
 msgid "Export to .anyone"
 msgstr ".যেকারও কাছে রপ্তানি করুন"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:2973
 msgid "Export to .zephyr.subs"
 msgstr ".zephyr.subs এ রপ্তানি করুন"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2976
 msgid "Import from .anyone"
 msgstr ".যেকারও কাছ থেকে আমদানি করুন"
 
 # fix me tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2979
 msgid "Import from .zephyr.subs"
 msgstr ".zephyr.subs থেকে আমদানি করুন"
 
-#: ../libpurple/protocols/zephyr/zephyr.c:2982
 msgid "Realm"
 msgstr "এলাকা"
 
 # tithi
-#: ../libpurple/protocols/zephyr/zephyr.c:2985
 msgid "Exposure"
 msgstr "অনাবৃতকরণ"
 
-#: ../libpurple/proxy.c:680 ../libpurple/proxy.c:1121
-#: ../libpurple/proxy.c:1256 ../libpurple/proxy.c:1916
 #, c-format
 msgid ""
 "Unable to create socket:\n"
@@ -15035,39 +10801,32 @@
 "সকেট তৈরী করতে ব্যর্থ:\n"
 "%s"
 
-#: ../libpurple/proxy.c:875
 #, c-format
 msgid "Unable to parse response from HTTP proxy: %s\n"
 msgstr "HTTP প্রক্সি থেকে সাড়া গ্রহণ করতে অক্ষম: %s\n"
 
-#: ../libpurple/proxy.c:908 ../libpurple/proxy.c:970 ../libpurple/proxy.c:999
 #, c-format
 msgid "HTTP proxy connection error %d"
 msgstr "এইচটিটিপি প্রক্সি সংযোগের %d ত্রুটি"
 
 # tithi
-#: ../libpurple/proxy.c:995
 #, c-format
 msgid "Access denied: HTTP proxy server forbids port %d tunneling."
 msgstr "অনুমতি বাতিল: HTTP প্রক্সি সার্ভার %d পোর্ট টানেলকরণে বাধা দেয়।"
 
-#: ../libpurple/proxy.c:1217
 #, c-format
 msgid "Error resolving %s"
 msgstr "%s স্থিরকরণে ত্রুটি"
 
-#: ../libpurple/proxy.c:2022
 msgid "Could not resolve host name"
 msgstr "হোস্টের নাম স্থির করা হয়নি"
 
 # tithi
-#: ../libpurple/prpl.c:426
 #, c-format
 msgid "Requesting %s's attention..."
 msgstr "%s এর মনোযোগ কামনা করছে..."
 
 # tithi
-#: ../libpurple/prpl.c:471
 #, c-format
 msgid "%s has requested your attention!"
 msgstr "%s আপনার মনযোগ কামনা করেছে!"
@@ -15075,38 +10834,31 @@
 #. *
 #. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
 #.
-#: ../libpurple/request.h:1391 ../pidgin/gtkblist.c:554
 msgid "_Yes"
 msgstr "হ্যাঁ (_Y)"
 
-#: ../libpurple/request.h:1391 ../pidgin/gtkblist.c:554
 msgid "_No"
 msgstr "না (_N)"
 
 #. *
 #. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
 #.
-#: ../libpurple/request.h:1411
 msgid "_Accept"
 msgstr "গ্রহণ করুন (_A)"
 
 #. *
 #. * The default message to use when the user becomes auto-away.
 #.
-#: ../libpurple/savedstatuses.c:48
 msgid "I'm not here right now"
 msgstr "এই মুহুর্তে আমি এখানে নেই"
 
-#: ../libpurple/savedstatuses.c:537
 msgid "saved statuses"
 msgstr "সংরক্ষিত অবস্থাসমূহ"
 
-#: ../libpurple/server.c:267
 #, c-format
 msgid "%s is now known as %s.\n"
 msgstr "%1s এখন %2s নামে পরিচিত।\n"
 
-#: ../libpurple/server.c:834
 #, c-format
 msgid ""
 "%s has invited %s to the chat room %s:\n"
@@ -15115,105 +10867,82 @@
 "%1s %2s কে %3s আড্ডার রুমে আমন্ত্রন জানিয়েছেন:\n"
 "%4s"
 
-#: ../libpurple/server.c:839
 #, c-format
 msgid "%s has invited %s to the chat room %s\n"
 msgstr "%1s %2s কে %3s আড্ডার রুমে আমন্ত্রন জানিয়েছেন\n"
 
-#: ../libpurple/server.c:843
 msgid "Accept chat invitation?"
 msgstr "আড্ডার আমন্ত্রন কি গ্রহণ করবেন?"
 
 #. Shortcut
-#: ../libpurple/smiley.c:411 ../pidgin/gtksmiley.c:525
 msgid "Shortcut"
 msgstr "শর্টকাট"
 
-#: ../libpurple/smiley.c:412
 msgid "The text-shortcut for the smiley"
 msgstr "স্মাইলির জন্য পাঠ-শর্টকাট"
 
 #. Stored Image
-#: ../libpurple/smiley.c:418
 msgid "Stored Image"
 msgstr "সংরক্ষিত ছবি"
 
 # tithi
-#: ../libpurple/smiley.c:419
 msgid "Stored Image. (that'll have to do for now)"
 msgstr "সংরক্ষিত ছবি। (ঐটি এই সময়ের জন্য করতে হবে)"
 
-#: ../libpurple/sslconn.c:167
 msgid "SSL Connection Failed"
 msgstr "SSL সংযোগ ব্যর্থ হয়েছে"
 
-#: ../libpurple/sslconn.c:169
 msgid "SSL Handshake Failed"
 msgstr "SSL হ্যান্ডশেক ব্যর্থ হয়েছে"
 
 # tithi
-#: ../libpurple/sslconn.c:171
 msgid "SSL peer presented an invalid certificate"
 msgstr "SSL যুগল একটি অবৈধ প্রত্যয়নপত্র উপস্থাপন করেছিল"
 
-#: ../libpurple/sslconn.c:174
 msgid "Unknown SSL error"
 msgstr "অজানা SSL ত্রুটি"
 
-#: ../libpurple/status.c:158
 msgid "Unset"
 msgstr "অনির্ধারণ করুন"
 
-#: ../libpurple/status.c:161 ../pidgin/gtkdocklet.c:553
-#: ../pidgin/gtkstatusbox.c:1097
 msgid "Do not disturb"
 msgstr "বিরক্ত করবেন না"
 
 # fix me tithi
-#: ../libpurple/status.c:164
 msgid "Extended away"
 msgstr "অনেক বর্ধিত"
 
-#: ../libpurple/status.c:165
 msgid "Mobile"
 msgstr "মোবাইল"
 
 # tithi
-#: ../libpurple/status.c:166
 msgid "Listening to music"
 msgstr "গান শুনছে"
 
-#: ../libpurple/status.c:615
 #, c-format
 msgid "%s (%s) changed status from %s to %s"
 msgstr "%1s (%2s) অবস্থা %4s থেকে %3s তে পরিবর্তন করেছে"
 
-#: ../libpurple/status.c:626
 #, c-format
 msgid "%s (%s) is now %s"
 msgstr "%1s (%2s) এখন %3s"
 
-#: ../libpurple/status.c:632
 #, c-format
 msgid "%s (%s) is no longer %s"
 msgstr "%1s (%2s) আর %3s থাকবে না"
 
-#: ../libpurple/status.c:1247
 #, c-format
 msgid "%s became idle"
 msgstr "%s এখন অলস"
 
-#: ../libpurple/status.c:1267
 #, c-format
 msgid "%s became unidle"
 msgstr "%s এখন অলস নয়"
 
-#: ../libpurple/status.c:1333
 #, c-format
 msgid "+++ %s became idle"
 msgstr "+++ %s অলস হয়েছে"
 
-#: ../libpurple/status.c:1335
 #, c-format
 msgid "+++ %s became unidle"
 msgstr "+++ %s অলস হয়নি"
@@ -15224,18 +10953,15 @@
 #. * change this to "%X %x" if they want the time to be shown first,
 #. * followed by the date.
 #.
-#: ../libpurple/util.c:730
 #, c-format
 msgid "%x %X"
 msgstr "%x %X"
 
-#: ../libpurple/util.c:2829
 #, c-format
 msgid "Error Reading %s"
 msgstr "%s পড়ায় ত্রুটি"
 
 # tithi
-#: ../libpurple/util.c:2830
 #, c-format
 msgid ""
 "An error was encountered reading your %s.  They have not been loaded, and "
@@ -15244,50 +10970,42 @@
 "আপনার %s পড়ার সময় একটি ত্রুটির বাধা দেয়েছিল।  তাদেরকে লোড করা হয়নি, এবং পুরনো "
 "ফাইলটি %s~ এ নামান্তর করা হয়েছে।"
 
-#: ../libpurple/util.c:3338
 msgid "Calculating..."
 msgstr "গননা করা হচ্ছে..."
 
-#: ../libpurple/util.c:3341
 msgid "Unknown."
 msgstr "অজানা।"
 
-#: ../libpurple/util.c:3367
 #, c-format
 msgid "%d second"
 msgid_plural "%d seconds"
 msgstr[0] "%d সেকেন্ড"
 msgstr[1] "%d সেকেন্ড"
 
-#: ../libpurple/util.c:3379
 #, c-format
 msgid "%d day"
 msgid_plural "%d days"
 msgstr[0] "%d দিন"
 msgstr[1] "%d গুলো দিন"
 
-#: ../libpurple/util.c:3387
 #, c-format
 msgid "%s, %d hour"
 msgid_plural "%s, %d hours"
 msgstr[0] "%s, %d ঘন্টা"
 msgstr[1] "%s, %d গুলো ঘন্টা"
 
-#: ../libpurple/util.c:3393
 #, c-format
 msgid "%d hour"
 msgid_plural "%d hours"
 msgstr[0] "%d ঘন্টা"
 msgstr[1] "%d গুলো ঘন্টা"
 
-#: ../libpurple/util.c:3401
 #, c-format
 msgid "%s, %d minute"
 msgid_plural "%s, %d minutes"
 msgstr[0] "%s, %d মিনিট"
 msgstr[1] "%s, %d গুলো মিনিট"
 
-#: ../libpurple/util.c:3407
 #, c-format
 msgid "%d minute"
 msgid_plural "%d minutes"
@@ -15295,23 +11013,19 @@
 msgstr[1] "%d গুলো মিনিট"
 
 # tithi
-#: ../libpurple/util.c:3678
 #, c-format
 msgid "Could not open %s: Redirected too many times"
 msgstr "%s খুলতে পারেনি: অনেকবার পুনঃনির্দেশ করা হয়েছে"
 
-#: ../libpurple/util.c:3728 ../libpurple/util.c:4105
 #, c-format
 msgid "Unable to connect to %s"
 msgstr "%s এ সংযোগ দিতে ব্যর্থ হয়েছে"
 
-#: ../libpurple/util.c:3796
 #, c-format
 msgid "Error reading from %s: response too long (%d bytes limit)"
 msgstr "%s থেকে পড়ায় ত্রুটি: প্রতিউত্তর অনেক দীর্ঘ্য (%d বাইটের সীমা)"
 
 # fix-me tithi
-#: ../libpurple/util.c:3864
 #, c-format
 msgid ""
 "Unable to allocate enough memory to hold the contents from %s.  The web "
@@ -15320,147 +11034,121 @@
 "%s এর উপাদানসমূহ ধারণ করার মতো যথেষ্ট মেমোরি বরাদ্দ করতে অক্ষম।  ওয়েব সার্ভার "
 "বিদ্বেষপরায়ণ কিছু করার চেষ্টা করতে পারে।"
 
-#: ../libpurple/util.c:3899
 #, c-format
 msgid "Error reading from %s: %s"
 msgstr "%1s থেকে পড়ায় ত্রুটি: %2s"
 
-#: ../libpurple/util.c:3983
 #, c-format
 msgid "Error writing to %s: %s"
 msgstr "%1s এ লেখায় ত্রুটি: %2s"
 
-#: ../libpurple/util.c:4014 ../libpurple/util.c:4044
 #, c-format
 msgid "Unable to connect to %s: %s"
 msgstr "%1s এর সাথে সংযোগে ব্যর্থ: %2s"
 
 # tithi
-#: ../libpurple/util.c:4860
 #, c-format
 msgid " - %s"
 msgstr " - %s"
 
-#: ../libpurple/util.c:4866
 #, c-format
 msgid " (%s)"
 msgstr " (%s)"
 
 # tithi
 #. 10053
-#: ../libpurple/win32/libc_interface.c:319
+#, c-format
 msgid "Connection interrupted by other software on your computer."
 msgstr "আপনার কম্পিউটারের অন্য সফটওয়্য়ার দ্বারা সংয়োগ বাধাগ্রস্থ হয়েছে। "
 
 #. 10054
-#: ../libpurple/win32/libc_interface.c:322
+#, c-format
 msgid "Remote host closed connection."
 msgstr "দূরবর্তী হোস্ট সংযোগ বন্ধ করেছে।"
 
 # fix me tithi
 #. 10060
-#: ../libpurple/win32/libc_interface.c:325
+#, c-format
 msgid "Connection timed out."
 msgstr "সংযোগ সময় উত্তীর্ণ হয়েছে।"
 
 #. 10061
-#: ../libpurple/win32/libc_interface.c:328
+#, c-format
 msgid "Connection refused."
 msgstr "সংযোগে প্রত্যাখান করা হয়েছে"
 
 #. 10048
-#: ../libpurple/win32/libc_interface.c:331
+#, c-format
 msgid "Address already in use."
 msgstr "ঠিকানাটি ইতোমধ্যে ব্যবহৃত হচ্ছে।"
 
-#: ../pidgin.desktop.in.h:1
 msgid "Internet Messenger"
 msgstr "ইন্টারনেট বার্তাবাহক"
 
-#: ../pidgin.desktop.in.h:2
 msgid "Pidgin Internet Messenger"
 msgstr "পিজিন ইন্টারনেট বার্তাবাহক"
 
 # tithi
-#: ../pidgin.desktop.in.h:3
 msgid "Send instant messages over multiple protocols"
 msgstr "বহুবিধ প্রটোকল দিয়ে তাৎক্ষনিক বার্তাসমূহ প্রেরণ করুন"
 
-#: ../pidgin/eggtrayicon.c:128
 msgid "Orientation"
 msgstr "পরিচিতি পর্ব"
 
-#: ../pidgin/eggtrayicon.c:129
 msgid "The orientation of the tray."
 msgstr "ট্রে প্রদর্শনের ধরন"
 
 #. Build the login options frame.
-#: ../pidgin/gtkaccount.c:419
 msgid "Login Options"
 msgstr "লগইনের পছন্দসমূহ"
 
-#: ../pidgin/gtkaccount.c:440
 msgid "Pro_tocol:"
 msgstr "প্রটোকল (_t):"
 
-#: ../pidgin/gtkaccount.c:451 ../pidgin/gtkaccount.c:1090
 msgid "_Username:"
 msgstr "ব্যবহারকারীরনাম (_U):"
 
-#: ../pidgin/gtkaccount.c:558
 msgid "Remember pass_word"
 msgstr "গুপ্তসংকেত স্মরণ রাখুন (_w)"
 
 #. Build the user options frame.
-#: ../pidgin/gtkaccount.c:613
 msgid "User Options"
 msgstr "ব্যবহারকারীর পছন্দসমূহ"
 
-#: ../pidgin/gtkaccount.c:626
 msgid "_Local alias:"
 msgstr "স্থানীয় ডাকনাম (_L):"
 
-#: ../pidgin/gtkaccount.c:630
 msgid "New _mail notifications"
 msgstr "নতুন মেইলের প্রজ্ঞাপন (_m)"
 
 # tithi
 #. Buddy icon
-#: ../pidgin/gtkaccount.c:635
 msgid "Use this buddy _icon for this account:"
 msgstr "এই একাউন্টের জন্য এই বন্ধু আইকন ব্যবহার করুন (_i):"
 
 #. Build the protocol options frame.
-#: ../pidgin/gtkaccount.c:763
 #, c-format
 msgid "%s Options"
 msgstr "%s পছন্দসমূহ"
 
-#: ../pidgin/gtkaccount.c:961
 msgid "Use GNOME Proxy Settings"
 msgstr "GNOME প্রক্সি বিন্যাসনসমূহ ব্যবহার করুন"
 
-#: ../pidgin/gtkaccount.c:962
 msgid "Use Global Proxy Settings"
 msgstr "সর্বজনীন প্রক্সি বিন্যাসনসমূহ ব্যবহার করুন"
 
-#: ../pidgin/gtkaccount.c:968
 msgid "No Proxy"
 msgstr "প্রক্সি নেই"
 
-#: ../pidgin/gtkaccount.c:974
 msgid "HTTP"
 msgstr "HTTP"
 
-#: ../pidgin/gtkaccount.c:980
 msgid "SOCKS 4"
 msgstr "SOCKS ৪"
 
-#: ../pidgin/gtkaccount.c:986
 msgid "SOCKS 5"
 msgstr "SOCKS ৫"
 
-#: ../pidgin/gtkaccount.c:992 ../pidgin/gtkprefs.c:1337
 msgid "Use Environmental Settings"
 msgstr "পারিপার্শ্বিক বিন্যাসনসমূহ ব্যবহার করুন"
 
@@ -15469,72 +11157,55 @@
 #. A) your network is really slow and you have nothing better to do than
 #. look at butterflies.
 #. B)You are looking really closely at something that shouldn't matter.
-#: ../pidgin/gtkaccount.c:1031
 msgid "If you look real closely"
 msgstr "আপনি যদি খুব ভালভাবে দেখেন"
 
 #. This is an easter egg. See the comment on the previous line in the source.
-#: ../pidgin/gtkaccount.c:1034
 msgid "you can see the butterflies mating"
 msgstr "আপনি প্রজাপতিদের সঙ্গী দেখতে পাবেন"
 
-#: ../pidgin/gtkaccount.c:1055
 msgid "Proxy Options"
 msgstr "প্রক্সির পছন্দসমূহ"
 
-#: ../pidgin/gtkaccount.c:1069 ../pidgin/gtkprefs.c:1331
 msgid "Proxy _type:"
 msgstr "প্রক্সির ধরন (_t):"
 
-#: ../pidgin/gtkaccount.c:1078 ../pidgin/gtkprefs.c:1352
 msgid "_Host:"
 msgstr "হোস্ট (_H):"
 
-#: ../pidgin/gtkaccount.c:1082 ../pidgin/gtkprefs.c:1370
 msgid "_Port:"
 msgstr "পোর্ট (_P):"
 
-#: ../pidgin/gtkaccount.c:1097 ../pidgin/gtkprefs.c:1407
 msgid "Pa_ssword:"
 msgstr "গুপ্তসংকেত (_s):"
 
-#: ../pidgin/gtkaccount.c:1221
 msgid "Unable to save new account"
 msgstr "নতুন একাউন্ট সংরক্ষণে অক্ষম"
 
 # tithi
-#: ../pidgin/gtkaccount.c:1222
 msgid "An account already exists with the specified criteria."
 msgstr "উল্লেখিত বৈশিষ্ট্যের একটি একাউন্ট ইতিমধ্যে বিদ্যমান।"
 
-#: ../pidgin/gtkaccount.c:1498
 msgid "Add Account"
 msgstr "একাউন্ট যোগ করুন"
 
-#: ../pidgin/gtkaccount.c:1515
 msgid "_Basic"
 msgstr "মৌলিক (_B)"
 
 # tithi
-#: ../pidgin/gtkaccount.c:1523
 msgid "Create _this new account on the server"
 msgstr "সার্ভারে এই নতুন একাউন্টটি তৈরী করুন (_t)"
 
-#: ../pidgin/gtkaccount.c:1537
 msgid "_Advanced"
 msgstr "অগ্রগামী (_A)"
 
-#: ../pidgin/gtkaccount.c:1930 ../pidgin/gtkplugin.c:757
-#: ../pidgin/plugins/convcolors.c:327
 msgid "Enabled"
 msgstr "সক্রিয়"
 
-#: ../pidgin/gtkaccount.c:1958
 msgid "Protocol"
 msgstr "প্রটোকল"
 
 # tithi
-#: ../pidgin/gtkaccount.c:2154
 #, c-format
 msgid ""
 "<span size='larger' weight='bold'>Welcome to %s!</span>\n"
@@ -15559,7 +11230,6 @@
 "মুছে ফেলতে পারেন"
 
 # tithi
-#: ../pidgin/gtkblist.c:551
 #, c-format
 msgid "You have %d contact named %s. Would you like to merge them?"
 msgid_plural ""
@@ -15568,7 +11238,6 @@
 msgstr[1] ""
 "আপনার বর্তমানে %1dগুলো %2s নামের যোগাযোগ আছে। আপনি কি তাদের একত্রিত করতে চান?"
 
-#: ../pidgin/gtkblist.c:552
 msgid ""
 "Merging these contacts will cause them to share a single entry on the buddy "
 "list and use a single conversation window. You can separate them again by "
@@ -15579,132 +11248,95 @@
 "'প্রসারন' পছন্দ করার মাধ্যমে তাদেরকে পুনরায় আলাদা করতে পারেন"
 
 # tithi
-#: ../pidgin/gtkblist.c:685
 msgid "Please update the necessary fields."
 msgstr "অনুগ্রহ করে প্রয়োজনীয় ক্ষেত্রগুলো হালনাগাদ করুন।"
 
-#: ../pidgin/gtkblist.c:1040 ../pidgin/gtkblist.c:6928
 msgid "Room _List"
 msgstr "রুমের তালিকা (_L)"
 
-#: ../pidgin/gtkblist.c:1060
 msgid ""
 "Please enter the appropriate information about the chat you would like to "
 "join.\n"
 msgstr ""
 "অনুগ্রহ করে আপনি যে আড্ডায় যোগ দিতে চান তার সম্পর্কে যথাযথ তথ্য প্রবেশ করান।\n"
 
-#: ../pidgin/gtkblist.c:1072 ../pidgin/gtkblist.c:6963
-#: ../pidgin/gtkpounce.c:560 ../pidgin/gtkroomlist.c:540
 msgid "_Account:"
 msgstr "একাউন্ট (_A):"
 
-#: ../pidgin/gtkblist.c:1351 ../pidgin/gtkprivacy.c:549
-#: ../pidgin/gtkprivacy.c:563
 msgid "_Block"
 msgstr "ব্লক করুন (_B)"
 
-#: ../pidgin/gtkblist.c:1351
 msgid "Un_block"
 msgstr "ব্লক সরান (_b)"
 
 # tithi
-#: ../pidgin/gtkblist.c:1394
 msgid "Move to"
 msgstr "সরান"
 
-#: ../pidgin/gtkblist.c:1434
 msgid "Get _Info"
 msgstr "তথ্য সংগ্রহ করুন (_I)"
 
-#: ../pidgin/gtkblist.c:1437 ../pidgin/pidginstock.c:91
 msgid "I_M"
 msgstr "আইএম (_M)"
 
-#: ../pidgin/gtkblist.c:1443
 msgid "_Send File..."
 msgstr "ফাইল পাঠান... (_S)"
 
-#: ../pidgin/gtkblist.c:1450
 msgid "Add Buddy _Pounce..."
 msgstr "বন্ধু পাউন্স যোগ করুন... (_P)"
 
-#: ../pidgin/gtkblist.c:1455 ../pidgin/gtkblist.c:1459
-#: ../pidgin/gtkblist.c:1622 ../pidgin/gtkblist.c:1649
 msgid "View _Log"
 msgstr "লগ প্রদর্শন করুন (_L)"
 
-#: ../pidgin/gtkblist.c:1465 ../pidgin/gtkblist.c:1594
 msgid "Hide when offline"
 msgstr "অফলাইনে থাকলে লুকিয়ে রাখুন"
 
-#: ../pidgin/gtkblist.c:1479 ../pidgin/gtkblist.c:1488
-#: ../pidgin/gtkblist.c:1632 ../pidgin/gtkblist.c:1655
 msgid "_Alias..."
 msgstr "উপনাম... (_A)"
 
-#: ../pidgin/gtkblist.c:1482 ../pidgin/gtkblist.c:1490
-#: ../pidgin/gtkblist.c:1634 ../pidgin/gtkblist.c:1657
 msgid "_Remove"
 msgstr "অপসারণ করুন (_R)"
 
-#: ../pidgin/gtkblist.c:1564
 msgid "Set Custom Icon"
 msgstr "পছন্দসই আইকন নির্ধারণ করুন"
 
-#: ../pidgin/gtkblist.c:1568 ../pidgin/gtkconv.c:2952
 msgid "Remove Custom Icon"
 msgstr "পছন্দসই আইকন অপসারণ করুন"
 
-#: ../pidgin/gtkblist.c:1582
 msgid "Add _Buddy..."
 msgstr "বন্ধু যোগ করুন... (_B)"
 
-#: ../pidgin/gtkblist.c:1585
 msgid "Add C_hat..."
 msgstr "আড্ডা যোগ করুন...(_h)"
 
-#: ../pidgin/gtkblist.c:1588
 msgid "_Delete Group"
 msgstr "গ্রুপ মুছে ফেলুন (_D)"
 
-#: ../pidgin/gtkblist.c:1590
 msgid "_Rename"
 msgstr "পুনরায় নামকরণ করুন (_R)"
 
 #. join button
-#: ../pidgin/gtkblist.c:1616 ../pidgin/gtkroomlist.c:313
-#: ../pidgin/gtkroomlist.c:587 ../pidgin/pidginstock.c:89
 msgid "_Join"
 msgstr "যোগ দিন (_J)"
 
-#: ../pidgin/gtkblist.c:1618
 msgid "Auto-Join"
 msgstr "স্বয়ং-যোগ দিন"
 
-#: ../pidgin/gtkblist.c:1620
 msgid "Persistent"
 msgstr "পুনঃপুন ঘটনশীল"
 
-#: ../pidgin/gtkblist.c:1630
 msgid "_Edit Settings..."
 msgstr "বিন্যাসনসমূহ সম্পাদনা করুন... (_E)"
 
-#: ../pidgin/gtkblist.c:1664 ../pidgin/gtkblist.c:1689
 msgid "_Collapse"
 msgstr "গুটিয়ে ফেলুন (_C)"
 
-#: ../pidgin/gtkblist.c:1694
 msgid "_Expand"
 msgstr "বর্ধিত করুন (_E)"
 
-#: ../pidgin/gtkblist.c:1947 ../pidgin/gtkblist.c:1959
-#: ../pidgin/gtkblist.c:5614 ../pidgin/gtkblist.c:5627
 msgid "/Tools/Mute Sounds"
 msgstr "/টুলসমূহ/সাউন্ড বন্ধ রাখুন"
 
-#: ../pidgin/gtkblist.c:2419 ../pidgin/gtkconv.c:4996
-#: ../pidgin/gtkpounce.c:451
 msgid ""
 "You are not currently signed on with an account that can add that buddy."
 msgstr "আপনি বর্তমানে এমন কোনো একাউন্টে যুক্ত নন যা এই বন্ধুকে যোগ করতে পারে।"
@@ -15713,152 +11345,116 @@
 #. I don't believe this can happen currently, I think
 #. * everything that calls this function checks for one of the
 #. * above node types first.
-#: ../pidgin/gtkblist.c:2805
 msgid "Unknown node type"
 msgstr "অজানা নোডের ধরন"
 
 #. Buddies menu
-#: ../pidgin/gtkblist.c:3260
 msgid "/_Buddies"
 msgstr "/বন্ধুগণ (_B)"
 
-#: ../pidgin/gtkblist.c:3261
 msgid "/Buddies/New Instant _Message..."
 msgstr "/বন্ধুগণ/নতুন তাৎক্ষণিক বার্তা... (_M)"
 
-#: ../pidgin/gtkblist.c:3262
 msgid "/Buddies/Join a _Chat..."
 msgstr "/বন্ধুগণ/আড্ডায় যোগদান করুন... (_C)"
 
-#: ../pidgin/gtkblist.c:3263
 msgid "/Buddies/Get User _Info..."
 msgstr "/বন্ধুগণ/ব্যবহারকারীর তথ্য সংগ্রহ করুন... (_I)"
 
-#: ../pidgin/gtkblist.c:3264
 msgid "/Buddies/View User _Log..."
 msgstr "/বন্ধুগণ/ব্যবহারকারী লগ প্রদর্শন করুন... (_L)"
 
-#: ../pidgin/gtkblist.c:3266
 msgid "/Buddies/Sh_ow"
 msgstr "/বন্ধুগণ/দেখান (_o)"
 
-#: ../pidgin/gtkblist.c:3267
 msgid "/Buddies/Show/_Offline Buddies"
 msgstr "/বন্ধুগণ/দেখান/অফলাইন বন্ধুগণ (_O)"
 
-#: ../pidgin/gtkblist.c:3268
 msgid "/Buddies/Show/_Empty Groups"
 msgstr "/বন্ধুগণ/দেখান/ফাঁকা গ্রুপসমূহ (_E)"
 
-#: ../pidgin/gtkblist.c:3269
 msgid "/Buddies/Show/Buddy _Details"
 msgstr "/বন্ধুগণ/দেখান/বন্ধুর বিবরণ (_D)"
 
-#: ../pidgin/gtkblist.c:3270
 msgid "/Buddies/Show/Idle _Times"
 msgstr "/বন্ধুগণ/দেখান/অলস সময় (_T)"
 
-#: ../pidgin/gtkblist.c:3271
 msgid "/Buddies/Show/_Protocol Icons"
 msgstr "/বন্ধুগণ/দেখান/প্রটোকল আইকনগুলো (_P)"
 
-#: ../pidgin/gtkblist.c:3272
 msgid "/Buddies/_Sort Buddies"
 msgstr "/বন্ধুগণ/বন্ধুদের ক্রমানুসারে সাজান (_S)"
 
-#: ../pidgin/gtkblist.c:3274
 msgid "/Buddies/_Add Buddy..."
 msgstr "/বন্ধুগণ/বন্ধু যোগ করুন... (_A)"
 
-#: ../pidgin/gtkblist.c:3275
 msgid "/Buddies/Add C_hat..."
 msgstr "/বন্ধুগণ/আড্ডা যোগ করুন... (_h)"
 
-#: ../pidgin/gtkblist.c:3276
 msgid "/Buddies/Add _Group..."
 msgstr "/বন্ধুগণ/গ্রুপ যোগ করুন... (_G)"
 
-#: ../pidgin/gtkblist.c:3278
 msgid "/Buddies/_Quit"
 msgstr "/বন্ধুগণ/প্রস্থান করুন (_Q)"
 
 #. Accounts menu
-#: ../pidgin/gtkblist.c:3281
 msgid "/_Accounts"
 msgstr "/একাউন্টসমূহ (_A)"
 
-#: ../pidgin/gtkblist.c:3282 ../pidgin/gtkblist.c:7659
 msgid "/Accounts/Manage Accounts"
 msgstr "/একাউন্টসমূহ/একাউন্টসমূহ নিয়ন্ত্রণ করুন"
 
 #. Tools
-#: ../pidgin/gtkblist.c:3285
 msgid "/_Tools"
 msgstr "/টুলসমূহ (_T)"
 
-#: ../pidgin/gtkblist.c:3286
 msgid "/Tools/Buddy _Pounces"
 msgstr "/টুলসমূহ/বন্ধু পাউন্সসমূহ (_P)"
 
-#: ../pidgin/gtkblist.c:3287
 msgid "/Tools/_Certificates"
 msgstr "/টুলসমূহ/প্রত্যয়নপত্রসমূহ (_C)"
 
-#: ../pidgin/gtkblist.c:3288
 msgid "/Tools/Plu_gins"
 msgstr "/টুলসমূহ/প্লাগ-ইনসমূহ (_g)"
 
-#: ../pidgin/gtkblist.c:3289
 msgid "/Tools/Pr_eferences"
 msgstr "/টুলসমূহ/প্রাধিকারসমূহ (_e)"
 
-#: ../pidgin/gtkblist.c:3290
 msgid "/Tools/Pr_ivacy"
 msgstr "/টুলসমূহ/গোপনীয়তা (_i)"
 
-#: ../pidgin/gtkblist.c:3291
 msgid "/Tools/Smile_y"
 msgstr "/টুলসমূহ/স্মাইলী (_y)"
 
-#: ../pidgin/gtkblist.c:3293
 msgid "/Tools/_File Transfers"
 msgstr "/টুলসমূহ/ফাইল স্থানান্তর করে (_F)"
 
-#: ../pidgin/gtkblist.c:3294
 msgid "/Tools/R_oom List"
 msgstr "/টুলসমূহ/রুমের তালিকা (_o)"
 
-#: ../pidgin/gtkblist.c:3295
 msgid "/Tools/System _Log"
 msgstr "/টুলসমূহ/সিস্টেমের কার্যবিবরণী (_L)"
 
-#: ../pidgin/gtkblist.c:3297
 msgid "/Tools/Mute _Sounds"
 msgstr "/টুলসমূহ/সাউন্ড বন্ধ রাখুন (_S)"
 
 #. Help
-#: ../pidgin/gtkblist.c:3299
 msgid "/_Help"
 msgstr "/সহায়িকা (_H)"
 
-#: ../pidgin/gtkblist.c:3300
 msgid "/Help/Online _Help"
 msgstr "/সহায়িকা/অনলাইন সহায়িকা (_H)"
 
-#: ../pidgin/gtkblist.c:3301
 msgid "/Help/_Debug Window"
 msgstr "/সহায়িকা/ডিবাগ উইন্ডো (_D)"
 
-#: ../pidgin/gtkblist.c:3303 ../pidgin/gtkblist.c:3305
 msgid "/Help/_About"
 msgstr "/সহায়িকা/পরিচিতি (_A)"
 
-#: ../pidgin/gtkblist.c:3338
 #, c-format
 msgid "<b>Account:</b> %s"
 msgstr "<b>একাউন্ট:</b> %s"
 
-#: ../pidgin/gtkblist.c:3357
 #, c-format
 msgid ""
 "\n"
@@ -15867,7 +11463,6 @@
 "\n"
 "<b>পেশা:</b> %d"
 
-#: ../pidgin/gtkblist.c:3363
 #, c-format
 msgid ""
 "\n"
@@ -15876,132 +11471,102 @@
 "\n"
 "<b>বিষয়বস্তু:</b> %s"
 
-#: ../pidgin/gtkblist.c:3363
 msgid "(no topic set)"
 msgstr "(কোনো বিষয়বস্তু নির্ধারণ করা হয়নি)"
 
-#: ../pidgin/gtkblist.c:3444
 msgid "Buddy Alias"
 msgstr "বন্ধুর উপনাম"
 
-#: ../pidgin/gtkblist.c:3473
 msgid "Logged In"
 msgstr "লগইন করেছে"
 
-#: ../pidgin/gtkblist.c:3519
 msgid "Last Seen"
 msgstr "শেষ দেখেছিলাম"
 
 # fix me tithi
-#: ../pidgin/gtkblist.c:3540
 msgid "Spooky"
 msgstr "ভূতুরে"
 
-#: ../pidgin/gtkblist.c:3542
 msgid "Awesome"
 msgstr "দারুণ"
 
 # fix- me tithi
-#: ../pidgin/gtkblist.c:3544
 msgid "Rockin'"
 msgstr "Rockin'"
 
-#: ../pidgin/gtkblist.c:3575
 msgid "Total Buddies"
 msgstr "মোট বন্ধু"
 
 # fix me tithi
-#: ../pidgin/gtkblist.c:3951
 #, c-format
 msgid "Idle %dd %dh %02dm"
 msgstr "%dd %dh %02dm অলস"
 
-#: ../pidgin/gtkblist.c:3953
 #, c-format
 msgid "Idle %dh %02dm"
 msgstr "%dh %02dm অলস"
 
-#: ../pidgin/gtkblist.c:3955
 #, c-format
 msgid "Idle %dm"
 msgstr "%dm অলস"
 
-#: ../pidgin/gtkblist.c:4109
 msgid "/Buddies/New Instant Message..."
 msgstr "/বন্ধুগণ/নতুন তাৎক্ষণিক বার্তা..."
 
-#: ../pidgin/gtkblist.c:4110 ../pidgin/gtkblist.c:4143
 msgid "/Buddies/Join a Chat..."
 msgstr "/বন্ধুগণ/আড্ডায় যোগদান করুন..."
 
-#: ../pidgin/gtkblist.c:4111
 msgid "/Buddies/Get User Info..."
 msgstr "/বন্ধুগণ/ব্যবহারকারীর তথ্য গ্রহন করুন..."
 
-#: ../pidgin/gtkblist.c:4112
 msgid "/Buddies/Add Buddy..."
 msgstr "/বন্ধুগণ/বন্ধু যোগ করুন..."
 
-#: ../pidgin/gtkblist.c:4113 ../pidgin/gtkblist.c:4146
 msgid "/Buddies/Add Chat..."
 msgstr "/বন্ধুগণ/আড্ডা যোগ করুন..."
 
-#: ../pidgin/gtkblist.c:4114
 msgid "/Buddies/Add Group..."
 msgstr "/বন্ধুগণ/গ্রুপ যোগ করুন..."
 
-#: ../pidgin/gtkblist.c:4149
 msgid "/Tools/Privacy"
 msgstr "/টুলসমূহ/গোপনীয়তা"
 
-#: ../pidgin/gtkblist.c:4152
 msgid "/Tools/Room List"
 msgstr "/টুলসমূহ/রুমের তালিকা"
 
-#: ../pidgin/gtkblist.c:4284 ../pidgin/gtkdocklet.c:155
-#: ../pidgin/gtkdocklet.c:160
 #, c-format
 msgid "%d unread message from %s\n"
 msgid_plural "%d unread messages from %s\n"
 msgstr[0] "%1dটি অপঠিত বার্তা %2s হতে\n"
 msgstr[1] "%1dগুলো অপঠিত বার্তা %2s হতে\n"
 
-#: ../pidgin/gtkblist.c:4447
 msgid "Manually"
 msgstr "হস্তচালিতভাবে"
 
-#: ../pidgin/gtkblist.c:4450
 msgid "By status"
 msgstr "অবস্থা অনুসারে"
 
-#: ../pidgin/gtkblist.c:4451
 msgid "By log size"
 msgstr "লগের আকার অনুসারে"
 
-#: ../pidgin/gtkblist.c:4787
 #, c-format
 msgid "%s disconnected"
 msgstr "%s বিচ্ছিন্ন"
 
-#: ../pidgin/gtkblist.c:4789
 #, c-format
 msgid "%s disabled"
 msgstr "%s নিষ্ক্রিয়"
 
-#: ../pidgin/gtkblist.c:4793
 msgid "Reconnect"
 msgstr "পুনরায় সংযোগ দিন"
 
-#: ../pidgin/gtkblist.c:4793 ../pidgin/gtkblist.c:4911
 msgid "Re-enable"
 msgstr "পুনরায় সক্রিয় করুন"
 
 # tithi
-#: ../pidgin/gtkblist.c:4909
 msgid "Welcome back!"
 msgstr "পুনরায় স্বাগতম!"
 
-#: ../pidgin/gtkblist.c:4945
 #, c-format
 msgid "%d account was disabled because you signed on from another location:"
 msgid_plural ""
@@ -16010,24 +11575,19 @@
 msgstr[1] ""
 "আপনি অন্য একটি স্থান থেকে সাইন অন করার কারণে %d একাউন্টগুলো নিষ্ক্রিয় ছিল:"
 
-#: ../pidgin/gtkblist.c:5226
 msgid "<b>Username:</b>"
 msgstr "<b>ব্যবহারকারীর-নাম:</b>"
 
-#: ../pidgin/gtkblist.c:5233
 msgid "<b>Password:</b>"
 msgstr "<b>গুপ্তসংকেত:</b>"
 
-#: ../pidgin/gtkblist.c:5244
 msgid "_Login"
 msgstr "লগইন (_L)"
 
-#: ../pidgin/gtkblist.c:5330
 msgid "/Accounts"
 msgstr "/একাউন্টগুলো"
 
 #. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
-#: ../pidgin/gtkblist.c:5344
 #, c-format
 msgid ""
 "<span weight='bold' size='larger'>Welcome to %s!</span>\n"
@@ -16046,54 +11606,42 @@
 #. set the Show Offline Buddies option. must be done
 #. * after the treeview or faceprint gets mad. -Robot101
 #.
-#: ../pidgin/gtkblist.c:5608
 msgid "/Buddies/Show/Offline Buddies"
 msgstr "/বন্ধুগণ/দেখান/অফলাইন বন্ধুগণ"
 
-#: ../pidgin/gtkblist.c:5611
 msgid "/Buddies/Show/Empty Groups"
 msgstr "/বন্ধুগণ/দেখান/ফাঁকা গ্রুপগুলো"
 
-#: ../pidgin/gtkblist.c:5617
 msgid "/Buddies/Show/Buddy Details"
 msgstr "/বন্ধুগণ/দেখান/বন্ধুদের বিস্তারিত"
 
-#: ../pidgin/gtkblist.c:5620
 msgid "/Buddies/Show/Idle Times"
 msgstr "/বন্ধুগণ/দোখান/অলস সময়"
 
-#: ../pidgin/gtkblist.c:5623
 msgid "/Buddies/Show/Protocol Icons"
 msgstr "/বন্ধুগণ/দেখান/প্রটোকল আইকনগুলো"
 
-#: ../pidgin/gtkblist.c:6589
 msgid "Add a buddy.\n"
 msgstr "বন্ধু যোগ করুন।\n"
 
-#: ../pidgin/gtkblist.c:6604
 msgid "Buddy's _username:"
 msgstr "বন্ধুর ব্যবহারকারীর-নাম (_u):"
 
 # and this
-#: ../pidgin/gtkblist.c:6626
 msgid "(Optional) A_lias:"
 msgstr "উপনাম (ঐচ্ছিক) (_l):"
 
-#: ../pidgin/gtkblist.c:6644
 msgid "Add buddy to _group:"
 msgstr "গ্রুপে বন্ধু যোগ করুন (_g):"
 
-#: ../pidgin/gtkblist.c:6893
 msgid "This protocol does not support chat rooms."
 msgstr "এই প্রটোকলটি আড্ডার রুমসমূহ সমর্থন করে না।"
 
-#: ../pidgin/gtkblist.c:6909
 msgid ""
 "You are not currently signed on with any protocols that have the ability to "
 "chat."
 msgstr "আপনি বর্তমানে আড্ডার যোগ্য এমন কোনো প্রটোকলে যুক্ত হননি।"
 
-#: ../pidgin/gtkblist.c:6953
 msgid ""
 "Please enter an alias, and the appropriate information about the chat you "
 "would like to add to your buddy list.\n"
@@ -16101,80 +11649,62 @@
 "অনুগ্রহ করে আপনি আপনার বন্ধু তালিকায় যুক্ত করতে চান এমন আড্ডার একটি ডাকনাম,এবং  "
 "যথাযথ তথ্য প্রবেশ করান।\n"
 
-#: ../pidgin/gtkblist.c:6976
 msgid "A_lias:"
 msgstr "উপনাম (_l):"
 
 # tithi
-#: ../pidgin/gtkblist.c:6983
 msgid "Auto_join when account becomes online."
 msgstr "একাউন্ট অনলাইনে থাকলে স্বয়ংক্রিয় ভাবে যোগদান করুন।"
 
 # tithi
-#: ../pidgin/gtkblist.c:6984
 msgid "_Remain in chat after window is closed."
 msgstr "উইন্ডো বন্ধ হবার পরেও আড্ডায় থাকুন (_R)।"
 
-#: ../pidgin/gtkblist.c:7010
 msgid "Please enter the name of the group to be added."
 msgstr "অনুগ্রহ করে যুক্ত করতে হবে এমন গ্রুপের নাম প্রবেশ করান।"
 
-#: ../pidgin/gtkblist.c:7673
 msgid "Enable Account"
 msgstr "একাউন্ট সক্রিয় করুন"
 
-#: ../pidgin/gtkblist.c:7679
 msgid "<PurpleMain>/Accounts/Enable Account"
 msgstr "<PurpleMain>/একাউন্টসমূহ/একাউন্ট সক্রিয় করুন"
 
-#: ../pidgin/gtkblist.c:7732
 msgid "<PurpleMain>/Accounts/"
 msgstr "<PurpleMain>/একাউন্টসমূহ/"
 
-#: ../pidgin/gtkblist.c:7755
 msgid "_Edit Account"
 msgstr "একাউন্ট সম্পাদন করুন (_E)"
 
-#: ../pidgin/gtkblist.c:7768 ../pidgin/gtkconv.c:3301
 msgid "No actions available"
 msgstr "কোনো কাজ সহজলভ্য নয়"
 
-#: ../pidgin/gtkblist.c:7776
 msgid "_Disable"
 msgstr "নিষ্ক্রিয় (_D)"
 
-#: ../pidgin/gtkblist.c:7794
 msgid "/Tools"
 msgstr "/টুলসমূহ"
 
-#: ../pidgin/gtkblist.c:7864
 msgid "/Buddies/Sort Buddies"
 msgstr "/বন্ধুগণ/বন্ধুদের ক্রমানুসারে সাজান"
 
 #. Widget creation function
-#: ../pidgin/gtkcertmgr.c:541
 msgid "SSL Servers"
 msgstr "SSL সার্ভারসমূহ"
 
-#: ../pidgin/gtkconv.c:489
 msgid "Unknown command."
 msgstr "অজানা নির্দেশ।"
 
-#: ../pidgin/gtkconv.c:773 ../pidgin/gtkconv.c:800
 msgid "That buddy is not on the same protocol as this chat."
 msgstr "ঐ বন্ধুটি এই আড্ডার মতো একই প্রটোকলে নেই।"
 
-#: ../pidgin/gtkconv.c:794
 msgid ""
 "You are not currently signed on with an account that can invite that buddy."
 msgstr "আপনি বর্তমানে এমন কোনো একাউন্টে যুক্ত নন যা ঐ বন্ধুকে আমন্ত্রণ জানাতে পারে।"
 
-#: ../pidgin/gtkconv.c:848
 msgid "Invite Buddy Into Chat Room"
 msgstr "বন্ধুকে আড্ডার রুমে আমন্ত্রণ জানান"
 
 #. Put our happy label in it.
-#: ../pidgin/gtkconv.c:878
 msgid ""
 "Please enter the name of the user you wish to invite, along with an optional "
 "invite message."
@@ -16182,185 +11712,140 @@
 "একটি ঐচ্ছিক আমন্ত্রণ বার্তা সহ, অনুগ্রহ করে আপনি যে ব্যবহারকারীকে আমন্ত্রণ জানাতে চান "
 "তার নামটি প্রবেশ করান।"
 
-#: ../pidgin/gtkconv.c:899
 msgid "_Buddy:"
 msgstr "বন্ধু (_B):"
 
-#: ../pidgin/gtkconv.c:912 ../pidgin/gtksavedstatuses.c:1215
-#: ../pidgin/gtksavedstatuses.c:1529
 msgid "_Message:"
 msgstr "বার্তা (_M):"
 
-#: ../pidgin/gtkconv.c:977
 #, c-format
 msgid "<h1>Conversation with %s</h1>\n"
 msgstr "<h1>%s-এর সঙ্গে কথোপকথন</h1>\n"
 
-#: ../pidgin/gtkconv.c:1015
 msgid "Save Conversation"
 msgstr "কথোপকথন সংরক্ষণ করুন"
 
-#: ../pidgin/gtkconv.c:1161 ../pidgin/gtkdebug.c:167 ../pidgin/gtkdebug.c:740
 msgid "Find"
 msgstr "খুঁজুন"
 
-#: ../pidgin/gtkconv.c:1187 ../pidgin/gtkdebug.c:195
 msgid "_Search for:"
 msgstr "খুঁজছে (_S):"
 
-#: ../pidgin/gtkconv.c:1708
 msgid "Un-Ignore"
 msgstr "অগ্রাহ্য করবেন না"
 
-#: ../pidgin/gtkconv.c:1711
 msgid "Ignore"
 msgstr "অগ্রাহ্য করুন"
 
-#: ../pidgin/gtkconv.c:1731
 msgid "Get Away Message"
 msgstr "অনুপস্থিতি বার্তা গ্রহণ করুন"
 
-#: ../pidgin/gtkconv.c:1754
 msgid "Last said"
 msgstr "সর্বশেষ বলা হয়েছে"
 
-#: ../pidgin/gtkconv.c:2770
 msgid "Unable to save icon file to disk."
 msgstr "ডিস্কে আইকন ফাইল সংরক্ষণ করতে অক্ষম।"
 
-#: ../pidgin/gtkconv.c:2865
 msgid "Save Icon"
 msgstr "আইকন সংরক্ষণ করুন"
 
-#: ../pidgin/gtkconv.c:2923
 msgid "Animate"
 msgstr "অ্যানিমেট"
 
-#: ../pidgin/gtkconv.c:2928
 msgid "Hide Icon"
 msgstr "আইকন লুকিয়ে রাখুন"
 
-#: ../pidgin/gtkconv.c:2931
 msgid "Save Icon As..."
 msgstr "এভাবে আইকন সংরক্ষণ করুন..."
 
-#: ../pidgin/gtkconv.c:2935
 msgid "Set Custom Icon..."
 msgstr "পছন্দসই আইকন নির্ধারণ করুন..."
 
-#: ../pidgin/gtkconv.c:2939
 msgid "Change Size"
 msgstr "আকার পরিবর্তন করুন"
 
 # tithi
-#: ../pidgin/gtkconv.c:3077
 msgid "Show All"
 msgstr "সব প্রদর্শন করুন"
 
 #. Conversation menu
-#: ../pidgin/gtkconv.c:3096
 msgid "/_Conversation"
 msgstr "/কথোপকথন (_C)"
 
-#: ../pidgin/gtkconv.c:3098
 msgid "/Conversation/New Instant _Message..."
 msgstr "/কথোপকথন/নতুন তাৎক্ষণিক বার্তা... (_M)"
 
-#: ../pidgin/gtkconv.c:3103
 msgid "/Conversation/_Find..."
 msgstr "/কথোপকথন/খুঁজুন... (_F)"
 
-#: ../pidgin/gtkconv.c:3105
 msgid "/Conversation/View _Log"
 msgstr "/কথোপকথন/কার্যবিবরণী প্রদর্শন করুন (_L)"
 
-#: ../pidgin/gtkconv.c:3106
 msgid "/Conversation/_Save As..."
 msgstr "/কথোপকথন/এভাবে সংরক্ষণ করুন... (_S)"
 
 # fix me tithi
-#: ../pidgin/gtkconv.c:3108
 msgid "/Conversation/Clea_r Scrollback"
 msgstr "/কথোপকথন/স্ক্রলবেক মুছুন (_r)"
 
-#: ../pidgin/gtkconv.c:3112
 msgid "/Conversation/Se_nd File..."
 msgstr "/কথোপকথন/ফাইল প্রেরণ করুন... (_n)"
 
-#: ../pidgin/gtkconv.c:3113
 msgid "/Conversation/Add Buddy _Pounce..."
 msgstr "/কথোপকথন/বন্ধু পাউন্স যোগ করুন... (_P)"
 
-#: ../pidgin/gtkconv.c:3115
 msgid "/Conversation/_Get Info"
 msgstr "/কথোপকথন/তথ্য সংগ্রহ করুন (_G)"
 
-#: ../pidgin/gtkconv.c:3117
 msgid "/Conversation/In_vite..."
 msgstr "/কথোপকথন/আমন্ত্রণ করুন... (_v)"
 
-#: ../pidgin/gtkconv.c:3119
 msgid "/Conversation/M_ore"
 msgstr "/কথোপকথন/আরও (_o)"
 
-#: ../pidgin/gtkconv.c:3123
 msgid "/Conversation/Al_ias..."
 msgstr "/কথোপকথন/উপনাম... (_i)"
 
-#: ../pidgin/gtkconv.c:3125
 msgid "/Conversation/_Block..."
 msgstr "/কথোপকথন/ব্লক করুন... (_B)"
 
-#: ../pidgin/gtkconv.c:3127
 msgid "/Conversation/_Unblock..."
 msgstr "/কথোপকথন/ব্লক মুক্ত করুন... (_U)"
 
-#: ../pidgin/gtkconv.c:3129
 msgid "/Conversation/_Add..."
 msgstr "/কথোপকথন/যোগ করুন... (_A)"
 
-#: ../pidgin/gtkconv.c:3131
 msgid "/Conversation/_Remove..."
 msgstr "/কথোপকথন/অপসারণ করুন... (_R)"
 
-#: ../pidgin/gtkconv.c:3136
 msgid "/Conversation/Insert Lin_k..."
 msgstr "/কথোপকথন/লিঙ্ক প্রবেশ করান... (_k)"
 
-#: ../pidgin/gtkconv.c:3138
 msgid "/Conversation/Insert Imag_e..."
 msgstr "/কথোপকথন/চিত্র প্রবেশ করান... (_e)"
 
-#: ../pidgin/gtkconv.c:3144
 msgid "/Conversation/_Close"
 msgstr "/কথোপকথন/বন্ধ করুন (_C)"
 
 #. Options
-#: ../pidgin/gtkconv.c:3148
 msgid "/_Options"
 msgstr "/পছন্দসমূহ (_O)"
 
-#: ../pidgin/gtkconv.c:3149
 msgid "/Options/Enable _Logging"
 msgstr "/পছন্দসমূহ/লগ সক্রিয় করুন (_L)"
 
-#: ../pidgin/gtkconv.c:3150
 msgid "/Options/Enable _Sounds"
 msgstr "/পছন্দসমূহ/শব্দ সক্রিয় করুন (_S)"
 
-#: ../pidgin/gtkconv.c:3152
 msgid "/Options/Show Formatting _Toolbars"
 msgstr "/পছন্দসমূহ/বিন্যাসকরণ টুলবারসমূহ প্রদর্শন করুন (_T)"
 
-#: ../pidgin/gtkconv.c:3153
 msgid "/Options/Show Ti_mestamps"
 msgstr "/পছন্দসমূহ/সময়-স্ট্যাম্প প্রদর্শন করুন (_m)"
 
-#: ../pidgin/gtkconv.c:3289
 msgid "/Conversation/More"
 msgstr "/কথোপকথন/আরও"
 
-#: ../pidgin/gtkconv.c:3345
 msgid "/Options"
 msgstr "/পছন্দসমূহ"
 
@@ -16369,79 +11854,60 @@
 #. Make sure the 'Conversation -> More' menuitems are regenerated whenever
 #. * the 'Conversation' menu pops up because the entries can change after the
 #. * conversation is created.
-#: ../pidgin/gtkconv.c:3380 ../pidgin/gtkconv.c:3412
 msgid "/Conversation"
 msgstr "/কথোপকথন"
 
-#: ../pidgin/gtkconv.c:3420
 msgid "/Conversation/View Log"
 msgstr "/কথোপকথন/কার্যবিবরণী প্রদর্শন করুন"
 
-#: ../pidgin/gtkconv.c:3426
 msgid "/Conversation/Send File..."
 msgstr "/কথোপকথন/ফাইল প্রেরণ করুন..."
 
-#: ../pidgin/gtkconv.c:3430
 msgid "/Conversation/Add Buddy Pounce..."
 msgstr "/কথোপকথন/বন্ধু পাউন্স যোগ করুন..."
 
-#: ../pidgin/gtkconv.c:3436
 msgid "/Conversation/Get Info"
 msgstr "/কথোপকথন/তথ্য গ্রহণ করুন"
 
-#: ../pidgin/gtkconv.c:3440
 msgid "/Conversation/Invite..."
 msgstr "/কথোপকথন/আমন্ত্রণ করুন..."
 
-#: ../pidgin/gtkconv.c:3446
 msgid "/Conversation/Alias..."
 msgstr "/কথোপকথন/উপনাম..."
 
-#: ../pidgin/gtkconv.c:3450
 msgid "/Conversation/Block..."
 msgstr "/কথোপকথন/ব্লক করুন..."
 
-#: ../pidgin/gtkconv.c:3454
 msgid "/Conversation/Unblock..."
 msgstr "/কথোপকথন/ব্লক মুক্ত করুন..."
 
-#: ../pidgin/gtkconv.c:3458
 msgid "/Conversation/Add..."
 msgstr "/কথোপকথন/যোগ করুন..."
 
-#: ../pidgin/gtkconv.c:3462
 msgid "/Conversation/Remove..."
 msgstr "/কথোপকথন/অপসারণ করুন..."
 
-#: ../pidgin/gtkconv.c:3468
 msgid "/Conversation/Insert Link..."
 msgstr "/কথোপকথন/লিঙ্ক প্রবেশ করান..."
 
-#: ../pidgin/gtkconv.c:3472
 msgid "/Conversation/Insert Image..."
 msgstr "/কথোপকথন/চিত্র প্রবেশ করান..."
 
-#: ../pidgin/gtkconv.c:3478
 msgid "/Options/Enable Logging"
 msgstr "/পছন্দসমূহ/লগ সক্রিয় করুন"
 
-#: ../pidgin/gtkconv.c:3481
 msgid "/Options/Enable Sounds"
 msgstr "/পছন্দসমূহ/শব্দ সক্রিয় করুন"
 
-#: ../pidgin/gtkconv.c:3494
 msgid "/Options/Show Formatting Toolbars"
 msgstr "/পছন্দসমূহ/বিন্যাসকরণ টুলবারসমূহ প্রদর্শন করুন"
 
-#: ../pidgin/gtkconv.c:3497
 msgid "/Options/Show Timestamps"
 msgstr "/পছন্দসমূহ/সময়-স্ট্যাম্প প্রদর্শন করুন"
 
-#: ../pidgin/gtkconv.c:3575
 msgid "User is typing..."
 msgstr "ব্যবহারকারী টাইপ করছে..."
 
-#: ../pidgin/gtkconv.c:3649
 #, c-format
 msgid ""
 "\n"
@@ -16451,559 +11917,410 @@
 "%s টাইপ করা বন্ধ করে দিয়েছে"
 
 #. Build the Send To menu
-#: ../pidgin/gtkconv.c:3829 ../pidgin/gtkconv.c:8417
 msgid "S_end To"
 msgstr "প্রেরণ করুন (_S)"
 
-#: ../pidgin/gtkconv.c:4498 ../pidgin/plugins/sendbutton.c:61
 msgid "_Send"
 msgstr "প্রেরণ করুন (_S)"
 
 #. Setup the label telling how many people are in the room.
-#: ../pidgin/gtkconv.c:4657
 msgid "0 people in room"
 msgstr "রুমে ০ জন ব্যক্তি উপস্থিত"
 
-#: ../pidgin/gtkconv.c:5958 ../pidgin/gtkconv.c:6079
 #, c-format
 msgid "%d person in room"
 msgid_plural "%d people in room"
 msgstr[0] "রুমে %d জন ব্যক্তি উপস্থিত"
 msgstr[1] "রুমে %d জন ব্যক্তি উপস্থিত"
 
-#: ../pidgin/gtkconv.c:6623 ../pidgin/gtkstatusbox.c:691
 msgid "Typing"
 msgstr "টাইপ করছে"
 
-#: ../pidgin/gtkconv.c:6627
 msgid "Stopped Typing"
 msgstr "টাইপ করা বন্ধ করেছে"
 
-#: ../pidgin/gtkconv.c:6630
 msgid "Nick Said"
 msgstr "নিক বলেছে"
 
-#: ../pidgin/gtkconv.c:6633
 msgid "Unread Messages"
 msgstr "অপঠিত বার্তাসমূহ"
 
-#: ../pidgin/gtkconv.c:6639
 msgid "New Event"
 msgstr "নতুন ঘটনা"
 
 # fix me tithi
-#: ../pidgin/gtkconv.c:7889
 msgid "clear: Clears all conversation scrollbacks."
 msgstr "মুছে ফেলুন: সব কথোপকথনের স্ক্রলবেক মুছে ফেলুন।"
 
-#: ../pidgin/gtkconv.c:8093
 msgid "Confirm close"
 msgstr "বন্ধ নিশ্চিত করুন"
 
-#: ../pidgin/gtkconv.c:8125
 msgid "You have unread messages. Are you sure you want to close the window?"
 msgstr "আপনার অপঠিত বার্তা আছে। আপনি কি নিশ্চিত আপনি উইন্ডোটি বন্ধ করতে চান?"
 
-#: ../pidgin/gtkconv.c:8758
 msgid "Close other tabs"
 msgstr "অন্যান্য ট্যাবগুলো বন্ধ করুন"
 
-#: ../pidgin/gtkconv.c:8764
 msgid "Close all tabs"
 msgstr "সকল ট্যাব বন্ধ করুন"
 
-#: ../pidgin/gtkconv.c:8772
 msgid "Detach this tab"
 msgstr "এই ট্যাবটি আলাদা করুন"
 
-#: ../pidgin/gtkconv.c:8778
 msgid "Close this tab"
 msgstr "এই ট্যাবটি বন্ধ করুন"
 
-#: ../pidgin/gtkconv.c:9300
 msgid "Close conversation"
 msgstr "কথোপকথন বন্ধ করুন"
 
-#: ../pidgin/gtkconv.c:9904
 msgid "Last created window"
 msgstr "সর্বশেষ তৈরিকৃত উইন্ডো"
 
-#: ../pidgin/gtkconv.c:9906
 msgid "Separate IM and Chat windows"
 msgstr "তাৎক্ষণিক বার্তা ও আড্ডার উইন্ডো পৃথক করুন"
 
-#: ../pidgin/gtkconv.c:9908 ../pidgin/gtkprefs.c:1573
 msgid "New window"
 msgstr "নতুন উইন্ডো"
 
-#: ../pidgin/gtkconv.c:9910
 msgid "By group"
 msgstr "গ্রুপ অনুসারে"
 
-#: ../pidgin/gtkconv.c:9912
 msgid "By account"
 msgstr "একাউন্ট অনুসারে"
 
-#: ../pidgin/gtkdebug.c:234
 msgid "Save Debug Log"
 msgstr "ডিবাগ কার্যবিবরণী সংরক্ষণ করুন"
 
-#: ../pidgin/gtkdebug.c:582
 msgid "Invert"
 msgstr "উল্টান"
 
-#: ../pidgin/gtkdebug.c:585
 msgid "Highlight matches"
 msgstr "প্রনির্দেশ মিলসমূহ"
 
-#: ../pidgin/gtkdebug.c:652
 msgid "_Icon Only"
 msgstr "শুধুমাত্র আইকন (_I)"
 
-#: ../pidgin/gtkdebug.c:653
 msgid "_Text Only"
 msgstr "শুধুমাত্র পাঠ (_T)"
 
-#: ../pidgin/gtkdebug.c:654
 msgid "_Both Icon & Text"
 msgstr "আইকন ও পাঠ উভয়ই (_B)"
 
-#: ../pidgin/gtkdebug.c:772
 msgid "Filter"
 msgstr "পরিশ্রুতক"
 
-#: ../pidgin/gtkdebug.c:791
 msgid "Right click for more options."
 msgstr "আরও পছন্দের জন্য ডান ক্লিক করুন।"
 
-#: ../pidgin/gtkdebug.c:821
 msgid "Level "
 msgstr "স্তর"
 
 # tithi
-#: ../pidgin/gtkdebug.c:822 ../pidgin/gtkdebug.c:828
 msgid "Select the debug filter level."
 msgstr "ডিবাগ পরিশ্রুতক স্তর নির্বাচন করুন।"
 
-#: ../pidgin/gtkdebug.c:830
 msgid "All"
 msgstr "সকল"
 
-#: ../pidgin/gtkdebug.c:831
 msgid "Misc"
 msgstr "অন্যান্য"
 
-#: ../pidgin/gtkdebug.c:833
 msgid "Warning"
 msgstr "সতর্কতা"
 
-#: ../pidgin/gtkdebug.c:834
 msgid "Error "
 msgstr "ত্রুটি"
 
-#: ../pidgin/gtkdebug.c:835
 msgid "Fatal Error"
 msgstr "মারাত্মক ত্রুটি"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:75
 msgid "bug master"
 msgstr "বাগ মাস্টার"
 
-#: ../pidgin/gtkdialogs.c:77
 msgid "artist"
 msgstr "শিল্পী"
 
 # tithi
 #. feel free to not translate this
-#: ../pidgin/gtkdialogs.c:80
 msgid "Ka-Hing Cheung"
 msgstr "কা-হিং চিউং"
 
-#: ../pidgin/gtkdialogs.c:93
 msgid "support"
 msgstr "সমর্থন করুন"
 
-#: ../pidgin/gtkdialogs.c:95 ../pidgin/gtkdialogs.c:118
 msgid "webmaster"
 msgstr "ওয়েবমাস্টার"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:105
 msgid "Senior Contributor/QA"
 msgstr "সিনিয়র অংশগ্রহণকারী/QA"
 
-#: ../pidgin/gtkdialogs.c:114
 msgid "win32 port"
 msgstr "উইন৩২ পোর্ট"
 
-#: ../pidgin/gtkdialogs.c:115 ../pidgin/gtkdialogs.c:116
 msgid "maintainer"
 msgstr "রক্ষণাবেক্ষক"
 
-#: ../pidgin/gtkdialogs.c:117
 msgid "libfaim maintainer"
 msgstr "libfaim রক্ষণাবেক্ষক"
 
 #. If "lazy bum" translates literally into a serious insult, use something else or omit it.
-#: ../pidgin/gtkdialogs.c:120
 msgid "hacker and designated driver [lazy bum]"
 msgstr "হ্যাকার ও নির্দেশিত ড্রাইভার [অকর্মা]"
 
-#: ../pidgin/gtkdialogs.c:121
 msgid "support/QA"
 msgstr "সমর্থন/QA"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:122
 msgid "XMPP"
 msgstr "XMPP"
 
-#: ../pidgin/gtkdialogs.c:123
 msgid "original author"
 msgstr "মূল লেখক"
 
-#: ../pidgin/gtkdialogs.c:125
 msgid "lead developer"
 msgstr "প্রধান ডেভেলপার"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:141 ../pidgin/gtkdialogs.c:142
 msgid "Afrikaans"
 msgstr "আফ্রিকানরা"
 
-#: ../pidgin/gtkdialogs.c:143 ../pidgin/gtkdialogs.c:241
 msgid "Arabic"
 msgstr "এরাবিক"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:144
 msgid "Belarusian Latin"
 msgstr "বেলারুশিয়ান ল্যাটিন"
 
-#: ../pidgin/gtkdialogs.c:145 ../pidgin/gtkdialogs.c:146
-#: ../pidgin/gtkdialogs.c:242
 msgid "Bulgarian"
 msgstr "বুলগেরীয়"
 
-#: ../pidgin/gtkdialogs.c:147 ../pidgin/gtkdialogs.c:148
-#: ../pidgin/gtkdialogs.c:149 ../pidgin/gtkdialogs.c:150
-#: ../pidgin/gtkdialogs.c:151
 msgid "Bengali"
 msgstr "বাংলা"
 
-#: ../pidgin/gtkdialogs.c:152
 msgid "Bosnian"
 msgstr "বসনীয়"
 
-#: ../pidgin/gtkdialogs.c:153 ../pidgin/gtkdialogs.c:243
-#: ../pidgin/gtkdialogs.c:244
 msgid "Catalan"
 msgstr "ক্যাটালান"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:154 ../pidgin/gtkdialogs.c:155
 msgid "Valencian-Catalan"
 msgstr "ভ্যালেনসিয়-ক্যাটালান"
 
-#: ../pidgin/gtkdialogs.c:156 ../pidgin/gtkdialogs.c:245
-#: ../pidgin/gtkdialogs.c:246
 msgid "Czech"
 msgstr "চেক"
 
-#: ../pidgin/gtkdialogs.c:157 ../pidgin/gtkdialogs.c:158
 msgid "Danish"
 msgstr "ড্যানিশ"
 
-#: ../pidgin/gtkdialogs.c:159 ../pidgin/gtkdialogs.c:160
-#: ../pidgin/gtkdialogs.c:247
 msgid "German"
 msgstr "জার্মান"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:161 ../pidgin/gtkdialogs.c:162
-#: ../pidgin/gtkdialogs.c:163
 msgid "Dzongkha"
 msgstr "জংখা"
 
-#: ../pidgin/gtkdialogs.c:164 ../pidgin/gtkdialogs.c:165
 msgid "Greek"
 msgstr "গ্রীক"
 
-#: ../pidgin/gtkdialogs.c:166
 msgid "Australian English"
 msgstr "অষ্ট্রেলীয় ইংরেজী"
 
-#: ../pidgin/gtkdialogs.c:167
 msgid "Canadian English"
 msgstr "কানাডীয় ইংরেজী"
 
-#: ../pidgin/gtkdialogs.c:168
 msgid "British English"
 msgstr "ব্রিটিশ ইংরেজী"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:169
 msgid "Esperanto"
 msgstr "এসপারেনটো"
 
-#: ../pidgin/gtkdialogs.c:170 ../pidgin/gtkdialogs.c:248
-#: ../pidgin/gtkdialogs.c:249 ../pidgin/gtkdialogs.c:250
-#: ../pidgin/gtkdialogs.c:251
 msgid "Spanish"
 msgstr "স্পেনিশ"
 
-#: ../pidgin/gtkdialogs.c:171
 msgid "Estonian"
 msgstr "এসতোনীয়"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:172 ../pidgin/gtkdialogs.c:173
 msgid "Euskera(Basque)"
 msgstr "ইউসকেরা(বাসকু)"
 
-#: ../pidgin/gtkdialogs.c:174 ../pidgin/gtkdialogs.c:175
-#: ../pidgin/gtkdialogs.c:176
 msgid "Persian"
 msgstr "পার্সিয"
 
-#: ../pidgin/gtkdialogs.c:177 ../pidgin/gtkdialogs.c:252
-#: ../pidgin/gtkdialogs.c:253
 msgid "Finnish"
 msgstr "ফীনিশ"
 
-#: ../pidgin/gtkdialogs.c:178 ../pidgin/gtkdialogs.c:254
-#: ../pidgin/gtkdialogs.c:255 ../pidgin/gtkdialogs.c:256
-#: ../pidgin/gtkdialogs.c:257
 msgid "French"
 msgstr "ফরাসী"
 
-#: ../pidgin/gtkdialogs.c:179
 msgid "Irish"
 msgstr "আইরিশ"
 
 # fix me tithi
-#: ../pidgin/gtkdialogs.c:180 ../pidgin/gtkdialogs.c:181
-#: ../pidgin/gtkdialogs.c:258
 msgid "Galician"
 msgstr "গ্যালিশিয়"
 
-#: ../pidgin/gtkdialogs.c:182 ../pidgin/gtkdialogs.c:183
 msgid "Gujarati"
 msgstr "গুজরাটি"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:183
 msgid "Gujarati Language Team"
 msgstr "গুজরাটি ভাষার দল"
 
-#: ../pidgin/gtkdialogs.c:184 ../pidgin/gtkdialogs.c:259
 msgid "Hebrew"
 msgstr "হিব্রু"
 
-#: ../pidgin/gtkdialogs.c:185
 msgid "Hindi"
 msgstr "হিন্দি"
 
-#: ../pidgin/gtkdialogs.c:186 ../pidgin/gtkdialogs.c:260
 msgid "Hungarian"
 msgstr "হাঙ্গেরীয়"
 
-#: ../pidgin/gtkdialogs.c:187
 msgid "Indonesian"
 msgstr "ইন্ডোনেশিয়"
 
-#: ../pidgin/gtkdialogs.c:188 ../pidgin/gtkdialogs.c:261
 msgid "Italian"
 msgstr "ইটালিয়"
 
-#: ../pidgin/gtkdialogs.c:189 ../pidgin/gtkdialogs.c:262
-#: ../pidgin/gtkdialogs.c:263 ../pidgin/gtkdialogs.c:264
 msgid "Japanese"
 msgstr "জাপানী"
 
-#: ../pidgin/gtkdialogs.c:190 ../pidgin/gtkdialogs.c:265
 msgid "Georgian"
 msgstr "জর্জীয়"
 
-#: ../pidgin/gtkdialogs.c:190
 msgid "Ubuntu Georgian Translators"
 msgstr "উবান্টুর জর্জিয়ান অনুবাদকবৃন্দ"
 
 # fix me tithi
-#: ../pidgin/gtkdialogs.c:191
 msgid "Kannada"
 msgstr "কান্নাডা"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:191
 msgid "Kannada Translation team"
 msgstr "কান্নাডা ভাষান্তর দল"
 
-#: ../pidgin/gtkdialogs.c:192 ../pidgin/gtkdialogs.c:266
-#: ../pidgin/gtkdialogs.c:267
 msgid "Korean"
 msgstr "কোরিয়"
 
-#: ../pidgin/gtkdialogs.c:193 ../pidgin/gtkdialogs.c:194
-#: ../pidgin/gtkdialogs.c:195
 msgid "Kurdish"
 msgstr "কুর্দিশ"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:196
 msgid "Lao"
 msgstr "লাও"
 
-#: ../pidgin/gtkdialogs.c:197 ../pidgin/gtkdialogs.c:268
-#: ../pidgin/gtkdialogs.c:269
 msgid "Lithuanian"
 msgstr "লিথুনীয়"
 
-#: ../pidgin/gtkdialogs.c:198 ../pidgin/gtkdialogs.c:199
-#: ../pidgin/gtkdialogs.c:200 ../pidgin/gtkdialogs.c:270
 msgid "Macedonian"
 msgstr "ম্যাসেডনিয়"
 
+#, fuzzy
+msgid "Mongolian"
+msgstr "ম্যাসেডনিয়"
+
 # fix me tithi
-#: ../pidgin/gtkdialogs.c:202 ../pidgin/gtkdialogs.c:271
-#: ../pidgin/gtkdialogs.c:272 ../pidgin/gtkdialogs.c:273
 msgid "Bokmål Norwegian"
 msgstr "বোকমাল নরওয়েয়ান"
 
-#: ../pidgin/gtkdialogs.c:203
 msgid "Nepali"
 msgstr "নেপালি"
 
-#: ../pidgin/gtkdialogs.c:204
 msgid "Dutch, Flemish"
 msgstr "ওলন্দাজ, ফ্লেমিশ"
 
 # fix me tithi
-#: ../pidgin/gtkdialogs.c:205
 msgid "Norwegian Nynorsk"
 msgstr "নরওয়েয়ান নাইনোরকস"
 
 # fix-me tithi
-#: ../pidgin/gtkdialogs.c:206
 msgid "Occitan"
 msgstr "অকেশান"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:207
 msgid "Punjabi"
 msgstr "পাঞ্জাবী"
 
-#: ../pidgin/gtkdialogs.c:208 ../pidgin/gtkdialogs.c:274
-#: ../pidgin/gtkdialogs.c:275 ../pidgin/gtkdialogs.c:276
-#: ../pidgin/gtkdialogs.c:277
 msgid "Polish"
 msgstr "পোলিশ"
 
-#: ../pidgin/gtkdialogs.c:209
 msgid "Portuguese"
 msgstr "পর্তুগীজ"
 
-#: ../pidgin/gtkdialogs.c:210 ../pidgin/gtkdialogs.c:278
 msgid "Portuguese-Brazil"
 msgstr "পর্তুগীজ-ব্রাজিল"
 
-#: ../pidgin/gtkdialogs.c:211
 msgid "Pashto"
 msgstr "পাশতু"
 
-#: ../pidgin/gtkdialogs.c:212
 msgid "Romanian"
 msgstr "রুমানীয়"
 
-#: ../pidgin/gtkdialogs.c:213 ../pidgin/gtkdialogs.c:279
-#: ../pidgin/gtkdialogs.c:280 ../pidgin/gtkdialogs.c:281
 msgid "Russian"
 msgstr "রুশ"
 
-#: ../pidgin/gtkdialogs.c:214 ../pidgin/gtkdialogs.c:215
-#: ../pidgin/gtkdialogs.c:282 ../pidgin/gtkdialogs.c:283
-#: ../pidgin/gtkdialogs.c:284
 msgid "Slovak"
 msgstr "স্লোভাক"
 
-#: ../pidgin/gtkdialogs.c:216 ../pidgin/gtkdialogs.c:285
 msgid "Slovenian"
 msgstr "স্লোভেনিয়"
 
-#: ../pidgin/gtkdialogs.c:217
 msgid "Albanian"
 msgstr "আলবেনীয়"
 
-#: ../pidgin/gtkdialogs.c:218 ../pidgin/gtkdialogs.c:219
-#: ../pidgin/gtkdialogs.c:286 ../pidgin/gtkdialogs.c:287
 msgid "Serbian"
 msgstr "সার্বিয়"
 
-#: ../pidgin/gtkdialogs.c:220 ../pidgin/gtkdialogs.c:221
 msgid "Sinhala"
 msgstr "সিনহালা"
 
-#: ../pidgin/gtkdialogs.c:222 ../pidgin/gtkdialogs.c:288
-#: ../pidgin/gtkdialogs.c:289
 msgid "Swedish"
 msgstr "সুইডিশ"
 
-#: ../pidgin/gtkdialogs.c:223
 msgid "Tamil"
 msgstr "তামিল"
 
-#: ../pidgin/gtkdialogs.c:224
 msgid "Telugu"
 msgstr "তেলেগু"
 
-#: ../pidgin/gtkdialogs.c:225
 msgid "Thai"
 msgstr "থাই"
 
-#: ../pidgin/gtkdialogs.c:226 ../pidgin/gtkdialogs.c:290
 msgid "Turkish"
 msgstr "টার্কিশ"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:227
 msgid "Urdu"
 msgstr "ঊর্দূ"
 
-#: ../pidgin/gtkdialogs.c:228
 msgid "Vietnamese"
 msgstr "ভিয়েতনামি"
 
-#: ../pidgin/gtkdialogs.c:228
 msgid "T.M.Thanh and the Gnome-Vi Team"
 msgstr "টি.এম.থানহ এবং নৌম-ভিআইর দল"
 
-#: ../pidgin/gtkdialogs.c:229 ../pidgin/gtkdialogs.c:291
 msgid "Simplified Chinese"
 msgstr "সহজবোধ্য চীনা"
 
 # tithi
-#: ../pidgin/gtkdialogs.c:230 ../pidgin/gtkdialogs.c:231
-#: ../pidgin/gtkdialogs.c:232
 msgid "Hong Kong Chinese"
 msgstr "হংকং চীনা"
 
-#: ../pidgin/gtkdialogs.c:233 ../pidgin/gtkdialogs.c:234
-#: ../pidgin/gtkdialogs.c:292
 msgid "Traditional Chinese"
 msgstr "ঐতিহ্যবাহী চীনা"
 
-#: ../pidgin/gtkdialogs.c:240
 msgid "Amharic"
 msgstr "আমহারিক"
 
-#: ../pidgin/gtkdialogs.c:410
 #, c-format
 msgid "About %s"
 msgstr "%s সম্পর্কে"
 
 # fix me tithi
-#: ../pidgin/gtkdialogs.c:446
 #, c-format
 msgid ""
 "%s is a graphical modular messaging client based on libpurple which is "
@@ -17025,54 +12342,59 @@
 "দ্বারা স্বত্তাধিকার সংরক্ষিত। প্রদায়কগনের সম্পূর্ণ তালিকার জন্য 'স্বত্তাধিকার সংরক্ষিত' "
 "ফাইল দেখুন।  এই প্রোগ্রামটির জন্য আমরা কোনো নিশ্চয়তা প্রদান করি না।<BR><BR>"
 
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+
 # fix me
-#: ../pidgin/gtkdialogs.c:464
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+#, fuzzy, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
 msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
 
-#: ../pidgin/gtkdialogs.c:469
+# fix me
+#, fuzzy, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+
 msgid "Current Developers"
 msgstr "বর্তমান ডেভেলপারগণ"
 
-#: ../pidgin/gtkdialogs.c:475
 msgid "Crazy Patch Writers"
 msgstr "ক্ষিপ্ত প্যাচ লেখকগণ"
 
-#: ../pidgin/gtkdialogs.c:481
 msgid "Retired Developers"
 msgstr "অবসরপ্রাপ্ত ডেভেলপার"
 
-#: ../pidgin/gtkdialogs.c:487
 msgid "Retired Crazy Patch Writers"
 msgstr "অবসরপ্রাপ্ত ক্ষিপ্ত প্যাচ লেখকগণ"
 
-#: ../pidgin/gtkdialogs.c:493
 msgid "Current Translators"
 msgstr "বর্তমান অনুবাদকবৃন্দ"
 
-#: ../pidgin/gtkdialogs.c:499
 msgid "Past Translators"
 msgstr "পুরনো অনুবাদকবৃন্দ"
 
-#: ../pidgin/gtkdialogs.c:503
 msgid "Debugging Information"
 msgstr "ডিবাগকরণ তথ্য"
 
-#: ../pidgin/gtkdialogs.c:719 ../pidgin/gtkdialogs.c:858
-#: ../pidgin/gtkdialogs.c:939
 msgid "_Name"
 msgstr "নাম (_N)"
 
-#: ../pidgin/gtkdialogs.c:724 ../pidgin/gtkdialogs.c:863
-#: ../pidgin/gtkdialogs.c:944
 msgid "_Account"
 msgstr "একাউন্ট (_A)"
 
-#: ../pidgin/gtkdialogs.c:871
 msgid "Get User Info"
 msgstr "ব্যবহারকারীর তথ্য গ্রহণ করুন"
 
-#: ../pidgin/gtkdialogs.c:873
 msgid ""
 "Please enter the username or alias of the person whose info you would like "
 "to view."
@@ -17080,36 +12402,28 @@
 "অনুগ্রহ করে আপনি যে ব্যক্তির তথ্য প্রদর্শন করতে চান তার ব্যবহারকারী-নাম বা উপনাম "
 "প্রবেশ করান।"
 
-#: ../pidgin/gtkdialogs.c:963
 msgid "View User Log"
 msgstr "ব্যবহারকারীর কার্যবিবরণী প্রদর্শন করুন"
 
-#: ../pidgin/gtkdialogs.c:985
 msgid "Alias Contact"
 msgstr "উপনামের যোগাযোগ"
 
-#: ../pidgin/gtkdialogs.c:986
 msgid "Enter an alias for this contact."
 msgstr "এই যোগাযোগের জন্য উপনাম প্রবেশ করান।"
 
-#: ../pidgin/gtkdialogs.c:1008
 #, c-format
 msgid "Enter an alias for %s."
 msgstr "%s-এর জন্য উপনাম প্রবেশ করান।"
 
-#: ../pidgin/gtkdialogs.c:1010
 msgid "Alias Buddy"
 msgstr "উপনাম বন্ধু"
 
-#: ../pidgin/gtkdialogs.c:1031
 msgid "Alias Chat"
 msgstr "উপনামের আড্ডা"
 
-#: ../pidgin/gtkdialogs.c:1032
 msgid "Enter an alias for this chat."
 msgstr "এই আড্ডার জন্য একটি উপনাম প্রবেশ করান।"
 
-#: ../pidgin/gtkdialogs.c:1071
 #, c-format
 msgid ""
 "You are about to remove the contact containing %s and %d other buddy from "
@@ -17124,30 +12438,24 @@
 "আপনি আপনার বন্ধু তালিকা থেকে  অন্য %s এবং %d বন্ধুগণের ধারনকারী যোগাযোগ অপসারণ "
 "করতে পারেন। আপনি কি অব্যাহত রাখতে চান?"
 
-#: ../pidgin/gtkdialogs.c:1079
 msgid "Remove Contact"
 msgstr "যোগাযোগ অপসারণ করুন"
 
-#: ../pidgin/gtkdialogs.c:1082
 msgid "_Remove Contact"
 msgstr "যোগাযোগ অপসারণ করুন (_R)"
 
-#: ../pidgin/gtkdialogs.c:1113
 #, c-format
 msgid ""
 "You are about to merge the group called %s into the group called %s. Do you "
 "want to continue?"
 msgstr "আপনি %1s নামের গ্রুপকে %2s গ্রুপে একত্রিত করছেন। আপনি কি অব্যাহত রাখতে চান?"
 
-#: ../pidgin/gtkdialogs.c:1120
 msgid "Merge Groups"
 msgstr "গ্রুপসমুহ একত্রিত করুন"
 
-#: ../pidgin/gtkdialogs.c:1123
 msgid "_Merge Groups"
 msgstr "গ্রুপসমুহ একত্রিত করুন (_M)"
 
-#: ../pidgin/gtkdialogs.c:1173
 #, c-format
 msgid ""
 "You are about to remove the group %s and all its members from your buddy "
@@ -17156,15 +12464,12 @@
 "আপনি %s গ্রুপ ও এর সকল সদস্যকে আপনার বন্ধু তালিকা থেকে অপসারণ করতে পারেন। আপনি কি "
 "অব্যাহত রাখতে চান?"
 
-#: ../pidgin/gtkdialogs.c:1176
 msgid "Remove Group"
 msgstr "গ্রুপ অপসারণ করুন"
 
-#: ../pidgin/gtkdialogs.c:1179
 msgid "_Remove Group"
 msgstr "গ্রুপ অপসারণ করুন (_R)"
 
-#: ../pidgin/gtkdialogs.c:1212
 #, c-format
 msgid ""
 "You are about to remove %s from your buddy list.  Do you want to continue?"
@@ -17172,15 +12477,12 @@
 "আপনি %s-কে আপনার বন্ধু তালিকা থেকে অপসারণ করতে পারেন।  আপনি কি অব্যাহত রাখতে "
 "চান?"
 
-#: ../pidgin/gtkdialogs.c:1215
 msgid "Remove Buddy"
 msgstr "বন্ধু অপসারণ করুন"
 
-#: ../pidgin/gtkdialogs.c:1218
 msgid "_Remove Buddy"
 msgstr "বন্ধু অপসাণ করুন (_R)"
 
-#: ../pidgin/gtkdialogs.c:1239
 #, c-format
 msgid ""
 "You are about to remove the chat %s from your buddy list.  Do you want to "
@@ -17188,266 +12490,204 @@
 msgstr ""
 "আপনি আপনার বন্ধু তালিকা হতে %s অপসারণ করতে পারেন।  আপনি কি অব্যাহত রাখতে চান?"
 
-#: ../pidgin/gtkdialogs.c:1242
 msgid "Remove Chat"
 msgstr "আড্ডা অপসারণ করুন"
 
-#: ../pidgin/gtkdialogs.c:1245
 msgid "_Remove Chat"
 msgstr "আড্ডা অপসারণ করুন (_R)"
 
-#: ../pidgin/gtkdocklet.c:152
 msgid "Right-click for more unread messages...\n"
 msgstr "আরও অপঠিত বার্তার জন্য ডান ক্লিক করুন...\n"
 
-#: ../pidgin/gtkdocklet.c:533
 msgid "_Change Status"
 msgstr "অবস্থা পরিবর্তন করুন (_C)"
 
-#: ../pidgin/gtkdocklet.c:681
 msgid "Show Buddy _List"
 msgstr "বন্ধু তালিকা প্রদর্শন করুন (_L)"
 
-#: ../pidgin/gtkdocklet.c:686
 msgid "_Unread Messages"
 msgstr "অপঠিত বার্তাসমূহ (_U)"
 
-#: ../pidgin/gtkdocklet.c:707
 msgid "New _Message..."
 msgstr "নতুন বার্তা...(_M)"
 
-#: ../pidgin/gtkdocklet.c:721
 msgid "_Accounts"
 msgstr "একাউন্টগুলো (_A)"
 
-#: ../pidgin/gtkdocklet.c:722
 msgid "Plu_gins"
 msgstr "প্লাগইন (_g)"
 
-#: ../pidgin/gtkdocklet.c:723
 msgid "Pr_eferences"
 msgstr "প্রাধিকারসমূহ (_e)"
 
-#: ../pidgin/gtkdocklet.c:727
 msgid "Mute _Sounds"
 msgstr "শব্দ বন্ধ রাখুন (_S)"
 
-#: ../pidgin/gtkdocklet.c:734
 msgid "_Blink on New Message"
 msgstr "নতুন বার্তায় পিট পিট করুন (_B)"
 
-#: ../pidgin/gtkdocklet.c:744
 msgid "_Quit"
 msgstr "প্রস্থান করুন (_Q)"
 
-#: ../pidgin/gtkft.c:154
 msgid "Not started"
 msgstr "আরম্ভ হয়নি"
 
-#: ../pidgin/gtkft.c:276
 msgid "<b>Receiving As:</b>"
 msgstr "<b>যেভাবে গ্রহণ করছে:</b>"
 
-#: ../pidgin/gtkft.c:278
 msgid "<b>Receiving From:</b>"
 msgstr "<b>যার থেকে গ্রহণ করছে:</b>"
 
-#: ../pidgin/gtkft.c:282
 msgid "<b>Sending To:</b>"
 msgstr "<b>যাকে পাঠানো হচ্ছে:</b>"
 
-#: ../pidgin/gtkft.c:284
 msgid "<b>Sending As:</b>"
 msgstr "<b>যেভাবে পাঠানো হচ্ছে:</b>"
 
-#: ../pidgin/gtkft.c:500
 msgid "There is no application configured to open this type of file."
 msgstr "এই ধরনের ফাইল খোলার জন্য কোনো প্রয়োগন বিন্যাসিত নেই।"
 
-#: ../pidgin/gtkft.c:505
 msgid "An error occurred while opening the file."
 msgstr "ফাইলটি খোলার সময়ে একটি ত্রুটি ঘটেছে।"
 
-#: ../pidgin/gtkft.c:542
 #, c-format
 msgid "Error launching %s: %s"
 msgstr "%s শুরুকরণে ত্রুটি: %s"
 
-#: ../pidgin/gtkft.c:551
 #, c-format
 msgid "Error running %s"
 msgstr "%s চালুকরণে ত্রুটি"
 
-#: ../pidgin/gtkft.c:552
 #, c-format
 msgid "Process returned error code %d"
 msgstr "প্রক্রিয়াটি %d ত্রুটি কোড ফেরত পাঠিয়েছে"
 
-#: ../pidgin/gtkft.c:699
 msgid "Filename:"
 msgstr "ফাইলের-নাম:"
 
-#: ../pidgin/gtkft.c:700
 msgid "Local File:"
 msgstr "স্থানীয় ফাইল:"
 
-#: ../pidgin/gtkft.c:702
 msgid "Speed:"
 msgstr "গতি:"
 
-#: ../pidgin/gtkft.c:703
 msgid "Time Elapsed:"
 msgstr "অতিবাহিত সময়:"
 
-#: ../pidgin/gtkft.c:704
 msgid "Time Remaining:"
 msgstr "অবশিষ্ট সময়:"
 
-#: ../pidgin/gtkft.c:783
 msgid "Close this window when all transfers _finish"
 msgstr "সকল স্থানান্তর শেষ হলে এই উইন্ডোটি বন্ধ করুন (_f)"
 
-#: ../pidgin/gtkft.c:793
 msgid "C_lear finished transfers"
 msgstr "সমাপ্ত স্থানান্তর পরিস্কার করুন (_l)"
 
 #. "Download Details" arrow
-#: ../pidgin/gtkft.c:802
 msgid "File transfer _details"
 msgstr "ফাইল স্থানান্তরের বিবরণ (_d)"
 
 #. Pause button
-#: ../pidgin/gtkft.c:820 ../pidgin/pidginstock.c:97
 msgid "_Pause"
 msgstr "বিরতি (_P)"
 
 #. Resume button
-#: ../pidgin/gtkft.c:825
 msgid "_Resume"
 msgstr "পুনরায় শুরু করুন (_R)"
 
-#: ../pidgin/gtkimhtml.c:905
 msgid "Paste as Plain _Text"
 msgstr "সরল পাঠ হিসেবে প্রতিলেপন করুন (_T)"
 
-#: ../pidgin/gtkimhtml.c:922 ../pidgin/gtkimhtmltoolbar.c:1325
 msgid "_Reset formatting"
 msgstr "বিন্যাসকরণ পুনঃবিন্যাস করুন (_R)"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:930
 msgid "Disable _smileys in selected text"
 msgstr "নির্বাচিত পাঠে স্মাইলীগুলো নিষ্ক্রিয় করুন (_s)"
 
-#: ../pidgin/gtkimhtml.c:1490
 msgid "Hyperlink color"
 msgstr "হাইপারলিঙ্কের রং"
 
-#: ../pidgin/gtkimhtml.c:1491
 msgid "Color to draw hyperlinks."
 msgstr "হাইপারলিঙ্ক আঁকার রং।"
 
 # fix me
-#: ../pidgin/gtkimhtml.c:1494
 msgid "Hyperlink visited color"
 msgstr "হাইপারলিঙ্কের পরিদর্শিত রং"
 
-#: ../pidgin/gtkimhtml.c:1495
 msgid "Color to draw hyperlinks after it has been visited (or activated)."
 msgstr "হাইপারলিঙ্ক পরিদর্শন (বা সক্রিয়) করার পর এটা আকাঁর রং।"
 
-#: ../pidgin/gtkimhtml.c:1498
 msgid "Hyperlink prelight color"
 msgstr "হাইপারলিঙ্ক প্রাক-হালকা রং"
 
-#: ../pidgin/gtkimhtml.c:1499
 msgid "Color to draw hyperlinks when mouse is over them."
 msgstr "হাইপারলিঙ্কের ওপর মাউস থাকাকালীন এটা আকার রং"
 
-#: ../pidgin/gtkimhtml.c:1502 ../pidgin/plugins/pidginrc.c:55
 msgid "Sent Message Name Color"
 msgstr "প্রেরিত বার্তার নামের রং"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:1503
 msgid "Color to draw the name of a message you sent."
 msgstr "আপনার প্রেরিত বার্তাসমূহের নাম আকার রং।"
 
-#: ../pidgin/gtkimhtml.c:1506 ../pidgin/plugins/pidginrc.c:56
 msgid "Received Message Name Color"
 msgstr "বার্তার নামের রং গ্রহণ করা হয়েছে"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:1507
 msgid "Color to draw the name of a message you received."
 msgstr "আপনার গৃহীত বার্তাসমূহের নাম আকার রং।"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:1510
 msgid "\"Attention\" Name Color"
 msgstr "\"মনোযোগ\" রং এর নাম"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:1511
 msgid "Color to draw the name of a message you received containing your name."
 msgstr "আপনার নাম ধারণকারী যে বার্তাটি আপনি গ্রহণ করেছেন তার নাম আকার রং।"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:1514 ../pidgin/plugins/pidginrc.c:58
 msgid "Action Message Name Color"
 msgstr "কার্য বার্তা নামের রং"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:1515 ../pidgin/gtkimhtml.c:1519
-#: ../pidgin/gtkimhtml.c:1523
 msgid "Color to draw the name of an action message."
 msgstr "একটি কর্ম বার্তার নাম আকার রং।"
 
 # fix me tithi
-#: ../pidgin/gtkimhtml.c:1518
 msgid "Action Message Name Color for Whispered Message"
 msgstr "গোপনীয় বার্তার জন্য কার্য বার্তার নামের রং"
 
 # fix- me tithi
-#: ../pidgin/gtkimhtml.c:1522
 msgid "Whisper Message Name Color"
 msgstr "গোপনীয় বার্তার নামের রং"
 
-#: ../pidgin/gtkimhtml.c:1532
 msgid "Typing notification color"
 msgstr "প্রজ্ঞাপন রং টাইপ করছে"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:1533
 msgid "The color to use for the typing notification font"
 msgstr "টাইপকরণ প্রজ্ঞাপন ফন্টের জন্য ব্যবহারের রং"
 
-#: ../pidgin/gtkimhtml.c:1536
 msgid "Typing notification font"
 msgstr "টাইপকরণ প্রজ্ঞাপন ফন্ট"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:1537
 msgid "The font to use for the typing notification"
 msgstr "টাইপকরণ প্রজ্ঞাপনের জন্য ব্যবহারের ফন্ট4"
 
-#: ../pidgin/gtkimhtml.c:1540 ../pidgin/gtkimhtml.c:1541
 msgid "Enable typing notification"
 msgstr "টাইপকরণ প্রজ্ঞাপন সক্রিয় করুন"
 
-#: ../pidgin/gtkimhtml.c:1777
 msgid "_Copy Email Address"
 msgstr "ই-মেইল ঠিকানা অনুলিপি করুন (_C)"
 
-#: ../pidgin/gtkimhtml.c:1789
 msgid "_Open Link in Browser"
 msgstr "ব্রাউজারে লিঙ্ক খুলুন (_O)"
 
-#: ../pidgin/gtkimhtml.c:1799
 msgid "_Copy Link Location"
 msgstr "লিঙ্ক অবস্থান অনুলিপি করুন (_C)"
 
-#: ../pidgin/gtkimhtml.c:3686
 msgid ""
 "<span size='larger' weight='bold'>Unrecognized file type</span>\n"
 "\n"
@@ -17457,7 +12697,6 @@
 "\n"
 "PNG তে পূর্বনির্ধারিত।"
 
-#: ../pidgin/gtkimhtml.c:3689
 msgid ""
 "Unrecognized file type\n"
 "\n"
@@ -17467,7 +12706,6 @@
 "\n"
 "PNG তে পূর্বনির্ধারিত।।"
 
-#: ../pidgin/gtkimhtml.c:3718
 #, c-format
 msgid ""
 "<span size='larger' weight='bold'>Error saving image</span>\n"
@@ -17478,7 +12716,6 @@
 "\n"
 "%s"
 
-#: ../pidgin/gtkimhtml.c:3721
 #, c-format
 msgid ""
 "Error saving image\n"
@@ -17489,40 +12726,33 @@
 "\n"
 "%s"
 
-#: ../pidgin/gtkimhtml.c:3802 ../pidgin/gtkimhtml.c:3814
 msgid "Save Image"
 msgstr "চিত্র সংরক্ষণ করুন"
 
-#: ../pidgin/gtkimhtml.c:3851
+#, c-format
 msgid "_Save Image..."
 msgstr "চিত্র সংরক্ষণ করুন... (_S)"
 
 # tithi
-#: ../pidgin/gtkimhtml.c:3865
+#, c-format
 msgid "_Add Custom Smiley..."
 msgstr "পছন্দসই স্মাইলী যোগ করুন... (_A)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:165
 msgid "Select Font"
 msgstr "ফন্ট নির্বাচন করুন"
 
-#: ../pidgin/gtkimhtmltoolbar.c:245
 msgid "Select Text Color"
 msgstr "পাঠ রং নির্বাচন করুন"
 
-#: ../pidgin/gtkimhtmltoolbar.c:325
 msgid "Select Background Color"
 msgstr "প্রেক্ষাপট রং নির্বাচন করুন"
 
-#: ../pidgin/gtkimhtmltoolbar.c:414
 msgid "_URL"
 msgstr "ইউআরএল (_U)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:422
 msgid "_Description"
 msgstr "বিবরণ (_D)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:425
 msgid ""
 "Please enter the URL and description of the link that you want to insert. "
 "The description is optional."
@@ -17530,29 +12760,23 @@
 "অনুগ্রহ করে আপনি যে লিঙ্ক প্রবেশ করাতে চান তার ইউআরএল ও বিবরণ প্রবেশ করান। বিবরণ "
 "ঐচ্ছিক।"
 
-#: ../pidgin/gtkimhtmltoolbar.c:429
 msgid "Please enter the URL of the link that you want to insert."
 msgstr "অনুগ্রহ করে আপনি যে লিঙ্ক প্রবেশ করাতে চান তার ইউআরএল প্রবেশ করান।"
 
-#: ../pidgin/gtkimhtmltoolbar.c:434 ../pidgin/gtkimhtmltoolbar.c:1232
 msgid "Insert Link"
 msgstr "লিঙ্ক প্রবেশ করান"
 
-#: ../pidgin/gtkimhtmltoolbar.c:438 ../pidgin/gtkimhtmltoolbar.c:1393
 msgid "_Insert"
 msgstr "প্রবেশ করান (_I)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:519
 #, c-format
 msgid "Failed to store image: %s\n"
 msgstr "চিত্র সংরক্ষণে ব্যর্থ: %s\n"
 
-#: ../pidgin/gtkimhtmltoolbar.c:545 ../pidgin/gtkimhtmltoolbar.c:555
 msgid "Insert Image"
 msgstr "চিত্র প্রবেশ করান"
 
 # tithi
-#: ../pidgin/gtkimhtmltoolbar.c:684
 #, c-format
 msgid ""
 "This smiley is disabled because a custom smiley exists for this shortcut:\n"
@@ -17561,156 +12785,121 @@
 "এই স্মাইলীটি নিষ্ক্রিয় কারণ এই শর্টকাটটির জন্য একটি পছন্দসই স্মাইলী বিদ্যমান:\n"
 "%s"
 
-#: ../pidgin/gtkimhtmltoolbar.c:815
 msgid "Smile!"
 msgstr "হাসি!"
 
 # fix-me tithi
-#: ../pidgin/gtkimhtmltoolbar.c:830
 msgid "_Manage custom smileys"
 msgstr "পছন্দসই স্মাইলীগুলো নিয়ন্ত্রণ করুন (_M)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:867
 msgid "This theme has no available smileys."
 msgstr "এই থীমের কোনো স্মাইলি সহজলভ্য নেই।"
 
-#: ../pidgin/gtkimhtmltoolbar.c:973 ../pidgin/gtkimhtmltoolbar.c:1350
 msgid "_Font"
 msgstr "ফন্ট (_F)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1184
 msgid "Group Items"
 msgstr "গ্রুপের বিষয়োপকরণসমূহ"
 
 # tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1184
 msgid "Ungroup Items"
 msgstr "গ্রুপহীন বিষয়োপকরণসমূহ"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1218 ../pidgin/plugins/convcolors.c:342
 msgid "Bold"
 msgstr "মোটা"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1219 ../pidgin/plugins/convcolors.c:351
 msgid "Italic"
 msgstr "তীর্যক"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1220 ../pidgin/plugins/convcolors.c:360
 msgid "Underline"
 msgstr "নিম্নরেখা"
 
 # tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1221
 msgid "Strikethrough"
 msgstr "অবচ্ছেদন রেখা"
 
 # tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1223
 msgid "Increase Font Size"
 msgstr "ফন্টের আকার বৃদ্ধি করুন"
 
 # tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1224
 msgid "Decrease Font Size"
 msgstr "ফন্টের আকার হ্রাস করুন"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1226
 msgid "Font Face"
 msgstr "ফন্টের রুপ"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1227
 msgid "Background Color"
 msgstr "প্রেক্ষাপট রং"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1228
 msgid "Foreground Color"
 msgstr "সম্মুখভাগের রং"
 
 # tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1230
 msgid "Reset Formatting"
 msgstr "বিন্যাসকরণ পুনঃবিন্যাস করুন"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1233
 msgid "Insert IM Image"
 msgstr "আইএম চিত্র প্রবেশ করান"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1234
 msgid "Insert Smiley"
 msgstr "স্মাইলি প্রবেশ করান"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1310
 msgid "<b>_Bold</b>"
 msgstr "<b>মোটা (_B)</b>"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1311
 msgid "<i>_Italic</i>"
 msgstr "<i>তীর্যক (_I)</i>"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1312
 msgid "<u>_Underline</u>"
 msgstr "<u>নিম্নরেখা (_U)</u>"
 
 # tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1313
 msgid "<span strikethrough='true'>Strikethrough</span>"
 msgstr "<span strikethrough='true'>অবচ্ছেদন রেখা</span>"
 
 # fix me
-#: ../pidgin/gtkimhtmltoolbar.c:1314
 msgid "<span size='larger'>_Larger</span>"
 msgstr "<span size='larger'>অপেক্ষাকৃত বড় (_L)</span>"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1316
 msgid "_Normal"
 msgstr "স্বাভাবিক (_N)"
 
 # tithi
-#: ../pidgin/gtkimhtmltoolbar.c:1318
 msgid "<span size='smaller'>_Smaller</span>"
 msgstr "<span size='smaller'>অপেক্ষাকৃত ছোট (_S)</span>"
 
 #. If we want to show the formatting for the following items, we would
 #. * need to update them when formatting changes. The above items don't need
 #. * no updating nor nothin'
-#: ../pidgin/gtkimhtmltoolbar.c:1322
 msgid "_Font face"
 msgstr "ফন্টের রুপ (_F)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1323
 msgid "Foreground _color"
 msgstr "সম্মুখভাগের রং (_c)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1324
 msgid "Bac_kground color"
 msgstr "প্রেক্ষাপটের রং (_k)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1401
 msgid "_Image"
 msgstr "চিত্র (_I)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1407
 msgid "_Link"
 msgstr "লিঙ্ক (_L)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1413
 msgid "_Horizontal rule"
 msgstr "অনুভূমিক নিয়ম (_H)"
 
-#: ../pidgin/gtkimhtmltoolbar.c:1435
 msgid "_Smile!"
 msgstr "হাসি! (_S)"
 
-#: ../pidgin/gtklog.c:245
 msgid "Log Deletion Failed"
 msgstr "কার্যবিবরণী শনাক্তকরণ ব্যর্থ হয়েছে"
 
 # tithi
-#: ../pidgin/gtklog.c:246
 msgid "Check permissions and try again."
 msgstr "অনুমতি যাচাই করুন এবং আবার চেষ্টা করুন।"
 
-#: ../pidgin/gtklog.c:292
 #, c-format
 msgid ""
 "Are you sure you want to permanently delete the log of the conversation with "
@@ -17719,7 +12908,6 @@
 "আপনি কি নিশ্চিত আপনি স্থায়ীভাবে %2s তে শুরু হওয়া কথোপকথনের কার্যবিবরণী %1s সহ মুছে "
 "ফেলতে চান?"
 
-#: ../pidgin/gtklog.c:303
 #, c-format
 msgid ""
 "Are you sure you want to permanently delete the log of the conversation in %"
@@ -17728,7 +12916,6 @@
 "আপনি কি নিশ্চিত আপনি স্থায়ীভাবে %2s তে শুরু হওয়া কথোপকথনের কার্যবিবরণী %1s এ মুছে "
 "ফেলতে চান?"
 
-#: ../pidgin/gtklog.c:308
 #, c-format
 msgid ""
 "Are you sure you want to permanently delete the system log which started at %"
@@ -17736,38 +12923,31 @@
 msgstr ""
 "আপনি কি নিশ্চিত আপনি স্থায়ীভাবে %1s তে শুরু হওয়া সিস্টেম কার্যবিবরণী মুছে ফেলতে চান?"
 
-#: ../pidgin/gtklog.c:323
 msgid "Delete Log?"
 msgstr "কার্যবিবরণী কি মুছতে চান?"
 
-#: ../pidgin/gtklog.c:334
 msgid "Delete Log..."
 msgstr "কার্যবিবরণী মুছুন..."
 
 # fix me
-#: ../pidgin/gtklog.c:453
 #, c-format
 msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
 msgstr "<span size='larger' weight='bold'>%s এর উপর %s এ কথোপকথন</span>"
 
 # fix me
-#: ../pidgin/gtklog.c:456
 #, c-format
 msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>"
 msgstr "<span size='larger' weight='bold'>%s এর উপর %s এর সাথে কথোপকথন</span>"
 
 #. Steal the "HELP" response and use it to trigger browsing to the logs folder
-#: ../pidgin/gtklog.c:581
 msgid "_Browse logs folder"
 msgstr "কার্যবিবরণীর ফোল্ডার ব্রাউজ করুন (_B)"
 
-#: ../pidgin/gtkmain.c:384
 #, c-format
 msgid "%s %s. Try `%s -h' for more information.\n"
 msgstr "%1s %2s। আরও তথ্যের জন্য `%3s -h' এ চেষ্টা করুন।\n"
 
 # fix me
-#: ../pidgin/gtkmain.c:387
 #, c-format
 msgid ""
 "%s %s\n"
@@ -17800,7 +12980,6 @@
 "  -v, --version       বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n"
 
 # fix me
-#: ../pidgin/gtkmain.c:400
 #, c-format
 msgid ""
 "%s %s\n"
@@ -17830,7 +13009,6 @@
 "                       এটা ব্যতিত শুধুমাত্র প্রথম একাউন্ট সক্রিয় হবে)। \n"
 "  -v, --version       বর্তমান সংস্করণ প্রদর্শন করুন এবং ত্যাগ করুন\n"
 
-#: ../pidgin/gtkmain.c:530
 #, c-format
 msgid ""
 "%s %s has segfaulted and attempted to dump a core file.\n"
@@ -17859,48 +13037,42 @@
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
-#: ../pidgin/gtkmain.c:720 ../pidgin/pidgin.h:51
 msgid "Pidgin"
 msgstr "পিজিন"
 
-#: ../pidgin/gtknotify.c:362
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
 msgid "Open All Messages"
 msgstr "সকল বার্তা খুলুন"
 
-#: ../pidgin/gtknotify.c:420
 msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
 msgstr "<span weight=\"bold\" size=\"larger\">আপনার মেইল আছে!</span>"
 
-#: ../pidgin/gtknotify.c:572
 #, c-format
 msgid "%s has %d new message."
 msgid_plural "%s has %d new messages."
 msgstr[0] "%s-এর %dটি নতুন বার্তা আছে।"
 msgstr[1] "%s-এর  %dগুলো নতুন বার্তা আছে।"
 
-#: ../pidgin/gtknotify.c:601
 #, c-format
 msgid "<b>%d new email.</b>"
 msgid_plural "<b>%d new emails.</b>"
 msgstr[0] " <b>%d টি নতুন ই-মেইল।</b>"
 msgstr[1] "<b>%dগুলো নতুন ই-মেইল।</b>"
 
-#: ../pidgin/gtknotify.c:1032
 #, c-format
 msgid "The browser command \"%s\" is invalid."
 msgstr "ব্রাউজার নির্দেশ \"%s\" অবৈধ।"
 
-#: ../pidgin/gtknotify.c:1034 ../pidgin/gtknotify.c:1046
-#: ../pidgin/gtknotify.c:1059 ../pidgin/gtknotify.c:1196
 msgid "Unable to open URL"
 msgstr "ইউআরএল খুলতে সমর্থ নয়"
 
-#: ../pidgin/gtknotify.c:1044 ../pidgin/gtknotify.c:1057
 #, c-format
 msgid "Error launching \"%s\": %s"
 msgstr "\"%1s\" শুরুকরণে ত্রুটি: %2s"
 
-#: ../pidgin/gtknotify.c:1197
 msgid ""
 "The 'Manual' browser command has been chosen, but no command has been set."
 msgstr ""
@@ -17908,25 +13080,20 @@
 "হয়নি।"
 
 # tithi
-#: ../pidgin/gtkplugin.c:278
 msgid "The following plugins will be unloaded."
 msgstr "নিম্নোক্ত প্লাগইনগুলো লোড মুক্ত করা হবে।"
 
 # tithi
-#: ../pidgin/gtkplugin.c:297
 msgid "Multiple plugins will be unloaded."
 msgstr "বহুবিধ প্লাগইনগুলো লোড মুক্ত করা হবে।"
 
-#: ../pidgin/gtkplugin.c:301
 msgid "Unload Plugins"
 msgstr "প্লাগইন লোড মুক্ত করুন"
 
-#: ../pidgin/gtkplugin.c:318
 msgid "Could not unload plugin"
 msgstr "প্লাগইন লোড মুক্ত করা যায়নি"
 
 # tithi
-#: ../pidgin/gtkplugin.c:319
 msgid ""
 "The plugin could not be unloaded now, but will be disabled at the next "
 "startup."
@@ -17934,7 +13101,6 @@
 "এই প্লাগইনটি এখন লোড মুক্ত করা যাচ্ছে না, কিন্তু পরবর্তী শুরুতে নিষ্ক্রিয় করা হবে।"
 
 # tithi
-#: ../pidgin/gtkplugin.c:456
 #, c-format
 msgid ""
 "<span foreground=\"red\" weight=\"bold\">Error: %s\n"
@@ -17943,139 +13109,106 @@
 "<span foreground=\"red\" weight=\"bold\">ত্রুটি: %s\n"
 "হালনাগাদের জন্য প্লাগইন ওয়েবসাইট পরীক্ষা করুন।</span>"
 
-#: ../pidgin/gtkplugin.c:585
 msgid "Author"
 msgstr "লেখক"
 
-#: ../pidgin/gtkplugin.c:663
 msgid "<b>Written by:</b>"
 msgstr "<b>লেখক:</b>"
 
-#: ../pidgin/gtkplugin.c:687
 msgid "<b>Web site:</b>"
 msgstr "<b>ওয়েব সাইট:</b>"
 
-#: ../pidgin/gtkplugin.c:696
 msgid "<b>Filename:</b>"
 msgstr "<b>ফাইলনাম:</b>"
 
-#: ../pidgin/gtkplugin.c:724
 msgid "Configure Pl_ugin"
 msgstr "প্লাগইন পছন্দসই বিন্যাস করুন (_u)"
 
-#: ../pidgin/gtkplugin.c:792
 msgid "<b>Plugin Details</b>"
 msgstr "<b>প্লাগইনের বর্ণনা</b>"
 
-#: ../pidgin/gtkpounce.c:158
 msgid "Select a file"
 msgstr "একটি ফাইল নির্বাচন করুন"
 
 #. Create the "Pounce on Whom" frame.
-#: ../pidgin/gtkpounce.c:553
 msgid "Pounce on Whom"
 msgstr "কাকে পাউন্স করেন"
 
-#: ../pidgin/gtkpounce.c:580
 msgid "_Buddy name:"
 msgstr "বন্ধুর নাম (_B):"
 
-#: ../pidgin/gtkpounce.c:614
 msgid "Si_gns on"
 msgstr "সাইন অন (_g)"
 
-#: ../pidgin/gtkpounce.c:616
 msgid "Signs o_ff"
 msgstr "সাইন অফ (_f)"
 
-#: ../pidgin/gtkpounce.c:618
 msgid "Goes a_way"
 msgstr "অনুপস্থিত (_w)"
 
-#: ../pidgin/gtkpounce.c:620
 msgid "Ret_urns from away"
 msgstr "অনুপস্থিত অবস্থা থেকে ফিরে এসেছে (_u)"
 
-#: ../pidgin/gtkpounce.c:622
 msgid "Becomes _idle"
 msgstr "এখন অলস (_i)"
 
-#: ../pidgin/gtkpounce.c:624
 msgid "Is no longer i_dle"
 msgstr "আর অলস থাকবে না (_d)"
 
-#: ../pidgin/gtkpounce.c:626
 msgid "Starts _typing"
 msgstr "টাইপ শুরু করেছে (_t)"
 
 # tithi
-#: ../pidgin/gtkpounce.c:628
 msgid "P_auses while typing"
 msgstr "টাইপের সময় বন্ধ রাখুন (_a)"
 
-#: ../pidgin/gtkpounce.c:630
 msgid "Stops t_yping"
 msgstr "টাইপ বন্ধ করছে (_y)"
 
-#: ../pidgin/gtkpounce.c:632
 msgid "Sends a _message"
 msgstr "বার্তা পাঠায় (_m)"
 
-#: ../pidgin/gtkpounce.c:675
 msgid "Ope_n an IM window"
 msgstr "একটি আইএম উইন্ডো খুলুন (_n)"
 
-#: ../pidgin/gtkpounce.c:677
 msgid "_Pop up a notification"
 msgstr "একটি প্রজ্ঞাপন পপআপ করুন (_P)"
 
-#: ../pidgin/gtkpounce.c:679
 msgid "Send a _message"
 msgstr "একটি বার্তা পাঠান (_m)"
 
-#: ../pidgin/gtkpounce.c:681
 msgid "E_xecute a command"
 msgstr "একটি নির্দেশ কার্যকর করুন  (_x)"
 
-#: ../pidgin/gtkpounce.c:683
 msgid "P_lay a sound"
 msgstr "শব্দ বাজান (_l)"
 
-#: ../pidgin/gtkpounce.c:689
 msgid "Brows_e..."
 msgstr "ব্রাউজ করুন... (_e)"
 
-#: ../pidgin/gtkpounce.c:693
 msgid "Br_owse..."
 msgstr "ব্রাউজ করুন... (_o)"
 
-#: ../pidgin/gtkpounce.c:694 ../pidgin/gtkprefs.c:2031
 msgid "Pre_view"
 msgstr "প্রাকদর্শন (_v)"
 
-#: ../pidgin/gtkpounce.c:834
 msgid "P_ounce only when my status is not Available"
 msgstr "আমার অবস্থা যখন সহজলভ্য নয় তখন পাউন্স করুন (_o)"
 
 # tithi
-#: ../pidgin/gtkpounce.c:839
 msgid "_Recurring"
 msgstr "পুনরাবৃত্ত করছে (_R)"
 
-#: ../pidgin/gtkpounce.c:1284
 msgid "Pounce Target"
 msgstr "পাউন্সের লক্ষ্য"
 
-#: ../pidgin/gtkprefs.c:458
 msgid "Smiley theme failed to unpack."
 msgstr "স্মাইলী থীম প্যাকহীন করতে ব্যর্থ হয়েছে"
 
 # tithi
-#: ../pidgin/gtkprefs.c:593
 msgid "Install Theme"
 msgstr "থীম সংস্থাপন করুন"
 
-#: ../pidgin/gtkprefs.c:646
 msgid ""
 "Select a smiley theme that you would like to use from the list below. New "
 "themes can be installed by dragging and dropping them onto the theme list."
@@ -18083,154 +13216,118 @@
 "আপনি যে স্মাইলি থীম ব্যবহার করতে চান তা নিম্নবর্তী তালিকা থেকে বাছাই করুন। নতুন "
 "থীম থীমের তালিকায় টানা ও ছাড়ার মাধ্যমে তাদের সংস্থাপন করতে পারেন।"
 
-#: ../pidgin/gtkprefs.c:681
 msgid "Icon"
 msgstr "আইকন"
 
 # tithi
-#: ../pidgin/gtkprefs.c:891
 msgid "Keyboard Shortcuts"
 msgstr "কীবোর্ড শর্টকাট"
 
-#: ../pidgin/gtkprefs.c:911
 msgid "Cl_ose conversations with the Escape key"
 msgstr "Escape কী দ্বারা কথোপকথনসমূহ বন্ধ করুন (_o)"
 
-#: ../pidgin/gtkprefs.c:940
 msgid "System Tray Icon"
 msgstr "সিস্টেম ট্রে এর আইকন"
 
-#: ../pidgin/gtkprefs.c:941
 msgid "_Show system tray icon:"
 msgstr "সিস্টেম ট্রে এর আইকন প্রদর্শন করুন (_S):"
 
-#: ../pidgin/gtkprefs.c:944
 msgid "On unread messages"
 msgstr "অপঠিত বার্তাসমূহে"
 
-#: ../pidgin/gtkprefs.c:950
 msgid "Conversation Window Hiding"
 msgstr "কথোপকথন উইন্ডো লুকিয়ে ফেলছে"
 
-#: ../pidgin/gtkprefs.c:951
 msgid "_Hide new IM conversations:"
 msgstr "নতুন কথোপকথন IM লুকিয়ে রাখুন (_H):"
 
-#: ../pidgin/gtkprefs.c:954 ../pidgin/gtkprefs.c:2095
 msgid "When away"
 msgstr "যখন অনুপস্থিত"
 
 #. All the tab options!
-#: ../pidgin/gtkprefs.c:962
 msgid "Tabs"
 msgstr "ট্যাবসমূহ"
 
-#: ../pidgin/gtkprefs.c:964
 msgid "Show IMs and chats in _tabbed windows"
 msgstr "আইএম ও আড্ডাসমূহ ট্যাবকৃত উইন্ডোতে প্রদর্শন করুন (_t)"
 
-#: ../pidgin/gtkprefs.c:978
 msgid "Show close b_utton on tabs"
 msgstr "ট্যাবে বন্ধ বোতাম প্রদর্শন করুন (_u)"
 
-#: ../pidgin/gtkprefs.c:981
 msgid "_Placement:"
 msgstr "অবস্থান (_P):"
 
-#: ../pidgin/gtkprefs.c:983
 msgid "Top"
 msgstr "উপর"
 
-#: ../pidgin/gtkprefs.c:984
 msgid "Bottom"
 msgstr "নীচ"
 
-#: ../pidgin/gtkprefs.c:985
 msgid "Left"
 msgstr "বাম"
 
-#: ../pidgin/gtkprefs.c:986
 msgid "Right"
 msgstr "ডান"
 
-#: ../pidgin/gtkprefs.c:988
 msgid "Left Vertical"
 msgstr "বাম উলম্ব"
 
-#: ../pidgin/gtkprefs.c:989
 msgid "Right Vertical"
 msgstr "ডান উলম্ব"
 
-#: ../pidgin/gtkprefs.c:996
 msgid "N_ew conversations:"
 msgstr "নতুন কথোপকথন (_e):"
 
-#: ../pidgin/gtkprefs.c:1045
 msgid "Show _formatting on incoming messages"
 msgstr "আগত বার্তাসমূহে বিন্যাসকরণ প্রদর্শন করুন (_f)"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1047
 msgid "Close IMs immediately when the tab is closed"
 msgstr "ট্যাব বন্ধ করার সময় IM তাৎ‍ক্ষণিকভাবে বন্ধ করুন"
 
-#: ../pidgin/gtkprefs.c:1050
 msgid "Show _detailed information"
 msgstr "বিস্তারিত তথ্য প্রদর্শন করুন (_d)"
 
-#: ../pidgin/gtkprefs.c:1052
 msgid "Enable buddy ic_on animation"
 msgstr "এ্যানিমেশনে বন্ধুর আইকন সক্রিয় করুন (_o)"
 
-#: ../pidgin/gtkprefs.c:1059
 msgid "_Notify buddies that you are typing to them"
 msgstr "আপনি যা টাইপ করছেন তা বন্ধুদের অবগত করুন (_N)"
 
-#: ../pidgin/gtkprefs.c:1062
 msgid "Highlight _misspelled words"
 msgstr "ভুল বানানের শব্দ হাইলাইট করুন (_m)"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1066
 msgid "Use smooth-scrolling"
 msgstr "মসৃন-স্ক্রলিং ব্যবহার করুন"
 
-#: ../pidgin/gtkprefs.c:1069
 msgid "F_lash window when IMs are received"
 msgstr "আইএম গ্রহণ করলে উইন্ডো ফ্ল্যাশ দিন (_l)"
 
-#: ../pidgin/gtkprefs.c:1071
 msgid "Minimi_ze new conversation windows"
 msgstr "নতুন কথোপকথন উইন্ডো নূন্যতম করুন (_z)"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1075
 msgid "Minimum input area height in lines:"
 msgstr "লাইনের ন্যুনতম ইনপুট এলাকার উচ্চতা:"
 
-#: ../pidgin/gtkprefs.c:1081
 msgid "Font"
 msgstr "ফন্ট"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1083
 msgid "Use document font from _theme"
 msgstr "থীম থেকে নথির ফন্ট ব্যবহার করুন (_t)"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1085
 msgid "Use font from _theme"
 msgstr "থীম থেকে ফন্ট ব্যবহার করুন (_t)"
 
-#: ../pidgin/gtkprefs.c:1091
 msgid "Conversation _font:"
 msgstr "কথোপকথন ফন্ট (_f):"
 
-#: ../pidgin/gtkprefs.c:1098
 msgid "Default Formatting"
 msgstr "পুর্বনির্ধারিত বিন্যাসকরণ"
 
-#: ../pidgin/gtkprefs.c:1117
 msgid ""
 "This is how your outgoing message text will appear when you use protocols "
 "that support formatting."
@@ -18239,68 +13336,53 @@
 "এমনভাবে উপস্থিত হবে।"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1177
 msgid "Cannot start proxy configuration program."
 msgstr "প্রক্সি বিন্যাসন প্রোগ্রাম শুরু করতে পারে না।"
 
-#: ../pidgin/gtkprefs.c:1189
 msgid "Cannot start browser configuration program."
 msgstr "ব্রাউজারের বিন্যাসন প্রোগ্রাম শুরু করতে পারে না।"
 
-#: ../pidgin/gtkprefs.c:1209
 msgid "ST_UN server:"
 msgstr "STUN সার্ভার (_U):"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1221
 msgid "<span style=\"italic\">Example: stunserver.org</span>"
 msgstr "<span style=\"italic\">উদাহরণ: স্ট্যানসার্ভার.অর্গ</span>"
 
-#: ../pidgin/gtkprefs.c:1225
 msgid "_Autodetect IP address"
 msgstr "স্বয়ং-শনাক্ত আইপি ঠিকানা (_A)"
 
-#: ../pidgin/gtkprefs.c:1234
 msgid "Public _IP:"
 msgstr "সর্বসাধারণ আইপি (_I):"
 
-#: ../pidgin/gtkprefs.c:1265
 msgid "Ports"
 msgstr "পোর্টসমূহ"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1268
 msgid "_Enable automatic router port forwarding"
 msgstr "স্বয়ংক্রিয় রাউটার পোর্ট অগ্রগমন সক্রিয় করুন (_E)"
 
-#: ../pidgin/gtkprefs.c:1271
 msgid "_Manually specify range of ports to listen on"
 msgstr "শুনতে পোর্টের সীমা নিজের হাতে উল্লেখ করুন (_M)"
 
-#: ../pidgin/gtkprefs.c:1274
 msgid "_Start port:"
 msgstr "শুরুর পোর্ট (_S):"
 
-#: ../pidgin/gtkprefs.c:1281
 msgid "_End port:"
 msgstr "শেষ পোর্ট (_E):"
 
-#: ../pidgin/gtkprefs.c:1289
 msgid "Proxy Server &amp; Browser"
 msgstr "প্রক্সি সার্ভার &amp; ব্রাউজার"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1297
 msgid "<b>Proxy configuration program was not found.</b>"
 msgstr "<b>প্রক্সির পছন্দসই বিন্যাসন প্রোগ্রাম খুঁজে পাওয়া যায়নি।</b>"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1305
 msgid "<b>Browser configuration program was not found.</b>"
 msgstr "<b>ব্রাউজারের পছন্দসই বিন্যাসন প্রোগ্রাম খুঁজে পাওয়া যায়নি।</b>"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1310
 msgid ""
 "Proxy & Browser preferences are configured\n"
 "in GNOME Preferences"
@@ -18308,100 +13390,80 @@
 "প্রক্সি ও ব্রাউজারের প্রাধিকারসমূহ \n"
 "GNOME প্রাধিকারসমূহে পছন্দসই বিন্যাসন করা হয়েছে"
 
-#: ../pidgin/gtkprefs.c:1317
 msgid "Configure _Proxy"
 msgstr "প্রক্সি পছন্দসই বিন্যাস করুন (_P)"
 
-#: ../pidgin/gtkprefs.c:1322
 msgid "Configure _Browser"
 msgstr "ব্রাউজার পছন্দসই বিন্যাস করুন (_B)"
 
-#: ../pidgin/gtkprefs.c:1328
 msgid "Proxy Server"
 msgstr "প্রক্সি সার্ভার"
 
-#: ../pidgin/gtkprefs.c:1333
 msgid "No proxy"
 msgstr "কোনো প্রক্সি নেই"
 
-#: ../pidgin/gtkprefs.c:1389
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr ""
+
 msgid "_User:"
 msgstr "ব্যবহারকারী (_U):"
 
 # tithi
-#: ../pidgin/gtkprefs.c:1477
 msgid "Seamonkey"
 msgstr "সিমাঙ্কি"
 
-#: ../pidgin/gtkprefs.c:1478
 msgid "Opera"
 msgstr "অপেরা"
 
-#: ../pidgin/gtkprefs.c:1479
 msgid "Netscape"
 msgstr "নেটস্কেপ"
 
-#: ../pidgin/gtkprefs.c:1480
 msgid "Mozilla"
 msgstr "মজিলা"
 
-#: ../pidgin/gtkprefs.c:1481
 msgid "Konqueror"
 msgstr "কনকোয়েরর"
 
-#: ../pidgin/gtkprefs.c:1482
 msgid "Desktop Default"
 msgstr "ডেস্কটপ পূর্বনির্ধারিত"
 
-#: ../pidgin/gtkprefs.c:1483
 msgid "GNOME Default"
 msgstr "GNOME পূর্বনির্ধারিত"
 
-#: ../pidgin/gtkprefs.c:1484
 msgid "Galeon"
 msgstr "গ্যালিওন"
 
-#: ../pidgin/gtkprefs.c:1485
 msgid "Firefox"
 msgstr "ফায়ারফক্স"
 
-#: ../pidgin/gtkprefs.c:1486
 msgid "Firebird"
 msgstr "ফায়ারবার্ড"
 
-#: ../pidgin/gtkprefs.c:1487
 msgid "Epiphany"
 msgstr "ইপিফ্যানি"
 
-#: ../pidgin/gtkprefs.c:1496
 msgid "Manual"
 msgstr "সহায়িকা"
 
-#: ../pidgin/gtkprefs.c:1557
 msgid "Browser Selection"
 msgstr "ব্রাউজার নির্বাচন"
 
-#: ../pidgin/gtkprefs.c:1561
 msgid "_Browser:"
 msgstr "ব্রাউজার (_B):"
 
-#: ../pidgin/gtkprefs.c:1569
 msgid "_Open link in:"
 msgstr "লিঙ্ক খুলুন (_O):"
 
-#: ../pidgin/gtkprefs.c:1571
 msgid "Browser default"
 msgstr "ব্রাউজার পূর্বনির্ধারিত"
 
-#: ../pidgin/gtkprefs.c:1572
 msgid "Existing window"
 msgstr "বিদ্যমান উইন্ডো"
 
-#: ../pidgin/gtkprefs.c:1574
 msgid "New tab"
 msgstr "নতুন ট্যাব"
 
-#: ../pidgin/gtkprefs.c:1591
 #, c-format
 msgid ""
 "_Manual:\n"
@@ -18410,63 +13472,54 @@
 "সহায়িকা (_M):\n"
 "(URL এর জন্য %s)"
 
-#: ../pidgin/gtkprefs.c:1617
 msgid "Log _format:"
 msgstr "কার্যবিবরণী বিন্যাস (_f):"
 
-#: ../pidgin/gtkprefs.c:1622
 msgid "Log all _instant messages"
 msgstr "সব তাৎক্ষণিক বার্তাসমূহ লগ করুন (_i)"
 
-#: ../pidgin/gtkprefs.c:1624
 msgid "Log all c_hats"
 msgstr "সকল আড্ডা লগ করুন (_h)"
 
-#: ../pidgin/gtkprefs.c:1626
 msgid "Log all _status changes to system log"
 msgstr "সব অবস্থার পরিবর্তনসমূহ সিস্টেমের কার্যবিবরণীতে লগ করুন (_s)"
 
-#: ../pidgin/gtkprefs.c:1776
 msgid "Sound Selection"
 msgstr "শব্দ নির্বাচন"
 
-#: ../pidgin/gtkprefs.c:1786
+#, c-format
 msgid "Quietest"
 msgstr "একদম চুপচাপ"
 
-#: ../pidgin/gtkprefs.c:1788
+#, c-format
 msgid "Quieter"
 msgstr "অপেক্ষাকৃত চুপচাপ"
 
-#: ../pidgin/gtkprefs.c:1790
+#, c-format
 msgid "Quiet"
 msgstr "চুপচাপ"
 
-#: ../pidgin/gtkprefs.c:1794
+#, c-format
 msgid "Loud"
 msgstr "জোরে"
 
-#: ../pidgin/gtkprefs.c:1796
+#, c-format
 msgid "Louder"
 msgstr "অপেক্ষাকৃত জোরে"
 
-#: ../pidgin/gtkprefs.c:1798
+#, c-format
 msgid "Loudest"
 msgstr "একদম জোরে"
 
-#: ../pidgin/gtkprefs.c:1880
 msgid "_Method:"
 msgstr "প্রক্রিয়া (_M):"
 
-#: ../pidgin/gtkprefs.c:1882
 msgid "Console beep"
 msgstr "কনসোল বীপ"
 
-#: ../pidgin/gtkprefs.c:1889
 msgid "No sounds"
 msgstr "কোনো শব্দ নেই"
 
-#: ../pidgin/gtkprefs.c:1902
 #, c-format
 msgid ""
 "Sound c_ommand:\n"
@@ -18475,283 +13528,218 @@
 "শব্দের নির্দেশ (_o):\n"
 "(ফাইল-নামের জন্য %s)"
 
-#: ../pidgin/gtkprefs.c:1912
 msgid "M_ute sounds"
 msgstr "শব্দ বন্ধ করুন (_u)"
 
-#: ../pidgin/gtkprefs.c:1915
 msgid "Sounds when conversation has _focus"
 msgstr "কথোপকথন ফোকাস করার শব্দ"
 
-#: ../pidgin/gtkprefs.c:1917
 msgid "_Enable sounds:"
 msgstr "শব্দ সক্রিয় করুন (_E):"
 
-#: ../pidgin/gtkprefs.c:1934
 msgid "V_olume:"
 msgstr "ভলিউম (_o):"
 
-#: ../pidgin/gtkprefs.c:2001
 msgid "Play"
 msgstr "বাজাও"
 
-#: ../pidgin/gtkprefs.c:2027
 msgid "_Browse..."
 msgstr "ব্রাউজ করুন... (_B)"
 
-#: ../pidgin/gtkprefs.c:2035
 msgid "_Reset"
 msgstr "পুনঃ বিন্যাস করুন (_R)"
 
-#: ../pidgin/gtkprefs.c:2078
 msgid "_Report idle time:"
 msgstr "অলস সময়ের প্রতিবেদন দিন (_R)"
 
 # tithi
-#: ../pidgin/gtkprefs.c:2083
 msgid "Based on keyboard or mouse use"
 msgstr "কীবোর্ড বা মাউস ব্যবহারের উপর ভিত্তি করে"
 
-#: ../pidgin/gtkprefs.c:2092
 msgid "_Auto-reply:"
 msgstr "স্বয়ংক্রিয়-উত্তর (_A):"
 
-#: ../pidgin/gtkprefs.c:2096
 msgid "When both away and idle"
 msgstr "যখন উভয়ই অনুপস্থিত এবং অলস"
 
 #. Auto-away stuff
-#: ../pidgin/gtkprefs.c:2102
 msgid "Auto-away"
 msgstr "স্বয়ংক্রিয়ভাবে অনুপস্থিতি"
 
-#: ../pidgin/gtkprefs.c:2104
 msgid "Change status when _idle"
 msgstr "অলস থাকলে অবস্থা পরিবর্তন করুন (_i)"
 
-#: ../pidgin/gtkprefs.c:2108
 msgid "_Minutes before becoming idle:"
 msgstr "অলস হওয়ার পূর্বের মিনিট (_M):"
 
-#: ../pidgin/gtkprefs.c:2115
 msgid "Change _status to:"
 msgstr "অবস্থা পরিবর্তন করুন (_s):"
 
 # tithi
 #. Signon status stuff
-#: ../pidgin/gtkprefs.c:2128
 msgid "Status at Startup"
 msgstr "সূচনার অবস্থা"
 
 # tithi
-#: ../pidgin/gtkprefs.c:2130
 msgid "Use status from last _exit at startup"
 msgstr "সর্বশেষ ত্যাগের অবস্থা শুরুতে ব্যবহার করুন (_e)"
 
 # tithi
-#: ../pidgin/gtkprefs.c:2137
 msgid "Status to a_pply at startup:"
 msgstr "সূচনাতে প্রয়োগ করার অবস্থা (_p):"
 
-#: ../pidgin/gtkprefs.c:2166
 msgid "Interface"
 msgstr "ইন্টারফেস"
 
-#: ../pidgin/gtkprefs.c:2168
 msgid "Smiley Themes"
 msgstr "স্মাইলী থীমসমূহ"
 
-#: ../pidgin/gtkprefs.c:2175
 msgid "Browser"
 msgstr "ব্রাউজার"
 
-#: ../pidgin/gtkprefs.c:2179
 msgid "Status / Idle"
 msgstr "অবস্থা / অলস"
 
-#: ../pidgin/gtkprivacy.c:81
 msgid "Allow all users to contact me"
 msgstr "সব ব্যবহারকারীকে আমার সাথে যোগাযোগ করার অনুমতি দিন"
 
-#: ../pidgin/gtkprivacy.c:82
 msgid "Allow only the users on my buddy list"
 msgstr "শুধুমাত্র আমার তালিকার বন্ধুদের অনুমতি দিন"
 
-#: ../pidgin/gtkprivacy.c:83
 msgid "Allow only the users below"
 msgstr "শুধুমাত্র নিম্নোলিখিত ব্যবহারকারীদের অনুমতি দিন"
 
-#: ../pidgin/gtkprivacy.c:84
 msgid "Block all users"
 msgstr "সব ব্যবহারকারীদের ব্লক করুন"
 
-#: ../pidgin/gtkprivacy.c:85
 msgid "Block only the users below"
 msgstr "শুধুমাত্র নিম্নোলিখিত ব্যবহারকারীদের ব্লক করুন"
 
-#: ../pidgin/gtkprivacy.c:352
 msgid "Privacy"
 msgstr "ব্যক্তিগত"
 
-#: ../pidgin/gtkprivacy.c:362
 msgid "Changes to privacy settings take effect immediately."
 msgstr "ব্যক্তিগত বিন্যাসনসমূহে পরিবর্তনসমূহ তাৎ‍ক্ষণিকভাবে কার্যকর হবে।"
 
-#: ../pidgin/gtkprivacy.c:371
 msgid "Set privacy for:"
 msgstr "এর জন্য গোপনীয়তা নির্ধারণ করুন:"
 
 #. Remove All button
-#: ../pidgin/gtkprivacy.c:417
 msgid "Remove Al_l"
 msgstr "সব অপসারণ করুন (_l)"
 
-#: ../pidgin/gtkprivacy.c:503 ../pidgin/gtkprivacy.c:520
 msgid "Permit User"
 msgstr "ব্যবহারকারীকে অনুমতি দিন"
 
-#: ../pidgin/gtkprivacy.c:504
 msgid "Type a user you permit to contact you."
 msgstr "আপনি অনুমতি দেন এমন ব্যবহারকারীকে আপনার সাথে যোগাযোগের জন্য টাইপ করুন।"
 
-#: ../pidgin/gtkprivacy.c:505
 msgid "Please enter the name of the user you wish to be able to contact you."
 msgstr ""
 "অনুগ।রহ করে আপনার সাথে যোগাযোগে অনুমতি দিতে চান এমন ব্যবহারকারীর নাম প্রবেশ করান।"
 
-#: ../pidgin/gtkprivacy.c:508 ../pidgin/gtkprivacy.c:524
 msgid "_Permit"
 msgstr "অনুমতি দিন (_P)"
 
-#: ../pidgin/gtkprivacy.c:514
 #, c-format
 msgid "Allow %s to contact you?"
 msgstr "আপনার সাথে যোগাযোগের জন্যে %s কে কি অনুমতি দিবেন?"
 
-#: ../pidgin/gtkprivacy.c:516
 #, c-format
 msgid "Are you sure you wish to allow %s to contact you?"
 msgstr "আপনি কি নিশ্চিত আপনি  %s-কে আপনার সাথে যোগাযোগের অনুমতি দিতে চান?"
 
-#: ../pidgin/gtkprivacy.c:545 ../pidgin/gtkprivacy.c:559
 msgid "Block User"
 msgstr "ব্যবহারকারীকে বাধা দিন"
 
-#: ../pidgin/gtkprivacy.c:546
 msgid "Type a user to block."
 msgstr "বাধা দেয়ার জন্য ব্যবহারকারীকে টাইপ করুন।"
 
-#: ../pidgin/gtkprivacy.c:547
 msgid "Please enter the name of the user you wish to block."
 msgstr "অনুগ্রহ করে আপনি যে ব্যবহারকারীকে ব্লক করতে চান তার নাম প্রবেশ করান।"
 
-#: ../pidgin/gtkprivacy.c:555
 #, c-format
 msgid "Block %s?"
 msgstr "%s কে কি ব্লক করবেন?"
 
-#: ../pidgin/gtkprivacy.c:557
 #, c-format
 msgid "Are you sure you want to block %s?"
 msgstr "আপনি কি নিশ্চিত আপনি %s-কে ব্লক করতে চান?"
 
-#: ../pidgin/gtkrequest.c:274
 msgid "Apply"
 msgstr "প্রয়োগ করুন"
 
-#: ../pidgin/gtkrequest.c:1503
 msgid "That file already exists"
 msgstr "ঐ ফাইলটি ইতোমধ্যে বিদ্যমান"
 
-#: ../pidgin/gtkrequest.c:1504
 msgid "Would you like to overwrite it?"
 msgstr "আপনি কি এটা উপরিলিখন করতে চান?"
 
 # tithi
-#: ../pidgin/gtkrequest.c:1507
 msgid "Overwrite"
 msgstr "উপরিলিখন করুন"
 
-#: ../pidgin/gtkrequest.c:1508
 msgid "Choose New Name"
 msgstr "নতুন নাম পছন্দ করুন"
 
-#: ../pidgin/gtkrequest.c:1649 ../pidgin/gtkrequest.c:1663
 msgid "Select Folder..."
 msgstr "ফোল্ডার নির্বাচন করুন..."
 
 #. list button
-#: ../pidgin/gtkroomlist.c:570
 msgid "_Get List"
 msgstr "তালিকা সংগ্রহ করুন (_G)"
 
 #. add button
-#: ../pidgin/gtkroomlist.c:578
 msgid "_Add Chat"
 msgstr "আড্ডা যোগ করুন (_A)"
 
-#: ../pidgin/gtksavedstatuses.c:340
 msgid "Are you sure you want to delete the selected saved statuses?"
 msgstr "আপনি কি নিশ্চিত আপনি নির্বাচিত সংরক্ষিত অবস্থাসমূহ মুছে ফেলতে চান?"
 
 #. Use button
-#: ../pidgin/gtksavedstatuses.c:650 ../pidgin/gtksavedstatuses.c:1279
 msgid "_Use"
 msgstr "ব্যবহার করুন (_U)"
 
-#: ../pidgin/gtksavedstatuses.c:793
 msgid "Title already in use.  You must choose a unique title."
 msgstr ""
 "শিরোনাম ইতোমধ্যে ব্যবহৃত হচ্ছে।  আপনাকে অবশ্যই একটি অনন্য শিরোনাম পছন্দ করতে হবে।"
 
-#: ../pidgin/gtksavedstatuses.c:1003
 msgid "Different"
 msgstr "পৃথক"
 
-#: ../pidgin/gtksavedstatuses.c:1202
 msgid "_Title:"
 msgstr "শিরোনাম (_T):"
 
-#: ../pidgin/gtksavedstatuses.c:1210 ../pidgin/gtksavedstatuses.c:1498
 msgid "_Status:"
 msgstr "অবস্থা (_S):"
 
 #. Different status message expander
-#: ../pidgin/gtksavedstatuses.c:1226
 msgid "Use a _different status for some accounts"
 msgstr "কিছু একাউন্টের জন্য পৃথক অবস্থা ব্যবহার করুন (_d)"
 
 #. Save & Use button
-#: ../pidgin/gtksavedstatuses.c:1286
 msgid "Sa_ve & Use"
 msgstr "সংরক্ষণ এবং ব্যবহার করুন (_v)"
 
-#: ../pidgin/gtksavedstatuses.c:1482
 #, c-format
 msgid "Status for %s"
 msgstr "%s-এর জন্য অবস্থা"
 
-#: ../pidgin/gtksmiley.c:228 ../pidgin/gtksmiley.c:236
-#: ../pidgin/gtksmiley.c:261 ../pidgin/gtksmiley.c:348
 msgid "Custom Smiley"
 msgstr "পছন্দসই স্মাইলী"
 
 # tithi
-#: ../pidgin/gtksmiley.c:229 ../pidgin/gtksmiley.c:262
 msgid "More Data needed"
 msgstr "আরও তথ্য প্রয়োজন"
 
 # tithi
-#: ../pidgin/gtksmiley.c:230 ../pidgin/gtksmiley.c:263
 msgid "Please provide a shortcut to associate with the smiley."
 msgstr "অনুগ্রহ করে স্মাইলীর সাথে সম্পর্কিত করতে একটি শর্টকাট প্রদান করুন।"
 
-#: ../pidgin/gtksmiley.c:237
 msgid "Duplicate Shortcut"
 msgstr "অনুরুপ শর্টকাট"
 
 # tithi
-#: ../pidgin/gtksmiley.c:238
 msgid ""
 "A custom smiley for the selected shortcut already exists. Please specify a "
 "different shortcut."
@@ -18759,83 +13747,65 @@
 "নির্বাচিত শর্টকাটটির জন্য পছন্দসই স্মাইলী ইতোমধ্যে বিদ্যমান। অনুগ্রহ করে একটি ভিন্ন "
 "শর্টকাট উল্লেখ করুন।"
 
-#: ../pidgin/gtksmiley.c:264
 msgid "Please select an image for the smiley."
 msgstr "অনুগ্রহ করে স্মাইলীটির জন্য একটি চিত্র নির্বাচন করুন।"
 
-#: ../pidgin/gtksmiley.c:367
 msgid "Edit Smiley"
 msgstr "স্মাইলী সম্পাদনা করুন"
 
-#: ../pidgin/gtksmiley.c:367
 msgid "Add Smiley"
 msgstr "স্মাইলী যোগ করুন"
 
-#: ../pidgin/gtksmiley.c:388
 msgid "Smiley _Image"
 msgstr "স্মাইলীর চিত্র (_I)"
 
 # tithi
 #. Smiley shortcut
-#: ../pidgin/gtksmiley.c:419
 msgid "Smiley S_hortcut"
 msgstr "স্মাইলীর শর্টকাট (_S)"
 
-#: ../pidgin/gtksmiley.c:515
 msgid "Smiley"
 msgstr "স্মাইলী"
 
 # tithi
-#: ../pidgin/gtksmiley.c:712
 msgid "Custom Smiley Manager"
 msgstr "পছন্দসই স্মাইলী ব্যবস্থাপক"
 
 # tithi
-#: ../pidgin/gtkstatusbox.c:403
 msgid "Click to change your buddyicon for this account."
 msgstr "এই একাউন্টের জন্য আপনার বন্ধু-আইকন পরিবর্তন করতে ক্লিক করুন।"
 
 # tithi
-#: ../pidgin/gtkstatusbox.c:404
 msgid "Click to change your buddyicon for all accounts."
 msgstr "সব একাউন্টের জন্য আপনার বন্ধু-আইকন পরিবর্তন করতে ক্লিক করুন।"
 
-#: ../pidgin/gtkstatusbox.c:695
 msgid "Waiting for network connection"
 msgstr "নেটওয়ার্ক সংযোগের জন্য অপেক্ষা করছে"
 
-#: ../pidgin/gtkstatusbox.c:1110
 msgid "New status..."
 msgstr "নতুন অবস্থা..."
 
-#: ../pidgin/gtkstatusbox.c:1111
 msgid "Saved statuses..."
 msgstr "সংরক্ষিত অবস্থাসমূহ..."
 
-#: ../pidgin/gtkstatusbox.c:1788
 msgid "Status Selector"
 msgstr "অবস্থা নির্বাচক"
 
 # tithi
-#: ../pidgin/gtkutils.c:687
 msgid "Google Talk"
 msgstr "গুগল টক"
 
-#: ../pidgin/gtkutils.c:1457 ../pidgin/gtkutils.c:1486
 #, c-format
 msgid "The following error has occurred loading %s: %s"
 msgstr "%1s লোড করার সময় নিম্নোক্ত ত্রুটি সংঘটিত হয়েছে: %2s"
 
-#: ../pidgin/gtkutils.c:1460 ../pidgin/gtkutils.c:1488
 msgid "Failed to load image"
 msgstr "চিত্র লোড করতে ব্যর্থ হয়েছে"
 
-#: ../pidgin/gtkutils.c:1562
 #, c-format
 msgid "Cannot send folder %s."
 msgstr "%s ফোল্ডার পাঠাতে পারে না।"
 
-#: ../pidgin/gtkutils.c:1563
 #, c-format
 msgid ""
 "%s cannot transfer a folder. You will need to send the files within "
@@ -18843,12 +13813,9 @@
 msgstr ""
 "%s ফোল্ডার স্থানান্তর করতে পারে না। আপনাকে প্রতিটি ফাইল আলাদাভাবে পাঠাতে হবে।"
 
-#: ../pidgin/gtkutils.c:1597 ../pidgin/gtkutils.c:1609
-#: ../pidgin/gtkutils.c:1616
 msgid "You have dragged an image"
 msgstr "আপনি একটি চিত্র টেনেছেন"
 
-#: ../pidgin/gtkutils.c:1598
 msgid ""
 "You can send this image as a file transfer, embed it into this message, or "
 "use it as the buddy icon for this user."
@@ -18856,23 +13823,18 @@
 "আপনি এই ছবিটি ফাইল স্থানান্তর হিসেবে পাঠাতে পারেন, এটাকে এই বার্তার সাথে দৃঢ়বাবে "
 "সংযুক্ত করুন, বা এটাকে এই ব্যবহারকারীর জন্য বন্ধু আইকন হিসেবে ব্যবহার করুন।"
 
-#: ../pidgin/gtkutils.c:1604 ../pidgin/gtkutils.c:1624
 msgid "Set as buddy icon"
 msgstr "বন্ধু আইকন হিসেবে নির্ধারণ করুন"
 
-#: ../pidgin/gtkutils.c:1605 ../pidgin/gtkutils.c:1625
 msgid "Send image file"
 msgstr "চিত্র ফাইল পাঠান"
 
-#: ../pidgin/gtkutils.c:1606 ../pidgin/gtkutils.c:1625
 msgid "Insert in message"
 msgstr "বার্তায় প্রবেশ করান"
 
-#: ../pidgin/gtkutils.c:1610
 msgid "Would you like to set it as the buddy icon for this user?"
 msgstr "আপনি কি এটাকে এই ব্যবহারকারীর জন্য বন্ধু আইকন হিসেবে নির্ধারণ করতে চান?"
 
-#: ../pidgin/gtkutils.c:1617
 msgid ""
 "You can send this image as a file transfer, or use it as the buddy icon for "
 "this user."
@@ -18880,7 +13842,6 @@
 "আপনি এই চিত্রটি ফাইল স্থানান্তর হিসেবে পাঠাতে পারেন, বা এটাকে এই ব্যবহারকারীর "
 "জন্য বন্ধু আইকন হিসেবে ব্যবহার করতে পারেন।"
 
-#: ../pidgin/gtkutils.c:1618
 msgid ""
 "You can insert this image into this message, or use it as the buddy icon for "
 "this user"
@@ -18893,11 +13854,9 @@
 #. * send.  The only logical one is "Application," but do we really want to send a binary and nothing else?
 #. * Probably not.  I'll just give an error and return.
 #. The original patch sent the icon used by the launcher.  That's probably wrong
-#: ../pidgin/gtkutils.c:1677
 msgid "Cannot send launcher"
 msgstr "প্রকাশক পাঠাতে পারে না"
 
-#: ../pidgin/gtkutils.c:1677
 msgid ""
 "You dragged a desktop launcher. Most likely you wanted to send whatever this "
 "launcher points to instead of this launcher itself."
@@ -18905,7 +13864,6 @@
 "আপনি একটি ডেস্কটপ প্রকাশক টেনে এনেছেন। এই প্রকাশকটি নিজেকে নির্দেশ করার পরিবর্তে "
 "আর যেখানে নির্দেশ করে সেখানে সম্ভবত আপনি পাঠাতে চান।"
 
-#: ../pidgin/gtkutils.c:2415
 #, c-format
 msgid ""
 "<b>File:</b> %s\n"
@@ -18917,133 +13875,104 @@
 "<b>চিত্রের আকার:</b> %3dx%4d"
 
 # tithi
-#: ../pidgin/gtkutils.c:2717
 #, c-format
 msgid "The file '%s' is too large for %s.  Please try a smaller image.\n"
 msgstr ""
 "'%1s' ফাইলটি %2s এর জন্য অনেক বড়। অনুগ্রহ করে অপেক্ষাকৃত ছোট চিত্র ব্যবহার করুন।\n"
 
-#: ../pidgin/gtkutils.c:2719
 msgid "Icon Error"
 msgstr "আইকন ত্রুটি"
 
-#: ../pidgin/gtkutils.c:2720
 msgid "Could not set icon"
 msgstr "আইকন নির্ধারণ করা হয়নি"
 
-#: ../pidgin/gtkutils.c:2820
 #, c-format
 msgid "Failed to open file '%s': %s"
 msgstr "'%1s' ফাইলটি খুলতে ব্যর্থ: %2s"
 
 # tithi
-#: ../pidgin/gtkutils.c:2869
 #, c-format
 msgid ""
 "Failed to load image '%s': reason not known, probably a corrupt image file"
 msgstr ""
 "'%s' চিত্রটি লোড করতে ব্যর্থ হয়েছে। কারণ জানা নেই, সম্ভবত একটি নষ্ট চিত্রের ফাইল"
 
-#: ../pidgin/gtkwhiteboard.c:754 ../pidgin/gtkwhiteboard.c:773
 msgid "Save File"
 msgstr "ফাইল সংরক্ষণ করুন"
 
-#: ../pidgin/gtkwhiteboard.c:861
 msgid "Select color"
 msgstr "রং নির্বাচন করুন"
 
-#: ../pidgin/pidginstock.c:88
 msgid "_Alias"
 msgstr "উপনাম (_A)"
 
-#: ../pidgin/pidginstock.c:90
 msgid "Close _tabs"
 msgstr "ট্যাবসমূহ বন্ধ করুন (_t)"
 
-#: ../pidgin/pidginstock.c:92
 msgid "_Get Info"
 msgstr "তথ্য সংগ্রহ করুন (_G)"
 
-#: ../pidgin/pidginstock.c:93
 msgid "_Invite"
 msgstr "আমন্ত্রণ জানান (_I)"
 
-#: ../pidgin/pidginstock.c:94
 msgid "_Modify..."
 msgstr "পরিবর্তন করুন... (_M)"
 
-#: ../pidgin/pidginstock.c:95
 msgid "_Add..."
 msgstr "যোগ করুন... (_A)"
 
-#: ../pidgin/pidginstock.c:96
 msgid "_Open Mail"
 msgstr "মেইল খুলুন (_O)"
 
-#: ../pidgin/pidginstock.c:98
 msgid "_Edit"
 msgstr "সম্পাদনা করুন (_E)"
 
-#: ../pidgin/pidgintooltip.c:125
 msgid "Pidgin Tooltip"
 msgstr "পিজিন টুলের-ইঙ্গিত"
 
 # tithi
-#: ../pidgin/pixmaps/emotes/default/24/default.theme.in.h:2
 msgid "Pidgin smileys"
 msgstr "পিজিন স্মাইলীসমূহ"
 
 # tithi
-#: ../pidgin/pixmaps/emotes/none/none.theme.in.h:1
 msgid "Penguin Pimps"
 msgstr "পেঙ্গুইন পিম্পসমূহ"
 
 # tithi
-#: ../pidgin/pixmaps/emotes/none/none.theme.in.h:2
 msgid "Selecting this disables graphical emoticons."
 msgstr "এই নিস্ক্রিয় গ্রাফিকাল অভিব্যক্তি-আইকন নির্বাচন করছে।"
 
-#: ../pidgin/pixmaps/emotes/none/none.theme.in.h:3
 msgid "none"
 msgstr "কোনটি না"
 
-#: ../pidgin/pixmaps/emotes/small/16/small.theme.in.h:1
 msgid "Small"
 msgstr "ছোট"
 
-#: ../pidgin/pixmaps/emotes/small/16/small.theme.in.h:2
 msgid "Smaller versions of the default smilies"
 msgstr "পূর্বনির্ধারিত স্মাইলীগুলোর অপেক্ষাকৃত ছোট সংস্করণ"
 
 # tithi
-#: ../pidgin/plugins/cap/cap.c:441 ../pidgin/plugins/cap/cap.c:444
 msgid "Response Probability:"
 msgstr "সাড়ার সম্ভাব্যতা:"
 
-#: ../pidgin/plugins/cap/cap.c:769
 msgid "Statistics Configuration"
 msgstr "পরিসংখ্যান বিন্যাসন"
 
 # tithi
 #. msg_difference spinner
-#: ../pidgin/plugins/cap/cap.c:772
 msgid "Maximum response timeout:"
 msgstr "সর্বোচ্চ সাড়ার সময়োত্তীর্ণ হয়েছে:"
 
-#: ../pidgin/plugins/cap/cap.c:775 ../pidgin/plugins/cap/cap.c:782
-#: ../pidgin/plugins/cap/cap.c:789 ../pidgin/plugins/timestamp.c:148
 msgid "minutes"
 msgstr "মিনিট"
 
 # fix me tithi
 #. last_seen spinner
-#: ../pidgin/plugins/cap/cap.c:779
 msgid "Maximum last-seen difference:"
 msgstr "শেষ-দেখার সর্বোচ্চ পার্থক্য:"
 
 # tithi
 #. threshold spinner
-#: ../pidgin/plugins/cap/cap.c:786
 msgid "Threshold:"
 msgstr "থ্রেসহোল্ড:"
 
@@ -19054,61 +13983,49 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/cap/cap.c:894
 msgid "Contact Availability Prediction"
 msgstr "যোগাযোগ সহজলভ্যতার ভবিষ্যৎবাণী"
 
 # tithi
 #. *< name
 #. *< version
-#: ../pidgin/plugins/cap/cap.c:896
 msgid "Contact Availability Prediction plugin."
 msgstr "যোগাযোগ সহজলভ্যতার ভবিষ্যৎবাণীর প্লাগইন।"
 
 # tithi
 #. *  summary
-#: ../pidgin/plugins/cap/cap.c:897
 msgid "Displays statistical information about your buddies' availability"
 msgstr "আপনার বন্ধুদের সম্ভাব্যতা সম্পর্কে পরিসংখ্যান সংক্রান্ত তথ্য প্রদর্শন করে"
 
-#: ../pidgin/plugins/contact_priority.c:61
 msgid "Buddy is idle"
 msgstr "বন্ধু অলস"
 
-#: ../pidgin/plugins/contact_priority.c:62
 msgid "Buddy is away"
 msgstr "বন্ধু অনুপস্থিত"
 
 # fix me tithi
-#: ../pidgin/plugins/contact_priority.c:63
 msgid "Buddy is \"extended\" away"
 msgstr "বন্ধু অনুপস্থিত \"প্রসারিত\":"
 
 #. Not used yet.
-#: ../pidgin/plugins/contact_priority.c:66
 msgid "Buddy is mobile"
 msgstr "বন্ধু মোবাইলে"
 
-#: ../pidgin/plugins/contact_priority.c:68
 msgid "Buddy is offline"
 msgstr "বন্ধু অফলাইনে"
 
-#: ../pidgin/plugins/contact_priority.c:90
 msgid "Point values to use when..."
 msgstr "ব্যবহার করতে মানসমূহ নির্দেশ করুন যখন..."
 
-#: ../pidgin/plugins/contact_priority.c:118
 msgid ""
 "The buddy with the <i>largest score</i> is the buddy who will have priority "
 "in the contact.\n"
 msgstr ""
 "<i>largest score</i> সম্বলিত বন্ধু হলো এমন বন্ধু যার যোগাযোগে অগ্রাধিকার থাকবে।\n"
 
-#: ../pidgin/plugins/contact_priority.c:125
 msgid "Use last buddy when scores are equal"
 msgstr "স্কোর সমান হলে শেষ বন্ধুকে ব্যবহার করুন"
 
-#: ../pidgin/plugins/contact_priority.c:130
 msgid "Point values to use for account..."
 msgstr "একাউন্ট ব্যবহারের জন্য মানসমূহ নির্দেশ করুন..."
 
@@ -19118,20 +14035,17 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/contact_priority.c:188
 msgid "Contact Priority"
 msgstr "যোগাযোগের অগ্রাধিকার"
 
 #. *< name
 #. *< version
 #. *< summary
-#: ../pidgin/plugins/contact_priority.c:191
 msgid ""
 "Allows for controlling the values associated with different buddy states."
 msgstr "বিভিন্ন বন্ধুর রাজ্যের সাথে সম্পর্কিত মানসমূহ নিয়ন্ত্রণ করার জন্য অনুমতি দেয়।"
 
 #. *< description
-#: ../pidgin/plugins/contact_priority.c:193
 msgid ""
 "Allows for changing the point values of idle/away/offline states for buddies "
 "in contact priority computations."
@@ -19139,64 +14053,50 @@
 "যোগাযোগের অগ্রাধিকার নির্ণয়ে বন্ধুদের জন্য অলস/অনুপস্থিত/অফলাইন অবস্থার বিন্দু মানসমূহ "
 "পরিবর্তন করার জন্য অনুমোদন করে।"
 
-#: ../pidgin/plugins/convcolors.c:23
 msgid "Conversation Colors"
 msgstr "কথোপকথন রংসমূহ"
 
-#: ../pidgin/plugins/convcolors.c:25 ../pidgin/plugins/convcolors.c:26
 msgid "Customize colors in the conversation window"
 msgstr "কথোপকথন উইন্ডোটির রং পছন্দসই বিন্যাস করুন"
 
-#: ../pidgin/plugins/convcolors.c:87
 msgid "Error Messages"
 msgstr "ত্রুটি বার্তাসমূহ"
 
-#: ../pidgin/plugins/convcolors.c:88
 msgid "Highlighted Messages"
 msgstr "প্রনির্দেশিত বার্তাসমূহ"
 
-#: ../pidgin/plugins/convcolors.c:89
 msgid "System Messages"
 msgstr "সিস্টেম বার্তাসমূহ"
 
-#: ../pidgin/plugins/convcolors.c:90
 msgid "Sent Messages"
 msgstr "প্রেরিত বার্তাসমূহ"
 
-#: ../pidgin/plugins/convcolors.c:91
 msgid "Received Messages"
 msgstr "গৃহীত বার্তাসমূহ"
 
-#: ../pidgin/plugins/convcolors.c:223 ../pidgin/plugins/pidginrc.c:260
 #, c-format
 msgid "Select Color for %s"
 msgstr "%s এর জন্য রং নির্বাচন করুন"
 
 # tithi
-#: ../pidgin/plugins/convcolors.c:372
 msgid "Ignore incoming format"
 msgstr "আগত বিন্যাস উপেক্ষা করুন"
 
-#: ../pidgin/plugins/convcolors.c:373
 msgid "Apply in Chats"
 msgstr "আড্ডায় প্রয়োগ করুন"
 
 # tithi
-#: ../pidgin/plugins/convcolors.c:374
 msgid "Apply in IMs"
 msgstr "আইএম গুলোতে প্রয়োগ করুন"
 
-#: ../pidgin/plugins/extplacement.c:80
 msgid "By conversation count"
 msgstr "কথোপকথন গণনা অনুসারে"
 
-#: ../pidgin/plugins/extplacement.c:101
 msgid "Conversation Placement"
 msgstr "কথোপকথন অবস্থিতিকরণ"
 
 # fix-me tithi
 #. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
-#: ../pidgin/plugins/extplacement.c:105
 msgid ""
 "Note: The preference for \"New conversations\" must be set to \"By "
 "conversation count\"."
@@ -19204,11 +14104,9 @@
 "নোট: \"নতুন কথোপকথনসমূহের\" প্রাধিকার অবশ্যই \"কথোপকথন গণনার ভিত্তিতে\" নির্ধারিত "
 "হবে।"
 
-#: ../pidgin/plugins/extplacement.c:111
 msgid "Number of conversations per window"
 msgstr "প্রতি উইন্ডোতে কথোপকথনের সংখ্যা"
 
-#: ../pidgin/plugins/extplacement.c:117
 msgid "Separate IM and Chat windows when placing by number"
 msgstr "সংখ্যা অনুসারে সাজানোর সময় আইএম ও আড্ডার উইন্ডোগুলো আলাদা করুন"
 
@@ -19218,19 +14116,16 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/extplacement.c:146
 msgid "ExtPlacement"
 msgstr "ExtPlacement"
 
 #. *< name
 #. *< version
-#: ../pidgin/plugins/extplacement.c:148
 msgid "Extra conversation placement options."
 msgstr "অতিরিক্ত কথোপকথন অবস্থিতিকরণ পছন্দসমূহ।"
 
 #. *< summary
 #. *  description
-#: ../pidgin/plugins/extplacement.c:150
 msgid ""
 "Restrict the number of conversations per windows, optionally separating IMs "
 "and Chats"
@@ -19238,22 +14133,18 @@
 "আইএম এবং আড্ডা ঐচ্ছিকভাবে আলাদা করে, প্রতিটি উইন্ডোর কথোপকথন সংখ্যা সীমিত করুন।"
 
 #. Configuration frame
-#: ../pidgin/plugins/gestures/gestures.c:235
 msgid "Mouse Gestures Configuration"
 msgstr "মাউসের ভঙ্গিমা বিন্যাসন করুন"
 
-#: ../pidgin/plugins/gestures/gestures.c:242
 msgid "Middle mouse button"
 msgstr "মাউসের মাঝের বোতাম"
 
-#: ../pidgin/plugins/gestures/gestures.c:247
 msgid "Right mouse button"
 msgstr "মাউসের ডান বোতাম"
 
 # previous:
 # দৃশ্যমান ভঙ্গিমা প্রদর্শন (_দ)
 #. "Visual gesture display" checkbox
-#: ../pidgin/plugins/gestures/gestures.c:259
 msgid "_Visual gesture display"
 msgstr "ঐক্ষিক ভঙ্গিমার প্রদর্শন (_V)"
 
@@ -19263,19 +14154,16 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/gestures/gestures.c:295
 msgid "Mouse Gestures"
 msgstr "মাউসের ভঙ্গিমা"
 
 #. *< name
 #. *< version
 #. *  summary
-#: ../pidgin/plugins/gestures/gestures.c:298
 msgid "Provides support for mouse gestures"
 msgstr "মাউসের ভঙ্গিমাকে সমর্থন দেয়"
 
 #. *  description
-#: ../pidgin/plugins/gestures/gestures.c:300
 msgid ""
 "Allows support for mouse gestures in conversation windows. Drag the middle "
 "mouse button to perform certain actions:\n"
@@ -19290,35 +14178,26 @@
 "•পূর্ববর্তী কথোপকথনে পরিবর্তন করতে উপরে টানুন এবং তারপর বামে টানুন।\n"
 "•পরবর্তী কথোপকথন পরিবর্তন করতে উপরে টানুন এবং তারপর ডানে টানুন।"
 
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:143
 msgid "Instant Messaging"
 msgstr "তাৎক্ষণিক বার্তাব্যবস্থা"
 
 #. Add the label.
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:461
 msgid "Select a person from your address book below, or add a new person."
 msgstr ""
 "নিম্নোক্ত ঠিকানার বই থেকে একজন ব্যক্তিকে নির্বাচন করুন, বা একজন নতুন ব্যক্তি যোগ করুন।"
 
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:555
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:305
 msgid "Group:"
 msgstr "গ্রুপ:"
 
 #. "New Person" button
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:580
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:467
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:252
 msgid "New Person"
 msgstr "নতুন ব্যক্তি"
 
 #. "Select Buddy" button
-#: ../pidgin/plugins/gevolution/add_buddy_dialog.c:597
 msgid "Select Buddy"
 msgstr "বন্ধু নির্বাচন করুন"
 
 #. Add the label.
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:343
 msgid ""
 "Select a person from your address book to add this buddy to, or create a new "
 "person."
@@ -19327,44 +14206,34 @@
 "তৈরি করুন।"
 
 #. Add the expander
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:431
 msgid "User _details"
 msgstr "ব্যবহারকারীর বিবরণ (_d)"
 
 #. "Associate Buddy" button
-#: ../pidgin/plugins/gevolution/assoc-buddy.c:484
 msgid "_Associate Buddy"
 msgstr "সম্পৃক্ত বন্ধু (_A)"
 
-#: ../pidgin/plugins/gevolution/gevolution.c:242
-#: ../pidgin/plugins/gevolution/gevolution.c:248
 msgid "Unable to send email"
 msgstr "ই-মেইল পাঠাতে ব্যর্থ"
 
-#: ../pidgin/plugins/gevolution/gevolution.c:243
 msgid "The evolution executable was not found in the PATH."
 msgstr "পথ-এর মধ্যে কার্যকরযোগ্য বিবর্তন খুঁজে পাওয়া যায়নি।"
 
 # tithi
-#: ../pidgin/plugins/gevolution/gevolution.c:249
 msgid "An email address was not found for this buddy."
 msgstr "এই বন্ধুটির জন্য একটি ই-মেইল ঠিকানা খুঁজে পাওয়া যায়নি।"
 
-#: ../pidgin/plugins/gevolution/gevolution.c:275
 msgid "Add to Address Book"
 msgstr "ঠিকানার বইয়ে যোগ করুন"
 
-#: ../pidgin/plugins/gevolution/gevolution.c:287
 msgid "Send Email"
 msgstr "ই-মেইল পাঠান"
 
 #. Configuration frame
-#: ../pidgin/plugins/gevolution/gevolution.c:414
 msgid "Evolution Integration Configuration"
 msgstr "বিবর্তন একত্রিকরণ বিন্যাসন"
 
 #. Label
-#: ../pidgin/plugins/gevolution/gevolution.c:417
 msgid "Select all accounts that buddies should be auto-added to."
 msgstr "স্বয়ংক্রিয়ভাবে সব একাউন্টগুলো নির্বাচন করুন যাতে বন্ধুরা স্বয়ং-যুক্ত হবে।"
 
@@ -19374,7 +14243,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/gevolution/gevolution.c:529
 msgid "Evolution Integration"
 msgstr "বিবর্তন একত্রিকরণ"
 
@@ -19382,38 +14250,29 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../pidgin/plugins/gevolution/gevolution.c:532
-#: ../pidgin/plugins/gevolution/gevolution.c:534
 msgid "Provides integration with Evolution."
 msgstr "বিবর্তনের সঙ্গে একত্রিকরণ প্রদান করে।"
 
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:266
 msgid "Please enter the person's information below."
 msgstr "অনুগ্রহ করে ব্যক্তির তথ্যাদি নিচে প্রবেশ করান।"
 
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:270
 msgid "Please enter the buddy's username and account type below."
 msgstr "অনুগ্রহ করে বন্ধুর ব্যবহারকারী নাম ও একাউন্টের ধরণ নিচে প্রবেশ করান।"
 
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:290
 msgid "Account type:"
 msgstr "একাউন্টের ধরণ:"
 
 # and this
 #. Optional Information section
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:313
 msgid "Optional information:"
 msgstr "ঐচ্ছিক তথ্য:"
 
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:348
 msgid "First name:"
 msgstr "প্রথম নাম:"
 
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:360
 msgid "Last name:"
 msgstr "শেষ নাম:"
 
-#: ../pidgin/plugins/gevolution/new_person_dialog.c:380
 msgid "Email:"
 msgstr "ইমেইল:"
 
@@ -19423,7 +14282,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/gtk-signals-test.c:160
 msgid "GTK Signals Test"
 msgstr "GTK সঙ্কেতের পরীক্ষা"
 
@@ -19431,12 +14289,9 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../pidgin/plugins/gtk-signals-test.c:163
-#: ../pidgin/plugins/gtk-signals-test.c:165
 msgid "Test to see that all ui signals are working properly."
 msgstr "সব ইউআই সঙ্কেত সঠিকভাবে কাজ করছে কিনা তা দেখার জন্য পরীক্ষা করুন।"
 
-#: ../pidgin/plugins/gtkbuddynote.c:36
 #, c-format
 msgid ""
 "\n"
@@ -19445,7 +14300,6 @@
 "\n"
 "<b>বন্ধুর নোট</b>: %s"
 
-#: ../pidgin/plugins/history.c:202
 msgid "History"
 msgstr "ইতিহাস"
 
@@ -19455,7 +14309,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/iconaway.c:82
 msgid "Iconify on Away"
 msgstr "অনুপস্থিত হলে আইকন দ্বারা চিহ্নিত করুন"
 
@@ -19463,51 +14316,40 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../pidgin/plugins/iconaway.c:85 ../pidgin/plugins/iconaway.c:87
 msgid "Iconifies the buddy list and your conversations when you go away."
 msgstr "আপনার অনুপস্থিতিতে বন্ধু তালিকা ও আপনার কথোপকথন আইকন দ্বারা চিহ্নিত করুন।"
 
-#: ../pidgin/plugins/mailchk.c:160
 msgid "Mail Checker"
 msgstr "মেইল পরীক্ষক"
 
-#: ../pidgin/plugins/mailchk.c:162
 msgid "Checks for new local mail."
 msgstr "নতুন স্থানীয় মেইলের জন্য পরীক্ষা করে।"
 
-#: ../pidgin/plugins/mailchk.c:163
 msgid "Adds a small box to the buddy list that shows if you have new mail."
 msgstr "বন্ধু তালিকার একটি ছোট বাক্স যুক্ত করে যা আপনার নতুন মেইল এলে প্রদর্শন করে।"
 
-#: ../pidgin/plugins/markerline.c:23
 msgid "Markerline"
 msgstr "চিহ্নিতকারীর-রেখা"
 
 # tithi
-#: ../pidgin/plugins/markerline.c:25 ../pidgin/plugins/markerline.c:26
 msgid "Draw a line to indicate new messages in a conversation."
 msgstr "কথোপকথনে নতুন বার্তাগুলো নির্দেশ করতে একটি লাইন আঁকুন।"
 
 # fix me tithi
-#: ../pidgin/plugins/markerline.c:238
 msgid "Jump to markerline"
 msgstr "চিহ্নিতকারীর-রেখায় গমন করুন"
 
 # tithi
-#: ../pidgin/plugins/markerline.c:272
 msgid "Draw Markerline in "
 msgstr "চিহ্নিতকারীর-রেখা আঁকুন"
 
-#: ../pidgin/plugins/markerline.c:276 ../pidgin/plugins/notify.c:694
 msgid "_IM windows"
 msgstr "আইএম উইন্ডোজ (_I)"
 
-#: ../pidgin/plugins/markerline.c:280 ../pidgin/plugins/notify.c:701
 msgid "C_hat windows"
 msgstr "আড্ডার উইন্ডো (_h)"
 
 # tithi
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:44
 msgid ""
 "A music messaging session has been requested. Please click the MM icon to "
 "accept."
@@ -19516,39 +14358,31 @@
 "আইকনটি ক্লিক করুন।"
 
 # fix me
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:45
 msgid "Music messaging session confirmed."
 msgstr "সংগীত বার্তাকরণ অধিবেশন নিশ্চিত।"
 
 # fix me
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:430
 msgid "Music Messaging"
 msgstr "সংগীত বার্তাকরণ"
 
 # tithi
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:431
 msgid "There was a conflict in running the command:"
 msgstr "নির্দেশ চালাতে একটি দ্বন্দ্ব ছিল:"
 
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:539
 msgid "Error Running Editor"
 msgstr "সম্পাদক চালাতে ত্রুটি"
 
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:540
 msgid "The following error has occurred:"
 msgstr "নিম্নোক্ত ত্রুটি সংঘটিত হয়েছে:"
 
 #. Configuration frame
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:639
 msgid "Music Messaging Configuration"
 msgstr "সংগীত বার্তাকরণ বিন্যাসন"
 
 # tithifix me
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:643
 msgid "Score Editor Path"
 msgstr "সম্পাদক পাথ স্কোর"
 
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:644
 msgid "_Apply"
 msgstr "প্রয়োগ করুন (_A)"
 
@@ -19561,13 +14395,11 @@
 #. *< id
 #. *< name
 #. *< version
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:685
 msgid "Music Messaging Plugin for collaborative composition."
 msgstr "সমন্নিত রচনার জন্য সংগীত বার্তাকরণ প্লাগইন করুন।"
 
 # fix me tithi
 #. *  summary
-#: ../pidgin/plugins/musicmessaging/musicmessaging.c:687
 msgid ""
 "The Music Messaging Plugin allows a number of users to simultaneously work "
 "on a piece of music by editting a common score in real-time."
@@ -19576,87 +14408,70 @@
 "সম্পাদনার মাধ্যমে যুগপৎভাবে এক খন্ড সংগীতের উপর কাজ করে।"
 
 #. ---------- "Notify For" ----------
-#: ../pidgin/plugins/notify.c:690
 msgid "Notify For"
 msgstr "এর জন্য প্রজ্ঞাপন"
 
 # fix me
-#: ../pidgin/plugins/notify.c:709
 msgid "\t_Only when someone says your username"
 msgstr ""
 "                        শুধুমাত্র তখন যখন কেউ একজন আপনার ব্যবহারকারীর নাম ডাকে "
 "(_O)"
 
-#: ../pidgin/plugins/notify.c:719
 msgid "_Focused windows"
 msgstr "ফোকাসকৃত উইন্ডো (_F)"
 
 #. ---------- "Notification Methods" ----------
-#: ../pidgin/plugins/notify.c:727
 msgid "Notification Methods"
 msgstr "প্রজ্ঞাপন পদ্ধতি"
 
-#: ../pidgin/plugins/notify.c:734
 msgid "Prepend _string into window title:"
 msgstr "উইন্ডোর শিরোনামে স্ট্রীং যোগ করুন (_s):"
 
 #. Count method button
-#: ../pidgin/plugins/notify.c:753
 msgid "Insert c_ount of new messages into window title"
 msgstr "উইন্ডোর শিরোনামে নতুন বার্তাসমূহের সংখ্যা প্রবেশ করান (_o)"
 
 # fix me
 #. Count xprop method button
-#: ../pidgin/plugins/notify.c:762
 msgid "Insert count of new message into _X property"
 msgstr "X বৈশিষ্ট্যে নতুন বার্তাসমূহের সংখ্যা প্রবেশ করান (_X)"
 
 #. Urgent method button
-#: ../pidgin/plugins/notify.c:770
 msgid "Set window manager \"_URGENT\" hint"
 msgstr "উইন্ডো ব্যবস্থাপক \"জরুরী\" ইঙ্গিতে নির্দিষ্ট করুন (_U)"
 
-#: ../pidgin/plugins/notify.c:772
 msgid "_Flash window"
 msgstr "ফ্ল্যাশ উইন্ডো (_F)"
 
 #. Raise window method button
-#: ../pidgin/plugins/notify.c:781
 msgid "R_aise conversation window"
 msgstr "কথোপকথন উইন্ডো বৃদ্ধি করুন (_a)"
 
 #. Present conversation method button
-#: ../pidgin/plugins/notify.c:789
 msgid "_Present conversation window"
 msgstr "বর্তমান কথোপকথন উইন্ডো (_P)"
 
 #. ---------- "Notification Removals" ----------
-#: ../pidgin/plugins/notify.c:797
 msgid "Notification Removal"
 msgstr "প্রজ্ঞাপন অপসারক"
 
 #. Remove on focus button
-#: ../pidgin/plugins/notify.c:802
 msgid "Remove when conversation window _gains focus"
 msgstr "কথোপকথন উইন্ডোতে ফোকাস করা হলে অপসারণ করুন (_g)"
 
 #. Remove on click button
-#: ../pidgin/plugins/notify.c:809
 msgid "Remove when conversation window _receives click"
 msgstr "কথোপকথন উইন্ডোতে ক্লিক করা হলে অপসারণ করুন (_r)"
 
 #. Remove on type button
-#: ../pidgin/plugins/notify.c:817
 msgid "Remove when _typing in conversation window"
 msgstr "কথোপকথন উইন্ডোতে টাইপ করার সময় অপসারণ করুন (_t)"
 
 #. Remove on message send button
-#: ../pidgin/plugins/notify.c:825
 msgid "Remove when a _message gets sent"
 msgstr "একটি বার্তা পাঠানো হলে অপসারণ করুন (_m)"
 
 #. Remove on conversation switch button
-#: ../pidgin/plugins/notify.c:834
 msgid "Remove on switch to conversation ta_b"
 msgstr "কথোপকথন ট্যাবে পরিবর্তনের সময় অপসারণ করুন (_b)"
 
@@ -19666,7 +14481,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/notify.c:927
 msgid "Message Notification"
 msgstr "বার্তার প্রজ্ঞাপন"
 
@@ -19674,7 +14488,6 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../pidgin/plugins/notify.c:930 ../pidgin/plugins/notify.c:932
 msgid "Provides a variety of ways of notifying you of unread messages."
 msgstr "আপনাকে অপঠিত বার্তাসমূহের বিভিন্ন ধরনের প্রজ্ঞাপন প্রদান করে।"
 
@@ -19684,19 +14497,16 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/pidgininc.c:91
 msgid "Pidgin Demonstration Plugin"
 msgstr "পিজিন কার্যপ্রণালী প্রদর্শন প্লাগইন"
 
 #. *< name
 #. *< version
 #. *  summary
-#: ../pidgin/plugins/pidgininc.c:94
 msgid "An example plugin that does stuff - see the description."
 msgstr "একটি উদাহারণ প্লাগইন যা অনেক কিছু করে - বিবরণ দেখুন।"
 
 #. *  description
-#: ../pidgin/plugins/pidgininc.c:96
 msgid ""
 "This is a really cool plugin that does a lot of stuff:\n"
 "- It tells you who wrote the program when you log in\n"
@@ -19708,60 +14518,47 @@
 "- এটা সব আগত পাঠ উল্টে দেয়\n"
 "- আপনার তালিকাভুক্ত ব্যক্তি সাইন অন করলেই এটা তাদেরকে একটি বার্তা পাঠায়"
 
-#: ../pidgin/plugins/pidginrc.c:51
 msgid "Cursor Color"
 msgstr "কার্সারের রং"
 
-#: ../pidgin/plugins/pidginrc.c:52
 msgid "Secondary Cursor Color"
 msgstr "গৌণ কার্সারের রং"
 
-#: ../pidgin/plugins/pidginrc.c:53
 msgid "Hyperlink Color"
 msgstr "হাইপারলিঙ্কের রং"
 
-#: ../pidgin/plugins/pidginrc.c:54
 msgid "Visited Hyperlink Color"
 msgstr "প্রনির্দেশিত হাইপারলিঙ্ক রং"
 
-#: ../pidgin/plugins/pidginrc.c:57
 msgid "Highlighted Message Name Color"
 msgstr "প্রনির্দেশিত বার্তার নামের রং"
 
-#: ../pidgin/plugins/pidginrc.c:69
 msgid "GtkTreeView Horizontal Separation"
 msgstr "GtkTreeView অনুভূমিক বিভাজন"
 
-#: ../pidgin/plugins/pidginrc.c:84
 msgid "Conversation Entry"
 msgstr "কথোপকথন এন্টি"
 
-#: ../pidgin/plugins/pidginrc.c:85
 msgid "Request Dialog"
 msgstr "অনুরোধ সংলাপ"
 
-#: ../pidgin/plugins/pidginrc.c:86
 msgid "Notify Dialog"
 msgstr "প্রজ্ঞাপন সংলাপ"
 
-#: ../pidgin/plugins/pidginrc.c:262
 msgid "Select Color"
 msgstr "রং নির্বাচন করুন"
 
-#: ../pidgin/plugins/pidginrc.c:309
+#, c-format
 msgid "Select Interface Font"
 msgstr "ইন্টারফেসের ফন্ট নির্বাচন করুন"
 
-#: ../pidgin/plugins/pidginrc.c:312
 #, c-format
 msgid "Select Font for %s"
 msgstr "%s-এর জন্য ফন্ট নির্বাচন করুন"
 
-#: ../pidgin/plugins/pidginrc.c:380
 msgid "GTK+ Interface Font"
 msgstr "GTK+ ইন্টারফেসের ফন্ট"
 
-#: ../pidgin/plugins/pidginrc.c:400
 msgid "GTK+ Text Shortcut Theme"
 msgstr "GTK+ পাঠ শর্টকাটের থীম"
 
@@ -19785,49 +14582,38 @@
 #. widget_bool_widgets[i]);
 #. }
 #.
-#: ../pidgin/plugins/pidginrc.c:437
 msgid "Interface colors"
 msgstr "ইন্টারফেসের রং"
 
 # tithi
-#: ../pidgin/plugins/pidginrc.c:461
 msgid "Widget Sizes"
 msgstr "উইজেট আকারসমূহ"
 
-#: ../pidgin/plugins/pidginrc.c:482
 msgid "Fonts"
 msgstr "ফন্টসমূহ"
 
-#: ../pidgin/plugins/pidginrc.c:506
 msgid "Gtkrc File Tools"
 msgstr "Gtkrc ফাইলের টুলসমূহ"
 
-#: ../pidgin/plugins/pidginrc.c:511
 #, c-format
 msgid "Write settings to %s%sgtkrc-2.0"
 msgstr "%s%sgtkrc-২.০ এ  লিখন বিন্যাসন"
 
-#: ../pidgin/plugins/pidginrc.c:520
 msgid "Re-read gtkrc files"
 msgstr "gtkrc ফাইলগুলো পুনরায় পড়ুন"
 
-#: ../pidgin/plugins/pidginrc.c:558
 msgid "Pidgin GTK+ Theme Control"
 msgstr "পিজিন GTK+ থীম নিয়ন্ত্রণ"
 
-#: ../pidgin/plugins/pidginrc.c:560 ../pidgin/plugins/pidginrc.c:561
 msgid "Provides access to commonly used gtkrc settings."
 msgstr "সাধারণত ব্যবহৃত gtkrc বিন্যাসনসমূহে প্রবেশ অনুমোদন করে।"
 
-#: ../pidgin/plugins/raw.c:175
 msgid "Raw"
 msgstr "নতুন"
 
-#: ../pidgin/plugins/raw.c:177
 msgid "Lets you send raw input to text-based protocols."
 msgstr "আপনাকে পাঠ-ভিত্তিক প্রটোকলসমূহে নতুন ইনপুট পাঠাতে দেয়।"
 
-#: ../pidgin/plugins/raw.c:178
 msgid ""
 "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
 "'Enter' in the entry box to send. Watch the debug window."
@@ -19835,20 +14621,16 @@
 "আপনাকে পাঠ-ভিত্তিক প্রটোকলসমূহে (XMPP, MSN, IRC, TOC) নতুন ইনপুট পাঠাতে দেয়। "
 "পাঠাতে হলে এন্ট্রি বাক্সের 'Enter' চাপুন। ডিবাগ উইন্ডোটি পর্যবেক্ষণ করুন।"
 
-#: ../pidgin/plugins/relnot.c:111
 #, c-format
 msgid "You can upgrade to %s %s today."
 msgstr "আপনি আজ %s %s এ উন্নততর করতে পারেন।"
 
-#: ../pidgin/plugins/relnot.c:116
 msgid "New Version Available"
 msgstr "নতুন সংস্করণ সহজলভ্য"
 
-#: ../pidgin/plugins/relnot.c:119
 msgid "Later"
 msgstr "পরবর্তীতে"
 
-#: ../pidgin/plugins/relnot.c:120
 msgid "Download Now"
 msgstr "এখন ডাউনলোড করুন"
 
@@ -19858,19 +14640,16 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/relnot.c:199
 msgid "Release Notification"
 msgstr "সংস্করণ প্রজ্ঞাপন"
 
 #. *< name
 #. *< version
 #. *  summary
-#: ../pidgin/plugins/relnot.c:202
 msgid "Checks periodically for new releases."
 msgstr "পর্যায়ক্রমিকভাবে নতুন সংস্করণের জন্য পরীক্ষা করুন।"
 
 #. *  description
-#: ../pidgin/plugins/relnot.c:204
 msgid ""
 "Checks periodically for new releases and notifies the user with the "
 "ChangeLog."
@@ -19886,18 +14665,15 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/sendbutton.c:176
 msgid "Send Button"
 msgstr "পাঠানোর বোতাম"
 
 #. *< name
 #. *< version
-#: ../pidgin/plugins/sendbutton.c:178
 msgid "Conversation Window Send Button."
 msgstr "কথোপকথন উইন্ডোর প্রেরণ বোতাম"
 
 #. *< summary
-#: ../pidgin/plugins/sendbutton.c:179
 msgid ""
 "Adds a Send button to the entry area of the conversation window. Intended "
 "for when no physical keyboard is present."
@@ -19905,71 +14681,55 @@
 "কথোপকথন উইন্ডোর এন্ট্রি এলাকায় একটি প্রেরণ বোতাম যোগ করুন। যখন কোনো কীবোর্ড বর্তমান "
 "নেই এমন উদ্দেশ্যে।"
 
-#: ../pidgin/plugins/spellchk.c:1971
 msgid "Duplicate Correction"
 msgstr "অনুরূপ সংশোধন"
 
-#: ../pidgin/plugins/spellchk.c:1972
 msgid "The specified word already exists in the correction list."
 msgstr "উল্লেখিত শব্দটি ইতোমধ্যে সংশোধন তালিকায় বিদ্যমান।"
 
-#: ../pidgin/plugins/spellchk.c:2185
 msgid "Text Replacements"
 msgstr "পাঠ প্রতিস্থাপন"
 
-#: ../pidgin/plugins/spellchk.c:2208
 msgid "You type"
 msgstr "আপনি টাইপ করুন"
 
-#: ../pidgin/plugins/spellchk.c:2222
 msgid "You send"
 msgstr "আপনি পাঠান"
 
-#: ../pidgin/plugins/spellchk.c:2236
 msgid "Whole words only"
 msgstr "শুধুমাত্র পূর্ণ শব্দ"
 
 # tithi
-#: ../pidgin/plugins/spellchk.c:2248
 msgid "Case sensitive"
 msgstr "কেস সংবেদনশীল"
 
-#: ../pidgin/plugins/spellchk.c:2274
 msgid "Add a new text replacement"
 msgstr "নতুন পাঠ প্রতিস্থাপন যোগ করুন"
 
-#: ../pidgin/plugins/spellchk.c:2290
 msgid "You _type:"
 msgstr "আপনি টাইপ করুন (_t):"
 
-#: ../pidgin/plugins/spellchk.c:2294
 msgid "You _send:"
 msgstr "আপনি পাঠান (_s):"
 
 # tithi
 #. Created here so it can be passed to whole_words_button_toggled.
-#: ../pidgin/plugins/spellchk.c:2297
 msgid "_Exact case match (uncheck for automatic case handling)"
 msgstr "যথাযথ কেস সমন্বয় (স্বয়ংক্রিয় কেস পরিচালনার জন্য অপরীক্ষীত রাখুন) (_E)"
 
-#: ../pidgin/plugins/spellchk.c:2299
 msgid "Only replace _whole words"
 msgstr "শুধুমাত্র পূর্ণ শব্দ প্রতিস্থাপন করুন (_w)"
 
-#: ../pidgin/plugins/spellchk.c:2324
 msgid "General Text Replacement Options"
 msgstr "সাধারণ পাঠ প্রতিস্থাপন পছন্দসমূহ"
 
 # tithi
-#: ../pidgin/plugins/spellchk.c:2325
 msgid "Enable replacement of last word on send"
 msgstr "পাঠানোর সময় শেষ শব্দের প্রতিস্থাপন সক্রিয় করুন"
 
-#: ../pidgin/plugins/spellchk.c:2358
 msgid "Text replacement"
 msgstr "পাঠ প্রতিস্থাপন"
 
-#: ../pidgin/plugins/spellchk.c:2360 ../pidgin/plugins/spellchk.c:2361
 msgid "Replaces text in outgoing messages according to user-defined rules."
 msgstr "ব্যবহারকারী-সুনির্দিষ্ট নীতি অনুযায়ী বহির্গমন বার্তাসমুহে পাঠ প্রতিস্থাপন করে।"
 
@@ -19979,7 +14739,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/ticker/ticker.c:74 ../pidgin/plugins/ticker/ticker.c:356
 msgid "Buddy Ticker"
 msgstr "বন্ধু চিহ্নিতকারী"
 
@@ -19987,11 +14746,9 @@
 #. *< version
 #. *  summary
 #. *  description
-#: ../pidgin/plugins/ticker/ticker.c:359 ../pidgin/plugins/ticker/ticker.c:361
 msgid "A horizontal scrolling version of the buddy list."
 msgstr "বন্ধুতালিকার একটি অনুভূমিক স্ক্রলিং সংস্করণ।"
 
-#: ../pidgin/plugins/timestamp.c:135
 msgid "Display Timestamps Every"
 msgstr "প্রত্যেক টাইমস্টাম্প প্রদর্শন করুন"
 
@@ -20001,7 +14758,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/timestamp.c:200
 msgid "Timestamp"
 msgstr "টাইমস্ট্যাম্প"
 
@@ -20009,46 +14765,36 @@
 #. *< name
 #. *< version
 #. *  summary
-#: ../pidgin/plugins/timestamp.c:203
 msgid "Display iChat-style timestamps"
 msgstr "আই-আড্ডা-শৈলীর টাইমস্ট্যাম্প প্রদর্শন করুন"
 
 # fix me 
 #. *  description
-#: ../pidgin/plugins/timestamp.c:205
 msgid "Display iChat-style timestamps every N minutes."
 msgstr "প্রতি N মিনিট পর আই-আড্ডা-শৈলীর টাইমস্ট্যাম্প প্রদর্শন করুন।"
 
 # tithi
-#: ../pidgin/plugins/timestamp_format.c:23
 msgid "Timestamp Format Options"
 msgstr "টাইমস্ট্যাম্প বিন্যাসের পছন্দসমূহ"
 
 # tithi
-#: ../pidgin/plugins/timestamp_format.c:26
+#, c-format
 msgid "_Force 24-hour time format"
 msgstr "২৪-ঘন্টার সময় বিন্যাস নির্ধারণ করুন (_F)"
 
-#: ../pidgin/plugins/timestamp_format.c:33
 msgid "Show dates in..."
 msgstr "এ তারিখ প্রদর্শন করুন..."
 
-#: ../pidgin/plugins/timestamp_format.c:38
 msgid "Co_nversations:"
 msgstr "কথোপকথন (_n):"
 
-#: ../pidgin/plugins/timestamp_format.c:40
-#: ../pidgin/plugins/timestamp_format.c:49
 msgid "For delayed messages"
 msgstr "বিলম্বিত বার্তাসমূহের জন্য"
 
 # tithi
-#: ../pidgin/plugins/timestamp_format.c:41
-#: ../pidgin/plugins/timestamp_format.c:50
 msgid "For delayed messages and in chats"
 msgstr "বিলম্বিত বার্তাসমূহের জন্য এবং আড্ডায়"
 
-#: ../pidgin/plugins/timestamp_format.c:47
 msgid "_Message Logs:"
 msgstr "বার্তার কার্যবিবরণী (_M):"
 
@@ -20059,7 +14805,6 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/timestamp_format.c:151
 msgid "Message Timestamp Formats"
 msgstr "বার্তার টাইমস্ট্যাম্প বিন্যাসসমূহ"
 
@@ -20067,13 +14812,11 @@
 #. *< name
 #. *< version
 #. *  summary
-#: ../pidgin/plugins/timestamp_format.c:154
 msgid "Customizes the message timestamp formats."
 msgstr "বার্তার টাইমস্টাম্প বিন্যাসসমূহ পছন্দসই বিন্যাস করে।"
 
 # tithi
 #. *  description
-#: ../pidgin/plugins/timestamp_format.c:156
 msgid ""
 "This plugin allows the user to customize conversation and logging message "
 "timestamp formats."
@@ -20081,44 +14824,32 @@
 "এই প্লাগইন ব্য়বহারকারীকে কথোপকথন এবং যুক্তকরণ বার্তার টাইমস্টাম্প বিন্যাসসমূহ পছন্দসই "
 "বিন্যাস করার অনুমতি দেয়।"
 
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:175
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:598
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:645
 msgid "Opacity:"
 msgstr "জড়তা:"
 
 #. IM Convo trans options
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:562
 msgid "IM Conversation Windows"
 msgstr "তাৎক্ষণিক বার্তার কথোপকথন উইন্ডোজ"
 
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:563
 msgid "_IM window transparency"
 msgstr "তাৎক্ষণিক বার্তা উইন্ডোর স্বচ্ছতা (_I)"
 
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:577
 msgid "_Show slider bar in IM window"
 msgstr "তাৎক্ষণিক বার্তার উইন্ডোতে স্লাইডার বার প্রদর্শন করুন (_S)"
 
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:584
 msgid "Remove IM window transparency on focus"
 msgstr "ফোকাসে আইএম উইন্ডোর স্বচ্ছতা অপসারন করুন"
 
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:587
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:635
 msgid "Always on top"
 msgstr "সব সময় উপরে"
 
 #. Buddy List trans options
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:619
 msgid "Buddy List Window"
 msgstr "বন্ধু তালিকার উইন্ডো"
 
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:620
 msgid "_Buddy List window transparency"
 msgstr "বন্ধু তালিকা উইন্ডোর স্বচ্ছতা (_B)"
 
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:633
 msgid "Remove Buddy List window transparency on focus"
 msgstr "ফোকাসে বন্ধু তালিকার উইন্ডোর স্বচ্ছতা অপসারণ করুন"
 
@@ -20128,19 +14859,16 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:693
 msgid "Transparency"
 msgstr "স্বচ্ছতা"
 
 #. *< name
 #. *< version
 #. *  summary
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:696
 msgid "Variable Transparency for the buddy list and conversations."
 msgstr "বন্ধু তালিকা ও কথোপকথনের জন্য ভেরিয়েবল স্বচ্ছতা।"
 
 #. *  description
-#: ../pidgin/plugins/win32/transparency/win2ktrans.c:698
 msgid ""
 "This plugin enables variable alpha transparency on conversation windows and "
 "the buddy list.\n"
@@ -20151,55 +14879,40 @@
 "\n"
 "* নোট: এই প্লাগইন Win2000 বা অপেক্ষাকৃত প্রয়োজন।"
 
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:303
 msgid "GTK+ Runtime Version"
 msgstr "GTK+ চলমান সংস্করণ"
 
 #. Autostart
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:311
 msgid "Startup"
 msgstr "সূচনা"
 
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:312
 #, c-format
 msgid "_Start %s on Windows startup"
 msgstr "উইন্ডোজ শুরুর সময় %s কে চালু করুন (_S)"
 
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:327
 msgid "_Dockable Buddy List"
 msgstr "ডকযোগ্য বন্ধু তালিকা (_D)"
 
 #. Blist On Top
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:331
 msgid "_Keep Buddy List window on top:"
 msgstr "বন্ধু তালিকার উইন্ডো উপরে রাখুন (_K):"
 
 #. XXX: Did this ever work?
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:336
 msgid "Only when docked"
 msgstr "শুধুমাত্র যখন ডক করে"
 
-# fix me
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:341
-msgid "_Flash window when chat messages are received"
-msgstr "আড্ডার বার্তাসমূহ গ্রহণ করলে উইন্ডো ফ্ল্যাশ দিন (_F)"
-
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:371
 msgid "Windows Pidgin Options"
 msgstr "উইন্ডোজের পিজিন পছন্দসমূহ"
 
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:373
 msgid "Options specific to Pidgin for Windows."
 msgstr "উইন্ডোজের জন্য পিজিনে উল্লেখিত পছন্দসমূহ।"
 
 # fix me
-#: ../pidgin/plugins/win32/winprefs/winprefs.c:374
 msgid ""
 "Provides options specific to Pidgin for Windows , such as buddy list docking."
 msgstr ""
 "উইন্ডোজের জন্য পিজিনে উল্লেখিত পছন্দগুলো প্রদান করে , যেমন বন্ধু তালিকা দেখানো।"
 
-#: ../pidgin/plugins/xmppconsole.c:670
 msgid "<font color='#777777'>Logged out.</font>"
 msgstr "<font color='#777777'>লগ আউট হয়েছে।</font>"
 
@@ -20209,30 +14922,23 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#: ../pidgin/plugins/xmppconsole.c:749 ../pidgin/plugins/xmppconsole.c:844
-#: ../pidgin/plugins/xmppconsole.c:863
 msgid "XMPP Console"
 msgstr "XMPP কনসোল"
 
-#: ../pidgin/plugins/xmppconsole.c:756
 msgid "Account: "
 msgstr "একাউন্ট:"
 
-#: ../pidgin/plugins/xmppconsole.c:783
 msgid "<font color='#777777'>Not connected to XMPP</font>"
 msgstr "<font color='#777777'>XMPP এর সাথে সংযুক্ত নয়</font>"
 
 # tithi
-#: ../pidgin/plugins/xmppconsole.c:793
 msgid "Insert an <iq/> stanza."
 msgstr "একটি <iq/> পংক্তি যুক্ত করুন।"
 
 # tithi
-#: ../pidgin/plugins/xmppconsole.c:802
 msgid "Insert a <presence/> stanza."
 msgstr "একটি <presence/> পংক্তি প্রবেশ করান।"
 
-#: ../pidgin/plugins/xmppconsole.c:811
 msgid "Insert a <message/> stanza."
 msgstr "একটি <message/> পংক্তি প্রবেশ করান।"
 
@@ -20240,16 +14946,21 @@
 #. *< name
 #. *< version
 #. *  summary
-#: ../pidgin/plugins/xmppconsole.c:866
 msgid "Send and receive raw XMPP stanzas."
 msgstr "নতুন XMPP পংক্তিগুলো পাঠান এবং গ্রহণ করুন।"
 
 # tithi
 #. *  description
-#: ../pidgin/plugins/xmppconsole.c:868
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "এই প্লাগিনটি XMPP সার্ভার বা ক্লায়েন্ট ডিবাগ করার জন্য কার্যকর।"
 
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "MSN ঠিকানা বই পুনরূদ্ধারে ব্যর্থ হয়েছে"
+
+# fix me
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "আড্ডার বার্তাসমূহ গ্রহণ করলে উইন্ডো ফ্ল্যাশ দিন (_F)"
+
 # tithi
 #~ msgid ""
 #~ "You may be disconnected shortly.  You may want to use TOC until this is "
--- a/po/da.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/da.po	Wed Mar 04 16:52:47 2009 +0000
@@ -1,25 +1,32 @@
-# Pidgin Danish translation
-# Copyright (C) 2003-2006, Morten Brix Pedersen <morten@wtf.dk>
-# Copyright (C) 2007-2009, Peter Bach <bach.peter@gmail.com>
-#
+# Pidgin Danish translation.
+# Copyright (C) 2003-2009 Free Software Foundation, Inc.
 # This file is distributed under the same license as the Pidgin package.
+# Morten Brix Pedersen <morten@wtf.dk>, 2003-2006
+# Peter Bach <bach.peter@gmail.com>, 2007-2009
 #
 # Konventioner:
 #   Buddy list, Contact list = venneliste
 #   Buddy pounce = overvågning (som i venneovervågning)
 #   Away = fravær eller fraværende
+#   Online = tilkoblet
+#   Offline = afkoblet
+#   Join = tilslutte
 #   IM / IMs = besked / beskeder
 #   Mouse Gesture = Musebevægelse
 #   Friendly Name (MSN protokollen) = synligt navn
 #   Tray Icon = Statusikon
 #   Ban = Udvis
+#   Signature = underskrift
+#   Link = henvisning
+#   web = internet
+#   token = nøgle (netværkstermologi)
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Pidgin 2.0.0\n"
+"Project-Id-Version: Pidgin 2.5.5\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-02-22 13:16-0500\n"
-"PO-Revision-Date: 2009-02-22 14:04+0100\n"
+"PO-Revision-Date: 2009-02-23 18:17+0100\n"
 "Last-Translator: Peter Bach <bach.peter@gmail.com>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
 "MIME-Version: 1.0\n"
@@ -50,21 +57,15 @@
 "%s\n"
 "Brug: %s [TILVALG]...\n"
 "\n"
-"  -c, --config=MAPPE  brug MAPPE for opsætningsfiler\n"
+"  -c, --config=DIR    brug DIR for opsætningsfiler\n"
 "  -d, --debug         udskriv fejlsøgningsbeskeder til stderr\n"
-"  -h, --help            vis denne hjælp og afslut\n"
+"  -h, --help          vis denne hjælp og afslut\n"
 "  -n, --nologin       log ikke ind automatisk\n"
 "  -v, --version       vis nuværende version og afslut\n"
 
 #, c-format
-msgid ""
-"%s encountered errors migrating your settings from %s to %s. Please "
-"investigate and complete the migration by hand. Please report this error at "
-"http://developer.pidgin.im"
-msgstr ""
-"%s opdagede fejl ved migrering af dine indstillinger fra %s til %s. Undersøg "
-"og afslut migreringen manuelt. Venligst rapporter denne fejl på http://"
-"developer.pidgin.im"
+msgid "%s encountered errors migrating your settings from %s to %s. Please investigate and complete the migration by hand. Please report this error at http://developer.pidgin.im"
+msgstr "%s opdagede fejl ved migrering af dine indstillinger fra %s til %s. Undersøg og færdiggør migreringen manuelt. Venligst rapportér denne fejl på http://developer.pidgin.im"
 
 msgid "Error"
 msgstr "Fejl"
@@ -169,7 +170,7 @@
 "Online: %d\n"
 "Total: %d"
 msgstr ""
-"Opkoblet: %d\n"
+"Tilkoblet: %d\n"
 "Total: %d"
 
 #, c-format
@@ -197,7 +198,7 @@
 msgstr "Du skal vælge en konto."
 
 msgid "The selected account is not online."
-msgstr "Den valgte konto er ikke online."
+msgstr "Den valgte konto er ikke tilkoblet."
 
 msgid "Error adding buddy"
 msgstr "Fejl ved tilføjelse af ven"
@@ -221,7 +222,7 @@
 msgstr "Indtast venne-information."
 
 msgid "Chats"
-msgstr "Chat-rum"
+msgstr "Samtalerum"
 
 #. Extract their Name and put it in
 msgid "Name"
@@ -234,10 +235,10 @@
 msgstr "Gruppe"
 
 msgid "Auto-join"
-msgstr "Auto-Deltag"
+msgstr "Auto-tilslut"
 
 msgid "Add Chat"
-msgstr "Tilføj chat"
+msgstr "Tilføj samtale"
 
 msgid "You can edit more information from the context menu later."
 msgstr "Du kan redigere flere informationer fra højreklik-menuen senere."
@@ -255,7 +256,7 @@
 msgstr "Indtast navnet på gruppen"
 
 msgid "Edit Chat"
-msgstr "Redigér chat"
+msgstr "Redigér samtale"
 
 msgid "Please Update the necessary fields."
 msgstr "Venligst opdatér de nødvendige felter."
@@ -285,7 +286,7 @@
 msgstr "Blokeret"
 
 msgid "Show when offline"
-msgstr "Vis når offline"
+msgstr "Vis når afkoblet"
 
 #, c-format
 msgid "Please enter the new name for %s"
@@ -295,18 +296,16 @@
 msgstr "Omdøb"
 
 msgid "Set Alias"
-msgstr "Sæt alias"
+msgstr "Angiv alias"
 
 msgid "Enter empty string to reset the name."
 msgstr "Indtast tom streng for at nulstille navnet."
 
 msgid "Removing this contact will also remove all the buddies in the contact"
-msgstr ""
-"Ved at fjerne denne kontakt vil du også fjerne alle vennerne i denne kontakt"
+msgstr "Ved at fjerne denne kontakt vil du også fjerne alle vennerne i denne kontakt"
 
 msgid "Removing this group will also remove all the buddies in the group"
-msgstr ""
-"Ved at fjerne denne gruppe vil du også fjerne alle vennerne i denne gruppe"
+msgstr "Ved at fjerne denne gruppe vil du også fjerne alle vennerne i denne gruppe"
 
 #, c-format
 msgid "Are you sure you want to remove %s?"
@@ -354,18 +353,16 @@
 msgstr "Udvidelsesmoduler"
 
 msgid "Block/Unblock"
-msgstr "Blokér/Afblokér"
+msgstr "Blokér/frigiv"
 
 msgid "Block"
 msgstr "Blokér"
 
 msgid "Unblock"
-msgstr "Afblokér"
-
-msgid ""
-"Please enter the username or alias of the person you would like to Block/"
-"Unblock."
-msgstr "Indtast brugernavnet eller alias på personen du vil blokere/afblokere."
+msgstr "Frigiv"
+
+msgid "Please enter the username or alias of the person you would like to Block/Unblock."
+msgstr "Indtast brugernavnet eller alias på personen du vil blokere/frigive."
 
 #. Not multiline
 #. Not masked?
@@ -383,39 +380,35 @@
 msgstr "Kanal"
 
 msgid "Join a Chat"
-msgstr "Deltag i en chat"
+msgstr "Tilslut en samtale"
 
 msgid "Please enter the name of the chat you want to join."
-msgstr "Indtast navnet på den chat du vil tilslutte."
+msgstr "Indtast navnet på den samtale du vil tilslutte."
 
 msgid "Join"
-msgstr "Deltag"
-
-msgid ""
-"Please enter the username or alias of the person whose log you would like to "
-"view."
-msgstr ""
-"Indtast brugernavnet eller alias på den person, hvis log du gerne vil "
-"gennemse."
+msgstr "Tilslut"
+
+msgid "Please enter the username or alias of the person whose log you would like to view."
+msgstr "Indtast brugernavnet eller alias på den person, hvis log du gerne vil gennemse."
 
 #. Create the "Options" frame.
 msgid "Options"
 msgstr "Indstillinger"
 
 msgid "Send IM..."
-msgstr "Send kvik-besked..."
+msgstr "Send besked..."
 
 msgid "Block/Unblock..."
-msgstr "Blokér/Afblokér..."
+msgstr "Blokér/frigiv..."
 
 msgid "Join Chat..."
-msgstr "Tilslut chat..."
+msgstr "Tilslut samtale..."
 
 msgid "View Log..."
 msgstr "Vis log..."
 
 msgid "View All Logs"
-msgstr "Vis alle logge"
+msgstr "Vis alle logger"
 
 msgid "Show"
 msgstr "Vis"
@@ -424,7 +417,7 @@
 msgstr "Tomme grupper"
 
 msgid "Offline buddies"
-msgstr "Offline venner"
+msgstr "Afkoblede venner"
 
 msgid "Sort"
 msgstr "Sortér"
@@ -442,7 +435,7 @@
 msgstr "Ven"
 
 msgid "Chat"
-msgstr "Chat"
+msgstr "Samtale"
 
 msgid "Grouping"
 msgstr "Gruppering"
@@ -478,7 +471,7 @@
 "Export to file %s failed.\n"
 "Check that you have write permission to the target path\n"
 msgstr ""
-"Fejl ved eksportering af filen %s.\n"
+"Fejl ved eksportering til filen %s.\n"
 "Kontroller at du har skriverettigheder til målstien\n"
 
 msgid "Certificate Export Error"
@@ -511,7 +504,7 @@
 
 #, c-format
 msgid "Really delete certificate for %s?"
-msgstr "Vil du slette certifikat for %s?"
+msgstr "Vil du slette certifikat til %s?"
 
 msgid "Confirm certificate delete"
 msgstr "Bekræft sletning af certifikat"
@@ -542,39 +535,32 @@
 msgid ""
 "%s\n"
 "\n"
-"Finch will not attempt to reconnect the account until you correct the error "
-"and re-enable the account."
+"Finch will not attempt to reconnect the account until you correct the error and re-enable the account."
 msgstr ""
 "%s\n"
 " \n"
-"Finch vil ikke forsøge at genforbinde til kontoen før du retter fejlen og "
-"genaktiverer kontoen."
+"Finch vil ikke forsøge at genforbinde til kontoen før du retter fejlen og genaktiverer kontoen."
 
 msgid "Re-enable Account"
 msgstr "Slå konto til igen"
 
-msgid ""
-"The account has disconnected and you are no longer in this chat. You will be "
-"automatically rejoined in the chat when the account reconnects."
-msgstr ""
-"Kontoen har afbrudt og du er ikke længere i denne chat. Du vil automatisk "
-"blive tilsluttet til chatten igen når kontoen genforbinder."
+msgid "The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects."
+msgstr "Kontoen har afbrudt og du er ikke længere i denne samtale. Du vil automatisk blive tilsluttet til samtalen igen når kontoen genforbinder."
 
 msgid "No such command."
 msgstr "Ingen kommando ved det navn."
 
 msgid "Syntax Error:  You typed the wrong number of arguments to that command."
-msgstr ""
-"Syntaksfejl: Du indtastede det forkert antal argumenter til den kommando."
+msgstr "Syntaksfejl:  Du indtastede det forkert antal argumenter til den kommando."
 
 msgid "Your command failed for an unknown reason."
 msgstr "Din kommando fejlede pga. en ukendt årsag."
 
 msgid "That command only works in chats, not IMs."
-msgstr "Den kommando virker kun i chats, ikke i samtalevinduer."
+msgstr "Den kommando virker kun i samtaler, ikke i beskeder."
 
 msgid "That command only works in IMs, not chats."
-msgstr "Den besked virker kun i samtalevinduer, ikke i chats."
+msgstr "Den besked virker kun i beskeder, ikke i samtaler."
 
 msgid "That command doesn't work on this protocol."
 msgstr "Den kommando virker ikke med denne protokol."
@@ -599,15 +585,13 @@
 "%s skriver..."
 
 msgid "You have left this chat."
-msgstr "Du har forladt denne chat."
+msgstr "Du har forladt denne samtale."
 
 msgid "Logging started. Future messages in this conversation will be logged."
 msgstr "Logning startet. Fremtidige beskeder i denne samtale vil blive logget."
 
-msgid ""
-"Logging stopped. Future messages in this conversation will not be logged."
-msgstr ""
-"Logning stoppet. Fremtidige beskeder i denne samtale vil ikke blive logget."
+msgid "Logging stopped. Future messages in this conversation will not be logged."
+msgstr "Logning stoppet. Fremtidige beskeder i denne samtale vil ikke blive logget."
 
 msgid "Send To"
 msgstr "Send til"
@@ -641,7 +625,7 @@
 msgstr "Invitér..."
 
 msgid "Enable Logging"
-msgstr "Aktiver logning"
+msgstr "Aktivér logning"
 
 msgid "Enable Sounds"
 msgstr "Aktivér lyde"
@@ -669,34 +653,21 @@
 "De følgende kommandoer er tilgængelige i dette sammenhæng:\n"
 
 #, c-format
-msgid ""
-"%s is not a valid message class. See '/help msgcolor' for valid message "
-"classes."
-msgstr ""
-"%s er ikke en gyldig beskedklasse. Se \"/help msgcolor\" for gyldige "
-"beskedklasser."
+msgid "%s is not a valid message class. See '/help msgcolor' for valid message classes."
+msgstr "%s er ikke en gyldig beskedklasse. Se \"/help msgcolor\" for gyldige beskedklasser."
 
 #, c-format
 msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
 msgstr "%s er ikke gyldig farve. Se \"/help msgcolor\" for gyldige farver."
 
-msgid ""
-"say &lt;message&gt;:  Send a message normally as if you weren't using a "
-"command."
-msgstr ""
-"say &lt;besked&gt;:  Send en besked som normalt hvis du ikke brugte en "
-"kommando."
+msgid "say &lt;message&gt;:  Send a message normally as if you weren't using a command."
+msgstr "say &lt;besked&gt;:  Send en besked som normalt hvis du ikke brugte en kommando."
 
 msgid "me &lt;action&gt;:  Send an IRC style action to a buddy or chat."
-msgstr ""
-"me &lt;handling&gt;: Send en IRC-lignende handling til en ven eller en chat."
-
-msgid ""
-"debug &lt;option&gt;:  Send various debug information to the current "
-"conversation."
-msgstr ""
-"edbug &lt;tilvalg&gt;: Send forskellige fejlsøgningsoplysninger til den "
-"nuværende samtale."
+msgstr "me &lt;handling&gt;:  Send en IRC-lignende handling til en ven eller samtale."
+
+msgid "debug &lt;option&gt;:  Send various debug information to the current conversation."
+msgstr "edbug &lt;tilvalg&gt;:  Send forskellige fejlsøgningsoplysninger til den nuværende samtale."
 
 msgid "clear: Clears the conversation scrollback."
 msgstr "clear: Rydder samtalevinduet for tekst."
@@ -705,38 +676,28 @@
 msgstr "help &lt;kommando&gt;:  Hjælp til en specifik kommando."
 
 msgid "users:  Show the list of users in the chat."
-msgstr "brugere:  Vis listen over brugere i chatten."
+msgstr "users:  Vis listen over brugere i samtalen."
 
 msgid "plugins: Show the plugins window."
-msgstr "udvidelsesmoduler: Vis udvidelsesmodul-vinduet."
+msgstr "plugins: Vis vinduet for udvidelsesmoduler."
 
 msgid "buddylist: Show the buddylist."
-msgstr "venneliste: Vis vennelisten."
+msgstr "buddylist: Vis vennelisten."
 
 msgid "accounts: Show the accounts window."
-msgstr "konti: Vis konto-vinduet."
+msgstr "accounts: Vis konto-vinduet."
 
 msgid "debugwin: Show the debug window."
-msgstr "fejlsøgningsvin: Vis fejlsøgningsvinduet."
+msgstr "debugwin: Vis fejlsøgningsvinduet."
 
 msgid "prefs: Show the preference window."
-msgstr "indst: Vis indstillingsvinduet."
+msgstr "prefs: Vis indstillingsvinduet."
 
 msgid "statuses: Show the savedstatuses window."
-msgstr "status: Vis gemte statuser-vinduet."
-
-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;forgrund&gt; &lt;baggrund;: Sæt farven for de "
-"forskellige klasser af beskeder i samtalevinduet.<br>    &lt;klasse&gt;: "
-"modtag, send, markér, handling, tidsstempel<br>    &lt;forgrund/"
-"baggrund&gt;: sort, rød, grøn, blå, hvid, grå, mørkegrå, magenta, cyan, "
-"standard<br><br>EKSEMPEL:<br>    msgcolor send cyan standard"
+msgstr "statuses: Vis gemte statuser-vinduet."
+
+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;forgrund&gt; &lt;baggrund;: Sæt farven for de forskellige klasser af beskeder i samtalevinduet.<br>    &lt;klasse&gt;: modtag, send, markér, handling, tidsstempel<br>    &lt;forgrund/baggrund&gt;: sort, rød, grøn, blå, hvid, grå, mørkegrå, magenta, cyan, standard<br><br>EKSEMPEL:<br>    msgcolor send cyan standard"
 
 msgid "Unable to open file."
 msgstr "Kunne ikke åbne fil."
@@ -806,7 +767,7 @@
 
 #, c-format
 msgid "%.2f KiB/s"
-msgstr "%.2f KB/s"
+msgstr "%.2f KiB/s"
 
 msgid "Sent"
 msgstr "Sendt"
@@ -838,25 +799,14 @@
 msgid "%B %Y"
 msgstr "%B %Y"
 
-msgid ""
-"System events will only be logged if the \"Log all status changes to system "
-"log\" preference is enabled."
-msgstr ""
-"System handlinger vil kun blive logget hvis \"Log alle status ændringer til "
-"system log\" indstillingen er slået til."
-
-msgid ""
-"Instant messages will only be logged if the \"Log all instant messages\" "
-"preference is enabled."
-msgstr ""
-"Beskeder vil kun blive logget hvis \"Log alle beskeder\" indstillingen er "
-"slået til."
-
-msgid ""
-"Chats will only be logged if the \"Log all chats\" preference is enabled."
-msgstr ""
-"Chats vil kun blive logget hvis \"Log alle chats\" indstillingen er slået "
-"til."
+msgid "System events will only be logged if the \"Log all status changes to system log\" preference is enabled."
+msgstr "System handlinger vil kun blive logget hvis \"Log alle status ændringer til system log\" indstillingen er slået til."
+
+msgid "Instant messages will only be logged if the \"Log all instant messages\" preference is enabled."
+msgstr "Beskeder vil kun blive logget hvis \"Log alle beskeder\" indstillingen er slået til."
+
+msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr "Samtaler vil kun blive logget hvis \"Log alle samtaler\" indstillingen er slået til."
 
 msgid "No logs were found"
 msgstr "Ingen logs blev fundet"
@@ -901,7 +851,7 @@
 msgstr[1] "%s (%s) har %d nye beskeder."
 
 msgid "New Mail"
-msgstr "Ny email"
+msgstr "Ny post"
 
 #, c-format
 msgid "Info for %s"
@@ -929,7 +879,7 @@
 msgstr "fejl ved indlæsning af udvidelsesmodul"
 
 msgid "unloading plugin failed"
-msgstr "afmontering af udvidelsesmodul fejlede"
+msgstr "udlæsning af udvidelsesmodul fejlede"
 
 #, c-format
 msgid ""
@@ -951,7 +901,7 @@
 msgstr "Udvidelsesmodul skal indlæses før du kan konfigurere det."
 
 msgid "No configuration options for this plugin."
-msgstr "Ingen konfigurationsmuligheder for dette udvidelsesmodul."
+msgstr "Ingen konfigurationsindstillinger for dette udvidelsesmodul."
 
 msgid "Error loading plugin"
 msgstr "Fejl ved indlæsning af udvidelsesmodul"
@@ -959,16 +909,14 @@
 msgid "The selected file is not a valid plugin."
 msgstr "Den valgte fil er ikke et gyldigt udvidelsesmodul."
 
-msgid ""
-"Please open the debug window and try again to see the exact error message."
-msgstr ""
-"Åben fejlsøgningsvinduet og prøv igen for at se den eksakte fejlbesked."
+msgid "Please open the debug window and try again to see the exact error message."
+msgstr "Åben fejlsøgningsvinduet og prøv igen for at se den eksakte fejlbesked."
 
 msgid "Select plugin to install"
 msgstr "Vælg udvidelsesmodul som skal installeres"
 
 msgid "You can (un)load plugins from the following list."
-msgstr "Du kan (af)koble udvidelsesmoduler fra følgende liste."
+msgstr "Du kan (ud)læse udvidelsesmoduler fra følgende liste."
 
 msgid "Install Plugin..."
 msgstr "Installér udvidelsesmodul..."
@@ -1045,7 +993,7 @@
 msgstr "Åbn et beskedvindue"
 
 msgid "Pop up a notification"
-msgstr "Popup en påmindelse"
+msgstr "Pop op en påmindelse"
 
 msgid "Send a message"
 msgstr "Send en besked"
@@ -1120,7 +1068,7 @@
 
 #, c-format
 msgid "Unknown pounce event. Please report this!"
-msgstr "Ukendt handling ved overvågning. Venligst rapportér dette!"
+msgstr "Ukendt hændelse ved overvågning. Venligst rapportér dette!"
 
 msgid "Based on keyboard use"
 msgstr "Baseret på keyboardbrug"
@@ -1144,10 +1092,10 @@
 msgstr "Log-format"
 
 msgid "Log IMs"
-msgstr "Log kvik-beskeder"
+msgstr "Log beskeder"
 
 msgid "Log chats"
-msgstr "Log chats"
+msgstr "Log samtaler"
 
 msgid "Log status change events"
 msgstr "Log status-ændringer handlinger"
@@ -1156,13 +1104,13 @@
 msgstr "Rapportér inaktiv tid"
 
 msgid "Change status when idle"
-msgstr "Skift status ved inaktivitet"
+msgstr "Ændr status ved inaktivitet"
 
 msgid "Minutes before changing status"
 msgstr "Minutter før ændring af status"
 
 msgid "Change status to"
-msgstr "Skift status til"
+msgstr "Ændr status til"
 
 msgid "Conversations"
 msgstr "Samtaler"
@@ -1171,10 +1119,10 @@
 msgstr "Logning"
 
 msgid "You must fill all the required fields."
-msgstr "Du skal udfylde alle de påkrævede felter."
+msgstr "Du skal udfylde alle de krævede felter."
 
 msgid "The required fields are underlined."
-msgstr "De påkrævede felter er understreget."
+msgstr "De felter som kræves er understreget."
 
 msgid "Not implemented yet."
 msgstr "Ikke implementeret endnu."
@@ -1186,7 +1134,7 @@
 msgstr "Åbn fil..."
 
 msgid "Choose Location..."
-msgstr "Bestem placering..."
+msgstr "Vælg placering..."
 
 msgid "Hit 'Enter' to find more rooms of this category."
 msgstr "Tryk \"Retur\" for at finde flere rum af denne kategori."
@@ -1214,19 +1162,19 @@
 msgstr "Besked sendt"
 
 msgid "Person enters chat"
-msgstr "Person kommer ind i chat"
+msgstr "Person kommer ind i samtale"
 
 msgid "Person leaves chat"
-msgstr "Person forlader chat"
+msgstr "Person forlader samtale"
 
 msgid "You talk in chat"
-msgstr "Du taler i chat"
+msgstr "Du taler i samtale"
 
 msgid "Others talk in chat"
-msgstr "Andre snakker i chat"
+msgstr "Andre taler i samtale"
 
 msgid "Someone says your username in chat"
-msgstr "Nogle siger dit navn i en chat"
+msgstr "Nogle siger dit brugernavn i en samtale"
 
 msgid "GStreamer Failure"
 msgstr "GStreamer fejl"
@@ -1351,7 +1299,7 @@
 msgstr "Dublet titel"
 
 msgid "Please enter a different title for the status."
-msgstr "Brug en anden titel for statussen."
+msgstr "Brug en anden titel for den status."
 
 msgid "Substatus"
 msgstr "Understatus"
@@ -1391,22 +1339,16 @@
 msgstr "Kan ikke finde vindue"
 
 msgid "This plugin cannot be loaded because it was not built with X11 support."
-msgstr ""
-"Udvidelsesmodulet kan ikke indlæses, fordi det ikke er bygget med X11-"
-"understøttelse."
+msgstr "Udvidelsesmodulet kan ikke indlæses, fordi det ikke er bygget med X11-understøttelse."
 
 msgid "GntClipboard"
 msgstr "GntClipboard"
 
 msgid "Clipboard plugin"
-msgstr "Udklipsholder-udvidelsesmodul"
-
-msgid ""
-"When the gnt clipboard contents change, the contents are made available to "
-"X, if possible."
-msgstr ""
-"Når gnt-udklipsbordrets indhold ændrer sig, bliver indholdet gjort "
-"tilgængelig for X, hvis det er muligt."
+msgstr "Klippebords-udvidelsesmodul"
+
+msgid "When the gnt clipboard contents change, the contents are made available to X, if possible."
+msgstr "Når gnt-klippebordets indhold ændrer sig, bliver indholdet gjort tilgængelig for X, hvis det er muligt."
 
 #, c-format
 msgid "%s just signed on"
@@ -1432,13 +1374,13 @@
 msgstr "Ven logger ind/ud"
 
 msgid "You receive an IM"
-msgstr "Du har modtaget en kvik-besked"
+msgstr "Du har modtaget en besked"
 
 msgid "Someone speaks in a chat"
-msgstr "Nogle taler i en chat"
+msgstr "Nogle taler i en samtale"
 
 msgid "Someone says your name in a chat"
-msgstr "Nogle siger dit navn i en chat"
+msgstr "Nogle siger dit navn i en samtale"
 
 msgid "Notify with a toaster when"
 msgstr "Påmind med en toaster når"
@@ -1460,18 +1402,16 @@
 msgstr "<b>Samtale med %s på %s</b><br>"
 
 msgid "History Plugin Requires Logging"
-msgstr "Historik modul kræver logning"
+msgstr "Historikmodul kræver logning"
 
 msgid ""
 "Logging can be enabled from Tools -> Preferences -> Logging.\n"
 "\n"
-"Enabling logs for instant messages and/or chats will activate history for "
-"the same conversation type(s)."
+"Enabling logs for instant messages and/or chats will activate history for the same conversation type(s)."
 msgstr ""
 "Logning kan slås til i Værktøjer -> Indstillinger -> Logning.\n"
 "\n"
-"Ved at slå logs til for beskeder og/eller chats, vil det aktivere "
-"historikken for de samme samtale typer."
+"Ved at slå logs til for beskeder og/eller samtaler, vil det aktivere historikken for de samme samtale typer."
 
 msgid "GntHistory"
 msgstr "GntHistorik"
@@ -1479,27 +1419,23 @@
 msgid "Shows recently logged conversations in new conversations."
 msgstr "Viser tidligere loggede samtaler i nye samtaler."
 
-msgid ""
-"When a new conversation is opened this plugin will insert the last "
-"conversation into the current conversation."
-msgstr ""
-"Når en ny samtale bliver åbnet, vil dette modul indsætte den sidste samtale "
-"ind i den nye samtale."
+msgid "When a new conversation is opened this plugin will insert the last conversation into the current conversation."
+msgstr "Når en ny samtale bliver åbnet, vil dette modul indsætte den sidste samtale ind i den nye samtale."
 
 msgid "Online"
-msgstr "Logget ind"
+msgstr "Tilkoblet"
 
 msgid "Offline"
-msgstr "Offline"
+msgstr "Afkoblet"
 
 msgid "Online Buddies"
-msgstr "Online venner"
+msgstr "Tilkoblede venner"
 
 msgid "Offline Buddies"
-msgstr "Offline venner"
+msgstr "Afkoblede venner"
 
 msgid "Online/Offline"
-msgstr "Online/Offline"
+msgstr "Til-/Afkoblede"
 
 msgid "Meebo"
 msgstr "Meebo"
@@ -1514,7 +1450,7 @@
 msgstr "Indlejret gruppering (eksperimentel)"
 
 msgid "Provides alternate buddylist grouping options."
-msgstr "Giver alternativ venneliste grupperingsmuligheder."
+msgstr "Giver alternative grupperingsindstillinger for venneliste."
 
 msgid "Lastlog"
 msgstr "Lastlog"
@@ -1569,14 +1505,14 @@
 
 #, c-format
 msgid "Change password for %s"
-msgstr "Skift adgangskode for %s"
+msgstr "Ændr adgangskode for %s"
 
 msgid "Please enter your current password and your new password."
 msgstr "Indtast din nuværende og nye adgangskode."
 
 #, c-format
 msgid "Change user information for %s"
-msgstr "Skift bruger oplysninger for %s"
+msgstr "Ændr brugeroplysninger for %s"
 
 msgid "Set User Info"
 msgstr "Ret brugeroplysninger"
@@ -1623,7 +1559,7 @@
 #. Make messages
 #, c-format
 msgid "Accept certificate for %s?"
-msgstr "Acceptér certifikat for %s?"
+msgstr "Acceptér certifikat til %s?"
 
 #. TODO: Find what the handle ought to be
 msgid "SSL Certificate Verification"
@@ -1637,17 +1573,13 @@
 msgstr "Afvis"
 
 msgid "_View Certificate..."
-msgstr "_Se certifikat..."
+msgstr "_Vis certifikat..."
 
 #. Prompt the user to authenticate the certificate
 #. vrq will be completed by user_auth
 #, c-format
-msgid ""
-"The certificate presented by \"%s\" is self-signed. It cannot be "
-"automatically checked."
-msgstr ""
-"Certifikatet præsenteret af \"%s\" er selvsigneret. Det kan ikke blive "
-"kontrolleret automatisk."
+msgid "The certificate presented by \"%s\" is self-signed. It cannot be automatically checked."
+msgstr "Certifikatet præsenteret af \"%s\" er selv underskrevet. Det kan ikke kontrolleres automatisk."
 
 #, c-format
 msgid "The certificate chain presented for %s is not valid."
@@ -1665,42 +1597,27 @@
 msgstr "Ugyldig certifikatkæde"
 
 #. vrq will be completed by user_auth
-msgid ""
-"You have no database of root certificates, so this certificate cannot be "
-"validated."
-msgstr ""
-"Du har ingen database med rodcertifikater, så dette certifikat kan ikke "
-"godkendes."
+msgid "You have no database of root certificates, so this certificate cannot be validated."
+msgstr "Du har ingen database med rodcertifikater, så dette certifikat kan ikke kontrolleres."
 
 #. vrq will be completed by user_auth
-msgid ""
-"The root certificate this one claims to be issued by is unknown to Pidgin."
-msgstr ""
-"Rodcertifikatet, som denne påstår at være udgivet af, er ukendt af Pidgin."
-
-#, c-format
-msgid ""
-"The certificate chain presented by %s does not have a valid digital "
-"signature from the Certificate Authority from which it claims to have a "
-"signature."
-msgstr ""
-"Certifikatkæden, præsenteret af %s, har ikke et gyldigt digitalt signatur "
-"fra den certificerende myndighed, som den påstår at have et signatur fra."
+msgid "The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr "Rodcertifikatet, som denne påstår at være udgivet af, er ukendt af Pidgin."
+
+#, c-format
+msgid "The certificate chain presented by %s does not have a valid digital signature from the Certificate Authority from which it claims to have a signature."
+msgstr "Certifikatkæden, præsenteret af %s, har ikke en gyldig digital underskrift fra den certificerende myndighed, som den påstår at have en underskrift fra."
 
 msgid "Invalid certificate authority signature"
-msgstr "Ugyldig signatur fra certificerende myndighed"
+msgstr "Ugyldig underskrift fra certificerende myndighed"
 
 #. Prompt the user to authenticate the certificate
 #. TODO: Provide the user with more guidance about why he is
 #. being prompted
 #. vrq will be completed by user_auth
 #, c-format
-msgid ""
-"The certificate presented by \"%s\" claims to be from \"%s\" instead.  This "
-"could mean that you are not connecting to the service you believe you are."
-msgstr ""
-"Certifikatet præsenteret af \"%s\" påstår at være fra \"%s\" i stedet. Dette "
-"kunne tyde på, at du ikke er forbundet til den service du tror du er."
+msgid "The certificate presented by \"%s\" claims to be from \"%s\" instead.  This could mean that you are not connecting to the service you believe you are."
+msgstr "Certifikatet præsenteret af \"%s\" påstår at være fra \"%s\" i stedet. Dette kunne tyde på, at du ikke er forbundet til den tjeneste du tror du er."
 
 #. Make messages
 #, c-format
@@ -1802,17 +1719,17 @@
 msgstr "Intet navn"
 
 msgid "Unable to create new resolver process\n"
-msgstr "Kunne ikke oprette ny opløsningsproces\n"
+msgstr "Kunne ikke oprette ny løsningsproces\n"
 
 msgid "Unable to send request to resolver process\n"
-msgstr "Kunne ikke sende forespørgelse til opløsningsproces\n"
+msgstr "Kunne ikke sende forespørgsel til løsningsproces\n"
 
 #, c-format
 msgid ""
 "Error resolving %s:\n"
 "%s"
 msgstr ""
-"Fejl ved opløsning af %s:\n"
+"Fejl ved løsning af %s:\n"
 "%s"
 
 #, c-format
@@ -1824,12 +1741,12 @@
 "Error reading from resolver process:\n"
 "%s"
 msgstr ""
-"Fejl ved indlæsning fra opløsningsproces:\n"
+"Fejl ved indlæsning fra løsningsproces:\n"
 "%s"
 
 #, c-format
 msgid "Resolver process exited without answering our request"
-msgstr "Opløsningsprocess afsluttede uden svar på vores forespørgelse"
+msgstr "Løsningsprocess afsluttede uden svar på vores forespørgsel"
 
 #, c-format
 msgid "Thread creation failure: %s"
@@ -1994,68 +1911,32 @@
 msgid "The handler for \"ymsgr\" URLs"
 msgstr "Håndteringen af \"ymsgr\"-adresser"
 
-msgid ""
-"True if the command specified in the \"command\" key should handle \"aim\" "
-"URLs."
-msgstr ""
-"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"aim\"-"
-"adresser."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"gg\" "
-"URLs."
-msgstr ""
-"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"gg\"-"
-"adresser."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"icq\" "
-"URLs."
-msgstr ""
-"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"icq\"-"
-"adresser."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"irc\" "
-"URLs."
-msgstr ""
-"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"irc\"-"
-"adresser."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"msnim\" "
-"URLs."
-msgstr ""
-"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"msnim\"-"
-"adresser."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"sip\" "
-"URLs."
-msgstr ""
-"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"sip\"-"
-"adresser."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"xmpp\" "
-"URLs."
-msgstr ""
-"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"xmpp\"-"
-"adresser."
-
-msgid ""
-"True if the command specified in the \"command\" key should handle \"ymsgr\" "
-"URLs."
-msgstr ""
-"Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"ymsgr\"-"
-"adresser."
-
-msgid ""
-"True if the command used to handle this type of URL should be run in a "
-"terminal."
-msgstr ""
-"Sand hvis kommandoen brugt til at håndtere denne type af adresse skal køres "
-"i en terminal."
+msgid "True if the command specified in the \"command\" key should handle \"aim\" URLs."
+msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"aim\"-adresser."
+
+msgid "True if the command specified in the \"command\" key should handle \"gg\" URLs."
+msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"gg\"-adresser."
+
+msgid "True if the command specified in the \"command\" key should handle \"icq\" URLs."
+msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"icq\"-adresser."
+
+msgid "True if the command specified in the \"command\" key should handle \"irc\" URLs."
+msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"irc\"-adresser."
+
+msgid "True if the command specified in the \"command\" key should handle \"msnim\" URLs."
+msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"msnim\"-adresser."
+
+msgid "True if the command specified in the \"command\" key should handle \"sip\" URLs."
+msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"sip\"-adresser."
+
+msgid "True if the command specified in the \"command\" key should handle \"xmpp\" URLs."
+msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"xmpp\"-adresser."
+
+msgid "True if the command specified in the \"command\" key should handle \"ymsgr\" URLs."
+msgstr "Sand hvis kommandoen angivet i \"kommando\"-nøglen skulle håndtere \"ymsgr\"-adresser."
+
+msgid "True if the command used to handle this type of URL should be run in a terminal."
+msgstr "Sand hvis kommandoen brugt til at håndtere denne type af adresse skal køres i en terminal."
 
 msgid "Whether the specified command should handle \"aim\" URLs"
 msgstr "Hvorledes den angivne kommando skal håndtere \"aim\"-adresser"
@@ -2088,10 +1969,10 @@
 msgstr "HTML"
 
 msgid "Plain text"
-msgstr "Ren tekst"
+msgstr "Klartekst"
 
 msgid "Old flat format"
-msgstr "Gammel fladformat"
+msgstr "Gammelt fladt format"
 
 msgid "Logging of this conversation failed."
 msgstr "Logning af denne samtale fejlede."
@@ -2100,20 +1981,12 @@
 msgstr "XML"
 
 #, c-format
-msgid ""
-"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
-"REPLY&gt;:</b></font> %s<br/>\n"
-msgstr ""
-"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:"
-"</b></font> %s<br/>\n"
-
-#, c-format
-msgid ""
-"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
-"REPLY&gt;:</b></font> %s<br/>\n"
-msgstr ""
-"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:"
-"</b></font> %s<br/>\n"
+msgid "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
+msgstr "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:</b></font> %s<br/>\n"
+
+#, c-format
+msgid "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
+msgstr "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-SVAR&gt;:</b></font> %s<br/>\n"
 
 msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
 msgstr "<font color=\"red\"><b>Kunne ikke finde logsti!</b></font>"
@@ -2131,7 +2004,7 @@
 msgstr "Du bruger %s, men dette udvidelsesmodul kræver %s."
 
 msgid "This plugin has not defined an ID."
-msgstr "Dette udvidelsesmodul har ikke defineret et ID."
+msgstr "Dette udvidelsesmodul har ikke defineret et id."
 
 #, c-format
 msgid "Plugin magic mismatch %d (need %d)"
@@ -2141,19 +2014,12 @@
 msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
 msgstr "ABI versions fejl %d.%d.x (kræver %d.%d.x)"
 
-msgid ""
-"Plugin does not implement all required functions (list_icon, login and close)"
-msgstr ""
-"Udvidelsesmodul implementerer ikke alle de krævede funktioner (list_icon, "
-"login og luk)"
-
-#, c-format
-msgid ""
-"The required plugin %s was not found. Please install this plugin and try "
-"again."
-msgstr ""
-"Det krævede udvidelsesmodul %s blev ikke fundet. Installér modulet og prøv "
-"igen."
+msgid "Plugin does not implement all required functions (list_icon, login and close)"
+msgstr "Udvidelsesmodul implementerer ikke alle de krævede funktioner (list_icon, logind og luk)"
+
+#, c-format
+msgid "The required plugin %s was not found. Please install this plugin and try again."
+msgstr "Det krævede udvidelsesmodul %s blev ikke fundet. Installér modulet og prøv igen."
 
 msgid "Unable to load the plugin"
 msgstr "Kan ikke indlæse udvidelsesmodulet"
@@ -2187,7 +2053,7 @@
 msgstr "Når der ankommer en filoverførselsanmodning fra %s"
 
 msgid "Set Autoaccept Setting"
-msgstr "Sæt automatisk accept indstillinger"
+msgstr "Indstil automatisk accept indstillinger"
 
 msgid "_Save"
 msgstr "_Gem"
@@ -2226,7 +2092,7 @@
 "(kun hvis der ikke er nogen konversation med senderen)"
 
 msgid "Create a new directory for each user"
-msgstr "Opret et nyt bibliotek for hver bruger"
+msgstr "Opret et nyt katalog for hver bruger"
 
 msgid "Notes"
 msgstr "Noter"
@@ -2314,7 +2180,7 @@
 msgstr "Inaktivs opsætter"
 
 msgid "Set Account Idle Time"
-msgstr "Sæt inaktiv tid for konto"
+msgstr "Indstil inaktiv tid for konto"
 
 msgid "_Set"
 msgstr "_Sæt"
@@ -2329,13 +2195,13 @@
 msgstr "_Fjern"
 
 msgid "Set Idle Time for All Accounts"
-msgstr "Sæt inaktiv tid for alle konti"
+msgstr "Indstil inaktiv tid for alle konti"
 
 msgid "Unset Idle Time for All Idled Accounts"
 msgstr "Fjern inaktiv tid fra alle inaktive konti"
 
 msgid "Allows you to hand-configure how long you've been idle"
-msgstr "Tillader dig at manuelt sætte op hvor lang tid du har været inaktiv"
+msgstr "Tillader dig at indstille hvor lang tid du har været inaktiv"
 
 #. *< type
 #. *< ui_requirement
@@ -2353,12 +2219,8 @@
 msgstr "Test modul IPC understøttelse, som en klient."
 
 #. *  description
-msgid ""
-"Test plugin IPC support, as a client. This locates the server plugin and "
-"calls the commands registered."
-msgstr ""
-"Test modul IPC understøttelse, som en klient. Dette finder server modulet og "
-"kalder den registrerede kommando."
+msgid "Test plugin IPC support, as a client. This locates the server plugin and calls the commands registered."
+msgstr "Test modul IPC understøttelse, som en klient. Dette finder server modulet og kalder den registrerede kommando."
 
 #. *< type
 #. *< ui_requirement
@@ -2377,12 +2239,10 @@
 
 #. *  description
 msgid "Test plugin IPC support, as a server. This registers the IPC commands."
-msgstr ""
-"Test modul IPC understøttelse, som en server. Dette registrerer IPC "
-"kommandoerne."
+msgstr "Test modul IPC understøttelse, som en server. Dette registrerer IPC kommandoerne."
 
 msgid "Join/Part Hiding Configuration"
-msgstr "Tilslut/Del skjult konfiguration"
+msgstr "Tilslut/Deltag skjult konfiguration"
 
 msgid "Minimum Room Size"
 msgstr "Mindste rumstørrelse"
@@ -2400,7 +2260,7 @@
 #. *< priority
 #. *< id
 msgid "Join/Part Hiding"
-msgstr "Tilslut/del skjul"
+msgstr "Skjul tilslut/deltag"
 
 #. *< name
 #. *< version
@@ -2409,12 +2269,8 @@
 msgstr "Skjuler overflødige tilslut/deltag-beskeder."
 
 #. *  description
-msgid ""
-"This plugin hides join/part messages in large rooms, except for those users "
-"actively taking part in a conversation."
-msgstr ""
-"Dette udvidelsesmodul skjuler tilslut/deltag-beskeder i store rum, undtager "
-"de brugere der aktivt tager del i en samtale."
+msgid "This plugin hides join/part messages in large rooms, except for those users actively taking part in a conversation."
+msgstr "Dette udvidelsesmodul skjuler tilslut/deltag-beskeder i store rum, undtagen de brugere der aktivt tager del i en samtale."
 
 #. This is used in the place of a timezone abbreviation if the
 #. * offset is way off.  The user should never really see it, but
@@ -2424,7 +2280,7 @@
 msgstr "(UTC)"
 
 msgid "User is offline."
-msgstr "Bruger er offline."
+msgstr "Bruger er afkoblet."
 
 msgid "Auto-response sent:"
 msgstr "Auto-svar sendt:"
@@ -2439,12 +2295,8 @@
 msgid "You were disconnected from the server."
 msgstr "Din forbindelse til serveren blev afbrudt."
 
-msgid ""
-"You are currently disconnected. Messages will not be received unless you are "
-"logged in."
-msgstr ""
-"Du er ikke forbunddet. Beskeder vil ikke blive modtaget medmindre du er "
-"logged ind."
+msgid "You are currently disconnected. Messages will not be received unless you are logged in."
+msgstr "Du er ikke forbunddet. Beskeder vil ikke blive modtaget medmindre du er logged ind."
 
 msgid "Message could not be sent because the maximum length was exceeded."
 msgstr "Besked kunne ikke sendes, fordi maksimum længden var overskredet."
@@ -2525,18 +2377,13 @@
 
 #. * description
 msgid ""
-"When viewing logs, this plugin will include logs from other IM clients. "
-"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
+"When viewing logs, this plugin will include logs from other IM clients. Currently, this includes Adium, MSN Messenger, and Trillian.\n"
 "\n"
-"WARNING: This plugin is still alpha code and may crash frequently.  Use it "
-"at your own risk!"
-msgstr ""
-"Når der vises logs, vil dette udvidelsesmodul inkludere logs fra andre kvik-"
-"beskedklienter. På nuværende tidspunkt, er dette Adium, MSN Messenger og "
-"Trillian.\n"
+"WARNING: This plugin is still alpha code and may crash frequently.  Use it at your own risk!"
+msgstr ""
+"Når der vises logs, vil dette udvidelsesmodul inkludere logs fra andre beskedklienter. På nuværende tidspunkt, er dette Adium, MSN Messenger og Trillian.\n"
 "\n"
-"ADVARSEL: Dette udvidelsesmodul er stadig alfa-kode og kan bryde ned "
-"jævnligt. Brug det på eget ansvar!"
+"ADVARSEL: Dette udvidelsesmodul er stadig alfa-kode og kan bryde ned jævnligt. Brug det på eget ansvar!"
 
 msgid "Mono Plugin Loader"
 msgstr "Mono-udvidelsesmodul indlæser"
@@ -2545,10 +2392,10 @@
 msgstr "Indlæser .NET moduler med Mono."
 
 msgid "Add new line in IMs"
-msgstr "Tilføj ny linje i kvikbeskeder"
+msgstr "Tilføj ny linje i beskeder"
 
 msgid "Add new line in Chats"
-msgstr "Tilføj ny line i chat"
+msgstr "Tilføj ny line i samtaler"
 
 #. *< magic
 #. *< major version
@@ -2568,35 +2415,21 @@
 msgstr "Indskyder en ny linje i viste besked."
 
 #. *< summary
-msgid ""
-"Prepends a newline to messages so that the rest of the message appears below "
-"the username in the conversation window."
-msgstr ""
-"Indskyder en ny linje til beskederne så resten af beskederne optræder "
-"nedenunder skærmnavnet i samtalevinduet."
+msgid "Prepends a newline to messages so that the rest of the message appears below the username in the conversation window."
+msgstr "Indskyder en ny linje til beskederne så resten af beskederne optræder nedenunder skærmnavnet i samtalevinduet."
 
 msgid "Offline Message Emulation"
 msgstr "Afkoblet besked-emulering"
 
 msgid "Save messages sent to an offline user as pounce."
-msgstr ""
-"Gem beskeder sendt til en afkoblet bruger som automatisk praj ved indlogning."
-
-msgid ""
-"The rest of the messages will be saved as pounce. You can edit/delete the "
-"pounce from the `Buddy Pounce' dialog."
-msgstr ""
-"Resten af beskeden vil blive gemt som automatisk praj ved indlogning. Du kan "
-"redigere/slette automatisk praj ved indlogning fra venne-automatisk praj ved "
-"indlogning-vinduet."
-
-#, c-format
-msgid ""
-"\"%s\" is currently offline. Do you want to save the rest of the messages in "
-"a pounce and automatically send them when \"%s\" logs back in?"
-msgstr ""
-"\"%s\" er afkoblet. Vil du gemme testen af beskeden i en automatisk praj ved "
-"indlogning og automatisk sende dem når \"%s\" logger på igen?"
+msgstr "Gem beskeder sendt til en afkoblet bruger som automatisk praj ved indlogning."
+
+msgid "The rest of the messages will be saved as pounce. You can edit/delete the pounce from the `Buddy Pounce' dialog."
+msgstr "Resten af beskeden vil blive gemt som automatisk praj ved indlogning. Du kan redigere/slette automatisk praj ved indlogning fra venne-automatisk praj ved indlogning-vinduet."
+
+#, c-format
+msgid "\"%s\" is currently offline. Do you want to save the rest of the messages in a pounce and automatically send them when \"%s\" logs back in?"
+msgstr "\"%s\" er afkoblet. Vil du gemme testen af beskeden i en automatisk praj ved indlogning og automatisk sende dem når \"%s\" logger på igen?"
 
 msgid "Offline Message"
 msgstr "Besked når afkoblet"
@@ -2637,12 +2470,8 @@
 msgid "Psychic mode for incoming conversation"
 msgstr "Synsk tilstand for indgående samtaler"
 
-msgid ""
-"Causes conversation windows to appear as other users begin to message you.  "
-"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
-msgstr ""
-"Får samtalevinduerne til at dukke frem når andre brugere begynder at skrive "
-"til dig. Dette virker med AIM, ICQ, XMPP, Sametime og Yahoo!"
+msgid "Causes conversation windows to appear as other users begin to message you.  This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr "Får samtalevinduerne til at dukke frem når andre brugere begynder at skrive til dig. Dette virker med AIM, ICQ, XMPP, Sametime og Yahoo!"
 
 msgid "You feel a disturbance in the force..."
 msgstr "Du føler en ændring i kraften..."
@@ -2693,7 +2522,7 @@
 
 #. Scheme name
 msgid "X.509 Certificates"
-msgstr "X.509 certifikater"
+msgstr "X.509-certifikater"
 
 #. *< type
 #. *< ui_requirement
@@ -2741,7 +2570,7 @@
 #. *  summary
 #. *  description
 msgid "Provides a wrapper around SSL support libraries."
-msgstr "En \"wrapper\" omkring SSL understøttelses biblioteker."
+msgstr "Giver et omslag omkring SSL-understøttelses biblioteker."
 
 #, c-format
 msgid "%s is no longer away."
@@ -2788,11 +2617,8 @@
 #. *< version
 #. *  summary
 #. *  description
-msgid ""
-"Notifies in a conversation window when a buddy goes or returns from away or "
-"idle."
-msgstr ""
-"Fortæller i en samtale når en ven bliver fraværende eller kommer tilbage."
+msgid "Notifies in a conversation window when a buddy goes or returns from away or idle."
+msgstr "Fortæller i en samtale når en ven bliver fraværende eller kommer tilbage."
 
 msgid "Tcl Plugin Loader"
 msgstr "Tcl-udvidelsesmodul indlæser"
@@ -2800,25 +2626,16 @@
 msgid "Provides support for loading Tcl plugins"
 msgstr "Giver understøttelse af Tcl-udvidelsesmoduler"
 
-msgid ""
-"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
-"install ActiveTCL from http://www.activestate.com\n"
-msgstr ""
-"Ikke i stand til at opdage ActiveTCL installation. Hvis du ønsker at bruge "
-"TCL-udvidelsesmoduler, installér ActiveTCL fra http://www.activestate.com\n"
-
-msgid ""
-"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
-"pidgin.im/BonjourWindows for more information."
-msgstr ""
-"Apple Bonjour værktøjssættet til Windows lbev ikke fundet, se oss på: http://"
-"d.pidgin.im/BonjourWindows for more information."
+msgid "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n"
+msgstr "Ikke i stand til at opdage ActiveTCL installation. Hvis du ønsker at bruge TCL-udvidelsesmoduler, installér ActiveTCL fra http://www.activestate.com\n"
+
+msgid "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d.pidgin.im/BonjourWindows for more information."
+msgstr "Apple Bonjour-værktøjssættet til Windows blev ikke fundet, se oss på: http://d.pidgin.im/BonjourWindows for mere information."
 
 msgid "Unable to listen for incoming IM connections\n"
 msgstr "Ude af stand til at lytte for indgående beskeder\n"
 
-msgid ""
-"Unable to establish connection with the local mDNS server.  Is it running?"
+msgid "Unable to establish connection with the local mDNS server.  Is it running?"
 msgstr "Kunne ikke etablerede forbindelse til lokal mDNS server. Kører den?"
 
 msgid "First name"
@@ -2828,7 +2645,7 @@
 msgstr "Efternavn"
 
 msgid "Email"
-msgstr "Email"
+msgstr "E-post"
 
 msgid "AIM Account"
 msgstr "AIM-konto"
@@ -2853,16 +2670,15 @@
 msgstr "Lilla person"
 
 #. Creating the options for the protocol
-#, fuzzy
 msgid "Local Port"
-msgstr "Lokalitet"
+msgstr "Lokal port"
 
 msgid "Bonjour"
 msgstr "Bonjour"
 
 #, c-format
 msgid "%s has closed the conversation."
-msgstr "%s har lukket samtalen."
+msgstr "%s har afsluttet samtalen."
 
 msgid "Unable to send the message, the conversation couldn't be started."
 msgstr "Kunne ikke sende beskedn; samtalen kunne ikke startes."
@@ -2880,19 +2696,16 @@
 msgstr "Fejl under kommunikation med lokal mDNSResponder."
 
 msgid "Invalid proxy settings"
-msgstr "Ugyldige mellemværts indstillinger"
-
-msgid ""
-"Either the host name or port number specified for your given proxy type is "
-"invalid."
-msgstr ""
-"Enten værtsnavnet eller porten der er angivet for din mellemvært er ugyldig."
+msgstr "Ugyldige proxyindstillinger"
+
+msgid "Either the host name or port number specified for your given proxy type is invalid."
+msgstr "Enten er værtsnavnet eller porten der er angivet for din proxytype ugyldig."
 
 msgid "Token Error"
-msgstr "Token fejl"
+msgstr "Nøgle fejl"
 
 msgid "Unable to fetch the token.\n"
-msgstr "Ikke i stand til at få fat i token.\n"
+msgstr "Ikke i stand til at få fat i nøgle.\n"
 
 msgid "Save Buddylist..."
 msgstr "Gem venneliste..."
@@ -2944,10 +2757,10 @@
 msgstr "Adgangskode (tast igen)"
 
 msgid "Enter current token"
-msgstr "Indtast nuværende symbol"
+msgstr "Indtast nuværende nøgle"
 
 msgid "Current token"
-msgstr "Nuværende symbol"
+msgstr "Nuværende nøgle"
 
 msgid "Register New Gadu-Gadu Account"
 msgstr "Registrér ny Gadu-Gadu konto"
@@ -2974,7 +2787,7 @@
 msgstr "Kvinde"
 
 msgid "Only online"
-msgstr "Kun online"
+msgstr "Kun tilkoblede"
 
 msgid "Find buddies"
 msgstr "Find venner"
@@ -2992,7 +2805,7 @@
 msgstr "Kunne ikke ændre adgangskode. En fejl skete.\n"
 
 msgid "Change password for the Gadu-Gadu account"
-msgstr "Skift adgangskode for Gadu-Gadu kontoen"
+msgstr "Ændr adgangskode for Gadu-Gadu-kontoen"
 
 msgid "Password was changed successfully!"
 msgstr "Adgangskoden blev ændret!"
@@ -3004,14 +2817,14 @@
 msgstr "Indtast din nuværende og nye adgangskode til UIN: "
 
 msgid "Change Gadu-Gadu Password"
-msgstr "Skift Gadu-Gadu adgangskode"
+msgstr "Ændr Gadu-Gadu-adgangskode"
 
 #, c-format
 msgid "Select a chat for buddy: %s"
-msgstr "Vælg en chat for ven: %s"
+msgstr "Vælg en samtale for ven: %s"
 
 msgid "Add to chat..."
-msgstr "Tilføj til chat..."
+msgstr "Tilføj til samtale..."
 
 msgid "Available"
 msgstr "Tilgængelig"
@@ -3062,19 +2875,19 @@
 msgstr "Din venneliste blev gemt på serveren."
 
 msgid "Connection failed."
-msgstr "Forbindelse mislykkedes."
+msgstr "Forbindelse fejlede."
 
 msgid "Add to chat"
-msgstr "Tilføj til chat"
+msgstr "Tilføj til samtale"
 
 msgid "Chat _name:"
-msgstr "Chat _navn:"
+msgstr "Samtale_navn:"
 
 msgid "Chat error"
-msgstr "Chat fejl"
+msgstr "Fejl i samtale"
 
 msgid "This chat name is already in use"
-msgstr "Dette chatnavn eksisterer allerede"
+msgstr "Dette samtalenavn eksisterer allerede"
 
 msgid "Not connected to the server."
 msgstr "Ikke forbundet til serveren."
@@ -3083,7 +2896,7 @@
 msgstr "Find venner..."
 
 msgid "Change password..."
-msgstr "Skift adgangskode..."
+msgstr "Ændr adgangskode..."
 
 msgid "Upload buddylist to Server"
 msgstr "Overfør venneliste til server"
@@ -3142,7 +2955,7 @@
 msgstr "Ingen MOTD tilgængelig"
 
 msgid "There is no MOTD associated with this connection."
-msgstr "Der er ingen MOTD associeret med denne forbindelse."
+msgstr "Der er ingen MOTD tilknyttet denne forbindelse."
 
 #, c-format
 msgid "MOTD for %s"
@@ -3266,7 +3079,7 @@
 msgstr "Inaktiv i"
 
 msgid "Online since"
-msgstr "Online siden"
+msgstr "Tilkoblet siden"
 
 msgid "<b>Defining adjective:</b>"
 msgstr "<b>Definerende adjektiv:</b>"
@@ -3324,7 +3137,7 @@
 
 #, c-format
 msgid "Joining %s requires an invitation."
-msgstr "Det kræver en invitation for at deltage i %s."
+msgstr "Det kræver en invitation for at tilslutte %s."
 
 msgid "Invitation only"
 msgstr "Kun invitation"
@@ -3345,19 +3158,11 @@
 msgid "Invalid nickname"
 msgstr "Ugyldigt brugernavn"
 
-msgid ""
-"Your selected nickname was rejected by the server.  It probably contains "
-"invalid characters."
-msgstr ""
-"Dit valgte brugernavn blev nægtet af serveren. Det indeholder sikkert "
-"ugyldige bogstaver."
-
-msgid ""
-"Your selected account name was rejected by the server.  It probably contains "
-"invalid characters."
-msgstr ""
-"Dit valgte konto navn blev nægtet af serveren. Det indeholder sikkert "
-"ugyldige bogstaver."
+msgid "Your selected nickname was rejected by the server.  It probably contains invalid characters."
+msgstr "Dit valgte brugernavn blev nægtet af serveren. Det indeholder sikkert ugyldige bogstaver."
+
+msgid "Your selected account name was rejected by the server.  It probably contains invalid characters."
+msgstr "Dit valgte konto navn blev nægtet af serveren. Det indeholder sikkert ugyldige bogstaver."
 
 msgid "Cannot change nick"
 msgstr "Kan ikke ændre navn"
@@ -3381,7 +3186,7 @@
 msgstr "Kan ikke tilslutte %s: Registrering krævet."
 
 msgid "Cannot join channel"
-msgstr "Kan ikke deltage i kanalen"
+msgstr "Kan ikke tilslutte kanalen"
 
 msgid "Nick or channel is temporarily unavailable."
 msgstr "Navn eller kanal er midlertidigt utilgængelig."
@@ -3391,183 +3196,109 @@
 msgstr "Wallops fra %s"
 
 msgid "action &lt;action to perform&gt;:  Perform an action."
-msgstr "action &lt;handling at udføre&gt;: Udfør en handling."
-
-msgid ""
-"away [message]:  Set an away message, or use no message to return from being "
-"away."
-msgstr ""
-"away [besked]: Sæt en fraværsbesked. Hvis ingen besked angives, så returnes "
-"du fra fravær."
+msgstr "action &lt;handling at udføre&gt;:  Udfør en handling."
+
+msgid "away [message]:  Set an away message, or use no message to return from being away."
+msgstr "away [besked]:  Indstil en fraværsbesked. Hvis ingen besked angives, så returnes du fra fravær."
 
 msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
-msgstr "ctcp <nick> <msg>: sender ctcp besked til kælenavn."
+msgstr "ctcp <nick> <msg>: sender ctcp-besked til kælenavn."
 
 msgid "chanserv: Send a command to chanserv"
 msgstr "chanserv: Send en kommando til chanserv"
 
-msgid ""
-"deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from "
-"someone. You must be a channel operator to do this."
-msgstr ""
-"deop &lt;navn1&gt; [navn2] ...: Fjern kanal operatør status fra en. Du skal "
-"være kanal operatør for at gøre dette."
-
-msgid ""
-"devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from "
-"someone, preventing them from speaking if the channel is moderated (+m). You "
-"must be a channel operator to do this."
-msgstr ""
-"devoice &lt;navn1&gt; [navn2] ...: Fjern kanal 'voice' status fra en. Det "
-"forhindrer dem i at snakke hvis kanalen er modereret (+m). Du skal være "
-"kanal operatør for at gøre dette."
-
-msgid ""
-"invite &lt;nick&gt; [room]:  Invite someone to join you in the specified "
-"channel, or the current channel."
-msgstr ""
-"invite &lt;navn&gt; [rum]: Invitér nogle til den angivne kanal, eller den "
-"nuværende kanal."
-
-msgid ""
-"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
-"channels, optionally providing a channel key for each if needed."
-msgstr ""
-"j &lt;rum1&gt;[,rum2][,...] [nøgle1[,nøgle2][,...]]: Deltag i en eller flere "
-"kanaler. Du kan angive en adgangsnøgle hvis det er krævet."
-
-msgid ""
-"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
-"channels, optionally providing a channel key for each if needed."
-msgstr ""
-"join &lt;rum1&gt;[,rum2][,...] [nøgle1[,nøgle2][,...]]: Deltag i en eller "
-"flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet."
-
-msgid ""
-"kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a "
-"channel operator to do this."
-msgstr ""
-"kick &lt;nick&gt; [besked]: Fjern nogle fra kanalen. Du skal have kanal "
-"operatør status for at gøre dette."
-
-msgid ""
-"list:  Display a list of chat rooms on the network. <i>Warning, some servers "
-"may disconnect you upon doing this.</i>"
-msgstr ""
-"list: Vis en liste over chatrum på netværket. <i>Advarsel, nogle servere kan "
-"afbryde forbindelsen når du gør dette.</i>"
+msgid "deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from someone. You must be a channel operator to do this."
+msgstr "deop &lt;navn1&gt; [navn2] ...:  Fjern kanal operatør status fra en. Du skal være kanal operatør for at gøre dette."
+
+msgid "devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from someone, preventing them from speaking if the channel is moderated (+m). You must be a channel operator to do this."
+msgstr "devoice &lt;navn1&gt; [navn2] ...:  Fjern kanal 'voice' status fra en. Det forhindrer dem i at snakke hvis kanalen er modereret (+m). Du skal være kanal operatør for at gøre dette."
+
+msgid "invite &lt;nick&gt; [room]:  Invite someone to join you in the specified channel, or the current channel."
+msgstr "invite &lt;navn&gt; [rum]:  Invitér nogle til den angivne kanal, eller den nuværende kanal."
+
+msgid "j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more channels, optionally providing a channel key for each if needed."
+msgstr "j &lt;rum1&gt;[,rum2][,...] [nøgle1[,nøgle2][,...]]:  Deltag i en eller flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet."
+
+msgid "join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more channels, optionally providing a channel key for each if needed."
+msgstr "join &lt;rum1&gt;[,rum2][,...] [nøgle1[,nøgle2][,...]]:  Tilslut en eller flere kanaler. Du kan angive en adgangsnøgle hvis det er krævet."
+
+msgid "kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a channel operator to do this."
+msgstr "kick &lt;nick&gt; [besked]:  Fjern nogle fra kanalen. Du skal have kanal operatør status for at gøre dette."
+
+msgid "list:  Display a list of chat rooms on the network. <i>Warning, some servers may disconnect you upon doing this.</i>"
+msgstr "list:  Vis en liste over samtalerum på netværket. <i>Advarsel, nogle servere kan afbryde forbindelsen når du gør dette.</i>"
 
 msgid "me &lt;action to perform&gt;:  Perform an action."
-msgstr "me &lt;handling at udføre&gt;: Udfør en handling."
+msgstr "me &lt;handling at udføre&gt;:  Udfør en handling."
 
 msgid "memoserv: Send a command to memoserv"
 msgstr "memoserv: Send en kommando til memoserv"
 
-msgid ""
-"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel "
-"or user mode."
-msgstr ""
-"mode &lt;+|-&gt;&lt;A-Za-Z&gt; &lt;nick|kanal&gt;: Sæt eller fjern en kanal "
-"eller bruger tilstand."
-
-msgid ""
-"msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
-"opposed to a channel)."
-msgstr ""
-"msg &lt;navn&gt; &lt;besked&gt;: Send en privat besked til en bruger "
-"(istedet for en kanal)."
+msgid "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel or user mode."
+msgstr "mode &lt;+|-&gt;&lt;A-Za-Z&gt; &lt;nick|kanal&gt;:  Sæt eller fjern en kanal eller bruger tilstand."
+
+msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as opposed to a channel)."
+msgstr "msg &lt;navn&gt; &lt;besked&gt;:  Send en privat besked til en bruger (istedet for en kanal)."
 
 msgid "names [channel]:  List the users currently in a channel."
-msgstr "names [kanal]: Vis brugerne der er på kanalen lige nu."
+msgstr "names [kanal]:  Vis brugerne der er på kanalen lige nu."
 
 msgid "nick &lt;new nickname&gt;:  Change your nickname."
-msgstr "nick &lt;nyt navn&gt;: Skift dit navn."
+msgstr "nick &lt;nyt navn&gt;:  Ændr dit navn."
 
 msgid "nickserv: Send a command to nickserv"
 msgstr "nickserv: Send en kommando til nickserv"
 
 msgid "notice &lt;target&lt;:  Send a notice to a user or channel."
-msgstr "påmind &lt;targetl&lt;: Send en påmindelse til en bruger eller kanal."
-
-msgid ""
-"op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You "
-"must be a channel operator to do this."
-msgstr ""
-"op &lt;navn1&gt; [navn2] ...: Giv kanal operatør status til en. Du skal selv "
-"være kanal operatør for at gøre dette."
-
-msgid ""
-"operwall &lt;message&gt;:  If you don't know what this is, you probably "
-"can't use it."
-msgstr ""
-"operwall &lt;message&gt;: Hvis du ikke ved hvad dette er, så kan du sikkert "
-"ikke bruge det."
+msgstr "notice &lt;targetl&lt;:  Send en påmindelse til en bruger eller kanal."
+
+msgid "op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You must be a channel operator to do this."
+msgstr "op &lt;navn1&gt; [navn2] ...:  Giv kanal operatør status til en. Du skal selv være kanal operatør for at gøre dette."
+
+msgid "operwall &lt;message&gt;:  If you don't know what this is, you probably can't use it."
+msgstr "operwall &lt;message&gt;:  Hvis du ikke ved hvad dette er, så kan du sikkert ikke bruge det."
 
 msgid "operserv: Send a command to operserv"
 msgstr "operserv: Send en kommando til operserv"
 
-msgid ""
-"part [room] [message]:  Leave the current channel, or a specified channel, "
-"with an optional message."
-msgstr ""
-"part [rum] [besked]: Forlad den nuværende kanal, eller angiv en kanal med en "
-"eventuel fraværsbesked."
-
-msgid ""
-"ping [nick]:  Asks how much lag a user (or the server if no user specified) "
-"has."
-msgstr ""
-"ping [navn]: Spørger hvor meget lag (tidsforsinkelse) en bruger (eller "
-"serveren hvis ingen bruger angivet) har."
-
-msgid ""
-"query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
-"opposed to a channel)."
-msgstr ""
-"query &lt;navn&gt; &lt;besked&gt;: Send en privat besked til en bruger "
-"(istedet for en kanal)."
+msgid "part [room] [message]:  Leave the current channel, or a specified channel, with an optional message."
+msgstr "part [rum] [besked]:  Forlad den nuværende kanal, eller angiv en kanal med en eventuel fraværsbesked."
+
+msgid "ping [nick]:  Asks how much lag a user (or the server if no user specified) has."
+msgstr "ping [navn]:  Spørger hvor meget lag (tidsforsinkelse) en bruger (eller serveren hvis ingen bruger angivet) har."
+
+msgid "query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as opposed to a channel)."
+msgstr "query &lt;navn&gt; &lt;besked&gt;:  Send en privat besked til en bruger (istedet for en kanal)."
 
 msgid "quit [message]:  Disconnect from the server, with an optional message."
-msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked."
+msgstr "quit [besked]:  Luk forbindelse til server, med en eventuel besked."
 
 msgid "quote [...]:  Send a raw command to the server."
-msgstr "quote [...]: Sender en rå kommando til serveren."
-
-msgid ""
-"remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a "
-"channel operator to do this."
-msgstr ""
-"remove &lt;nick&gt; [besked]: Fjern nogen fra et rum. Du skal have kanal "
-"operatør status for at gøre dette."
+msgstr "quote [...]:  Sender en rå kommando til serveren."
+
+msgid "remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a channel operator to do this."
+msgstr "remove &lt;nick&gt; [besked]:  Fjern nogen fra et rum. Du skal have kanal operatør status for at gøre dette."
 
 msgid "time: Displays the current local time at the IRC server."
 msgstr "time: Viser den lokale tid på IRC-serveren."
 
 msgid "topic [new topic]:  View or change the channel topic."
-msgstr "topic [nyt emne]: Vis eller skift kanalens emne."
+msgstr "topic [nyt emne]:  Vis eller ændr kanalens emne."
 
 msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;:  Set or unset a user mode."
-msgstr "umode &lt;+|-&gt;&lt;A-Za-z&gt;: Sæt eller fjern en bruger tilstand."
+msgstr "umode &lt;+|-&gt;&lt;A-Za-z&gt;:  Sæt eller fjern en bruger tilstand."
 
 msgid "version [nick]: send CTCP VERSION request to a user"
 msgstr "version [nick]: send CTCP VERSION forspørgelse til en bruger"
 
-msgid ""
-"voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You "
-"must be a channel operator to do this."
-msgstr ""
-"voice &lt;navn1&gt; [navn2] ...: Giv kanal 'voice' status til en. Du skal "
-"havekanal operatør status for at gøre dette."
-
-msgid ""
-"wallops &lt;message&gt;:  If you don't know what this is, you probably can't "
-"use it."
-msgstr ""
-"wallops &lt;besked&gt;:  Hvis du ikke ved hvad dette er, så kan du sikkert "
-"ikke bruge det."
+msgid "voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You must be a channel operator to do this."
+msgstr "voice &lt;navn1&gt; [navn2] ...:  Giv kanal 'voice' status til en. Du skal havekanal operatør status for at gøre dette."
+
+msgid "wallops &lt;message&gt;:  If you don't know what this is, you probably can't use it."
+msgstr "wallops &lt;besked&gt;:  Hvis du ikke ved hvad dette er, så kan du sikkert ikke bruge det."
 
 msgid "whois [server] &lt;nick&gt;:  Get information on a user."
-msgstr "whois [server] &lt;navn&gt;: Hent oplysninger om en bruger."
+msgstr "whois [server] &lt;navn&gt;:  Hent oplysninger om en bruger."
 
 msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
 msgstr "whowas &lt;nick&gt;: Hent oplysninger om en bruger som er logget af."
@@ -3589,10 +3320,10 @@
 msgstr "Ukendt fejl"
 
 msgid "Ad-Hoc Command Failed"
-msgstr "Ad-Hoc kommando fejlede"
+msgstr "Ad-Hoc-kommando fejlede"
 
 msgid "execute"
-msgstr "udfør"
+msgstr "kør"
 
 msgid "Server requires TLS/SSL for login.  No TLS/SSL support found."
 msgstr "Server kræver SSL til logind. Ingen TLS/SSL-understøttelse fundet."
@@ -3601,18 +3332,14 @@
 msgstr "Du kræver kryptering, men ingen TLS/SSL-understøttelse blev fundet."
 
 msgid "Server requires plaintext authentication over an unencrypted stream"
-msgstr "Server kræver ren tekst godkendelse over en ukrypteret strøm"
-
-#, c-format
-msgid ""
-"%s requires plaintext authentication over an unencrypted connection.  Allow "
-"this and continue authentication?"
-msgstr ""
-"%s kræver ren tekst godkendelse over en ukrypteret forbindelse. Tillad dette "
-"og fortsæt godkendelse?"
+msgstr "Server kræver godkendelse i klartekst over en ukrypteret strøm"
+
+#, c-format
+msgid "%s requires plaintext authentication over an unencrypted connection.  Allow this and continue authentication?"
+msgstr "%s kræver godkendelse i klartekst over en ukrypteret forbindelse. Tillad dette og fortsæt godkendelse?"
 
 msgid "Plaintext Authentication"
-msgstr "Ren tekst godkendelse"
+msgstr "Godkendelse i klartekst"
 
 msgid "Invalid response from server."
 msgstr "Ugyldigt svar fra server."
@@ -3679,12 +3406,8 @@
 msgid "Edit XMPP vCard"
 msgstr "Redigér XMPP vCard"
 
-msgid ""
-"All items below are optional. Enter only the information with which you feel "
-"comfortable."
-msgstr ""
-"Alle oplysninger er valgfri. Skriv kun de ting, du ønsker andre skal vide om "
-"dig."
+msgid "All items below are optional. Enter only the information with which you feel comfortable."
+msgstr "Alle elementerne nedenfor er valgfrie. Skriv kun de ting, du ønsker andre skal vide om dig."
 
 msgid "Client"
 msgstr "Klient"
@@ -3696,37 +3419,37 @@
 msgstr "Sidste aktivitet"
 
 msgid "Service Discovery Info"
-msgstr "Serviceopdagelsesbesked"
+msgstr "Besked ved tjenesteopdagelse"
 
 msgid "Service Discovery Items"
-msgstr "Punkter for serviceopdagelse"
+msgstr "Elementer for tjenesteopdagelse"
 
 msgid "Extended Stanza Addressing"
 msgstr "Udvidet Stanza-adressering"
 
 msgid "Multi-User Chat"
-msgstr "Flerbruger chat"
+msgstr "Flerbrugersamtale"
 
 msgid "Multi-User Chat Extended Presence Information"
-msgstr "Udvidet oplysning om multibruger samtale tilstedeværelse"
+msgstr "Flerbrugersamtale udvidede tilstedeværelsesinformation"
 
 msgid "In-Band Bytestreams"
 msgstr "In-Band-bytestrømme"
 
 msgid "Ad-Hoc Commands"
-msgstr "Ad-Hoc kommandoer"
+msgstr "Ad-Hoc-kommandoer"
 
 msgid "PubSub Service"
-msgstr "PubSub-service"
+msgstr "PubSub-tjeneste"
 
 msgid "SOCKS5 Bytestreams"
 msgstr "SOCKS5-bytestrømme"
 
 msgid "Out of Band Data"
-msgstr "Løbet tør for Band-data"
+msgstr "Out of Band Data"
 
 msgid "XHTML-IM"
-msgstr "XHTML-kvikbesked"
+msgstr "XHTML-besked"
 
 msgid "In-Band Registration"
 msgstr "In-Band-registrering"
@@ -3738,7 +3461,7 @@
 msgstr "Brugeravatar"
 
 msgid "Chat State Notifications"
-msgstr "Chat status påmindelser"
+msgstr "Samtalestatus påmindelser"
 
 msgid "Software Version"
 msgstr "Software version"
@@ -3756,7 +3479,7 @@
 msgstr "Brugeraktivitet"
 
 msgid "Entity Capabilities"
-msgstr "Entitetskapabiliteter"
+msgstr "Enhedsegenskaber"
 
 msgid "Encrypted Session Negotiations"
 msgstr "Krypterede sessionsforhandlinger"
@@ -3765,7 +3488,7 @@
 msgstr "Brugermelodi"
 
 msgid "Roster Item Exchange"
-msgstr "Mønstring af elementudveksling"
+msgstr "Navneliste over elementudveksling"
 
 msgid "Reachability Address"
 msgstr "E-post-adresse"
@@ -3801,13 +3524,13 @@
 msgstr "Beskedmodtagere"
 
 msgid "Public Key Publishing"
-msgstr "Udgivelse af offentlige nøgle"
+msgstr "Udgivelse af offentlig nøgle"
 
 msgid "User Chatting"
-msgstr "Bruger chatter"
+msgstr "Bruger samtaler"
 
 msgid "User Browsing"
-msgstr "Bruger surfer"
+msgstr "Bruger browser"
 
 msgid "User Gaming"
 msgstr "Bruger spiller"
@@ -3819,7 +3542,7 @@
 msgstr "Ping"
 
 msgid "Stanza Encryption"
-msgstr "Stanza kryptering"
+msgstr "Stanza-kryptering"
 
 msgid "Entity Time"
 msgstr "Tidsenhed"
@@ -3831,16 +3554,16 @@
 msgstr "Samarbejdende dataobjekter"
 
 msgid "File Repository and Sharing"
-msgstr "Filarkiv og deling"
+msgstr "Filarkiv og -deling"
 
 msgid "STUN Service Discovery for Jingle"
-msgstr "STUN-serviceopdagelse for Jingle"
+msgstr "STUN-tjenesteopdagelse for Jingle"
 
 msgid "Simplified Encrypted Session Negotiation"
 msgstr "Simplificeret krypteret sessionsforhandling"
 
 msgid "Hop Check"
-msgstr "Hop kontrol"
+msgstr "Hop-kontrol"
 
 msgid "Capabilities"
 msgstr "Klient understøtter"
@@ -3892,7 +3615,7 @@
 msgstr "Log af"
 
 msgid "Chatty"
-msgstr "Vil gerne chatte"
+msgstr "Vil gerne samtale"
 
 msgid "Extended Away"
 msgstr "Totalt fraværende"
@@ -3910,15 +3633,11 @@
 msgstr "Det følgende er resultaterne på din søgning"
 
 #. current comment from Jabber User Directory users.jabber.org
-msgid ""
-"Find a contact by entering the search criteria in the given fields. Note: "
-"Each field supports wild card searches (%)"
-msgstr ""
-"Find en kontakt ved at indtaste søgekriterien i de givne felter. Bemærk: "
-"Hver felt understøtter joker-søgninger (%)"
+msgid "Find a contact by entering the search criteria in the given fields. Note: Each field supports wild card searches (%)"
+msgstr "Find en kontakt ved at indtaste søgekriterien i de givne felter. Bemærk: Hver felt understøtter joker-søgninger (%)"
 
 msgid "Directory Query Failed"
-msgstr "Mappe forespørgelse fejlede"
+msgstr "Mappe forespørgsel fejlede"
 
 msgid "Could not query the directory server."
 msgstr "Kunne ikke forespørge mappe-serveren."
@@ -3933,10 +3652,10 @@
 msgstr "Udfyld et eller flere felter for at søge efter XMPP-brugere."
 
 msgid "Email Address"
-msgstr "Email adresse"
+msgstr "E-postadresse"
 
 msgid "Search for XMPP users"
-msgstr "Søg efter en XMPP-brugere"
+msgstr "Søg efter XMPP-brugere"
 
 #. "Search"
 msgid "Search"
@@ -4000,7 +3719,7 @@
 msgstr "Fejl under registrering"
 
 msgid "Nick changing not supported in non-MUC chatrooms"
-msgstr "Ændring af navn ikke understøttet i ikke-MUC chatrum"
+msgstr "Ændring af navn ikke understøttet i ikke-MUC samtalerum"
 
 msgid "Error retrieving room list"
 msgstr "Fejl ved modtagelse af rumliste"
@@ -4018,7 +3737,7 @@
 msgstr "Find rum"
 
 msgid "You require encryption, but it is not available on this server."
-msgstr "Du kræver kryptering, men det er ikke muligt på denne server."
+msgstr "Du kræver kryptering, men det er ikke tilrådighed på denne server."
 
 msgid "Write error"
 msgstr "Fejl ved skrivning"
@@ -4044,7 +3763,7 @@
 msgstr "Ugyldigt XMPP-id"
 
 msgid "Invalid XMPP ID. Domain must be set."
-msgstr "Ugyldigt XMPP ID. Domæne skal angives."
+msgstr "Ugyldigt XMPP-id. Domæne skal angives."
 
 #, c-format
 msgid "Registration of %s@%s successful"
@@ -4088,9 +3807,8 @@
 msgid "Unregister"
 msgstr "Afregistrér"
 
-msgid ""
-"Please fill out the information below to change your account registration."
-msgstr "Udfyld oplysninger forneden for at ændre kontoregistrering."
+msgid "Please fill out the information below to change your account registration."
+msgstr "Udfyld oplysninger forneden for at ændre din kontoregistrering."
 
 msgid "Please fill out the information below to register your new account."
 msgstr "Udfyld oplysninger forneden for at registrere din nye konto."
@@ -4103,14 +3821,14 @@
 
 #, c-format
 msgid "Change Account Registration at %s"
-msgstr "Skift brugerregistrering på %s"
+msgstr "Ændr brugerregistrering på %s"
 
 #, c-format
 msgid "Register New Account at %s"
 msgstr "Registrér ny konto på %s"
 
 msgid "Change Registration"
-msgstr "Skift registrering"
+msgstr "Ændr registrering"
 
 msgid "Error unregistering account"
 msgstr "Fejl ved afregistrering af konto"
@@ -4209,7 +3927,7 @@
 msgstr "Adgangskode (igen)"
 
 msgid "Change XMPP Password"
-msgstr "Skift XMPP-adgangskode"
+msgstr "Ændr XMPP-adgangskode"
 
 msgid "Please enter your new password"
 msgstr "Indtast din nye adgangskode"
@@ -4219,7 +3937,7 @@
 
 #. if (js->protocol_options & CHANGE_PASSWORD) {
 msgid "Change Password..."
-msgstr "Skift adgangskode..."
+msgstr "Ændr adgangskode..."
 
 #. }
 msgid "Search for Users..."
@@ -4247,7 +3965,7 @@
 msgstr "Punkt ikke fundet"
 
 msgid "Malformed XMPP ID"
-msgstr "Ugyldigt XMPP-id"
+msgstr "Misdannet XMPP-id"
 
 msgid "Not Acceptable"
 msgstr "Ikke acceptabel"
@@ -4274,7 +3992,7 @@
 msgstr "Server overbelastet"
 
 msgid "Service Unavailable"
-msgstr "Service ikke tilgængelig"
+msgstr "Tjeneste ikke tilgængelig"
 
 msgid "Subscription Required"
 msgstr "Abonement krævet"
@@ -4325,7 +4043,7 @@
 msgstr "Forkert addressering"
 
 msgid "Invalid ID"
-msgstr "Ugyldigt ID"
+msgstr "Ugyldigt id"
 
 msgid "Invalid Namespace"
 msgstr "Ugyldigt navnerum"
@@ -4402,11 +4120,11 @@
 
 #, c-format
 msgid "Unable to buzz, because there is nothing known about user %s."
-msgstr "Kan ikke bippe, fordi der ikke er noget kendt om brugeren %s."
+msgstr "Kan ikke bippe, fordi der ikke er noget kendt om bruger %s."
 
 #, c-format
 msgid "Unable to buzz, because user %s might be offline."
-msgstr "Kan ikke bippe, fordi brugeren %s måske er offline."
+msgstr "Kan ikke bippe, fordi bruger %s måske er afkoblet."
 
 #, c-format
 msgid "Unable to buzz, because the user %s does not support it."
@@ -4423,59 +4141,49 @@
 
 #, c-format
 msgid "Buzzing %s..."
-msgstr "Kalder %s..."
+msgstr "Bipper %s..."
 
 msgid "config:  Configure a chat room."
-msgstr "config: Sæt et chatrum op."
+msgstr "config:  Sæt et samtalerum op."
 
 msgid "configure:  Configure a chat room."
-msgstr "configure: Sæt et chatrum op."
+msgstr "configure:  Sæt et samtalerum op."
 
 msgid "part [room]:  Leave the room."
-msgstr "part [rum]: Forlad rummet."
+msgstr "part [rum]:  Forlad rummet."
 
 msgid "register:  Register with a chat room."
-msgstr "register: Registrér med et chatrum."
+msgstr "register:  Registrér med et samtalerum."
 
 msgid "topic [new topic]:  View or change the topic."
-msgstr "topic [nyt emne]: Vis eller skift emnet."
+msgstr "topic [nyt emne]:  Vis eller ændr emnet."
 
 msgid "ban &lt;user&gt; [reason]:  Ban a user from the room."
-msgstr "udvis &lt;user&gt; [reason]:  Udvis en bruger fra rummet."
-
-msgid ""
-"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
-"affiliation with the room."
-msgstr ""
-"affiliate &lt;bruger&gt; &lt;owner|admin|member|outcast|none&gt;: Sæt en "
-"brugerstilknytning til rummet."
-
-msgid ""
-"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
-"role in the room."
-msgstr ""
-"role &lt;bruger&gt; &lt;moderator|participant|visitor|none&gt;: Sæt en "
-"brugers rolle i rummet."
+msgstr "ban &lt;user&gt; [reason]:  Udvis en bruger fra rummet."
+
+msgid "affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's affiliation with the room."
+msgstr "affiliate &lt;bruger&gt; &lt;owner|admin|member|outcast|none&gt;: Indstil en brugerstilknytning til rummet."
+
+msgid "role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's role in the room."
+msgstr "role &lt;bruger&gt; &lt;moderator|participant|visitor|none&gt;: Indstil en brugers rolle i rummet."
 
 msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
-msgstr "invite &lt;bruger&gt; [besked]: Invitér en bruger til rummet."
+msgstr "invite &lt;bruger&gt; [besked]:  Invitér en bruger til rummet."
 
 msgid "join: &lt;room&gt; [password]:  Join a chat on this server."
-msgstr "deltag: &lt;room&gt; [password]:  Deltag i chatrum på denne server."
+msgstr "join: &lt;room&gt; [password]:  Tilslut samtalerum på denne server."
 
 msgid "kick &lt;user&gt; [reason]:  Kick a user from the room."
-msgstr "spark &lt;user&gt; [reason]:  Spark en bruger fra rummet."
-
-msgid ""
-"msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
-msgstr ""
-"msg &lt;bruger&gt; &lt;besked&gt;: Send en privat besked til en anden bruger."
+msgstr "kick &lt;user&gt; [reason]:  Spark en bruger fra rummet."
+
+msgid "msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
+msgstr "msg &lt;bruger&gt; &lt;besked&gt;:  Send en privat besked til en anden bruger."
 
 msgid "ping &lt;jid&gt;:\tPing a user/component/server."
 msgstr "ping &lt;jid&gt;:\tPing en bruger/komponent/server."
 
 msgid "buzz: Buzz a user to get their attention"
-msgstr "buzz: Buzz en kontakt for at få deres opmærksomhed"
+msgstr "buzz: Bip en kontakt for at få deres opmærksomhed"
 
 #. *< type
 #. *< ui_requirement
@@ -4488,7 +4196,7 @@
 #. *  summary
 #. *  description
 msgid "XMPP Protocol Plugin"
-msgstr "XMPP-protokolmodul"
+msgstr "XMPP-protokoludvidelsesmodul"
 
 #. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
 msgid "Domain"
@@ -4501,7 +4209,7 @@
 msgstr "Tving gammel (port 5223) SSL"
 
 msgid "Allow plaintext auth over unencrypted streams"
-msgstr "Tillad ren tekst godkendelse over ukrypterede strømme"
+msgstr "Tillad godkendelse i klartekst over ukrypterede strømme"
 
 msgid "Connect port"
 msgstr "Tilslutningsport"
@@ -4518,7 +4226,7 @@
 #. this should probably be part of global smiley theme settings later on,
 #. shared with MSN
 msgid "Show Custom Smileys"
-msgstr "Vis brugerdefinerede smileys"
+msgstr "Vis tilpassede smileyer"
 
 #, c-format
 msgid "%s has left the conversation."
@@ -4541,7 +4249,7 @@
 msgstr "Beskedlevering til %s fejlede: %s"
 
 msgid "XMPP Message Error"
-msgstr "XMPP beskedfejl"
+msgstr "Fejl i XMPP-besked"
 
 #, c-format
 msgid "(Code %s)"
@@ -4556,12 +4264,8 @@
 msgid "Create New Room"
 msgstr "Opret nyt rum"
 
-msgid ""
-"You are creating a new room.  Would you like to configure it, or accept the "
-"default settings?"
-msgstr ""
-"Du opretter et nyt rum. Vil du konfigurere det, eller bruge "
-"standardindstillingerne?"
+msgid "You are creating a new room.  Would you like to configure it, or accept the default settings?"
+msgstr "Du opretter et nyt rum. Vil du konfigurere det, eller bruge standardindstillingerne?"
 
 msgid "_Configure Room"
 msgstr "_Konfigurér rum"
@@ -4571,17 +4275,15 @@
 
 #, c-format
 msgid "Error joining chat %s"
-msgstr "Fejl ved deltagelse i chat %s"
+msgstr "Fejl ved tilslutning til samtale %s"
 
 #, c-format
 msgid "Error in chat %s"
-msgstr "Fejl i chat %s"
+msgstr "Fejl i samtale %s"
 
 #, c-format
 msgid "Unable to send file to %s, user does not support file transfers"
-msgstr ""
-"Ikke i stand til at sende fil til %s, brugeren understøtter ikke "
-"filoverførsler"
+msgstr "Ikke i stand til at sende fil til %s, brugeren understøtter ikke filoverførsler"
 
 msgid "File Send Failed"
 msgstr "Afsendelse af fil fejlede"
@@ -4592,13 +4294,11 @@
 
 #, c-format
 msgid "Unable to send file to %s, user is not online"
-msgstr "Ikke i stand til at sende fil til %s, brugeren er ikke online"
+msgstr "Ikke i stand til at sende fil til %s, brugeren er ikke tilkoblet"
 
 #, c-format
 msgid "Unable to send file to %s, not subscribed to user presence"
-msgstr ""
-"Ikke i stand til at sende fil til %s, brugeren understøtter ikke "
-"filoverførsler"
+msgstr "Ikke i stand til at sende fil til %s, brugeren understøtter ikke filoverførsler"
 
 #, c-format
 msgid "Please select the resource of %s to which you would like to send a file"
@@ -4614,26 +4314,22 @@
 msgstr "Vælg dit humør fra listen."
 
 msgid "Set"
-msgstr "Sæt"
+msgstr "Indstil"
 
 msgid "Set Mood..."
-msgstr "Sæt humør..."
+msgstr "Indstil humør..."
 
 msgid "Set User Nickname"
-msgstr "Sæt brugerkælenavn"
+msgstr "Indstil brugerkælenavn"
 
 msgid "Please specify a new nickname for you."
-msgstr "Indtast dit nye navn for dig."
-
-msgid ""
-"This information is visible to all contacts on your contact list, so choose "
-"something appropriate."
-msgstr ""
-"Denne information er synlig for alle kontakter på din kontaktliste, så vælg "
-"noget passende."
+msgstr "Indtast dit nye kælenavn for dig."
+
+msgid "This information is visible to all contacts on your contact list, so choose something appropriate."
+msgstr "Denne information er synlig for alle kontakter på din kontaktliste, så vælg noget passende."
 
 msgid "Set Nickname..."
-msgstr "Sæt kælenavn..."
+msgstr "Indstil kælenavn..."
 
 msgid "Actions"
 msgstr "Handlinger"
@@ -4649,7 +4345,7 @@
 msgstr "Kunne ikke tilføje \"%s\"."
 
 msgid "Buddy Add error"
-msgstr "Tilføj ven fejl"
+msgstr "Fejl ved tilføj ven"
 
 msgid "The username specified does not exist."
 msgstr "Brugernavnet du angav findes ikke."
@@ -4659,20 +4355,12 @@
 msgstr "Problemer med synkronisering af venneliste i %s (%s)"
 
 #, c-format
-msgid ""
-"%s on the local list is inside the group \"%s\" but not on the server list. "
-"Do you want this buddy to be added?"
-msgstr ""
-"%s på den lokale liste er i gruppen \"%s\" men ikke på serverlisten. Vil du "
-"have denne ven tilføjet?"
-
-#, c-format
-msgid ""
-"%s is on the local list but not on the server list. Do you want this buddy "
-"to be added?"
-msgstr ""
-"%s er på den lokale liste men ikke på serverlisten. Vil du have denne ven "
-"tilføjet?"
+msgid "%s on the local list is inside the group \"%s\" but not on the server list. Do you want this buddy to be added?"
+msgstr "%s på den lokale liste er i gruppen \"%s\" men ikke på serverlisten. Vil du have denne ven tilføjet?"
+
+#, c-format
+msgid "%s is on the local list but not on the server list. Do you want this buddy to be added?"
+msgstr "%s er på den lokale liste men ikke på serverlisten. Vil du have denne ven tilføjet?"
 
 #, c-format
 msgid "Unable to parse message"
@@ -4684,7 +4372,7 @@
 
 #, c-format
 msgid "Invalid email address"
-msgstr "Ugyldig email adresse"
+msgstr "Ugyldig e-postadresse"
 
 #, c-format
 msgid "User does not exist"
@@ -4720,7 +4408,7 @@
 
 #, c-format
 msgid "User is offline"
-msgstr "Bruger er offline"
+msgstr "Bruger er afkoblet"
 
 #, c-format
 msgid "Already in the mode"
@@ -4844,7 +4532,7 @@
 
 #, c-format
 msgid "Passport not verified"
-msgstr "Passport konto endnu ikke godkendt"
+msgstr "Passport-konto endnu ikke godkendt"
 
 #, c-format
 msgid "Bad friend file"
@@ -4868,7 +4556,7 @@
 
 #, c-format
 msgid "Not allowed when offline"
-msgstr "Ikke tilladt når du er offline"
+msgstr "Ikke tilladt når du er afkoblet"
 
 #, c-format
 msgid "Not accepting new users"
@@ -4880,10 +4568,10 @@
 
 #, c-format
 msgid "Passport account not yet verified"
-msgstr "Passport konto endnu ikke godkendt"
+msgstr "Passport-konto endnu ikke godkendt"
 
 msgid "Passport account suspended"
-msgstr "Passport konto suspenderet"
+msgstr "Passport-konto suspenderet"
 
 #, c-format
 msgid "Bad ticket"
@@ -4901,24 +4589,24 @@
 msgstr "Andre kontakter"
 
 msgid "Non-IM Contacts"
-msgstr "Ikke-kvikbesked kontakter"
+msgstr "Ikke-besked kontakter"
 
 msgid "Nudge"
-msgstr "Prik"
+msgstr "Flirt"
 
 #, c-format
 msgid "%s has nudged you!"
-msgstr "%s har prikket til dig!"
+msgstr "%s flirter med dig!"
 
 #, c-format
 msgid "Nudging %s..."
-msgstr "Prikker %s..."
+msgstr "Flirter med %s..."
 
 msgid "Email Address..."
-msgstr "Email adresser..."
+msgstr "E-postadresser..."
 
 msgid "Your new MSN friendly name is too long."
-msgstr "Dit nye MSN synlige navn er for langt."
+msgstr "Dit nye synlige MSN-navn er for langt."
 
 msgid "Set your friendly name."
 msgstr "Sæt dit synlige navn."
@@ -4938,12 +4626,8 @@
 msgid "Allow MSN Mobile pages?"
 msgstr "Tillad MSN mobiltelefon sider?"
 
-msgid ""
-"Do you want to allow or disallow people on your buddy list to send you MSN "
-"Mobile pages to your cell phone or other mobile device?"
-msgstr ""
-"Vil du tillade eller nægte folk på din venneliste at sende dig MSN "
-"mobiltelefon sider til din mobiltelefon eller andre mobilenheder?"
+msgid "Do you want to allow or disallow people on your buddy list to send you MSN Mobile pages to your cell phone or other mobile device?"
+msgstr "Vil du tillade eller nægte folk på din venneliste at sende dig MSN mobiltelefon sider til din mobiltelefon eller andre mobilenheder?"
 
 msgid "Allow"
 msgstr "Tillad"
@@ -4959,9 +4643,8 @@
 msgstr "Ingen tekst er blokeret for denne konto."
 
 #, c-format
-msgid ""
-"MSN servers are currently blocking the following regular expressions:<br/>%s"
-msgstr "MSN servere blokerer følgende regulære udtryk:<br/>%s"
+msgid "MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr "MSN-servere blokerer følgende regulære udtryk:<br/>%s"
 
 msgid "This account does not have email enabled."
 msgstr "Denne konto har ikke e-post aktiveret."
@@ -5018,7 +4701,7 @@
 msgstr "Spiltitel"
 
 msgid "Office Title"
-msgstr "Kontor titel"
+msgstr "Kontortitel"
 
 msgid "Set Friendly Name..."
 msgstr "Sæt synligt navn..."
@@ -5048,12 +4731,10 @@
 msgstr "Send til mobiltelefon"
 
 msgid "Initiate _Chat"
-msgstr "Åbn _chat"
+msgstr "Åbn _samtale"
 
 msgid "SSL support is needed for MSN. Please install a supported SSL library."
-msgstr ""
-"SSL-understøttelse skal bruges til MSN. Installér et understøttet SSL-"
-"bibliotek."
+msgstr "SSL-understøttelse er krævet til MSN. Installér et understøttet SSL-bibliotek."
 
 msgid "Failed to connect to server."
 msgstr "Kunne ikke forbinde til server."
@@ -5134,10 +4815,10 @@
 msgstr "Hjemmefax"
 
 msgid "Personal Email"
-msgstr "Personlig email"
+msgstr "Personlig e-post"
 
 msgid "Personal IM"
-msgstr "Personlig kvik-besked"
+msgstr "Personlig besked"
 
 msgid "Anniversary"
 msgstr "Jubilæum"
@@ -5177,10 +4858,10 @@
 msgstr "Arbejdsfax"
 
 msgid "Work Email"
-msgstr "Arbejds email"
+msgstr "Arbejds e-post"
 
 msgid "Work IM"
-msgstr "Arbejd kvik-besked"
+msgstr "Arbejd besked"
 
 msgid "Start Date"
 msgstr "Startdato"
@@ -5197,24 +4878,14 @@
 msgid "The user has not created a public profile."
 msgstr "Brugeren har ikke oprettet en offentlig profil."
 
-msgid ""
-"MSN reported not being able to find the user's profile. This either means "
-"that the user does not exist, or that the user exists but has not created a "
-"public profile."
-msgstr ""
-"MSN rapporterede tilbage, at den ikke kunne finde brugerens profil. Dette "
-"betyder enten at brugeren ikke eksisterer, eller at brugeren ikke har "
-"oprettet en offentlig profil."
-
-msgid ""
-"Could not find any information in the user's profile. The user most likely "
-"does not exist."
-msgstr ""
-"Kunne ikke finde nogle oplysninger i brugerens profil. Brugeren eksisterer "
-"højst sandsynligt ikke."
+msgid "MSN reported not being able to find the user's profile. This either means that the user does not exist, or that the user exists but has not created a public profile."
+msgstr "MSN rapporterede tilbage, at den ikke kunne finde brugerens profil. Dette betyder enten at brugeren ikke eksisterer, eller at brugeren ikke har oprettet en offentlig profil."
+
+msgid "Could not find any information in the user's profile. The user most likely does not exist."
+msgstr "Kunne ikke finde nogle oplysninger i brugerens profil. Brugeren eksisterer højst sandsynligt ikke."
 
 msgid "View web profile"
-msgstr "Se web-profil"
+msgstr "Se internet-profil"
 
 #. *< type
 #. *< ui_requirement
@@ -5235,16 +4906,16 @@
 msgstr "HTTP-metodeserver"
 
 msgid "Show custom smileys"
-msgstr "Vis brugerdefinerede smileys"
+msgstr "Vis tilpassede smileyer"
 
 msgid "nudge: nudge a user to get their attention"
 msgstr "vink: vink en bruger for at få deres opmærksomhed"
 
 msgid "Windows Live ID authentication:Unable to connect"
-msgstr "Windows Live ID godkendelse:Kunne ikke forbinde"
+msgstr "Godkendelse af Windows Live-id:Kunne ikke forbinde"
 
 msgid "Windows Live ID authentication:Invalid response"
-msgstr "Windows Live ID godkendelse:Ugyldigt svar"
+msgstr "Godkendelse af Windows Live-id:Ugyldigt svar"
 
 #, c-format
 msgid "%s is not a valid group."
@@ -5290,10 +4961,10 @@
 
 #, c-format
 msgid "%s is not a valid passport account."
-msgstr "%s er ikke en gyldig passport konto."
+msgstr "%s er ikke en gyldig passport-konto."
 
 msgid "Service Temporarily Unavailable."
-msgstr "Service midlertidigt utilgængelig."
+msgstr "Tjeneste midlertidigt utilgængelig."
 
 msgid "Mobile message was not sent because it was too long."
 msgstr "Mobilbesked blev ikke sendt, fordi den var for lang."
@@ -5306,38 +4977,24 @@
 
 #, c-format
 msgid ""
-"The MSN server will shut down for maintenance in %d minute. You will "
-"automatically be signed out at that time.  Please finish any conversations "
-"in progress.\n"
+"The MSN server will shut down for maintenance in %d minute. You will automatically be signed out at that time.  Please finish any conversations in progress.\n"
 "\n"
-"After the maintenance has been completed, you will be able to successfully "
-"sign in."
+"After the maintenance has been completed, you will be able to successfully sign in."
 msgid_plural ""
-"The MSN server will shut down for maintenance in %d minutes. You will "
-"automatically be signed out at that time.  Please finish any conversations "
-"in progress.\n"
+"The MSN server will shut down for maintenance in %d minutes. You will automatically be signed out at that time.  Please finish any conversations in progress.\n"
 "\n"
-"After the maintenance has been completed, you will be able to successfully "
-"sign in."
+"After the maintenance has been completed, you will be able to successfully sign in."
 msgstr[0] ""
-"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minut. Du vil "
-"automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende "
-"samtaler.\n"
+"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minut. Du vil automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende samtaler.\n"
 "\n"
 "Efter vedligeholdelsen er blevet gennemført, kan du logge ind igen."
 msgstr[1] ""
-"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minutter. Du vil "
-"automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende "
-"samtaler.\n"
+"MSN-serveren vil blive lukket ned for vedligeholdelse om %d minutter. Du vil automatisk blive logget af på det tidspunkt. Færdiggør alle igangværende samtaler.\n"
 "\n"
 "Efter vedligeholdelsen er blevet gennemført, kan du logge ind igen."
 
-msgid ""
-"Message was not sent because the system is unavailable. This normally "
-"happens when the user is blocked or does not exist."
-msgstr ""
-"Besked blev ikke sendt, fordi systemet ikke er tilgængelig. Dette sker "
-"normalt når brugeren er blokeret eller ikke findes."
+msgid "Message was not sent because the system is unavailable. This normally happens when the user is blocked or does not exist."
+msgstr "Besked blev ikke sendt, fordi systemet ikke er tilgængeligt. Dette sker normalt når brugeren er blokeret eller ikke findes."
 
 msgid "Message was not sent because messages are being sent too quickly."
 msgstr "Besked blev ikke sendt, fordi beskederne sendes for hurtigt."
@@ -5375,20 +5032,17 @@
 msgstr "Du er logget ind fra en anden maskine."
 
 msgid "The MSN servers are temporarily unavailable. Please wait and try again."
-msgstr ""
-"MSN serverne er midlertidigt utilgængelige. Vent og forsøg igen senere."
+msgstr "MSN-serverne er midlertidigt utilgængelige. Vent og forsøg igen senere."
 
 msgid "The MSN servers are going down temporarily."
-msgstr "MSN serverne lukkes midlertidigt."
+msgstr "MSN-serverne lukkes midlertidigt."
 
 #, c-format
 msgid "Unable to authenticate: %s"
 msgstr "Kunne ikke godkende: %s"
 
-msgid ""
-"Your MSN buddy list is temporarily unavailable. Please wait and try again."
-msgstr ""
-"Din MSN venneliste er midlertidigt utilgængelig. Vent og førsøg igen senere."
+msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr "Din MSN venneliste er midlertidigt utilgængelig. Vent og førsøg igen senere."
 
 msgid "Handshaking"
 msgstr "Forhandler"
@@ -5418,15 +5072,13 @@
 msgstr "Ude til frokost"
 
 msgid "Message may have not been sent because a timeout occurred:"
-msgstr ""
-"Besked er måske ikke blevet sendt på grund af et tidsudløb der overskred "
-"grænsen:"
+msgstr "Besked er måske ikke blevet sendt på grund af et tidsudløb der overskred grænsen:"
 
 msgid "Message could not be sent, not allowed while invisible:"
 msgstr "Besked kunne ikke sendes, ikke tilladt imens du er usynlig:"
 
 msgid "Message could not be sent because the user is offline:"
-msgstr "Besked kunne ikke sendes, fordi brugeren er offline:"
+msgstr "Besked kunne ikke sendes, fordi brugeren er afkoblet:"
 
 msgid "Message could not be sent because a connection error occurred:"
 msgstr "Besked kunne ikke sendes på grund af en forbindelsesfejl:"
@@ -5434,16 +5086,10 @@
 msgid "Message could not be sent because we are sending too quickly:"
 msgstr "Besked kunne ikke sendes, fordi vi sender for hurtigt:"
 
-msgid ""
-"Message could not be sent because we were unable to establish a session with "
-"the server. This is likely a server problem, try again in a few minutes:"
-msgstr ""
-"Besked kunne ikke sendes, fordi vi ikke kunne etablere en session med "
-"serveren. Dette er højst sandsynligt et server problem, prøv igen om nogle "
-"få minutter:"
-
-msgid ""
-"Message could not be sent because an error with the switchboard occurred:"
+msgid "Message could not be sent because we were unable to establish a session with the server. This is likely a server problem, try again in a few minutes:"
+msgstr "Besked kunne ikke sendes, fordi vi ikke kunne etablere en session med serveren. Dette er højst sandsynligt et server problem, prøv igen om nogle få minutter:"
+
+msgid "Message could not be sent because an error with the switchboard occurred:"
 msgstr "Besked kunne ikke sendes på grund af en fejl med switchboard:"
 
 msgid "Message may have not been sent because an unknown error occurred:"
@@ -5483,7 +5129,7 @@
 #. *  summary
 #. *  description
 msgid "MSN Protocol Plugin"
-msgstr "MSN-protokol udvidelsesmodul"
+msgstr "MSN-protokoludvidelsesmodul"
 
 #, c-format
 msgid "No such user: %s"
@@ -5493,10 +5139,10 @@
 msgstr "Opslag af bruger"
 
 msgid "Reading challenge"
-msgstr "Læsesvar"
+msgstr "Reading challenge"
 
 msgid "Unexpected challenge length from server"
-msgstr "Uventet svarlængde fra server"
+msgstr "Unexpected challenge length from server"
 
 msgid "Logging in"
 msgstr "Logger ind"
@@ -5515,16 +5161,16 @@
 
 #. Can't write _()'d strings in array initializers. Workaround.
 msgid "New mail messages"
-msgstr "Nye mail-beskeder"
+msgstr "Nye postbeskeder"
 
 msgid "New blog comments"
-msgstr "Ny blog-kommentarer"
+msgstr "Nye blog-kommentarer"
 
 msgid "New profile comments"
 msgstr "Nye profilkommentarer"
 
 msgid "New friend requests!"
-msgstr "Ny venneforspørgsel!"
+msgstr "Ny venneanmodning!"
 
 msgid "New picture comments"
 msgstr "Nye billedkommentarer"
@@ -5536,18 +5182,10 @@
 msgstr "IM-venner"
 
 #, 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[0] ""
-"%d ven blev tilføjet eller opdateret fra serveren (inkluderet venner som "
-"allerede findes på serverlisten)"
-msgstr[1] ""
-"%d venner blev tilføjet eller opdateret fra serveren (inkluderet venner som "
-"allerede findes på serverlisten)"
+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[0] "%d ven blev tilføjet eller opdateret fra serveren (inkluderet venner som allerede findes på serverlisten)"
+msgstr[1] "%d venner blev tilføjet eller opdateret fra serveren (inkluderet venner som allerede findes på serverlisten)"
 
 msgid "Add contacts from server"
 msgstr "Tilføj kontakter fra server"
@@ -5563,18 +5201,11 @@
 msgstr "Protokol fejlkode %d: %s"
 
 #, c-format
-msgid ""
-"%s Your password is %d characters, greater than the expected maximum length "
-"of %d for MySpaceIM. Please shorten your password at http://profileedit."
-"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
-"again."
-msgstr ""
-"%s Din adgangskode er %d karakterer og dermed større end det forventede "
-"maksimum på %d for MySpaceIM. Forkort din adgangskode på http://profileedit."
-"myspace.com/index.cfm?fuseaction=accountSettings.changePassword og prøv igen."
+msgid "%s Your password is %d characters, greater than the expected maximum length of %d for MySpaceIM. Please shorten your password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."
+msgstr "%s Din adgangskode er %d karakterer og dermed større end det forventede maksimum på %d for MySpaceIM. Forkort din adgangskode på http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword og prøv igen."
 
 msgid "MySpaceIM Error"
-msgstr "MySpaceIM fejl"
+msgstr "MySpaceIM-fejl"
 
 msgid "Invalid input condition"
 msgstr "Ugyldig indtastningsbetingelse"
@@ -5590,7 +5221,7 @@
 msgstr "Kunne ikke forbinde til vært: %s (%d)"
 
 msgid "Failed to add buddy"
-msgstr "Kunne ikke tilføje en ven"
+msgstr "Kunne ikke tilføje ven"
 
 msgid "'addbuddy' command failed."
 msgstr "\"addbuddy\"-kommando fejlede."
@@ -5613,12 +5244,8 @@
 msgid "The RC4 cipher could not be found"
 msgstr "RC4 cipher kunne ikke findes"
 
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"Opgrader til en libpurple med RC4-understøttelse (>=2.0.1). MySpaceIM-"
-"udvidelsesmodul vil ikke blive indlæst."
+msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded."
+msgstr "Opgradér til en libpurple med RC4-understøttelse (>=2.0.1). MySpaceIM-udvidelsesmodul vil ikke blive indlæst."
 
 msgid "Add friends from MySpace.com"
 msgstr "Tilføj venner fra MySpace.com"
@@ -5631,18 +5258,16 @@
 msgstr "Find folk..."
 
 msgid "Change IM name..."
-msgstr "Skift IM-navn..."
+msgstr "Ændr beskednavn..."
 
 msgid "myim URL handler"
 msgstr "myim URL-håndtering"
 
 msgid "No suitable MySpaceIM account could be found to open this myim URL."
-msgstr ""
-"Der kunne ikke findes nogen passende MySpaceIM-konto til at åbne denne myim "
-"URL."
+msgstr "Der kunne ikke findes nogen passende MySpaceIM-konto til at åbne denne myim URL."
 
 msgid "Enable the proper MySpaceIM account and try again."
-msgstr "Aktiver korrekte MySpaceIM-konto og prøv igen."
+msgstr "Aktivér den korrekte MySpaceIM-konto og prøv igen."
 
 msgid "Show display name in status text"
 msgstr "Vis synligt navn i statustekst"
@@ -5657,7 +5282,7 @@
 msgstr "Skærmopløsning (punkter pr. tomme)"
 
 msgid "Base font size (points)"
-msgstr "Basal striftstørrelse (punkter)"
+msgstr "Basal skrifttypestørrelse (punkter)"
 
 msgid "User"
 msgstr "Bruger"
@@ -5706,15 +5331,15 @@
 #. * connotation, for example, "he was zapped by electricity when
 #. * he put a fork in the toaster."
 msgid "Zap"
-msgstr "Zap"
+msgstr "Slå"
 
 #, c-format
 msgid "%s has zapped you!"
-msgstr "%s har zappet dig!"
+msgstr "%s har slået dig!"
 
 #, c-format
 msgid "Zapping %s..."
-msgstr "Zapper %s..."
+msgstr "Slår %s..."
 
 #. Whack means "to hit or strike someone with a sharp blow"
 msgid "Whack"
@@ -5776,7 +5401,7 @@
 
 #, c-format
 msgid "Slapping %s..."
-msgstr "Slår %s..."
+msgstr "Giver kindhest til %s..."
 
 #. Goose means "to pinch someone on their butt"
 msgid "Goose"
@@ -5891,17 +5516,13 @@
 msgstr "Hoved-arkiv er konfigureret forkert"
 
 msgid "Incorrect username or password"
-msgstr "Forkert brugernavn eller kodeord"
+msgstr "Forkert brugernavn eller adgangskode"
 
 msgid "Could not recognize the host of the username you entered"
 msgstr "Kunne ikke genkende værten på brugernavnet du indtastede"
 
-msgid ""
-"Your account has been disabled because too many incorrect passwords were "
-"entered"
-msgstr ""
-"Din konto er blevet deaktiveret fordi for mange ugyldige adgangskoder blev "
-"indtastet"
+msgid "Your account has been disabled because too many incorrect passwords were entered"
+msgstr "Din konto er blevet deaktiveret fordi for mange ugyldige adgangskoder blev indtastet"
 
 msgid "You cannot add the same person twice to a conversation"
 msgstr "Du kan ikke tilføje den samme person to gange til en samtale"
@@ -5921,14 +5542,11 @@
 msgid "The user has blocked you"
 msgstr "Brugeren har blokeret dig"
 
-msgid ""
-"This evaluation version does not allow more than ten users to log in at one "
-"time"
-msgstr ""
-"Denne prøve-version tillader ikke mere end 10 brugere logget ind på samme tid"
+msgid "This evaluation version does not allow more than ten users to log in at one time"
+msgstr "Denne prøve-version tillader ikke mere end 10 brugere logget ind på samme tid"
 
 msgid "The user is either offline or you are blocked"
-msgstr "Brugeren er enten offline, eller du er blokeret"
+msgstr "Brugeren er enten afkoblet, eller du er blokeret"
 
 #, c-format
 msgid "Unknown error: 0x%X"
@@ -5964,20 +5582,12 @@
 msgstr "Kunne ikke sende besked. Kunne ikke oprette konferencen (%s)."
 
 #, c-format
-msgid ""
-"Unable to move user %s to folder %s in the server side list. Error while "
-"creating folder (%s)."
-msgstr ""
-"Kunne ikke flytte bruger %s til mappe %s i serverlisten. Fejl skete, da "
-"mappe skulle oprettes (%s)."
-
-#, c-format
-msgid ""
-"Unable to add %s to your buddy list. Error creating folder in server side "
-"list (%s)."
-msgstr ""
-"Kunne ikke tilføje %s til din venneliste. Fejl ved opretning af mappe i "
-"serverliste (%s)."
+msgid "Unable to move user %s to folder %s in the server side list. Error while creating folder (%s)."
+msgstr "Kunne ikke flytte bruger %s til mappe %s i serverlisten. Fejl skete, da mappe skulle oprettes (%s)."
+
+#, c-format
+msgid "Unable to add %s to your buddy list. Error creating folder in server side list (%s)."
+msgstr "Kunne ikke tilføje %s til din venneliste. Fejl ved opretning af mappe i serverliste (%s)."
 
 #, c-format
 msgid "Could not get details for user %s (%s)."
@@ -6020,7 +5630,7 @@
 msgstr "Poststop"
 
 msgid "User ID"
-msgstr "Bruger ID"
+msgstr "Bruger id"
 
 #. tag = _("DN");
 #. value = nm_user_record_get_dn(user_record);
@@ -6062,29 +5672,23 @@
 "Sendt: %s"
 
 msgid "Would you like to join the conversation?"
-msgstr "Vil du deltage i samtalen?"
+msgstr "Vil du tilslutte samtalen?"
 
 msgid "You have been logged out because you logged in at another workstation."
 msgstr "Du er blevet logget af, fordi du er logget på en anden maskine."
 
 #, c-format
-msgid ""
-"%s appears to be offline and did not receive the message that you just sent."
-msgstr ""
-"%s ser ud til at være offline, og har ikke modtaget beskeden du har sendt."
-
-msgid ""
-"Unable to connect to server. Please enter the address of the server you wish "
-"to connect to."
-msgstr ""
-"Kunne ikke forbinde til server. Indtast adressen på serveren du vil forbinde "
-"til."
+msgid "%s appears to be offline and did not receive the message that you just sent."
+msgstr "%s ser ud til at være afkoblet, og har ikke modtaget beskeden du har sendt."
+
+msgid "Unable to connect to server. Please enter the address of the server you wish to connect to."
+msgstr "Kunne ikke forbinde til server. Indtast adressen på serveren du vil forbinde til."
 
 msgid "Error. SSL support is not installed."
 msgstr "Fejl. SSL-understøttelse er ikke installeret."
 
 msgid "This conference has been closed. No more messages can be sent."
-msgstr "Konferencen er blevet lukket. Der kan ikke sendes flere beskeder."
+msgstr "Konferencen er blevet afsluttet. Der kan ikke sendes flere beskeder."
 
 #. *< type
 #. *< ui_requirement
@@ -6106,10 +5710,10 @@
 msgstr "Server port"
 
 msgid "Could not join chat room"
-msgstr "Kunne ikke tilslutte chatrum"
+msgstr "Kunne ikke tilslutte samtalerum"
 
 msgid "Invalid chat room name"
-msgstr "Ugyldigt navn på chatrum"
+msgstr "Ugyldigt navn på samtalerum"
 
 msgid "Server closed the connection."
 msgstr "Server lukkede forbindelsen."
@@ -6119,7 +5723,7 @@
 "Lost connection with server:\n"
 "%s"
 msgstr ""
-"Mistede forbindelsen med server:\n"
+"Mistede forbindelsen til server:\n"
 "%s"
 
 msgid "Received invalid data on connection with server."
@@ -6165,7 +5769,7 @@
 
 #, c-format
 msgid "Lost connection with the remote user:<br>%s"
-msgstr "Mistede forbindelse med fjernbrugeren:<br>%s"
+msgstr "Mistede forbindelse til fjernbrugeren:<br>%s"
 
 msgid "Received invalid data on connection with remote user."
 msgstr "Modtog ugyldige data ved forbindelse til fjern bruger."
@@ -6174,15 +5778,11 @@
 msgstr "Kunne ikke etablere en forbindelse til en fjernbruger."
 
 msgid "Direct IM established"
-msgstr "Direkte kvikbesked etableret"
-
-#, c-format
-msgid ""
-"%s tried to send you a %s file, but we only allow files up to %s over Direct "
-"IM.  Try using file transfer instead.\n"
-msgstr ""
-"%s forsøgte at sende dig en %s fil, men vi tillader kun filer op til %s over "
-"direkte kvikbesked.  Prøv at bruge filoverførelse i stedet for.\n"
+msgstr "Direkte besked etableret"
+
+#, c-format
+msgid "%s tried to send you a %s file, but we only allow files up to %s over Direct IM.  Try using file transfer instead.\n"
+msgstr "%s forsøgte at sende dig en %s fil, men vi tillader kun filer op til %s over direkte besked.  Prøv at bruge filoverførelse i stedet for.\n"
 
 #, c-format
 msgid "File %s is %s, which is larger than the maximum size of %s."
@@ -6201,7 +5801,7 @@
 msgstr "Grænse til klient"
 
 msgid "Service unavailable"
-msgstr "Service ikke tilgængelig"
+msgstr "Tjeneste ikke tilgængelig"
 
 msgid "Service not defined"
 msgstr "Tjeneste ikke defineret"
@@ -6260,24 +5860,12 @@
 msgid "Not while on AOL"
 msgstr "Ikke samtidig med AOL"
 
-msgid ""
-"(There was an error receiving this message.  The buddy you are speaking with "
-"is probably using a different encoding than expected.  If you know what "
-"encoding he is using, you can specify it in the advanced account options for "
-"your AIM/ICQ account.)"
-msgstr ""
-"(Der opstod en fejl ved modtagelse af denne besked. Vennen du taler med "
-"bruger måske en anden indkodning end forventet. Hvis du kender indkodningen, "
-"som han bruger, kan du angive den i avancerede kontovalgmuligheder for din "
-"AIM/ICQ-konto.)"
-
-#, c-format
-msgid ""
-"(There was an error receiving this message.  Either you and %s have "
-"different encodings selected, or %s has a buggy client.)"
-msgstr ""
-"(Der opstod en fejl ved modtagelse af denne besked. Enten har du eller %s "
-"valgt forskellige indkodninger, eller har %s en fejlramt klient.)"
+msgid "(There was an error receiving this message.  The buddy you are speaking with is probably using a different encoding than expected.  If you know what encoding he is using, you can specify it in the advanced account options for your AIM/ICQ account.)"
+msgstr "(Der opstod en fejl ved modtagelse af denne besked. Vennen du taler med bruger måske en anden indkodning end forventet. Hvis du kender indkodningen, som han bruger, kan du angive den i avancerede kontoindstillinger for din AIM/ICQ-konto.)"
+
+#, c-format
+msgid "(There was an error receiving this message.  Either you and %s have different encodings selected, or %s has a buggy client.)"
+msgstr "(Der opstod en fejl ved modtagelse af denne besked. Enten har du eller %s valgt forskellige indkodninger, eller har %s en fejlramt klient.)"
 
 #. Label
 msgid "Buddy Icon"
@@ -6332,7 +5920,7 @@
 msgstr "Sikkerhedsaktiveret"
 
 msgid "Video Chat"
-msgstr "Video chat"
+msgstr "Videosamtale"
 
 msgid "iChat AV"
 msgstr "iChat AV"
@@ -6347,7 +5935,7 @@
 msgstr "Skærmdeling"
 
 msgid "Free For Chat"
-msgstr "Fri til chat"
+msgstr "Fri til samtale"
 
 msgid "Not Available"
 msgstr "Ikke tilgængelig"
@@ -6356,7 +5944,7 @@
 msgstr "Optaget"
 
 msgid "Web Aware"
-msgstr "Web-opmærksom"
+msgstr "Internet-opmærksom"
 
 msgid "Invisible"
 msgstr "Usynlig"
@@ -6394,18 +5982,11 @@
 
 #. TODO: Don't call this with ssi
 msgid "Finalizing connection"
-msgstr "Færddiggører opkobling"
-
-#, c-format
-msgid ""
-"Unable to login: Could not sign on as %s because the username is invalid.  "
-"Usernames must be a valid email address, or start with a letter and contain "
-"only letters, numbers and spaces, or contain only numbers."
-msgstr ""
-"Kunne ikke logge ind: Kunne ikke logge på som %s, fordi brugernavnet er "
-"ugyldigt. Brugernavne skal være en gyldig e-postadresse, eller starte med et "
-"bogstav og kun indeholde bogstaver, tal eller mellemrum, eller kun indeholde "
-"tal."
+msgstr "Færddiggører forbindelse"
+
+#, c-format
+msgid "Unable to login: Could not sign on as %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
+msgstr "Kunne ikke logge ind: Kunne ikke logge på som %s, fordi brugernavnet er ugyldigt. Brugernavne skal være en gyldig e-postadresse, eller starte med et bogstav og kun indeholde bogstaver, tal eller mellemrum, eller kun indeholde tal."
 
 #. Unregistered screen name
 #. uid is not exist
@@ -6425,12 +6006,8 @@
 
 #. screen name connecting too frequently
 #. IP address connecting too frequently
-msgid ""
-"You have been connecting and disconnecting too frequently. Wait ten minutes "
-"and try again. If you continue to try, you will need to wait even longer."
-msgstr ""
-"Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti "
-"minutter og prøv så igen, for ellers skal du bare vente endnu længere."
+msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
+msgstr "Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti minutter og prøv så igen, for ellers skal du bare vente endnu længere."
 
 #, c-format
 msgid "The client version you are using is too old. Please upgrade at %s"
@@ -6459,19 +6036,17 @@
 
 #, c-format
 msgid "You may be disconnected shortly.  If so, check %s for updates."
-msgstr ""
-"Du vil måske blive frakoblet snart.  Hvis tilfældet, kontrollér %s for "
-"opdateringer."
+msgstr "Du vil måske blive frakoblet snart.  Hvis tilfældet, kontrollér %s for opdateringer."
 
 msgid "Unable to get a valid AIM login hash."
-msgstr "Kunne ikke opnå et gyldigt AIM-logindhash."
+msgstr "Kunne ikke hente et gyldigt AIM-logindhash."
 
 #, c-format
 msgid "You may be disconnected shortly.  Check %s for updates."
 msgstr "Du vil måske blive frakoblet snart. Kontrollér %s for opdateringer."
 
 msgid "Unable to get a valid login hash."
-msgstr "Kunne ikke opnå et gyldigt loginhash."
+msgstr "Kunne ikke hente et gyldigt loginhash."
 
 msgid "Password sent"
 msgstr "Adgangskode sendt"
@@ -6496,12 +6071,10 @@
 
 #, c-format
 msgid ""
-"The user %u has denied your request to add them to your buddy list for the "
-"following reason:\n"
+"The user %u has denied your request to add them to your buddy list for the following reason:\n"
 "%s"
 msgstr ""
-"Brugeren %u har nægtet din anmodning om at tilføje sig til din venneliste, "
-"af den følgende grund:\n"
+"Brugeren %u har nægtet din anmodning om at tilføje sig til din venneliste, af den følgende grund:\n"
 "%s"
 
 msgid "ICQ authorization denied."
@@ -6543,7 +6116,7 @@
 "Message is:\n"
 "%s"
 msgstr ""
-"Du har modtaget en ICQ email fra %s [%s]\n"
+"Du har modtaget en ICQ e-post fra %s [%s]\n"
 "\n"
 "Beskeden er:\n"
 "%s"
@@ -6574,37 +6147,22 @@
 msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi de var for store."
 
 #, c-format
-msgid ""
-"You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural ""
-"You missed %hu messages from %s because the rate limit has been exceeded."
-msgstr[0] ""
-"Du har ikke modtaget %hu besked fra %s, fordi den blev sendt for hurtigt."
-msgstr[1] ""
-"Du har ikke modtaget %hu beskeder fra %s, fordi de blev sendt for hurtigt."
-
-#, c-format
-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] ""
-"Du har ikke modtaget %hu besked fra %s, fordi hans/hendes advarselsniveau er "
-"for højt."
-msgstr[1] ""
-"Du har ikke modtaget %hu beskeder fra %s, fordi hans/hendes advarselsniveau "
-"er for højt."
+msgid "You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded."
+msgstr[0] "Du har ikke modtaget %hu besked fra %s, fordi den blev sendt for hurtigt."
+msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi de blev sendt for hurtigt."
+
+#, c-format
+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] "Du har ikke modtaget %hu besked fra %s, fordi hans/hendes advarselsniveau er for højt."
+msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi hans/hendes advarselsniveau er for højt."
 
 #, 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] ""
-"Du har ikke modtaget %hu besked fra %s, fordi dit advarselsniveau er for "
-"højt."
-msgstr[1] ""
-"Du har ikke modtaget %hu beskeder fra %s, fordi dit advarselsniveau er for "
-"højt."
+msgid_plural "You missed %hu messages from %s because your warning level is too high."
+msgstr[0] "Du har ikke modtaget %hu besked fra %s, fordi dit advarselsniveau er for højt."
+msgstr[1] "Du har ikke modtaget %hu beskeder fra %s, fordi dit advarselsniveau er for højt."
 
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
@@ -6629,7 +6187,7 @@
 msgstr "Bruger oplysninger er ikke tilgængelige: %s"
 
 msgid "Online Since"
-msgstr "Online siden"
+msgstr "Tilkoblet siden"
 
 msgid "Member Since"
 msgstr "Medlem siden"
@@ -6641,23 +6199,15 @@
 msgstr "Din AIM forbindelse kan være afbrudt."
 
 #. The conversion failed!
-msgid ""
-"[Unable to display a message from this user because it contained invalid "
-"characters.]"
-msgstr ""
-"[Ude af stand til at vise en besked fra denne bruger, fordi den indeholdte "
-"ugyldige bogstaver.]"
-
-msgid ""
-"The last action you attempted could not be performed because you are over "
-"the rate limit. Please wait 10 seconds and try again."
-msgstr ""
-"Den sidste handling blev ikke udført, fordi du har overskredet grænsen. Vent "
-"i 10 sekunder og prøv igen."
+msgid "[Unable to display a message from this user because it contained invalid characters.]"
+msgstr "[Ude af stand til at vise en besked fra denne bruger, fordi den indeholdte ugyldige bogstaver.]"
+
+msgid "The last action you attempted could not be performed because you are over the rate limit. Please wait 10 seconds and try again."
+msgstr "Den sidste handling blev ikke udført, fordi du har overskredet grænsen. Vent i 10 sekunder og prøv igen."
 
 #, c-format
 msgid "You have been disconnected from chat room %s."
-msgstr "Forbindelse til chat-rum %s afbrudt."
+msgstr "Forbindelse til samtalerum %s afbrudt."
 
 msgid "Mobile Phone"
 msgstr "Mobiltelefon"
@@ -6691,139 +6241,88 @@
 #, c-format
 msgid "The following username is associated with %s"
 msgid_plural "The following usernames are associated with %s"
-msgstr[0] "Følgende brugernavn er associeret med %s"
-msgstr[1] "Følgende brugernavne er associeret med %s"
+msgstr[0] "Følgende brugernavn er tilknyttet %s"
+msgstr[1] "Følgende brugernavne er tilknyttet %s"
 
 #, c-format
 msgid "No results found for email address %s"
-msgstr "Ingen resultater fundet for post-adressen %s"
+msgstr "Ingen resultater fundet for e-postadressen %s"
 
 #, c-format
 msgid "You should receive an email asking to confirm %s."
-msgstr "Du bør modtage en email for at acceptere %s."
+msgstr "Du bør modtage en e-post for at acceptere %s."
 
 msgid "Account Confirmation Requested"
 msgstr "Der er anmodet om konto bekræftelse"
 
 #, c-format
-msgid ""
-"Error 0x%04x: Unable to format username because the requested name differs "
-"from the original."
-msgstr ""
-"Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede brugernavn "
-"er forskelligt fra det oprindelige."
+msgid "Error 0x%04x: Unable to format username because the requested name differs from the original."
+msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede brugernavn er forskelligt fra det oprindelige."
 
 #, c-format
 msgid "Error 0x%04x: Unable to format username because it is invalid."
 msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det er ugyldigt."
 
 #, c-format
-msgid ""
-"Error 0x%04x: Unable to format username because the requested name is too "
-"long."
-msgstr ""
-"Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede navn er for "
-"langt."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because there is already a "
-"request pending for this username."
-msgstr ""
-"Fejl 0x%04x: Ikke i stand til at ændre e-post adresse, fordi der allerede er "
-"en anmodning ventende for dette brugernavn."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because the given address has "
-"too many usernames associated with it."
-msgstr ""
-"Fejl 0x%04x: Ikke i stand til at ændre e-post adresse, fordi den angivne "
-"adresse har for mange brugernavne knyttet til sig."
-
-#, c-format
-msgid ""
-"Error 0x%04x: Unable to change email address because the given address is "
-"invalid."
-msgstr ""
-"Fejl 0x%04x: Ikke i stand til at ændre email adresse, fordi den angivne "
-"adresse er ugyldig."
+msgid "Error 0x%04x: Unable to format username because the requested name is too long."
+msgstr "Fejl 0x%04x: Kunne ikke formattere brugernavn fordi det anmodede navn er for langt."
+
+#, c-format
+msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this username."
+msgstr "Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi der allerede er en anmodning ventende for dette brugernavn."
+
+#, c-format
+msgid "Error 0x%04x: Unable to change email address because the given address has too many usernames associated with it."
+msgstr "Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi den angivne adresse har for mange brugernavne tilknyttet sig."
+
+#, c-format
+msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
+msgstr "Fejl 0x%04x: Kan ikke ændre e-postadresse, fordi den angivne adresse er ugyldig."
 
 #, c-format
 msgid "Error 0x%04x: Unknown error."
 msgstr "Fejl 0x%04x: Ukendt fejl."
 
 msgid "Error Changing Account Info"
-msgstr "Fejl ved ændring af konto oplysninger"
+msgstr "Fejl ved ændring af kontooplysninger"
 
 #, c-format
 msgid "The email address for %s is %s"
-msgstr "%s's post-adresse er %s"
+msgstr "%s's e-postadresse er %s"
 
 msgid "Account Info"
 msgstr "Konto Oplysninger"
 
-msgid ""
-"Your IM Image was not sent. You must be Direct Connected to send IM Images."
-msgstr ""
-"Dit billede blev ikke sendt. Du skal være direkte forbundet for at sende "
-"billeder."
+msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr "Dit billede blev ikke sendt. Du skal være direkte forbundet for at sende billeder."
 
 msgid "Unable to set AIM profile."
 msgstr "Kunne ikke ændre AIM profil."
 
-msgid ""
-"You have probably requested to set your profile before the login procedure "
-"completed.  Your profile remains unset; try setting it again when you are "
-"fully connected."
-msgstr ""
-"Du har sikkert anmodet om at sætte din profil før login-processen er blevet "
-"færdig. Din profil er ikke sat; prøv at sætte den igen når du er færdig med "
-"at forbinde til serveren."
-
-#, c-format
-msgid ""
-"The maximum profile length of %d byte has been exceeded.  It has been "
-"truncated for you."
-msgid_plural ""
-"The maximum profile length of %d bytes has been exceeded.  It has been "
-"truncated for you."
-msgstr[0] ""
-"Profil-længdens maksimale størrelse på %d byte er blevet overskredet.  Den "
-"er blevet forkortet for dig."
-msgstr[1] ""
-"Profil-længdens maksimale størrelse på %d bytes er blevet overskredet.  Den "
-"er blevet forkortet for dig."
+msgid "You have probably requested to set your profile before the login procedure completed.  Your profile remains unset; try setting it again when you are fully connected."
+msgstr "Du har sikkert anmodet om at sætte din profil før login-processen er blevet færdig. Din profil er ikke sat; prøv at sætte den igen når du er færdig med at forbinde til serveren."
+
+#, c-format
+msgid "The maximum profile length of %d byte has been exceeded.  It has been truncated for you."
+msgid_plural "The maximum profile length of %d bytes has been exceeded.  It has been truncated for you."
+msgstr[0] "Profil-længdens maksimale størrelse på %d byte er blevet overskredet.  Den er blevet forkortet for dig."
+msgstr[1] "Profil-længdens maksimale størrelse på %d bytes er blevet overskredet.  Den er blevet forkortet for dig."
 
 msgid "Profile too long."
 msgstr "Profil for lang."
 
 #, c-format
-msgid ""
-"The maximum away message length of %d byte has been exceeded.  It has been "
-"truncated for you."
-msgid_plural ""
-"The maximum away message length of %d bytes has been exceeded.  It has been "
-"truncated for you."
-msgstr[0] ""
-"Fraværsbeskedens maksimale længde på %d byte er blevet overskredet.  Den er "
-"blevet forkortet for dig."
-msgstr[1] ""
-"Fraværsbeskedens maksimale længde på %d bytes er blevet overskredet.  Den er "
-"blevet forkortet for dig."
+msgid "The maximum away message length of %d byte has been exceeded.  It has been truncated for you."
+msgid_plural "The maximum away message length of %d bytes has been exceeded.  It has been truncated for you."
+msgstr[0] "Fraværsbeskedens maksimale længde på %d byte er blevet overskredet.  Den er blevet forkortet for dig."
+msgstr[1] "Fraværsbeskedens maksimale længde på %d bytes er blevet overskredet.  Den er blevet forkortet for dig."
 
 msgid "Away message too long."
 msgstr "Fraværsbesked for lang."
 
 #, c-format
-msgid ""
-"Could not add the buddy %s because the username is invalid.  Usernames must "
-"be a valid email address, or start with a letter and contain only letters, "
-"numbers and spaces, or contain only numbers."
-msgstr ""
-"Kunne ikke tilføje vennen %s, fordi brugernavnet er ugyldigt.  Brugernavne "
-"skal være en gyldig e-postadresse, eller starte med ét bogstav og kun "
-"indeholde bogstaver, tal og mellemrum, eller kun indeholde tal."
+msgid "Could not add the buddy %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
+msgstr "Kunne ikke tilføje vennen %s, fordi brugernavnet er ugyldigt.  Brugernavne skal være en gyldig e-postadresse, eller starte med ét bogstav og kun indeholde bogstaver, tal og mellemrum, eller kun indeholde tal."
 
 msgid "Unable to Add"
 msgstr "Ikke i stand til at tilføje"
@@ -6831,24 +6330,15 @@
 msgid "Unable to Retrieve Buddy List"
 msgstr "Kunne ikke hente venneliste"
 
-msgid ""
-"The AIM servers were temporarily unable to send your buddy list.  Your buddy "
-"list is not lost, and will probably become available in a few minutes."
-msgstr ""
-"AIM-serverne var midlertidigt ude af stand til at hente din venneliste.  Din "
-"venneliste er ikke tabt, og vil sikkert blive tilgængelig indenfor et par "
-"minutter."
+msgid "The AIM servers were temporarily unable to send your buddy list.  Your buddy list is not lost, and will probably become available in a few minutes."
+msgstr "AIM-serverne var midlertidigt ude af stand til at sende din venneliste.  Din venneliste er ikke tabt, og vil sikkert blive tilgængelig indenfor et par minutter."
 
 msgid "Orphans"
 msgstr "Tabte"
 
 #, c-format
-msgid ""
-"Could not add the buddy %s because you have too many buddies in your buddy "
-"list.  Please remove one and try again."
-msgstr ""
-"Kunne ikke tilføje vennen %s fordi du har for mange venner i din venneliste."
-"Fjern en, og prøv igen."
+msgid "Could not add the buddy %s because you have too many buddies in your buddy list.  Please remove one and try again."
+msgstr "Kunne ikke tilføje vennen %s fordi du har for mange venner i din venneliste.Fjern en, og prøv igen."
 
 msgid "(no name)"
 msgstr "(intet navn)"
@@ -6858,12 +6348,8 @@
 msgstr "Kunne ikke tilføje vennen %s af en ukendt årsag."
 
 #, c-format
-msgid ""
-"The user %s has given you permission to add him or her to your buddy list.  "
-"Do you want to add this user?"
-msgstr ""
-"Brugeren %s har givet dig lov til at tilføje dig til din venneliste.  Vil du "
-"tilføje brugeren?"
+msgid "The user %s has given you permission to add him or her to your buddy list.  Do you want to add this user?"
+msgstr "Brugeren %s har givet dig lov til at tilføje dig til din venneliste.  Vil du tilføje brugeren?"
 
 msgid "Authorization Given"
 msgstr "Godkendelse Givet"
@@ -6871,9 +6357,7 @@
 #. Granted
 #, c-format
 msgid "The user %s has granted your request to add them to your buddy list."
-msgstr ""
-"Brugeren %s har givet lov til din anmodning om at tilføje dem til din "
-"venneliste."
+msgstr "Brugeren %s har givet lov til din anmodning om at tilføje dem til din venneliste."
 
 msgid "Authorization Granted"
 msgstr "Godkendelse Givet"
@@ -6881,12 +6365,10 @@
 #. Denied
 #, c-format
 msgid ""
-"The user %s has denied your request to add them to your buddy list for the "
-"following reason:\n"
+"The user %s has denied your request to add them to your buddy list for the following reason:\n"
 "%s"
 msgstr ""
-"Brugeren %s har nægtet din anmodning om at tilføje dem til din venneliste af "
-"følgende grund:\n"
+"Brugeren %s har nægtet din anmodning om at tilføje dem til din venneliste af følgende grund:\n"
 "%s"
 
 msgid "Authorization Denied"
@@ -6896,10 +6378,10 @@
 msgstr "_Udveksl:"
 
 msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
-msgstr "Dit billede blev ikke sendt. Du kan ikke sende billeder i AIM chats."
+msgstr "Dit billede blev ikke sendt. Du kan ikke sende billeder i AIM-samtaler."
 
 msgid "iTunes Music Store Link"
-msgstr "iTunes Music Store link"
+msgstr "Henvisning til iTunes Music Store"
 
 #, c-format
 msgid "Buddy Comment for %s"
@@ -6912,12 +6394,8 @@
 msgid "You have selected to open a Direct IM connection with %s."
 msgstr "Du har valgt at åbne en direkte besked-forbindelse med %s."
 
-msgid ""
-"Because this reveals your IP address, it may be considered a security risk.  "
-"Do you wish to continue?"
-msgstr ""
-"Fordi dette afslører din IP-adresse, ses det som en privatlivs-risiko. Vil "
-"du fortsætte?"
+msgid "Because this reveals your IP address, it may be considered a security risk.  Do you wish to continue?"
+msgstr "Fordi dette afslører din IP-adresse, ses det som en privatlivs-risiko. Vil du fortsætte?"
 
 msgid "C_onnect"
 msgstr "_Tilslut"
@@ -6942,7 +6420,7 @@
 msgstr "Kræv godkendelse"
 
 msgid "Web aware (enabling this will cause you to receive SPAM!)"
-msgstr "Web tilstedeværelse (hvis dette er slået til vil du modtage SPAM!)"
+msgstr "Internet tilstedeværelse (hvis dette er slået til vil du modtage SPAM!)"
 
 msgid "ICQ Privacy Options"
 msgstr "ICQ privatlivsindstillinger"
@@ -6954,7 +6432,7 @@
 msgstr "Brugernavn formatering kan kun ændre store/små bogstaver og mellemrum."
 
 msgid "Change Address To:"
-msgstr "Skift adresse til:"
+msgstr "Ændr adresse til:"
 
 msgid "<i>you are not waiting for authorization</i>"
 msgstr "<i>du venter ikke på godkendelse</i>"
@@ -6962,33 +6440,29 @@
 msgid "You are awaiting authorization from the following buddies"
 msgstr "Du afventer godkendelse fra følgende venner"
 
-msgid ""
-"You can re-request authorization from these buddies by right-clicking on "
-"them and selecting \"Re-request Authorization.\""
-msgstr ""
-"Du kan anmode om ny godkendelse fra disse venner ved at højreklikke på dem "
-"og vælge \"Anmod om ny godkendelse\"."
+msgid "You can re-request authorization from these buddies by right-clicking on them and selecting \"Re-request Authorization.\""
+msgstr "Du kan anmode om ny godkendelse fra disse venner ved at højreklikke på dem og vælge \"Anmod om ny godkendelse\"."
 
 msgid "Find Buddy by Email"
-msgstr "Find ven udfra email adresse"
+msgstr "Find ven udfra e-postadresse"
 
 msgid "Search for a buddy by email address"
-msgstr "Søg efter en ven udfra email adresse"
+msgstr "Søg efter en ven udfra e-postadresse"
 
 msgid "Type the email address of the buddy you are searching for."
-msgstr "Indtast email adressen på vennen du søger efter."
+msgstr "Indtast e-postadressen på vennen du søger efter."
 
 msgid "_Search"
 msgstr "_Søg"
 
 msgid "Set User Info (web)..."
-msgstr "Sæt brugeroplysninger (web)..."
+msgstr "Indstil brugeroplysninger (internet)..."
 
 msgid "Change Password (web)"
-msgstr "Skift adgangskode (web)"
+msgstr "Ændr adgangskode (internet)"
 
 msgid "Configure IM Forwarding (web)"
-msgstr "Konfigurér kvikbesked-videresendelse (web)"
+msgstr "Konfigurér beskedvideresendelse (internet)"
 
 #. ICQ actions
 msgid "Set Privacy Options..."
@@ -6999,16 +6473,16 @@
 msgstr "Bekræft Konto"
 
 msgid "Display Currently Registered Email Address"
-msgstr "Vis nuværende registrede e-post adresse"
+msgstr "Vis nuværende registrede e-postadresse"
 
 msgid "Change Currently Registered Email Address..."
-msgstr "Skift nuværende registrede e-post adresse..."
+msgstr "Ændr nuværende registrede e-postadresse..."
 
 msgid "Show Buddies Awaiting Authorization"
 msgstr "Vis venner der afventer godkendelse"
 
 msgid "Search for Buddy by Email Address..."
-msgstr "Søg efter ven udfra e-post adresse..."
+msgstr "Søg efter ven udfra e-postadresse..."
 
 msgid "Search for Buddy by Information"
 msgstr "Søg efter ven udfra oplysninger"
@@ -7018,8 +6492,8 @@
 "file transfers and direct IM (slower,\n"
 "but does not reveal your IP address)"
 msgstr ""
-"Brug altid AIM/ICQ-mellemværtsserver til\n"
-"filoverførsler og direkte besked (langsommere,\n"
+"Brug altid AIM/ICQ-proxyserver til\n"
+"filoverførsler og kvikbesked (langsommere,\n"
 "men afslører ikke din IP-adresse)"
 
 msgid "Allow multiple simultaneous logins"
@@ -7034,20 +6508,14 @@
 msgstr "Prøver at forbinde til %s:%hu."
 
 msgid "Attempting to connect via proxy server."
-msgstr "Forsøger at forbinde via mellemværtsserver."
+msgstr "Forsøger at forbinde via proxy-server."
 
 #, c-format
 msgid "%s has just asked to directly connect to %s"
 msgstr "%s har lige spurgt om at forbinde direkte til %s"
 
-msgid ""
-"This requires a direct connection between the two computers and is necessary "
-"for IM Images.  Because your IP address will be revealed, this may be "
-"considered a privacy risk."
-msgstr ""
-"Dette kræver en direkte forbindelse imellem to computere og er nødvendigt "
-"for billeder. Fordi din IP-adresse vil blive afsløret, kan det anses som en "
-"privatlivs risiko."
+msgid "This requires a direct connection between the two computers and is necessary for IM Images.  Because your IP address will be revealed, this may be considered a privacy risk."
+msgstr "Dette kræver en direkte forbindelse imellem to computere og er nødvendigt for billeder. Fordi din IP-adresse vil blive afsløret, kan det anses som en privatlivs risiko."
 
 msgid "Aquarius"
 msgstr "Vandmand"
@@ -7131,7 +6599,7 @@
 msgstr "Kun ven"
 
 msgid "Private"
-msgstr "Privatliv"
+msgstr "Privat"
 
 msgid "QQ Number"
 msgstr "QQ-nummer"
@@ -7149,7 +6617,7 @@
 msgstr "Telefonnummer"
 
 msgid "Authorize adding"
-msgstr "Godkend ven"
+msgstr "Godkend tilføjelse"
 
 msgid "Cellphone Number"
 msgstr "Mobilnummer"
@@ -7161,10 +6629,10 @@
 msgstr "By/område"
 
 msgid "Publish Mobile"
-msgstr "Udgiv mobil"
+msgstr "Offentliggør mobil"
 
 msgid "Publish Contact"
-msgstr "Udgiv kontakt"
+msgstr "Offentliggør kontakt"
 
 msgid "College"
 msgstr "Fold sammen"
@@ -7185,16 +6653,16 @@
 msgstr "Falsk"
 
 msgid "Modify Contact"
-msgstr "Ændrer kontakt"
+msgstr "Ændr kontakt"
 
 msgid "Modify Address"
-msgstr "Ændre addresse"
+msgstr "Ændr adresse"
 
 msgid "Modify Extended Information"
-msgstr "Ændre udvidet information"
+msgstr "Ændr udvidet information"
 
 msgid "Modify Information"
-msgstr "Ændre information"
+msgstr "Ændr information"
 
 msgid "Update"
 msgstr "Opdatér"
@@ -7232,13 +6700,13 @@
 msgstr "Tilføj vennegodkendelse"
 
 msgid "Enter request here"
-msgstr "Indtast forespørgelse her"
+msgstr "Indtast anmodning her"
 
 msgid "Would you be my friend?"
 msgstr "Vil du være min ven?"
 
 msgid "QQ Buddy"
-msgstr "QQ ven"
+msgstr "QQ-ven"
 
 msgid "Add buddy"
 msgstr "Tilføj ven"
@@ -7307,10 +6775,10 @@
 msgstr "Admin"
 
 msgid "Notice"
-msgstr "Note"
+msgstr "Bemærk"
 
 msgid "Detail"
-msgstr "Detaljer"
+msgstr "Detalje"
 
 msgid "Creator"
 msgstr "Opretter"
@@ -7322,13 +6790,13 @@
 msgstr "Kategori"
 
 msgid "The Qun does not allow others to join"
-msgstr "Qun'en tillader ikke andre at blive medlem"
+msgstr "Qun'en tillader ikke andre at tilslutte"
 
 msgid "Join QQ Qun"
-msgstr "Deltag QQ Qun"
+msgstr "Tilslut QQ Qun"
 
 msgid "Input request here"
-msgstr "Indtast forespørgelse her"
+msgstr "Indtast forespørgsel her"
 
 #, c-format
 msgid "Successfully joined Qun %s (%u)"
@@ -7361,13 +6829,13 @@
 "vil denne operation måske fjerne denne Qun."
 
 msgid "Sorry, you are not our style"
-msgstr "Beklager, du er ikke min type"
+msgstr "Beklager, du er ikke vores type"
 
 msgid "Successfully changed Qun members"
-msgstr "Ændret Qun-medlemmer problemfrit"
+msgstr "Ændrede Qun-medlemmer problemfrit"
 
 msgid "Successfully changed Qun information"
-msgstr "Ændret Qun-information problemfrit"
+msgstr "Ændrede Qun-information problemfrit"
 
 msgid "You have successfully created a Qun"
 msgstr "Du har oprettet en Qun"
@@ -7380,15 +6848,15 @@
 
 #, c-format
 msgid "%u requested to join Qun %u for %s"
-msgstr "%u anmoder om at blive medlem af Qun %u for %s"
+msgstr "%u anmoder om at tilslutte Qun %u for %s"
 
 #, c-format
 msgid "%u request to join Qun %u"
-msgstr "%u anmoder om at blive medlem af Qun %u"
+msgstr "%u anmoder om at tilslutte Qun %u"
 
 #, c-format
 msgid "Failed to join Qun %u, operated by admin %u"
-msgstr "Kunne ikke deltage i Qun %u, styret af admin %u"
+msgstr "Kunne ikke tilslutte Qun %u, styret af admin %u"
 
 #, c-format
 msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
@@ -7400,7 +6868,7 @@
 
 #, c-format
 msgid "<b>New buddy %u joined.</b>"
-msgstr "<b>Nu ven %u deltager.</b>"
+msgstr "<b>Ny ven %u tilsluttet.</b>"
 
 #, c-format
 msgid "Unknown-%d"
@@ -7416,10 +6884,10 @@
 msgstr " TCP"
 
 msgid " FromMobile"
-msgstr " FraMobil"
+msgstr " FromMobile"
 
 msgid " BindMobile"
-msgstr " BindMobil"
+msgstr " BindMobile"
 
 msgid " Video"
 msgstr " Video"
@@ -7441,11 +6909,11 @@
 
 #, c-format
 msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>Login tid</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>Logind tid</b>: %d-%d-%d, %d:%d:%d<br>\n"
 
 #, c-format
 msgid "<b>Total Online Buddies</b>: %d<br>\n"
-msgstr "<b>Totale venner online</b>: %d<br>\n"
+msgstr "<b>Totale venner tilkoblet</b>: %d<br>\n"
 
 #, c-format
 msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
@@ -7473,7 +6941,7 @@
 
 #, c-format
 msgid "<b>Resend</b>: %lu<br>\n"
-msgstr "<b>Gensendt</b>: %lu<br>\n"
+msgstr "<b>Gensend</b>: %lu<br>\n"
 
 #, c-format
 msgid "<b>Lost</b>: %lu<br>\n"
@@ -7485,7 +6953,7 @@
 
 #, c-format
 msgid "<b>Received Duplicate</b>: %lu<br>\n"
-msgstr "<b>Modtagede duplikater</b>: %lu<br>\n"
+msgstr "<b>Modtaget duplikat</b>: %lu<br>\n"
 
 #, c-format
 msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
@@ -7502,13 +6970,13 @@
 msgstr "<p><b>Oprindelig forfatter</b>:<br>\n"
 
 msgid "<p><b>Code Contributors</b>:<br>\n"
-msgstr "<p><b>Kode bidragere</b>:<br>\n"
+msgstr "<p><b>Kode bidragydere</b>:<br>\n"
 
 msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
 msgstr "<p><b>Elskede programrettelsesskrivere</b>:<br>\n"
 
 msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<p><b>Bekræft erkendelse</b>:<br>\n"
+msgstr "<p><b>Bekræft anerkendelse</b>:<br>\n"
 
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr "<p><i>Og alle drengene i baggrunden...</i><br>\n"
@@ -7521,10 +6989,10 @@
 msgstr "Om OpenQ %s"
 
 msgid "Change Icon"
-msgstr "Ændre ikon"
+msgstr "Ændr ikon"
 
 msgid "Change Password"
-msgstr "Skift adgangskode"
+msgstr "Ændr adgangskode"
 
 msgid "Account Information"
 msgstr "Kontoinformation"
@@ -7567,13 +7035,13 @@
 msgstr "Tilslut med TCP"
 
 msgid "Show server notice"
-msgstr "Vis servernote"
+msgstr "Vis serverbemærkning"
 
 msgid "Show server news"
 msgstr "Vis servernyheder"
 
 msgid "Show chat room when msg comes"
-msgstr "Vis chatrum når besked kommer"
+msgstr "Vis samtalerum når besked kommer"
 
 msgid "Keep alive interval (seconds)"
 msgstr "Hold i live interval (sekunder)"
@@ -7582,15 +7050,15 @@
 msgstr "Opdateringsinterval (sekunder)"
 
 msgid "Cannot decrypt server reply"
-msgstr "Kan ikke afkode serversvar"
+msgstr "Kan ikke afkryptere serversvar"
 
 #, c-format
 msgid "Failed requesting token, 0x%02X"
-msgstr "Fejl ved forespørgelse efter symbol, 0x%02X"
+msgstr "Fejl ved forespørgsel efter nøgle, 0x%02X"
 
 #, c-format
 msgid "Invalid token len, %d"
-msgstr "Ugyldigt symbollængde, %d"
+msgstr "Ugyldig nøglelængde, %d"
 
 #. extend redirect used in QQ2006
 msgid "Redirect_EX is not currently supported"
@@ -7600,14 +7068,14 @@
 #. need activation
 #. need activation
 msgid "Activation required"
-msgstr "Registrering krævet"
+msgstr "Aktivering krævet"
 
 #, c-format
 msgid "Unknown reply code when logging in (0x%02X)"
 msgstr "Ukendt svarkode ved indlogning i (0x%02X)"
 
 msgid "Could not decrypt server reply"
-msgstr "Kunne ikke afkode serversvar"
+msgstr "Kunne ikke afkryptere serversvar"
 
 msgid "Requesting captcha"
 msgstr "Anmoder om captcha"
@@ -7625,7 +7093,7 @@
 msgstr "Indtast kode"
 
 msgid "QQ Captcha Verification"
-msgstr "QQ Captcha-efterprøvning"
+msgstr "QQ Captcha-godkendelse"
 
 msgid "Enter the text from the image"
 msgstr "Indtast teksten fra billedet"
@@ -7659,10 +7127,10 @@
 msgstr "Forbindelse mistet"
 
 msgid "Getting server"
-msgstr "Henter server"
+msgstr "Finder server"
 
 msgid "Requesting token"
-msgstr "Anmoder om symbol"
+msgstr "Anmoder om nøgle"
 
 msgid "Couldn't resolve host"
 msgstr "Kunne ikke slå vært op"
@@ -7683,7 +7151,7 @@
 "%s\n"
 "%s"
 msgstr ""
-"Servernyt:\n"
+"Servernyheder:\n"
 "%s\n"
 "%s\n"
 "%s"
@@ -7719,7 +7187,7 @@
 msgstr "QQ Qun-kommando"
 
 msgid "Could not decrypt login reply"
-msgstr "Kan ikke dekryptere logindsvar"
+msgstr "Kan ikke afkryptere logindsvar"
 
 msgid "Unknown LOGIN CMD"
 msgstr "Ukendt LOGIN CMD"
@@ -7784,13 +7252,11 @@
 msgstr "Login godkendt"
 
 msgid "Starting Services"
-msgstr "Starter services"
-
-#, c-format
-msgid ""
-"A Sametime administrator has issued the following announcement on server %s"
-msgstr ""
-"En Sametime administrator har sendt den følgende annoncering på server %s"
+msgstr "Starter tjenester"
+
+#, c-format
+msgid "A Sametime administrator has issued the following announcement on server %s"
+msgstr "En Sametime administrator har sendt den følgende annoncering på server %s"
 
 msgid "Sametime Administrator Announcement"
 msgstr "Sametime administrator annoncering"
@@ -7811,7 +7277,7 @@
 msgstr "Annoncering fra %s"
 
 msgid "Conference Closed"
-msgstr "Konference lukket"
+msgstr "Konference afsluttet"
 
 msgid "Unable to send message: "
 msgstr "Kunne ikke sende besked: "
@@ -7838,12 +7304,8 @@
 msgstr "Opret konference med bruger"
 
 #, c-format
-msgid ""
-"Please enter a topic for the new conference, and an invitation message to be "
-"sent to %s"
-msgstr ""
-"Indtast et emne for den nye konference, og en invitationsbesked der skal "
-"sendes til %s"
+msgid "Please enter a topic for the new conference, and an invitation message to be sent to %s"
+msgstr "Indtast et emne for den nye konference, og en invitationsbesked der skal sendes til %s"
 
 msgid "New Conference"
 msgstr "Ny konference"
@@ -7861,14 +7323,8 @@
 msgstr "Invitér bruger til en konference"
 
 #, c-format
-msgid ""
-"Select a conference from the list below to send an invite to user %s. Select "
-"\"Create New Conference\" if you'd like to create a new conference to invite "
-"this user to."
-msgstr ""
-"Vælg en konference fra listen forneden for at sende en invitation til bruger "
-"%s. Vælg \"Opret ny konference\" hvis du vil oprette en ny konference at "
-"invitere denne bruger til."
+msgid "Select a conference from the list below to send an invite to user %s. Select \"Create New Conference\" if you'd like to create a new conference to invite this user to."
+msgstr "Vælg en konference fra listen forneden for at sende en invitation til bruger %s. Vælg \"Opret ny konference\" hvis du vil oprette en ny konference at invitere denne bruger til."
 
 msgid "Invite to Conference"
 msgstr "Invitér til konference"
@@ -7886,12 +7342,8 @@
 msgstr "Ingen Sametime community server angivet"
 
 #, c-format
-msgid ""
-"No host or IP address has been configured for the Meanwhile account %s. "
-"Please enter one below to continue logging in."
-msgstr ""
-"Ingen vært eller IP-adresse er blevet sat op for Meanwhile-kontoen %s. "
-"Indtast en forneden for at fortsætte med at logge ind."
+msgid "No host or IP address has been configured for the Meanwhile account %s. Please enter one below to continue logging in."
+msgstr "Ingen vært eller IP-adresse er blevet sat op for Meanwhile-kontoen %s. Indtast en forneden for at fortsætte med at logge ind."
 
 msgid "Meanwhile Connection Setup"
 msgstr "Meanwhile forbindelsesopsætning"
@@ -7913,19 +7365,14 @@
 msgstr "Brugernavn"
 
 msgid "Sametime ID"
-msgstr "Sametime ID"
+msgstr "Sametime-id"
 
 msgid "An ambiguous user ID was entered"
-msgstr "Et ugyldigt bruger ID blev indtastet"
-
-#, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following users. Please "
-"select the correct user from the list below to add them to your buddy list."
-msgstr ""
-"Identificeringen '%s' kan henvise til hvilken som helst af de følgende "
-"brugere. Vælg den korrekte bruger fra listen forneden for at tilføje dem til "
-"din venneliste."
+msgstr "Et ugyldigt bruger id blev indtastet"
+
+#, c-format
+msgid "The identifier '%s' may possibly refer to any of the following users. Please select the correct user from the list below to add them to your buddy list."
+msgstr "Identificeringen '%s' kan henvise til hvilken som helst af de følgende brugere. Vælg den korrekte bruger fra listen forneden for at tilføje dem til din venneliste."
 
 msgid "Select User"
 msgstr "Vælg bruger"
@@ -7934,12 +7381,8 @@
 msgstr "Kunne ikke tilføje bruger: bruger ikke fundet"
 
 #, c-format
-msgid ""
-"The identifier '%s' did not match any users in your Sametime community. This "
-"entry has been removed from your buddy list."
-msgstr ""
-"Identificeringen '%s' matchede ikke nogle brugere i dit Sametime fællesskab. "
-"Denne post er blevet fjernet fra din venneliste."
+msgid "The identifier '%s' did not match any users in your Sametime community. This entry has been removed from your buddy list."
+msgstr "Identificeringen '%s' matchede ikke nogle brugere i dit Sametime fællesskab. Denne post er blevet fjernet fra din venneliste."
 
 #, c-format
 msgid ""
@@ -7992,14 +7435,8 @@
 msgstr "Notes adressebog grupperesultater"
 
 #, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following Notes Address "
-"Book groups. Please select the correct group from the list below to add it "
-"to your buddy list."
-msgstr ""
-"Identificeringen '%s' kan henvise til hvilken som helst af de følgende Notes "
-"adressebogsgrupper. Vælg den korrekte gruppe fra listen forneden for at "
-"tilføje den til din venneliste."
+msgid "The identifier '%s' may possibly refer to any of the following Notes Address Book groups. Please select the correct group from the list below to add it to your buddy list."
+msgstr "Identificeringen '%s' kan henvise til hvilken som helst af de følgende Notes adressebogsgrupper. Vælg den korrekte gruppe fra listen forneden for at tilføje den til din venneliste."
 
 msgid "Select Notes Address Book"
 msgstr "Vælg Notes adressebog"
@@ -8008,36 +7445,22 @@
 msgstr "Kunne ikke tilføje gruppe: gruppe ikke fundet"
 
 #, c-format
-msgid ""
-"The identifier '%s' did not match any Notes Address Book groups in your "
-"Sametime community."
-msgstr ""
-"Identificeringen '%s' matchede ikke nogle Notes adressebogsgrupper i dit "
-"Sametime fællesskab."
+msgid "The identifier '%s' did not match any Notes Address Book groups in your Sametime community."
+msgstr "Identificeringen '%s' matchede ikke nogle Notes adressebogsgrupper i dit Sametime fællesskab."
 
 msgid "Notes Address Book Group"
 msgstr "Notes adressebogsgruppe"
 
-msgid ""
-"Enter the name of a Notes Address Book group in the field below to add the "
-"group and its members to your buddy list."
-msgstr ""
-"Indtast navnet på en Notes adressebogsgruppe i feltet forneden for at "
-"tilføje gruppen og dens medlemmer til din venneliste."
+msgid "Enter the name of a Notes Address Book group in the field below to add the group and its members to your buddy list."
+msgstr "Indtast navnet på en Notes adressebogsgruppe i feltet forneden for at tilføje gruppen og dens medlemmer til din venneliste."
 
 #, c-format
 msgid "Search results for '%s'"
 msgstr "Søgeresultater for '%s'"
 
 #, c-format
-msgid ""
-"The identifier '%s' may possibly refer to any of the following users. You "
-"may add these users to your buddy list or send them messages with the action "
-"buttons below."
-msgstr ""
-"Identificeringen '%s' kan muligvis henvise til hvilken som helst af de "
-"følgende brugere. Du kan tilføje disse brugere til din venneliste eller "
-"sende dem beskeder med handlingsknapperne forneden."
+msgid "The identifier '%s' may possibly refer to any of the following users. You may add these users to your buddy list or send them messages with the action buttons below."
+msgstr "Identificeringen '%s' kan muligvis henvise til hvilken som helst af de følgende brugere. Du kan tilføje disse brugere til din venneliste eller sende dem beskeder med handlingsknapperne forneden."
 
 msgid "Search Results"
 msgstr "Søgeresultater"
@@ -8047,8 +7470,7 @@
 
 #, c-format
 msgid "The identifier '%s' did not match any users in your Sametime community."
-msgstr ""
-"Identificeringen '%s' matchede ingen brugere i dit Sametime fællesskab."
+msgstr "Identificeringen '%s' matchede ingen brugere i dit Sametime fællesskab."
 
 msgid "No Matches"
 msgstr "Ingen fundne"
@@ -8056,12 +7478,8 @@
 msgid "Search for a user"
 msgstr "Søg efter en bruger"
 
-msgid ""
-"Enter a name or partial ID in the field below to search for matching users "
-"in your Sametime community."
-msgstr ""
-"Indtast et navn eller delvist ID i feltet forneden for at søge efter "
-"matchende brugere i dit Sametime fællesskab."
+msgid "Enter a name or partial ID in the field below to search for matching users in your Sametime community."
+msgstr "Indtast et navn eller delvist id i feltet forneden for at søge efter matchende brugere i dit Sametime fællesskab."
 
 msgid "User Search"
 msgstr "Brugersøgning"
@@ -8117,9 +7535,7 @@
 msgstr "Brugeren er ikke til stede i netværket længere"
 
 #, c-format
-msgid ""
-"Key agreement request received from %s. Would you like to perform the key "
-"agreement?"
+msgid "Key agreement request received from %s. Would you like to perform the key agreement?"
 msgstr "Anmodning om nøgle enighed modtaget %s. Vil du udføre nøgle enigheden?"
 
 #, c-format
@@ -8166,13 +7582,8 @@
 msgid "The %s buddy is not trusted"
 msgstr "Vennen %s er ikke betroet"
 
-msgid ""
-"You cannot receive buddy notifications until you import his/her public key.  "
-"You can use the Get Public Key command to get the public key."
-msgstr ""
-"Du kan ikke modtage venne-påmindelser før du importerer hans/hendes "
-"offentlige nøgle. Du kan bruge \"Hent offentlig nøgle\" kommandoen for at "
-"hente den offentlige nøgle."
+msgid "You cannot receive buddy notifications until you import his/her public key.  You can use the Get Public Key command to get the public key."
+msgstr "Du kan ikke modtage venne-påmindelser før du importerer hans/hendes offentlige nøgle. Du kan bruge \"Hent offentlig nøgle\" kommandoen for at hente den offentlige nøgle."
 
 #. Open file selector to select the public key.
 msgid "Open..."
@@ -8182,12 +7593,8 @@
 msgid "The %s buddy is not present in the network"
 msgstr "%s vennen er ikke til stede på netværket"
 
-msgid ""
-"To add the buddy you must import his/her public key. Press Import to import "
-"a public key."
-msgstr ""
-"For at tilføje en ven, skal du importere hendes/hans offentlige nøgle. Tryk "
-"Importér for at importere en offentlig nøgle."
+msgid "To add the buddy you must import his/her public key. Press Import to import a public key."
+msgstr "For at tilføje vennen, skal du importere hendes/hans offentlige nøgle. Tryk Importér for at importere en offentlig nøgle."
 
 msgid "_Import..."
 msgstr "_Importér..."
@@ -8195,19 +7602,11 @@
 msgid "Select correct user"
 msgstr "Vælg en korrekt bruger"
 
-msgid ""
-"More than one user was found with the same public key. Select the correct "
-"user from the list to add to the buddy list."
-msgstr ""
-"Mere end én bruger blev fundet med den samme offentlige nøgle. Vælg den "
-"korrekte bruger fra listen som du vil tilføje til din venneliste."
-
-msgid ""
-"More than one user was found with the same name. Select the correct user "
-"from the list to add to the buddy list."
-msgstr ""
-"Mere end én bruger blev fundet med det samme navn. Vælg den korrekte bruger "
-"fra listen, som du vil tilføje til din venneliste."
+msgid "More than one user was found with the same public key. Select the correct user from the list to add to the buddy list."
+msgstr "Mere end én bruger blev fundet med den samme offentlige nøgle. Vælg den korrekte bruger fra listen som du vil tilføje til din venneliste."
+
+msgid "More than one user was found with the same name. Select the correct user from the list to add to the buddy list."
+msgstr "Mere end én bruger blev fundet med det samme navn. Vælg den korrekte bruger fra listen, som du vil tilføje til din venneliste."
 
 msgid "Detached"
 msgstr "Ikke koblet på"
@@ -8357,18 +7756,8 @@
 msgstr "Kanalens liste med offentlige nøgler"
 
 #, c-format
-msgid ""
-"Channel authentication is used to secure the channel from unauthorized "
-"access. The authentication may be based on passphrase and digital "
-"signatures. If passphrase is set, it is required to be able to join. If "
-"channel public keys are set then only users whose public keys are listed are "
-"able to join."
-msgstr ""
-"Kanal godkendelse brugeres til at sikre kanalen fra uønsket adgang. "
-"Godkendelsen kan være baseret på en adgangssætning og digitale signaturer. "
-"Hvis adgangssætningen er sat, er den krævet for at deltage. Hvis kanalens "
-"offentlige nøgler er sat, så er det kun brugere hvis offentlige nøgler der "
-"er nævnt, som kan deltage."
+msgid "Channel authentication is used to secure the channel from unauthorized access. The authentication may be based on passphrase and digital signatures. If passphrase is set, it is required to be able to join. If channel public keys are set then only users whose public keys are listed are able to join."
+msgstr "Kanal godkendelse brugeres til at sikre kanalen fra uønsket adgang. Godkendelsen kan være baseret på en adgangssætning og digitale underskrifter. Hvis adgangssætningen er angivet, er den påkrævet for at tilslutte. Hvis kanalens offentlige nøgler er angivet, så er det kun brugere hvis offentlige nøgler der er nævnt, som kan deltage."
 
 msgid "Channel Authentication"
 msgstr "Kanal godkendelse"
@@ -8432,15 +7821,14 @@
 msgstr "Sæt hemmelig kanal"
 
 #, c-format
-msgid ""
-"You have to join the %s channel before you are able to join the private group"
-msgstr "Du skal deltage i %s kanalen før du kan deltage i den private gruppe"
+msgid "You have to join the %s channel before you are able to join the private group"
+msgstr "Du skal tilslutte %s kanalen før du kan tilslutte den private gruppe"
 
 msgid "Join Private Group"
-msgstr "Deltag i privat gruppe"
+msgstr "Tilslut privat gruppe"
 
 msgid "Cannot join private group"
-msgstr "Kan ikke deltage i privat gruppe"
+msgstr "Kan ikke tilslutte privat gruppe"
 
 msgid "Call Command"
 msgstr "Kald kommando"
@@ -8458,7 +7846,7 @@
 msgstr "Fejl under filoverførsel"
 
 msgid "Remote disconnected"
-msgstr "Fjerndel afbrudt"
+msgstr "Fjernvært afbrød"
 
 msgid "Permission denied"
 msgstr "Adgang nægtet"
@@ -8547,7 +7935,7 @@
 msgstr "Note"
 
 msgid "Join Chat"
-msgstr "Deltag i chat"
+msgstr "Tilslut samtale"
 
 #, c-format
 msgid "You are channel founder on <I>%s</I>"
@@ -8567,7 +7955,7 @@
 msgstr "Offentlig nøgle fingeraftryk"
 
 msgid "Public Key Babbleprint"
-msgstr "Offentlige nøgle \"babbleprint\""
+msgstr "Offentlig nøgle \"babbleprint\""
 
 msgid "_More..."
 msgstr "_Mere..."
@@ -8673,12 +8061,8 @@
 msgstr "Adgangssætning krævet"
 
 #, c-format
-msgid ""
-"Received %s's public key. Your local copy does not match this key. Would you "
-"still like to accept this public key?"
-msgstr ""
-"Modtog %s's offentlige nøgle. Din lokale kopi passer ikke med denne nøgle. "
-"Vil du stadig acceptere den?"
+msgid "Received %s's public key. Your local copy does not match this key. Would you still like to accept this public key?"
+msgstr "Modtog %s's offentlige nøgle. Din lokale kopi passer ikke med denne nøgle. Vil du stadig acceptere den?"
 
 #, c-format
 msgid "Received %s's public key. Would you like to accept this public key?"
@@ -8709,16 +8093,13 @@
 msgstr "Afbrudt af server"
 
 msgid "Error during connecting to SILC Server"
-msgstr "Fejl ved forbindelse til SILC server"
+msgstr "Fejl ved forbindelse til SILC-server"
 
 msgid "Key Exchange failed"
 msgstr "Nøgle udveksling fejlede"
 
-msgid ""
-"Resuming detached session failed. Press Reconnect to create new connection."
-msgstr ""
-"Genoptagelse af tidligere session fejlede. Lav en ny forbindelse ved at "
-"trykke på gentabler forbindelse."
+msgid "Resuming detached session failed. Press Reconnect to create new connection."
+msgstr "Genoptagelse af tidligere session fejlede. Lav en ny forbindelse ved at trykke på gentabler forbindelse."
 
 msgid "Connection failed"
 msgstr "Forbindelse fejlede"
@@ -8730,20 +8111,20 @@
 msgstr "Kunne ikke oprette forbindelse"
 
 msgid "Could not load SILC key pair"
-msgstr "Kunne ikke indlæse SILC nøglepar"
+msgstr "Kunne ikke indlæse SILC-nøglepar"
 
 #. Progress
 msgid "Connecting to SILC Server"
-msgstr "Tilslutter til SILC server"
+msgstr "Tilslutter til SILC-server"
 
 msgid "Out of memory"
 msgstr "Løb tør for hukommelse"
 
 msgid "Cannot initialize SILC protocol"
-msgstr "Kan ikke initialisere SILC protokol"
+msgstr "Kan ikke initialisere SILC-protokol"
 
 msgid "Error loading SILC key pair"
-msgstr "Fejl ved indlæsning af SILC nøglepar"
+msgstr "Fejl ved indlæsning af SILC-nøglepar"
 
 #, c-format
 msgid "Download %s: %s"
@@ -8794,16 +8175,10 @@
 msgstr "Tidszone (UTC)"
 
 msgid "User Online Status Attributes"
-msgstr "Online bruger status-attributter"
-
-msgid ""
-"You can let other users see your online status information and your personal "
-"information. Please fill the information you would like other users to see "
-"about yourself."
-msgstr ""
-"Du kan lade andre brugere se dine online status oplysninger og dine "
-"personlige oplysninger. Udfyld de oplysninger, du gerne vil have at folk kan "
-"se om dig."
+msgstr "Status-attributter for tilkoblet bruger"
+
+msgid "You can let other users see your online status information and your personal information. Please fill the information you would like other users to see about yourself."
+msgstr "Du kan lade andre brugere se dine tilkoblede statusoplysninger og dine personlige oplysninger. Udfyld de oplysninger, du gerne vil have at folk kan se om dig."
 
 msgid "Message of the Day"
 msgstr "Dagens besked (MOTD)"
@@ -8812,10 +8187,10 @@
 msgstr "Ingen MOTD tilgængelig"
 
 msgid "There is no Message of the Day associated with this connection"
-msgstr "Der er ingen MOTD associeret med denne forbindelse"
+msgstr "Der er ingen MOTD tilknyttet denne forbindelse"
 
 msgid "Create New SILC Key Pair"
-msgstr "Opret nyt SILC nøglepar"
+msgstr "Opret nyt SILC-nøglepar"
 
 msgid "Passphrases do not match"
 msgstr "Adgangskoder passer ikke"
@@ -8839,13 +8214,13 @@
 msgstr "Generér nøglepar"
 
 msgid "Online Status"
-msgstr "Online status"
+msgstr "Tilkoblet status"
 
 msgid "View Message of the Day"
 msgstr "Vis dagens besked (MOTD)"
 
 msgid "Create SILC Key Pair..."
-msgstr "Opret SILC nøglepar..."
+msgstr "Opret SILC-nøglepar..."
 
 #, c-format
 msgid "User <I>%s</I> is not present in the network"
@@ -8878,107 +8253,88 @@
 msgstr "Ukendt kommando: %s, (måske er det en klientfejl)"
 
 msgid "part [channel]:  Leave the chat"
-msgstr "part [kanal]: Forlad chatten"
+msgstr "part [kanal]:  Forlad samtalen"
 
 msgid "leave [channel]:  Leave the chat"
-msgstr "leave [kanal]: Forlad chatten"
+msgstr "leave [kanal]:  Forlad samtalen"
 
 msgid "topic [&lt;new topic&gt;]:  View or change the topic"
-msgstr "topic [&lt;nyt emne&gt;]: Vis eller skift emnet"
+msgstr "topic [&lt;nyt emne&gt;]:  Vis eller ændr emnet"
 
 msgid "join &lt;channel&gt; [&lt;password&gt;]:  Join a chat on this network"
-msgstr ""
-"join &lt;kanal&gt; [&lt;adgangskode&gt;]: Deltag i chat på dette netværk"
+msgstr "join &lt;kanal&gt; [&lt;adgangskode&gt;]:  Tilslut samtale på dette netværk"
 
 msgid "list:  List channels on this network"
-msgstr "list: Vis kanaler på dette netværk"
+msgstr "list:  Vis kanaler på dette netværk"
 
 msgid "whois &lt;nick&gt;:  View nick's information"
-msgstr "whois &lt;navn&gt;: Vis brugerens oplysninger"
+msgstr "whois &lt;navn&gt;:  Vis brugerens oplysninger"
 
 msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user"
-msgstr "msg &lt;navn&gt; &lt;besked&gt;: Send en privat besked til en bruger"
+msgstr "msg &lt;navn&gt; &lt;besked&gt;:  Send en privat besked til en bruger"
 
 msgid "query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
-msgstr ""
-"query &lt;navn&gt; [&lt;besked&gt;]: Send en privat besked til en bruger"
+msgstr "query &lt;navn&gt; [&lt;besked&gt;]:  Send en privat besked til en bruger"
 
 msgid "motd:  View the server's Message Of The Day"
-msgstr "motd: Vis dagens besked (MOTD)"
+msgstr "motd:  Vis dagens besked (MOTD)"
 
 msgid "detach:  Detach this session"
 msgstr "detach:  Gå væk fra denne session"
 
 msgid "quit [message]:  Disconnect from the server, with an optional message"
-msgstr "quit [besked]: Luk forbindelse til server, med en eventuel besked"
+msgstr "quit [besked]:  Luk forbindelse til server, med en eventuel besked"
 
 msgid "call &lt;command&gt;:  Call any silc client command"
-msgstr "call &lt;kommando&gt;:  Kald en vilkårlig silc klient kommando"
+msgstr "call &lt;kommando&gt;:  Kald en vilkårlig silc-klient kommando"
 
 msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]:  Kill nick"
-msgstr "kill &lt;kælenavn&gt; [-pubkey|&lt;begrundelse&gt;]: Dræb kælenavn"
+msgstr "kill &lt;kælenavn&gt; [-pubkey|&lt;begrundelse&gt;]:  Dræb kælenavn"
 
 msgid "nick &lt;newnick&gt;:  Change your nickname"
-msgstr "nick &lt;nyt navn&gt;: Skift dit navn"
+msgstr "nick &lt;nyt navn&gt;:  Ændr dit kælenavn"
 
 msgid "whowas &lt;nick&gt;:  View nick's information"
-msgstr "whowas &lt;navn&gt;: Vis brugerens oplysninger"
-
-msgid ""
-"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display "
-"channel modes"
-msgstr ""
-"cmode &lt;kanal&gt; [+|-&lt;tilstande&gt;] [argumenter]: Sæt eller fjern en "
-"kanal tilstand"
-
-msgid ""
-"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes "
-"on channel"
-msgstr ""
-"cumode &lt;kanal&gt; +|-&lt;tilstande&gt; &lt;navn&gt;: Sæt brugerens "
-"tilstande på kanal"
+msgstr "whowas &lt;navn&gt;:  Vis brugerens oplysninger"
+
+msgid "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display channel modes"
+msgstr "cmode &lt;kanal&gt; [+|-&lt;tilstande&gt;] [argumenter]:  Ændre eller vis kanaltilstande"
+
+msgid "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes on channel"
+msgstr "cumode &lt;kanal&gt; +|-&lt;tilstande&gt; &lt;navn&gt;:  Ændre brugerens tilstande på kanal"
 
 msgid "umode &lt;usermodes&gt;:  Set your modes in the network"
-msgstr "umode &lt;brugertilstande&gt;: Sæt dine tilstande på netværket"
+msgstr "umode &lt;brugertilstande&gt;:  Angiv dine tilstande på netværket"
 
 msgid "oper &lt;nick&gt; [-pubkey]:  Get server operator privileges"
 msgstr "oper &lt;navn&gt; [-pubkey]:  Få server operatør privilegier"
 
-msgid ""
-"invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from "
-"channel invite list"
-msgstr ""
-"invite &lt;kanal&gt; [-|+]&lt;navn&gt;:  invitér navn eller tilføj/fjern fra "
-"kanal invitationsliste"
+msgid "invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from channel invite list"
+msgstr "invite &lt;kanal&gt; [-|+]&lt;navn&gt;:  invitér navn eller tilføj/fjern fra kanal invitationsliste"
 
 msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]:  Kick client from channel"
 msgstr "kick &lt;kanal&gt; &lt;navn&gt; [comment]:  Spark klient fra kanal"
 
 msgid "info [server]:  View server administrative details"
-msgstr "info [server]: Vis serverens administrative detaljer"
+msgstr "info [server]:  Vis serverens administrative detaljer"
 
 msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]:  Ban client from channel"
 msgstr "ban [&lt;kanal&gt; +|-&lt;navn&gt;]:  Udvis klient fra kanal"
 
 msgid "getkey &lt;nick|server&gt;:  Retrieve client's or server's public key"
-msgstr ""
-"getkey &lt;navn|server&gt;:  Hent klient eller servers offentlige nøgle"
+msgstr "getkey &lt;navn|server&gt;:  Hent klientens eller serverens offentlige nøgle"
 
 msgid "stats:  View server and network statistics"
-msgstr "stats: Vis server- og netværksstatistik"
+msgstr "stats:  Vis server- og netværksstatistik"
 
 msgid "ping:  Send PING to the connected server"
-msgstr "ping: Send PING til den forbundne server"
+msgstr "ping:  Send PING til den forbundne server"
 
 msgid "users &lt;channel&gt;:  List users in channel"
-msgstr "users &lt;kanal&gt;:  Vis brugere på kanalen lige nu"
-
-msgid ""
-"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List "
-"specific users in channel(s)"
-msgstr ""
-"names [-count|-ops|-halfops|-voices|-normal] &lt;kanal(er)&gt;:  Vis angivne "
-"brugere på kanal(er)"
+msgstr "users &lt;kanal&gt;:  Vis brugere på kanalen"
+
+msgid "names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List specific users in channel(s)"
+msgstr "names [-count|-ops|-halfops|-voices|-normal] &lt;kanal(er)&gt;:  Vis angivne brugere på kanal(er)"
 
 #. *< type
 #. *< ui_requirement
@@ -8990,11 +8346,11 @@
 #. *< version
 #. *  summary
 msgid "SILC Protocol Plugin"
-msgstr "SILC prokotolmodul"
+msgstr "SILC-prokotolmodul"
 
 #. *  description
 msgid "Secure Internet Live Conferencing (SILC) Protocol"
-msgstr "Secure Internet Live Conferencing (SILC) protokol"
+msgstr "Secure Internet Live Conferencing (SILC)-protokol"
 
 msgid "Network"
 msgstr "Netværk"
@@ -9018,7 +8374,7 @@
 msgstr "Offentlig nøgle godkendelse"
 
 msgid "Block IMs without Key Exchange"
-msgstr "Blokér kvikbeskeder uden nøgleudveksling"
+msgstr "Blokér beskeder uden nøgleudveksling"
 
 msgid "Block messages to whiteboard"
 msgstr "Blokér beskeder til tavle"
@@ -9027,13 +8383,13 @@
 msgstr "Åbn automatisk tavle"
 
 msgid "Digitally sign and verify all messages"
-msgstr "Skriv alle beskeder under med digital signatur og godkend dem"
+msgstr "Skriv alle beskeder under med digital underskrift og godkend dem"
 
 msgid "Creating SILC key pair..."
-msgstr "Opretter SILC nøglepar..."
+msgstr "Opretter SILC-nøglepar..."
 
 msgid "Cannot create SILC key pair\n"
-msgstr "Kan ikke oprette SILC nøglepar\n"
+msgstr "Kan ikke oprette SILC-nøglepar\n"
 
 #. Hint for translators: Please check the tabulator width here and in
 #. the next strings (short strings: 2 tabs, longer strings 1 tab,
@@ -9048,7 +8404,7 @@
 
 #, c-format
 msgid "Email: \t\t%s\n"
-msgstr "Email: \t\t%s\n"
+msgstr "E-post: \t\t%s\n"
 
 #, c-format
 msgid "Host Name: \t%s\n"
@@ -9115,9 +8471,7 @@
 msgstr "%s sendte besked til tavle. Vil du åbne tavlen?"
 
 #, c-format
-msgid ""
-"%s sent message to whiteboard on %s channel. Would you like to open the "
-"whiteboard?"
+msgid "%s sent message to whiteboard on %s channel. Would you like to open the whiteboard?"
 msgstr "%s sendte besked til tavle på kanalen %s. Vil du åbne tavlen?"
 
 msgid "Whiteboard"
@@ -9156,7 +8510,7 @@
 
 #, c-format
 msgid "Failure: Incorrect signature"
-msgstr "Fejl: Ugyldig signatur"
+msgstr "Fejl: Ugyldig underskrift"
 
 #, c-format
 msgid "Failure: Invalid cookie"
@@ -9167,14 +8521,14 @@
 msgstr "Fejl: Godkendelse fejlede"
 
 msgid "Cannot initialize SILC Client connection"
-msgstr "Kan ikke initialisere SILC klient forbindelse"
+msgstr "Kan ikke initialisere SILC-klient forbindelse"
 
 msgid "John Noname"
 msgstr "Intet navn"
 
 #, c-format
 msgid "Could not load SILC key pair: %s"
-msgstr "Kunne ikke indlæse SILC nøglepar: %s"
+msgstr "Kunne ikke indlæse SILC-nøglepar: %s"
 
 msgid "Could not write"
 msgstr "Kunne ikke skrive"
@@ -9219,10 +8573,10 @@
 msgstr "Brug UDP"
 
 msgid "Use proxy"
-msgstr "Brug mellemvært"
+msgstr "Brug proxy"
 
 msgid "Proxy"
-msgstr "Mellemvært"
+msgstr "Proxy"
 
 msgid "Auth User"
 msgstr "Autentificering bruger"
@@ -9268,7 +8622,7 @@
 
 #, c-format
 msgid "Chat in %s is not available."
-msgstr "Chat i %s er ikke muligt."
+msgstr "Samtale i %s er ikke muligt."
 
 #, c-format
 msgid "You are sending messages too fast to %s."
@@ -9280,8 +8634,7 @@
 
 #, c-format
 msgid "You missed an IM from %s because it was sent too fast."
-msgstr ""
-"Du har ikke modtaget en besked fra %s, fordi den blev sendt for hurtigt."
+msgstr "Du har ikke modtaget en besked fra %s, fordi den blev sendt for hurtigt."
 
 #, c-format
 msgid "Failure."
@@ -9301,7 +8654,7 @@
 
 #, c-format
 msgid "Email lookup restricted."
-msgstr "Email søgning er begrænset."
+msgstr "E-post søgning er begrænset."
 
 #, c-format
 msgid "Keyword ignored."
@@ -9336,12 +8689,8 @@
 msgstr "Du har for mange advarsler i øjeblikket til at kunne logge ind."
 
 #, c-format
-msgid ""
-"You have been connecting and disconnecting too frequently.  Wait ten minutes "
-"and try again.  If you continue to try, you will need to wait even longer."
-msgstr ""
-"Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti "
-"minutter og prøv så igen, for ellers skal du bare vente endnu længere."
+msgid "You have been connecting and disconnecting too frequently.  Wait ten minutes and try again.  If you continue to try, you will need to wait even longer."
+msgstr "Du er logget ind og ud for mange gange indenfor et kort tidsrum. Vent ti minutter og prøv så igen, for ellers skal du bare vente endnu længere."
 
 #, c-format
 msgid "An unknown signon error has occurred: %s."
@@ -9364,7 +8713,7 @@
 msgstr "TOC er blevet tilgængelig. Du kan nu sende beskeder igen."
 
 msgid "Password Change Successful"
-msgstr "Adgangskode skiftet"
+msgstr "Adgangskode ændret"
 
 msgid "_Group:"
 msgstr "_Gruppe:"
@@ -9426,53 +8775,38 @@
 msgstr "Yahoo! systembesked til %s:"
 
 #, c-format
-msgid ""
-"%s has (retroactively) denied your request to add them to your list for the "
-"following reason: %s."
-msgstr ""
-"%s har nægtet din anmodning om at tilføje dem til din venneliste af følgende "
-"grund:\n"
+msgid "%s has (retroactively) denied your request to add them to your list for the following reason: %s."
+msgstr ""
+"%s har (tilbagevirkende) nægtet din anmodning om at tilføje dem til din venneliste af følgende grund:\n"
 "%s."
 
 #, c-format
 msgid "%s has (retroactively) denied your request to add them to your list."
-msgstr "%s har nægtet din anmodning om at tilføje dem til din venneliste."
+msgstr "%s har (tilbagevirkende) nægtet din anmodning om at tilføje dem til din venneliste."
 
 msgid "Add buddy rejected"
 msgstr "Vennetilføjelse nægtet"
 
 #, c-format
-msgid ""
-"The Yahoo server has requested the use of an unrecognized authentication "
-"method.  You will probably not be able to successfully sign on to Yahoo.  "
-"Check %s for updates."
-msgstr ""
-"Yahoo-serveren har anmodet om brugen af en ukendt godkendelsesmetode.  Du "
-"vil højst sandsynligt ikke kunne logge problemfrit på Yahoo.  Kontrollér %s "
-"for opdateringer."
+msgid "The Yahoo server has requested the use of an unrecognized authentication method.  You will probably not be able to successfully sign on to Yahoo.  Check %s for updates."
+msgstr "Yahoo-serveren har anmodet om brugen af en ukendt godkendelsesmetode.  Du vil højst sandsynligt ikke kunne logge problemfrit på Yahoo.  Kontrollér %s for opdateringer."
 
 msgid "Failed Yahoo! Authentication"
 msgstr "Fejlede Yahoo! godkendelse"
 
 #, c-format
-msgid ""
-"You have tried to ignore %s, but the user is on your buddy list.  Clicking "
-"\"Yes\" will remove and ignore the buddy."
-msgstr ""
-"Du har prøvet at ignorere %s, men brugeren er på din venneliste. Hvis du "
-"klikker på \"Ja\" vil det fjerne og ignorere vennen."
+msgid "You have tried to ignore %s, but the user is on your buddy list.  Clicking \"Yes\" will remove and ignore the buddy."
+msgstr "Du har prøvet at ignorere %s, men brugeren er på din venneliste. Hvis du klikker på \"Ja\" vil det fjerne og ignorere vennen."
 
 msgid "Ignore buddy?"
 msgstr "Ignorér ven?"
 
 msgid "Your account is locked, please log in to the Yahoo! website."
-msgstr "Din konto er låst. Log ind på Yahoo! websitet."
+msgstr "Din konto er låst. Log ind på Yahoo!-webstedet."
 
 #, c-format
 msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
-msgstr ""
-"Ukendt fejl nummer %d. Prøv at logge ind på Yahoo! websitet for at fixe "
-"dette."
+msgstr "Ukendt fejl nummer %d. Prøv at logge ind på Yahoo!webstedet for at fixe dette."
 
 #, c-format
 msgid "Could not add buddy %s to group %s to the server list on account %s."
@@ -9496,7 +8830,7 @@
 "Lost connection with %s:\n"
 "%s"
 msgstr ""
-"Mistede forbindelsen %s:\n"
+"Mistede forbindelsen til %s:\n"
 "%s"
 
 #, c-format
@@ -9526,22 +8860,22 @@
 msgstr "Ikke på server liste"
 
 msgid "Appear Online"
-msgstr "Virk offline"
+msgstr "Virk tilkoblet"
 
 msgid "Appear Permanently Offline"
-msgstr "Virk permanent offline"
+msgstr "Virk permanent afkoblet"
 
 msgid "Presence"
 msgstr "Tilstedeværelse"
 
 msgid "Appear Offline"
-msgstr "Virk offline"
+msgstr "Virk afkoblet"
 
 msgid "Don't Appear Permanently Offline"
-msgstr "Virk ikke permanent offline"
+msgstr "Virk ikke permanent afkoblet"
 
 msgid "Join in Chat"
-msgstr "Deltag i chat"
+msgstr "Tilslut samtale"
 
 msgid "Initiate Conference"
 msgstr "Start konference"
@@ -9553,22 +8887,22 @@
 msgstr "Start med at \"Doodle\""
 
 msgid "Activate which ID?"
-msgstr "Aktivér hvilket ID?"
+msgstr "Aktivér hvilket id?"
 
 msgid "Join whom in chat?"
-msgstr "Deltag med hvem i chat?"
+msgstr "Tilslut hvem i samtale?"
 
 msgid "Activate ID..."
-msgstr "Aktivér ID..."
+msgstr "Aktivér id..."
 
 msgid "Join User in Chat..."
-msgstr "Deltag med bruger i chat..."
+msgstr "Tilslut bruger i samtale..."
 
 msgid "Open Inbox"
 msgstr "Åbn indbakke"
 
 msgid "join &lt;room&gt;:  Join a chat room on the Yahoo network"
-msgstr "join &lt;rum&gt;:  Deltag i chatrum på Yahoo-netværket"
+msgstr "join &lt;rum&gt;:  Tilslut samtalerum på Yahoo-netværket"
 
 msgid "list: List rooms on the Yahoo network"
 msgstr "list: Vis rum på Yahoo-netværket"
@@ -9577,7 +8911,7 @@
 msgstr "doodle: Anmod en bruger om at starte en \"Doodle\"-session"
 
 msgid "Yahoo ID..."
-msgstr "Yahoo ID..."
+msgstr "Yahoo-id..."
 
 #. *< type
 #. *< ui_requirement
@@ -9614,19 +8948,19 @@
 msgstr "Filoverførsel port"
 
 msgid "Chat room locale"
-msgstr "Chatrum tegnsæt"
+msgstr "Samtalerum tegnsæt"
 
 msgid "Ignore conference and chatroom invitations"
-msgstr "Ignorér konference og chatrum invitationer"
+msgstr "Ignorér konference og samtalerum invitationer"
 
 msgid "Chat room list URL"
-msgstr "Chatrumsliste adresse"
+msgstr "Adresse på liste over samtalerum"
 
 msgid "Yahoo Chat server"
-msgstr "Yahoo Chat-server"
+msgstr "Yahoo-samtaleserver"
 
 msgid "Yahoo Chat port"
-msgstr "Yahoo chat-port"
+msgstr "Yahoo-samtaleport"
 
 #. Write a local message to this conversation showing that a request for a
 #. * Doodle session has been made
@@ -9647,17 +8981,11 @@
 msgid "Yahoo! Profile"
 msgstr "Yahoo! profil"
 
-msgid ""
-"Sorry, profiles marked as containing adult content are not supported at this "
-"time."
-msgstr ""
-"Desværre, profiler der er markeret som indeholdende indhold der ikke er for "
-"børn, er ikke understøttet."
-
-msgid ""
-"If you wish to view this profile, you will need to visit this link in your "
-"web browser:"
-msgstr "Vis du vil se denne profil, skal du besøge dette link i din netlæser:"
+msgid "Sorry, profiles marked as containing adult content are not supported at this time."
+msgstr "Desværre, profiler der er markeret som indeholdende indhold der ikke er for børn, er ikke understøttet."
+
+msgid "If you wish to view this profile, you will need to visit this link in your web browser:"
+msgstr "Vis du vil se denne profil, skal du besøge denne henvisning i din netlæser:"
 
 msgid "Yahoo! ID"
 msgstr "Yahoo! ID"
@@ -9672,53 +9000,38 @@
 msgstr "Hjemmeside"
 
 msgid "Cool Link 1"
-msgstr "Sejt link 1"
+msgstr "Sej henvisning 1"
 
 msgid "Cool Link 2"
-msgstr "Sejt link 2"
+msgstr "Sej henvisning 2"
 
 msgid "Cool Link 3"
-msgstr "Sejt link 3"
+msgstr "Sej henvisning 3"
 
 msgid "Last Update"
 msgstr "Sidst opdateret"
 
-msgid ""
-"This profile is in a language or format that is not supported at this time."
-msgstr ""
-"Denne profil er i et sprog eller format som ikke er understøttet på "
-"nuværende tidspunkt."
-
-msgid ""
-"Could not retrieve the user's profile. This most likely is a temporary "
-"server-side problem. Please try again later."
-msgstr ""
-"Kunne ikke modtage brugerens profil. Dette er højst sandsynligt et "
-"midlertidigt server problem. Prøv igen senere."
-
-msgid ""
-"Could not retrieve the user's profile. This most likely means that the user "
-"does not exist; however, Yahoo! sometimes does fail to find a user's "
-"profile. If you know that the user exists, please try again later."
-msgstr ""
-"Kunne ikke modtage brugerens profil. Dette betyder højst sandsynligt at "
-"brugeren ikke eksisterer; men Yahoo! tager nogen gange fejl og kan ikke "
-"finde en brugers profil. Hvis du ved at brugeren eksisterer, så prøv igen "
-"senere."
+msgid "This profile is in a language or format that is not supported at this time."
+msgstr "Denne profil er i et sprog eller format som ikke er understøttet på nuværende tidspunkt."
+
+msgid "Could not retrieve the user's profile. This most likely is a temporary server-side problem. Please try again later."
+msgstr "Kunne ikke modtage brugerens profil. Dette er højst sandsynligt et midlertidigt server problem. Prøv igen senere."
+
+msgid "Could not retrieve the user's profile. This most likely means that the user does not exist; however, Yahoo! sometimes does fail to find a user's profile. If you know that the user exists, please try again later."
+msgstr "Kunne ikke modtage brugerens profil. Dette betyder højst sandsynligt at brugeren ikke eksisterer; men Yahoo! tager nogen gange fejl og kan ikke finde en brugers profil. Hvis du ved at brugeren eksisterer, så prøv igen senere."
 
 msgid "The user's profile is empty."
 msgstr "Brugerens profil er tom."
 
 #, c-format
 msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
-msgstr ""
-"%s sagde nej til din konference-invitiation til rum \"%s\" pga. \"%s\"."
+msgstr "%s sagde nej til din konference-invitiation til rum \"%s\" pga. \"%s\"."
 
 msgid "Invitation Rejected"
 msgstr "Invitation afvist"
 
 msgid "Failed to join chat"
-msgstr "Kunne ikke deltage i chat"
+msgstr "Kunne ikke tilslutte samtale"
 
 #. -6
 msgid "Unknown room"
@@ -9732,22 +9045,18 @@
 msgid "Not available"
 msgstr "Ikke tilgængelig"
 
-msgid ""
-"Unknown error. You may need to logout and wait five minutes before being "
-"able to rejoin a chatroom"
-msgstr ""
-"Ukendt fejl. Det kræver måske at du logger ud og venter fem minutter før du "
-"kan joine chatrummet igen"
+msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom"
+msgstr "Ukendt fejl. Det kræver måske at du logger ud og venter fem minutter før du kan tilslutte samtalerummet igen"
 
 #, c-format
 msgid "You are now chatting in %s."
-msgstr "Du er nu kendt som %s."
+msgstr "Du samtaler nu i %s."
 
 msgid "Failed to join buddy in chat"
-msgstr "Kunne ikke deltage med ven i chat"
+msgstr "Kunne ikke tilslutte ven i samtale"
 
 msgid "Maybe they're not in a chat?"
-msgstr "Måske er de ikke i en chat?"
+msgstr "Måske er de ikke i en samtale?"
 
 msgid "Fetching the room list failed."
 msgstr "Hentning af rumliste fejlede."
@@ -9775,16 +9084,12 @@
 "Mistede forbindelsen til server\n"
 "%s"
 
-msgid ""
-"(There was an error converting this message.\t Check the 'Encoding' option "
-"in the Account Editor)"
-msgstr ""
-"(Der opstod en fejl, da denne besked skulle konverteres.\t Tjek 'Tegnsæt'-"
-"indstillingen i Konto-redigeringen)"
+msgid "(There was an error converting this message.\t Check the 'Encoding' option in the Account Editor)"
+msgstr "(Der opstod en fejl, da denne besked skulle konverteres.\t Tjek 'Tegnsæt'-indstillingen i Konto-redigeringen)"
 
 #, c-format
 msgid "Unable to send to chat %s,%s,%s"
-msgstr "Kunne ikke sende til chat %s,%s,%s"
+msgstr "Kunne ikke sende til samtale %s,%s,%s"
 
 msgid "Hidden or not logged-in"
 msgstr "Skjult eller ikke logget ind"
@@ -9825,33 +9130,19 @@
 msgstr "topic &lt;instans&gt;: Sæt instans der skal bruges på denne class"
 
 msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
-msgstr ""
-"sub &lt;class&gt; &lt;instans&gt; &lt;modtager&gt;: Deltag i en ny chat"
-
-msgid ""
-"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr "sub &lt;class&gt; &lt;instans&gt; &lt;modtager&gt;: Tilslut en ny samtale"
+
+msgid "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
 msgstr "zi &lt;instans&gt;: Send en besked til &lt;besked,<i>instans</i>,*&gt;"
 
-msgid ""
-"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
-"<i>instance</i>,*&gt;"
-msgstr ""
-"zci &lt;klasse&gt; &lt;instans&gt;: Send en besked til &lt;<i>klasse</i>,"
-"<i>instans</i>,*&gt;"
-
-msgid ""
-"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
-"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
-msgstr ""
-"zcir &lt;klasse&gt; &lt;instans&gt; &lt;modtager&gt;: Send en besked til &lt;"
-"<i>klasse</i>,<i>instans</i>,<i>modtager</i>&gt;"
-
-msgid ""
-"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
-"<i>instance</i>,<i>recipient</i>&gt;"
-msgstr ""
-"zir &lt;instans&gt; &lt;modtager&gt;: Send en besked til &lt;MESSAGE,"
-"<i>instans</i>,<i>modtager</i>&gt;"
+msgid "zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,*&gt;"
+msgstr "zci &lt;klasse&gt; &lt;instans&gt;: Send en besked til &lt;<i>klasse</i>,<i>instans</i>,*&gt;"
+
+msgid "zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr "zcir &lt;klasse&gt; &lt;instans&gt; &lt;modtager&gt;: Send en besked til &lt;<i>klasse</i>,<i>instans</i>,<i>modtager</i>&gt;"
+
+msgid "zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr "zir &lt;instans&gt; &lt;modtager&gt;: Send en besked til &lt;MESSAGE,<i>instans</i>,<i>modtager</i>&gt;"
 
 msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
 msgstr "zc &lt;klasse&gt;: Send en besked til &lt;<i>klasse</i>,PERSONAL,*&gt;"
@@ -9909,15 +9200,15 @@
 
 #, c-format
 msgid "Unable to parse response from HTTP proxy: %s\n"
-msgstr "Kunne ikke fortolke svar fra HTTP-mellemvært: %s\n"
+msgstr "Kunne ikke fortolke svar fra HTTP-proxy: %s\n"
 
 #, c-format
 msgid "HTTP proxy connection error %d"
-msgstr "HTTP-mellemvært forbindelsesfejl %d"
+msgstr "HTTP-proxy forbindelsesfejl %d"
 
 #, c-format
 msgid "Access denied: HTTP proxy server forbids port %d tunneling."
-msgstr "Adgang nægtet: HTTP-mellemværtsserver tillader ikke port %d tunnel."
+msgstr "Adgang nægtet: HTTP-proxyserver tillader ikke port %d tunnel."
 
 #, c-format
 msgid "Error resolving %s"
@@ -9928,7 +9219,7 @@
 
 #, c-format
 msgid "Requesting %s's attention..."
-msgstr "Påkræver %s's opmærksomhed..."
+msgstr "Anmoder om %s's opmærksomhed..."
 
 #, c-format
 msgid "%s has requested your attention!"
@@ -9967,15 +9258,15 @@
 "%s has invited %s to the chat room %s:\n"
 "%s"
 msgstr ""
-"%s har inviteret %s til chatrummet %s:\n"
+"%s har inviteret %s til samtalerummet %s:\n"
 "%s"
 
 #, c-format
 msgid "%s has invited %s to the chat room %s\n"
-msgstr "%s har inviteret %s til chatrummet %s\n"
+msgstr "%s har inviteret %s til samtalerummet %s\n"
 
 msgid "Accept chat invitation?"
-msgstr "Accepter chat invitation?"
+msgstr "Accepter samtaleinvitation?"
 
 #. Shortcut
 msgid "Shortcut"
@@ -9989,10 +9280,10 @@
 msgstr "Gemt billede"
 
 msgid "Stored Image. (that'll have to do for now)"
-msgstr "Gemt billede. (det må udgøre det indtil videre)"
+msgstr "Gemt billede. (det må gøre det indtil videre)"
 
 msgid "SSL Connection Failed"
-msgstr "SSL-forbindelse mislykkedes"
+msgstr "SSL-forbindelse fejlede"
 
 msgid "SSL Handshake Failed"
 msgstr "SSL-håndtryk fejlede"
@@ -10061,12 +9352,8 @@
 msgstr "Fejl ved læsning af %s"
 
 #, c-format
-msgid ""
-"An error was encountered reading your %s.  They have not been loaded, and "
-"the old file has been renamed to %s~."
-msgstr ""
-"En fejl opstod ved læsning af din %s. De er ikke blevet indlæst, og den "
-"gamle fil er blevet omdøbt til %s~."
+msgid "An error was encountered reading your %s.  They have not been loaded, and the old file has been renamed to %s~."
+msgstr "En fejl opstod ved læsning af din %s. De er ikke blevet indlæst, og den gamle fil er blevet omdøbt til %s~."
 
 msgid "Calculating..."
 msgstr "Udregner..."
@@ -10123,12 +9410,8 @@
 msgstr "Fejl ved læsning fra %s: svar for langt (%d bytes grænse)"
 
 #, c-format
-msgid ""
-"Unable to allocate enough memory to hold the contents from %s.  The web "
-"server may be trying something malicious."
-msgstr ""
-"Ikke i stand til at allokere nok hukommelse til at holde indholdet fra %s. "
-"Webserveren prøver måske noget ondskabsfuldt."
+msgid "Unable to allocate enough memory to hold the contents from %s.  The web server may be trying something malicious."
+msgstr "Ikke i stand til at allokere nok hukommelse til at holde indholdet fra %s. Internetserveren prøver måske noget ondskabsfuldt."
 
 #, c-format
 msgid "Error reading from %s: %s"
@@ -10158,7 +9441,7 @@
 #. 10054
 #, c-format
 msgid "Remote host closed connection."
-msgstr "Fjernbrugeren har lukket forbindelsen."
+msgstr "Fjernværten har lukket forbindelsen."
 
 #. 10060
 #, c-format
@@ -10168,7 +9451,7 @@
 #. 10061
 #, c-format
 msgid "Connection refused."
-msgstr "Forbindelse afslået."
+msgstr "Forbindelse afvist."
 
 #. 10048
 #, c-format
@@ -10179,10 +9462,10 @@
 msgstr "Internet beskeder"
 
 msgid "Pidgin Internet Messenger"
-msgstr "Pidgin Internet Kvikbesked"
+msgstr "Pidgin Internet Besked"
 
 msgid "Send instant messages over multiple protocols"
-msgstr "Send kvik-beskeder over flere protokoller"
+msgstr "Send kvikbeskeder over flere protokoller"
 
 msgid "Orientation"
 msgstr "Placering"
@@ -10215,7 +9498,7 @@
 
 #. Buddy icon
 msgid "Use this buddy _icon for this account:"
-msgstr "Brug dette venne_ikon for denne konto:"
+msgstr "Brug dette venne_ikon til denne konto:"
 
 #. Build the protocol options frame.
 #, c-format
@@ -10223,13 +9506,13 @@
 msgstr "%s indstillinger"
 
 msgid "Use GNOME Proxy Settings"
-msgstr "Brug GNOME-mellemværts indstillinger"
+msgstr "Brug GNOME-proxy indstillinger"
 
 msgid "Use Global Proxy Settings"
-msgstr "Brug globale mellemværts indstillinger"
+msgstr "Brug globale proxy-indstillinger"
 
 msgid "No Proxy"
-msgstr "Ingen mellemvært"
+msgstr "Ingen proxy"
 
 msgid "HTTP"
 msgstr "HTTP"
@@ -10256,10 +9539,10 @@
 msgstr "du kan se sommerfuglene parre sig"
 
 msgid "Proxy Options"
-msgstr "Indstillinger for mellemvært"
+msgstr "Indstillinger for proxy"
 
 msgid "Proxy _type:"
-msgstr "Mellemværts_type:"
+msgstr "Proxy_type:"
 
 msgid "_Host:"
 msgstr "_Værtsnavn:"
@@ -10298,39 +9581,24 @@
 msgid ""
 "<span size='larger' weight='bold'>Welcome to %s!</span>\n"
 "\n"
-"You have no IM accounts configured. To start connecting with %s press the "
-"<b>Add...</b> button below and configure your first account. If you want %s "
-"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
-"them all.\n"
+"You have no IM accounts configured. To start connecting with %s press the <b>Add...</b> button below and configure your first account. If you want %s to connect to multiple IM accounts, press <b>Add...</b> again to configure them all.\n"
 "\n"
-"You can come back to this window to add, edit, or remove accounts from "
-"<b>Accounts->Manage Accounts</b> in the Buddy List window"
+"You can come back to this window to add, edit, or remove accounts from <b>Accounts->Manage Accounts</b> in the Buddy List window"
 msgstr ""
 "<span size='larger' weight='bold'>Velkommen til %s!</span>\n"
 "\n"
-"Du har ingen kvikbesked-konti konfigureret. For at komme i gang med at "
-"forbinde med %s tryk <b>Tilføj...</b>-knappen nedenfor og konfigurer din "
-"første konto. Hvis du vil have %s til at forbinde til flere kvikbesked-"
-"konti, tryk <b>Tilføj...</b> igen for at konfigurer dem alle.\n"
+"Du har ingen besked-konti konfigureret. For at komme i gang med at forbinde med %s tryk <b>Tilføj...</b>-knappen nedenfor og konfigurér din første konto. Hvis du vil have %s til at forbinde til flere besked-konti, tryk <b>Tilføj...</b> igen for at konfigurere dem alle.\n"
 "\n"
-"Du kan vende tilbage til dette vindue for at tilføje, redigere eller fjerne "
-"konti fra <b>Konti->Kontihåndtering</b> i venneliste-vinduet"
+"Du kan vende tilbage til dette vindue for at tilføje, redigere eller fjerne konti fra <b>Konti->Kontihåndtering</b> i venneliste-vinduet"
 
 #, c-format
 msgid "You have %d contact named %s. Would you like to merge them?"
-msgid_plural ""
-"You currently have %d contacts named %s. Would you like to merge them?"
+msgid_plural "You currently have %d contacts named %s. Would you like to merge them?"
 msgstr[0] "Du har %d kontakt navngivet %s. Vil du slå dem sammen?"
 msgstr[1] "Du har %d kontakter navngivet %s. Vil du slå dem sammen?"
 
-msgid ""
-"Merging these contacts will cause them to share a single entry on the buddy "
-"list and use a single conversation window. You can separate them again by "
-"choosing 'Expand' from the contact's context menu"
-msgstr ""
-"Slås disse kontakter sammen, vil de dele et enkelt element på vennelisten, "
-"og bruge et enkelt samtalevindue. Du kan adskille dem igen, ved at vælge "
-"\"Udvid\" fra i kontekstmenuen for kontakten"
+msgid "Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. You can separate them again by choosing 'Expand' from the contact's context menu"
+msgstr "Slås disse kontakter sammen, vil de dele et enkelt element på vennelisten, og bruge et enkelt samtalevindue. Du kan adskille dem igen, ved at vælge \"Udvid\" i kontekstmenuen for kontakten"
 
 msgid "Please update the necessary fields."
 msgstr "Opdatér de nødvendige felter."
@@ -10338,11 +9606,8 @@
 msgid "Room _List"
 msgstr "Rum_liste"
 
-msgid ""
-"Please enter the appropriate information about the chat you would like to "
-"join.\n"
-msgstr ""
-"Indtast den nødvendige information om den chat du gerne vil deltage i.\n"
+msgid "Please enter the appropriate information about the chat you would like to join.\n"
+msgstr "Indtast den nødvendige information om den samtale du gerne vil tilslutte.\n"
 
 msgid "_Account:"
 msgstr "_Konto:"
@@ -10372,7 +9637,7 @@
 msgstr "Vis _log"
 
 msgid "Hide when offline"
-msgstr "Skjul når offline"
+msgstr "Skjul når afkoblet"
 
 msgid "_Alias..."
 msgstr "_Alias..."
@@ -10381,7 +9646,7 @@
 msgstr "_Fjern"
 
 msgid "Set Custom Icon"
-msgstr "Sæt tilpasset ikon"
+msgstr "Indstil tilpasset ikon"
 
 msgid "Remove Custom Icon"
 msgstr "Fjern tilpasset ikon"
@@ -10390,7 +9655,7 @@
 msgstr "Tilføj _ven..."
 
 msgid "Add C_hat..."
-msgstr "Tilføj _chat..."
+msgstr "Tilføj _samtale..."
 
 msgid "_Delete Group"
 msgstr "_Slet gruppe"
@@ -10400,10 +9665,10 @@
 
 #. join button
 msgid "_Join"
-msgstr "_Deltag"
+msgstr "_Tilslut"
 
 msgid "Auto-Join"
-msgstr "Auto-Deltag"
+msgstr "Auto-tilslut"
 
 msgid "Persistent"
 msgstr "Vedvarende"
@@ -10420,11 +9685,8 @@
 msgid "/Tools/Mute Sounds"
 msgstr "/Værktøjer/Slå lyde fra"
 
-msgid ""
-"You are not currently signed on with an account that can add that buddy."
-msgstr ""
-"Du er på nuværende tidspunkt ikke logget på nogen konti som kan tilføje en "
-"ven."
+msgid "You are not currently signed on with an account that can add that buddy."
+msgstr "Du er på nuværende tidspunkt ikke logget på nogen konti som kan tilføje denne ven."
 
 #. I don't believe this can happen currently, I think
 #. * everything that calls this function checks for one of the
@@ -10440,7 +9702,7 @@
 msgstr "/Venner/Ny _besked..."
 
 msgid "/Buddies/Join a _Chat..."
-msgstr "/Venner/_Deltag i chat..."
+msgstr "/Venner/_Tilslut en samtale..."
 
 msgid "/Buddies/Get User _Info..."
 msgstr "/Venner/_Hent brugeroplysninger..."
@@ -10452,19 +9714,19 @@
 msgstr "/Venner/_Vis"
 
 msgid "/Buddies/Show/_Offline Buddies"
-msgstr "/Venner/Vis/_offline venner"
+msgstr "/Venner/Vis/_Afkoblede venner"
 
 msgid "/Buddies/Show/_Empty Groups"
-msgstr "/Venner/Vis/_tomme grupper"
+msgstr "/Venner/Vis/_Tomme grupper"
 
 msgid "/Buddies/Show/Buddy _Details"
-msgstr "/Venner/Vis/venne_detaljer"
+msgstr "/Venner/Vis/Venne_detaljer"
 
 msgid "/Buddies/Show/Idle _Times"
-msgstr "/Venner/Vis/inaktiv _tider"
+msgstr "/Venner/Vis/Inaktiv _tider"
 
 msgid "/Buddies/Show/_Protocol Icons"
-msgstr "/Venner/Vis/_tomme grupper"
+msgstr "/Venner/Vis/_Protokolikoner"
 
 msgid "/Buddies/_Sort Buddies"
 msgstr "/Venner/_Sortér venner"
@@ -10473,7 +9735,7 @@
 msgstr "/Venner/Tilføj _ven..."
 
 msgid "/Buddies/Add C_hat..."
-msgstr "/Venner/Tilføj _chat..."
+msgstr "/Venner/Tilføj _samtale..."
 
 msgid "/Buddies/Add _Group..."
 msgstr "/Venner/Tilføj _gruppe..."
@@ -10508,7 +9770,7 @@
 msgstr "/Værktøjer/_Privatliv"
 
 msgid "/Tools/Smile_y"
-msgstr "/Værktøjer/Smile_ys"
+msgstr "/Værktøjer/Smile_y"
 
 msgid "/Tools/_File Transfers"
 msgstr "/Værktøjer/_Filoverførsler"
@@ -10527,7 +9789,7 @@
 msgstr "/_Hjælp"
 
 msgid "/Help/Online _Help"
-msgstr "/Hjælp/Online _hjælp"
+msgstr "/Hjælp/Tilkoblet _hjælp"
 
 msgid "/Help/_Debug Window"
 msgstr "/Hjælp/Vis _fejlsøgningsvindue"
@@ -10556,7 +9818,7 @@
 "<b>Emne:</b> %s"
 
 msgid "(no topic set)"
-msgstr "(Intet emne sat)"
+msgstr "(Intet emne angivet)"
 
 msgid "Buddy Alias"
 msgstr "Vennealias"
@@ -10595,7 +9857,7 @@
 msgstr "/Venner/Ny besked..."
 
 msgid "/Buddies/Join a Chat..."
-msgstr "/Venner/Deltag i chat..."
+msgstr "/Venner/Tilslut en samtale..."
 
 msgid "/Buddies/Get User Info..."
 msgstr "/Venner/Hent brugeroplysninger..."
@@ -10604,7 +9866,7 @@
 msgstr "/Venner/Tilføj ven..."
 
 msgid "/Buddies/Add Chat..."
-msgstr "/Venner/Tilføj chat..."
+msgstr "/Venner/Tilføj samtale..."
 
 msgid "/Buddies/Add Group..."
 msgstr "/Venner/Tilføj gruppe..."
@@ -10649,12 +9911,9 @@
 
 #, c-format
 msgid "%d account was disabled because you signed on from another location:"
-msgid_plural ""
-"%d accounts were disabled because you signed on from another location:"
-msgstr[0] ""
-"%d-konto blev deaktiveret, fordi du loggede ind fra en anden lokation:"
-msgstr[1] ""
-"%d-kontiene blev deaktiveret, fordi du loggede ind fra en anden lokation:"
+msgid_plural "%d accounts were disabled because you signed on from another location:"
+msgstr[0] "%d-konto blev deaktiveret, fordi du loggede ind fra en anden lokation:"
+msgstr[1] "%d-kontiene blev deaktiveret, fordi du loggede ind fra en anden lokation:"
 
 msgid "<b>Username:</b>"
 msgstr "<b>Brugernavn:</b>"
@@ -10673,21 +9932,17 @@
 msgid ""
 "<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 Accounts</b>. Once you enable accounts, "
-"you'll be able to sign on, set your status, and talk to your friends."
+"You have no accounts enabled. Enable your IM accounts from the <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."
 msgstr ""
 "<span weight='bold' size='larger'>Velkommen til %s!</span>\n"
 "\n"
-"Du har ingen aktive konti. Aktivér dine kvikbesked-konti fra <b>Konti</b>-"
-"vinduet <b>Konti->Kontihåndtering</b>. Når du har aktiveret konti, vil du "
-"være i stand til at logge på, sætte din status og tale med dine venner."
+"Du har ingen aktive konti. Aktivér dine besked-konti fra <b>Konti</b>-vinduet <b>Konti->Kontihåndtering</b>. Når du har aktiveret konti, vil du være i stand til at logge på, sætte din status og tale med dine venner."
 
 #. set the Show Offline Buddies option. must be done
 #. * after the treeview or faceprint gets mad. -Robot101
 #.
 msgid "/Buddies/Show/Offline Buddies"
-msgstr "/Venner/Vis/Offline venner"
+msgstr "/Venner/Vis/Afkoblede venner"
 
 msgid "/Buddies/Show/Empty Groups"
 msgstr "/Venner/Vis/Tomme grupper"
@@ -10714,30 +9969,22 @@
 msgstr "Tilføj ven til _gruppe:"
 
 msgid "This protocol does not support chat rooms."
-msgstr "Denne protokol understøtter ikke chatrum."
-
-msgid ""
-"You are not currently signed on with any protocols that have the ability to "
-"chat."
-msgstr ""
-"Du er på nuværende tidspunkt ikke logget på nogen protokoller som har evnen "
-"til at chatte."
-
-msgid ""
-"Please enter an alias, and the appropriate information about the chat you "
-"would like to add to your buddy list.\n"
-msgstr ""
-"Indtast et alias og den nødvendige information om den chat du vil tilføje "
-"til din venneliste.\n"
+msgstr "Denne protokol understøtter ikke samtalerum."
+
+msgid "You are not currently signed on with any protocols that have the ability to chat."
+msgstr "Du er på nuværende tidspunkt ikke logget på nogen protokoller som har evnen til at samtale."
+
+msgid "Please enter an alias, and the appropriate information about the chat you would like to add to your buddy list.\n"
+msgstr "Indtast et alias og den nødvendige information om den samtale du vil tilføje til din venneliste.\n"
 
 msgid "A_lias:"
 msgstr "A_lias:"
 
 msgid "Auto_join when account becomes online."
-msgstr "_Tilslut automatisk når en konto kommer online."
+msgstr "_Tilslut automatisk når en konto tilkobles."
 
 msgid "_Remain in chat after window is closed."
-msgstr "_Forbliv i chat efter vinduet er lukket."
+msgstr "_Forbliv i samtale efter vinduet er lukket."
 
 msgid "Please enter the name of the group to be added."
 msgstr "Indtast navnet på gruppen der skal tilføjes."
@@ -10774,24 +10021,17 @@
 msgstr "Ukendt kommando."
 
 msgid "That buddy is not on the same protocol as this chat."
-msgstr "Vennen er ikke på den samme protokol som denne chat."
-
-msgid ""
-"You are not currently signed on with an account that can invite that buddy."
-msgstr ""
-"Du er på nuværende tidspunkt ikke logget på nogen konti som kan invitere den "
-"ven."
+msgstr "Vennen er ikke på den samme protokol som denne samtale."
+
+msgid "You are not currently signed on with an account that can invite that buddy."
+msgstr "Du er på nuværende tidspunkt ikke logget på nogen konti som kan invitere den ven."
 
 msgid "Invite Buddy Into Chat Room"
-msgstr "Invitér ven med i chat-rum"
+msgstr "Invitér ven med i samtalerum"
 
 #. Put our happy label in it.
-msgid ""
-"Please enter the name of the user you wish to invite, along with an optional "
-"invite message."
-msgstr ""
-"Indtast navnet på den bruger, du vil invitere, samt eventuelt en inviterings-"
-"besked."
+msgid "Please enter the name of the user you wish to invite, along with an optional invite message."
+msgstr "Indtast navnet på den bruger, du vil invitere, samt eventuelt en inviterings-besked."
 
 msgid "_Buddy:"
 msgstr "_Ven:"
@@ -10840,10 +10080,10 @@
 msgstr "Gem ikon som..."
 
 msgid "Set Custom Icon..."
-msgstr "Sæt tilpasset ikon..."
+msgstr "Indstil tilpasset ikon..."
 
 msgid "Change Size"
-msgstr "Skift størrelse"
+msgstr "Ændr størrelse"
 
 msgid "Show All"
 msgstr "Vis alle"
@@ -10889,7 +10129,7 @@
 msgstr "/Samtale/_Blokér..."
 
 msgid "/Conversation/_Unblock..."
-msgstr "/Samtale/_Afblokering..."
+msgstr "/Samtale/_Frigiv..."
 
 msgid "/Conversation/_Add..."
 msgstr "/Samtale/_Tilføj..."
@@ -10908,25 +10148,25 @@
 
 #. Options
 msgid "/_Options"
-msgstr "/_Valgmuligheder"
+msgstr "/_Indstillinger"
 
 msgid "/Options/Enable _Logging"
-msgstr "/Valgmuligheder/Aktiver _logning"
+msgstr "/Indstillinger/Aktivér _logning"
 
 msgid "/Options/Enable _Sounds"
-msgstr "/Valgmuligheder/Brug _lyde"
+msgstr "/Indstillinger/Brug _lyde"
 
 msgid "/Options/Show Formatting _Toolbars"
-msgstr "/Valgmuligheder/Vis _formatteringslinjer"
+msgstr "/Indstillinger/Vis _formatteringslinjer"
 
 msgid "/Options/Show Ti_mestamps"
-msgstr "/Valgmuligheder/Vis _tidsstempler"
+msgstr "/Indstillinger/Vis _tidsstempler"
 
 msgid "/Conversation/More"
 msgstr "/Samtale/Mere"
 
 msgid "/Options"
-msgstr "/Valgmuligheder"
+msgstr "/Indstillinger"
 
 #. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
 #. * the 'Conversation' menu pops up.
@@ -10958,7 +10198,7 @@
 msgstr "/Samtale/Blokér..."
 
 msgid "/Conversation/Unblock..."
-msgstr "/Samtale/Afblokering..."
+msgstr "/Samtale/Frigivelse..."
 
 msgid "/Conversation/Add..."
 msgstr "/Samtale/Tilføj..."
@@ -10967,22 +10207,22 @@
 msgstr "/Samtale/Fjern..."
 
 msgid "/Conversation/Insert Link..."
-msgstr "/Samtale/Indsæt link..."
+msgstr "/Samtale/Indsæt henvisning..."
 
 msgid "/Conversation/Insert Image..."
 msgstr "/Samtale/Indsæt billede..."
 
 msgid "/Options/Enable Logging"
-msgstr "/Valgmuligheder/Aktiver logning"
+msgstr "/Indstillinger/Aktivér logning"
 
 msgid "/Options/Enable Sounds"
-msgstr "/Valgmuligheder/Brug lyde"
+msgstr "/Indstillinger/Brug lyde"
 
 msgid "/Options/Show Formatting Toolbars"
-msgstr "/Valgmuligheder/Vis formatteringslinjer"
+msgstr "/Indstillinger/Vis formatteringslinjer"
 
 msgid "/Options/Show Timestamps"
-msgstr "/Valgmuligheder/Vis tidsstempler"
+msgstr "/Indstillinger/Vis tidsstempler"
 
 msgid "User is typing..."
 msgstr "Bruger skriver..."
@@ -11004,7 +10244,7 @@
 
 #. Setup the label telling how many people are in the room.
 msgid "0 people in room"
-msgstr "Ingen chattere i rummet"
+msgstr "Ingen samtalere i rummet"
 
 #, c-format
 msgid "%d person in room"
@@ -11055,7 +10295,7 @@
 msgstr "Sidst oprettede vindue"
 
 msgid "Separate IM and Chat windows"
-msgstr "Seperate samtale- og chatvinduer"
+msgstr "Seperate besked- og samtalevinduer"
 
 msgid "New window"
 msgstr "Nyt vindue"
@@ -11088,7 +10328,7 @@
 msgstr "Filter"
 
 msgid "Right click for more options."
-msgstr "Højreklik for flere muligheder."
+msgstr "Højreklik for flere indstillinger."
 
 msgid "Level "
 msgstr "Niveau "
@@ -11125,7 +10365,7 @@
 msgstr "support"
 
 msgid "webmaster"
-msgstr "webmaster"
+msgstr "internetudvikler"
 
 msgid "Senior Contributor/QA"
 msgstr "Seniorbidrager/QA"
@@ -11162,7 +10402,7 @@
 msgstr "Arabisk"
 
 msgid "Belarusian Latin"
-msgstr "Belarusian Latin"
+msgstr "Hviderussisk latinsk"
 
 msgid "Bulgarian"
 msgstr "Bulgarsk"
@@ -11261,10 +10501,10 @@
 msgstr "Georgiske Ubuntu-oversættere"
 
 msgid "Kannada"
-msgstr "Kannada"
+msgstr "Kanada"
 
 msgid "Kannada Translation team"
-msgstr "Kannada oversættelseshold"
+msgstr "Kanadiske oversættelseshold"
 
 msgid "Korean"
 msgstr "Koreansk"
@@ -11285,7 +10525,7 @@
 msgstr "Mongolsk"
 
 msgid "Bokmål Norwegian"
-msgstr "Bokmål"
+msgstr "Norsk"
 
 msgid "Nepali"
 msgstr "Nepali"
@@ -11363,7 +10603,7 @@
 msgstr "Simpelt kinesisk"
 
 msgid "Hong Kong Chinese"
-msgstr "Hong Kong Chinese"
+msgstr "Kinesisk"
 
 msgid "Traditional Chinese"
 msgstr "Traditionelt kinesisk"
@@ -11376,45 +10616,19 @@
 msgstr "Om %s"
 
 #, c-format
-msgid ""
-"%s is a graphical modular messaging client based on libpurple which is "
-"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, "
-"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and "
-"QQ all at once.  It is written using GTK+.<BR><BR>You may modify and "
-"redistribute the program under the terms of the GPL (version 2 or later).  A "
-"copy of the GPL is contained in the 'COPYING' file distributed with %s.  %s "
-"is copyrighted by its contributors.  See the 'COPYRIGHT' file for the "
-"complete list of contributors.  We provide no warranty for this program."
-"<BR><BR>"
-msgstr ""
-"%s er en grafisk modulær kvikbeskeds-klient baseret på libpurple, der "
-"understøtter AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell "
-"GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu og QQ på "
-"samme tid.  Det er skrevet i GTK+.<BR><BR>Du må modificere og redistribuere "
-"programmet under de betingelser givet af GPL (version 2 eller senere).  En "
-"kopi af GPL er indeholdt i 'COPYING' filen som blev distribueret med %s. %s "
-"er ophavsret af dens bidragsydere. Se 'COPYRIGHT' filen for den komplette "
-"liste af bidragsydere. Vi giver ingen garanti for dette program.<BR><BR>"
-
-#, c-format
-msgid ""
-"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
-"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
-msgstr ""
-"<FONT SIZE=\"4\">OSS:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
-"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
-
-#, c-format
-msgid ""
-"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
-"\">support@pidgin.im</A><BR/><BR/>"
-msgstr ""
-"<FONT SIZE=\"4\">Hjælp via e-post:</FONT> <A HREF=\"mailto:support@pidgin.im"
-"\">support@pidgin.im</A><BR/><BR/>"
-
-#, c-format
-msgid ""
-"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgid "%s is a graphical modular messaging client based on libpurple which is capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and QQ all at once.  It is written using GTK+.<BR><BR>You may modify and redistribute the program under the terms of the GPL (version 2 or later).  A copy of the GPL is contained in the 'COPYING' file distributed with %s.  %s is copyrighted by its contributors.  See the 'COPYRIGHT' file for the complete list of contributors.  We provide no warranty for this program.<BR><BR>"
+msgstr "%s er en grafisk modulær beskedklient baseret på libpurple, der understøtter AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu og QQ på samme tid.  Det er skrevet i GTK+.<BR><BR>Du må modificere og redistribuere programmet under de betingelser givet af GPL (version 2 eller senere).  En kopi af GPL er indeholdt i 'COPYING' filen som blev distribueret med %s. %s er ophavsret af dens bidragydere. Se 'COPYRIGHT' filen for den komplette liste af bidragydere. Vi giver ingen garanti for dette program.<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr "<FONT SIZE=\"4\">OSS:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im\">support@pidgin.im</A><BR/><BR/>"
+msgstr "<FONT SIZE=\"4\">Hjælp via e-post:</FONT> <A HREF=\"mailto:support@pidgin.im\">support@pidgin.im</A><BR/><BR/>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
 msgstr "<FONT SIZE=\"4\">IRC-kanal:</FONT> #pidgin on irc.freenode.net<BR><BR>"
 
 #, c-format
@@ -11425,13 +10639,13 @@
 msgstr "Nuværende udviklere"
 
 msgid "Crazy Patch Writers"
-msgstr "Vilde patch-skrivere"
+msgstr "Vilde fejlrettere"
 
 msgid "Retired Developers"
 msgstr "Tidligere udviklere"
 
 msgid "Retired Crazy Patch Writers"
-msgstr "Tidligere Vilde patch-skrivere"
+msgstr "Tidligere Vilde fejlrettere"
 
 msgid "Current Translators"
 msgstr "Nuværende oversættere"
@@ -11451,12 +10665,8 @@
 msgid "Get User Info"
 msgstr "Hent brugeroplysninger"
 
-msgid ""
-"Please enter the username or alias of the person whose info you would like "
-"to view."
-msgstr ""
-"Indtast brugernavnet eller alias på den person, hvis oplysninger du gerne "
-"vil se."
+msgid "Please enter the username or alias of the person whose info you would like to view."
+msgstr "Indtast brugernavnet eller alias på den person, hvis oplysninger du gerne vil se."
 
 msgid "View User Log"
 msgstr "Vis bruger log"
@@ -11475,24 +10685,16 @@
 msgstr "Lav alias for ven"
 
 msgid "Alias Chat"
-msgstr "Alias chat"
+msgstr "Samtalealias"
 
 msgid "Enter an alias for this chat."
-msgstr "Indtast et alias for denne chat."
-
-#, c-format
-msgid ""
-"You are about to remove the contact containing %s and %d other buddy from "
-"your buddy list.  Do you want to continue?"
-msgid_plural ""
-"You are about to remove the contact containing %s and %d other buddies from "
-"your buddy list.  Do you want to continue?"
-msgstr[0] ""
-"Du skal til at fjerne kontakten indeholdende %s og %d anden ven fra din "
-"venneliste. Vil du fortsætte?"
-msgstr[1] ""
-"Du skal til at fjerne kontakten indeholdende %s og %d andre venner fra din "
-"venneliste. Vil du fortsætte?"
+msgstr "Indtast et alias for denne samtale."
+
+#, c-format
+msgid "You are about to remove the contact containing %s and %d other buddy from your buddy list.  Do you want to continue?"
+msgid_plural "You are about to remove the contact containing %s and %d other buddies from your buddy list.  Do you want to continue?"
+msgstr[0] "Du skal til at fjerne kontakten indeholdende %s og %d anden ven fra din venneliste. Vil du fortsætte?"
+msgstr[1] "Du skal til at fjerne kontakten indeholdende %s og %d andre venner fra din venneliste. Vil du fortsætte?"
 
 msgid "Remove Contact"
 msgstr "Fjern kontakt"
@@ -11501,9 +10703,7 @@
 msgstr "_Fjern kontakt"
 
 #, c-format
-msgid ""
-"You are about to merge the group called %s into the group called %s. Do you "
-"want to continue?"
+msgid "You are about to merge the group called %s into the group called %s. Do you want to continue?"
 msgstr "Du er ved at slå gruppen %s sammen med gruppen %s. Vil du fortsætte?"
 
 msgid "Merge Groups"
@@ -11513,12 +10713,8 @@
 msgstr "_Slå grupper sammen"
 
 #, c-format
-msgid ""
-"You are about to remove the group %s and all its members from your buddy "
-"list.  Do you want to continue?"
-msgstr ""
-"Du skal til at fjerne gruppen %s og alle den indeholder fra din venneliste. "
-"Vil du fortsætte?"
+msgid "You are about to remove the group %s and all its members from your buddy list.  Do you want to continue?"
+msgstr "Du skal til at fjerne gruppen %s og alle den indeholder fra din venneliste. Vil du fortsætte?"
 
 msgid "Remove Group"
 msgstr "Fjern gruppe"
@@ -11527,8 +10723,7 @@
 msgstr "_Fjern gruppe"
 
 #, c-format
-msgid ""
-"You are about to remove %s from your buddy list.  Do you want to continue?"
+msgid "You are about to remove %s from your buddy list.  Do you want to continue?"
 msgstr "Du skal til at slette %s fra din venneliste. Vil du fortsætte?"
 
 msgid "Remove Buddy"
@@ -11538,22 +10733,20 @@
 msgstr "_Fjern ven"
 
 #, c-format
-msgid ""
-"You are about to remove the chat %s from your buddy list.  Do you want to "
-"continue?"
-msgstr "Du skal til at fjerne chatten %s fra din venneliste. Vil du fortsætte?"
+msgid "You are about to remove the chat %s from your buddy list.  Do you want to continue?"
+msgstr "Du skal til at fjerne samtalen %s fra din venneliste. Vil du fortsætte?"
 
 msgid "Remove Chat"
-msgstr "Fjern chat"
+msgstr "Fjern samtale"
 
 msgid "_Remove Chat"
-msgstr "_Fjern chat"
+msgstr "_Fjern samtale"
 
 msgid "Right-click for more unread messages...\n"
 msgstr "Højreklik for flere ulæste beskeder...\n"
 
 msgid "_Change Status"
-msgstr "_Skift status"
+msgstr "_Ændr status"
 
 msgid "Show Buddy _List"
 msgstr "Vis venne_liste"
@@ -11655,57 +10848,56 @@
 msgstr "_Nulstil formattering"
 
 msgid "Disable _smileys in selected text"
-msgstr "Deaktivér _smileys i valgt tekst"
+msgstr "Deaktivér _smileyer i valgt tekst"
 
 msgid "Hyperlink color"
-msgstr "Link farve"
+msgstr "Farve på henvisning"
 
 msgid "Color to draw hyperlinks."
-msgstr "Farve som hyperlinks skal være."
+msgstr "Farve på henvisninger."
 
 msgid "Hyperlink visited color"
-msgstr "Link farve ved besøgt link"
+msgstr "Farve på besøgt henvisning"
 
 msgid "Color to draw hyperlinks after it has been visited (or activated)."
-msgstr ""
-"Farve som hyperlinks skal være efter de er blevet besøgt (eller aktiveret)."
+msgstr "Farve på henvisning efter at de er blevet besøgt (eller aktiveret)."
 
 # virkelig dårlig oversættelse!
 msgid "Hyperlink prelight color"
-msgstr "Hyperlink præ-lys farve"
+msgstr "Farve på ubrugte henvisninger"
 
 msgid "Color to draw hyperlinks when mouse is over them."
-msgstr "Farve som hyperlinks skal være når musen er over dem."
+msgstr "Farve på henvisning når musen er over dem."
 
 msgid "Sent Message Name Color"
 msgstr "Farve på sendte beskeder"
 
 msgid "Color to draw the name of a message you sent."
-msgstr "Farvelæg navnet på den besked du sendte."
+msgstr "Farve som bruges på navnet til den besked du sendte."
 
 msgid "Received Message Name Color"
-msgstr "Farve på medtagede beskeder"
+msgstr "Farve som bruges på navnet til modtagne beskeder"
 
 msgid "Color to draw the name of a message you received."
-msgstr "Farvelæg navnet på den besked du modtog."
+msgstr "Farve som bruges på navnet til den besked du modtog."
 
 msgid "\"Attention\" Name Color"
-msgstr "\"Opmærksomhed\"-farvenavn"
+msgstr "\"Opmærksomhed\" farvenavn"
 
 msgid "Color to draw the name of a message you received containing your name."
-msgstr "Farvelæg navnet på den besked du modtog indholdende dit navn."
+msgstr "Farve som bruges på navnet til den besked du modtog indeholdende dit navn."
 
 msgid "Action Message Name Color"
-msgstr "Farvenavn for handlingsbesked"
+msgstr "Farve som bruges på navnet til handlingsbesked"
 
 msgid "Color to draw the name of an action message."
-msgstr "Farvelæg navnet på en handlingsbesked."
+msgstr "Farve som bruges på navnet til en handlingsbesked."
 
 msgid "Action Message Name Color for Whispered Message"
-msgstr "Farvenavn for handlingsbesked ved hvisket besked"
+msgstr "Farve som bruges på navnet til hvisket handlingsbesked"
 
 msgid "Whisper Message Name Color"
-msgstr "Farvenavn for hviskebesked"
+msgstr "Farve som bruges på navnet til hviskebesked"
 
 msgid "Typing notification color"
 msgstr "Farve på påmindelse af indtastning"
@@ -11723,13 +10915,13 @@
 msgstr "Aktivér påmindelse om indtastning"
 
 msgid "_Copy Email Address"
-msgstr "_Kopier email adresse"
+msgstr "_Kopier e-postadresse"
 
 msgid "_Open Link in Browser"
-msgstr "Åbn link i br_owser"
+msgstr "Åbn henvisning i br_owser"
 
 msgid "_Copy Link Location"
-msgstr "_Kopiér link adresse"
+msgstr "_Kopiér henvisningsadresse"
 
 msgid ""
 "<span size='larger' weight='bold'>Unrecognized file type</span>\n"
@@ -11778,7 +10970,7 @@
 
 #, c-format
 msgid "_Add Custom Smiley..."
-msgstr "_Tilføj brugerdefinerede smileys..."
+msgstr "_Tilføj tilpasset smiley..."
 
 msgid "Select Font"
 msgstr "Vælg skrifttype"
@@ -11795,18 +10987,14 @@
 msgid "_Description"
 msgstr "_Beskrivelse"
 
-msgid ""
-"Please enter the URL and description of the link that you want to insert. "
-"The description is optional."
-msgstr ""
-"Indtast URL'en og beskrivelsen på det link du vil indsætte. Beskrivelsen er "
-"ikke krævet."
+msgid "Please enter the URL and description of the link that you want to insert. The description is optional."
+msgstr "Indtast adressen og beskrivelsen på den henvisning du vil indsætte. Beskrivelsen er ikke krævet."
 
 msgid "Please enter the URL of the link that you want to insert."
-msgstr "Indtast adressen på henvisningen du vil indsætet."
+msgstr "Indtast adressen på henvisningen du vil indsætte."
 
 msgid "Insert Link"
-msgstr "Indsæt link"
+msgstr "Indsæt henvisning"
 
 msgid "_Insert"
 msgstr "_Indsæt"
@@ -11823,24 +11011,23 @@
 "This smiley is disabled because a custom smiley exists for this shortcut:\n"
 " %s"
 msgstr ""
-"Denne smiley er deaktiveret, fordi tilpasset smiley findes for denne "
-"genvej:\n"
+"Denne smiley er deaktiveret, fordi en tilpasset smiley findes for denne genvej:\n"
 "%s"
 
 msgid "Smile!"
 msgstr "Smil!"
 
 msgid "_Manage custom smileys"
-msgstr "_Håndtér brugerdefinerede smileys"
+msgstr "_Håndtér tilpassede smileyer"
 
 msgid "This theme has no available smileys."
-msgstr "Dette tema har ingen tilgængelige smileys."
+msgstr "Dette tema har ingen tilgængelige smileyer."
 
 msgid "_Font"
 msgstr "_Skrifttype"
 
 msgid "Group Items"
-msgstr "Gruppér punkter"
+msgstr "Gruppér elementer"
 
 msgid "Ungroup Items"
 msgstr "Afgruppér elementer"
@@ -11855,7 +11042,7 @@
 msgstr "Understregning"
 
 msgid "Strikethrough"
-msgstr "Gennemstreget"
+msgstr "Gennemstreg"
 
 msgid "Increase Font Size"
 msgstr "Forøg skriftstørrelse"
@@ -11864,7 +11051,7 @@
 msgstr "Formindsk skriftstørrelse"
 
 msgid "Font Face"
-msgstr "Skriftsnit"
+msgstr "Skrifttype-familie"
 
 msgid "Background Color"
 msgstr "Baggrundsfarve"
@@ -11885,13 +11072,13 @@
 msgstr "<b>_Fed</b>"
 
 msgid "<i>_Italic</i>"
-msgstr "<i>_Kursivt</i>"
+msgstr "<i>_Kursiv</i>"
 
 msgid "<u>_Underline</u>"
-msgstr "<u>_Understregning</u>"
+msgstr "<u>_Understreg</u>"
 
 msgid "<span strikethrough='true'>Strikethrough</span>"
-msgstr "<span strikethrough='true'>Gennemstreget</span>"
+msgstr "<span strikethrough='true'>Gennemstreg</span>"
 
 msgid "<span size='larger'>_Larger</span>"
 msgstr "<span size='larger'>_Større</span>"
@@ -11906,7 +11093,7 @@
 #. * need to update them when formatting changes. The above items don't need
 #. * no updating nor nothin'
 msgid "_Font face"
-msgstr "_Skriftsnit"
+msgstr "_Skrifttype-familie"
 
 msgid "Foreground _color"
 msgstr "_Forgrundsfarve"
@@ -11918,42 +11105,31 @@
 msgstr "Bi_llede"
 
 msgid "_Link"
-msgstr "_Link"
+msgstr "_Henvisning"
 
 msgid "_Horizontal rule"
-msgstr "_Horisontal regel"
+msgstr "_Vandret regel"
 
 msgid "_Smile!"
 msgstr "S_mil!"
 
 msgid "Log Deletion Failed"
-msgstr "Sletning af log mislykkedes"
+msgstr "Sletning af log fejlede"
 
 msgid "Check permissions and try again."
 msgstr "Kontrollér rettigheder og prøv igen."
 
 #, c-format
-msgid ""
-"Are you sure you want to permanently delete the log of the conversation with "
-"%s which started at %s?"
-msgstr ""
-"Er du sikker på at du permanent vil slette loggen over samtaler med %s som "
-"startede %s?"
-
-#, c-format
-msgid ""
-"Are you sure you want to permanently delete the log of the conversation in %"
-"s which started at %s?"
-msgstr ""
-"Er du sikker på at du permanent vil slette loggen over samtalen i %s som er "
-"startet %s?"
-
-#, c-format
-msgid ""
-"Are you sure you want to permanently delete the system log which started at %"
-"s?"
-msgstr ""
-"Er du sikker på at du permanent vil slette systemloggen som er startet %s?"
+msgid "Are you sure you want to permanently delete the log of the conversation with %s which started at %s?"
+msgstr "Er du sikker på at du permanent vil slette loggen over samtaler med %s som startede %s?"
+
+#, c-format
+msgid "Are you sure you want to permanently delete the log of the conversation in %s which started at %s?"
+msgstr "Er du sikker på at du permanent vil slette loggen over samtalen i %s som er startet %s?"
+
+#, c-format
+msgid "Are you sure you want to permanently delete the system log which started at %s?"
+msgstr "Er du sikker på at du permanent vil slette systemloggen som er startet ved %s?"
 
 msgid "Delete Log?"
 msgstr "Slet log?"
@@ -11996,15 +11172,15 @@
 "%s %s\n"
 "Brug: %s [TILVALG]...\n"
 "\n"
-"  -c, --config=MAPPE  brug MAPPE for opsætningsfiler\n"
+"  -c, --config=DIR    brug DIR for opsætningsfiler\n"
 "  -d, --debug         udskriv fejlsøgningsbeskeder til stdout\n"
 "  -h, --help          vis denne hjælp og afslut\n"
-"  -m, --multiple     tillad flere instanser\n"
+"  -m, --multiple      tillad flere instanser\n"
 "  -n, --nologin       log ikke ind automatisk\n"
 "  -l, --login[=NAVN]  aktivér angivede konti (valgfrit argument NAVN\n"
 "                      angiver konti der skal benyttes, adskilt af kommaer.\n"
-"                      Uden dette vil den første konto blive aktiveret.\n"
-"  --display=SKÆRM   X-skærm der skal benyttes\n"
+"                      Uden dette vil kun den første konto blive aktiveret.\n"
+"  --display=SKÆRM     X-skærm der skal benyttes\n"
 "  -v, --version       vis nuværende version og afslut\n"
 
 #, c-format
@@ -12028,12 +11204,12 @@
 "  -c, --config=MAPPE  brug MAPPE for opsætningsfiler\n"
 "  -d, --debug         udskriv fejlsøgningsbeskeder til stdout\n"
 "  -h, --help          vis denne hjælp og afslut\n"
-"  -m, --multiple     tillad flere instanser\n"
+"  -m, --multiple      tillad flere instanser\n"
 "  -n, --nologin       log ikke ind automatisk\n"
 "  -l, --login[=NAVN]  aktivér angivede konti (valgfrit argument NAVN\n"
 "                      angiver konti der skal benyttes, adskilt af kommaer.\n"
-"                      Uden dette vil den første konto blive aktiveret.\n"
-"  --display=SKÆRM   X-skærm der skal benyttes\n"
+"                      Uden dette vil kun den første konto blive aktiveret.\n"
+"  --display=SKÆRM     X-skærm der skal benyttes\n"
 "  -v, --version       vis nuværende version og afslut\n"
 
 #, c-format
@@ -12087,8 +11263,8 @@
 #, c-format
 msgid "<b>%d new email.</b>"
 msgid_plural "<b>%d new emails.</b>"
-msgstr[0] "<b>%d ny breve.</b>"
-msgstr[1] "<b>%d nye breve.</b>"
+msgstr[0] "<b>%d ny e-breve.</b>"
+msgstr[1] "<b>%d nye e-breve.</b>"
 
 #, c-format
 msgid "The browser command \"%s\" is invalid."
@@ -12101,11 +11277,8 @@
 msgid "Error launching \"%s\": %s"
 msgstr "Fejl ved kørsel af \"%s\": %s"
 
-msgid ""
-"The 'Manual' browser command has been chosen, but no command has been set."
-msgstr ""
-"\"Manuel\" browser-kommandoen er blevet valgt, men ingen kommando er blevet "
-"sat."
+msgid "The 'Manual' browser command has been chosen, but no command has been set."
+msgstr "\"Manuel\" browser-kommandoen er blevet valgt, men ingen kommando er blevet angivet."
 
 msgid "The following plugins will be unloaded."
 msgstr "De følgende moduler kunne ikke udlæses."
@@ -12117,14 +11290,10 @@
 msgstr "Udlæs udvidelsesmoduler"
 
 msgid "Could not unload plugin"
-msgstr "Kunne ikke deaktivere udvidelsesmodul"
-
-msgid ""
-"The plugin could not be unloaded now, but will be disabled at the next "
-"startup."
-msgstr ""
-"Udvidelsesmodulet kunne ikke blive deaktiveret nu, men vil blive deaktiveret "
-"ved den næste opstart."
+msgstr "Kunne ikke udlæse udvidelsesmodul"
+
+msgid "The plugin could not be unloaded now, but will be disabled at the next startup."
+msgstr "Udvidelsesmodulet kunne ikke blive udlæst nu, men vil blive slået fra ved den næste opstart."
 
 #, c-format
 msgid ""
@@ -12132,16 +11301,16 @@
 "Check the plugin website for an update.</span>"
 msgstr ""
 "<span foreground=\"rød\" weight=\"bold\">Fejl: %s\n"
-"Kontrollér udvidelsesmodul-websiden for en opdatering.</span>"
+"Kontrollér udvidelsesmodul-netstedet for en opdatering.</span>"
 
 msgid "Author"
-msgstr "Udvikler"
+msgstr "Forfatter"
 
 msgid "<b>Written by:</b>"
 msgstr "<b>Skrevet af:</b>"
 
 msgid "<b>Web site:</b>"
-msgstr "<b>Websted:</b>"
+msgstr "<b>Netsted:</b>"
 
 msgid "<b>Filename:</b>"
 msgstr "<b>Filnavn:</b>"
@@ -12223,7 +11392,7 @@
 msgstr "_Gentages"
 
 msgid "Pounce Target"
-msgstr "Overvågningsmål"
+msgstr "Overvåg mål"
 
 msgid "Smiley theme failed to unpack."
 msgstr "Smiley-tema kunne ikke udpakkes."
@@ -12231,12 +11400,8 @@
 msgid "Install Theme"
 msgstr "Installér tema"
 
-msgid ""
-"Select a smiley theme that you would like to use from the list below. New "
-"themes can be installed by dragging and dropping them onto the theme list."
-msgstr ""
-"Vælg et smiley-tema som du gerne vil bruge fra listen forneden. Nye temaer "
-"kan installeres ved at træk-og-slippe dem ind i tema listen."
+msgid "Select a smiley theme that you would like to use from the list below. New themes can be installed by dragging and dropping them onto the theme list."
+msgstr "Vælg et smiley-tema som du gerne vil bruge fra listen forneden. Nye temaer kan installeres ved at træk-og-slippe dem ind i tema listen."
 
 msgid "Icon"
 msgstr "Ikon"
@@ -12245,7 +11410,7 @@
 msgstr "Tastaturgenveje"
 
 msgid "Cl_ose conversations with the Escape key"
-msgstr "_Luk samtaler med Escape-tasten"
+msgstr "_Afslut samtaler med Escape-tasten"
 
 msgid "System Tray Icon"
 msgstr "Statusområde ikon"
@@ -12270,7 +11435,7 @@
 msgstr "Faner"
 
 msgid "Show IMs and chats in _tabbed windows"
-msgstr "Vis beskeder og chats i _fanebladsvinduer"
+msgstr "Vis beskeder og samtaler i _fanebladsvinduer"
 
 msgid "Show close b_utton on tabs"
 msgstr "Vis _luk knapper på faneblade"
@@ -12303,7 +11468,7 @@
 msgstr "Vis _formatteringslinje på nye beskeder"
 
 msgid "Close IMs immediately when the tab is closed"
-msgstr "Luk kvikbeskeder straks når fanebladet lukkes"
+msgstr "Afslut beskeder straks når fanebladet lukkes"
 
 msgid "Show _detailed information"
 msgstr "Vis _detaljeret information"
@@ -12344,18 +11509,14 @@
 msgid "Default Formatting"
 msgstr "Standard formattering"
 
-msgid ""
-"This is how your outgoing message text will appear when you use protocols "
-"that support formatting."
-msgstr ""
-"Sådan vil din udgående besked se ud når du bruger protokoller, der "
-"understøtter formattering."
+msgid "This is how your outgoing message text will appear when you use protocols that support formatting."
+msgstr "Sådan vil din udgående besked se ud når du bruger protokoller, der understøtter formattering."
 
 msgid "Cannot start proxy configuration program."
 msgstr "Kan ikke starte proxy-konfigurationsprogram."
 
 msgid "Cannot start browser configuration program."
-msgstr "Kan ikke starte konfigurationsprogram for browser."
+msgstr "Kan ikke starte konfigurationsprogram til browser."
 
 msgid "ST_UN server:"
 msgstr "ST_UN server:"
@@ -12397,7 +11558,7 @@
 "Proxy & Browser preferences are configured\n"
 "in GNOME Preferences"
 msgstr ""
-"Proxy & Browser indstillinger konfigureres\n"
+"Proxy- og Browserindstillinger konfigureres\n"
 "i GNOME-indstillinger"
 
 msgid "Configure _Proxy"
@@ -12410,11 +11571,11 @@
 msgstr "Server"
 
 msgid "No proxy"
-msgstr "Ingen mellemvært"
+msgstr "Ingen proxy"
 
 #. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
 msgid "Use remote DNS with SOCKS4 proxies"
-msgstr "Benyt fjern-DNS med SOCKS4-mellemværter"
+msgstr "Benyt fjern-DNS med SOCKS4-proxyer"
 
 msgid "_User:"
 msgstr "_Bruger:"
@@ -12435,7 +11596,7 @@
 msgstr "Konqueror"
 
 msgid "Desktop Default"
-msgstr "Skrivebordsstandard"
+msgstr "Standardskrivebord"
 
 msgid "GNOME Default"
 msgstr "GNOME standard"
@@ -12462,7 +11623,7 @@
 msgstr "_Browser:"
 
 msgid "_Open link in:"
-msgstr "_Åbn link i:"
+msgstr "_Åbn henvisning i:"
 
 msgid "Browser default"
 msgstr "Browser standard"
@@ -12544,7 +11705,7 @@
 msgstr "Lyde når samtale har _fokus"
 
 msgid "_Enable sounds:"
-msgstr "_Aktivér lyde:"
+msgstr "_Slå lyde til:"
 
 msgid "V_olume:"
 msgstr "L_ydstyrke:"
@@ -12553,7 +11714,7 @@
 msgstr "Afspil"
 
 msgid "_Browse..."
-msgstr "_Gennemse..."
+msgstr "_Browse..."
 
 msgid "_Reset"
 msgstr "_Nulstil"
@@ -12575,13 +11736,13 @@
 msgstr "Automatisk fraværende"
 
 msgid "Change status when _idle"
-msgstr "Skift status ved _inaktivitet"
+msgstr "Ændr status ved _inaktivitet"
 
 msgid "_Minutes before becoming idle:"
 msgstr "_Minutter før du bliver inaktiv:"
 
 msgid "Change _status to:"
-msgstr "Skift _status til:"
+msgstr "Ændr _status til:"
 
 #. Signon status stuff
 msgid "Status at Startup"
@@ -12591,7 +11752,7 @@
 msgstr "Brug status fra sidste _afslutning ved opstart"
 
 msgid "Status to a_pply at startup:"
-msgstr "Status som skal _anvendes ved opstart:"
+msgstr "Status som skal _bruges ved opstart:"
 
 msgid "Interface"
 msgstr "Grænseflade"
@@ -12631,7 +11792,7 @@
 
 #. Remove All button
 msgid "Remove Al_l"
-msgstr "Slet _alt"
+msgstr "Slet _alle"
 
 msgid "Permit User"
 msgstr "Tillad bruger"
@@ -12694,7 +11855,7 @@
 
 #. add button
 msgid "_Add Chat"
-msgstr "_Tilføj chat"
+msgstr "_Tilføj samtale"
 
 msgid "Are you sure you want to delete the selected saved statuses?"
 msgstr "Er du sikker på at du vil slette de valgte gemte statusser?"
@@ -12731,23 +11892,19 @@
 msgstr "Tilpasset smiley"
 
 msgid "More Data needed"
-msgstr "Flere data kræves"
+msgstr "Der er behov for flere data"
 
 msgid "Please provide a shortcut to associate with the smiley."
-msgstr "Angiv en genvej der skal associeres med smileyen."
+msgstr "Angiv en genvej der skal tilknyttes smileyen."
 
 msgid "Duplicate Shortcut"
 msgstr "Dublet genvej"
 
-msgid ""
-"A custom smiley for the selected shortcut already exists. Please specify a "
-"different shortcut."
-msgstr ""
-"En tilpasset smiley for den valgte genvej findes allerede. Angiv en anden "
-"genvej."
+msgid "A custom smiley for the selected shortcut already exists. Please specify a different shortcut."
+msgstr "En tilpasset smiley for den valgte genvej findes allerede. Angiv en anden genvej."
 
 msgid "Please select an image for the smiley."
-msgstr "Vælg et billede til smiley'en."
+msgstr "Vælg et billede til smileyen."
 
 msgid "Edit Smiley"
 msgstr "Redigér smiley"
@@ -12766,13 +11923,13 @@
 msgstr "Smiley"
 
 msgid "Custom Smiley Manager"
-msgstr "Brugertilpasset Smiley-håndtering"
+msgstr "Brugertilpasset håndtering af smiley"
 
 msgid "Click to change your buddyicon for this account."
-msgstr "Klik for at ændre dit venneikon for denne konto."
+msgstr "Klik for at ændre dit venneikon til denne konto."
 
 msgid "Click to change your buddyicon for all accounts."
-msgstr "Klik for at ændre dit venneikon for alle konti."
+msgstr "Klik for at ændre dit venneikon til alle konti."
 
 msgid "Waiting for network connection"
 msgstr "Venter på netværksforbindelse"
@@ -12781,7 +11938,7 @@
 msgstr "Ny status..."
 
 msgid "Saved statuses..."
-msgstr "Gemte statuser..."
+msgstr "Gemte statusser..."
 
 msgid "Status Selector"
 msgstr "Statusvælger"
@@ -12801,20 +11958,14 @@
 msgstr "Kan ikke sende mappe %s."
 
 #, c-format
-msgid ""
-"%s cannot transfer a folder. You will need to send the files within "
-"individually."
-msgstr "%s kan ikke overføre en mappe. Du skal sende filerne individuelt."
+msgid "%s cannot transfer a folder. You will need to send the files within individually."
+msgstr "%s kan ikke overføre en mappe. Du skal sende filerne i denne individuelt."
 
 msgid "You have dragged an image"
 msgstr "Du har trukket et billede"
 
-msgid ""
-"You can send this image as a file transfer, embed it into this message, or "
-"use it as the buddy icon for this user."
-msgstr ""
-"Du kan sende dette billede som en filoverførsel, vedlægge det til en besked, "
-"eller bruge det som venneikonet for denne bruger."
+msgid "You can send this image as a file transfer, embed it into this message, or use it as the buddy icon for this user."
+msgstr "Du kan sende dette billede som en filoverførsel, vedlægge det til en besked, eller bruge det som venneikonet til denne bruger."
 
 msgid "Set as buddy icon"
 msgstr "Sæt som venneikon"
@@ -12828,19 +11979,11 @@
 msgid "Would you like to set it as the buddy icon for this user?"
 msgstr "Vil du sætte det som venneikon for denne bruger?"
 
-msgid ""
-"You can send this image as a file transfer, or use it as the buddy icon for "
-"this user."
-msgstr ""
-"Du kan sende dette billede som en filoverførsel, eller bruge det som "
-"venneikonet for denne bruger."
-
-msgid ""
-"You can insert this image into this message, or use it as the buddy icon for "
-"this user"
-msgstr ""
-"Du kan indsætte dette billede i beskeden, eller bruge det som venneikon for "
-"denne bruger"
+msgid "You can send this image as a file transfer, or use it as the buddy icon for this user."
+msgstr "Du kan sende dette billede som en filoverførsel, eller bruge det som venneikonet for denne bruger."
+
+msgid "You can insert this image into this message, or use it as the buddy icon for this user"
+msgstr "Du kan indsætte dette billede i beskeden, eller bruge det som venneikon for denne bruger"
 
 #. I don't know if we really want to do anything here.  Most of the desktop item types are crap like
 #. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
@@ -12850,12 +11993,8 @@
 msgid "Cannot send launcher"
 msgstr "Kan ikke sende starter"
 
-msgid ""
-"You dragged a desktop launcher. Most likely you wanted to send whatever this "
-"launcher points to instead of this launcher itself."
-msgstr ""
-"Du har trukket en skrivebords starter. Højst sandsynligt vil du sende hvad "
-"starteren peger på og ikke starten selv."
+msgid "You dragged a desktop launcher. Most likely you wanted to send whatever this launcher points to instead of this launcher itself."
+msgstr "Du har trukket en skrivebords starter. Højst sandsynligt vil du sende hvad starteren peger på og ikke starten selv."
 
 #, c-format
 msgid ""
@@ -12882,11 +12021,8 @@
 msgstr "Kunne ikke åbne fil \"%s\": %s"
 
 #, c-format
-msgid ""
-"Failed to load image '%s': reason not known, probably a corrupt image file"
-msgstr ""
-"Kunne ikke indlæse billeder \"%s\": årsag ikke kendt, måske en ødelagt "
-"billedefil"
+msgid "Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr "Kunne ikke indlæse billeder \"%s\": årsag ikke kendt, måske en ødelagt billedefil"
 
 msgid "Save File"
 msgstr "Gem fil"
@@ -12907,7 +12043,7 @@
 msgstr "_Invitér"
 
 msgid "_Modify..."
-msgstr "_Ændre..."
+msgstr "_Ændr..."
 
 msgid "_Add..."
 msgstr "_Tilføj..."
@@ -12922,13 +12058,13 @@
 msgstr "Pidgin værktøjstip"
 
 msgid "Pidgin smileys"
-msgstr "Pidgin smiley'er"
+msgstr "Pidgin smileyer"
 
 msgid "Penguin Pimps"
 msgstr "Penguin Pimps"
 
 msgid "Selecting this disables graphical emoticons."
-msgstr "Deaktiverer grafiske humørikoner."
+msgstr "Slår grafiske humørikoner fra."
 
 msgid "none"
 msgstr "intet"
@@ -12937,7 +12073,7 @@
 msgstr "Lille"
 
 msgid "Smaller versions of the default smilies"
-msgstr "Mindre udgaver af standard smiley'erne"
+msgstr "Mindre udgaver af standardsmileyerne"
 
 msgid "Response Probability:"
 msgstr "Svar sandsynlighed:"
@@ -12992,17 +12128,13 @@
 msgstr "Ven er mobil"
 
 msgid "Buddy is offline"
-msgstr "Ven er offline"
+msgstr "Ven er afkoblet"
 
 msgid "Point values to use when..."
 msgstr "Værdier der skal bruges når..."
 
-msgid ""
-"The buddy with the <i>largest score</i> is the buddy who will have priority "
-"in the contact.\n"
-msgstr ""
-"Vennen med den <i>højeste score</i> er den ven som vil have prioritet i "
-"kontakten.\n"
+msgid "The buddy with the <i>largest score</i> is the buddy who will have priority in the contact.\n"
+msgstr "Vennen med den <i>højeste score</i> er den ven som vil have prioritet i kontakten.\n"
 
 msgid "Use last buddy when scores are equal"
 msgstr "Brug den sidste ven når score er lige"
@@ -13022,19 +12154,12 @@
 #. *< name
 #. *< version
 #. *< summary
-msgid ""
-"Allows for controlling the values associated with different buddy states."
-msgstr ""
-"Giver mulighed for at kontrollere værdierne associeret med venners "
-"forskellige status."
+msgid "Allows for controlling the values associated with different buddy states."
+msgstr "Giver mulighed for at kontrollere værdierne tilknyttet venners forskellige status."
 
 #. *< description
-msgid ""
-"Allows for changing the point values of idle/away/offline states for buddies "
-"in contact priority computations."
-msgstr ""
-"Giver mulighed for at ændre værdierne af inaktiv/fraværende/offline status "
-"for venner i kontaktprioritets beregninger."
+msgid "Allows for changing the point values of idle/away/offline states for buddies in contact priority computations."
+msgstr "Giver mulighed for at ændre værdierne af inaktiv/fraværende/afkoblet status for venner i kontaktprioritets beregninger."
 
 msgid "Conversation Colors"
 msgstr "Samtalefarver"
@@ -13065,10 +12190,10 @@
 msgstr "Ignorér indkomne format"
 
 msgid "Apply in Chats"
-msgstr "Anvend i chat"
+msgstr "Anvend i samtaler"
 
 msgid "Apply in IMs"
-msgstr "Tilføj i kvik-beskeder"
+msgstr "Tilføj i beskeder"
 
 msgid "By conversation count"
 msgstr "Efter antallet af samtaler"
@@ -13077,18 +12202,14 @@
 msgstr "Samtale placering"
 
 #. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
-msgid ""
-"Note: The preference for \"New conversations\" must be set to \"By "
-"conversation count\"."
-msgstr ""
-"Bemærk: Indstillingerne for \"Nye samtaler\" skal sættes til \"Efter samtale "
-"antal\"."
+msgid "Note: The preference for \"New conversations\" must be set to \"By conversation count\"."
+msgstr "Bemærk: Indstillingerne for \"Nye samtaler\" skal sættes til \"Efter samtale antal\"."
 
 msgid "Number of conversations per window"
 msgstr "Antal af samtaler pr. vindue"
 
 msgid "Separate IM and Chat windows when placing by number"
-msgstr "Seperate besked- og chatvinduer når der placeres med tal"
+msgstr "Seperate besked- og samtalevinduer når der placeres efter tal"
 
 #. *< type
 #. *< ui_requirement
@@ -13102,16 +12223,12 @@
 #. *< name
 #. *< version
 msgid "Extra conversation placement options."
-msgstr "Ekstra placeringsmuligheder for samtaler."
+msgstr "Ekstra placeringsindstillinger for samtaler."
 
 #. *< summary
 #. *  description
-msgid ""
-"Restrict the number of conversations per windows, optionally separating IMs "
-"and Chats"
-msgstr ""
-"Begræns antallet af samtaler pr. vindue, med mulighed for seperate samtale- "
-"og chatvinduer"
+msgid "Restrict the number of conversations per windows, optionally separating IMs and Chats"
+msgstr "Begræns antallet af samtaler pr. vindue, med mulighed for seperate samtale- og samtalevinduer"
 
 #. Configuration frame
 msgid "Mouse Gestures Configuration"
@@ -13144,15 +12261,13 @@
 
 #. *  description
 msgid ""
-"Allows support for mouse gestures in conversation windows. Drag the middle "
-"mouse button to perform certain actions:\n"
+"Allows support for mouse gestures in conversation windows. Drag the middle mouse button to perform certain actions:\n"
 " • Drag down and then to the right to close a conversation.\n"
 " • Drag up and then to the left to switch to the previous conversation.\n"
 " • Drag up and then to the right to switch to the next conversation."
 msgstr ""
-"Giver understøttelse for musebevægelser i samtalevinduer. Træk i den "
-"midterste knap for at udføre forskellige handlinger:\n"
-" • Træk ned og derefter til højre, for at lukke en samtale.\n"
+"Giver understøttelse for musebevægelser i samtalevinduer. Træk i den midterste knap for at udføre forskellige handlinger:\n"
+" • Træk ned og derefter til højre, for at afslutte en samtale.\n"
 " • Træk op og derefter til venstre, for at skifte til den forrige samtale.\n"
 " • Træk op og derefter til højre, for at skifte til den næste samtale."
 
@@ -13175,12 +12290,8 @@
 msgstr "Vælg ven"
 
 #. Add the label.
-msgid ""
-"Select a person from your address book to add this buddy to, or create a new "
-"person."
-msgstr ""
-"Vælg en person fra din adressebog at tilføje denne ven til, eller tilføj en "
-"ny person."
+msgid "Select a person from your address book to add this buddy to, or create a new person."
+msgstr "Vælg en person fra din adressebog at tilføje denne ven til, eller tilføj en ny person."
 
 #. Add the expander
 msgid "User _details"
@@ -13188,7 +12299,7 @@
 
 #. "Associate Buddy" button
 msgid "_Associate Buddy"
-msgstr "_Associér ven"
+msgstr "_Tilknyt ven"
 
 msgid "Unable to send email"
 msgstr "Kunne ikke sende e-post"
@@ -13197,13 +12308,13 @@
 msgstr "Den ekskvebar Evolution fil blev ikke fundet i PATH."
 
 msgid "An email address was not found for this buddy."
-msgstr "En e-post-adresse blev ikke fundet for denne ven."
+msgstr "En e-postadresse blev ikke fundet for denne ven."
 
 msgid "Add to Address Book"
 msgstr "Tilføj til adressebog"
 
 msgid "Send Email"
-msgstr "Send email"
+msgstr "Send e-post"
 
 #. Configuration frame
 msgid "Evolution Integration Configuration"
@@ -13249,7 +12360,7 @@
 msgstr "Efternavn:"
 
 msgid "Email:"
-msgstr "Email:"
+msgstr "E-post:"
 
 #. *< type
 #. *< ui_requirement
@@ -13298,7 +12409,7 @@
 msgstr "Post-overvåger"
 
 msgid "Checks for new local mail."
-msgstr "Tjekker for lokal post."
+msgstr "Kontrollerer for lokal post."
 
 msgid "Adds a small box to the buddy list that shows if you have new mail."
 msgstr "Tilføjer en lille boks til vennelisten der viser om du har ny post."
@@ -13321,12 +12432,8 @@
 msgid "C_hat windows"
 msgstr "C_hat-vinduer"
 
-msgid ""
-"A music messaging session has been requested. Please click the MM icon to "
-"accept."
-msgstr ""
-"En musik-beskeds session er blevet anmodet. Klik på MM-ikonet for at "
-"acceptere."
+msgid "A music messaging session has been requested. Please click the MM icon to accept."
+msgstr "En musik-beskeds session er blevet anmodet. Klik på MM-ikonet for at acceptere."
 
 msgid "Music messaging session confirmed."
 msgstr "Musik beskeds-session bekræftet."
@@ -13362,15 +12469,11 @@
 #. *< name
 #. *< version
 msgid "Music Messaging Plugin for collaborative composition."
-msgstr "Musik besked modul for samarbejdskomposition."
+msgstr "Musik besked udvidelsesmodul for samarbejdskomposition."
 
 #. *  summary
-msgid ""
-"The Music Messaging Plugin allows a number of users to simultaneously work "
-"on a piece of music by editting a common score in real-time."
-msgstr ""
-"Musik beskeds modulet tillader flere bruger af gangen, til samtidig at "
-"arbejde på et stykke musik ved at redigere en fælles score i real-time."
+msgid "The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time."
+msgstr "Musik beskeds udvidelsesmodulet tillader flere bruger af gangen, til samtidig at arbejde på et stykke musik ved at redigere en fælles score i real-time."
 
 #. ---------- "Notify For" ----------
 msgid "Notify For"
@@ -13450,8 +12553,7 @@
 #. *  summary
 #. *  description
 msgid "Provides a variety of ways of notifying you of unread messages."
-msgstr ""
-"Giver mulighed for at påminde dig om ulæste beskeder på forskellige måder."
+msgstr "Giver mulighed for at påminde dig om ulæste beskeder på forskellige måder."
 
 #. *< type
 #. *< ui_requirement
@@ -13460,13 +12562,13 @@
 #. *< priority
 #. *< id
 msgid "Pidgin Demonstration Plugin"
-msgstr "Pidgin demonstrations-modul"
+msgstr "Pidgin demonstrationsudvidelsesmodul"
 
 #. *< name
 #. *< version
 #. *  summary
 msgid "An example plugin that does stuff - see the description."
-msgstr "Et eksempels-modul der gør forskellige ting - se beskrivelsen."
+msgstr "Et eksempel-udvidelsesmodul der gør forskellige ting - se beskrivelsen."
 
 #. *  description
 msgid ""
@@ -13487,13 +12589,13 @@
 msgstr "Sekundær markør farve"
 
 msgid "Hyperlink Color"
-msgstr "Link farve"
+msgstr "Farve på henvisning"
 
 msgid "Visited Hyperlink Color"
-msgstr "Farve for besøgt hyperlink"
+msgstr "Farve på besøgt henvisning"
 
 msgid "Highlighted Message Name Color"
-msgstr "Farvenavn for fremhævede beskeder"
+msgstr "Farve som bruges til fremhævede beskednavne"
 
 msgid "GtkTreeView Horizontal Separation"
 msgstr "GtkTreeView horisontal separering"
@@ -13564,25 +12666,19 @@
 msgstr "Genindlæs gtkrc filer"
 
 msgid "Pidgin GTK+ Theme Control"
-msgstr "Pidgin GTK+ tema kontrol"
+msgstr "Temakontrol til Pidgin GTK+"
 
 msgid "Provides access to commonly used gtkrc settings."
-msgstr "Giver adgang til fælles brugte gtkrc-indstillinger."
+msgstr "Giver adgang til normalt brugte gtkrc-indstillinger."
 
 msgid "Raw"
 msgstr "Rå"
 
 msgid "Lets you send raw input to text-based protocols."
-msgstr ""
-"Giver dig mulighed for at sende rå inddata til text-baserede protokoller."
-
-msgid ""
-"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
-"'Enter' in the entry box to send. Watch the debug window."
-msgstr ""
-"Giver dig mulighed for at sende rå inddata til tekstbaserede protokoller "
-"(XMPP, MSN, IRC, TOC). Tryk \"Enter\" i indtastningsfeltet for at sende. "
-"Hold øje med fejlsøgningsvinduet."
+msgstr "Giver dig mulighed for at sende rå inddata til text-baserede protokoller."
+
+msgid "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit 'Enter' in the entry box to send. Watch the debug window."
+msgstr "Giver dig mulighed for at sende rå inddata til tekstbaserede protokoller (XMPP, MSN, IRC, TOC). Tryk \"Enter\" i indtastningsfeltet for at sende. Hold øje med fejlsøgningsvinduet."
 
 #, c-format
 msgid "You can upgrade to %s %s today."
@@ -13613,12 +12709,8 @@
 msgstr "Tjekker periodisk efter nye udgivelser."
 
 #. *  description
-msgid ""
-"Checks periodically for new releases and notifies the user with the "
-"ChangeLog."
-msgstr ""
-"Tjeker periodisk efter nye udgivelser og viser brugeren hvilke ændringer der "
-"er i den nye udgivelse."
+msgid "Checks periodically for new releases and notifies the user with the ChangeLog."
+msgstr "Tjeker periodisk efter nye udgivelser og viser brugeren hvilke ændringer der er i den nye udgivelse."
 
 #. *< major version
 #. *< minor version
@@ -13629,23 +12721,19 @@
 #. *< priority
 #. *< id
 msgid "Send Button"
-msgstr "Send knap"
+msgstr "Sendknap"
 
 #. *< name
 #. *< version
 msgid "Conversation Window Send Button."
-msgstr "Samtalevindue send knap."
+msgstr "Samtalevindue sendknap."
 
 #. *< summary
-msgid ""
-"Adds a Send button to the entry area of the conversation window. Intended "
-"for when no physical keyboard is present."
-msgstr ""
-"Tilføjer en send-knappe til indtastningsområdet i samtalevinduet. Beregnet "
-"til når der ikke er noget fysisk tastatur tilstede."
+msgid "Adds a Send button to the entry area of the conversation window. Intended for when no physical keyboard is present."
+msgstr "Tilføjer en sendknap til indtastningsområdet i samtalevinduet. Beregnet til når der ikke er noget fysisk tastatur tilstede."
 
 msgid "Duplicate Correction"
-msgstr "Dublet rettelse"
+msgstr "Duplikér rettelse"
 
 msgid "The specified word already exists in the correction list."
 msgstr "Det angivne ord findes allerede i rettelseslisten."
@@ -13682,7 +12770,7 @@
 msgstr "Erstat kun _hele ord"
 
 msgid "General Text Replacement Options"
-msgstr "Generelle indstillinger for teksterstatning"
+msgstr "Generelle indstillinger til teksterstatning"
 
 msgid "Enable replacement of last word on send"
 msgstr "Slå erstatning af sidste ord ved send på"
@@ -13748,7 +12836,7 @@
 msgstr "For forsinkede beskeder"
 
 msgid "For delayed messages and in chats"
-msgstr "For forsinkede beskeder og i chats"
+msgstr "For forsinkede beskeder og i samtaler"
 
 msgid "_Message Logs:"
 msgstr "_Besked logs:"
@@ -13766,15 +12854,11 @@
 #. *< version
 #. *  summary
 msgid "Customizes the message timestamp formats."
-msgstr "Definerer formatet på tidsstempler i beskeder."
+msgstr "Tilpasser formatet på tidsstempler i beskeder."
 
 #. *  description
-msgid ""
-"This plugin allows the user to customize conversation and logging message "
-"timestamp formats."
-msgstr ""
-"Dette modul tillader brugeren selv at definere formatet på tidsstempler i "
-"samtaler og logs."
+msgid "This plugin allows the user to customize conversation and logging message timestamp formats."
+msgstr "Dette modul tillader brugeren selv at tilpasse formatet på tidsstempler i samtaler og logs."
 
 msgid "Opacity:"
 msgstr "Ugennemsigtighed:"
@@ -13784,7 +12868,7 @@
 msgstr "Beskedsamtalevinduer"
 
 msgid "_IM window transparency"
-msgstr "_Beskedvinduer gennemsigtighed"
+msgstr "_Gennemsigtighed af beskedvindue"
 
 msgid "_Show slider bar in IM window"
 msgstr "_Vis rullebjælke i beskedvindue"
@@ -13800,7 +12884,7 @@
 msgstr "Venneliste vindue"
 
 msgid "_Buddy List window transparency"
-msgstr "Venne_liste vindue gennemsigtighed"
+msgstr "Gennemsigtighed af venne_liste vindue"
 
 msgid "Remove Buddy List window transparency on focus"
 msgstr "Fjern venneliste vindue gennemsigtighed ved fokus"
@@ -13822,13 +12906,11 @@
 
 #. *  description
 msgid ""
-"This plugin enables variable alpha transparency on conversation windows and "
-"the buddy list.\n"
+"This plugin enables variable alpha transparency on conversation windows and the buddy list.\n"
 "\n"
 "* Note: This plugin requires Win2000 or greater."
 msgstr ""
-"Dette modul giver dig mulighed variabel alpha gennemsigtighed i samtale-"
-"vinduer og vennelisten.\n"
+"Dette modul giver dig mulighed variabel alpha gennemsigtighed i samtale-vinduer og vennelisten.\n"
 "\n"
 "* Bemærk: Dette modul kræver Win2000 eller bedre."
 
@@ -13855,15 +12937,13 @@
 msgstr "Kun når docked"
 
 msgid "Windows Pidgin Options"
-msgstr "Indstillinger for Windows Pidgin"
+msgstr "Indstillinger for Pidgin til Windows"
 
 msgid "Options specific to Pidgin for Windows."
-msgstr "Specifikke indstillinger for Windows Pidgin."
-
-msgid ""
-"Provides options specific to Pidgin for Windows , such as buddy list docking."
-msgstr ""
-"Giver muligheder specifikt til Windows Pidgin, såsom venneliste dokning."
+msgstr "Specifikke indstillinger for Pidgin til Windows."
+
+msgid "Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr "Indstillinger specifikt for Pidgin for Windows, såsom venneliste dokning."
 
 msgid "<font color='#777777'>Logged out.</font>"
 msgstr "<font color='#777777'>Loggede ud.</font>"
@@ -13900,13 +12980,10 @@
 
 #. *  description
 msgid "This plugin is useful for debbuging XMPP servers or clients."
-msgstr ""
-"Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller "
-"klienter."
+msgstr "Dette udvidelsesmodul er nyttigt for fejlsøgning af XMPP-servere eller klienter."
 
 #~ msgid "Unable to retrieve MSN Address Book"
 #~ msgstr "Ikke i stand til at hente MSN-adressebog"
-
 #~ msgid ""
 #~ "You may be disconnected shortly.  You may want to use TOC until this is "
 #~ "fixed.  Check %s for updates."
@@ -13941,19 +13018,14 @@
 #, fuzzy
 #~ msgid "Failed to send IM."
 #~ msgstr "Kunne ikke hente navn: %s"
-
 #~ msgid "User information for %s unavailable"
 #~ msgstr "Bruger oplysninger for %s er ikke tilgængelige"
-
 #~ msgid "_Flash window when chat messages are received"
-#~ msgstr "_Blink vindue når chat-beskeder modtages"
-
+#~ msgstr "_Blink vindue når samtalebeskeder modtages"
 #~ msgid "A group with the name already exists."
 #~ msgstr "En mappe med det navn eksisterer allerede."
-
 #~ msgid "Primary Information"
 #~ msgstr "Primær-information"
-
 #~ msgid "Blood Type"
 #~ msgstr "Blodtype"
 
@@ -13972,13 +13044,10 @@
 #~ msgstr ""
 #~ "Du prøver at opsætte et ansigt. Pidgin tillader, på nuværende tidspunkt, "
 #~ "kun standard ansigterne. Vælg venligst et billede fra "
-
 #~ msgid "Invalid QQ Face"
 #~ msgstr "Ugyldigt QQ-ansigt"
-
 #~ msgid "You rejected %d's request"
 #~ msgstr "Du afviste %d's anmodning"
-
 #~ msgid "Reject request"
 #~ msgstr "Afvis anmodning"
 
@@ -13993,20 +13062,17 @@
 #, fuzzy
 #~ msgid "QQ Number Error"
 #~ msgstr "QQ-nummer"
-
 #~ msgid "Group Description"
 #~ msgstr "Gruppebeskrivelse"
-
 #~ msgid "Auth"
 #~ msgstr "Godkend"
-
 #~ msgid "Approve"
 #~ msgstr "Godkend"
 
 #, fuzzy
 #~ msgid "Successed to join Qun %d, operated by admin %d"
 #~ msgstr ""
-#~ "Din forspørgelse om at blive medlem af gruppen %d er blevet afslået af "
+#~ "Din forspørgelse om at tilslutte gruppen %d er blevet afslået af "
 #~ "administrator %d"
 
 #, fuzzy
@@ -14016,17 +13082,14 @@
 #, fuzzy
 #~ msgid "[%d] added to Qun \"%d\""
 #~ msgstr "Du [%d] er blevet tilføjet af gruppe \"%d\""
-
 #~ msgid "I am a member"
 #~ msgstr "Jeg er medlem"
 
 #, fuzzy
 #~ msgid "I am requesting"
 #~ msgstr "Ugyldig anmodning"
-
 #~ msgid "I am the admin"
 #~ msgstr "Jeg er administratoren"
-
 #~ msgid "Unknown status"
 #~ msgstr "Ukendt status"
 
@@ -14044,7 +13107,7 @@
 
 #, fuzzy
 #~ msgid "Do you want to approve the request?"
-#~ msgstr "Vil du godkende denne forespørgelse?"
+#~ msgstr "Vil du godkende denne forespørgsel?"
 
 #, fuzzy
 #~ msgid "Change Qun member"
@@ -14053,13 +13116,10 @@
 #, fuzzy
 #~ msgid "Change Qun information"
 #~ msgstr "Kanal oplysninger"
-
 #~ msgid "System Message"
 #~ msgstr "Systembesked"
-
 #~ msgid "<b>Last Login IP</b>: %s<br>\n"
 #~ msgstr "<b>Sidste logind IP</b>: %s<br>\n"
-
 #~ msgid "<b>Last Login Time</b>: %s\n"
 #~ msgstr "<b>Sidste logind tid</b>: %s\n"
 
@@ -14091,7 +13151,7 @@
 
 #, fuzzy
 #~ msgid "Do you approve the requestion?"
-#~ msgstr "Vil du godkende denne forespørgelse?"
+#~ msgstr "Vil du godkende denne forespørgsel?"
 
 #, fuzzy
 #~ msgid "Do you add the buddy?"
@@ -14124,13 +13184,12 @@
 #, fuzzy
 #~ msgid "Network disconnected"
 #~ msgstr "%s afbrudt"
-
 #~ msgid "developer"
 #~ msgstr "udvikler"
 
 #, fuzzy
 #~ msgid "XMPP developer"
-#~ msgstr "udvikler"
+#~ msgstr "XMPP-udvikler"
 
 #, fuzzy
 #~ msgid "Artists"
@@ -14147,105 +13206,78 @@
 #~ msgstr ""
 #~ "<b>Ændringer:</b>\n"
 #~ "%s<br><br>"
-
 #~ msgid "Screen name:"
 #~ msgstr "Brugernavn:"
 
 #, fuzzy
 #~ msgid "Show offline buddies"
 #~ msgstr "Vis afkoblede venner"
-
 #~ msgid "Sort by status"
 #~ msgstr "Sorter efter status"
-
 #~ msgid "Sort alphabetically"
 #~ msgstr "Sorter alfabetisk"
-
 #~ msgid "Sort by log size"
 #~ msgstr "Sorter efter logstørrelse"
 
 #, fuzzy
 #~ msgid "Pounce only when my status is not available"
 #~ msgstr "Over_våg kun når min status er ikke tilgængelig"
-
 #~ msgid "Someone says your screen name in chat"
-#~ msgstr "Nogle siger dit brugernavn i chat"
-
+#~ msgstr "Nogle siger dit brugernavn i samtale"
 #~ msgid "EOF while reading from resolver process"
 #~ msgstr "EOF ved læsning fra resolver-proces"
 
 #, fuzzy
 #~ msgid "There were errors unloading the plugin."
 #~ msgstr "Pidgin kunne ikke udlæse modulet."
-
 #~ msgid "Error setting socket options"
 #~ msgstr "Fejl ved opsætning af socket indstillinger"
-
 #~ msgid "Couldn't open file"
 #~ msgstr "Kan ikke åbne fil"
-
 #~ msgid ""
 #~ "This server requires plaintext authentication over an unencrypted "
 #~ "connection.  Allow this and continue authentication?"
 #~ msgstr ""
-#~ "Denne server kræver at godkendelse sker ved ren tekst (uden kryptering). "
+#~ "Denne server kræver at godkendelse sker i klartekst (uden kryptering). "
 #~ "Tillad dette og fortsæt godkendelse?"
-
 #~ msgid "Error initializing session"
 #~ msgstr "Fejl ved initialisering af session"
-
 #~ msgid "Invalid screen name"
 #~ msgstr "Ugyldigt skærmnavn"
-
 #~ msgid "Unable to make SSL connection to server."
 #~ msgstr "Kunne ikke skabe SSL-forbindelse til server."
-
 #~ msgid "Too evil (sender)"
 #~ msgstr "For ond (afsender)"
-
 #~ msgid "Too evil (receiver)"
 #~ msgstr "For ond (modtager)"
-
 #~ msgid "Screen name sent"
 #~ msgstr "Brugernavn sendt"
-
 #~ msgid "Invalid screen name."
 #~ msgstr "Ugyldigt skærmnavn."
-
 #~ msgid "Available Message"
 #~ msgstr "Tilgængelig besked"
-
 #~ msgid "Screen name"
 #~ msgstr "Skærmnavn"
-
 #~ msgid "Invalid chat name specified."
-#~ msgstr "Ugyldigt chatnavn angivet."
-
+#~ msgstr "Ugyldigt samtalenavn angivet."
 #~ msgid "Away Message"
 #~ msgstr "Fraværs-besked"
-
 #~ msgid "<i>(retrieving)</i>"
 #~ msgstr " <i>(modtager)</i>"
-
 #~ msgid "Use recent buddies group"
 #~ msgstr "Brug seneste vennegruppe"
-
 #~ msgid "Show how long you have been idle"
 #~ msgstr "Vis hvor lang tid du har været inaktiv"
-
 #~ msgid ""
 #~ "Always use ICQ proxy server for file transfers\n"
 #~ "(slower, but does not reveal your IP address)"
 #~ msgstr ""
 #~ "Brug altid ICQ-mellemværtssever til filoverførelser\n"
 #~ "(langsommere, men afslører ikke din IP-adresse)"
-
 #~ msgid "Your information has been updated"
 #~ msgstr "Din information er blevet opdateret"
-
 #~ msgid "Input your reason:"
 #~ msgstr "Angiv din grund:"
-
 #~ msgid "You have successfully removed a buddy"
 #~ msgstr "Du har fjernet en ven."
 
@@ -14256,43 +13288,36 @@
 #, fuzzy
 #~ msgid "You have added %d to buddy list"
 #~ msgstr "Du har tilføjet %d i vennelisten"
-
 #~ msgid "Invalid QQid"
 #~ msgstr "Ugyldigt QQid"
 
 #, fuzzy
 #~ msgid "Please enter external group ID"
 #~ msgstr "Venligt indtast en ekstern gruppe-ID"
-
 #~ msgid "Reason: %s"
 #~ msgstr "Grund: %s"
 
 #, fuzzy
 #~ msgid "Your request to join group %d has been approved by admin %d"
 #~ msgstr ""
-#~ "Din forespørgelse om at blive medlem af gruppen %d er blevet godkendt af "
+#~ "Din forespørgsel om at tilslutte gruppen %d er blevet godkendt af "
 #~ "administrator %d"
-
 #~ msgid "This group has been added to your buddy list"
 #~ msgstr "Denne gruppe er blevet tilføjet til din venneliste"
-
 #~ msgid "I am applying to join"
-#~ msgstr "Jeg prøver at blive medlem"
+#~ msgstr "Jeg prøver at tilslutte"
 
 #, fuzzy
 #~ msgid "You have successfully left the group"
 #~ msgstr "Du har forladt gruppen"
-
 #~ msgid "QQ Group Auth"
 #~ msgstr "QQ gruppe autorisation"
 
 #, fuzzy
 #~ msgid "Your authorization request has been accepted by the QQ server"
 #~ msgstr "Din autorisations-operation er blevet accepteret af QQ-serveren"
-
 #~ msgid "Code [0x%02X]: %s"
 #~ msgstr "Kode [0x%02X]: %s"
-
 #~ msgid "Group Operation Error"
 #~ msgstr "Gruppe-operationsfejl"
 
@@ -14303,7 +13328,6 @@
 #, fuzzy
 #~ msgid "Error requesting login token"
 #~ msgstr "Fejl ved oprettelse af forbindelse"
-
 #~ msgid "Unable to login, check debug log"
 #~ msgstr "Kunne ikke logge ind, kontrollér fejlsøgningslog"
 
@@ -14314,29 +13338,22 @@
 #, fuzzy
 #~ msgid "UDP Address"
 #~ msgstr "IP-adresse"
-
 #~ msgid "Show Login Information"
 #~ msgstr "Vis logind information"
-
 #~ msgid "Login failed, no reply"
 #~ msgstr "Logind slog fejl, intet svar"
-
 #~ msgid "User %s rejected your request"
-#~ msgstr "Bruger %s afslog din forespørgelse"
+#~ msgstr "Bruger %s afslog din forespørgsel"
 
 #, fuzzy
 #~ msgid "User %s approved your request"
-#~ msgstr "Bruger %s har godkendt din forespørgelse"
-
+#~ msgstr "Bruger %s har godkendt din forespørgsel"
 #~ msgid "Cannot find/access ~/.silc directory"
 #~ msgstr "Kan ikke finde eller tilgå ~/.silc mappe"
-
 #~ msgid "%s changed status from %s to %s"
 #~ msgstr "%s ændrede status fra %s til %s"
-
 #~ msgid "%s is now %s"
 #~ msgstr "%s er nu %s"
-
 #~ msgid "%s is no longer %s"
 #~ msgstr "%s er ikke længere %s"
 
@@ -14351,16 +13368,12 @@
 #, fuzzy
 #~ msgid "Add Buddy _Pounce"
 #~ msgstr "Tilføj overvågning"
-
 #~ msgid "Add a C_hat"
-#~ msgstr "Tilføj en _chat"
-
+#~ msgstr "Tilføj en _samtale"
 #~ msgid "/Accounts/Add\\/Edit"
 #~ msgstr "/Konti/Tilføj\\/Redigér"
-
 #~ msgid "<span color=\"red\">%s disconnected: %s</span>"
 #~ msgstr "<span color=\"red\">%s afbrudt: %s</span>"
-
 #~ msgid ""
 #~ "Please enter the screen name of the person you would like to add to your "
 #~ "buddy list. You may optionally enter an alias, or nickname,  for the "
@@ -14386,36 +13399,30 @@
 #~ " \n"
 #~ "Pidgin vil ikke forsøge at genforbinde til kontoen før du retter fejlen "
 #~ "og genaktiverer kontoen."
-
 #~ msgid "User has typed something and stopped"
 #~ msgstr "Bruger har skrevet noget, og stoppet"
 
 #, fuzzy
 #~ msgid "_Send To"
 #~ msgstr "_Send til"
-
 #~ msgid ""
 #~ "%s%s<span weight=\"bold\">Written by:</span>\t%s\n"
 #~ "<span weight=\"bold\">Website:</span>\t\t%s\n"
 #~ "<span weight=\"bold\">Filename:</span>\t\t%s"
 #~ msgstr ""
 #~ "%s%s<span weight=\"bold\">Skrevet af:</span>\t%s\n"
-#~ "<span weight=\"bold\">Web site:</span>\t\t%s\n"
+#~ "<span weight=\"bold\">Websted:</span>\t\t%s\n"
 #~ "<span weight=\"bold\">Filnavn:</span>\t\t%s"
-
 #~ msgid "Display Statistics"
 #~ msgstr "Vis statistikker"
-
 #~ msgid ""
 #~ "The contact availability plugin (cap) is used to display statistical "
 #~ "information about buddies in a users contact list."
 #~ msgstr ""
 #~ "Tilgængelighedsforudsigelses-udvidelsesmodulet (cap) bruges til at vise "
 #~ "statistik-information om venner i en brugers kontaktliste."
-
 #~ msgid "Conversation History"
 #~ msgstr "Samtale historik"
-
 #~ msgid "Log Viewer"
 #~ msgstr "Loglæser"
 
@@ -14425,7 +13432,7 @@
 
 #, fuzzy
 #~ msgid "Current media"
-#~ msgstr "Nuværende symbol"
+#~ msgstr "Nuværende medie"
 
 #, fuzzy
 #~ msgid "Unable to connect to OIM server"
@@ -14438,88 +13445,64 @@
 #, fuzzy
 #~ msgid "A_ccount:"
 #~ msgstr "Konto:"
-
 #~ msgid "Toggle offline buddies"
 #~ msgstr "Afkoblet venner til/fra"
-
 #~ msgid ""
 #~ "%s was disconnected due to the following error:\n"
 #~ "%s"
 #~ msgstr ""
 #~ "%s blev afbrudt grundet følgende fejl:\n"
 #~ "%s"
-
 #~ msgid "Commands are not supported yet. Message was NOT sent."
 #~ msgstr "Kommandoer er ikke understøttet endnu. Besked blev IKKE sendt."
-
 #~ msgid "Timestamps"
 #~ msgstr "Tidsstempler"
-
 #~ msgid "..."
 #~ msgstr "..."
-
 #~ msgid "Still need to do something about this."
 #~ msgstr "Mangler stadig at gøre noget ved dette."
-
 #~ msgid "Alias..."
 #~ msgstr "Alias..."
-
 #~ msgid "/Tools/Buddy Pounces"
 #~ msgstr "/Værktøjer/Venneovervågning"
-
 #~ msgid "/Options/Show Buddy _Icon"
-#~ msgstr "/Valgmuligheder/Vis venne_ikoner"
-
+#~ msgstr "/Indstillinger/Vis venne_ikoner"
 #~ msgid "/Options/Show Buddy Icon"
-#~ msgstr "/Valgmuligheder/Vis venne_ikoner"
-
+#~ msgstr "/Indstillinger/Vis venne_ikoner"
 #~ msgid "Jabber developer"
 #~ msgstr "Jabber udvikler"
-
 #~ msgid "<FONT SIZE=\"4\">IRC:</FONT> #winPidgin on irc.freenode.net<BR><BR>"
 #~ msgstr "<FONT SIZE=\"4\">IRC:</FONT> #winPidgin på irc.freenode.net<BR><BR>"
-
 #~ msgid "Smaller font size"
 #~ msgstr "Mindre skriftstørrelse"
-
 #~ msgid "Insert link"
-#~ msgstr "Indsæt link"
-
+#~ msgstr "Indsæt henvisning"
 #~ msgid "Insert image"
 #~ msgstr "Indsæt billede"
-
 #~ msgid "Pidgin %s. Try `%s -h' for more information.\n"
 #~ msgstr "Pidgin %s. Prøv `%s -h' for flere oplysninger.\n"
-
 #~ msgid "Show buddy _icons"
 #~ msgstr "Vis venne_ikoner"
-
 #~ msgid ""
 #~ "You can send this image as a file transfer or embed it into this message, "
 #~ "or use it as the buddy icon for this user."
 #~ msgstr ""
 #~ "Du kan sende dette billede som en filoverførsel, vedlægge det til en "
 #~ "besked, eller bruge det som venneikonet for denne bruger."
-
 #~ msgid "GtkTreeView Expander Size"
 #~ msgstr "GtkTreeView udfoldelses-pil størrelse"
-
 #~ msgid "GtkTreeView Indent Expanders"
 #~ msgstr "GtkTreeView indryknings pile"
-
 #~ msgid "Tools"
 #~ msgstr "Værktøjer"
-
 #~ msgid ""
 #~ "You can get version %s from:<br><a href=\"http://Pidgin.sourceforge.net/"
 #~ "\">http://Pidgin.sourceforge.net</a>."
 #~ msgstr ""
 #~ "Du kan få version %s fra:<br><a href=\"http://Pidgin.sourceforge.net/"
 #~ "\">http://Pidgin.sourceforge.net</a>."
-
 #~ msgid "WinPidgin Options"
 #~ msgstr "WinPidgin Indstillinger"
-
 #~ msgid ""
 #~ "%d buddy from group %s was not removed because it belongs to an account "
 #~ "which is disabled or offline.  This buddy and the group were not "
@@ -14530,23 +13513,18 @@
 #~ "were not removed.\n"
 #~ msgstr[0] ""
 #~ "%d ven fra gruppe %s blev ikke fjernet fordi den tilhører en konto som er "
-#~ "slået fra eller offline. Denne ven og gruppen blev ikke flyttet.\n"
+#~ "slået fra eller afkoblet. Denne ven og gruppen blev ikke flyttet.\n"
 #~ msgstr[1] ""
 #~ "%d venner fra gruppe %s blev ikke fjernet fordi de tilhører en konto som "
-#~ "er slået fra eller offline. Disse venner og gruppen blev ikke flyttet.\n"
-
+#~ "er slået fra eller afkoblet. Disse venner og gruppen blev ikke flyttet.\n"
 #~ msgid "Group not removed"
 #~ msgstr "Gruppe ikke fjernet"
-
 #~ msgid "Old Pidgin"
 #~ msgstr "Gammel Pidgin"
-
 #~ msgid "Autoreply"
 #~ msgstr "Automatisk svar"
-
 #~ msgid "Autoreply for all the protocols"
 #~ msgstr "Automatisk svar for alle protokollerne"
-
 #~ msgid ""
 #~ "This plugin lets you set autoreply message for any protocol. You can set "
 #~ "the global autoreply message from the Plugin-options dialog. To set some "
@@ -14560,112 +13538,80 @@
 #~ "automatisk svarbesked for en bestemt ven, højreklik på vennen i "
 #~ "venneliste-vinduet. For at sætte en automatisk svarbesked for bestemte "
 #~ "konti, gå til \"Avanceret\"-fanen i Konto-redigér-vinduet."
-
 #~ msgid "Set autoreply message for %s"
 #~ msgstr "Sæt automatisk svarbesked for %s"
-
 #~ msgid "Set Autoreply Message"
 #~ msgstr "Sæt automatisk svarbesked"
-
 #~ msgid ""
 #~ "The following message will be sent to the buddy when the buddy sends you "
 #~ "a message and autoreply is enabled."
 #~ msgstr ""
 #~ "Følgende besked vil blive sendt til vennen når vennen sender dig en "
 #~ "besked og automatisk svarbesked er aktiveret."
-
 #~ msgid "Set _Autoreply Message"
 #~ msgstr "Sæt _automatisk svarbesked"
-
 #~ msgid "Autoreply message"
 #~ msgstr "Automatisk svarbesked"
-
 #~ msgid "Send autoreply messages when"
 #~ msgstr "Send automatisk svarbesked når"
-
 #~ msgid "When my account is _away"
 #~ msgstr "Når min konto er _væk"
-
 #~ msgid "When my account is _idle"
 #~ msgstr "Når min konto er _fraværende"
-
 #~ msgid "_Default reply"
 #~ msgstr "_Standard-svar"
-
 #~ msgid "Status message"
 #~ msgstr "Status-besked"
-
 #~ msgid "Autoreply with status message"
 #~ msgstr "Automatisk svar med statusbesked"
-
 #~ msgid "Always when there is a status message"
 #~ msgstr "Altid når der er en statusbesked"
-
 #~ msgid "Only when there's no autoreply message"
 #~ msgstr "Kun når der ikke er nogen automatisk svarbesked"
-
 #~ msgid "Delay between autoreplies"
 #~ msgstr "Forsinkelse mellem automatisk svar"
-
 #~ msgid "_Minimum delay (mins)"
 #~ msgstr "_Mindste forsinkelse (mins)"
-
 #~ msgid "Times to send autoreplies"
 #~ msgstr "Antal gange der sendes automatisk svar"
-
 #~ msgid "Ma_ximum count"
 #~ msgstr "Maksimum tæller"
-
 #~ msgid ""
 #~ "I am currently not available. Please leave your message, and I will get "
 #~ "back to you as soon as possible."
 #~ msgstr ""
 #~ "Jeg er ikke til stede. Vær venlig at efterlade en besked, og jeg vil "
 #~ "vende tilbage til dig hurtigst muligt."
-
 #~ msgid "Pidgin User"
 #~ msgstr "Pidgin bruger"
-
 #~ msgid "Jabber Account"
 #~ msgstr "Jabber-konto"
-
 #~ msgid "Server couldn't authenticate you without a password"
 #~ msgstr "Server kunne ikke godkende dig uden en adgangskode"
-
 #~ msgid "Search for Jabber users"
 #~ msgstr "Søg efter Jabber brugere"
-
 #~ msgid "Invalid Jabber ID"
 #~ msgstr "Ugyldigt Jabber ID"
-
 #~ msgid "Change Jabber Password"
-#~ msgstr "Skift Jabber adgangskode"
-
+#~ msgstr "Ændr Jabber adgangskode"
 #~ msgid "Jabber Protocol Plugin"
 #~ msgstr "Jabber protokolmodul"
-
 #~ msgid "You have just sent a Nudge!"
 #~ msgstr "Du har sendt et vink!"
-
 #~ msgid "SNAC threw error: %s\n"
 #~ msgstr "SNAC gav fejlen: %s\n"
-
 #~ msgid "User information for %s unavailable:"
 #~ msgstr "Bruger oplysninger for %s er ikke tilgængelige:"
-
 #~ msgid "Rate limiting error."
 #~ msgstr "Grænsefejl."
-
 #~ msgid "You have been signed off for an unknown reason."
 #~ msgstr "Du er blevet logget af pga. en ukendt årsag."
-
 #~ msgid ""
 #~ "Your screen name is currently formatted as follows:\n"
 #~ "%s"
 #~ msgstr ""
 #~ "Dit brugernavn er formatter således på nuværende tidspunkt:\n"
 #~ "%s"
-
 #~ msgid ""
 #~ "Could not add the buddy %s for an unknown reason.  The most common reason "
 #~ "for this is that you have the maximum number of allowed buddies in your "
@@ -14673,73 +13619,50 @@
 #~ msgstr ""
 #~ "Kunne ikke tilføje vennen %s pga. en ukendt årsag. Den normale grund for "
 #~ "dette er at du har det maskimale antal tilladte venner i din venneliste."
-
 #~ msgid "New screen name formatting:"
 #~ msgstr "Ny brugernavn formatering:"
-
 #~ msgid "Format Screen Name..."
 #~ msgstr "Formatér brugernavn..."
-
 #~ msgid "_Connect"
 #~ msgstr "_Tilslut"
-
 #~ msgid "Are you sure to exit this Qun?"
 #~ msgstr "Er du sikker på at du vil forlade denne Qun?"
-
 #~ msgid "Go ahead"
 #~ msgstr "Fortsæt"
-
 #~ msgid "Server ACK"
 #~ msgstr "Server-ACK"
-
 #~ msgid "Send IM fail\n"
-#~ msgstr "Send kvik-besked fejlede\n"
-
+#~ msgstr "Send besked fejlede\n"
 #~ msgid "Keep alive error, seems connection lost!"
 #~ msgstr "Hold i live fejl, lader til at forbindelsen er tabt!"
-
 #~ msgid "Request login token error!"
 #~ msgstr "Login forespørgelesmærke-fejl!"
-
 #~ msgid "%s Address"
 #~ msgstr "%s-adresse"
-
 #~ msgid "QQ: Available"
 #~ msgstr "QQ: Tilgængelig"
-
 #~ msgid "QQ: Away"
 #~ msgstr "QQ: Fraværende"
-
 #~ msgid "QQ: Invisible"
 #~ msgstr "QQ: Usynlig"
-
 #~ msgid "QQ: Offline"
-#~ msgstr "QQ: Offline"
-
+#~ msgstr "QQ: Afkoblet"
 #~ msgid "Login in TCP"
 #~ msgstr "Logind i TCP"
-
 #~ msgid "Login Hidden"
 #~ msgstr "Skjult logind"
-
 #~ msgid "Socket send error"
 #~ msgstr "Sokkel sendefejl"
-
 #~ msgid "Would like to add him?"
 #~ msgstr "Vil du tilføje ham?"
-
 #~ msgid "Reject watching by other users"
 #~ msgstr "Nægt andre brugere at kigge på"
-
 #~ msgid "Block invites"
 #~ msgstr "Blokér invitationer"
-
 #~ msgid "Reject online status attribute requests"
 #~ msgstr "Nægt anmodning om online status-attributter"
-
 #~ msgid "TOC has sent a PAUSE command."
 #~ msgstr "TOC har sendt en PAUSE kommando."
-
 #~ msgid ""
 #~ "When this happens, TOC ignores any messages sent to it, and may kick you "
 #~ "off if you send a message. Pidgin will prevent anything from going "
@@ -14749,10 +13672,8 @@
 #~ "risikere at blive logget af, hvis du forsøger at sende en besked. Pidgin "
 #~ "vil derfor tilbageholde alle beskeder. Dette er kun midlertidigt, så hav "
 #~ "tålmodighed."
-
 #~ msgid "Pidgin - Save As..."
 #~ msgstr "Pidgin - Gem som..."
-
 #~ msgid ""
 #~ "The normal authentication method has failed. This means either your "
 #~ "password is incorrect, or Yahoo!'s authentication scheme has changed. "
@@ -14763,48 +13684,34 @@
 #~ "adgangskode er forkert, eller at Yahoo!'s godkendelsesmetode er blevet "
 #~ "ændret. Pidgin vil nu forsøge at logge ind via Web Messenger-"
 #~ "godkendelsesmetoden, som vil resultere i begrænset funktionalitet."
-
 #~ msgid "Unavailable"
 #~ msgstr "Ikke tilgængelig"
-
 #~ msgid "Crazychat"
 #~ msgstr "Skørchat"
-
 #~ msgid "Plugin to establish a Crazychat session."
 #~ msgstr "Plugin til at etablere en skørchat session."
-
 #~ msgid "Uses Pidgin to obtain buddy ips to connect for a Crazychat session"
 #~ msgstr ""
 #~ "Bruger Pidgin til at finde venners ip-adresser til at forbinde til en "
 #~ "skørchat session"
-
 #~ msgid "Network Configuration"
 #~ msgstr "Netværksopsætning"
-
 #~ msgid "TCP port"
 #~ msgstr "TCP port"
-
 #~ msgid "UDP port"
 #~ msgstr "UDP port"
-
 #~ msgid "Feature Calibration"
 #~ msgstr "Funktionalitets justering"
-
 #~ msgid "DBus"
 #~ msgstr "DBus"
-
 #~ msgid "Blink tray icon for unread..."
 #~ msgstr "Blink statusikon for ulæste..."
-
 #~ msgid "_Instant Messages:"
 #~ msgstr "_Kvikbeskeder:"
-
 #~ msgid "C_hat Messages:"
 #~ msgstr "C_hat beskeder:"
-
 #~ msgid "Displays an icon for Pidgin in the system tray."
 #~ msgstr "Viser et Pidgin-ikon i statusområdet."
-
 #~ msgid ""
 #~ "Displays a system tray icon (in GNOME, KDE, or Windows for example) to "
 #~ "show the current status of Pidgin, allow fast access to commonly used "
@@ -14815,74 +13722,60 @@
 #~ "vise Pidgins nuværende status. Det tillader hurtig adgang til ofte brugte "
 #~ "funktioner, og du kan hurtigt skjule/vise vennelisten. Det giver også "
 #~ "mulighed for at blinke når der er ulæste beskeder."
-
 #~ msgid "The specified buddy was not found in the Evolution Contacts."
 #~ msgstr "Den angivne ven blev ikke fundet i Evolution kontakter"
-
 #~ msgid "Delay"
 #~ msgstr "Forsinkelse"
-
 #~ msgid "Buddy icon:"
 #~ msgstr "Venneikon:"
-
 #~ msgid ""
 #~ "\n"
 #~ "<b>Nickname:</b> %s"
 #~ msgstr ""
 #~ "\n"
 #~ "<b>Kælenavn:</b> %s"
-
 #~ msgid ""
 #~ "\n"
 #~ "<b>Logged In:</b> %s"
 #~ msgstr ""
 #~ "\n"
 #~ "<b>Logget ind:</b> %s"
-
 #~ msgid ""
 #~ "\n"
 #~ "<b>Idle:</b> %s"
 #~ msgstr ""
 #~ "\n"
 #~ "<b>Inaktiv:</b> %s"
-
 #~ msgid ""
 #~ "\n"
 #~ "<b>Status:</b> Offline"
 #~ msgstr ""
 #~ "\n"
-#~ "<b>Status:</b> Offline"
-
+#~ "<b>Status:</b> Afkoblet"
 #~ msgid ""
 #~ "\n"
 #~ "<b>Description:</b> Spooky"
 #~ msgstr ""
 #~ "\n"
 #~ "<b>Beskrivelse:</b> Skræmmende"
-
 #~ msgid ""
 #~ "\n"
 #~ "<b>Status:</b> Awesome"
 #~ msgstr ""
 #~ "\n"
 #~ "<b>Status:</b> Enestående"
-
 #~ msgid ""
 #~ "\n"
 #~ "<b>Status:</b> Rockin'"
 #~ msgstr ""
 #~ "\n"
 #~ "<b>Status:</b> Fantastisk"
-
 #~ msgid "IM the user"
 #~ msgstr "Send besked til bruger"
-
 #~ msgid "Ignore the user"
 #~ msgstr "Ignorér brugeren"
-
 #~ msgid "Get the user's information"
 #~ msgstr "Hent brugerens oplysninger"
-
 #~ msgid ""
 #~ "<span weight=\"bold\" size=\"larger\">You have mail!</span>\n"
 #~ "\n"
@@ -14891,161 +13784,120 @@
 #~ "<span weight=\"bold\" size=\"larger\">Du har fået post!</span>\n"
 #~ "\n"
 #~ "%s"
-
 #~ msgid "Send unknown \"_slash\" commands as messages"
 #~ msgstr "Send ukendte \"_skråstreg\" kommandoer som beskeder"
-
 #~ msgid "Tab Options"
 #~ msgstr "Faneblad indstillinger"
-
 #~ msgid "_Sounds while away"
 #~ msgstr "Afspil _lyde under fravær"
-
 #~ msgid ""
 #~ "Unable to play sound because the 'Command' sound method has been chosen, "
 #~ "but no command has been set."
 #~ msgstr ""
 #~ "Kunne ikke afspille lyd fordi 'Kommando' lydmetoden er blevet valgt, men "
 #~ "ingen kommando er blevet sat."
-
 #~ msgid ""
 #~ "Unable to play sound because the configured sound command could not be "
 #~ "launched: %s"
 #~ msgstr ""
 #~ "Ikke i stand til at afspille lyd fordi den opsatte lydkommando ikke kunne "
 #~ "køres: %s"
-
 #~ msgid ""
 #~ "\n"
 #~ "<b>Status:</b> %s"
 #~ msgstr ""
 #~ "\n"
 #~ "<b>Status</b>: %s"
-
 #~ msgid ""
 #~ "\n"
 #~ "<b>Message:</b> %s"
 #~ msgstr ""
 #~ "\n"
 #~ "<b>Besked:</b> %s"
-
 #~ msgid "Unable to initiate a new search"
 #~ msgstr "Kunne ikke lave en ny søgning"
-
 #~ msgid "You have a pending search. Please wait for it to finish."
 #~ msgstr "Du har en søgning i gang. Vent til den afslutter."
-
 #~ msgid "<b>%s:</b> %s"
 #~ msgstr "<b>%s:</b> %s"
-
 #~ msgid ""
 #~ "Server requires TLS/SSL for login.  Select \"Use TLS if available\" in "
 #~ "account properties"
 #~ msgstr ""
 #~ "Server kræevr TLS/SSL til logind.  Vælg \"Brug TLS hvis tilgængeligt\" i "
 #~ "kontoegenskaber"
-
 #~ msgid "Use TLS if available"
 #~ msgstr "Brug TLS hvis tilgængelig"
-
 #~ msgid "The user %s wants to add %s to his or her buddy list."
 #~ msgstr "Brugeren %s vil tilføje %s til sin venneliste."
-
 #~ msgid "_Authorize"
 #~ msgstr "_Godkend"
-
 #~ msgid "_Deny"
 #~ msgstr "_Nægt"
-
 #~ msgid "%s<b>General</b><br>%s"
 #~ msgstr "%s<b>Generelt</b><br>%s"
-
 #~ msgid "%s<b>Social</b><br>%s"
 #~ msgstr "%s<b>Social</b><br>%s"
-
 #~ msgid "<br><b>Personal</b><br>%s"
 #~ msgstr "<br><b>Personlig</b><br>%s"
-
 #~ msgid "<br><b>Business</b><br>%s"
 #~ msgstr "<br><b>Erhverv</b><br>%s"
-
 #~ msgid "<hr><b>Contact Info</b>%s%s"
 #~ msgstr "<hr><b>Kontaktoplysninger</b>%s%s"
-
 #~ msgid "<hr><b>%s:</b> "
 #~ msgstr "<hr><b>%s:</b> "
-
 #~ msgid "Login server"
 #~ msgstr "Indlogningsserver"
-
 #~ msgid "The user %s (%s) wants to add %s to his or her buddy list."
 #~ msgstr "Brugeren %s (%s) vil tilføje %s til sin venneliste."
-
 #~ msgid "Unable to read header from server"
 #~ msgstr "Kunne ikke hente hoved fra server"
-
 #~ msgid ""
 #~ "Unable to read message from server: %s.  Command is %hd, length is %hd."
 #~ msgstr ""
 #~ "Kunne ikke læse besked fra server: %s. Kommando er %hd, længde er %hd."
-
 #~ msgid "users: %s, files: %s, size: %sGB"
 #~ msgstr "brugere: %s, filer: %s, størrelse: %sGB"
-
 #~ msgid "Unable to add \"%s\" to your Napster hotlist"
 #~ msgstr "Kunne ikke tilføje \"%s\" til din Napster hotlist"
-
 #~ msgid "%s requested a PING"
 #~ msgstr "%s anmodede om PING"
-
 #~ msgid "NAPSTER Protocol Plugin"
 #~ msgstr "NAPSTER protokolmodul"
-
 #~ msgid "Direct IM with %s closed"
 #~ msgstr "Direkte forbindelse til %s lukket"
-
 #~ msgid "Direct IM with %s failed"
 #~ msgstr "Direkte forbindelse til %s fejlede"
-
 #~ msgid "Unable to open Direct IM"
 #~ msgstr "Kunne ikke oprette direkte forbindelse"
-
 #~ msgid "You have lost your connection to chat room %s."
-#~ msgstr "Du har tabt forbindelsen til chatrummet %s."
-
+#~ msgstr "Du har tabt forbindelsen til samtalerummet %s."
 #~ msgid "Chat is currently unavailable"
-#~ msgstr "Chat er ikke tilgængelig nu"
-
+#~ msgstr "Samtale er ikke tilgængelig nu"
 #~ msgid ""
 #~ "Transfer of file %s timed out.\n"
 #~ " Try enabling proxy servers for file transfers in Accounts -> %s -> Edit "
 #~ "Account -> Advanced."
 #~ msgstr ""
 #~ "Overførsel af fil %s overløb tidsgrænsen.\n"
-#~ " Prøv at aktivere proxy servere for filoverførsler i Konti -> %s -> "
+#~ " Prøv at aktivere proxyservere for filoverførsler i Konti -> %s -> "
 #~ "Redigér konto -> Avanceret."
-
 #~ msgid "Unable to log into file transfer proxy."
 #~ msgstr "Kunne ikke logge ind til filoverførselsproxy."
-
 #~ msgid ""
 #~ "Unable to establish listener socket or no AOL proxy connection present."
 #~ msgstr ""
 #~ "Kan ikke etablere lytte sokkel eller ingen AOL proxy forbindelse tilstede."
-
 #~ msgid ""
 #~ "The user %s requires authorization before being added to a buddy list.  "
 #~ "Do you want to send an authorization request?"
 #~ msgstr ""
 #~ "Brugeren %s kræver godkendelse for at blive tilføjet til en venneliste."
 #~ "Vil du sende en anmodning om godkendelse?"
-
 #~ msgid "Request Authorization"
 #~ msgstr "Anmod om godkendelse"
-
 #~ msgid "_Request Authorization"
 #~ msgstr "_Anmod om godkendelse"
-
 #~ msgid ""
 #~ "The user %u wants to add %s to their buddy list for the following "
 #~ "reason:\n"
@@ -15053,55 +13905,40 @@
 #~ msgstr ""
 #~ "Brugeren %u vil tilføje %s til sin venneliste af følgende grund:\n"
 #~ "%s"
-
 #~ msgid "Authorization Request"
 #~ msgstr "Godkendelse anmodning"
-
 #~ msgid "<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"
 #~ msgstr "<B>UIN:</B> %s<BR><B>Status:</B> %s<HR>%s"
-
 #~ msgid "Auth host"
 #~ msgstr "Godkendelses server"
-
 #~ msgid "Auth port"
 #~ msgstr "Godkendelses port"
-
 #~ msgid ""
 #~ "\n"
 #~ "<b>Supports:</b> %s"
 #~ msgstr ""
 #~ "\n"
 #~ "<b>Understøtter:</b>: %s"
-
 #~ msgid "<b>Full Name:</b> %s<br>"
 #~ msgstr "<b>Fulde navn:</b> %s<br>"
-
 #~ msgid "<b>Supports:</b> %s<br>"
 #~ msgstr "<b>Understøtter:</b> %s<br>"
-
 #~ msgid "<b>Status:</b> %s"
 #~ msgstr "<b>Status:</b> %s"
-
 #~ msgid "Wrong Password"
 #~ msgstr "Forkert adgangskode"
-
 #~ msgid "TOC host"
 #~ msgstr "TOC Vært"
-
 #~ msgid "TOC port"
 #~ msgstr "TOC Port"
-
 #~ msgid "Unable to read"
 #~ msgstr "Kunne ikke læse"
-
 #~ msgid "Pager host"
 #~ msgstr "Bipper vært"
-
 #~ msgid "YCHT host"
 #~ msgstr "YCHT vært"
-
 #~ msgid "YCHT port"
 #~ msgstr "YCHT port"
-
 #~ msgid "g003: Error opening connection.\n"
 #~ msgstr "g003: Fejl ved oprettelse af forbindelse\n"
+
--- a/po/et.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/et.po	Wed Mar 04 16:52:47 2009 +0000
@@ -2258,7 +2258,7 @@
 #. *  summary
 #. *  description
 msgid "Tests the ciphers that ship with libpurple."
-msgstr "Libpurple'ga kaasasolevate šifrite testimine."
+msgstr "libpurple'ga kaasasolevate šifrite testimine."
 
 #. *< type
 #. *< ui_requirement
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/po/km.po	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,13636 @@
+# translation of pidgin.po to Khmer
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Khoem Sokhem <khoemsokhem@khmeros.info>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pidgin\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-02-27 16:37-0800\n"
+"PO-Revision-Date: 2009-02-25 11:49+0700\n"
+"Last-Translator: Khoem Sokhem <khoemsokhem@khmeros.info>\n"
+"Language-Team: Khmer <support@khmeros.info>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+msgid "Finch"
+msgstr "បក្សី"
+
+#, c-format
+msgid "%s. Try `%s -h' for more information.\n"
+msgstr "%s. Try `%s -h' សម្រាប់​ព័ត៌មានបន្ថែម ។\n"
+
+#, c-format
+msgid ""
+"%s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+"  -c, --config=DIR    use DIR for config files\n"
+"  -d, --debug         print debugging messages to stderr\n"
+"  -h, --help          display this help and exit\n"
+"  -n, --nologin       don't automatically login\n"
+"  -v, --version       display the current version and exit\n"
+msgstr ""
+"%s\n"
+"ការ​ប្រើប្រាស់ ៖ %s [ជម្រើស]...\n"
+"\n"
+"  -c, --config=DIR    ប្រើ DIR សម្រាប់​ឯកសារ config\n"
+"  -d, --debug         បោះពុម្ព​សារ​បំបាត់​ទៅ stderr\n"
+"  -h, --help          បង្ហាញ​ជំនួយ​នេះ ហើយ​ចេញ\n"
+"  -n, --nologin       កុំ​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ\n"
+"  -v, --version       បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n"
+
+#, c-format
+msgid ""
+"%s encountered errors migrating your settings from %s to %s. Please "
+"investigate and complete the migration by hand. Please report this error at "
+"http://developer.pidgin.im"
+msgstr ""
+"កំហុស​ដែល​បានជួប​ប្រទះ %s ប្ដូរ​ទៅ​កា​រកំណត់​របស់​អ្នកពី %s ទៅ %s ។ សូម​អង្កេត​ និង​បំពេញ​ការ​ប្ដូរ​ដោយ​ដៃ ។ "
+"សូម​រាយការណ៍​កំហុស​នេះ​តាម http://developer.pidgin.im"
+
+msgid "Error"
+msgstr "កំហុស"
+
+msgid "Account was not added"
+msgstr "គណនី​មិន​ត្រូវ​បាន​បន្ថែម​ទេ"
+
+msgid "Username of an account must be non-empty."
+msgstr "ឈ្មោះអ្នក​ប្រើ​របស់​គណនី​​មិនអាច​ទទេ​​នោះទេ ។"
+
+msgid "New mail notifications"
+msgstr "ការ​ជូនដំណឹង​សំបុត្រ​ថ្មី"
+
+msgid "Remember password"
+msgstr "ចងចាំ​ពាក្យ​សម្ងាត់"
+
+msgid "There are no protocol plugins installed."
+msgstr "គ្មានកម្មវិធី​ជំនួយ​ពិធីការ​ត្រូវ​បាន​ដំឡើង​នោះ​ទេ ។"
+
+msgid "(You probably forgot to 'make install'.)"
+msgstr "(អ្នកប្រហែលជា​ភ្លេច 'make install' ។)"
+
+msgid "Modify Account"
+msgstr "កែប្រែ​គណនី"
+
+msgid "New Account"
+msgstr "គណនី​ថ្មី"
+
+msgid "Protocol:"
+msgstr "ពិធីការ ៖"
+
+msgid "Username:"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ ៖"
+
+msgid "Password:"
+msgstr "ពាក្យ​សម្ងាត់ ៖"
+
+msgid "Alias:"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ ៖"
+
+#. Register checkbox
+msgid "Create this account on the server"
+msgstr "បង្កើត​គណនី​នេះ​នៅ​លើ​ម៉ាស៊ីនបម្រើ"
+
+#. Cancel button
+#. Cancel
+msgid "Cancel"
+msgstr "បោះបង់"
+
+#. Save button
+#. Save
+msgid "Save"
+msgstr "រក្សា​​ទុក​​"
+
+#, c-format
+msgid "Are you sure you want to delete %s?"
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប %s?"
+
+msgid "Delete Account"
+msgstr "លុប​គណនី"
+
+#. Delete button
+msgid "Delete"
+msgstr "លុប"
+
+msgid "Accounts"
+msgstr "គណនី"
+
+msgid "You can enable/disable accounts from the following list."
+msgstr "អ្នក​អាច​បិទ/បើក​គណនី​ពី​បញ្ជីដូច​ខាងក្រោម ។"
+
+#. Add button
+msgid "Add"
+msgstr "បន្ថែម"
+
+#. Modify button
+msgid "Modify"
+msgstr "កែប្រែ"
+
+#, c-format
+msgid "%s%s%s%s has made %s his or her buddy%s%s"
+msgstr "%s%s%s%s បាន​ធ្វើ %s មិត្តភក្ដិ​​របស់​គាត់ %s%s"
+
+msgid "Add buddy to your list?"
+msgstr "បន្ថែម​មិត្តភក្ដិ​ទៅ​កាន់​បញ្ជីរបស់​អ្នក ?"
+
+#, c-format
+msgid "%s%s%s%s wants to add %s to his or her buddy list%s%s"
+msgstr "%s%s%s%s ចង់​បន្ថែម %s ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់​គាត់ %s%s"
+
+msgid "Authorize buddy?"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់មិត្តភក្ដិ ?"
+
+msgid "Authorize"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Deny"
+msgstr "បដិសេធ"
+
+#, c-format
+msgid ""
+"Online: %d\n"
+"Total: %d"
+msgstr ""
+"លើ​បណ្ដាញ ៖ %d\n"
+"សរុប ៖ %d"
+
+#, c-format
+msgid "Account: %s (%s)"
+msgstr "គណនី ៖ %s (%s)"
+
+#, c-format
+msgid ""
+"\n"
+"Last Seen: %s ago"
+msgstr ""
+"\n"
+"បានឃើញចុងក្រោយ ៖ %s ago"
+
+msgid "Default"
+msgstr "លំនាំដើម"
+
+msgid "You must provide a username for the buddy."
+msgstr "អ្នក​ត្រូវតែ​ផ្ដល់​ឈ្មោះ​អ្នក​ប្រោះ​សម្រាប់​មិត្តភក្ដិ ។"
+
+msgid "You must provide a group."
+msgstr "អ្នក​ត្រូវតែ​ផ្ដល់​ក្រុម​មួយ ។"
+
+msgid "You must select an account."
+msgstr "អ្នក​ត្រូវតែ​ជ្រើស​គណនី​មួយ ។"
+
+msgid "The selected account is not online."
+msgstr "គណនី​ដែល​បាន​ជ្រើស​មិននៅ​លើបណ្ដាញទេ ។"
+
+msgid "Error adding buddy"
+msgstr "កំហុ​សក្នុងកា​របន្ថែម​មិត្តភក្ដិ"
+
+msgid "Username"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ"
+
+msgid "Alias (optional)"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ (ជម្រើស)"
+
+msgid "Add in group"
+msgstr "បន្ថែម​ក្នុងក្រុម"
+
+msgid "Account"
+msgstr "គណនី"
+
+msgid "Add Buddy"
+msgstr "បន្ថែម​មិត្តភក្ដិ"
+
+msgid "Please enter buddy information."
+msgstr "សូម​បញ្ចូល​ព័ត៌មាន​របស់មិត្តភក្ដិ ។"
+
+msgid "Chats"
+msgstr "ជជែក"
+
+#. Extract their Name and put it in
+msgid "Name"
+msgstr "ឈ្មោះ"
+
+msgid "Alias"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ"
+
+msgid "Group"
+msgstr "ក្រុម"
+
+msgid "Auto-join"
+msgstr "ចូល​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Add Chat"
+msgstr "បន្ថែម​ការ​ជជែក"
+
+msgid "You can edit more information from the context menu later."
+msgstr "អ្នក​អាច​កែសម្រួល​ព័ត៌មាន​បន្ថែម​ពី​ម៉ឺនុយ​បរិបទ​នៅ​ពេល​ក្រោយ ។"
+
+msgid "Error adding group"
+msgstr "កំហុស​ក្នុងការ​បន្ថែម​ក្រុម"
+
+msgid "You must give a name for the group to add."
+msgstr "អ្នក​ត្រូវតែ​ផ្ដល់​ឈ្មោះ​សម្រាប់​ក្រុម​ដែល​ត្រូវ​បន្ថែម ។"
+
+msgid "Add Group"
+msgstr "បន្ថែម​ក្រុម"
+
+msgid "Enter the name of the group"
+msgstr "បញ្ចូល​ឈ្មោះ​​ក្រុម"
+
+msgid "Edit Chat"
+msgstr "កែ​សម្រួល​ការ​ជជែក"
+
+msgid "Please Update the necessary fields."
+msgstr "សូម​ធ្វើ​ឲ្យ​វាល​ដែល​ចាំបាច់​ទាន់សម័យ ។"
+
+msgid "Edit"
+msgstr "កែ​សម្រួល"
+
+msgid "Edit Settings"
+msgstr "កែសម្រួល​ការ​កំណត់"
+
+msgid "Information"
+msgstr "ព័ត៌មាន"
+
+msgid "Retrieving..."
+msgstr "កំពុង​ទៅ​យក..."
+
+msgid "Get Info"
+msgstr "យក​ព័ត៌មាន"
+
+msgid "Add Buddy Pounce"
+msgstr "បន្ថែមក្រុម​មិត្តភក្ដិ​"
+
+msgid "Send File"
+msgstr "ផ្ញើ​ឯកសារ"
+
+msgid "Blocked"
+msgstr "បានទប់ស្កាត់"
+
+msgid "Show when offline"
+msgstr "បង្ហាញ​​នៅពេល​នៅ​ក្រៅបណ្ដាញ"
+
+#, c-format
+msgid "Please enter the new name for %s"
+msgstr "សូម​បញ្ចូល​ឈ្មោះថ្មី​សម្រាប់ %s"
+
+msgid "Rename"
+msgstr "ប្តូរ​​ឈ្មោះ​"
+
+msgid "Set Alias"
+msgstr "កំណត់​ឈ្មោះ​ក្លែងក្លាយ"
+
+msgid "Enter empty string to reset the name."
+msgstr "បញ្ចូល​ខ្សែអក្សរ​ទទេ​ ដើម្បី​កំណត់​ឈ្មោះ​ឡើង​វិញ ។"
+
+msgid "Removing this contact will also remove all the buddies in the contact"
+msgstr "យក​ទំនាក់ទំនង​នេះ​ចេញ នឹង​យក​មិត្តភក្ដិ​ទាំង​អស់​ចេញ​នៅ​ក្នុង​ទំនាក់ទំនង"
+
+msgid "Removing this group will also remove all the buddies in the group"
+msgstr "យក​ក្រុម​នេះ​ចេញនឹង​យក​មិត្តភក្ដិ​ទាំង​អស់​ចេញ​នៅ​ក្នុង​ក្រុម"
+
+#, c-format
+msgid "Are you sure you want to remove %s?"
+msgstr "តើ​​អ្នក​ប្រាកដ​ជា​ចង់​យក %s ចេញ​ឬ ?"
+
+#. XXX: anything to do with the returned ui-handle?
+msgid "Confirm Remove"
+msgstr "អះអាង​ការ​យក​ចេញ"
+
+msgid "Remove"
+msgstr "យក​ចេញ"
+
+#. Buddy List
+msgid "Buddy List"
+msgstr "បញ្ជី​មិត្តភក្ដិ"
+
+msgid "Place tagged"
+msgstr "បានដាក់​ស្លាក​កន្លែង"
+
+msgid "Toggle Tag"
+msgstr "បិទ/បើក​ស្លាក"
+
+msgid "View Log"
+msgstr "មើល​កំណត់ហេតុ"
+
+#. General
+msgid "Nickname"
+msgstr "សម្មតិនាម"
+
+#. Never know what those translations might end up like...
+#. Idle stuff
+msgid "Idle"
+msgstr "ទំនេរ"
+
+msgid "On Mobile"
+msgstr "នៅពេល​ចល័ត"
+
+msgid "New..."
+msgstr "ថ្មី​..."
+
+msgid "Saved..."
+msgstr "បាន​រក្សាទុក..."
+
+msgid "Plugins"
+msgstr "កម្មវិធី​ជំនួយ"
+
+msgid "Block/Unblock"
+msgstr "ទប់ស្កាត់/មិនទប់ស្កាត់"
+
+msgid "Block"
+msgstr "ទប់ស្កាត់"
+
+msgid "Unblock"
+msgstr "មិនទប់ស្កាត់"
+
+msgid ""
+"Please enter the username or alias of the person you would like to Block/"
+"Unblock."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ ឬ​ឈ្មោះក្លែងក្លាយ​​របស់មនុស្ស ដែល​អ្នក​ចង់​ទប់ស្កាត់/មិនទប់ស្កាត់ ។"
+
+#. Not multiline
+#. Not masked?
+#. No hints?
+msgid "OK"
+msgstr "យល់ព្រម"
+
+msgid "New Instant Message"
+msgstr "សារ​បន្ទាន់​ថ្មី"
+
+msgid "Please enter the username or alias of the person you would like to IM."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ ឬ​ឈ្មោះ​ក្លែងក្លាយ​របស់​មនុស្ស​ ដែលអ្នក​ចង់​ IM ។"
+
+msgid "Channel"
+msgstr "ឆានែល"
+
+msgid "Join a Chat"
+msgstr "ចូលរួម​ក្នុងការ​ជជែក"
+
+msgid "Please enter the name of the chat you want to join."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​នៃ​ការ​ជជែក​ដែល​អ្នកចង់​ចូលរួម ។"
+
+msgid "Join"
+msgstr "ចូលរួម"
+
+msgid ""
+"Please enter the username or alias of the person whose log you would like to "
+"view."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នក​ប្រើ ឬ​ឈ្មោះ​ក្លែងក្លាយ​របស់​មនុស្ស​ដែល​អ្នក​ចង់​មើល ។"
+
+#. Create the "Options" frame.
+msgid "Options"
+msgstr "ជម្រើស​"
+
+msgid "Send IM..."
+msgstr "ផ្ញើ IM..."
+
+msgid "Block/Unblock..."
+msgstr "ទប់ស្កាត់/មិនទប់ស្កាត់..."
+
+msgid "Join Chat..."
+msgstr "ចូលរួមការ​​ជជែក..."
+
+msgid "View Log..."
+msgstr "មើល​កំណត់​ហេតុ..."
+
+msgid "View All Logs"
+msgstr "មើល​កំណត់ហេតុ​ទាំង​អស់"
+
+msgid "Show"
+msgstr "បង្ហាញ​"
+
+msgid "Empty groups"
+msgstr "សម្អាត​ក្រុម"
+
+msgid "Offline buddies"
+msgstr "មិត្តភក្ដិ​ក្រៅ​បណ្តាញ"
+
+msgid "Sort"
+msgstr "ត​ម្រៀប​"
+
+msgid "By Status"
+msgstr "តាម​ស្ថានភាព"
+
+msgid "Alphabetically"
+msgstr "តាម​អក្ខរក្រម"
+
+msgid "By Log Size"
+msgstr "តាម​ទំហំ​កំណត់​ហេតុ"
+
+msgid "Buddy"
+msgstr "មិត្តភក្ដិ"
+
+msgid "Chat"
+msgstr "ជជែក"
+
+msgid "Grouping"
+msgstr "ការ​ដាក់ជា​ក្រុម"
+
+msgid "Certificate Import"
+msgstr "នាំចូល​វិញ្ញាបនបត្រ"
+
+msgid "Specify a hostname"
+msgstr "បញ្ជាក់​ឈ្មោះ​ម៉ាស៊ីន"
+
+msgid "Type the host name this certificate is for."
+msgstr "វាយ​ឈ្មោះ​ម៉ាស៊ីន​នៃ​វិញ្ញាបនបត្រ​នេះ​គឺ​សម្រាប់ ។"
+
+#, c-format
+msgid ""
+"File %s could not be imported.\n"
+"Make sure that the file is readable and in PEM format.\n"
+msgstr ""
+"ឯកសារ %s មិនអាច​ត្រូវ​បាននាំចូល​ទេ ។\n"
+"សូម​ប្រាកដ​ថា​ឯកសារ​អាច​អាន​បាន ហើយ​មាន​ទ្រង់ទ្រាយជា PEM ។\n"
+
+msgid "Certificate Import Error"
+msgstr "កំហុស​ក្នុងកា​រនាំ​វិញ្ញាបនបត្រ​ចូល"
+
+msgid "X.509 certificate import failed"
+msgstr "បានបរាជ័យ​ក្នុង​ការ​នាំចូល​វិញ្ញាបនបត្រ X.509"
+
+msgid "Select a PEM certificate"
+msgstr "ជ្រើស​វិញ្ញាបនបត្រ PEM"
+
+#, c-format
+msgid ""
+"Export to file %s failed.\n"
+"Check that you have write permission to the target path\n"
+msgstr ""
+"បានបរាជ័យ​ក្នុងការនាំចេញ %s ។\n"
+"ពិនិត្យ​ថា អ្នក​មាន​សិទ្ធិ​សរសេរ​ទៅ​កាន់​ផ្លូវគោលដៅ\n"
+
+msgid "Certificate Export Error"
+msgstr "កំហុស​ក្នុងការ​នាំវិញ្ញាបនបត្រ​ចេញ"
+
+msgid "X.509 certificate export failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​នាំវិញ្ញាបនបត្រ X.509 ចេញ"
+
+msgid "PEM X.509 Certificate Export"
+msgstr "នាំវិញ្ញាបនបត្រ PEM X.509 ចេញ"
+
+#, c-format
+msgid "Certificate for %s"
+msgstr "វិញ្ញាបនបត្រ %s"
+
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"SHA1 fingerprint:\n"
+"%s"
+msgstr ""
+"ឈ្មោះ​ធម្មតា ៖ %s\n"
+"\n"
+"ស្នាម្រាមដៃ SHA1 ៖\n"
+"%s"
+
+msgid "SSL Host Certificate"
+msgstr "វិញ្ញាបនបត្រ SSL Host"
+
+#, c-format
+msgid "Really delete certificate for %s?"
+msgstr "ពិតជា​ចង់​លុប​វិញ្ញាបនបត្រសម្រាប់ %s ឬ ?"
+
+msgid "Confirm certificate delete"
+msgstr "អះអាង​ការ​លុប​វិញ្ញាបនបត្រ"
+
+msgid "Certificate Manager"
+msgstr "កម្មវិធី​គ្រប់គ្រង​វិញ្ញាបនបត្រ"
+
+#. Creating the user splits
+msgid "Hostname"
+msgstr "ឈ្មោះ​ម៉ាស៊ីន"
+
+msgid "Info"
+msgstr "ព័ត៌មាន"
+
+#. Close button
+msgid "Close"
+msgstr "បិទ​"
+
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#, c-format
+msgid "%s disconnected."
+msgstr "បាន​ផ្ដាច់ %s ។"
+
+#, c-format
+msgid ""
+"%s\n"
+"\n"
+"Finch will not attempt to reconnect the account until you correct the error "
+"and re-enable the account."
+msgstr ""
+"%s\n"
+"\n"
+"បក្សី​នឹង​មិន​ប៉ុនប៉ង​តភ្ជាប់​គណនី​ឡើង​វិញ រហូត​ដល់​អ្នក​កែ​ និង​បើក​គណនី​ឡើង​វិញ ។"
+
+msgid "Re-enable Account"
+msgstr "បើក​គណនី​ឡើង​វិញ"
+
+msgid ""
+"The account has disconnected and you are no longer in this chat. You will be "
+"automatically rejoined in the chat when the account reconnects."
+msgstr ""
+"គណនី​​បាន​ផ្ដាច់ ហើយ​អ្នក​មិន​នៅ​ក្នុង​ការ​ជជែក​នេះ​ទៀតទេ ។ អ្នក​នឹង​ត្រូវ​បានចូល​ឡើង​វិញ​ដោយ​ស្វ័យ​ប្រវត្តិ​នៅ​"
+"ក្នុងការ​ជជែក នៅពេល​អ្នក​តភ្ជាប់គណនី​នេះ​ឡើង​វិញ ។"
+
+msgid "No such command."
+msgstr "គ្មានពាក្យ​បញ្ជា​បែបនេះទេ ។"
+
+msgid "Syntax Error:  You typed the wrong number of arguments to that command."
+msgstr "កំហុស​វាក្យសម្ព័ន្ធ ៖ អ្នកបានវាយ​​ចំនួន​អាគុយម៉ង់​មិន​ត្រឹមត្រូវ​ចំពោះ​ពាក្យ​បញ្ជា​នោះ​ទេ ។"
+
+msgid "Your command failed for an unknown reason."
+msgstr "ពាក្យ​បញ្ជា​របស់​អ្នកបានបរាជ័យ​ដោយ​សារ​មិនស្គាល់​ហេតុផល ។"
+
+msgid "That command only works in chats, not IMs."
+msgstr "ពាក្យ​បញ្ជា​នោះ​ដំណើរតែ​នៅក្នុងការ​ជជែក​ប៉ុណ្ណោះ មិនមែន IMs ។"
+
+msgid "That command only works in IMs, not chats."
+msgstr "ពាក្យ​បញ្ជា​នោះ​ដំណើរការ​តែ​នៅ​ក្នុង IMs ប៉ុណ្ណោះ មិននៅ​ក្នុងកា​រជជែក​ទេ ។"
+
+msgid "That command doesn't work on this protocol."
+msgstr "ពាក្យ​បញ្ជា​នោះ​មិនដំណើរការ​នៅ​លើ​ពិធីការ​នេះ​ទេ ។"
+
+msgid "Message was not sent, because you are not signed on."
+msgstr "សារ​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​អ្នក​មិនបាន​ចូលទេ ។"
+
+#, c-format
+msgid "%s (%s -- %s)"
+msgstr "%s (%s -- %s)"
+
+#, c-format
+msgid "%s [%s]"
+msgstr "%s [%s]"
+
+#, c-format
+msgid ""
+"\n"
+"%s is typing..."
+msgstr ""
+"\n"
+"%s កំពុង​វាយ..."
+
+msgid "You have left this chat."
+msgstr "អ្នក​បាន​ចេញ​ពី​កា​រជជែក​នេះ​ហើយ ។"
+
+msgid "Logging started. Future messages in this conversation will be logged."
+msgstr "បាន​ចាប់ផ្ដើម​ចុះ​កំណត់ហេតុ ។ សារ​បន្តទៀត​នៅ​ក្នុង​ការ​សន្ទនា​នឹង​ត្រូវ​បាន​ចុះ​កំណត់ហេតុ ។"
+
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
+msgstr "បានបញ្ចប់​ការ​ចុះ​កំណត់ហេតុ ។ សារ​បន្តបន្ទាប់​ទៀត​នៅ​ក្នុងកា​រសន្ទនា​នឹង​មិន​ត្រូវ​បាន​ចុះកំណត់ហេតុទេ ។"
+
+msgid "Send To"
+msgstr "ផ្ញើ​ទៅ"
+
+msgid "Invite message"
+msgstr "សារ​អញ្ជើញ"
+
+msgid "Invite"
+msgstr "អញ្ជើញ"
+
+msgid ""
+"Please enter the name of the user you wish to invite,\n"
+"along with an optional invite message."
+msgstr ""
+"សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​ដែល​អ្នកចង់​អញ្ជើញ\n"
+"រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។"
+
+msgid "Conversation"
+msgstr "ការ​សន្ទនា"
+
+msgid "Clear Scrollback"
+msgstr "ជម្រះ​ការ​រមូរ​ថយក្រោយ"
+
+msgid "Show Timestamps"
+msgstr "បង្ហាញ​​ត្រាពេលវេលា"
+
+msgid "Add Buddy Pounce..."
+msgstr "បន្ថែម​ក្រុម​មិត្តភក្ដិ..."
+
+msgid "Invite..."
+msgstr "អញ្ជើញ..."
+
+msgid "Enable Logging"
+msgstr "បើក​ការ​ចុះកំណត់ហេតុ"
+
+msgid "Enable Sounds"
+msgstr "បើក​សំឡេង"
+
+msgid "<AUTO-REPLY> "
+msgstr "<AUTO-REPLY> "
+
+#, c-format
+msgid "List of %d user:\n"
+msgid_plural "List of %d users:\n"
+msgstr[0] "បញ្ជី​អ្នកប្រើ %d ៖\n"
+
+msgid "Supported debug options are:  version"
+msgstr "ជម្រើស​បំបាត់កំហុស​ដែល​បានគាំទ្រ​គឺ ៖  កំណែ"
+
+msgid "No such command (in this context)."
+msgstr "គ្មានពាក្យ​បញ្ជា​បែបនេះ​ទេ (នៅ​ក្នុង​បរិបទ​នេះ) ។"
+
+msgid ""
+"Use \"/help &lt;command&gt;\" for help on a specific command.\n"
+"The following commands are available in this context:\n"
+msgstr ""
+"ប្រើ \"/help &lt;command&gt;\" សម្រាប់​ជំនួយ​អំពី​ពាក្យបញ្ជា​ជាក់លាក់ ។\n"
+"ពាក្យ​បញ្ជា​ដូច​ខាងក្រោម​អាច​ប្រើ​នៅ​ក្នុង​បរិបទ​នេះ ៖\n"
+
+#, c-format
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+"%s មិនមែន​ជា​ថ្នាក់​សារ​ត្រឹមត្រូវ​តែ ។ សូមមើល '/help msgcolor' សម្រាប់ថ្នាក់សារ​ដែល​ត្រឹមត្រូវ ។"
+
+#, c-format
+msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
+msgstr "%s មិនមែន​ជា​ពណ៌​ត្រឹមត្រូវ​ទែ ។ សូមមើល '/help msgcolor' សម្រាប់​ពណ៌​ដែល​ត្រឹមត្រូវ ។"
+
+msgid ""
+"say &lt;message&gt;:  Send a message normally as if you weren't using a "
+"command."
+msgstr "និយាយ &lt;message&gt; ៖  ផ្ញើ​សារ​តាម​ធម្មតា ដូច​​ដែល​អ្នក​មិនកំពុង​ប្រើ​ពាក្យ​បញ្ជា ។"
+
+msgid "me &lt;action&gt;:  Send an IRC style action to a buddy or chat."
+msgstr "ខ្ញុំ &lt;action&gt; ៖  ផ្ញើ​សកម្មភាព​រចនាប័ទ្ម IRC ទៅកាន់មិត្តភក្ដិ ឬ​ការ​ជជែក ។"
+
+msgid ""
+"debug &lt;option&gt;:  Send various debug information to the current "
+"conversation."
+msgstr "បំបាត់​កំហុស &lt;option&gt; ៖  ផ្ញើ​ព័ត៌មាន​បំបាត់​កំហុស​ផ្សេងៗ​ទៅកាន់​ការ​សន្ទនា​បច្ចុប្បន្ន ។"
+
+msgid "clear: Clears the conversation scrollback."
+msgstr "ជម្រះ ៖ ជម្រះ​ការ​សន្ទនា ។"
+
+msgid "help &lt;command&gt;:  Help on a specific command."
+msgstr "ជំនួយ &lt;command&gt; ៖  ជួយពាក្យ​បញ្ជាក់ជាក់លាក់ ។"
+
+msgid "users:  Show the list of users in the chat."
+msgstr "អ្នកប្រើ ៖  បង្ហាញ​បញ្ជីអ្នក​ប្រើ​នៅ​ក្នុងកា​រជជែក ។"
+
+msgid "plugins: Show the plugins window."
+msgstr "កម្មវិធី​ ៖ បង្ហាញ​បង្អួច​កម្មវិធីជំនួយ ។"
+
+msgid "buddylist: Show the buddylist."
+msgstr "បញ្ជីមិត្តភក្ដិ ៖ បង្ហាញ​បញ្ជីមិត្តភក្ដិ ។"
+
+msgid "accounts: Show the accounts window."
+msgstr "គណនី ៖ បង្ហាញ​បង្អួច​គណនី ។"
+
+msgid "debugwin: Show the debug window."
+msgstr "debugwin ៖ បង្ហាញ​បង្អួច​បំបាត់​កំហុស ។"
+
+msgid "prefs: Show the preference window."
+msgstr "prefs ៖ បង្ហាញ​បង្អួច​ចំណូលចិត្ត ។"
+
+msgid "statuses: Show the savedstatuses window."
+msgstr "ស្ថានភាព ៖ បង្ហាញ​បង្អួច​ស្ថានភាព​រក្សាទុក ។"
+
+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;class&gt; &lt;foreground&gt; &lt;background&gt;  កំណត់ពណ៌​សម្រាប់ថ្នាក់​"
+"ផ្សេងៗ​របស់​សារ​នៅ​ក្នុង​បង្អួច​សន្ទនា ។<br>    &lt;class&gt; ៖ ទទួល ផ្ញើ បន្លិច សកម្មភាព "
+"ត្រាពេលវេលា<br>    &lt;foreground/background&gt; ៖ ខ្មៅ ក្រហម បៃតង ស ប្រផេះ ប្រផេះ​"
+"ដិត ស្វាយ ផ្ទៃមេឃ លំនាំដើម<br><br>ឧទាហរណ៍ ៖<br>    msgcolor ផ្ញើ​ពណ៌​ផ្ទៃមេឃ​លំនាំដើម"
+
+msgid "Unable to open file."
+msgstr "មិនអាច​បើក​ឯកសារ​បានទេ ។"
+
+msgid "Debug Window"
+msgstr "បង្អួច​បំបាត់​កំហុស"
+
+#. XXX: Setting the GROW_Y for the following widgets don't make sense. But right now
+#. * it's necessary to make the width of the debug window resizable ... like I said,
+#. * it doesn't make sense. The bug is likely in the packing in gntbox.c.
+#.
+msgid "Clear"
+msgstr "ជម្រះ"
+
+msgid "Filter:"
+msgstr "តម្រង ៖"
+
+msgid "Pause"
+msgstr "ផ្អាក"
+
+#, c-format
+msgid "File Transfers - %d%% of %d file"
+msgid_plural "File Transfers - %d%% of %d files"
+msgstr[0] "ការ​ផ្ទេរ​ឯកសារ - ឯកសារ %d%% នៃ %d"
+
+#. Create the window.
+msgid "File Transfers"
+msgstr "ផ្ទេរ​ឯកសារ"
+
+msgid "Progress"
+msgstr "វឌ្ឍនភាព"
+
+msgid "Filename"
+msgstr "ឈ្មោះ​ឯកសារ"
+
+msgid "Size"
+msgstr "ទំហំ"
+
+msgid "Speed"
+msgstr "ល្បឿន"
+
+msgid "Remaining"
+msgstr "នៅ​សល់"
+
+#. XXX: Use of ggp_str_to_uin() is an ugly hack!
+msgid "Status"
+msgstr "ស្ថានភាព"
+
+msgid "Close this window when all transfers finish"
+msgstr "បិទ​បង្អួច​នេះ​នៅពេល​ការ​ផ្ទេរ​ទាំង​អស់​ចប់"
+
+msgid "Clear finished transfers"
+msgstr "ជម្រះ​ការ​ផ្ទេរ​ដែល​ចប់"
+
+msgid "Stop"
+msgstr "បញ្ឈប់"
+
+msgid "Waiting for transfer to begin"
+msgstr "រង់ចាំ​ការ​ផ្ទេរ​ចាប់ផ្ដើម"
+
+msgid "Canceled"
+msgstr "បានបោះបង់"
+
+msgid "Failed"
+msgstr "បាន​បរាជ័យ"
+
+#, c-format
+msgid "%.2f KiB/s"
+msgstr "%.2f KiB/s"
+
+msgid "Sent"
+msgstr "បានផ្ញើ"
+
+msgid "Received"
+msgstr "បាន​ទទួល"
+
+msgid "Finished"
+msgstr "បាន​បញ្ចប់"
+
+#, c-format
+msgid "The file was saved as %s."
+msgstr "ឯកសារ​ត្រូវ​បាន​រក្សាទុក​ជា %s ។"
+
+msgid "Sending"
+msgstr "ការ​ផ្ញើ"
+
+msgid "Receiving"
+msgstr "ការ​ទទួល"
+
+#, c-format
+msgid "Conversation in %s on %s"
+msgstr "ការ​សន្ទនា​នៅ​ក្នុង %s លើ %s"
+
+#, c-format
+msgid "Conversation with %s on %s"
+msgstr "ការ​សន្ទនា​ជា​មួយ %s នៅ​លើ %s"
+
+msgid "%B %Y"
+msgstr "%B %Y"
+
+msgid ""
+"System events will only be logged if the \"Log all status changes to system "
+"log\" preference is enabled."
+msgstr ""
+"ព្រឹត្តិការណ៍​ប្រព័ន្ធ​នឹង​ត្រូវ​បានចុះ​កំណត់ហេតុ​ តែ​ក្នុងករណី​ដែលចំណូលចិត្ត​ \"ចុះ​កំណត់ហេតុ​កា​រផ្លាស់ប្ដូរ​ស្ថានភាព​​"
+"ប្រព័ន្ធ\" ត្រូវ​បានបើក ។"
+
+msgid ""
+"Instant messages will only be logged if the \"Log all instant messages\" "
+"preference is enabled."
+msgstr ""
+"សារ​បន្ទាន់​នឹង​ត្រូវ​បានចុះ​កំណត់ហេតុ​តែ​ក្នុងករណី​ដែល​ចំណូលចិត្ត \"ចុះ​កំណត់ហេតុ​សារ​បន្ទាន់\" ត្រូវ​បាន​បើក ។"
+
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr ""
+"ការ​ជជែក​នឹង​ត្រូវ​បាន​ចុះ​កំណត់ហេតុ​តែ​ក្នុងករណី​ដែល​ចំណូលចិត្ត​ \"ចុះកំណត់ហេតុ​​ជជែក​ទាំង​អស់\" ត្រូវ​បាន​បើក ។"
+
+msgid "No logs were found"
+msgstr "រក​មិនឃើញ​កំណត់ហេតុ​ទេ"
+
+msgid "Total log size:"
+msgstr "ទំហំ​កំណត់ហេតុ​សរុប ៖"
+
+#. Search box *********
+msgid "Scroll/Search: "
+msgstr "រមូរ/ស្វែងរក ៖ "
+
+#, c-format
+msgid "Conversations in %s"
+msgstr "ការ​សន្ទនា​នៅ​ក្នុង %s"
+
+#, c-format
+msgid "Conversations with %s"
+msgstr "កា​រសន្ទនា​ជា​មួយ %s"
+
+msgid "All Conversations"
+msgstr "កា​រសន្ទនា​ទាំង​អស់"
+
+msgid "System Log"
+msgstr "​កំណត់ហេតុ​ប្រព័ន្ធ"
+
+msgid "Emails"
+msgstr "អ៊ីមែល"
+
+msgid "You have mail!"
+msgstr "អ្នកមាន​សំបុត្រ !"
+
+msgid "Sender"
+msgstr "អ្នក​ផ្ញើ"
+
+msgid "Subject"
+msgstr "ប្រធាន​បទ"
+
+#, c-format
+msgid "%s (%s) has %d new message."
+msgid_plural "%s (%s) has %d new messages."
+msgstr[0] "%s (%s) មាន​សារ​ថ្មី %d ។"
+
+msgid "New Mail"
+msgstr "សំបុត្រ​ថ្មីុត្រ"
+
+#, c-format
+msgid "Info for %s"
+msgstr "ព័ត៌មាន​សម្រាប់ %s"
+
+msgid "Buddy Information"
+msgstr "ព័ត៌មាន​អំពី​មិត្តភក្ដិ"
+
+msgid "Continue"
+msgstr "បន្ត"
+
+msgid "IM"
+msgstr "IM"
+
+msgid "(none)"
+msgstr "​(គ្មាន)​"
+
+msgid "URI"
+msgstr "URI"
+
+msgid "ERROR"
+msgstr "កំហុស"
+
+msgid "loading plugin failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រផ្ទុក​កម្មវិធី​ជំនួយ"
+
+msgid "unloading plugin failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រមិនផ្ទុក​កម្មវិធី​ជំនួយ"
+
+#, c-format
+msgid ""
+"Name: %s\n"
+"Version: %s\n"
+"Description: %s\n"
+"Author: %s\n"
+"Website: %s\n"
+"Filename: %s\n"
+msgstr ""
+"ឈ្មោះ ៖ %s\n"
+"កំណែ ៖ %s\n"
+"សេចក្ដី​ពិពណ៌នា ៖ %s\n"
+"អ្នកនិពន្ធ ៖ %s\n"
+"តំបន់បណ្ដាញ ៖ %s\n"
+"ឈ្មោះ​ឯកសារ ៖ %s\n"
+
+msgid "Plugin need to be loaded before you can configure it."
+msgstr "កម្មវិធី​ជំនួយ​ត្រូវ​បានផ្ទុក​មុន​នឹង​អ្នក​អាច​កំណត់​រចនាសម្ព័ន្ធ ។"
+
+msgid "No configuration options for this plugin."
+msgstr "គ្មាន​ជម្រើស​កំណត់​រចនាសម្ព័ន្ធ​សម្រាប់​កម្មវិធី​ជំនួយ​នេះ​ទេ ។"
+
+msgid "Error loading plugin"
+msgstr "កំហុស​ក្នុងកា​រផ្ទុក​កម្មវិធី​ជំនួយ"
+
+msgid "The selected file is not a valid plugin."
+msgstr "ឯកសារ​ដែលបាន​ជ្រើស​មិន​មែនជា​កម្មវិធី​ជំនួយ​ត្រឹមត្រូវ​ទេ ។"
+
+msgid ""
+"Please open the debug window and try again to see the exact error message."
+msgstr "សូម​បើក​បង្អួច​បំបាត់​កំហុស ហើយ​ព្យាយាម​មើល​សារ​កំហុស​ជាក់លាក់ ។"
+
+msgid "Select plugin to install"
+msgstr "ជ្រើស​កម្មវិធី​ជំនួយ​ត្រូវ​ដំឡើង"
+
+msgid "You can (un)load plugins from the following list."
+msgstr "អ្នកអាច​ផ្ទុក/មិនផ្ទុក​កម្មវិធី​ជំនួយ​ពី​បញ្ជី​ដូច​ខាងក្រោម ។"
+
+msgid "Install Plugin..."
+msgstr "ដំឡើង​កម្មវិធី​ជំនួយ..."
+
+msgid "Configure Plugin"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​ជំនួយ"
+
+#. copy the preferences to tmp values...
+#. * I liked "take affect immediately" Oh well :-(
+#. (that should have been "effect," right?)
+#. Back to instant-apply! I win!  BU-HAHAHA!
+#. Create the window
+msgid "Preferences"
+msgstr "ចំណូលចិត្ត"
+
+msgid "Please enter a buddy to pounce."
+msgstr "សូម​បញ្ចូល​មិត្តភក្តិ​ទៅ​ក្រុម ។"
+
+msgid "New Buddy Pounce"
+msgstr "ក្រុមមិត្តភក្ដិ​ថ្មី"
+
+msgid "Edit Buddy Pounce"
+msgstr "កែសម្រួល​ក្រុម​មិត្តភក្ដិ"
+
+msgid "Pounce Who"
+msgstr "ក្រុមជា​នរណា"
+
+#. Account:
+msgid "Account:"
+msgstr "គណនី ៖"
+
+msgid "Buddy name:"
+msgstr "ឈ្មោះ​មិត្តភក្ដិ ៖"
+
+#. Create the "Pounce When Buddy..." frame.
+msgid "Pounce When Buddy..."
+msgstr "ដាក់​មិត្តភក្តិ​ជាក្រុម..."
+
+msgid "Signs on"
+msgstr "ចូល"
+
+msgid "Signs off"
+msgstr "ចេញទ"
+
+msgid "Goes away"
+msgstr "ចាកឆ្ងាយ"
+
+msgid "Returns from away"
+msgstr "ត្រឡប់​ពី​ការ​ចាកឆ្ងាយ"
+
+msgid "Becomes idle"
+msgstr "ក្លាយ​ជា​ទំនេរ"
+
+msgid "Is no longer idle"
+msgstr "លែង​ទំនេរ​ទៀត​ហើយ"
+
+msgid "Starts typing"
+msgstr "ចាប់ផ្ដើម​វាយ"
+
+msgid "Pauses while typing"
+msgstr "ផ្អាក​ខណៈពេល​វាយ"
+
+msgid "Stops typing"
+msgstr "ឈប់​វាយ"
+
+msgid "Sends a message"
+msgstr "ផ្ញើ​សារ"
+
+#. Create the "Action" frame.
+msgid "Action"
+msgstr "សកម្មភាពើ​"
+
+msgid "Open an IM window"
+msgstr "បើក​​បង្អួច IM"
+
+msgid "Pop up a notification"
+msgstr "កា​រជូនដំណឹង​ពេលលេចឡើង"
+
+msgid "Send a message"
+msgstr "ផ្ញើសារ"
+
+msgid "Execute a command"
+msgstr "ប្រតិបត្តិ​ពាក្យ​បញ្ជា"
+
+msgid "Play a sound"
+msgstr "ចាក់​សំឡេង"
+
+msgid "Pounce only when my status is not Available"
+msgstr "ដាក់​ក្រុម​នៅ​ពេល​ដែល​ស្ថានភាព​របស់​ខ្ញុំ​មិនអាច​ជជែកបាន"
+
+msgid "Recurring"
+msgstr "កើត​ឡើង​វិញ"
+
+msgid "Cannot create pounce"
+msgstr "មិនអាច​បង្កើត​ក្រុម​បានទេ"
+
+msgid "You do not have any accounts."
+msgstr "អ្នក​មិនមាន​គណនី​ទេ ។"
+
+msgid "You must create an account first before you can create a pounce."
+msgstr "អ្នក​ត្រូវតែ​បង្កើត​គណនី​​សិន​មុននឹង​អ្នកអាច​បង្កើត​ក្រុមបាន ។"
+
+#, c-format
+msgid "Are you sure you want to delete the pounce on %s for %s?"
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប​ក្រុម​នៅ​លើ %s សម្រាប់ %s ឬ?"
+
+msgid "Buddy Pounces"
+msgstr "ក្រុមមិត្តភក្ដិ"
+
+#, c-format
+msgid "%s has started typing to you (%s)"
+msgstr "%s បាន​ចាប់ផ្ដើម​វាយ​ទៅ​ឲ្យអ្នក (%s)"
+
+#, c-format
+msgid "%s has paused while typing to you (%s)"
+msgstr "%s បាន​ផ្អាក ខណៈពេល​វាយ​ទៅ​ឲ្យ​អ្នក (%s)"
+
+#, c-format
+msgid "%s has signed on (%s)"
+msgstr "%s បាន​ចុះហត្ថលេខា​លើ (%s)"
+
+#, c-format
+msgid "%s has returned from being idle (%s)"
+msgstr "%s បាន​ត្រឡប់​ពី​ស្ថានភាព​ទំនេរ (%s)"
+
+#, c-format
+msgid "%s has returned from being away (%s)"
+msgstr "%s បាន​ត្រឡប់​ពី​ស្ថានភាព​ចាកឆ្ងាយ (%s)"
+
+#, c-format
+msgid "%s has stopped typing to you (%s)"
+msgstr "%s បាន​ឈប់​វាយ​ទៅ​ឲ្យ​អ្នក (%s)"
+
+#, c-format
+msgid "%s has signed off (%s)"
+msgstr "%s បាន​ចេញ (%s)"
+
+#, c-format
+msgid "%s has become idle (%s)"
+msgstr "%s បាន​ក្លាយ​ជា​ទំនេរ (%s)"
+
+#, c-format
+msgid "%s has gone away. (%s)"
+msgstr "%s មាន​ទៅ​ឆ្ងាយ ។ (%s)"
+
+#, c-format
+msgid "%s has sent you a message. (%s)"
+msgstr "%s បាន​ផ្ញើ​សារ​ឲ្យ​អ្នក ។ (%s)"
+
+#, c-format
+msgid "Unknown pounce event. Please report this!"
+msgstr "មិនស្គាល់​ព្រឹត្តិការណ៍​ក្រុម ។ សូម​រាយការណ៍​វា !"
+
+msgid "Based on keyboard use"
+msgstr "មាន​មូលដ្ឋាន​លើ​ការ​ប្រើ​ក្ដារចុច"
+
+msgid "From last sent message"
+msgstr "ពី​សារ​ដែល​បាន​ផ្ញើ​ចុងក្រោយ"
+
+msgid "Never"
+msgstr "មិនដែល"
+
+msgid "Show Idle Time"
+msgstr "បង្ហាញ​ពេល​ទំនេរ"
+
+msgid "Show Offline Buddies"
+msgstr "បង្ហាញមិត្តភក្ដិ​ដែល​នៅ​ក្រៅ​បណ្ដាញ"
+
+msgid "Notify buddies when you are typing"
+msgstr "ជូនដំណឹង​មិត្តភក្តិ​ នៅពេល​អ្នក​កំពុង​វាយ"
+
+msgid "Log format"
+msgstr "ទ្រង់ទ្រាយ​កំណត់ហេតុ"
+
+msgid "Log IMs"
+msgstr "ចុះកំណត់​ហេតុ IMs"
+
+msgid "Log chats"
+msgstr "ចុះ​កំណត់ហេតុ​ការ​ជជែក"
+
+msgid "Log status change events"
+msgstr "ចុះកំណត់ហេតុ​ព្រឹត្តិការណ៍​ផ្លាស់ប្ដូរ"
+
+msgid "Report Idle time"
+msgstr "រាយការណ៍​ពេលវេលា​ទំនេរ"
+
+msgid "Change status when idle"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​នៅពេល​ទំនេរ"
+
+msgid "Minutes before changing status"
+msgstr "ប៉ុន្មាននាទី​មុនពេល​ផ្លាស់ប្ដូរ​ស្ថានភាព"
+
+msgid "Change status to"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅជា"
+
+msgid "Conversations"
+msgstr "កា​រសន្ទនា"
+
+msgid "Logging"
+msgstr "ចុះកំណត់ហេតុ"
+
+msgid "You must fill all the required fields."
+msgstr "អ្នកត្រូវតែ​បំពេញ​វាល​ដែល​ត្រូវការ​ទាំង​អស់ ។"
+
+msgid "The required fields are underlined."
+msgstr "វាល​ដែល​ត្រូវការ​ត្រូវ​បានគូស​បន្ទាត់​ខាង​ក្រោម ។"
+
+msgid "Not implemented yet."
+msgstr "មិន​បាន​អនុវត្ត​នៅ​ឡើយ​ទេ ។"
+
+msgid "Save File..."
+msgstr "រក្សា​​ទុក​ឯកសារ..."
+
+msgid "Open File..."
+msgstr "បើក​ឯកសារ..."
+
+msgid "Choose Location..."
+msgstr "ជ្រើស​ទីតាំង..."
+
+msgid "Hit 'Enter' to find more rooms of this category."
+msgstr "ចុច​គ្រាប់ចុច 'បញ្ចូល (Enter)' ដើម្បី​រក​បន្ទប់​ផ្សេងៗ​ទៀត​នៃ​ប្រភេទ​នេះ ។"
+
+msgid "Get"
+msgstr "យក"
+
+#. Create the window.
+msgid "Room List"
+msgstr "បញ្ជី​បន្ទប់"
+
+msgid "Buddy logs in"
+msgstr "មិត្តភក្ដិ​ចូល"
+
+msgid "Buddy logs out"
+msgstr "មិត្តភក្ដិ​ចេញ"
+
+msgid "Message received"
+msgstr "បាន​ទទួល​សារ"
+
+msgid "Message received begins conversation"
+msgstr "បាន​ទទួលសារ​​ចាប់ផ្ដើម​សន្ទនា"
+
+msgid "Message sent"
+msgstr "បាន​ផ្ញើសារ"
+
+msgid "Person enters chat"
+msgstr "មនុស្ស​ចូល​ក្នុងកា​រជជែក"
+
+msgid "Person leaves chat"
+msgstr "មនុស្ស​ចេញ​ពីការ​ជជែក"
+
+msgid "You talk in chat"
+msgstr "អ្នក​និយាយ​នៅ​ក្នុងការ​ជជែក"
+
+msgid "Others talk in chat"
+msgstr "អ្នកផ្សេង​និយាយ​នៅ​ក្នុង​ការ​ជជែក"
+
+msgid "Someone says your username in chat"
+msgstr "មាន​មនុស្ស​ម្នាក់​និយាយ​អំពី​ឈ្មោះអ្នកប្រើ​របស់​អ្នក​នៅ​ក្នុង​ការជជែក"
+
+msgid "GStreamer Failure"
+msgstr "ភាព​បរាជ័យ​របស់ GStreamer"
+
+msgid "GStreamer failed to initialize."
+msgstr "GStreamer បានបរាជ័យ​ក្នុងការ​ចាប់ផ្ដើម ។"
+
+msgid "(default)"
+msgstr "(លំនាំដើម)"
+
+msgid "Select Sound File ..."
+msgstr "ជ្រើស​ឯកសារ​សំឡេង..."
+
+msgid "Sound Preferences"
+msgstr "ចំណូល​ចិត្ត​សំឡេង"
+
+msgid "Profiles"
+msgstr "ទម្រង់"
+
+msgid "Automatic"
+msgstr "ស្វ័យ​​​ប្រវត្តិ"
+
+msgid "Console Beep"
+msgstr "ប៊ីប​កុងសូល"
+
+msgid "Command"
+msgstr "ពាក្យ​​​បញ្ជា​"
+
+msgid "No Sound"
+msgstr "គ្មាន​សំឡេង"
+
+msgid "Sound Method"
+msgstr "វិធីសាស្ត្រ​សំឡេង"
+
+msgid "Method: "
+msgstr "វិធីសាស្ត្រ ៖ "
+
+#, c-format
+msgid ""
+"Sound Command\n"
+"(%s for filename)"
+msgstr ""
+"ពាក្យ​សំឡេង\n"
+"(%s សម្រាប់​ឈ្មោះ​ឯកសារ)"
+
+#. Sound options
+msgid "Sound Options"
+msgstr "ជម្រើស​សំឡេង"
+
+msgid "Sounds when conversation has focus"
+msgstr "សំឡេង នៅពេល​ការ​សន្ទនា​មានការ​ផ្ដោត​"
+
+msgid "Always"
+msgstr "ជានិច្ច"
+
+msgid "Only when available"
+msgstr "តែ​នៅពេលប្រើបាន"
+
+msgid "Only when not available"
+msgstr "តែ​នៅពេល​មិនអាច​ប្រើបាន"
+
+msgid "Volume(0-100):"
+msgstr "កម្រិត​សំឡេង (១-១០០) ៖"
+
+#. Sound events
+msgid "Sound Events"
+msgstr "ព្រឹត្តិការណ៍​សំឡេង"
+
+msgid "Event"
+msgstr "ព្រឹត្តិការណ៍"
+
+msgid "File"
+msgstr "ឯកសារ"
+
+msgid "Test"
+msgstr "សាកល្បង"
+
+msgid "Reset"
+msgstr "កំណត់​ឡើង​វិញ"
+
+msgid "Choose..."
+msgstr "ជ្រើស..."
+
+#, c-format
+msgid "Are you sure you want to delete \"%s\""
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប \"%s\" ឬ"
+
+msgid "Delete Status"
+msgstr "លុប​ស្ថានភាព"
+
+msgid "Saved Statuses"
+msgstr "ស្ថានភាព​ដែល​បាន​រក្សាទុក"
+
+msgid "Title"
+msgstr "ចំណង​ជើង"
+
+msgid "Type"
+msgstr "ប្រភេទ"
+
+#. Statuses are almost all the same. Define a macro to reduce code repetition.
+#. PurpleStatusPrimitive
+#. id - use default
+#. name - use default
+#. saveable
+#. user_settable
+#. not independent
+#. Attributes - each status can have a message.
+msgid "Message"
+msgstr "សារ"
+
+#. Use
+msgid "Use"
+msgstr "ប្រើ"
+
+msgid "Invalid title"
+msgstr "ចំណង​ជើង​មិនត្រឹមត្រូវ"
+
+msgid "Please enter a non-empty title for the status."
+msgstr "សូម​បញ្ចូល​ចំណង​ជើង​ដែល​​​សម្រាប់ស្ថានភាព ។"
+
+msgid "Duplicate title"
+msgstr "ស្ទួន​ចំណង​ជើង"
+
+msgid "Please enter a different title for the status."
+msgstr "សូម​បញ្ចូល​ចំណង​ជើង​ផ្សេង​សម្រាប់​ស្ថានភាព ។"
+
+msgid "Substatus"
+msgstr "ស្ថានភាព​រង"
+
+msgid "Status:"
+msgstr "ស្ថាន​ភាព ៖"
+
+msgid "Message:"
+msgstr "សារ ៖"
+
+msgid "Edit Status"
+msgstr "កែ​សម្រួល​ស្ថានភាព"
+
+msgid "Use different status for following accounts"
+msgstr "ប្រើ​ស្ថានភាព​ផ្សេង​សម្រាប់​គណនី​ដូច​ខាង​ក្រោម"
+
+#. Save & Use
+msgid "Save & Use"
+msgstr "រក្សាទុក​​កា​រប្រើើ"
+
+msgid "Certificates"
+msgstr "វិញ្ញាបនបត្រ"
+
+msgid "Sounds"
+msgstr "សំឡេង"
+
+msgid "Statuses"
+msgstr "ស្ថានភាព"
+
+msgid "Error loading the plugin."
+msgstr "កំហុស​ក្នុងកា​រផ្ទុក​កម្មវិធី​ជំនួយ ។"
+
+msgid "Couldn't find X display"
+msgstr "មិនអាច​រក​ការ​បង្ហាញ X"
+
+msgid "Couldn't find window"
+msgstr "មិនអាច​​រក​បង្អួច"
+
+msgid "This plugin cannot be loaded because it was not built with X11 support."
+msgstr "កម្មវិធី​ជំនួយ​នេះ​មិនអាច​ត្រូ​វបានផ្ទុក​ទេ ពីព្រោះវា​មិន​ត្រូវ​បាន​ស្ថានបនា​​ដោយ​មានការគាំទ្រ X11 ។"
+
+msgid "GntClipboard"
+msgstr "GntClipboard"
+
+msgid "Clipboard plugin"
+msgstr "កម្មវិធី​ជំនួយការតម្បៀតខ្ទាស់"
+
+msgid ""
+"When the gnt clipboard contents change, the contents are made available to "
+"X, if possible."
+msgstr "នៅពេល​ផ្លាស់ប្ដូរ​មាតិកា​ក្តារតម្បៀតខ្ទាស់ gnt មាតិកា​អាច​ប្រើបាន​ចំពោះX ប្រសិន​បើ​អាច ។"
+
+#, c-format
+msgid "%s just signed on"
+msgstr "%s ទើប​តែ​ចូល"
+
+#, c-format
+msgid "%s just signed off"
+msgstr "%s ទើបតែ​ចេញ"
+
+#, c-format
+msgid "%s sent you a message"
+msgstr "%s បាន​ផ្ញើសារ​ឲ្យ​អ្នក"
+
+#, c-format
+msgid "%s said your nick in %s"
+msgstr "%s បាន​និយាយ​សម្មតិនាម​របស់​អ្នក​នៅ​ក្នុង %s"
+
+#, c-format
+msgid "%s sent a message in %s"
+msgstr "%s បាន​ផ្ញើសារ​នៅ​ក្នុង %s"
+
+msgid "Buddy signs on/off"
+msgstr "មិត្តិភក្តិ​បិទ/បើក"
+
+msgid "You receive an IM"
+msgstr "អ្នក​ទទួល​ IM"
+
+msgid "Someone speaks in a chat"
+msgstr "មនុស្ស​ម្នាក់​និយាយ​នៅ​ក្នុងការ​ជជែក"
+
+msgid "Someone says your name in a chat"
+msgstr "មនុស្ស​ម្នាក់​និយាយ​ឈ្មោះ​របស់​អ្នក​នៅ​ក្នុងការ​ជជែក"
+
+msgid "Notify with a toaster when"
+msgstr "ជូន​ដំណឹង​ដោយ​សញ្ញា​​នៅ​ពេល"
+
+msgid "Beep too!"
+msgstr "ប៊ីប​ដែរ !"
+
+msgid "Set URGENT for the terminal window."
+msgstr "កំណត់​ជា​បន្ទាន់ សម្រាប់​បង្អួច​ស្ថានីយ ។"
+
+msgid "GntGf"
+msgstr "GntGf"
+
+msgid "Toaster plugin"
+msgstr "កម្មវិធី​ជំនួយ Toaster"
+
+#, c-format
+msgid "<b>Conversation with %s on %s:</b><br>"
+msgstr "<b>ការ​សន្ទនា​ជា​មួយ %s នៅ​លើ %s ៖</b><br>"
+
+msgid "History Plugin Requires Logging"
+msgstr "កម្មវិធី​ជំនួយ​ប្រវត្តិ​តម្រូវ​ឲ្យ​ចូល​សិន"
+
+msgid ""
+"Logging can be enabled from Tools -> Preferences -> Logging.\n"
+"\n"
+"Enabling logs for instant messages and/or chats will activate history for "
+"the same conversation type(s)."
+msgstr ""
+"ការ​ចូល​អាច​ត្រូ​វបាន​បើកតាមរយៈ​ម៉ឺនុយ ឧបករណ៍ -> ចំណូល​ចិត្ត -> ការ​ចូល ។\n"
+"\n"
+"ការ​បើក​កំណត់​ហេតុ​សម្រាប់​សារ​បន្ទាន់ និង​/ឬ​កា​រជជែក​នឹង​ធ្វើ​ឲ្យ​ប្រវត្តិ​សកម្ម​សម្រាប់​ប្រភេទ​ការ​សន្ទនា​"
+"ដូចគ្នា ។"
+
+msgid "GntHistory"
+msgstr "GntHistory"
+
+msgid "Shows recently logged conversations in new conversations."
+msgstr "បង្ហាញ​កា​រសន្ទនា​ដែល​បាន​ចូល​បច្ចុប្បន្ន​នៅ​ក្នុងការ​សន្ទនា​ថ្មី ។"
+
+msgid ""
+"When a new conversation is opened this plugin will insert the last "
+"conversation into the current conversation."
+msgstr ""
+"នៅពេល​ការ​សន្ទនា​ថ្មី​ត្រូវ​បានបើក កម្មវិធី​ជំនួយ​នេះ​នឹង​បញ្ចូល​ការ​សន្ទនា​ចុងក្រោយ​ទៅ​ក្នុង​ការ​សន្ទនា​"
+"បច្ចុប្បន្ន ។"
+
+msgid "Online"
+msgstr "លើ​បណ្ដាញ"
+
+msgid "Offline"
+msgstr "ក្រៅ​បណ្តាញ"
+
+msgid "Online Buddies"
+msgstr "មិត្តភក្ដិ​លើបណ្ដាញ"
+
+msgid "Offline Buddies"
+msgstr "មិត្តភក្ដិ​ក្រៅ​បណ្តាញ"
+
+msgid "Online/Offline"
+msgstr "លើ​បណ្ដាញ/ក្រៅ​បណ្ដាញ"
+
+msgid "Meebo"
+msgstr "Meebo"
+
+msgid "No Grouping"
+msgstr "គ្មាន​ការ​ដាក់​ជា​ក្រុម"
+
+msgid "Nested Subgroup"
+msgstr "ក្រុម​រង​ខាង​ក្នុង"
+
+msgid "Nested Grouping (experimental)"
+msgstr "ការ​ដាក់​ជា​ក្រុម​ខាង​ក្នុង (ពិសោធន៍)"
+
+msgid "Provides alternate buddylist grouping options."
+msgstr "ផ្ដល់​នូវ​ជម្រើស​ដាក់​ជា​ក្រុម​នូវ​បញ្ជី​មិត្តភក្ដិ​​ជំនួស ។"
+
+msgid "Lastlog"
+msgstr "កំណត់ហេតុ​ចុងក្រោយ"
+
+#. Translator Note: The "backlog" is the conversation buffer/history.
+msgid "lastlog: Searches for a substring in the backlog."
+msgstr "កំណត់​ហេតុ​ចុងក្រោយ ៖ ស្វែងរក​ខ្សែអក្សរ​រង​នៅ​ក្នុង​កំណត់ហេតុ​ខ្មៅ ។"
+
+msgid "GntLastlog"
+msgstr "GntLastlog"
+
+msgid "Lastlog plugin."
+msgstr "កម្មវិធី​ជំនួយ​កំណត់ហេតុ​ចុងក្រោយ ។"
+
+msgid "accounts"
+msgstr "គណនី"
+
+msgid "Password is required to sign on."
+msgstr "ត្រូវការ​ពាក្យ​សម្ងាត់​ដើម្បី​ចូល ។"
+
+#, c-format
+msgid "Enter password for %s (%s)"
+msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់​សម្រាប់ %s (%s)"
+
+msgid "Enter Password"
+msgstr "បញ្ចូល​ពាក្យ​សម្ងាត់"
+
+msgid "Save password"
+msgstr "រក្សា​​ទុក​​​ពាក្យ​​​សម្ងាត់"
+
+#, c-format
+msgid "Missing protocol plugin for %s"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​​ដែល​បាត់​សម្រាប់ %s"
+
+msgid "Connection Error"
+msgstr "កំហុស​ក្នុងការ​តភ្ជាប់"
+
+msgid "New passwords do not match."
+msgstr "ពាក្យ​សម្ងាត់​ថ្មី​មិនផ្គូផ្គង​ទេ ។"
+
+msgid "Fill out all fields completely."
+msgstr "បំពេញ​វាល​ទាំងអស់​ឲ្យ​ចប់ ។"
+
+msgid "Original password"
+msgstr "ពាក្យ​សម្ងាត់​ដើម"
+
+msgid "New password"
+msgstr "ពាក្យ​សម្ងាត់​ថ្មី"
+
+msgid "New password (again)"
+msgstr "ពាក្យ​សម្ងាត់​ថ្មី (ថ្មី)"
+
+#, c-format
+msgid "Change password for %s"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ %s"
+
+msgid "Please enter your current password and your new password."
+msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​​បច្ចុប្បន្ន​របស់​អ្នក និង​ពាក្យ​សម្ងាត់​ថ្មី​របស់​អ្នក ។"
+
+#, c-format
+msgid "Change user information for %s"
+msgstr "ផ្លាស់ប្ដូរ​ព័ត៌មាន​អ្នក​ប្រើ​សម្រាប់ %s"
+
+msgid "Set User Info"
+msgstr "កំណត់​ព័ត៌មាន​អ្នក​ប្រើ"
+
+msgid "Unknown"
+msgstr "មិន​ស្គាល់"
+
+msgid "Buddies"
+msgstr "មិត្តភក្ដិ"
+
+msgid "buddy list"
+msgstr "បញ្ជី​មិត្តភក្ដិ"
+
+msgid "(DOES NOT MATCH)"
+msgstr "(មិន​ផ្គូផ្គង)"
+
+#. Make messages
+#, c-format
+msgid "%s has presented the following certificate for just-this-once use:"
+msgstr "%s បាន​បង្ហាញ​វិញ្ញាបនបត្រ​សម្រាប់​ការ​ប្រើ​តែ​ម្ដង​នេះ ៖"
+
+#, c-format
+msgid ""
+"Common name: %s %s\n"
+"Fingerprint (SHA1): %s"
+msgstr ""
+"ឈ្មោះ​ធម្មតា ៖ %s %s\n"
+"ស្នាម​ម្រាមដៃ (SHA1) ៖ %s"
+
+#. TODO: Find what the handle ought to be
+msgid "Single-use Certificate Verification"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​វិញ្ញាបនបត្រ​ដែល​ប្រើ​តែ​ម្ដង"
+
+#. Scheme name
+#. Pool name
+msgid "Certificate Authorities"
+msgstr "អាជ្ញាធរ​វិញ្ញាបនបត្រ"
+
+#. Scheme name
+#. Pool name
+msgid "SSL Peers Cache"
+msgstr "ឃ្លាំងសម្ងាត់​គូរ SSL"
+
+#. Make messages
+#, c-format
+msgid "Accept certificate for %s?"
+msgstr "ទទួល​វិញ្ញាបនបត្រ​សម្រាប់ %s?"
+
+#. TODO: Find what the handle ought to be
+msgid "SSL Certificate Verification"
+msgstr "កា​រផ្ទៀងផ្ទាត់​វិញ្ញាបនបត្រ SSL"
+
+#. Number of actions
+msgid "Accept"
+msgstr "ទទួលរម​"
+
+msgid "Reject"
+msgstr "ច្រានចោលល"
+
+msgid "_View Certificate..."
+msgstr "មើល​វិញ្ញាបនបត្រ..."
+
+#. Prompt the user to authenticate the certificate
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" is self-signed. It cannot be "
+"automatically checked."
+msgstr ""
+"វិញ្ញាបនបត្រ​បានបង្ហាញ \"%s\" ត្រូវ​បាន​ចុះហត្ថលេខា​ដោយ​ខ្លួន​ឯង ។ វា​​មិនអាច​ត្រូវ​បាន​ត្រួតពិនិត្យ​ដោយ​ស្វ័យ​"
+"ប្រវត្តិ​ទេ ។"
+
+#, c-format
+msgid "The certificate chain presented for %s is not valid."
+msgstr "ច្រវាក់​វិញ្ញាបនបត្រ​បានបង្ហាញ​សម្រាប់ %s មិន​ត្រឹមត្រូវ​ទេ ។"
+
+#. TODO: Make this error either block the ensuing SSL
+#. connection error until the user dismisses this one, or
+#. stifle it.
+#. TODO: Probably wrong.
+#. TODO: Probably wrong
+msgid "SSL Certificate Error"
+msgstr "កំហុស​វិញ្ញាបនបត្រ SSL"
+
+msgid "Invalid certificate chain"
+msgstr "ច្រវាក់​វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ​ទេ"
+
+#. vrq will be completed by user_auth
+msgid ""
+"You have no database of root certificates, so this certificate cannot be "
+"validated."
+msgstr ""
+"អ្នក​មិនមានមូលដ្ឋាន​ទិន្នន័យ​សម្រាប់​វិញ្ញាបនបត្រ root ទេ ដូច្នេះ​វិញ្ញាបនបត្រ​នេះ​មិន​អាច​ត្រូវ​"
+"បានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ ។"
+
+#. vrq will be completed by user_auth
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr "វិញ្ញាបនបត្រ root មួយនេះ​ទាមទារ​ឲ្យ​ចេញផ្សាយ​ដោយ​អ្នក​ស្គាល់​ទៅ Pidgin ។"
+
+#, c-format
+msgid ""
+"The certificate chain presented by %s does not have a valid digital "
+"signature from the Certificate Authority from which it claims to have a "
+"signature."
+msgstr ""
+"ច្រវាក់​វិញ្ញាបនបត្រ​បានបង្ហាញ​ដោយ %s មិនមាន​ហត្ថលេខា​ឌីជីថល​ត្រឹមត្រូវទេ​ពី​អាជ្ញាធរ​វិញ្ញាបនបត្រ ដែល​វា​"
+"ទាមទារ​ឲ្យ​មាន​ហត្ថលេខា ។"
+
+msgid "Invalid certificate authority signature"
+msgstr "ហត្ថលេខា​អាជ្ញាធរ​វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ"
+
+#. Prompt the user to authenticate the certificate
+#. TODO: Provide the user with more guidance about why he is
+#. being prompted
+#. vrq will be completed by user_auth
+#, c-format
+msgid ""
+"The certificate presented by \"%s\" claims to be from \"%s\" instead.  This "
+"could mean that you are not connecting to the service you believe you are."
+msgstr ""
+"វិញ្ញាបនបត្រ​បានបង្ហាញ​ដោយ \"%s\" ដែល​ទាមទារ​ពី \"%s\" ជំនួស​វិញ ។ វា​អាច​មានន័យ​ថា អ្នក​មិនបាន​"
+"តភ្ជាប់​ទៅ​កាន់សេវា​ដែល​អ្នក​ជឿជាក់ ។"
+
+#. Make messages
+#, c-format
+msgid ""
+"Common name: %s\n"
+"\n"
+"Fingerprint (SHA1): %s\n"
+"\n"
+"Activation date: %s\n"
+"Expiration date: %s\n"
+msgstr ""
+"ឈ្មោះ​​ធម្មតា ៖ %s\n"
+"\n"
+"ស្នាមម្រាមដៃ (SHA1) ៖ %s\n"
+"\n"
+"កាលបរិច្ឆេទ​ធ្វើ​ឲ្យ​សកម្ម ៖ %s\n"
+"កាលបរិច្ឆេទ​ផុត​កំណត់ ៖ %s\n"
+
+#. TODO: Find what the handle ought to be
+msgid "Certificate Information"
+msgstr "ព័ត៌មាន​វិញ្ញាបនបត្រ"
+
+msgid "Registration Error"
+msgstr "កំហុស​ក្នុងកា​រចុះឈ្មោះ"
+
+msgid "Unregistration Error"
+msgstr "កំហុស​ក្នុងការ​មិនចុះឈ្មោះ"
+
+#, c-format
+msgid "+++ %s signed on"
+msgstr "+++ %s បាន​ចូល"
+
+#, c-format
+msgid "+++ %s signed off"
+msgstr "+++ %s បានបិទ"
+
+msgid "Unknown error"
+msgstr "មិនស្គាល់​កំហុស"
+
+msgid "Unable to send message: The message is too large."
+msgstr "មិន​អាច​ផ្ញើសារ​បានទេ ៖ សារ​ធំពេក ។"
+
+#, c-format
+msgid "Unable to send message to %s."
+msgstr "មិន​អាច​ផ្ញើ​សារ​ទៅ​កាន់ %s ។"
+
+msgid "The message is too large."
+msgstr "សារ​ធំពេក ។"
+
+msgid "Unable to send message."
+msgstr "មិនអាច​ផ្ញើ​សារ​បានទេ ។"
+
+msgid "Send Message"
+msgstr "ផ្ញើសារ"
+
+msgid "_Send Message"
+msgstr "ផ្ញើ​សារ"
+
+#, c-format
+msgid "%s entered the room."
+msgstr "%s បាន​ចូល​ក្នុង​បន្ទប់ ។"
+
+#, c-format
+msgid "%s [<I>%s</I>] entered the room."
+msgstr "%s [<I>%s</I>] បាន​ចូល​ក្នុង​បន្ទប់ ។"
+
+#, c-format
+msgid "You are now known as %s"
+msgstr "ឥឡូវ​អ្នក​ត្រូវ​បាន​ស្គាល់​ជា %s"
+
+#, c-format
+msgid "%s is now known as %s"
+msgstr "%s ឥឡូវ​ត្រូវ​បាន​ស្គាល់​ជា %s"
+
+#, c-format
+msgid "%s left the room."
+msgstr "%s បាន​ចេញ​ពី​បន្ទប់ ។"
+
+#, c-format
+msgid "%s left the room (%s)."
+msgstr "%s បាន​ចេញ​ពី​បន្ទប់ (%s) ។"
+
+#, c-format
+msgid "Failed to get connection: %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ ៖ %s"
+
+#, c-format
+msgid "Failed to get name: %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​ទទួល​ឈ្មោះ ៖ %s"
+
+#, c-format
+msgid "Failed to get serv name: %s"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​​បម្រុង​ទុក​ឈ្មោះ ៖ %s"
+
+msgid "Purple's D-BUS server is not running for the reason listed below"
+msgstr "ម៉ាស៊ីនបម្រើ D-BUS របស់ Purple មិន​កំពុង​រត់​ទេ​ ចំពោះ​ហេតុផល​រាយ​នៅ​ខាង​ក្រោម"
+
+msgid "No name"
+msgstr "គ្មាន​ឈ្មោះ"
+
+msgid "Unable to create new resolver process\n"
+msgstr "មិនអាច​បង្កើត​ដំណើរការ​របស់​កម្មវិធី​ដោះស្រាយ​ថ្មី​បាន​ទេ\n"
+
+msgid "Unable to send request to resolver process\n"
+msgstr "មិន​អាច​ផ្ញើ​សំណើ​ទៅកាន់​ដំណើរការ​កម្មវិធី​ដោះស្រាយ​\n"
+
+#, c-format
+msgid ""
+"Error resolving %s:\n"
+"%s"
+msgstr ""
+"កំហុស​ក្នុងការ​ដោះស្រាយ %s ៖\n"
+"%s"
+
+#, c-format
+msgid "Error resolving %s: %d"
+msgstr "កំហុស​ក្នុងការ​ដោះស្រាយ %s ៖ %d"
+
+#, c-format
+msgid ""
+"Error reading from resolver process:\n"
+"%s"
+msgstr ""
+"កំហុស​ក្នុងការ​អាន​ពី​ដំណើរការ​កម្មវិធីដោះស្រាយ ៖\n"
+"%s"
+
+#, c-format
+msgid "Resolver process exited without answering our request"
+msgstr "ដំណើរការ​របស់​កម្មវិធី​ដោះស្រាយ​បានចេញ ដោយ​មិនបាន​ឆ្លើយ​សំណើ​របស់​ពួកយើង​ទេ"
+
+#, c-format
+msgid "Thread creation failure: %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​បង្កើត​ខ្សែស្រឡាយ ៖ %s"
+
+msgid "Unknown reason"
+msgstr "មិនស្គាល់​ហេតុផល"
+
+#, c-format
+msgid ""
+"Error reading %s: \n"
+"%s.\n"
+msgstr ""
+"កំហុស​ក្នុងការ​អាន %s ៖ \n"
+"%s.\n"
+
+#, c-format
+msgid ""
+"Error writing %s: \n"
+"%s.\n"
+msgstr ""
+"កំហុស​ក្នុងការ​សរសេរ %s ៖ \n"
+"%s.\n"
+
+#, c-format
+msgid ""
+"Error accessing %s: \n"
+"%s.\n"
+msgstr ""
+"កំហុស​ក្នុងការ​ចូលដំណើរការ %s ៖ \n"
+"%s.\n"
+
+msgid "Directory is not writable."
+msgstr "ថត​មិនអាច​សរសេរ​បានទេ ។"
+
+msgid "Cannot send a file of 0 bytes."
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ​ប្រភេទ​សូន្យ​បានទេ ។"
+
+msgid "Cannot send a directory."
+msgstr "មិនអាច​ផ្ញើ​ថត​បាន​ទេ ។"
+
+#, c-format
+msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
+msgstr "%s មិន​មែន​ជា​ឯកសារ​ធម្មតា ។ ដោយ​កំសាក​បដិសេធ​​ក្នុងការ​សរសេរ​ជាន់​លើ​វា ។\n"
+
+#, c-format
+msgid "%s wants to send you %s (%s)"
+msgstr "%s ចង់​ផ្ញើ​ឲ្យ​អ្នក %s (%s)"
+
+#, c-format
+msgid "%s wants to send you a file"
+msgstr "%s ចង់​ផ្ញើ​ឯកសារ​ឲ្យ​អ្នក"
+
+#, c-format
+msgid "Accept file transfer request from %s?"
+msgstr "ទទួល​យក​សំណើ​ផ្ទេរ​ឯកសារ​ពី %s?"
+
+#, c-format
+msgid ""
+"A file is available for download from:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+"មាន​ឯកសារ​សម្រាប់​ទាញយក​ពី ៖\n"
+"ម៉ាស៊ីន​ពី​ចម្ងាយ ៖ %s\n"
+"ច្រក​ពី​ចម្ងាយ ៖ %d"
+
+#, c-format
+msgid "%s is offering to send file %s"
+msgstr "%s កំពុង​ផ្ដល់​ដើម្បី​ផ្ញើ​ឯកសារ %s"
+
+#, c-format
+msgid "%s is not a valid filename.\n"
+msgstr "%s មិនមែន​ជា​ឈ្មោះ​ឯកសារ​ត្រឹមត្រូវ​ទេ ។\n"
+
+#, c-format
+msgid "Offering to send %s to %s"
+msgstr "ផ្ដល់​ដើម្បី​ផ្ញើ %s ទៅឲ្យ %s"
+
+#, c-format
+msgid "Starting transfer of %s from %s"
+msgstr "ចាប់ផ្ដើម​ផ្ទេរ %s ពី %s"
+
+#, c-format
+msgid "Transfer of file %s complete"
+msgstr "ផ្ទេរ​ឯកសារ %s ចប់​ហើយ"
+
+msgid "File transfer complete"
+msgstr "ការ​ផ្ទេរ​ឯកសារ​ចប់ហើយ"
+
+#, c-format
+msgid "You canceled the transfer of %s"
+msgstr "អ្នក​បានបោះបង់​ការ​ផ្ទេរ %s"
+
+msgid "File transfer cancelled"
+msgstr "បាន​បោះបង់​ការ​ផ្ទេរ​ឯកសារ"
+
+#, c-format
+msgid "%s canceled the transfer of %s"
+msgstr "%s បានបោះបង់​ការ​ផ្ទេរ %s"
+
+#, c-format
+msgid "%s canceled the file transfer"
+msgstr "%s បាន​បោះបង់​ការ​ផ្ទេរ​ឯកសារ"
+
+#, c-format
+msgid "File transfer to %s failed."
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទេរ​ទៅ​កាន់ %s ។"
+
+#, c-format
+msgid "File transfer from %s failed."
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ផ្ទេរ​ពី %s ។"
+
+msgid "Run the command in a terminal"
+msgstr "រត់​ពាក្យ​បញ្ជា​នៅ​ក្នុង​ស្ថានីយ"
+
+msgid "The command used to handle \"aim\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"aim\" URLs ប្រសិន​បើ​បាន​បើក ។"
+
+msgid "The command used to handle \"gg\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​​ដើម្បី​គ្រប់គ្រង \"gg\" URLs ប្រសិនបើ​បាន​បើក ។"
+
+msgid "The command used to handle \"icq\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​ដើម្បី​គ្រប់គ្រង \"icq\" URLs ប្រសិន​បើ​បាន​បើក ។"
+
+msgid "The command used to handle \"irc\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​ដើម្បី​គ្រប់គ្រង \"irc\" URLs ប្រសិន​បើ​បានបើក ។"
+
+msgid "The command used to handle \"msnim\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"msnim\" URLs ប្រសិន​បើ​បានបើក ។"
+
+msgid "The command used to handle \"sip\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"sip\" URLs ប្រសិនបើ​បានបើក ។"
+
+msgid "The command used to handle \"xmpp\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បាន​ប្រើ​ដើម្បី​គ្រប់គ្រង \"xmpp\" URLs ប្រសិន​បើ​បានបើក ។"
+
+msgid "The command used to handle \"ymsgr\" URLs, if enabled."
+msgstr "ពាក្យ​បញ្ជា​បានប្រើ​ដើម្បី​គ្រប់គ្រង \"ymsgr\" URLs ប្រសិន​បើ​បានបើក ។"
+
+msgid "The handler for \"aim\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"aim\""
+
+msgid "The handler for \"gg\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រ​ងសម្រាប់ URLs \"gg\""
+
+msgid "The handler for \"icq\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"icq\""
+
+msgid "The handler for \"irc\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"irc\""
+
+msgid "The handler for \"msnim\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"msnim\""
+
+msgid "The handler for \"sip\" URLs"
+msgstr "កម្ម​វិធី​គ្រប់គ្រង​សម្រាប់ URLs \"sip\""
+
+msgid "The handler for \"xmpp\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"xmpp\""
+
+msgid "The handler for \"ymsgr\" URLs"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សម្រាប់ URLs \"ymsgr\""
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"aim\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បានបញ្ជាក់​នៅ​​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"aim\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"gg\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"gg\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"icq\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"icq\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"irc\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"irc\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"msnim\" "
+"URLs."
+msgstr ""
+"ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"msnim\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"sip\" "
+"URLs."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"sip\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"xmpp\" "
+"URLs."
+msgstr ""
+"ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"xmpp\" ។"
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"ymsgr\" "
+"URLs."
+msgstr ""
+"ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​គ្រប់គ្រង URLs \"ymsgr\" ។"
+
+msgid ""
+"True if the command used to handle this type of URL should be run in a "
+"terminal."
+msgstr "ពិត ប្រសិនបើ​ពាក្យ​បញ្ជា​បាន​បញ្ជាក់​នៅ​​គ្រាប់ចុច \"ពាក្យ​បញ្ជា\" គួរ​​រត់​នៅ​ក្នុង​ស្ថានីយ ។"
+
+msgid "Whether the specified command should handle \"aim\" URLs"
+msgstr "ថាតើ​ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់​គួរគ្រប់គ្រង URLs \"aim\" ។"
+
+msgid "Whether the specified command should handle \"gg\" URLs"
+msgstr "ថាតើ​ពាក្យ​បញ្ជា​ដែលបាន​បញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"gg\" ។"
+
+msgid "Whether the specified command should handle \"icq\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែល​បានប​ញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"icq\" ។"
+
+msgid "Whether the specified command should handle \"irc\" URLs"
+msgstr "ថាតើ​ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់គួរ​គ្រប់គ្រង URLs \"irc\" ។"
+
+msgid "Whether the specified command should handle \"msnim\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែលបានបញ្ជាក់គួរ​គ្រប់គ្រង URLs \"msnim\" ។"
+
+msgid "Whether the specified command should handle \"sip\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"sip\""
+
+msgid "Whether the specified command should handle \"xmpp\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជា​ដែល​បាន​បញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"xmpp\" ។"
+
+msgid "Whether the specified command should handle \"ymsgr\" URLs"
+msgstr "ថាតើ ពាក្យ​បញ្ជាក់​ដែលបានបញ្ជាក់​គួរ​គ្រប់គ្រង URLs \"ymsgr\" ។"
+
+msgid "<b><font color=\"red\">The logger has no read function</font></b>"
+msgstr "<b><font color=\"red\">មិនមាន​មុខងារ​អាន​ទៀតទេ</font></b>"
+
+msgid "HTML"
+msgstr "HTML"
+
+msgid "Plain text"
+msgstr "អត្ថបទ​ធម្មតា"
+
+msgid "Old flat format"
+msgstr "ទ្រង់ទ្រាយ​ចាស់"
+
+msgid "Logging of this conversation failed."
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រចុះ​កំណត់ហេតុ​ការ​សន្ទនា​នេះ ។"
+
+msgid "XML"
+msgstr "XML"
+
+#, c-format
+msgid ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+
+#, c-format
+msgid ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+
+msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
+msgstr "<font color=\"red\"><b>មិនអាច​រក​ផ្លូវ​កំណត់ហេតុ​បានទេ !</b></font>"
+
+#, c-format
+msgid "<font color=\"red\"><b>Could not read file: %s</b></font>"
+msgstr "<font color=\"red\"><b>មិនអាច​អាន​ឯកសារ​បានទេ ៖ %s</b></font>"
+
+#, c-format
+msgid "(%s) %s <AUTO-REPLY>: %s\n"
+msgstr "(%s) %s <AUTO-REPLY>: %s\n"
+
+#, c-format
+msgid "You are using %s, but this plugin requires %s."
+msgstr "អ្នក​កំពុង​ប្រើ %s ប៉ុន្តែ​កម្មវិធី​ជំនួយ​នេះ​ទាមទារ %s ។"
+
+msgid "This plugin has not defined an ID."
+msgstr "កម្មវិធី​ជំនួយ​នេះ​មិនបានកំណត់​​លេខសម្គាល់​ទេ ។"
+
+#, c-format
+msgid "Plugin magic mismatch %d (need %d)"
+msgstr "មិនផ្គូផ្គង​កម្មវិធីជំនួយ​មន្តអាគមន្ត %d (ត្រូវការ %d)"
+
+#, c-format
+msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
+msgstr "មិនផ្គូផ្គង​កំណែ ABI %d.%d.x (ត្រូវការ %d.%d.x)"
+
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr "កម្មវិធី​ជំនួយ​មិន​អនុវត្ត​មុខងារ​ដែល​ទាមទារ​ទាំង​អស់​ទេ (list_icon ចូល ហើយ​បិទ)"
+
+#, c-format
+msgid ""
+"The required plugin %s was not found. Please install this plugin and try "
+"again."
+msgstr ""
+"រក​មិនឃើញ​កម្មវិធី​ជំនួយ​ដែលត្រូវការ %s ​នោះទេ ។ សូម​ដំឡើង​កម្មវិធី​ជំនួយ​នេះ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "Unable to load the plugin"
+msgstr "មិន​អាច​ផ្ទុក​កម្មវិធី​ជំនួយ​បានទេ"
+
+#, c-format
+msgid "The required plugin %s was unable to load."
+msgstr "កម្មវិធីជំនួយ​ដែល​ត្រូវការ %s មិនអាច​ផ្ទុក​បានទេ ។"
+
+msgid "Unable to load your plugin."
+msgstr "មិនអាច​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់​អ្នក​បានទេ ។"
+
+#, c-format
+msgid "%s requires %s, but it failed to unload."
+msgstr "%s ត្រូវការ %s ប៉ុន្តែ​បានបរាជ័យ​ក្នុង​ការ​ផ្ទុក ។"
+
+msgid "Autoaccept"
+msgstr "ព្រម​ទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Auto-accept file transfer requests from selected users."
+msgstr "ការ​ផ្ទេរ​ឯកសារ​ដែល​ព្រមទទួលដោយ​ស្វ័យ​ប្រវត្តិ​ស្នើ​ពី​អ្នក​ប្រើ​ដែលបាន​ជ្រើស ។"
+
+#, c-format
+msgid "Autoaccepted file transfer of \"%s\" from \"%s\" completed."
+msgstr "ការ​ផ្ទេរ​ឯកសារ​ដែល​ព្រមទទួល​ដោយ​ស្វ័យប្រវត្តិ​របស់ \"%s\" ពី \"%s\" បាន​បញ្ចប់ ។"
+
+msgid "Autoaccept complete"
+msgstr "បញ្ចប់ការ​ព្រម​ទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+#, c-format
+msgid "When a file-transfer request arrives from %s"
+msgstr "នៅពេល​សំណើ​ការ​ផ្ទេរ​ឯកសារ​មក​ដល់ពី %s"
+
+msgid "Set Autoaccept Setting"
+msgstr "កំណត់​កា​រកំណត់​ព្រមទទួល​ដោយ​ស្វ័យប្រវត្តិ"
+
+msgid "_Save"
+msgstr "រក្សាទុក"
+
+msgid "_Cancel"
+msgstr "បោះបង់"
+
+msgid "Ask"
+msgstr "សួរ"
+
+msgid "Auto Accept"
+msgstr "ព្រមទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Auto Reject"
+msgstr "ច្រានចោល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Autoaccept File Transfers..."
+msgstr "កា​រផ្ទេរ​ឯកសារ​ព្រមទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ..."
+
+#. XXX: Is there a better way than this? There really should be.
+msgid ""
+"Path to save the files in\n"
+"(Please provide the full path)"
+msgstr ""
+"ផ្លូវ​ត្រូវ​រក្សាទុក​ឯកសារ​នៅ​ក្នុង\n"
+"(សូម​ផ្ដល់ផ្លូវ​ពេញលេញ)"
+
+msgid "Automatically reject from users not in buddy list"
+msgstr "ច្រានចោល​ដោយ​ស្វ័យ​ប្រវត្តិ​ពី​អ្នក​ប្រើ​មិន​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិទេ"
+
+msgid ""
+"Notify with a popup when an autoaccepted file transfer is complete\n"
+"(only when there's no conversation with the sender)"
+msgstr ""
+"ជូន​ដំណឹង​ដោយ​ម៉ឺនុយ​លេចឡើង នៅពេល​ការ​​ផ្ទេរ​ឯកសារ​ព្រមទទួល​ដោយ​ស្វ័យ​ប្រវត្តិ​បានបញ្ចប់\n"
+"(តែ​នៅពេល​ដែល​គ្មាន​ការ​សន្ទនា​ជា​មួយ​អ្នក​ផ្ញើ)"
+
+msgid "Create a new directory for each user"
+msgstr "បង្កើត​ថត​ថ្មី​សម្រាប់​អ្នក​ប្រើ​នីមួយៗ"
+
+msgid "Notes"
+msgstr "ចំណាំ"
+
+msgid "Enter your notes below..."
+msgstr "បញ្ចូល​ចំណាំ​របស់​អ្នក​ខាង​ក្រោម..."
+
+msgid "Edit Notes..."
+msgstr "កែសម្រួល​ចំណាំ..."
+
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Notes"
+msgstr "ចំណាំ​មិត្តភក្ដិ"
+
+#. *< name
+#. *< version
+msgid "Store notes on particular buddies."
+msgstr "ទុក​ចំណាំ​នៅ​លើ​មិត្តភក្ដិ​​ជាក់លាក់ ។"
+
+#. *< summary
+msgid "Adds the option to store notes for buddies on your buddy list."
+msgstr "បន្ថែម​ជម្រើស​ដើម្បីទុក​ចំណាំ​សម្រាប់​មិត្តភក្ដិ​នៅ​លើ​បញ្ជី​មិតភក្ដិ​របស់​អ្នក ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Cipher Test"
+msgstr "សាកល្បង​ការ​សរសេរ​ជា​សម្ងាត់"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Tests the ciphers that ship with libpurple."
+msgstr "សាកល្បង​កា​រសរសេរ​ជា​សម្ងាត់​ដែល​នាំ​មក​ជា​មួយ libpurple ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "DBus Example"
+msgstr "គំរូ DBus"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "DBus Plugin Example"
+msgstr "គំរូ​កម្មវិធី​ជំនួយ DBus"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "File Control"
+msgstr "ការត្រួតពិនិត្យ​ឯកសារ"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Allows control by entering commands in a file."
+msgstr "អនុញ្ញាត​ការ​ត្រួតពិនិត្យ​ដោយ​បញ្ចូល​ពាក្យ​បញ្ជា​នៅ​ក្នុង​ឯកសារ ។"
+
+msgid "Minutes"
+msgstr "នាទី"
+
+#. This is a cultural reference.  Dy'er Mak'er is a song by Led Zeppelin.
+#. If that doesn't translate well into your language, drop the 's before translating.
+msgid "I'dle Mak'er"
+msgstr "សញ្ញា​សម្គាល់​ថា​ទំនេរ"
+
+msgid "Set Account Idle Time"
+msgstr "កំណត់​ពេលវេលា​ទំនេរ​របស់គណនី"
+
+msgid "_Set"
+msgstr "កំណត់"
+
+msgid "None of your accounts are idle."
+msgstr "គ្មាន​គណនី​ណាមួយ​របស់​អ្នក​ទំនេរ​ទេ ។"
+
+msgid "Unset Account Idle Time"
+msgstr "មិន​កំណត់​ពេលវេលា​ទំនេរ​របស់គណនី​ទេ"
+
+msgid "_Unset"
+msgstr "មិនកំណត់"
+
+msgid "Set Idle Time for All Accounts"
+msgstr "កំណត់​ពេលវេលា​ទំនេរ​សម្រាប់គណនី​ទាំង​អស់"
+
+msgid "Unset Idle Time for All Idled Accounts"
+msgstr "មិន​កំណត់​ពេលវេលា​ទំនេរ​សម្រាប់គណនី​ទាំង​អស់​ទេ"
+
+msgid "Allows you to hand-configure how long you've been idle"
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នក​​កំណត់​រចនាសម្ព័ន្ធ​ដោយដៃ​ អំពី​រយៈពេល​ដែល​អ្នកនៅ​ទំនេរ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Client"
+msgstr "ម៉ាស៊ីន​ភ្ញៀវ​សាកល្បង IPC"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "Test plugin IPC support, as a client."
+msgstr "កា​រគាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ព្រម​ទាំង​ម៉ាស៊ីន​ភ្ញៀវ ។"
+
+#. *  description
+msgid ""
+"Test plugin IPC support, as a client. This locates the server plugin and "
+"calls the commands registered."
+msgstr ""
+"ការគាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ព្រម​ទាំង​ម៉ាស៊ីន​ភ្ញៀវ ។ វា​កំណត់​ទីតាំង​​កម្មវិធី​ជំនួយ​ម៉ាស៊ីនបម្រើ និង​ហៅ​"
+"ពាក្យ​បញ្ជា​ដែលបានចុះឈ្មោះ ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "IPC Test Server"
+msgstr "ម៉ាស៊ីនបម្រើ​សាកល្បង IPC"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "Test plugin IPC support, as a server."
+msgstr "គាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ជា​ម៉ាស៊ីន​បម្រើ ។"
+
+#. *  description
+msgid "Test plugin IPC support, as a server. This registers the IPC commands."
+msgstr "គាំទ្រ​ការ​សាកល្បង​កម្មវិធី​ជំនួយ IPC ជា​ម៉ាស៊ីន​បម្រើ ។ វា​ចុះឈ្មោះ​ពាក្យ​បញ្ជា IPC ។"
+
+msgid "Join/Part Hiding Configuration"
+msgstr "​ការ​កំណត់​រចនាសម្ព័ន្ធ​ចូល/លាក់ផ្នែក"
+
+msgid "Minimum Room Size"
+msgstr "បង្រួមទំហំ​បន្ទប់​អប្បបរមា"
+
+msgid "User Inactivity Timeout (in minutes)"
+msgstr "រយៈ​ពេល​អសកម្ម​របស់​អ្នកប្រើ (គិតជា​នាទី)"
+
+msgid "Apply hiding rules to buddies"
+msgstr "អនុវត្ត​ក្បួន​បន្លិច​ទៅកាន់​មិត្តភក្ដិ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Join/Part Hiding"
+msgstr "ចូល/លាក់ផ្នែក"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "Hides extraneous join/part messages."
+msgstr "លាក់​សារ​ចូល/ផ្នែក​ដែល​មិន​ត្រូវ​កន្លែង ។"
+
+#. *  description
+msgid ""
+"This plugin hides join/part messages in large rooms, except for those users "
+"actively taking part in a conversation."
+msgstr ""
+"កម្មវិធី​ជំនួយ​នេះ​លាក់​សារ​ចូល/ផ្នែក​នៅ​ក្នុង​បន្ទប់​ធំ លើកលែង​តែ​សម្រាប់​អ្នក​ប្រើទាំង​នោះ​ដែល​កើតឡើង​យ៉ាង​សកម្ម​"
+"នៅ​ក្នុង​ការ​សន្ទនា ។"
+
+#. This is used in the place of a timezone abbreviation if the
+#. * offset is way off.  The user should never really see it, but
+#. * it's here just in case.  The parens are to make it clear it's
+#. * not a real timezone.
+msgid "(UTC)"
+msgstr "(UTC)"
+
+msgid "User is offline."
+msgstr "អ្នកប្រើនៅ​ក្រៅ​បណ្ដាញ ។"
+
+msgid "Auto-response sent:"
+msgstr "បានផ្ញើ​ការ​ឆ្លើយតប​ដោយ​ស្វ័យ​ប្រវត្តិ ៖"
+
+#, c-format
+msgid "%s has signed off."
+msgstr "%s បាន​ចេញ ។"
+
+msgid "One or more messages may have been undeliverable."
+msgstr "សារ​មួយ ឬ​ច្រើន​អាច​​មិន​ត្រូវ​បានផ្ដល់ ។"
+
+msgid "You were disconnected from the server."
+msgstr "អ្នក​ត្រូវ​បានផ្ដាច់​ពី​ម៉ាស៊ីនបម្រើ ។"
+
+msgid ""
+"You are currently disconnected. Messages will not be received unless you are "
+"logged in."
+msgstr "អ្នក​បច្ចុប្បន្ន​ត្រូវ​បានផ្ដាច់ ។ សារ​នឹង​មិន​ត្រូវ​បានទទួល​លុះត្រា​តែ​អ្នក​ចូល ។"
+
+msgid "Message could not be sent because the maximum length was exceeded."
+msgstr "សារ​មិនអាច​ត្រូវ​បាន​ផ្ញើ​ទេ ដោយ​សារ​តែ​លើស​ប្រវែង​អតិបរមា ។"
+
+msgid "Message could not be sent."
+msgstr "សារ​មិន​អាច​ត្រូវ​បានផ្ញើទេ ។"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them.  Many translators
+#. choose to leave them alone.  Choose what's best for your language.
+msgid "Adium"
+msgstr "Adium"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them.  Many translators
+#. choose to leave them alone.  Choose what's best for your language.
+msgid "Fire"
+msgstr "ភ្លើង"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them.  Many translators
+#. choose to leave them alone.  Choose what's best for your language.
+msgid "Messenger Plus!"
+msgstr "កម្មវិធី​ផ្ញើសារ​បន្ថែម !"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them.  Many translators
+#. choose to leave them alone.  Choose what's best for your language.
+msgid "QIP"
+msgstr "QIP"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them.  Many translators
+#. choose to leave them alone.  Choose what's best for your language.
+msgid "MSN Messenger"
+msgstr "កម្មវិធី​ផ្ញើសារ MSN"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them.  Many translators
+#. choose to leave them alone.  Choose what's best for your language.
+msgid "Trillian"
+msgstr "Trillian"
+
+#. The names of IM clients are marked for translation at the request of
+#. translators who wanted to transliterate them.  Many translators
+#. choose to leave them alone.  Choose what's best for your language.
+msgid "aMSN"
+msgstr "aMSN"
+
+#. Add general preferences.
+msgid "General Log Reading Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​អាន​កំណត់​ហេតុ​ទូទៅ"
+
+msgid "Fast size calculations"
+msgstr "ការ​គណនា​ទំហំ​រហ័ស"
+
+msgid "Use name heuristics"
+msgstr "បើវិធានការ​ស្រាវជ្រាវ​ឈ្មោះ"
+
+#. Add Log Directory preferences.
+msgid "Log Directory"
+msgstr "ថត​កំណត់ហេតុ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Log Reader"
+msgstr "កម្មវិធី​អាន​កំណត់ហេតុ"
+
+#. *< name
+#. *< version
+#. * summary
+msgid "Includes other IM clients' logs in the log viewer."
+msgstr "រួម​បញ្ចូល​កំណត់​ហេតុ​របស់​ម៉ាស៊ីនភ្ញៀវ IM ផ្សេងៗ​ទៀត​នៅ​ក្នុង​កម្មវិធីមើល​កំណត់​ហេតុ ។"
+
+#. * description
+msgid ""
+"When viewing logs, this plugin will include logs from other IM clients. "
+"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
+"\n"
+"WARNING: This plugin is still alpha code and may crash frequently.  Use it "
+"at your own risk!"
+msgstr ""
+"នៅពេល​មើល​កំណត់ហេតុ កម្មវិធី​ជំនួយ​នេះ​នឹង​រួម​បញ្ចូល​​កំណត់ហេតុ​ពី​ម៉ាស៊ីន​ភ្ញៀវ IM ផ្សេងៗ ។បច្ចុប្បន្ន វា​រួម​"
+"មានកម្មវិធី​ផ្ញើសារ Adium, MSN និង Trillian ។\n"
+"\n"
+"ការព្រមាន ៖ កម្មវិធី​ជំនួយយ​នេះ​នៅតែ​ជា​អាល់ហ្វាកូដ ហើយ​អាច​គាំង​ជា​ញឹកញាប់ ។  ប្រើ​វា​នៅកម្រិត​"
+"គ្រោះថ្នាក់ផ្ទាល់របស់អ្នក !"
+
+msgid "Mono Plugin Loader"
+msgstr "កម្មវិធី​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់ Mono"
+
+msgid "Loads .NET plugins with Mono."
+msgstr "ផ្ទុក​កម្មវិធី​ជំនួយ .NET ជា​មួយ Mono ។"
+
+msgid "Add new line in IMs"
+msgstr "បន្ថែម​បន្ទាត់​ថ្មី​នៅ​ក្នុង IMs"
+
+msgid "Add new line in Chats"
+msgstr "បន្ថែម​បន្ទាត់​ថ្មី​នៅ​ក្នុង​គំនូស​តាង"
+
+#. *< magic
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "New Line"
+msgstr "បន្ទាត់ថ្មី"
+
+#. *< name
+#. *< version
+msgid "Prepends a newline to displayed message."
+msgstr "បន្ថែម​បន្ទាត់ថ្មី​ខាង​ចុង​ទៅ​កាាន់​សារ​ដែលបាន​បង្ហាញ ។"
+
+#. *< summary
+msgid ""
+"Prepends a newline to messages so that the rest of the message appears below "
+"the username in the conversation window."
+msgstr ""
+"បន្ថែម​បន្ទាត់ថ្មី​ទៅសារ ដូច្នេះ​សារ​ដែលនៅសល់​បង្ហាញ​ខាង​ក្រោម​ឈ្មោះអ្នក​ប្រើ​នៅ​ក្នុង​បង្អួច​សន្ទនា ។"
+
+msgid "Offline Message Emulation"
+msgstr "ក្លែង​ធ្វើសារ​ក្រៅ​បណ្ដាញ"
+
+msgid "Save messages sent to an offline user as pounce."
+msgstr "រក្សាទុកសារ​ដែល​បានផ្ញើ​ទៅ​កាន់​អ្នក​ប្រើ​ក្រៅ​ជា​ក្រុម ។"
+
+msgid ""
+"The rest of the messages will be saved as pounce. You can edit/delete the "
+"pounce from the `Buddy Pounce' dialog."
+msgstr "សារ​ដែល​នៅ​សល់​នឹង​ត្រូវ​បានរក្សាទុកជា​ក្រុម ។ អ្នកអាច​កែសម្រួល/លុប​ក្រុម​ពី​ប្រអប់​ `ក្រុម​មិត្តភក្ដិ' ។"
+
+#, c-format
+msgid ""
+"\"%s\" is currently offline. Do you want to save the rest of the messages in "
+"a pounce and automatically send them when \"%s\" logs back in?"
+msgstr ""
+"\"%s\" ឥឡូវ​នេះ​នៅ​ក្រៅបណ្ដាញ ។ តើអ្នក​ចង់​រក្សាទុក​សារ​ដែលនៅ​សល់​ជា​ក្រុម ហើយ​ផ្ញើ​ពួកវា​ដោយ​ស្វ័យ​ប្រវត្តិ​"
+"នៅពេល​ដែល \"%s\" ចូល​ម្ដង​ទៀត​ដែរឬទេ ?"
+
+msgid "Offline Message"
+msgstr "សារ​ក្រៅ​បណ្ដាញ"
+
+msgid "You can edit/delete the pounce from the `Buddy Pounces' dialog"
+msgstr "អ្នក​អាច​កែសម្រួល/លុប​ក្រុម​ពី​ប្រអប់ `ក្រុម​មិត្តភក្ដិ'"
+
+msgid "Yes"
+msgstr "បាទ/ចាស"
+
+msgid "No"
+msgstr "ទេ"
+
+msgid "Save offline messages in pounce"
+msgstr "រក្សាទុក​សារ​ក្រៅ​បណ្ដាញ​ជា​ក្រុម"
+
+msgid "Do not ask. Always save in pounce."
+msgstr "កុំសួរ ។ រក្សាទុក​ជា​ក្រុម​ជា​និច្ច ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Perl Plugin Loader"
+msgstr "កម្មវិធី​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់ Perl"
+
+#. *< name
+#. *< version
+#. *< summary
+msgid "Provides support for loading perl plugins."
+msgstr "ផ្ដល់​ការ​គាំទ្រ​សម្រាប់​ផ្ទុក​កម្មវិធី​ជំនួយ​របស់ perl ។"
+
+msgid "Psychic Mode"
+msgstr "របៀប Psychic"
+
+msgid "Psychic mode for incoming conversation"
+msgstr "របៀប Psychic សម្រាប់​ការ​សន្ទនា​ដែល​ចូល"
+
+msgid ""
+"Causes conversation windows to appear as other users begin to message you.  "
+"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr ""
+"ធ្វើ​ឲ្យ​បង្អួច​សន្ទនា​បង្ហាញ​ជា​អ្នក​ប្រើ​ផ្សេងៗ​ ចាប់ផ្ដើម​សរសេរ​សារ​ឲ្យ​អ្នក ។ ការងារ​សម្រាប់ AIM, "
+"ICQ, XMPP, Sametime និង Yahoo!"
+
+msgid "You feel a disturbance in the force..."
+msgstr "អ្នកមានអារម្មណ៍​ថា​រំខាន​ក្នុងការ​បង្ខំ..."
+
+msgid "Only enable for users on the buddy list"
+msgstr "បើក​សម្រាប់​តែ​អ្នក​ប្រើនៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​តែ​ប៉ុណ្ណោះ"
+
+msgid "Disable when away"
+msgstr "បិទ​នៅពេល​ចាកឆ្ងាយ"
+
+msgid "Display notification message in conversations"
+msgstr "បង្ហាញ​សារ​ជូនដំណឹង​នៅ​ក្នុង​ការ​សន្ទនា"
+
+msgid "Raise psychic conversations"
+msgstr "លើក​ការ​សន្ទនា psychic ឡើង"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Signals Test"
+msgstr "សាកល្បង​សញ្ញា"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Test to see that all signals are working properly."
+msgstr "សាកល្បង​ដើម្បី​ដឹង​ថា សញ្ញា​ទាំង​អស់​ដំណើរកាយ៉ារ​ង​រលូន ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Simple Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ធម្មតា"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Tests to see that most things are working."
+msgstr "សាកល្បង​ដើម្បី​ដឹង​ថា អ្វីៗ​ជា​ច្រើន​កំពុង​ដំណើរការ ។"
+
+#. Scheme name
+msgid "X.509 Certificates"
+msgstr "វិញ្ញាបនបត្រ X.509"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GNUTLS"
+msgstr "GNUTLS"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Provides SSL support through GNUTLS."
+msgstr "ផ្ដល់​នូវ​កា​រគាំទ្រ SSL តាមរយៈ GNUTLS ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "NSS"
+msgstr "NSS"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Provides SSL support through Mozilla NSS."
+msgstr "ផ្ដល់​នូវ​ការ​គាំទ្រ​ SSL តាមរយៈ Mozilla NSS ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "SSL"
+msgstr "SSL"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Provides a wrapper around SSL support libraries."
+msgstr "ផ្ដល់​នូវការ​កម្មវិធី​រុំ​ជុំវិញ​បណ្ណាល័យ​គាំទ្រ SSL ។"
+
+#, c-format
+msgid "%s is no longer away."
+msgstr "%s មិន​ចាកឆ្ងាយ​ទៀតទេ ។"
+
+#, c-format
+msgid "%s has gone away."
+msgstr "%s បាន​ទៅ​ឆ្ងាយ​ហើយ ។"
+
+#, c-format
+msgid "%s has become idle."
+msgstr "%s បាន​ក្លាយជា​ទំនេរ ។"
+
+#, c-format
+msgid "%s is no longer idle."
+msgstr "%s មិនទំនេរ​ទៀតទេ ។"
+
+#, c-format
+msgid "%s has signed on."
+msgstr "%s បានចូល ។"
+
+msgid "Notify When"
+msgstr "ជូនដំណឹង​នៅ​លើ"
+
+msgid "Buddy Goes _Away"
+msgstr "មិត្តភក្ដិ​​ទៅ​ឆ្ងាយ"
+
+msgid "Buddy Goes _Idle"
+msgstr "មិត្តភក្ដិ​ទំនេរ"
+
+msgid "Buddy _Signs On/Off"
+msgstr "មិត្តភក្ដិ ចេញ/ចូល"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy State Notification"
+msgstr "ស្ថាន​​ភាព​ជូនដំណឹង​របស់មិត្តភក្ដិ"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid ""
+"Notifies in a conversation window when a buddy goes or returns from away or "
+"idle."
+msgstr "ជូនដំណឹង​នៅ​ក្នុង​បង្អួច​សន្ទនា នៅពេល​ដែល​មិត្តភក្ដិ​ទៅ ឬ​​​ត្រឡប់​​ពី​ការ​ចាកឆ្ងាយ ឬ​ទំនេរ ។"
+
+msgid "Tcl Plugin Loader"
+msgstr "កម្មវិធី​ផ្ទុក​កម្មវិធី​ជំនួយ Tcl"
+
+msgid "Provides support for loading Tcl plugins"
+msgstr "ផ្ដល់​នូវការ​គាំទ្រ​សម្រាប់​ផ្ទុក​កម្មវិធី​ជំនួយ Tcl"
+
+msgid ""
+"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
+"install ActiveTCL from http://www.activestate.com\n"
+msgstr ""
+"មិនអាច​រក​ឃើញ​ការ​ដំឡើងTCL ដែល​សកម្ម ។ ប្រសិន​បើ​អ្នក​ចង់​ប្រើ​កម្មវិធី​ជំនួយ TCL ដំឡើង TCL សកម្ម​ពី "
+"http://www.activestate.com\n"
+
+msgid ""
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
+msgstr ""
+"Apple Bonjour សម្រាប់​ប្រអប់​ឧបករណ៍​វីនដូ​ដែល​រក​មិនឃើញ សូម​មើល FAQ នៅ ៖ http://d.pidgin.im/"
+"BonjourWindows ចំពោះ​ព័ត៌មាន​លម្អិត ។"
+
+msgid "Unable to listen for incoming IM connections\n"
+msgstr "មិនអាច​ស្ដាប់​ការ​តភ្ជាប់ IM ចូល​\n"
+
+msgid ""
+"Unable to establish connection with the local mDNS server.  Is it running?"
+msgstr "មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​នឹង​ម៉ាស៊ីន​បម្រើ mDNS មូលដ្ឋាន​ទេ ។ តើ​វា​កំពុង​រត់​ទេ ?"
+
+msgid "First name"
+msgstr "នាម​ខ្លួន"
+
+msgid "Last name"
+msgstr "នាម​ត្រកូល"
+
+msgid "Email"
+msgstr "អ៊ីមែល"
+
+msgid "AIM Account"
+msgstr "គណនី AIM"
+
+msgid "XMPP Account"
+msgstr "គណនី XMPP"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Bonjour Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​ Bonjour"
+
+msgid "Purple Person"
+msgstr "មនុស្ស​​ពណ៌ស្វាយ"
+
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "ច្រក"
+
+msgid "Bonjour"
+msgstr "Bonjour"
+
+#, c-format
+msgid "%s has closed the conversation."
+msgstr "%s បានបិទ​ការ​សន្ទនា ។"
+
+msgid "Unable to send the message, the conversation couldn't be started."
+msgstr "មិនអាច​ផ្ញើ​សារ​បានទេ ការ​សន្ទនា​មិនអាច​ត្រូវ​បាន​ចាប់ផ្ដើម​ទេ ។"
+
+msgid "Cannot open socket"
+msgstr "មិនអាច​បើក​រន្ធ​បានទេ"
+
+msgid "Could not bind socket to port"
+msgstr "មិនអាច​ចង​រន្ធ​ទៅ​ច្រក​បានទេ"
+
+msgid "Could not listen on socket"
+msgstr "មិនអាច​ស្ដាប់​នៅ​លើ​រន្ធ​បានទេ"
+
+msgid "Error communicating with local mDNSResponder."
+msgstr "កំហុស​ក្នុងការ​ទាក់ទង​ជា​មួយ​នឹង mDNSResponder មូលដ្ឋាន ។"
+
+msgid "Invalid proxy settings"
+msgstr "ការ​កំណត់​ប្រូកស៊ី​មិន​ត្រឹមត្រូវ"
+
+msgid ""
+"Either the host name or port number specified for your given proxy type is "
+"invalid."
+msgstr "ឈ្មោះ​ម៉ាស៊ីន ឬ​លេខ​ច្រក​ដែល​បាន​បញ្ជាក់​សម្រាប់​ប្រភេទ​ប្រូកស៊ី​ដែលបានផ្ដល់​មិន​ត្រឹមត្រូវ​ទេ ។"
+
+msgid "Token Error"
+msgstr "កំហុស​ថូខឹន"
+
+msgid "Unable to fetch the token.\n"
+msgstr "មិនអាច​ទៅ​យក​ថូខឹន​បានទេ ។\n"
+
+msgid "Save Buddylist..."
+msgstr "រក្សា​​ទុក​​​បញ្ជី​មិត្តភក្ដិ..."
+
+msgid "Your buddylist is empty, nothing was written to the file."
+msgstr "បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​គឺទទេ គ្មាន​អ្វី​ត្រូវ​បានសរសេរ​ទៅ​កាន់​ឯកសារ​ទេ ។"
+
+msgid "Buddylist saved successfully!"
+msgstr "បាន​រក្សាទុក​បញ្ជី​មិត្តភក្ដិ​ដោយ​ជោគជ័យ !"
+
+#, c-format
+msgid "Couldn't write buddy list for %s to %s"
+msgstr "មិនអាច​សរសេរ​បញ្ជីមិត្តភក្ដិ​សម្រាប់ %s ទៅ​កាន់ %s"
+
+msgid "Couldn't load buddylist"
+msgstr "មិនអាច​ផ្ទុក​បញ្ជី​មិត្តភក្ដិ​បានទេ"
+
+msgid "Load Buddylist..."
+msgstr "ផ្ទុក​បញ្ជី​មិត្តភក្ដិ..."
+
+msgid "Buddylist loaded successfully!"
+msgstr "បានផ្ទុក​បញ្ជី​មិត្តភក្ដិ​​ដោយ​ជោគជ័យ !"
+
+msgid "Save buddylist..."
+msgstr "រក្សា​​ទុក​​បញ្ជីមិត្តភក្តិ..."
+
+msgid "Load buddylist from file..."
+msgstr "ផ្ទុក​បញ្ជីមិត្តភក្ដិ​ពី​ឯកសារ..."
+
+msgid "Fill in the registration fields."
+msgstr "បំពេញ​វាល​ចុះឈ្មោះ ។"
+
+msgid "Passwords do not match."
+msgstr "ពាក្យ​សម្ងាត់​មិន​ផ្គូផ្គង ។"
+
+msgid "Unable to register new account. Error occurred.\n"
+msgstr "មិនអាច​ចុះឈ្មោះ​គណនី​ថ្មី​ទេ ។ កំហុស​បាន​កើត​ឡើង ។\n"
+
+msgid "New Gadu-Gadu Account Registered"
+msgstr "គណនី Gadu-Gadu ដែលបានចុះឈ្មោះ​ថ្មី"
+
+msgid "Registration completed successfully!"
+msgstr "ការ​ចុះឈ្មោះ​បានបញ្ចប់​ដោយ​ជោគជ័យ !"
+
+msgid "Password"
+msgstr "ពាក្យ​​​សម្ងាត់"
+
+msgid "Password (retype)"
+msgstr "ពាក្យ​​​សម្ងាត់ (វាយ​ឡើង​វិញ)"
+
+msgid "Enter current token"
+msgstr "បញ្ចូល​ថូខឹន​បច្ចុប្បន្ន"
+
+msgid "Current token"
+msgstr "ថូខឹន​បច្ចុប្បន្ន"
+
+msgid "Register New Gadu-Gadu Account"
+msgstr "ចុះឈ្មោះ​គណនី Gadu-Gadu ថ្មី"
+
+msgid "Please, fill in the following fields"
+msgstr "សូមបំពេញ​វាល​ដូច​ខាងក្រោម"
+
+msgid "City"
+msgstr "ទីក្រុង​"
+
+msgid "Year of birth"
+msgstr "ឆ្នាំ​កំណើត"
+
+msgid "Gender"
+msgstr "ភេទ"
+
+msgid "Male or female"
+msgstr "ប្រុស ឬ​ស្រី"
+
+msgid "Male"
+msgstr "ប្រុស"
+
+msgid "Female"
+msgstr "ស្រី"
+
+msgid "Only online"
+msgstr "តែ​លើ​បណ្ដាញ​ប៉ុណ្ណោះ"
+
+msgid "Find buddies"
+msgstr "រក​មិត្តភក្ដិ"
+
+msgid "Please, enter your search criteria below"
+msgstr "សូម​បញ្ចូល​លក្ខខណ្ឌ​ស្វែងរក​របស់​អ្នក​ខាង​ក្រោម"
+
+msgid "Fill in the fields."
+msgstr "បំពេញ​វាល ។"
+
+msgid "Your current password is different from the one that you specified."
+msgstr "ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន​របស់​អ្នក ខុស​ពី​ពាក្យ​សម្ងាត់​ដែល​អ្នក​បានបញ្ជាក់ ។"
+
+msgid "Unable to change password. Error occurred.\n"
+msgstr "មិន​អាច​ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​បានទេ ។ កំហុស​បានកើត​ឡើង ។\n"
+
+msgid "Change password for the Gadu-Gadu account"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​សម្រាប់​​គណនី Gadu-Gadu"
+
+msgid "Password was changed successfully!"
+msgstr "ពាក្យ​សម្ងាត់​ត្រូវ​បាន​ផ្លាស់ប្ដូរ​ជោគជ័យ !"
+
+msgid "Current password"
+msgstr "ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន"
+
+msgid "Please, enter your current password and your new password for UIN: "
+msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​បច្ចុប្បន្ន និង​ពាក្យ​សម្ងាត់​ថ្មី​របស់​អ្នក​សម្រាប់ UIN ៖ "
+
+msgid "Change Gadu-Gadu Password"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ Gadu-Gadu"
+
+#, c-format
+msgid "Select a chat for buddy: %s"
+msgstr "ជ្រើស​ការ​ជជែក​សម្រាប់មិត្តភក្ដិ ៖ %s"
+
+msgid "Add to chat..."
+msgstr "បន្ថែម​ទៅ​កា​រជជែក..."
+
+msgid "Available"
+msgstr "ដែល​អាច​ប្រើបាន"
+
+#. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
+#. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
+#. Away stuff
+msgid "Away"
+msgstr "ចាកឆ្ងាយ"
+
+msgid "UIN"
+msgstr "UIN"
+
+msgid "First Name"
+msgstr "នាម​ខ្លួន"
+
+msgid "Birth Year"
+msgstr "ឆ្នាំ​​​កំណើត"
+
+msgid "Unable to display the search results."
+msgstr "មិនអាច​បង្ហាញ​លទ្ធផល​ស្វែងរក​ទេ ។"
+
+msgid "Gadu-Gadu Public Directory"
+msgstr "ថត​សាធារណៈ​របស់ Gadu-Gadu"
+
+msgid "Search results"
+msgstr "លទ្ធផល​ស្វែងរក"
+
+msgid "No matching users found"
+msgstr "រក​មិនឃើញ​អ្នក​ប្រើ​ដែលផ្គូផ្គង​ទេ"
+
+msgid "There are no users matching your search criteria."
+msgstr "មិនមាន​អ្នក​ប្រើ​ដែល​ផ្គូផ្គង​នឹង​លក្ខខណ្ឌ​ស្វែងរក​របស់​អ្នក ។"
+
+msgid "Unable to read socket"
+msgstr "មិនអាច​អាន​រន្ធ​បានទេ"
+
+msgid "Buddy list downloaded"
+msgstr "បានទាញយក​បញ្ជីមិត្តភក្ដិ"
+
+msgid "Your buddy list was downloaded from the server."
+msgstr "បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​ត្រូ​វបាន​ទាញយក​ពី​ម៉ាស៊ីនបម្រើ ។"
+
+msgid "Buddy list uploaded"
+msgstr "បានផ្ទុក​បញ្ជីមិត្តភក្ដិ​ឡើង"
+
+msgid "Your buddy list was stored on the server."
+msgstr "បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​ត្រូ​វបាន​ទុក​នៅ​លើ​ម៉ាស៊ីនបម្រើ ។"
+
+msgid "Connection failed."
+msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ ។"
+
+msgid "Add to chat"
+msgstr "បន្ថែម​ទៅ​កាន់​ការ​ជជែក"
+
+msgid "Chat _name:"
+msgstr "ឈ្មោះការ​ជជែក ៖"
+
+msgid "Chat error"
+msgstr "កំហុស​ក្នុងកា​រជជែក"
+
+msgid "This chat name is already in use"
+msgstr "ឈ្មោះការ​ជជែក​នេះ​កំពុង​ប្រើ​រួច​ហើយ"
+
+msgid "Not connected to the server."
+msgstr "មិន​បានតភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីនបម្រើ​ទេ ។"
+
+msgid "Find buddies..."
+msgstr "រក​មិត្តភក្ដិ..."
+
+msgid "Change password..."
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់..."
+
+msgid "Upload buddylist to Server"
+msgstr "ផ្ទុក​បញ្ជីមិត្តភក្ដិ​ឡើង​ទៅកាន់​ម៉ាស៊ីនបម្រើ"
+
+msgid "Download buddylist from Server"
+msgstr "ទាញយក​បញ្ជីមិត្តភក្ដិ​ពី​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Delete buddylist from Server"
+msgstr "លុប​បញ្ជីមិត្តភក្ដិ​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Save buddylist to file..."
+msgstr "រក្សាទុក​បញ្ជីមិត្តភក្ដិ​ទៅ​កាន់​ឯកសារ..."
+
+#. magic
+#. major_version
+#. minor_version
+#. plugin type
+#. ui_requirement
+#. flags
+#. dependencies
+#. priority
+#. id
+#. name
+#. version
+msgid "Gadu-Gadu Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ Gadu-Gadu"
+
+#. summary
+msgid "Polish popular IM"
+msgstr "សម្អាត​ប្រជាប្រិយភាព​របស់ IM"
+
+msgid "Gadu-Gadu User"
+msgstr "អ្នក​ប្រើ Gadu-Gadu"
+
+#, c-format
+msgid "Unknown command: %s"
+msgstr "មិនស្គាល់​ពាក្យ​បញ្ជា ៖ %s"
+
+#, c-format
+msgid "current topic is: %s"
+msgstr "ប្រធានបទ​បច្ចុប្បន្នគឺ ៖ %s"
+
+msgid "No topic is set"
+msgstr "គ្មាន​ប្រធាន​បទ​ត្រូវ​បាន​កំណត់​ទេ"
+
+msgid "File Transfer Failed"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទេរ​ឯកសារ"
+
+msgid "Could not open a listening port."
+msgstr "មិនអាច​បើក​ច្រក​ស្ដាប់​បានទេ ។"
+
+msgid "Error displaying MOTD"
+msgstr "កំហុស​ក្នុងកា​របង្ហាញ MOTD"
+
+msgid "No MOTD available"
+msgstr "មិនមាន MOTD ទេ"
+
+msgid "There is no MOTD associated with this connection."
+msgstr "មិនមាន​ MOTD បាន​ភ្ជាប់​ជា​មួយ​នឹង​ការ​តភ្ជាប់​នេះ​ទេ ។"
+
+#, c-format
+msgid "MOTD for %s"
+msgstr "MOTD សម្រាប់ %s"
+
+msgid "Server has disconnected"
+msgstr "ម៉ាស៊ីន​បម្រើ​បាន​ផ្ដាច់"
+
+msgid "View MOTD"
+msgstr "មើល MOTD"
+
+msgid "_Channel:"
+msgstr "ឆានែល ៖"
+
+msgid "_Password:"
+msgstr "ពាក្យ​​​សម្ងាត់ ៖"
+
+msgid "IRC nicks may not contain whitespace"
+msgstr "សម្មតិនាម IRC អាច​​​​​​មិនមាន​ចន្លោះ"
+
+#. 1. connect to server
+#. connect to the server
+msgid "Connecting"
+msgstr "តភ្ជាប់"
+
+msgid "SSL support unavailable"
+msgstr "មិនមានការគាំទ្រ SSL"
+
+msgid "Couldn't create socket"
+msgstr "មិនអាច​បង្កើត​រន្ធ​បានទេ"
+
+msgid "Couldn't connect to host"
+msgstr "មិនអាច​តភ្ជាប់​ទៅកាន់​ម៉ាស៊ីនបាន​ទេ"
+
+msgid "Read error"
+msgstr "កំហុស​ក្នុងការ​អាន"
+
+msgid "Users"
+msgstr "អ្នក​ប្រើ"
+
+msgid "Topic"
+msgstr "ប្រធាន​បទ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "IRC Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ IRC"
+
+#. *  summary
+msgid "The IRC Protocol Plugin that Sucks Less"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ IRC ដែល​ Sucks Less"
+
+#. host to connect to
+msgid "Server"
+msgstr "ម៉ាស៊ីន​បម្រើ"
+
+#. port to connect to
+msgid "Port"
+msgstr "ច្រក"
+
+msgid "Encodings"
+msgstr "ការ​អ៊ិនកូដ"
+
+msgid "Auto-detect incoming UTF-8"
+msgstr "រកឃើញ UTF-8 ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Real name"
+msgstr "ឈ្មោះ​ពិត"
+
+#.
+#. option = purple_account_option_string_new(_("Quit message"), "quitmsg", IRC_DEFAULT_QUIT);
+#. prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option);
+#.
+msgid "Use SSL"
+msgstr "ប្រើ SSL"
+
+msgid "Bad mode"
+msgstr "របៀប​មិនល្អ"
+
+#, c-format
+msgid "Ban on %s by %s, set %s ago"
+msgstr "ហាមឃាត់​នៅ​លើ %s ដោយ %s កំណត់ %s កន្លង​ទៅ"
+
+#, c-format
+msgid "Ban on %s"
+msgstr "ហាមឃាត់​នៅ​លើ %s"
+
+msgid "End of ban list"
+msgstr "ចុច​បញ្ជី​ហាមឃាត់"
+
+#, c-format
+msgid "You are banned from %s."
+msgstr "អ្នក​ត្រូវ​បាន​ហាមឃាត់​ពី %s ។"
+
+msgid "Banned"
+msgstr "បានហាមឃាត់"
+
+#, c-format
+msgid "Cannot ban %s: banlist is full"
+msgstr "មិនអាច​ហាមឃាត់ %s ៖ បញ្ជី​ហាមឃាត់​ពេញហើយ"
+
+msgid " <i>(ircop)</i>"
+msgstr " <i>(ircop)</i>"
+
+msgid " <i>(identified)</i>"
+msgstr " <i>(បាន​បញ្ជាក់អត្តសញ្ញាណ)</i>"
+
+msgid "Nick"
+msgstr "សម្មតិនាម"
+
+msgid "Currently on"
+msgstr "បច្ចុប្បន្ន​បើក"
+
+msgid "Idle for"
+msgstr "ទំនេរ​សម្រាប់"
+
+msgid "Online since"
+msgstr "លើ​បណ្ដាញ​តាំង​ពី"
+
+msgid "<b>Defining adjective:</b>"
+msgstr "<b>កំណត់​គុណនាម ៖</b>"
+
+msgid "Glorious"
+msgstr "Glorious"
+
+#, c-format
+msgid "%s has changed the topic to: %s"
+msgstr "%s បានផ្លាស់ប្ដូរ​ប្រធានបទ​ទៅ ៖ %s"
+
+#, c-format
+msgid "%s has cleared the topic."
+msgstr "%s បានជម្រះ​ប្រធានបទ ។"
+
+#, c-format
+msgid "The topic for %s is: %s"
+msgstr "ប្រធាន​បទ​សម្រាប់ %s គឺ ៖ %s"
+
+#, c-format
+msgid "Unknown message '%s'"
+msgstr "មិន​ស្គាល់​សារ '%s'"
+
+msgid "Unknown message"
+msgstr "មិន​ស្គាល់​សារ"
+
+msgid "The IRC server received a message it did not understand."
+msgstr "ម៉ាស៊ីន​បម្រើ IRC ​បាន​ទទួល​សារ​ដែលវា​មិនយល់ ។"
+
+#, c-format
+msgid "Users on %s: %s"
+msgstr "អ្នក​ប្រើ​នៅ​លើ %s ៖ %s"
+
+msgid "Time Response"
+msgstr "​ពេលវេលា​ឆ្លើយ"
+
+msgid "The IRC server's local time is:"
+msgstr "ពេលវេលា​មូលដ្ឋាន​របស់​ម៉ាស៊ីនបម្រើ IRC គឺ ៖"
+
+msgid "No such channel"
+msgstr "គ្មាន​ឆានែល​បែបនេះ​ទេ"
+
+#. does this happen?
+msgid "no such channel"
+msgstr "គ្មាន​ឆានែលបែបនេះ​ទេ"
+
+msgid "User is not logged in"
+msgstr "អ្នកប្រើ​មិន​បាន​ចូល​ទេ"
+
+msgid "No such nick or channel"
+msgstr "គ្មាន​សម្មតិនាម ឬ​ឆានែល​ទេ"
+
+msgid "Could not send"
+msgstr "មិន​អាច​ផ្ញើ"
+
+#, c-format
+msgid "Joining %s requires an invitation."
+msgstr "ចូលរួម %s ត្រូវការ​កា​រអញ្ជើញ ។"
+
+msgid "Invitation only"
+msgstr "តែ​ការ​អញ្ជើញ​ប៉ុណ្ណោះ"
+
+#, c-format
+msgid "You have been kicked by %s: (%s)"
+msgstr "អ្នក​ត្រូ​វបាន​ធាក់ចេញ​ដោយ %s: (%s)"
+
+#. Remove user from channel
+#, c-format
+msgid "Kicked by %s (%s)"
+msgstr "បាន​ធាក់ចេញ​ដោយ %s (%s)"
+
+#, c-format
+msgid "mode (%s %s) by %s"
+msgstr "របៀប (%s %s) ដោយ %s"
+
+msgid "Invalid nickname"
+msgstr "សម្មតិនាម​មិនត្រឹមត្រូវ"
+
+msgid ""
+"Your selected nickname was rejected by the server.  It probably contains "
+"invalid characters."
+msgstr ""
+"សម្មតិនាម​ដែល​អ្នក​បានជ្រើស​ត្រូ​វបានបដិសេធ​ដោយ​ម៉ាស៊ីបម្រើ ។ វា​ប្រហែលជា​មាន​តួអក្សរ​មិនត្រឹមត្រូវ ។"
+
+msgid ""
+"Your selected account name was rejected by the server.  It probably contains "
+"invalid characters."
+msgstr ""
+"ឈ្មោះ​គណនី​ដែល​អ្នកបានជ្រើស​ត្រូវ​បានបដិសេធ​ដោយ​ម៉ាស៊ីនបម្រើ ។ វា​ប្រហែលជា​មាន​តួអក្សរ​មិនត្រឹមត្រូវ ។"
+
+msgid "Cannot change nick"
+msgstr "មិនអាច​ផ្លាស់ប្ដូរ​សម្មតិនាម​បានទេ"
+
+msgid "Could not change nick"
+msgstr "មិនអាច​ផ្លាស់ប្ដូរ​សម្មតិនាម​បានទេ"
+
+#, c-format
+msgid "You have parted the channel%s%s"
+msgstr "អ្នកបាន​បោះបង់​ឆានែល %s%s"
+
+msgid "Error: invalid PONG from server"
+msgstr "កំហុស ៖ PONG មិន​ត្រឹមត្រូវ​ពី​ម៉ាស៊ីនបម្រើ"
+
+#, c-format
+msgid "PING reply -- Lag: %lu seconds"
+msgstr "PING reply -- Lag ៖ %lu វិនាទី"
+
+#, c-format
+msgid "Cannot join %s: Registration is required."
+msgstr "មិនអាច​ចូល %s ៖ តម្រូវ​ឲ្យ​ចុះឈ្មោះ ។"
+
+msgid "Cannot join channel"
+msgstr "មិនអាច​ចូល​ឆានែល​បានទេ"
+
+msgid "Nick or channel is temporarily unavailable."
+msgstr "សម្មតិនាម ឬ​ឆានែល​មិនអាច​ប្រើ​បានជា​បណ្ដោះអាសន្ន ។"
+
+#, c-format
+msgid "Wallops from %s"
+msgstr "វាយ​ពី %s"
+
+msgid "action &lt;action to perform&gt;:  Perform an action."
+msgstr "សកម្មភាព &lt;សកម្មភាព​ត្រូវ​អនុវត្ត&gt; ៖  អនុវត្ត​សកម្មភាព ។"
+
+msgid ""
+"away [message]:  Set an away message, or use no message to return from being "
+"away."
+msgstr "[សារ] ចាកឆ្ងាយ ៖ កំណត់​សារ​ចាកឆ្ងាយ ឬ​ប្រើ​គ្មាន​សារ​ដើម្បី​ត្រឡប់​ពីការ​ចាកឆ្ងាយ ។"
+
+msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
+msgstr "ctcp <nick> <msg> ៖ ផ្ញើ ctcp msg ទៅ​កាន់​សម្មតិនាម ។"
+
+msgid "chanserv: Send a command to chanserv"
+msgstr "chanserv ៖ ផ្ញើល​ពាក្យ​បញ្ជា​ទៅកាន់ chanserv"
+
+msgid ""
+"deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from "
+"someone. You must be a channel operator to do this."
+msgstr ""
+"deop &lt;nick1&gt; [nick2] ...:  យក​ស្ថានភាព​ការី​ឆានែល​ពី​អ្នកណា​ម្នាក់ ។ អ្នក​ត្រូវតែ​ជា​ការី​"
+"ឆានែល​ដើម្បី​ធ្វើ​វា ។"
+
+msgid ""
+"devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from "
+"someone, preventing them from speaking if the channel is moderated (+m). You "
+"must be a channel operator to do this."
+msgstr ""
+"devoice &lt;nick1&gt; [nick2] ...:  យក​ស្ថានភាព​សំឡេង​ឆានែល​ពី​អ្នកណា​ម្នាក់ ដោយ​ការពារ​"
+"ពួកគេ​ពី​កា​រនិយាយ ប្រសិនបើ​ឆានែល​ត្រូវ​បាន​ប្រតិបត្តិ (+m) ។ អ្នក​ត្រូវតែ​ជា​ការី​ឆានែល​ដើម្បីធ្វើ​វា ។"
+
+msgid ""
+"invite &lt;nick&gt; [room]:  Invite someone to join you in the specified "
+"channel, or the current channel."
+msgstr ""
+"អញ្ជើញ &lt;សម្មតិនាម&gt; [បន្ទប់] ៖ អញ្ជើញ​អ្នកណា​ម្នាក់​ឲ្យ​ចូលរួម​ជា​មួយ​អ្នក​នៅក្នុង​ឆានែល​ដែល​បាន​"
+"បញ្ជាក់ ឬ​ឆានែល​បច្ចុប្បន្ន ។"
+
+msgid ""
+"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]] ៖ បញ្ចូល​ឆានែល​មួយ ឬ​ច្រើន​ ជា​ជម្រើស​"
+"ផ្ដល់​នូវ​សោ​ឆានែល​សម្រាប់​ឆានែល​នីមួយៗ​ ប្រសិន​បើ​ត្រូវការ ។"
+
+msgid ""
+"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]] ៖ បញ្ចូល​ឆានែល​មួយ ឬច្រើន​ ជា​"
+"ជម្រើ​ស​ដោយ​ផ្ដល់​គ្រាប់ចុច​ឆានែល​សម្រាប់​ឆានែលនីមួយៗ​ ប្រសិន​បើ​ត្រូវការ ។"
+
+msgid ""
+"kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a "
+"channel operator to do this."
+msgstr ""
+"kick &lt;nick&gt; [message] ៖ យក​អ្នកណាម្នាក់​ចេញ​ពី​ឆានែល ។ អ្នក​ត្រូវ​តែ​ជា​ការី​ឆានែល​"
+"ដើម្បីការ​ធ្វើការងារ​នេះ ។"
+
+msgid ""
+"list:  Display a list of chat rooms on the network. <i>Warning, some servers "
+"may disconnect you upon doing this.</i>"
+msgstr ""
+"បញ្ជី ៖ បង្ហាញ​បញ្ជី​បន្ទប់​ជជែក​នៅ​លើ​បណ្ដាញ ។ <i>ការ​ព្រមាន ម៉ាស៊ីនបម្រើ​មួយ​ចំនួន​អាច​ផ្ដាច់​អ្នកពី​ការធ្វើ​"
+"ការងារ​នេះ ។</i>"
+
+msgid "me &lt;action to perform&gt;:  Perform an action."
+msgstr "me &lt;action to perform&gt; ៖ អនុវត្ត​សកម្មភាព ។"
+
+msgid "memoserv: Send a command to memoserv"
+msgstr "memoserv ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ទៅ​កាន់ memoserv"
+
+msgid ""
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel "
+"or user mode."
+msgstr ""
+"របៀប &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt; ៖  កំណត់ ឬ​មិនកំណត់​ឆានែល ឬ​​របៀប​"
+"អ្នកប្រើ ។"
+
+msgid ""
+"msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"msg &lt;nick&gt; &lt;message&gt; ៖  ផ្ញើ​សារ​ឯកជន​ទៅ​ឲ្យ​​អ្នក​ប្រើ (ដូច​បានស្នើ​ទៅ​"
+"កាន់ឆានែល) ។"
+
+msgid "names [channel]:  List the users currently in a channel."
+msgstr "names [channel] ៖  រាយ​អ្នក​ប្រើ​ដែល​បច្ចុប្បន្ន​នៅ​ក្នុង​ឆានែល ។"
+
+msgid "nick &lt;new nickname&gt;:  Change your nickname."
+msgstr "nick &lt;new nickname&gt; ៖  ផ្លាស់ប្ដូរ​សម្មតិនាម​របស់​អ្នក ។"
+
+msgid "nickserv: Send a command to nickserv"
+msgstr "nickserv ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ទៅ nickserv"
+
+msgid "notice &lt;target&lt;:  Send a notice to a user or channel."
+msgstr "ចំណាំ &lt;target&lt; ៖  ផ្ញើ​កា​រចំណាំ​ទៅ​អ្នកប្រើ ឬ​ឆានែល ។"
+
+msgid ""
+"op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"op &lt;nick1&gt; [nick2] ...:  ផ្ដល់ស្ថានភាព​ការី​ឆានែល​ឲ្យ​អ្នកណា​ម្នាក់ ។ អ្នក​ត្រូវតែ​ជា​ការី​"
+"ឆានែល​ដើម្បី​ធ្វើការងារ​នេះ ។"
+
+msgid ""
+"operwall &lt;message&gt;:  If you don't know what this is, you probably "
+"can't use it."
+msgstr ""
+"operwall &lt;message&gt; ៖  ប្រសិនបើ​​អ្នក​មិនដឹង​ថា​វា​ជា​អ្វី​ទេ អ្នក​ប្រហែល​ជា​មិនអាច​ប្រើ​វា​"
+"បានទេ ។"
+
+msgid "operserv: Send a command to operserv"
+msgstr "operserv ៖ ផ្ញើ​ពាក្យ​បញ្ជា​ទៅ​កាន់ operserv"
+
+msgid ""
+"part [room] [message]:  Leave the current channel, or a specified channel, "
+"with an optional message."
+msgstr ""
+"part [room] [message] ៖  ចាកចេញ​ពី​ឆានែល​បច្ចុប្បន្ន ឬ​ឆានែល​ដែល​បាន​បញ្ជាក់ ដោយ​មានសារជា​"
+"ជម្រើស ។"
+
+msgid ""
+"ping [nick]:  Asks how much lag a user (or the server if no user specified) "
+"has."
+msgstr ""
+"ping [nick]៖ សួរ​ថាតើមាន​អ្នក​ប្រើ​យឺត​ប៉ុន្មាន​នាក់ (ឬ​ម៉ាស៊ីនបម្រើ ប្រសិនបើ​គ្មាន​អ្នក​ប្រើ​បាន​បញ្ជាក់) "
+"មាន ។"
+
+msgid ""
+"query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"សួរ &lt;nick&gt; &lt;message&gt; ៖  ផ្ញើ​សារ​ឯកជន​ទៅ​កាន់​អ្នក​ប្រើ (ដូច​បាន​ស្នើ​ទៅ​ឆានែល) ។"
+
+msgid "quit [message]:  Disconnect from the server, with an optional message."
+msgstr "quit [message] ៖  ផ្ដាច់​ពី​ម៉ាស៊ីន​បម្រើ ជា​មួយ​នឹង​សារជា​ជម្រើស ​។"
+
+msgid "quote [...]:  Send a raw command to the server."
+msgstr "quote [...] ៖  ផ្ញើ​ពាក្យ​បញ្ជា​ដើម​ថ្មី​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ ។"
+
+msgid ""
+"remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a "
+"channel operator to do this."
+msgstr ""
+"remove &lt;nick&gt; [message] ៖  យក​អ្នក​ណា​ម្នាក់​ចេញ​ពី​បន្ទប់ ។ អ្នក​ត្រូវតែ​ជា​ការី​បណ្ដាញ​"
+"ដើម្បីធ្វើការ​ងារ​នេះ ។"
+
+msgid "time: Displays the current local time at the IRC server."
+msgstr "ពេលវេលា ៖ បង្ហាញ​ពេលវេលា​មូលដ្ឋាន​បច្ចុប្បន្ននៅ​ម៉ាស៊ីនបម្រើ IRC ។"
+
+msgid "topic [new topic]:  View or change the channel topic."
+msgstr "ប្រធាន​បទ [ប្រធាន​បទ​ថ្មី] ៖  មើល ឬ​ផ្លាស់ប្ដូរ​ប្រធាន​បទ​របស់​ឆានែល ។"
+
+msgid "umode &lt;+|-&gt;&lt;A-Za-z&gt;:  Set or unset a user mode."
+msgstr "umode &lt;+|-&gt;&lt;A-Za-z&gt; ៖  កំណត់ ឬ​មិន​កំណត់​របៀប​អ្នក​ប្រើ ​។"
+
+msgid "version [nick]: send CTCP VERSION request to a user"
+msgstr "កំណែ [nick] ៖ ផ្ញើ​សំណើ​កំណែ​របស់ CTCP ទៅ​ឲ្យ​អ្នក​ប្រើ"
+
+msgid ""
+"voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"សំឡេង &lt;nick1&gt; [nick2] ...:  ផ្ដល់​នូវ​ស្ថានភាព​សំឡេង​ទៅ​ឲ្យ​អ្នកណាម្នាក់ ។ អ្នក​ត្រូវតែ​ជា​"
+"ការីឆានែល​ដើម្បីធ្វើការងារ​នេះ ។"
+
+msgid ""
+"wallops &lt;message&gt;:  If you don't know what this is, you probably can't "
+"use it."
+msgstr ""
+"វាយ &lt;សារ&gt; ៖  ប្រសិនបើ​អ្នកមិនដឹង​ថា​នេះ​ជា​អ្វីទេ អ្នកប្រហែលជា​មិនអាច​ប្រើវា​បានទេ ។"
+
+msgid "whois [server] &lt;nick&gt;:  Get information on a user."
+msgstr "whois [server] &lt;nick&gt; ៖  យក​ព័ត៌មាន​​របស់​អ្នកប្រើ ។"
+
+msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
+msgstr "whowas &lt;nick&gt; ៖ យក​ព័ត៌មាន​របស់​អ្នក​ប្រើ​ដេល​បាន​ចេញ ។"
+
+#, c-format
+msgid "Reply time from %s: %lu seconds"
+msgstr "ពេលវេលា​ឆ្លើយ​តប​ពី %s ៖ %lu ​វិនាទី"
+
+msgid "PONG"
+msgstr "PONG"
+
+msgid "CTCP PING reply"
+msgstr "ការ​ឆ្លើយ​តប​របស់ CTCP PING"
+
+msgid "Disconnected."
+msgstr "បាន​ផ្ដាច់ ។"
+
+msgid "Unknown Error"
+msgstr "មិន​ស្គាល់​កំហុស"
+
+msgid "Ad-Hoc Command Failed"
+msgstr "ពាក្យ​បញ្ជា​ Ad-Hoc បាន​បរាជ័យ"
+
+msgid "execute"
+msgstr "ប្រតិបត្តិ"
+
+msgid "Server requires TLS/SSL for login.  No TLS/SSL support found."
+msgstr "ម៉ាស៊ីន​បម្រើ​ត្រូវការ TLS/SSL ដើម្បី​ចូល ។ រក​មិនឃើញការគាំទ្រ TLS/SSL នោះ​ទេ ។"
+
+msgid "You require encryption, but no TLS/SSL support found."
+msgstr "អ្នក​ត្រូវការ​ការ​អ៊ិនគ្រីប ប៉ុន្តែ​រក​មិនឃើញ​ការគាំទ្រ TLS/SSL ។"
+
+msgid "Server requires plaintext authentication over an unencrypted stream"
+msgstr "ម៉ាស៊ីន​បម្រើ​ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ជា​អត្ថបទ​ធម្មតា​លើ​ស្ទ្រីម​ដែល​មិនបានអ៊ិនគ្រីប"
+
+#, c-format
+msgid ""
+"%s requires plaintext authentication over an unencrypted connection.  Allow "
+"this and continue authentication?"
+msgstr ""
+"%s ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ធម្មតា​លើកា​រតភ្ជាប់​ដែល​មិនបានអ៊ិនគ្រីប ។ អនុញ្ញាត​វា​ ហើយ​បន្ត​"
+"ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ?"
+
+msgid "Plaintext Authentication"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវ​ធម្មតា"
+
+msgid "Invalid response from server."
+msgstr "កា​រឆ្លើយ​តប​មិនត្រឹមត្រូវ​ពី​ម៉ាស៊ីន​បម្រើ ។"
+
+msgid "Server does not use any supported authentication method"
+msgstr "ម៉ាស៊ិនបម្រើ​មិន​ប្រើ​វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ដែល​បានគាំទ្រ​ណាមួយ​ទេ"
+
+msgid "Invalid challenge from server"
+msgstr "ការ​ប្រខិតខំ​មិនត្រឹមត្រូវ​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "SASL error"
+msgstr "កំហុស SASL"
+
+msgid "Full Name"
+msgstr "ឈ្មោះ​ពេញ"
+
+msgid "Family Name"
+msgstr "នាម​ត្រកូល"
+
+msgid "Given Name"
+msgstr "នាម​ខ្លួន"
+
+msgid "URL"
+msgstr "URL"
+
+msgid "Street Address"
+msgstr "អាសយដ្ឋាន​ផ្លូវ"
+
+msgid "Extended Address"
+msgstr "អាសយដ្ឋាន​ដែល​បាន​ពង្រីក"
+
+msgid "Locality"
+msgstr "មូលដ្ឋាន"
+
+msgid "Region"
+msgstr "តំបន់"
+
+msgid "Postal Code"
+msgstr "លេខប្រៃសណីយ៍"
+
+msgid "Country"
+msgstr "ប្រទេស"
+
+#. lots of clients (including purple) do this, but it's
+#. * out of spec
+msgid "Telephone"
+msgstr "ទូរស័ព្ទ"
+
+msgid "Organization Name"
+msgstr "ឈ្មោះ​អង្គភាព"
+
+msgid "Organization Unit"
+msgstr "ផ្នែក​នៃ​អង្គភាព"
+
+msgid "Role"
+msgstr "តួនាទី"
+
+msgid "Birthday"
+msgstr "ថ្ងៃ​កំណើត"
+
+msgid "Description"
+msgstr "សេចក្ដី​ពិពណ៌នា"
+
+msgid "Edit XMPP vCard"
+msgstr "កែសម្រួល XMPP vCard"
+
+msgid ""
+"All items below are optional. Enter only the information with which you feel "
+"comfortable."
+msgstr "ធាតុ​ទាំង​អស់​ខាង​ក្រោម​ជា​ជម្រើស ។ បញ្ចូល​តែ​ព័ត៌មាន​ដែល​អ្នក​គិត​ថា​ងាយស្រួល ។"
+
+msgid "Client"
+msgstr "ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "Operating System"
+msgstr "ប្រព័ន្ធ​ប្រតិបត្តិការ"
+
+msgid "Last Activity"
+msgstr "សកម្មភាព​ចុងក្រោយ"
+
+msgid "Service Discovery Info"
+msgstr "ព័ត៌មាន​រកឃើញ​សេវា"
+
+msgid "Service Discovery Items"
+msgstr "ធាតុ​រក​ឃើញ​ព័ត៌មាន"
+
+msgid "Extended Stanza Addressing"
+msgstr "កំណត់​អាសយដ្ឋាន Stanza ដែល​បាន​ពង្រីក"
+
+msgid "Multi-User Chat"
+msgstr "ការ​ជជែក​ដែល​មាន​អ្នក​ប្រើច្រើន​នាក់"
+
+msgid "Multi-User Chat Extended Presence Information"
+msgstr "ព័ត៌មាន​វត្តមាន​ដែល​បាន​ពង្រីក​នៃ​កា​រជជែក​ដែល​មាន​អ្នកប្រើ​ច្រើននាក់"
+
+msgid "In-Band Bytestreams"
+msgstr "ស្ទ្រីម​បៃ​ក្នុងក្រុម"
+
+msgid "Ad-Hoc Commands"
+msgstr "ពាក្យ​បញ្ជា Ad-Hoc"
+
+msgid "PubSub Service"
+msgstr "សេវា PubSub"
+
+msgid "SOCKS5 Bytestreams"
+msgstr "ស្ទ្រីម​បៃ SOCKS5"
+
+msgid "Out of Band Data"
+msgstr "ទិន្នន័យ​ក្រៅ​ក្រុម"
+
+msgid "XHTML-IM"
+msgstr "XHTML-IM"
+
+msgid "In-Band Registration"
+msgstr "ការ​ចុះឈ្មោះ​ក្នុងក្រុម"
+
+msgid "User Location"
+msgstr "ទីតាំង​របស់​អ្នក​ប្រើ"
+
+msgid "User Avatar"
+msgstr "រូបភាព​របស់​អ្នក"
+
+msgid "Chat State Notifications"
+msgstr "ការ​ជូនដំណឹង​ស្ថានភាព​ជជែក"
+
+msgid "Software Version"
+msgstr "កំណែ​​កម្មវិធី"
+
+msgid "Stream Initiation"
+msgstr "ការ​ចាប់ផ្ដើម​ស្ទ្រីម​"
+
+msgid "File Transfer"
+msgstr "កា​រផ្ទេរ​ឯកសារ"
+
+msgid "User Mood"
+msgstr "អារម្មណ៍​អ្នក​ប្រើ"
+
+msgid "User Activity"
+msgstr "សកម្មភាព​អ្នក​ប្រើ"
+
+msgid "Entity Capabilities"
+msgstr "សមត្ថភាព​អង្គភាព"
+
+msgid "Encrypted Session Negotiations"
+msgstr "ការ​ចរចារ​សម័យ​ដែល​បាន​អ៊ិនគ្រីប"
+
+msgid "User Tune"
+msgstr "អ្នក​ប្រើ​"
+
+msgid "Roster Item Exchange"
+msgstr "ផ្លាស់ប្ដូរ​ធាតុ​បញ្ជីឈ្មោះ"
+
+msgid "Reachability Address"
+msgstr "អាសយដ្ឋាន​ដែល​អាច​ចូល​បាន"
+
+msgid "User Profile"
+msgstr "ទម្រង់​អ្នក​ប្រើ"
+
+msgid "Jingle"
+msgstr "ឃ្លា​ខ្លីៗ"
+
+msgid "Jingle Audio"
+msgstr "អូឌីយ៉ូ​ឃ្លា​ខ្លីៗ"
+
+msgid "User Nickname"
+msgstr "សម្មតិនាម​អ្នក​ប្រើ"
+
+msgid "Jingle ICE UDP"
+msgstr "ឃ្លាខ្លីៗ​របស់ ICE UDP"
+
+msgid "Jingle ICE TCP"
+msgstr "ឃ្លាខ្លីៗ​របស់ ICE TCP"
+
+msgid "Jingle Raw UDP"
+msgstr "ឃ្លាខ្លីៗ​របស់ UDP ដើម"
+
+msgid "Jingle Video"
+msgstr "វីដេអូ​ឃ្លាខ្លីៗ"
+
+msgid "Jingle DTMF"
+msgstr "ឃ្លាខ្លីៗ DTMF"
+
+msgid "Message Receipts"
+msgstr "ទទួលសារ"
+
+msgid "Public Key Publishing"
+msgstr "បោះពុម្ព​គ្រាប់ចុច​សាធារណៈ"
+
+msgid "User Chatting"
+msgstr "ការ​ជជែក​របស់​អ្នក​ប្រើ"
+
+msgid "User Browsing"
+msgstr "កា​ររុករក​របស់​អ្នក​ប្រើ"
+
+msgid "User Gaming"
+msgstr "ការ​លេង​ល្បែង​របស់​អ្នក​ប្រើ"
+
+msgid "User Viewing"
+msgstr "កា​រមើលរបស់​អ្នក​ប្រើ"
+
+msgid "Ping"
+msgstr "Ping"
+
+msgid "Stanza Encryption"
+msgstr "ការ​អ៊ិនគ្រីប Stanza"
+
+msgid "Entity Time"
+msgstr "ពេល​វេលា​​របស់​អង្គភាព"
+
+msgid "Delayed Delivery"
+msgstr "ការ​បញ្ជូន​បាន​ពន្យារពេល"
+
+msgid "Collaborative Data Objects"
+msgstr "វត្ថុ​ទិន្នន័យ​សហការណ៍"
+
+msgid "File Repository and Sharing"
+msgstr "ឃ្លាំង​ឯកសារ និង​ការ​ចែករំលែក"
+
+msgid "STUN Service Discovery for Jingle"
+msgstr "ការ​រកឃើញសេវា STUN សម្រាប់​ឃ្លាខ្លីៗ"
+
+msgid "Simplified Encrypted Session Negotiation"
+msgstr "ការ​ចរចារ​សម័យ​ដែល​បាន​អ៊ិនគ្រីប​សាមញ្ញ"
+
+msgid "Hop Check"
+msgstr "ពិនិត្យមើល​ដំណាក់"
+
+msgid "Capabilities"
+msgstr "សមត្ថភាព"
+
+msgid "Priority"
+msgstr "អាទិភាព"
+
+msgid "Resource"
+msgstr "ធមធាម"
+
+msgid "Middle Name"
+msgstr "ឈ្មោះ​កណ្ដាល"
+
+msgid "Address"
+msgstr "អាសយដ្ឋាន"
+
+msgid "P.O. Box"
+msgstr "ប្រអប់​សំបុត្រ"
+
+msgid "Photo"
+msgstr "រូបថត"
+
+msgid "Logo"
+msgstr "រូបសញ្ញា"
+
+msgid "Un-hide From"
+msgstr "មិនលាក់​ពី"
+
+msgid "Temporarily Hide From"
+msgstr "លាក់​​ជា​បណ្ដោះអាសន្ន​ពី"
+
+#. && NOT ME
+msgid "Cancel Presence Notification"
+msgstr "បោះបង់​កា​រជូនដំណឹង​បច្ចុប្បន្ន"
+
+msgid "(Re-)Request authorization"
+msgstr "ស្នើ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ"
+
+#. if(NOT ME)
+#. shouldn't this just happen automatically when the buddy is
+#. removed?
+msgid "Unsubscribe"
+msgstr "ឈប់ជាវ"
+
+msgid "Log In"
+msgstr "ចូល"
+
+msgid "Log Out"
+msgstr "ចេញ"
+
+msgid "Chatty"
+msgstr "កា​រជជែក"
+
+msgid "Extended Away"
+msgstr "ការ​ចាកឆ្ងាយ​បាន​ពន្យារ"
+
+msgid "Do Not Disturb"
+msgstr "កុំរំខាន"
+
+msgid "JID"
+msgstr "JID"
+
+msgid "Last Name"
+msgstr "នាម​ត្រកូល"
+
+msgid "The following are the results of your search"
+msgstr "ខាង​ក្រោម​នេះ​ជា​លទ្ធផល​នៃ​ការ​ស្វែងរក​របស់​អ្នក"
+
+#. current comment from Jabber User Directory users.jabber.org
+msgid ""
+"Find a contact by entering the search criteria in the given fields. Note: "
+"Each field supports wild card searches (%)"
+msgstr ""
+"រក​ទំនាក់ទំនង​ដោយ​បញ្ចូល​លក្ខខណ្ឌ​ស្វែងរក​នៅក្នុង​វាល​ដែលបានផ្ដល់​ ។ ចំណាំ ៖ វាល​នីមួយៗ​គាំទ្រ​ការ​ស្វែងរក​ដោយ​"
+"អក្សរ​ជំនួស (%)"
+
+msgid "Directory Query Failed"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រសួរ​ថត"
+
+msgid "Could not query the directory server."
+msgstr "មិនអាច​សួរ​ម៉ាស៊ីនបម្រើថត​បានទេ ។"
+
+#. Try to translate the message (see static message
+#. list in jabber_user_dir_comments[])
+#, c-format
+msgid "Server Instructions: %s"
+msgstr "ការ​ណែនាំ​ម៉ាស៊ីន​បម្រើ ៖ %s"
+
+msgid "Fill in one or more fields to search for any matching XMPP users."
+msgstr "បំពេញ​វាល​មួយ ឬ​ច្រើន​ដើម្បី​ស្វែងរក​អ្នក​ប្រើ XMPP ដែល​ផ្គូផ្គង ។"
+
+msgid "Email Address"
+msgstr "អាសយដ្ឋាន​អ៊ីមែល"
+
+msgid "Search for XMPP users"
+msgstr "ស្វែងរក​អ្នក​ប្រើ XMPP"
+
+#. "Search"
+msgid "Search"
+msgstr "ស្វែងរក"
+
+msgid "Invalid Directory"
+msgstr "ថត​មិន​ត្រឹមត្រូវ"
+
+msgid "Enter a User Directory"
+msgstr "បញ្ចូល​ថត​របស់​អ្នក​ប្រើ"
+
+msgid "Select a user directory to search"
+msgstr "ជ្រើស​ថត​អ្នក​ប្រើ​ដែល​ត្រូវ​ស្វែងរក"
+
+msgid "Search Directory"
+msgstr "ថត​ស្វែងរក"
+
+msgid "_Room:"
+msgstr "បន្ទប់ ៖"
+
+msgid "_Server:"
+msgstr "ម៉ាស៊ីន​បម្រើ ៖"
+
+msgid "_Handle:"
+msgstr "គ្រប់គ្រង ៖"
+
+#, c-format
+msgid "%s is not a valid room name"
+msgstr "%s មិនមែន​ជា​ឈ្មោះ​បន្ទប់​ត្រឹមត្រូវ​ទេ"
+
+msgid "Invalid Room Name"
+msgstr "ឈ្មោះ​បន្ទប់​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "%s is not a valid server name"
+msgstr "%s មិនមែន​ជា​ឈ្មោះ​ម៉ាស៊ីន​បម្រើ​ដែល​ត្រឹមត្រូវ​ទេ"
+
+msgid "Invalid Server Name"
+msgstr "ឈ្មោះ​ម៉ាស៊ីនបម្រើ​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "%s is not a valid room handle"
+msgstr "%s មិនមែន​ជា​កា​រគ្រប់គ្រង​បន្ទប់​ត្រឹមត្រូវ​ទេ"
+
+msgid "Invalid Room Handle"
+msgstr "គ្រប់គ្រង​បន្ទប់មិន​ត្រឹមត្រូវ"
+
+msgid "Configuration error"
+msgstr "កំហុស​ក្នុងការ​​​កំណត់​​រចនាសម្ព័ន្ធ"
+
+msgid "Unable to configure"
+msgstr "មិនអាច​កំណត់​រចនាសម្ព័ន្ធ​បានទេ"
+
+msgid "Room Configuration Error"
+msgstr "កំហុស​ក្នុងការ​កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់"
+
+msgid "This room is not capable of being configured"
+msgstr "បន្ទប់​នេះ​មិនអាច​ត្រូវ​បានកំណត់​រចនាសម្ព័ន្ធ​ទេ"
+
+msgid "Registration error"
+msgstr "កំហុស​ក្នុងការ​ចុះឈ្មោះ"
+
+msgid "Nick changing not supported in non-MUC chatrooms"
+msgstr "ការ​ផ្លាស់ប្ដូរ​សម្មតិនាម​​មិន​បានគាំទ្រ​នៅ​ក្នុង​បន្ទប់​ជជែក​ដែល​មិនមែនជា MUC"
+
+msgid "Error retrieving room list"
+msgstr "កំហុស​ក្នុងកា​រទៅយក​បញ្ជី​បន្ទប់"
+
+msgid "Invalid Server"
+msgstr "ម៉ាស៊ីន​បម្រើ​មិន​ត្រឹមត្រូវ"
+
+msgid "Enter a Conference Server"
+msgstr "បញ្ចូល​ម៉ាស៊ីន​បម្រើ​សន្និសីទ"
+
+msgid "Select a conference server to query"
+msgstr "ជ្រើស​ម៉ាស៊ីនបម្រើ​សន្និសីទ​ត្រូវ​សួរ"
+
+msgid "Find Rooms"
+msgstr "រក​បន្ទប់"
+
+msgid "You require encryption, but it is not available on this server."
+msgstr "អ្នកត្រូវកា​រការ​អ៊ិនគ្រីប ប៉ុន្តែ​មិនអាច​ប្រើ​បាន​នៅ​លើ​​ម៉ាស៊ីន​បម្រើនេះ​ទេ ។"
+
+msgid "Write error"
+msgstr "កំហុស​ក្នុងកា​រសរសេរ"
+
+msgid "Ping timeout"
+msgstr "Ping អស់ពេល"
+
+msgid "Read Error"
+msgstr "កំហុស​ក្នុងការ​អាន"
+
+#, c-format
+msgid ""
+"Could not establish a connection with the server:\n"
+"%s"
+msgstr ""
+"មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីនបម្រើ ៖\n"
+"%s"
+
+msgid "Unable to create socket"
+msgstr "មិន​អាច​បង្កើត​រន្ធ​បានទេ"
+
+msgid "Invalid XMPP ID"
+msgstr "លេខសម្គាល់ XMPP មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid XMPP ID. Domain must be set."
+msgstr "លេខសម្គាល់ XMPP មិនត្រឹមត្រូវ ។ ដែន​ត្រូវ​តែ​បានកំណត់ ។"
+
+#, c-format
+msgid "Registration of %s@%s successful"
+msgstr "ការ​ចុះឈ្មោះ​ %s@%s ដោយ​ជោគជ័យ"
+
+#, c-format
+msgid "Registration to %s successful"
+msgstr "កា​រចុះឈ្មោះ​ទៅ​ %s ដោយជោគជ័យ"
+
+msgid "Registration Successful"
+msgstr "ការ​ចុះ​ឈ្មោះ​បាន​ជោគជ័យ"
+
+msgid "Registration Failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រចុះឈ្មោះ"
+
+#, c-format
+msgid "Registration from %s successfully removed"
+msgstr "បាន​យក​ការ​ចុះឈ្មោះ​ពី %s ដោយជោគជ័យ​ចេញ"
+
+msgid "Unregistration Successful"
+msgstr "លុប​ការ​ចុះឈ្មោះ​ដោយ​ជោគជ័យ"
+
+msgid "Unregistration Failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​លុប​ការ​ចុះឈ្មោះ"
+
+msgid "Already Registered"
+msgstr "បានចុះឈ្មោះ​រួច​ហើយ"
+
+msgid "State"
+msgstr "ស្ថាន​​ភាព"
+
+msgid "Postal code"
+msgstr "លេខ​ប្រៃសណីយ៍"
+
+msgid "Phone"
+msgstr "ទូរស័ព្ទ​"
+
+msgid "Date"
+msgstr "កាល​​បរិច្ឆេទ"
+
+msgid "Unregister"
+msgstr "មិន​ចុះឈ្មោះ"
+
+msgid ""
+"Please fill out the information below to change your account registration."
+msgstr "សូម​បំពេញ​ព័ត៌មាន​ខាងក្រោម​ ដើម្បី​ផ្លាស់ប្ដូរ​ការ​ចុះឈ្មោះគណនី​របស់​អ្នក ។"
+
+msgid "Please fill out the information below to register your new account."
+msgstr "សូម​បំពេញ​ព័ត៌មាន​ខាងក្រោម​ ដើម្បីចុះឈ្មោះ​គណនី​ថ្មី​របស់​អ្នក ។"
+
+msgid "Register New XMPP Account"
+msgstr "ចុះឈ្មោះគណនី​ XMPP ថ្មី"
+
+msgid "Register"
+msgstr "ចុះឈ្មោះ"
+
+#, c-format
+msgid "Change Account Registration at %s"
+msgstr "ផ្លាស់ប្ដូរ​ការ​ចុះឈ្មោះ​គណនី​នៅ %s"
+
+#, c-format
+msgid "Register New Account at %s"
+msgstr "ចុះឈ្មោះ​គណនីថ្មី​នៅ %s"
+
+msgid "Change Registration"
+msgstr "ផ្លាស់​ប្តូរ​ការ​ចុះ​ឈ្មោះ"
+
+msgid "Error unregistering account"
+msgstr "កំហុស​ក្នុងកា​រលុប​ការ​ចុះឈ្មោះ​គណនី"
+
+msgid "Account successfully unregistered"
+msgstr "បានលុបការ​ចុះឈ្មោះគណនី​ដោយ​ជោគជ័យ"
+
+msgid "Initializing Stream"
+msgstr "ចាប់ផ្ដើម​ស្ទ្រីម"
+
+msgid "Initializing SSL/TLS"
+msgstr "ចាប់ផ្ដើម SSL/TLS"
+
+msgid "Authenticating"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Re-initializing Stream"
+msgstr "ចាប់ផ្ដើមស្ទ្រីម​ឡើង​វិញ"
+
+msgid "Server doesn't support blocking"
+msgstr "ម៉ាស៊ីន​បម្រើ​មិន​គាំទ្រ​ការ​ទប់ស្កាត់​ទេ"
+
+msgid "Not Authorized"
+msgstr "មិន​បានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ"
+
+msgid "Both"
+msgstr "ទាំង​ពីរ​"
+
+msgid "From (To pending)"
+msgstr "ពី (ដល់​មិន​ទាន់សម្រេច)"
+
+msgid "From"
+msgstr "ពី"
+
+msgid "To"
+msgstr "ទៅ"
+
+msgid "None (To pending)"
+msgstr "គ្មាន (ដល់​មិនទាន់សម្រេច)"
+
+msgid "None"
+msgstr "គ្មាន"
+
+msgid "Subscription"
+msgstr "ការ​ជាវ"
+
+msgid "Mood"
+msgstr "អារម្មណ៍"
+
+msgid "Now Listening"
+msgstr "ឥឡូវ​កំពុង​ស្ដាប់"
+
+msgid "Mood Text"
+msgstr "អត្ថបទ​អារម្មណ៍"
+
+msgid "Allow Buzz"
+msgstr "អនុញ្ញាត​ Buzz"
+
+msgid "Tune Artist"
+msgstr "សិល្បករ Tune"
+
+msgid "Tune Title"
+msgstr "ចំណង​ជើង Tune"
+
+msgid "Tune Album"
+msgstr "អាល់ប៊ុម Tune"
+
+msgid "Tune Genre"
+msgstr "ប្រភេទ Tune"
+
+msgid "Tune Comment"
+msgstr "អធិប្បាយ Tune"
+
+msgid "Tune Track"
+msgstr "បទ Tune"
+
+msgid "Tune Time"
+msgstr "ពេលវេលា Tune"
+
+msgid "Tune Year"
+msgstr "ឆ្នាំ Tune"
+
+msgid "Tune URL"
+msgstr "URL Tune"
+
+msgid "Password Changed"
+msgstr "បាន​ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់"
+
+msgid "Your password has been changed."
+msgstr "ពាក្យ​សម្ងាត់​របស់​អ្នក​ត្រូវ​បាន​ផ្លាស់ប្ដូរ ។"
+
+msgid "Error changing password"
+msgstr "កំហុស​ក្នុងកា​រផ្លាស់ប្ដូរ​ពាក្យសម្ងាត់"
+
+msgid "Password (again)"
+msgstr "ពាក្យ​សម្ងាត់ (ម្ដង​ទៀត)"
+
+msgid "Change XMPP Password"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ XMPP"
+
+msgid "Please enter your new password"
+msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់​ថ្មី​របស់​អ្នក"
+
+msgid "Set User Info..."
+msgstr "កំណត់​ព័ត៌មាន​របស់​អ្នក​ប្រើ..."
+
+#. if (js->protocol_options & CHANGE_PASSWORD) {
+msgid "Change Password..."
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់..."
+
+#. }
+msgid "Search for Users..."
+msgstr "ស្វែងរក​អ្នកប្រើ..."
+
+msgid "Bad Request"
+msgstr "សំណើ​មិន​ល្អ"
+
+msgid "Conflict"
+msgstr "ប៉ះទង្គិច"
+
+msgid "Feature Not Implemented"
+msgstr "លក្ខណៈពិសេស​មិនបាន​អនុវត្ត"
+
+msgid "Forbidden"
+msgstr "បានហាមឃាត់"
+
+msgid "Gone"
+msgstr "បានទៅ​ហើយ"
+
+msgid "Internal Server Error"
+msgstr "កំហុស​ម៉ាស៊ីន​បម្រើ​ខាង​ក្នុង"
+
+msgid "Item Not Found"
+msgstr "រក​មិនឃើញ​ធាតុ"
+
+msgid "Malformed XMPP ID"
+msgstr "លេខសម្គាល់ XMPP មាន​ទ្រង់ទ្រាយ"
+
+msgid "Not Acceptable"
+msgstr "មិន​អាច​ទទួលយក​បានទេ"
+
+msgid "Not Allowed"
+msgstr "មិនបាន​អនុញ្ញាត​ទេ"
+
+msgid "Payment Required"
+msgstr "ត្រូវការ​​ការ​ចំណាយ"
+
+msgid "Recipient Unavailable"
+msgstr "មិនមាន​អ្នក​ទទួល​ទេ"
+
+msgid "Registration Required"
+msgstr "ត្រូវការ​ការ​ចុះឈ្មោះ"
+
+msgid "Remote Server Not Found"
+msgstr "រក​មិនឃើញ​ម៉ាស៊ីនបម្រើ​ពី​ចម្ងាយ"
+
+msgid "Remote Server Timeout"
+msgstr "អស់ពេល​ម៉ាស៊ីនបម្រើ​ពី​ចម្ងាយ"
+
+msgid "Server Overloaded"
+msgstr "លើស​ចំណុះ​ម៉ាស៊ីនបម្រើ"
+
+msgid "Service Unavailable"
+msgstr "មិនមាន​សេវា​ទេ"
+
+msgid "Subscription Required"
+msgstr "ត្រូវការ​ការ​ជាវ"
+
+msgid "Unexpected Request"
+msgstr "សំណើ​ដែល​មិន​រំពឹង​ទុក"
+
+msgid "Authorization Aborted"
+msgstr "បានបោះបង់​កា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Incorrect encoding in authorization"
+msgstr "ការ​អ៊ិនកូដ​មិន​ត្រឹមត្រូវ​នៅក្នុងកា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Invalid authzid"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid Authorization Mechanism"
+msgstr "យន្ដការ​ផ្ទៀងផ្ទាត់​មិន​ត្រឹមត្រូវ"
+
+msgid "Authorization mechanism too weak"
+msgstr "យន្តការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​​ខ្សោយ​ពេក"
+
+msgid "Temporary Authentication Failure"
+msgstr "ភាព​បរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​បណ្ដោះអាសន្ន"
+
+msgid "Authentication Failure"
+msgstr "ភាព​បរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Bad Format"
+msgstr "ទ្រង់ទ្រាយ​មិនល្អ"
+
+msgid "Bad Namespace Prefix"
+msgstr "បុព្វបទ​ចន្លោះ​ឈ្មោះ​មិនល្អ"
+
+msgid "Resource Conflict"
+msgstr "ប៉ះទង្គិច​ធនធាន"
+
+msgid "Connection Timeout"
+msgstr "អស់​ពេល​​តភ្ជាប់"
+
+msgid "Host Gone"
+msgstr "ម៉ាស៊ីន​បាន​ទៅហើយ"
+
+msgid "Host Unknown"
+msgstr "មិនស្គាល់​ម៉ាស៊ីន"
+
+msgid "Improper Addressing"
+msgstr "កា​រដាក់​អាសយដ្ឋាន​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid ID"
+msgstr "លេខ​សម្គាល់​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid Namespace"
+msgstr "ចន្លោះ​ឈ្មោះ​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid XML"
+msgstr "XML មិន​ត្រឹមត្រូវ"
+
+msgid "Non-matching Hosts"
+msgstr "គ្មាន​ម៉ាស៊ីន​ផ្គូផ្គង​ទេ"
+
+msgid "Policy Violation"
+msgstr "ការ​បំពាន​គោលនយោបាយ"
+
+msgid "Remote Connection Failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រតភ្ជាប់​ពី​ចម្ងាយ"
+
+msgid "Resource Constraint"
+msgstr "កា​រដាក់​កម្រិត​ធនធាន"
+
+msgid "Restricted XML"
+msgstr "XML ដែល​បាន​ដាក់​កម្រិត"
+
+msgid "See Other Host"
+msgstr "មើល​ម៉ាស៊ីន​ផ្សេង"
+
+msgid "System Shutdown"
+msgstr "បិទ​ប្រព័ន្ធ"
+
+msgid "Undefined Condition"
+msgstr "លក្ខខណ្ឌ​មិនបានកំណត់"
+
+msgid "Unsupported Encoding"
+msgstr "ការ​អ៊ិនកូដ​ដែល​មិនបាន​គាំទ្រ"
+
+msgid "Unsupported Stanza Type"
+msgstr "ប្រភេទ Stanza ដែល​មិនបានគាំទ្រ"
+
+msgid "Unsupported Version"
+msgstr "កំណែ​ដែល​មិនបានគាំទ្រ"
+
+msgid "XML Not Well Formed"
+msgstr "XML មិនបាន​រៀបចំ​បាន​ល្អ"
+
+msgid "Stream Error"
+msgstr "កំហុស​ស្ទ្រីម"
+
+#, c-format
+msgid "Unable to ban user %s"
+msgstr "មិនអាច​ហាមឃាត់​អ្នក​ប្រើ %s"
+
+#, c-format
+msgid "Unknown affiliation: \"%s\""
+msgstr "មិនស្គាល់​ការ​ទាក់ទង​គ្នា ៖ \"%s\""
+
+#, c-format
+msgid "Unable to affiliate user %s as \"%s\""
+msgstr "មិនអាច​ទាក់ទង​អ្នក​ប្រើ %s ជា \"%s\""
+
+#, c-format
+msgid "Unknown role: \"%s\""
+msgstr "មិនស្គាល់​តួនាទី ៖ \"%s\""
+
+#, c-format
+msgid "Unable to set role \"%s\" for user: %s"
+msgstr "មិនអាច​កំណត់​តួនាទី \"%s\" សម្រាប់​អ្នក​ប្រើ ៖ %s"
+
+#, c-format
+msgid "Unable to kick user %s"
+msgstr "មិនអាច​ធាក់​អ្នកប្រើ %s បាន​ទេ"
+
+#, c-format
+msgid "Unable to ping user %s"
+msgstr "មិនអាច ping អ្នក​ប្រើ %s បានទេ"
+
+#, c-format
+msgid "Unable to buzz, because there is nothing known about user %s."
+msgstr "មិនអាច​កេះកៀវ​បានទេ ពីព្រោះ​មិន​ស្គាល់​អំពី​អ្នកប្រើ %s ។"
+
+#, c-format
+msgid "Unable to buzz, because user %s might be offline."
+msgstr "មិនអាចកេះកៀង​បានទេ ពីព្រើ​អ្នកប្រើ %s នៅ​ក្រៅ​បណ្ដាញ ។"
+
+#, c-format
+msgid "Unable to buzz, because the user %s does not support it."
+msgstr "មិនអាច​កេះកៀវ​បានទេ ពីព្រោះ​អ្នក​ប្រើ %s មិន​គាំទ្រ​វា​ទេ ។"
+
+#. Yahoo only supports one attention command: the 'buzz'.
+#. This is index number YAHOO_BUZZ.
+msgid "Buzz"
+msgstr "កេះកៀវ"
+
+#, c-format
+msgid "%s has buzzed you!"
+msgstr "%s បានកេះកៀវ​អ្នក !"
+
+#, c-format
+msgid "Buzzing %s..."
+msgstr "កំពុងកេះកៀវ %s..."
+
+msgid "config:  Configure a chat room."
+msgstr "config ៖  កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់​ជជែក ។"
+
+msgid "configure:  Configure a chat room."
+msgstr "កំណត់​រចនាសម្ព័ន្ធ ៖ កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់​ជជែក ។"
+
+msgid "part [room]:  Leave the room."
+msgstr "part [room] ៖ ចេញ​ពី​បន្ទប់ ។"
+
+msgid "register:  Register with a chat room."
+msgstr "ចុះឈ្មោះ ៖ ចុះឈ្មោះ​​ក្នុង​បន្ទប់​ជជែក ។"
+
+msgid "topic [new topic]:  View or change the topic."
+msgstr "ប្រធានបទ [ប្រធាន​បទ​ថ្មី] ៖  មើល ឬ​ផ្លាស់ប្ដូរ​ប្រធាន​បទ ។"
+
+msgid "ban &lt;user&gt; [reason]:  Ban a user from the room."
+msgstr "ហាមឃាត់ &lt;អ្នក​ប្រើ&gt; [ហេតុផល] ៖  ហាមឃាត់​អ្នកប្រើ​ពី​បន្ទប់ ។"
+
+msgid ""
+"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
+"affiliation with the room."
+msgstr ""
+"ទាក់ទង &lt;អ្នក​ប្រើ&gt; &lt;ម្ចាស់|អ្នកគ្រប់គ្រង|សមាជិក|outcast|គ្មាន&gt; ៖ កំណត់​ទំនាក់ទំនង​"
+"របស់​អ្នក​ប្រើ​ជា​មួយ​នឹង​បន្ទប់ ។"
+
+msgid ""
+"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
+"role in the room."
+msgstr ""
+"តួនាទី &lt;អ្នក​ប្រើ&gt; &lt;អ្នកអន្តរការី|អ្នក​ចូលរួម|អ្នក​ទស្សនា|គ្មាន&gt; ៖ កំណត់​តួនាទី​របស់​អ្នក​"
+"ប្រើ​នៅ​ក្នុង​បន្ទប់ ។"
+
+msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
+msgstr "អញ្ជើញ &lt;អ្នក​ប្រើ&gt; [សារ] ៖  អញ្ជើញ​អ្នក​ប្រើ​ឲ្យ​ចូល​បន្ទប់ ។"
+
+msgid "join: &lt;room&gt; [password]:  Join a chat on this server."
+msgstr "ចូល ៖ &lt;បន្ទប់&gt; [ពាក្យ​សម្ងាត់] ៖  ចូល​ក្នុងការជជែក​នៅ​លើ​ម៉ាស៊ីន​បម្រើ​នេះ ។"
+
+msgid "kick &lt;user&gt; [reason]:  Kick a user from the room."
+msgstr "ធាក់ &lt;អ្នក​ប្រើ&gt; [ហេតុផល] ៖  ធាក់​អ្នក​ប្រើ​​ពី​បន្ទប់ ។"
+
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
+msgstr "msg &lt;អ្នក​ប្រើ&gt; &lt;សារ&gt; ៖  ផ្ញើ​សារ​ឯកជន​ទៅ​អ្នក​ប្រើ​ផ្សេង ។"
+
+msgid "ping &lt;jid&gt;:\tPing a user/component/server."
+msgstr "ping &lt;jid&gt; ៖ Ping អ្នក​ប្រើ/សមាសធាតុ/ម៉ាស៊ីន​បម្រើ ។"
+
+msgid "buzz: Buzz a user to get their attention"
+msgstr "កេះកៀវ ៖ កេះកៀវ​អ្នក​ប្រើ​ដើម្បីទទួល​បានការ​ចាប់អារម្មណ៍​របស់​ពួកគេ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "XMPP Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ XMPP"
+
+#. Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im
+msgid "Domain"
+msgstr "ដែន"
+
+msgid "Require SSL/TLS"
+msgstr "ត្រូវការ SSL/TLS"
+
+msgid "Force old (port 5223) SSL"
+msgstr "បង្ខុះ​ (ច្រក 5223) SSL ចាស់"
+
+msgid "Allow plaintext auth over unencrypted streams"
+msgstr "អនុញ្ញាត​ឲ្យ​អត្ថបទ​ធម្មតា​លើ​ស្ទ្រីម​ដែល​មិន​បានអ៊ិនគ្រីប"
+
+msgid "Connect port"
+msgstr "ច្រក​តភ្ជាប់"
+
+#. TODO: default to automatically try different ports. Make the user be
+#. * able to set the first port to try (like LastConnectedPort in Windows client).
+#. Account options
+msgid "Connect server"
+msgstr "តភ្ជាប់​ម៉ាស៊ីន​បម្រើ"
+
+msgid "File transfer proxies"
+msgstr "ប្រូកស៊ី​ការ​ផ្ទេរ​ឯកសារ"
+
+#. this should probably be part of global smiley theme settings later on,
+#. shared with MSN
+msgid "Show Custom Smileys"
+msgstr "បង្ហាញ​សញ្ញាណ​ញញឹម​ផ្ទាល់"
+
+#, c-format
+msgid "%s has left the conversation."
+msgstr "%s បាន​ចេញ​ពី​ការ​សន្ទនា ។"
+
+#, c-format
+msgid "Message from %s"
+msgstr "សារ​ពី %s"
+
+#, c-format
+msgid "%s has set the topic to: %s"
+msgstr "%s បាន​កំណត់​ប្រធានបទ​ទៅ ៖ %s"
+
+#, c-format
+msgid "The topic is: %s"
+msgstr "ប្រធាន​បទ​គឺ ៖ %s"
+
+#, c-format
+msgid "Message delivery to %s failed: %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​បញ្ជូន​សារ %s ៖ %s"
+
+msgid "XMPP Message Error"
+msgstr "កំហុស​សារ XMPP"
+
+#, c-format
+msgid "(Code %s)"
+msgstr "(កូដ %s)"
+
+msgid "XML Parse error"
+msgstr "កំហុស​ក្នុងកា​រញែក XML"
+
+msgid "Unknown Error in presence"
+msgstr "មិន​ស្គាល់​កំហុស​នៅ​ក្នុងវត្តមាន"
+
+msgid "Create New Room"
+msgstr "បង្កើត​បន្ទប់​ថ្មី"
+
+msgid ""
+"You are creating a new room.  Would you like to configure it, or accept the "
+"default settings?"
+msgstr "អ្នក​បង្កើត​បន្ទប់​ថ្មី ។ តើអ្នក​ចង់​កំណត់​រចនាសម្ព័ន្ធ​វា​ដែរឬទេ ឬ​ព្រម​ទទួល​ការ​កំណត់​លំនាំដើម ?"
+
+msgid "_Configure Room"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​បន្ទប់"
+
+msgid "_Accept Defaults"
+msgstr "ព្រមទទួល​លំនាំដើម"
+
+#, c-format
+msgid "Error joining chat %s"
+msgstr "កំហុស​ក្នុងកា​រចូល​ក្នុងការ​ជជែក %s"
+
+#, c-format
+msgid "Error in chat %s"
+msgstr "កំហុស​​នៅ​ក្នុង​ការ​ជជែក %s"
+
+#, c-format
+msgid "Unable to send file to %s, user does not support file transfers"
+msgstr "មិនអាច​ផ្ញើសារ​ទៅ​កាន់ %s អ្នក​ប្រើ​មិន​គាំទ្រ​កា​រផ្ទេរ​ឯកសារ​ទេ"
+
+msgid "File Send Failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រផ្ញើ​ឯកសារ"
+
+#, c-format
+msgid "Unable to send file to %s, invalid JID"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ​ទៅ​កាន់ %s បានទេ ដោយសារ​តែ JID មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Unable to send file to %s, user is not online"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ %s បានទេ អ្នកប្រើ​មិន​នៅ​លើ​បណ្ដាញ​ទេ"
+
+#, c-format
+msgid "Unable to send file to %s, not subscribed to user presence"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ %s បានទេ មិនបានជាវ​ទៅ​វត្តមាន​របស់​អ្នកប្រើ"
+
+#, c-format
+msgid "Please select the resource of %s to which you would like to send a file"
+msgstr "សូម​ជ្រើស​ធនធាន​របស់ %s ដែល​អ្នក​ចង់​ផ្ញើ​ឯកសារ"
+
+msgid "Select a Resource"
+msgstr "ជ្រើស​ធនធាន"
+
+msgid "Edit User Mood"
+msgstr "កែសម្រួល​អារម្មណ៍​អ្នកប្រើ"
+
+msgid "Please select your mood from the list."
+msgstr "សូម​ជ្រើស​អារម្មណ៍​របស់​អ្នក​ពី​បញ្ជី ។"
+
+msgid "Set"
+msgstr "កំណត់"
+
+msgid "Set Mood..."
+msgstr "កំណត់​អារម្មណ៍..."
+
+msgid "Set User Nickname"
+msgstr "កំណត់​សម្មតិនាម​របស់​អ្នក​ប្រើ"
+
+msgid "Please specify a new nickname for you."
+msgstr "សូម​បញ្ជាក់​សម្មតិនាម​ថ្មី​សម្រាប់​​អ្នក ។"
+
+msgid ""
+"This information is visible to all contacts on your contact list, so choose "
+"something appropriate."
+msgstr ""
+"ព័ត៌មាន​នេះ​​ទំនាក់ទំនង​ទាំង​អស់​អាច​មើល​ឃើញ​នៅ​​ក្នុង​បញ្ជីទំនាក់ទំនង​របស់​អ្នក ដូច្នេះ​​ជ្រើស​អ្វីដែល​សមរម្យ ។"
+
+msgid "Set Nickname..."
+msgstr "កំណត់​សម្មតិនាម..."
+
+msgid "Actions"
+msgstr "សកម្មភាព"
+
+msgid "Select an action"
+msgstr "ជ្រើស​សកម្មភាព"
+
+#. 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
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "មិន​អាច​បន្ថែម \"%s\" ។"
+
+msgid "Buddy Add error"
+msgstr "កំហុស​ក្នុងកា​របន្ថែម​មិត្តភក្ដិ"
+
+msgid "The username specified does not exist."
+msgstr "មិនមាន​ឈ្មោះ​​អ្នក​ប្រើ​ដែល​បាន​បញ្ជាក់​ទេ ។"
+
+#, c-format
+msgid "Buddy list synchronization issue in %s (%s)"
+msgstr "បញ្ហា​ក្នុងការ​ធ្វើ​សមកាលកម្ម​បញ្ជីមិត្តភក្ដិ​នៅ​ក្នុង %s (%s)"
+
+#, c-format
+msgid ""
+"%s on the local list is inside the group \"%s\" but not on the server list. "
+"Do you want this buddy to be added?"
+msgstr ""
+"%s នៅ​​ក្នុង​បញ្ជីមូលដ្ឋាន​ គឺ​នៅ​ក្នុងក្រុម \"%s\" ប៉ុន្តែ​មិននៅ​ក្នុង​បញ្ជី​ម៉ាស៊ីន​បម្រើ​ទេ ។ តើ​អ្នក​ចង់​"
+"បន្ថែមមិត្តភក្ដិ​នេះដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"%s is on the local list but not on the server list. Do you want this buddy "
+"to be added?"
+msgstr ""
+"%s នៅ​ក្នុង​បញ្ជីមូលដ្ឋាន ប៉ុន្តែ​មិននៅ​ក្នុងបញ្ជី​ម៉ាស៊ីនបម្រើ​ទេ ។ តើ​អ្នកចង់​បន្ថែម​មិត្តភក្ដិ​នេះដែរឬទេ ?"
+
+#, c-format
+msgid "Unable to parse message"
+msgstr "មិន​អាច​ញែក​សារ​បានទេ"
+
+#, c-format
+msgid "Syntax Error (probably a client bug)"
+msgstr "កំហុស​វាក្យសម្ពន្ធ (ប្រហែល​ជា​កំហុស​ម៉ាស៊ីន​ភ្ញៀវ)"
+
+#, c-format
+msgid "Invalid email address"
+msgstr "អាសយដ្ឋាន​អ៊ីមែល​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "User does not exist"
+msgstr "មិន​មាន​​អ្នក​ប្រើ​ទេ"
+
+#, c-format
+msgid "Fully qualified domain name missing"
+msgstr "បាត់​ឈ្មោះ​ដែល​ដែល​បានបញ្ជាក់​ទាំង​ស្រុង"
+
+#, c-format
+msgid "Already logged in"
+msgstr "បាន​ចូលរួច​ហើយ"
+
+#, c-format
+msgid "Invalid username"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Invalid friendly name"
+msgstr "ឈ្មោះ​មិត្តភក្ដិ​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "List full"
+msgstr "បញ្ជី​ពេញ​ហើយ"
+
+#, c-format
+msgid "Already there"
+msgstr "នៅ​ទីនោះ​រួច​ហើយ"
+
+#, c-format
+msgid "Not on list"
+msgstr "មិន​នៅ​ក្នុង​បញ្ជី​ទេ"
+
+#, c-format
+msgid "User is offline"
+msgstr "អ្នក​ប្រើ​នៅ​ក្រៅ​បណ្ដាញ"
+
+#, c-format
+msgid "Already in the mode"
+msgstr "មាន​ក្នុង​របៀប​នេះ​រួច​ហើយ"
+
+#, c-format
+msgid "Already in opposite list"
+msgstr "មាននៅ​ក្នុង​បញ្ជី​នោះ​រួច​ហើយ"
+
+#, c-format
+msgid "Too many groups"
+msgstr "មានក្រុម​ច្រើនពេក"
+
+#, c-format
+msgid "Invalid group"
+msgstr "ក្រុម​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "User not in group"
+msgstr "អ្នក​ប្រើ​មិននៅ​ក្នុង​ក្រុម​ទេ"
+
+#, c-format
+msgid "Group name too long"
+msgstr "ឈ្មោះ​ក្រុម​វែងពេក"
+
+#, c-format
+msgid "Cannot remove group zero"
+msgstr "មិនអាច​យក​ក្រុម​សូន្យ​ចេញបានទេ"
+
+#, c-format
+msgid "Tried to add a user to a group that doesn't exist"
+msgstr "បាន​ព្យាយាម​បន្ថែម​អ្នក​ទៅ​ក្រុម​ដែល​មិនទាន់​មាន"
+
+#, c-format
+msgid "Switchboard failed"
+msgstr "ប៉ាណូ​បានបរាជ័យ"
+
+#, c-format
+msgid "Notify transfer failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​ជូន​ដំណឹង​នៃ​កា​រផ្ទេរ"
+
+#, c-format
+msgid "Required fields missing"
+msgstr "បាត់​វាល​ដែល​ត្រូវការ"
+
+#, c-format
+msgid "Too many hits to a FND"
+msgstr "ចុច​គ្រាប់ចុច FND ច្រើន​ដង​ពេក"
+
+#, c-format
+msgid "Not logged in"
+msgstr "មិនបានចូល​ទេ"
+
+#, c-format
+msgid "Service temporarily unavailable"
+msgstr "សេវា​មិនអាច​ប្រើបានជា​បណ្ដោះអាសន្ន"
+
+#, c-format
+msgid "Database server error"
+msgstr "កំហុស​ម៉ាស៊ីន​បម្រើ​មូលដ្ឋាន​ទិន្នន័យ"
+
+#, c-format
+msgid "Command disabled"
+msgstr "បាន​បិទ​ពាក្យ​បញ្ជា"
+
+#, c-format
+msgid "File operation error"
+msgstr "កំហុស​ក្នុងកា​រប្រតិបត្តិ​ឯកសារ"
+
+#, c-format
+msgid "Memory allocation error"
+msgstr "កំហុស​ក្នុងការ​បម្រុង​ទុក​សតិ"
+
+#, c-format
+msgid "Wrong CHL value sent to server"
+msgstr "តម្លៃ CHL មិនត្រឹមត្រូវ​បានផ្ញើ​ទៅ​កាន់ម៉ាស៊ីនបម្រើ"
+
+#, c-format
+msgid "Server busy"
+msgstr "ម៉ាស៊ីនបម្រើ​រវល់"
+
+#, c-format
+msgid "Server unavailable"
+msgstr "ម៉ាស៊ីន​បម្រើ​មិនអាច​ប្រើបានទេ"
+
+#, c-format
+msgid "Peer notification server down"
+msgstr "ការ​ជូនដំណឹង​​ម៉ាស៊ីនបម្រើ​​ដូច​គ្នា​បាន​ខូច"
+
+#, c-format
+msgid "Database connect error"
+msgstr "កំហុស​ក្នុងការ​តភ្ជាប់​មូលដ្ឋាន​ទិន្នន័យ"
+
+#, c-format
+msgid "Server is going down (abandon ship)"
+msgstr "ម៉ាស៊ីន​បម្រើ​ខូច​ហើយ (មកជា​មួយ abandon)"
+
+#, c-format
+msgid "Error creating connection"
+msgstr "កំហុស​ក្នុងការ​បង្កើត​ការ​តភ្ជាប់"
+
+#, c-format
+msgid "CVR parameters are either unknown or not allowed"
+msgstr "ប៉ារ៉ាម៉ែត្រ​ដែល​ត្រូវ​បាន​ស្គាល់ ឬ​មិន​ត្រូវ​បានដំឡើង"
+
+#, c-format
+msgid "Unable to write"
+msgstr "មិនអាច​សរសេរ"
+
+#, c-format
+msgid "Session overload"
+msgstr "លើស​សម័យ"
+
+#, c-format
+msgid "User is too active"
+msgstr "អ្នក​ប្រើ​សកម្មភាព​ពេក"
+
+#, c-format
+msgid "Too many sessions"
+msgstr "មាន​សម័យ​ច្រើន​ពេក"
+
+#, c-format
+msgid "Passport not verified"
+msgstr "មិនបានផ្ទៀងផ្ទាត់​លិខិត​ឆ្លងដែន​ទេ"
+
+#, c-format
+msgid "Bad friend file"
+msgstr "ឯកសារ​មិត្តភក្ដិ​មិនល្អ"
+
+#, c-format
+msgid "Not expected"
+msgstr "ដែលមិនបាន​រំពឹង​ទុក"
+
+#, c-format
+msgid "Friendly name changes too rapidly"
+msgstr "ការ​ផ្លាស់ប្ដូរ​ឈ្មោះមិត្តភក្ដិ​បន្តិចម្ដងៗ"
+
+#, c-format
+msgid "Server too busy"
+msgstr "ម៉ាស៊ីន​បម្រើ​រវល់​ពេក"
+
+#, c-format
+msgid "Authentication failed"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Not allowed when offline"
+msgstr "មិន​បាន​អនុញ្ញាត​នៅពេល​នៅ​ក្រៅ​បណ្ដាញ"
+
+#, c-format
+msgid "Not accepting new users"
+msgstr "មិនទទួលយក​អ្នក​ប្រើដែល​ថ្មីទេ"
+
+#, c-format
+msgid "Kids Passport without parental consent"
+msgstr "ពាក្យ​សម្ងាត់​ក្មេង​ដោយ​គ្មានកា​រយល់ព្រម​ពី​ឳពុកម្ដាយ"
+
+#, c-format
+msgid "Passport account not yet verified"
+msgstr "គណនី​លិខិតឆ្លងដែន​មិន​បាន​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ"
+
+msgid "Passport account suspended"
+msgstr "បានផ្អាក​គណនី​លិខិតឆ្លងដែន"
+
+#, c-format
+msgid "Bad ticket"
+msgstr "សំបុត្រ​មិន​ល្អ"
+
+#, c-format
+msgid "Unknown Error Code %d"
+msgstr "មិន​ស្គាល់​កូដ​កំហុស %d"
+
+#, c-format
+msgid "MSN Error: %s\n"
+msgstr "កំហុស MSN ៖ %s\n"
+
+msgid "Other Contacts"
+msgstr "ទំនាក់ទំនង​ផ្សេងៗ"
+
+msgid "Non-IM Contacts"
+msgstr "ទំនាក់ទំនង​ដែល​មិនមាន​ជា IM"
+
+msgid "Nudge"
+msgstr "ច្រាន"
+
+#, c-format
+msgid "%s has nudged you!"
+msgstr "%s បាន​ច្រាន​អ្នក !"
+
+#, c-format
+msgid "Nudging %s..."
+msgstr "កំពុង​ច្រាន %s..."
+
+msgid "Email Address..."
+msgstr "អាសយដ្ឋាន​អ៊ីមែល..."
+
+msgid "Your new MSN friendly name is too long."
+msgstr "ឈ្មោះ​មិត្តភក្ដិ MSN ថ្មី​របស់​អ្នក​វែង​ពេក ។"
+
+msgid "Set your friendly name."
+msgstr "កំណត់​ឈ្មោះ​មិត្តភក្ដ​របស់​អ្នក ។"
+
+msgid "This is the name that other MSN buddies will see you as."
+msgstr "នេះជា​ឈ្មោះ​ដែល​មិត្តភក្ដិ MSN ផ្សេង​ទៀត​នឹង​ឃើញ​អ្នក ។"
+
+msgid "Set your home phone number."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ផ្ទះ​របស់​អ្នក ។"
+
+msgid "Set your work phone number."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ការងារ​របស់​អ្នក ។"
+
+msgid "Set your mobile phone number."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ចល័ត​របស់​អ្នក ។"
+
+msgid "Allow MSN Mobile pages?"
+msgstr "អនុញ្ញាត​ឲ្យ​មាន​ទំព័រ​ចល័ត​របស់ MSN ?"
+
+msgid ""
+"Do you want to allow or disallow people on your buddy list to send you MSN "
+"Mobile pages to your cell phone or other mobile device?"
+msgstr ""
+"តើអ្នក​ចង់​អនុញ្ញាត ឬ​មិន​អនុញ្ញាត​មនុស្ស​នៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ផ្ញើ​ឲ្យ​អ្នក​នូវ​ទំព័រ​ចល័ត​របស់ MSN ទៅកាន់​"
+"ទូរស័ព្ទ​ចល័ត​របស់​អ្នក ឬ​ឧបករណ៍​ចល័ត​ផ្សេងៗ ?"
+
+msgid "Allow"
+msgstr "អនុញ្ញាត"
+
+msgid "Disallow"
+msgstr "មិន​អនុញ្ញាត"
+
+#, c-format
+msgid "Blocked Text for %s"
+msgstr "អត្ថបទ​ដែលបានទប់ស្កាត់​សម្រាប់ %s"
+
+msgid "No text is blocked for this account."
+msgstr "គ្មាន​អត្ថបទ​ត្រូវ​បាន​ទប់ស្កាត់​សម្រាប់គណនី​នេះ ។"
+
+#, c-format
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr "ម៉ាស៊ីន​បម្រើ MSN បច្ចុប្បន្ន​កំពុង​ទប់ស្កាត់​កន្សោម​ធម្មតា​ដូច​ខាងក្រោម ៖ <br/>%s"
+
+msgid "This account does not have email enabled."
+msgstr "គណនី​នេះ​មិន​មាន​អាសយដ្ឋាន​បានបើក​ទេ ។"
+
+msgid "Send a mobile message."
+msgstr "ផ្ញើ​សារ​ចល័ត ។"
+
+msgid "Page"
+msgstr "ទំព័រ​​"
+
+msgid "Playing a game"
+msgstr "លេង​ល្បែង"
+
+msgid "Working"
+msgstr "ធ្វើការ"
+
+msgid "Has you"
+msgstr "មាន​អ្នក"
+
+msgid "Home Phone Number"
+msgstr "លេខ​ទូរស័ព្ទ​​ផ្ទះ​"
+
+msgid "Work Phone Number"
+msgstr "លេខ​ទូរស័ព្ទ​ការងារ"
+
+msgid "Mobile Phone Number"
+msgstr "លេខ​ទូរស័ព្ទ​ចល័ត"
+
+msgid "Be Right Back"
+msgstr "ថយក្រោយ"
+
+msgid "Busy"
+msgstr "រវល់"
+
+msgid "On the Phone"
+msgstr "ជាប់និយាយ​ទូរស័ព្ទ"
+
+msgid "Out to Lunch"
+msgstr "​ទៅ​អាហារ​ថ្ងៃ​ត្រង់​នៅ​ក្រៅ"
+
+#. primitive
+#. ID
+#. name - use default
+#. saveable
+#. should be user_settable some day
+#. independent
+msgid "Artist"
+msgstr "សិល្ប"
+
+msgid "Album"
+msgstr "អាល់ប៊ុម"
+
+msgid "Game Title"
+msgstr "ចំណង​ជើង​ល្បែង"
+
+msgid "Office Title"
+msgstr "ចំណង​ជើង​ការិយាល័យ"
+
+msgid "Set Friendly Name..."
+msgstr "កំណត់​​ឈ្មោះ​មិត្តភក្តិ..."
+
+msgid "Set Home Phone Number..."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ផ្ទះ..."
+
+msgid "Set Work Phone Number..."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​កន្លែង​ធ្វើការ..."
+
+msgid "Set Mobile Phone Number..."
+msgstr "កំណត់​លេខ​ទូរស័ព្ទ​ចល័ត..."
+
+msgid "Enable/Disable Mobile Devices..."
+msgstr "បិទ/បើក​ឧបករណ៍​ចល័ត..."
+
+msgid "Allow/Disallow Mobile Pages..."
+msgstr "អនុញ្ញាត/មិនអនុញ្ញាត​ទំព័រ​ចល័ត..."
+
+msgid "View Blocked Text..."
+msgstr "មើល​អត្ថបទ​ដែល​បាន​ទប់ស្កាត់..."
+
+msgid "Open Hotmail Inbox"
+msgstr "បើក​ប្រអប់​ Hotmail"
+
+msgid "Send to Mobile"
+msgstr "ផ្ញើ​ទៅ​ទូរស័ព្ទ​ចល័ត"
+
+msgid "Initiate _Chat"
+msgstr "ចាប់ផ្ដើមជជែក"
+
+msgid "SSL support is needed for MSN. Please install a supported SSL library."
+msgstr "ការ​គាំទ្រ SSL ត្រូវ​បានទាមទារ​សម្រាប់ MSN ។ សូម​ដំឡើង​បណ្ណាល័យ SSL ដែល​បានគាំទ្រ ។"
+
+msgid "Failed to connect to server."
+msgstr "បាន​បរាជ័យ​ក្នុងការ​តភ្ជាប់​ទៅ​ម៉ាស៊ីន​បម្រើ ។"
+
+msgid "Error retrieving profile"
+msgstr "កំហុសក្នុងការ​ទៅ​ទទួល​យក​ទម្រង់"
+
+msgid "General"
+msgstr "ទូទៅ"
+
+msgid "Age"
+msgstr "អាយុ"
+
+msgid "Occupation"
+msgstr "មុខរបរ"
+
+msgid "Location"
+msgstr "ទីតាំង"
+
+msgid "Hobbies and Interests"
+msgstr "ចំណូល​ចិត្ត និង​ចំណាប់​អារម្មណ៍"
+
+msgid "A Little About Me"
+msgstr "បន្តិចបន្តួច​អំពី​ខ្ញុំ"
+
+msgid "Social"
+msgstr "សង្គម"
+
+msgid "Marital Status"
+msgstr "ស្ថានភាព​គ្រួសារ"
+
+msgid "Interests"
+msgstr "ចំណាប់​អារម្មណ៍"
+
+msgid "Pets"
+msgstr "សត្វស្លាប"
+
+msgid "Hometown"
+msgstr "ទីក្រុង"
+
+msgid "Places Lived"
+msgstr "បន្តផ្ទាល់​នៅ​កន្លែង"
+
+msgid "Fashion"
+msgstr "ម៉ូដ"
+
+msgid "Humor"
+msgstr "អារម្មណ៍"
+
+msgid "Music"
+msgstr "តន្ត្រី"
+
+msgid "Favorite Quote"
+msgstr "សម្រង់​សំណព្វ"
+
+msgid "Contact Info"
+msgstr "ព័ត៌មាន​​ទំនាក់ទំនង"
+
+msgid "Personal"
+msgstr "ផ្ទាល់ខ្លួន"
+
+msgid "Significant Other"
+msgstr "ការ​សម្ងាត់​ផ្សេងៗ"
+
+msgid "Home Phone"
+msgstr "ទូរស័ព្ទ​​​​​ផ្ទះ"
+
+msgid "Home Phone 2"
+msgstr "ទូរស័ព្ទ​ផ្ទះ ២"
+
+msgid "Home Address"
+msgstr "អាសយដ្ឋាន​ផ្ទះ"
+
+msgid "Personal Mobile"
+msgstr "ទូរស័ព្ទ​ចល័ត​ផ្ទាល់ខ្លួន"
+
+msgid "Home Fax"
+msgstr "ទូរសារ​ផ្ទះ"
+
+msgid "Personal Email"
+msgstr "អ៊ីមែល​ផ្ទាល់ខ្លួន"
+
+msgid "Personal IM"
+msgstr "IM ផ្ទាល់ខ្លួន"
+
+msgid "Anniversary"
+msgstr "ខួប​កំណើត"
+
+#. Business
+msgid "Work"
+msgstr "ការងារ"
+
+msgid "Job Title"
+msgstr "ងារ​ការងារ"
+
+msgid "Company"
+msgstr "ក្រុមហ៊ុន"
+
+msgid "Department"
+msgstr "នាយកដ្ឋាន"
+
+msgid "Profession"
+msgstr "វិជ្ជាជីវៈ"
+
+msgid "Work Phone"
+msgstr "ទូរស័ព្ទ​​​កន្លែង​​​ធ្វើការ"
+
+msgid "Work Phone 2"
+msgstr "ទូរស័ព្ទ​កន្លែង​ធ្វើការ​ ២"
+
+msgid "Work Address"
+msgstr "អាសយដ្ឋាន​កន្លែងធ្វើការ"
+
+msgid "Work Mobile"
+msgstr "ទូរស័ព្ទ​ចល័ត​កន្លែង​ធ្វើការ"
+
+msgid "Work Pager"
+msgstr "ភេយ័រ​កន្លែង​ធ្វើការ"
+
+msgid "Work Fax"
+msgstr "ទូរសារ​កន្លែង​ធ្វើការ"
+
+msgid "Work Email"
+msgstr "អ៊ីមែល​កន្លែង​ធ្វើការ"
+
+msgid "Work IM"
+msgstr "IM កន្លែង​ធ្វើការ"
+
+msgid "Start Date"
+msgstr "កាលបរិច្ឆេទ​ចាប់ផ្ដើម"
+
+msgid "Favorite Things"
+msgstr "វត្ថុ​សំណព្វ"
+
+msgid "Last Updated"
+msgstr "បាន​ធ្វើ​ឲ្យ​ទាន់សម័យ​ចុងក្រោយ"
+
+msgid "Homepage"
+msgstr "គេហទំព័រ"
+
+msgid "The user has not created a public profile."
+msgstr "អ្នក​ប្រើ​មិន​បាន​បង្កើត​ទម្រង់​សាធារណៈ​ទេ ។"
+
+msgid ""
+"MSN reported not being able to find the user's profile. This either means "
+"that the user does not exist, or that the user exists but has not created a "
+"public profile."
+msgstr ""
+"MSN បាន​រាយការណ៍​ថា​មិនអាច​រក​ទម្រង់​របស់​អ្នកប្រើទេ ។ នេះ​មាន​ន័យ​ថា​អ្នក​ប្រើ​មិន​ទាន់មាន​ទេ ឬ​ថា​​មាន​អ្នក​"
+"ប្រើ​ ប៉ុន្តែ​មិន​បានបង្កើត​ទម្រង់​ជា​សាធារណៈ​ទេ ។"
+
+msgid ""
+"Could not find any information in the user's profile. The user most likely "
+"does not exist."
+msgstr "មិនអាច​រក​ព័ត៌មាន​នៅ​ក្នុង​ទម្រង់​របស់​អ្នក​ប្រើ​ទេ ។ អ្នក​ប្រើ​ទំនង​ជា​មិន​ទាន់មាន​ទេ ។"
+
+msgid "View web profile"
+msgstr "មើល​ទម្រង់​លើ​បណ្ដាញ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *< summary
+msgid "Windows Live Messenger Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​របស់​កម្មវិធី​ផ្ញើសារ​បន្តផ្ទាល់​របស់​វីនដូ"
+
+msgid "Use HTTP Method"
+msgstr "ប្រើ​វិធីសាស្ត្រ HTTP"
+
+msgid "HTTP Method Server"
+msgstr "ម៉ាស៊ីនបម្រើ​វិធីសាស្ត្រ HTTP"
+
+msgid "Show custom smileys"
+msgstr "បង្ហាញ​សញ្ញាណ​អារម្មណ៍​ផ្ទាល់ខ្លួន"
+
+msgid "nudge: nudge a user to get their attention"
+msgstr "ច្រាន​ចេញ ៖ ច្រានអ្នកប្រើ​ចេញ​ដើម្បី​ទទួល​បាន​ការ​ចាបអារម្មណ៍​របស់​ពួកគេ"
+
+msgid "Windows Live ID authentication:Unable to connect"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​នៃ​លេខសម្គាល់​របស់ Windows Live ៖ មិនអាច​តភ្ជាប់​បានទេ"
+
+msgid "Windows Live ID authentication:Invalid response"
+msgstr "កា​រផ្ទៀងផ្ទាត់​​ភាព​ត្រឹមត្រូវ​នៃ​លេខសម្គាល់​របស់ Windows Live ៖ ការ​ឆ្លើយតប​មិនត្រឹមត្រូវ"
+
+#, c-format
+msgid "%s is not a valid group."
+msgstr "%s មិន​មែន​ជា​ក្រុម​ត្រឹមត្រូវ​ទេ ។"
+
+msgid "Unknown error."
+msgstr "មិន​ស្គាល់​កំហុស ។"
+
+#, c-format
+msgid "%s on %s (%s)"
+msgstr "%s នៅលើ %s (%s)"
+
+#, c-format
+msgid "%s just sent you a Nudge!"
+msgstr "%s គ្រាន់​តែ​​បានផ្ញើ​ឲ្យ​អ្នក​នូវ​កា​រច្រានចេញ !"
+
+#. char *adl = g_strndup(payload, len);
+#, c-format
+msgid "Unknown error (%d)"
+msgstr "មិន​ស្គាល់​កំហុស (%d)"
+
+msgid "Unable to add user"
+msgstr "មិនអាច​បន្ថែម​អ្នក​ប្រើ​បានទេ"
+
+msgid "The following users are missing from your addressbook"
+msgstr "អ្នក​ប្រើ​ដូច​ខាងក្រោម​បាត់​ពី​សៀវភៅ​អាសយដ្ឋាន​របស់​អ្នក"
+
+#, c-format
+msgid "Unable to add user on %s (%s)"
+msgstr "មិនអាច​បន្ថែម​អ្នកប្រើ​នៅ​លើ %s (%s) បានទេ"
+
+#, c-format
+msgid "Unable to block user on %s (%s)"
+msgstr "មិនអាច​ទប់ស្កាត់​អ្នកប្រើ​នៅ​លើ %s (%s)"
+
+#, c-format
+msgid "Unable to permit user on %s (%s)"
+msgstr "មិនអាច​អនុញ្ញាត​​អ្នកប្រើ​នៅ​លើ %s (%s) បានទេ"
+
+#, c-format
+msgid "%s could not be added because your buddy list is full."
+msgstr "%s មិនអាច​ត្រូវ​បាន​បន្ថែម​បាន​ទេ ដោយ​សារ​តែ​បញ្ជី​​មិត្តភក្ដិ​របស់​អ្នក​ពេញ​ហើយ ។"
+
+#, c-format
+msgid "%s is not a valid passport account."
+msgstr "%s មិនមែន​ជា​គណនី​លិខិត​ឆ្លងដែន​ត្រឹមត្រូវ​ទេ ។"
+
+msgid "Service Temporarily Unavailable."
+msgstr "សេវា​មិនអាច​ប្រើបានជា​បណ្ដោះ​អាសន្ន ។"
+
+msgid "Mobile message was not sent because it was too long."
+msgstr "សារ​ចល័ត​មិនត្រូវ​បានផ្ញើ​ទេ ដោយ​សារ​តែ​វា​វែង​ពេក ។"
+
+msgid "Unable to rename group"
+msgstr "មិន​អាច​ប្ដូរ​ឈ្មោះ​ក្រុម​បានទេ"
+
+msgid "Unable to delete group"
+msgstr "មិនអាចលុប​ក្រុម​បាន​ទេ"
+
+#, c-format
+msgid ""
+"The MSN server will shut down for maintenance in %d minute. You will "
+"automatically be signed out at that time.  Please finish any conversations "
+"in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
+msgid_plural ""
+"The MSN server will shut down for maintenance in %d minutes. You will "
+"automatically be signed out at that time.  Please finish any conversations "
+"in progress.\n"
+"\n"
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
+msgstr[0] ""
+"ម៉ាស៊ីន​បម្រើ MSN នឹង​បិទ​ដើម្បី​ថែទាំ​ក្នុងរយៈពេល %d នាទី ។ អ្នកនឹង​ត្រូវ​បាន​ចេញ​ដោយ​ស្វ័យ​ប្រវត្តិ​នៅ​ពេល​"
+"ណាមួយ ។ សូម​បញ្ចប់​ការ​សន្ទនា​ដែល​កំពុង​តែ​សន្ទនា ។\n"
+"\n"
+"បន្ទាប់​ពី​កា​រ​ថែទាំ​ចប់ អ្នក​នឹង​អាច​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ​បាន ។"
+
+msgid ""
+"Message was not sent because the system is unavailable. This normally "
+"happens when the user is blocked or does not exist."
+msgstr ""
+"សារ​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​ប្រព័ន្ធ​មិនអាច​ប្រើ​បាន​ទេ ។ តាម​ធម្មតា​វា​កើតឡើង​នៅពេល​ដែល​អ្នកប្រើ​ត្រូវ​"
+"បានទប់ស្កាត់ ឬ​មិន​ទាន់មាន ។"
+
+msgid "Message was not sent because messages are being sent too quickly."
+msgstr "សារ​មិន​ត្រូវ​បានផ្ញើទេ ពីព្រោះ​សារ​កំពុង​ត្រូវ​បានផ្ញើ​រហ័ស​ពេក ។"
+
+msgid "Message was not sent because an unknown encoding error occurred."
+msgstr "សារ​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​មាន​កំហុស​អ៊ិនកូដ​ដែល​មិនស្គាល់​បានកើត​ឡើង ។"
+
+msgid "Message was not sent because an unknown error occurred."
+msgstr "សារ​មិន​ត្រូវ​បាន​ផ្ញើ​បានទេ ពីព្រោះ​មាន​កំហុស​ដែលមិនស្គាល់​បានកើត​ឡើង ។"
+
+msgid "Unable to connect"
+msgstr "មិនអាច​តភ្ជាប់​ទេ"
+
+msgid "Writing error"
+msgstr "កំហុស​ក្នុងការ​សរសេរ"
+
+msgid "Reading error"
+msgstr "កំហុសក្នុងការ​អាន"
+
+#, c-format
+msgid ""
+"Connection error from %s server:\n"
+"%s"
+msgstr ""
+"កំហុស​ក្នុងការ​តភ្ជាប់​ពី​ម៉ាស៊ីន​បម្រើ %s ៖\n"
+"%s"
+
+msgid "Our protocol is not supported by the server."
+msgstr "ពិធីការ​របស់​យើង​មិន​ត្រូវ​បានគាំទ្រ​ដោយ​ម៉ាស៊ីនបម្រើ​ទេ ។"
+
+msgid "Error parsing HTTP."
+msgstr "កំហុស​ក្នុងកា​រញែក HTTP ។"
+
+msgid "You have signed on from another location."
+msgstr "អ្នក​បាន​ចុះហត្ថលេខា​ពី​ទីតាំង​ផ្សេង ។"
+
+msgid "The MSN servers are temporarily unavailable. Please wait and try again."
+msgstr "ម៉ាស៊ីន​បម្រើ MSN មិនអាច​ប្រើ​បាន​ជា​បណ្ដោះ​អាសន្ន ។ សូម​រង់ចាំ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "The MSN servers are going down temporarily."
+msgstr "ម៉ាស៊ីន​បម្រើ MSN នឹង​ខូច​ជា​បណ្ដោះ​អាសន្ន ។"
+
+#, c-format
+msgid "Unable to authenticate: %s"
+msgstr "មិនអាច​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖ %s"
+
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr "បញ្ជី​​មិត្តភក្ដិ​របស់​អ្នក MSN ​មិន​អាច​ប្រើ​បាន​ជា​បណ្ដោះ​អាសន្ន ។ សូម​រង់ចាំ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "Handshaking"
+msgstr "ការ​ចាប់ដៃ"
+
+msgid "Transferring"
+msgstr "ការ​ផ្ទេរ"
+
+msgid "Starting authentication"
+msgstr "ចាប់ផ្ដើម​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Getting cookie"
+msgstr "ទទួល​ខូគី"
+
+msgid "Sending cookie"
+msgstr "ផ្ញើ​ខូគី"
+
+msgid "Retrieving buddy list"
+msgstr "ទៅ​យក​បញ្ជី​មិត្តភក្ដិ"
+
+msgid "Away From Computer"
+msgstr "ចាកឆ្ងាយ​ពី​កុំព្យូទ័រ"
+
+msgid "On The Phone"
+msgstr "និយាយ​ទូរស័ព្ទ"
+
+msgid "Out To Lunch"
+msgstr "ចេញ​ទៅ​ហូប​អាហារ​ថ្ងៃត្រង់​នៅ​ខាង​ក្រៅ"
+
+msgid "Message may have not been sent because a timeout occurred:"
+msgstr "សារ​អាច​មិន​ត្រូ​វបាន​ផ្ញើ​ ពីព្រោះ​អស់​ពេល ៖"
+
+msgid "Message could not be sent, not allowed while invisible:"
+msgstr "សារ​មិនអាច​​ត្រូវ​បាន​ផ្ញើ​ទេ មិន​​បាន​អនុញ្ញាត​ខណៈពេល​មើល​មិន​ឃើញ ៖"
+
+msgid "Message could not be sent because the user is offline:"
+msgstr "សារ​មិន​អាច​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​អ្នក​ប្រើ​នៅ​ក្រៅ​បណ្ដាញ ៖"
+
+msgid "Message could not be sent because a connection error occurred:"
+msgstr "សារ​មិនអាច​ត្រូ​វបាន​ផ្ញើ​ទេ ពីព្រោះ​​មាន​កំហុស​ក្នុងការ​តភ្ជាប់​បានកើត​ឡើង ៖"
+
+msgid "Message could not be sent because we are sending too quickly:"
+msgstr "សារ​មិនអាច​ត្រូវ​បាន​ផ្ញើ​ទេ ពីព្រោះ​យើង​កំពុង​ផ្ញើ​រហ័ស​ពេក ៖"
+
+msgid ""
+"Message could not be sent because we were unable to establish a session with "
+"the server. This is likely a server problem, try again in a few minutes:"
+msgstr ""
+"សារ​មិន​អាច​​ត្រូវ​បានផ្ញើ​ទេ ពីព្រោះ​យើង​មិន​អាច​បង្កើត​សម័យ​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ។ វា​ទំនង​ជា​បញ្ហា​ម៉ាស៊ីន​បម្រើ "
+"ព្យាយាម​ម្ដង​ទៀត​​ក្នុង​រយៈពេល​ពីរ​ បី​នាទី​ទៀត ៖"
+
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
+msgstr "សារ​មិនអាច​ត្រូវ​បាន​ផ្ញើទេ​ ពីព្រោះ​មាន​កំហុស​ជា​មួយ​ប៉ាណូ​បានកើតឡើង ៖"
+
+msgid "Message may have not been sent because an unknown error occurred:"
+msgstr "សារ​មិន​​អាច​ត្រូវ​បាន​ទេ ពីព្រោះ​មាន​កំហុស​ដែល​មិន​ស្គាល់​បាន​កើតឡើង ៖"
+
+#, c-format
+msgid "%s has added you to his or her buddy list."
+msgstr "%s បាន​បន្ថែម​អ្នក​ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់គាត់ ។"
+
+#, c-format
+msgid "%s has removed you from his or her buddy list."
+msgstr "%s បានយក​អ្នក​ចេញ​ពី​បញ្ជី​មិត្តភក្ដិ​របស់​គាត់ ។"
+
+msgid "Delete Buddy from Address Book?"
+msgstr "លុប​មិត្តភក្ដិ​ពី​សៀវភៅ​អាសយដ្ឋាន ?"
+
+msgid "Do you want to delete this buddy from your address book as well?"
+msgstr "តើ​អ្នក​ចង់​លុប​មិត្តភក្ដិ​នេះ​ពី​សៀវភៅ​អាសយដ្ឋាន​របស់​អ្នកដែរឬទេ ?"
+
+msgid "The username specified is invalid."
+msgstr "ឈ្មោះ​អ្នកប្រើ​ដែល​បាន​បញ្ជាក់​មិន​ត្រឹមត្រូវ ។"
+
+msgid "This Hotmail account may not be active."
+msgstr "គណនី​របស់ Hotmail នេះ​មិន​សកម្ម​ទេ ។"
+
+msgid "Profile URL"
+msgstr "ទម្រង់ URL"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "MSN Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​​របស់ MSN"
+
+#, c-format
+msgid "No such user: %s"
+msgstr "គ្មាន​អ្នក​ប្រើ​បែបនេះ​ទេ ៖ %s"
+
+msgid "User lookup"
+msgstr "រក​មើល​អ្នក​ប្រើ"
+
+msgid "Reading challenge"
+msgstr "អាន​ការ​ប្រកួត"
+
+msgid "Unexpected challenge length from server"
+msgstr "ប្រវែង​កា​រប្រកួត​ដែល​មិន​រំពឹង​ទុក​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Logging in"
+msgstr "ចូល"
+
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - គ្មាន​ឈ្មោះ​អ្នកប្រើបាន​កំណត់"
+
+msgid "You appear to have no MySpace username."
+msgstr "អ្នក​បង្ហាញ​ថា​គ្មាន​ឈ្មោះអ្នកប្រើ MySpace នោះ​ទេ ។"
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "តើ​អ្នក​ចង់​កំណត់​មួយ​ដែរឬទេ ? (ចំណាំ ៖ វា​មិនអាច​ត្រូវ​បាន​ផ្លាស់ប្ដូរ​នោះ​ទេ !)"
+
+msgid "Lost connection with server"
+msgstr "បាត់​បង់ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ"
+
+#. Can't write _()'d strings in array initializers. Workaround.
+msgid "New mail messages"
+msgstr "សារ​សំបុត្រ​ថ្មី"
+
+msgid "New blog comments"
+msgstr "មតិយោបល់​ប្លុក​ថ្មី"
+
+msgid "New profile comments"
+msgstr "មិតយោបល់​ទម្រង់​ថ្មី"
+
+msgid "New friend requests!"
+msgstr "សំណើ​របស់មិត្តភក្ដិ​ថ្មី !"
+
+msgid "New picture comments"
+msgstr "មតិយោបល់រូបភាព​ថ្មី"
+
+msgid "MySpace"
+msgstr "MySpace"
+
+msgid "IM Friends"
+msgstr "មិត្តភក្ដិ​របស់ IM"
+
+#, 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[0] ""
+"មិត្តភក្ដិ %d ត្រូវ​បាន​បន្ថែម ឬ​ធ្វើ​ឲ្យ​ទាន់សម័យ​ពី​ម៉ាស៊ីនបម្រើ (រួម​មាន​មិត្តភក្ដិ​ដែល​មាន​នៅ​ក្នុង​បញ្ជី​​នៅ​ខាង​"
+"ម៉ាស៊ីនបម្រើ​រួច​ហើយ)"
+
+msgid "Add contacts from server"
+msgstr "បន្ថែម​ទំនាក់ទំនង​ពី​ម៉ាស៊ីន​បម្រើ"
+
+#. The session is now set up, ready to be connected. This emits the
+#. * signedOn signal, so clients can now do anything with msimprpl, and
+#. * we're ready for it (session key, userid, username all setup).
+msgid "Connected"
+msgstr "បាន​តភ្ជាប់"
+
+#, c-format
+msgid "Protocol error, code %d: %s"
+msgstr "កំហុស​ពិធីការ កូដ %d: %s"
+
+#, c-format
+msgid ""
+"%s Your password is %d characters, greater than the expected maximum length "
+"of %d for MySpaceIM. Please shorten your password at http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
+"again."
+msgstr ""
+"%s ពាក្យ​សម្ងាត់​របស់​អ្នកមាន %d តួអក្សរ ធំជាង​ប្រវែង​អតិបរមា​ដែលបាន​រំពឹង​ទុក​របស់ %d សម្រាប់ "
+"MySpaceIM ។ សូម​ធ្វើ​ឲ្យ​ពាក្យ​សម្ងាត់​របស់​អ្នក​ខ្លី​​នៅ http://profileedit.myspace.com/index."
+"cfm?fuseaction=accountSettings ។ ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "MySpaceIM Error"
+msgstr "កំហុស MySpaceIM"
+
+msgid "Invalid input condition"
+msgstr "លក្ខខណ្ឌ​បញ្ចូល​មិនត្រឹមត្រូវ"
+
+msgid "Read buffer full (2)"
+msgstr "អាន​សតិ​បណ្ដោះអាសន្ន​ពេញលេញ (២)"
+
+msgid "Unparseable message"
+msgstr "សារ​ដែល​មិន​អាច​ញែក​បាន"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន ៖ %s (%d)"
+
+msgid "Failed to add buddy"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​បន្ថែម​មិត្តភក្ដិ"
+
+msgid "'addbuddy' command failed."
+msgstr "ពាក្យ​បញ្ជា 'addbuddy' បាន​បរាជ័យ ។"
+
+msgid "persist command failed"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រព្យាយាម​ពាក្យ​បញ្ជា"
+
+msgid "Failed to remove buddy"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​យក​មិត្តភក្ដិ​ចេញ"
+
+msgid "'delbuddy' command failed"
+msgstr "បាន​បរាជ័យ​ពាក្យ​បញ្ជា​ 'delbuddy'"
+
+msgid "blocklist command failed"
+msgstr "បានបរាជ័យ​​ពាក្យ​បញ្ជា​បញ្ជី​ទប់ស្កាត់"
+
+msgid "Missing Cipher"
+msgstr "បាត់​ការ​សរសេរ​សម្ងាត់"
+
+msgid "The RC4 cipher could not be found"
+msgstr "រក​មិនឃើញ​ការ​សរសេរ​សម្ងាត់ RC4"
+
+msgid ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"ធ្វើ​ឲ្យ​ប្រសើ​ឡើង​ទៅ libpurple ដោយ​មាន​ការ​គាំទ្រ RC4 (>= 2.0.1) ។ កម្មវិធី​ជំនួយ MySpaceIM នឹង​"
+"មិន​ត្រូវ​បាន​ផ្ទុក ។"
+
+msgid "Add friends from MySpace.com"
+msgstr "បន្ថែម​មិត្តភក្ដិ​ពី MySpace.com"
+
+msgid "Importing friends failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រនាំមិត្តភក្តិចូល"
+
+#. TODO: find out how
+msgid "Find people..."
+msgstr "រក​មនុស្ស..."
+
+msgid "Change IM name..."
+msgstr "ផ្លាស់ប្ដូរ​ឈ្មោះ IM​..."
+
+msgid "myim URL handler"
+msgstr "កម្មវិធី​គ្រប់គ្រង myim URL"
+
+msgid "No suitable MySpaceIM account could be found to open this myim URL."
+msgstr " រក​មិន​ឃើញ​​គណនី MySpaceIM សមរម្យ​ដើម្បី​បើក myim URL នេះ​ទេ ។"
+
+msgid "Enable the proper MySpaceIM account and try again."
+msgstr "បើក​គណនី​ MySpaceIM សមរម្យ​ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "Show display name in status text"
+msgstr "បង្ហាញ​ឈ្មោះ​បង្ហាញ​នៅ​ក្នុង​​អត្ថបទ​ស្ថានភាព"
+
+msgid "Show headline in status text"
+msgstr "បង្ហាញ​ពេល​កំណត់​នៅ​ក្នុងអត្ថបទ​ស្ថានភាព"
+
+msgid "Send emoticons"
+msgstr "ផ្ញើ​​សញ្ញា​អារម្មណ៍"
+
+msgid "Screen resolution (dots per inch)"
+msgstr "គុណភាព​បង្ហាញ​អេក្រង់ (ចុច​/អ៊ិន្ឈ៍)"
+
+msgid "Base font size (points)"
+msgstr "មាន​មូលដ្ឋាន​លើ​ទំហំ​ពុម្ពអក្សរ (ចំណុច)"
+
+msgid "User"
+msgstr "អ្នក​ប្រើ"
+
+msgid "Headline"
+msgstr "ចំណង​ជើង"
+
+msgid "Song"
+msgstr "ចម្រៀង"
+
+msgid "Total Friends"
+msgstr "មិត្តភក្ដិ​សរុប"
+
+msgid "Client Version"
+msgstr "កំណែ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "MySpaceIM - Username Available"
+msgstr "MySpaceIM - មាន​ឈ្មោះ​អ្នក​ប្រើ"
+
+msgid "This username is available. Would you like to set it?"
+msgstr "មាន​ឈ្មោះ​អ្នកប្រើ​នេះ ។ តើ​អ្នក​ចង់​កំណត់​វា​ដែរឬទេ ?"
+
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgstr "នៅ​ពេល​កំណត់ វា​មិនអាច​ត្រូ​វបាន​ផ្លាស់ប្ដូរ​ទេ !"
+
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - សូម​កំណត់​​ឈ្មោះ​អ្នកប្រើ"
+
+msgid "This username is unavailable."
+msgstr "ឈ្មោះ​អ្នក​ប្រើ​នេះ​មិនអាច​ប្រើបានទេ ។"
+
+msgid "Please try another username:"
+msgstr "សូម​ព្យាយាម​ឈ្មោះ​អ្នក​ប្រើ​ផ្សេង​ទៀត ៖"
+
+#. Protocol won't log in now without a username set.. Disconnect
+msgid "No username set"
+msgstr "គ្មាន​ឈ្មោះ​អ្នក​ប្រើ​ត្រូវ​បានកំណត់"
+
+msgid "Please enter a username to check its availability:"
+msgstr "សូម​បញ្ចូល​ឈ្មោះអ្នក​ប្រើ​ដើម្បី​ពិនិត្យ​មើល​ភាព​អាច​ប្រើបាន​របស់​វា ៖"
+
+#. TODO: icons for each zap
+#. Lots of comments for translators:
+#. Zap means "to strike suddenly and forcefully as if with a
+#. * projectile or weapon."  This term often has an electrical
+#. * connotation, for example, "he was zapped by electricity when
+#. * he put a fork in the toaster."
+msgid "Zap"
+msgstr "ឆក់"
+
+#, c-format
+msgid "%s has zapped you!"
+msgstr "%s បាន​ឆក់​អ្នក !"
+
+#, c-format
+msgid "Zapping %s..."
+msgstr "កំពុង​ឆក់ %s..."
+
+#. Whack means "to hit or strike someone with a sharp blow"
+msgid "Whack"
+msgstr "ទះ"
+
+#, c-format
+msgid "%s has whacked you!"
+msgstr "%s បាន​ទះ​អ្នក !"
+
+#, c-format
+msgid "Whacking %s..."
+msgstr "កំពុង​ទះ %s..."
+
+#. Torch means "to set on fire."  Don't worry, this doesn't
+#. * make a whole lot of sense in English, either.  Feel free
+#. * to translate it literally.
+msgid "Torch"
+msgstr "ដុត"
+
+#, c-format
+msgid "%s has torched you!"
+msgstr "%s បាន​ដុត​អ្នក !"
+
+#, c-format
+msgid "Torching %s..."
+msgstr "កំពុង​ដុត %s..."
+
+#. Smooch means "to kiss someone, often enthusiastically"
+msgid "Smooch"
+msgstr "ថើប​ថ្នមៗ"
+
+#, c-format
+msgid "%s has smooched you!"
+msgstr "%s បាន​ថើប​អ្នក​ថ្នមៗ !"
+
+#, c-format
+msgid "Smooching %s..."
+msgstr "កំពុង​ថើប​ថ្នមៗ %s..."
+
+#. A hug is a display of affection; wrapping your arms around someone
+msgid "Hug"
+msgstr "អោប"
+
+#, c-format
+msgid "%s has hugged you!"
+msgstr "%s បាន​អោប​អ្នក !"
+
+#, c-format
+msgid "Hugging %s..."
+msgstr "កំពុង​អោប %s..."
+
+#. Slap means "to hit someone with an open/flat hand"
+msgid "Slap"
+msgstr "ទះថ្នមៗ"
+
+#, c-format
+msgid "%s has slapped you!"
+msgstr "%s បានទះ​អ្នក​ថ្នមៗ !"
+
+#, c-format
+msgid "Slapping %s..."
+msgstr "កំពុង %s ថ្នមៗ​..."
+
+#. Goose means "to pinch someone on their butt"
+msgid "Goose"
+msgstr "ចាក់"
+
+#, c-format
+msgid "%s has goosed you!"
+msgstr "%s បានចាក់​អ្នក !"
+
+#, c-format
+msgid "Goosing %s..."
+msgstr "កំពុងចាក់ %s..."
+
+#. A high-five is when two people's hands slap each other
+#. * in the air above their heads.  It is done to celebrate
+#. * something, often a victory, or to congratulate someone.
+msgid "High-five"
+msgstr "ស្វាគមន៍"
+
+#, c-format
+msgid "%s has high-fived you!"
+msgstr "%s បាន​ស្វាគមន៍​អ្នក !"
+
+#, c-format
+msgid "High-fiving %s..."
+msgstr "កំពុង​ស្វាគមន៍ %s..."
+
+#. We're not entirely sure what the MySpace people mean by
+#. * this... but we think it's the equivalent of "prank."  Or, for
+#. * someone to perform a mischievous trick or practical joke.
+msgid "Punk"
+msgstr "ប៉ះ"
+
+#, c-format
+msgid "%s has punk'd you!"
+msgstr "%s បានប៉ះអ្នក !"
+
+#, c-format
+msgid "Punking %s..."
+msgstr "កំពុង​ប៉ះ %s..."
+
+#. Raspberry is a slang term for the vibrating sound made
+#. * when you stick your tongue out of your mouth with your
+#. * lips closed and blow.  It is typically done when
+#. * gloating or bragging.  Nowadays it's a pretty silly
+#. * gesture, so it does not carry a harsh negative
+#. * connotation.  It is generally used in a playful tone
+#. * with friends.
+msgid "Raspberry"
+msgstr "លម្អ"
+
+#, c-format
+msgid "%s has raspberried you!"
+msgstr "%s បានលម្អ​អ្នក !"
+
+#, c-format
+msgid "Raspberrying %s..."
+msgstr "កំពុង​លម្អ %s..."
+
+msgid "Required parameters not passed in"
+msgstr "ប៉ារ៉ាម៉ែត្រ​ដែល​ត្រូវការ​មិនបាន​ចម្លង​ទេ"
+
+msgid "Unable to write to network"
+msgstr "មិនអាច​សរសេរ​ទៅ​កាន់​បណ្ដាញ​បានទេ"
+
+msgid "Unable to read from network"
+msgstr "មិន​អាច​​អាន​ពី​បណ្ដាញ​បានទេ"
+
+msgid "Error communicating with server"
+msgstr "កំហុស​ក្នុងការ​ទំនាក់ទំនង​ជា​មួយ​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Conference not found"
+msgstr "រក​មិនឃើញ​សន្និសីទ"
+
+msgid "Conference does not exist"
+msgstr "មិន​ទាន់មាន​សន្និសីទ​នៅ​ឡើយ​ទេ"
+
+msgid "A folder with that name already exists"
+msgstr "មាន​ថត​ដែល​មាន​ឈ្មោះ​នោះ​រួច​ហើយ"
+
+msgid "Not supported"
+msgstr "មិន​​​បាន​គាំទ្រ"
+
+msgid "Password has expired"
+msgstr "ពាក្យ​​​សម្ងាត់​បាន​ផុត​កំណត់"
+
+msgid "Incorrect password"
+msgstr "ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ"
+
+msgid "User not found"
+msgstr "រក​មិនឃើញ​អ្នក​ប្រើ"
+
+msgid "Account has been disabled"
+msgstr "គណនី​ត្រូវ​បាន​បិទ"
+
+msgid "The server could not access the directory"
+msgstr "ម៉ាស៊ីន​បម្រើ​មិនអាច​ចូលដំណើរការ​ទៅកាន់​ថត​ទេ"
+
+msgid "Your system administrator has disabled this operation"
+msgstr "អ្នកគ្រប់គ្រង​ប្រព័ន្ធ​របស់​អ្នក​បានបិទ​ប្រតិបត្តិការ​នេះ"
+
+msgid "The server is unavailable; try again later"
+msgstr "មិនមាន​ម៉ាស៊ីន​បម្រើ​ទេ ព្យាយាម​ម្ដង​ទៀតពេល​ក្រោយ"
+
+msgid "Cannot add a contact to the same folder twice"
+msgstr "មិន​អាច​បន្ថែម​ទំនាក់ទំនង​ទៅកាន​ថត​ដដែល​ពីរ​ដង​បានទេ"
+
+msgid "Cannot add yourself"
+msgstr "មិនអាច​បន្ថែម​ខ្លួន​អ្នក​ផ្ទាល់​ទេ"
+
+msgid "Master archive is misconfigured"
+msgstr "ប័ណ្ណសារ​មេ​បាត់ misconfigured"
+
+msgid "Incorrect username or password"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ ឬ​ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ"
+
+msgid "Could not recognize the host of the username you entered"
+msgstr "មិនអាច​ស្គាល់​ឈ្មោះ​​អ្នកប្រើ​ម៉ាស៊ីន​ដែល​អ្នក​បានបញ្ចូល​ទេ"
+
+msgid ""
+"Your account has been disabled because too many incorrect passwords were "
+"entered"
+msgstr "គណនី​របស់​អ្នក​ត្រូវ​បានបិទ ពីព្រោះ​មាន​ពាក្យ​សម្ងាត់​ច្រើន​ពេក​ដែល​បាន​បញ្ចូល"
+
+msgid "You cannot add the same person twice to a conversation"
+msgstr "អ្នក​មិនអាច​បន្ថែម​មនុស្ស​ដដែល​ពីរដង​​ទៅ​កាន់​កា​រសន្ទនា​បានទេ"
+
+msgid "You have reached your limit for the number of contacts allowed"
+msgstr "អ្នក​បានដល់​កម្រិត​របស់​អ្នក​សម្រាប់​ចំនួន​ទំនាក់ទំនង​ដែល​បាន​អនុញ្ញាត"
+
+msgid "You have entered an incorrect username"
+msgstr "អ្នក​បាន​បញ្ចូល​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ"
+
+msgid "An error occurred while updating the directory"
+msgstr "កំហុស​មួយ​បានកើត​ឡើង​ខណៈពេល​ធ្វើ​ឲ្យថត​ទាន់សម័យ"
+
+msgid "Incompatible protocol version"
+msgstr "កំណែ​ពិធីការ​ដែល​មិន​ឆប​គ្នា"
+
+msgid "The user has blocked you"
+msgstr "អ្នកប្រើបាន​ទប់ស្កាត់​អ្នក"
+
+msgid ""
+"This evaluation version does not allow more than ten users to log in at one "
+"time"
+msgstr "កំណែ​នៃ​កា​រវាយតម្លៃ​នេះ​មិនអនុញ្ញាត​ឲ្យ​មាន​អ្នក​ប្រើ​ច្រើនជាង ១០ នាក់​ចូល​នៅពេល​តែ​មួយ​ទេ"
+
+msgid "The user is either offline or you are blocked"
+msgstr "អ្នក​ប្រើ​នៅ​ក្រៅ​បណ្ដាញ ឬ​អ្នក​ត្រូវ​បាន​ទប់ស្កាត់"
+
+#, c-format
+msgid "Unknown error: 0x%X"
+msgstr "មិន​ស្គាល់​កំហុស ៖ 0x%X"
+
+#, c-format
+msgid "Login failed (%s)."
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រចូល (%s) ។"
+
+#, c-format
+msgid "Unable to send message. Could not get details for user (%s)."
+msgstr "មិនអាច​ផ្ញើ​សារ​បានទេ ។ មិនអាច​យក​សេចក្ដី​លម្អិត​សម្រាប់​អ្នកប្រើ (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to add %s to your buddy list (%s)."
+msgstr "មិនអាច​បន្ថែម %s ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក (%s) បាន​ទេ ។"
+
+#. TODO: Improve this! message to who or for what conference?
+#, c-format
+msgid "Unable to send message (%s)."
+msgstr "មិន​អាច​ផ្ញើសារ​ទៅ​កាន់ (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to invite user (%s)."
+msgstr "មិនអាច​អញ្ជើញ​អ្នក​ប្រើ (%s) បាន​ទេ ។"
+
+#, c-format
+msgid "Unable to send message to %s. Could not create the conference (%s)."
+msgstr "មិនអាចផ្ញើសារទៅ​កាន់ %s បានទេ ។ មិនអាច​បង្កើត​ការ​សន្និសីទ​បាន​ទេ (%s) ។"
+
+#, c-format
+msgid "Unable to send message. Could not create the conference (%s)."
+msgstr "មិនអាច​ផ្ញើសារ​បានទេ ។ មិន​អាច​បង្កើត​សន្និសីទ​ (%s) បានទេ ។"
+
+#, c-format
+msgid ""
+"Unable to move user %s to folder %s in the server side list. Error while "
+"creating folder (%s)."
+msgstr ""
+"មិនអាច​ផ្លាស់ទី​អ្នក​ប្រើ %s ទៅ​កាន់​ថត %s នៅ​ក្នុង​បញ្ជី​ខាង​ម៉ាស៊ីន​បម្រើ ។ កំហុស​ខណៈពេល​បង្កើត​ថត (%s) ។"
+
+#, c-format
+msgid ""
+"Unable to add %s to your buddy list. Error creating folder in server side "
+"list (%s)."
+msgstr ""
+"មិន​អាច​បន្ថែម %s ទៅ​កាន់​បញ្ជីមិត្តភក្ដិ ។ កំហុស​ក្នុងកា​របង្កើត​ថត​នៅ​ក្នុង​បញ្ជី​ខាង​ម៉ាស៊ីន​បម្រើ (%s) ។"
+
+#, c-format
+msgid "Could not get details for user %s (%s)."
+msgstr "មិនអាច​ទទួល​យក​សេចក្ដី​លម្អិត​សម្រាប់​អ្នក​ប្រើ %s (%s) ។"
+
+#, c-format
+msgid "Unable to add user to privacy list (%s)."
+msgstr "មិនអាច​បន្ថែម​អ្នក​ប្រើ​ទៅ​កាន់​បញ្ជី​ឯកជន​ (%s) បាន​ទេ ។"
+
+#, c-format
+msgid "Unable to add %s to deny list (%s)."
+msgstr "មិនអាច​បន្ថែម %s ទៅ​កាន់​បញ្ជី​បដិសេធ​ (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to add %s to permit list (%s)."
+msgstr "មិនអាច​បន្ថែម %s ទៅ​កាន់​បញ្ជី​អនុញ្ញាត​ (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to remove %s from privacy list (%s)."
+msgstr "មិនអាច​យក %s ចេញ​ពី​បញ្ជី​ឯកជន (%s) បានទេ ។"
+
+#, c-format
+msgid "Unable to change server side privacy settings (%s)."
+msgstr "មិនអាច​​ផ្លាស់ប្ដូរ​ការ​កំណត់​ឯកជន​ខាង​ម៉ាស៊ីន​បម្រើ​បានទេ (%s) ។"
+
+#, c-format
+msgid "Unable to create conference (%s)."
+msgstr "មិនអាច​បង្កើត​សិន្និសីទ (%s) បាន​ទេ ។"
+
+msgid "Error communicating with server. Closing connection."
+msgstr "កំហុស​ក្នុងការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ។ បិទ​កា​រតភ្ជាប់ ។"
+
+msgid "Telephone Number"
+msgstr "លេខ​ទូរស័ព្ទ"
+
+msgid "Personal Title"
+msgstr "ចំណង​ជើង​ផ្ទាល់ខ្លួន"
+
+msgid "Mailstop"
+msgstr "Mailstop"
+
+msgid "User ID"
+msgstr "លេខ​សម្គាល់​អ្នក​ប្រើ"
+
+#. tag = _("DN");
+#. value = nm_user_record_get_dn(user_record);
+#. if (value) {
+#. purple_notify_user_info_add_pair(user_info, tag, value);
+#. }
+#.
+msgid "Full name"
+msgstr "ឈ្មោះ​ពេញ"
+
+#, c-format
+msgid "GroupWise Conference %d"
+msgstr "GroupWise សន្និសីទ %d"
+
+msgid "Authenticating..."
+msgstr "កំពុង​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ..."
+
+msgid "Unable to connect to server."
+msgstr "មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​បានទេ ។"
+
+msgid "Waiting for response..."
+msgstr "កំពុង​រង់ចាំ​ការ​ឆ្លើយ​តប..."
+
+#, c-format
+msgid "%s has been invited to this conversation."
+msgstr "%s ត្រូវ​បាន​អញ្ជើញ​ឲ្យ​ចូល​រួម​នៅ​ក្នុងកា​រ​សន្ទនា​នេះ ។"
+
+msgid "Invitation to Conversation"
+msgstr "ការ​អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុងការ​សន្ទនា"
+
+#, c-format
+msgid ""
+"Invitation from: %s\n"
+"\n"
+"Sent: %s"
+msgstr ""
+"ការ​អញ្ជើញ​ពី ៖ %s\n"
+"\n"
+"បាន​ផ្ញើ ៖ %s"
+
+msgid "Would you like to join the conversation?"
+msgstr "តើ​អ្នក​ចង់​ចូល​រួម​ក្នុងការ​សន្ទនា​ដែរឬទេ ?"
+
+msgid "You have been logged out because you logged in at another workstation."
+msgstr "អ្នក​ត្រូវ​បាន​ចេញ ដោយ​សារ​តែ​អ្នក​បាន​ចូល​ក្នុងស្ថានីយការងារ​ផ្សេង​ទៀត ។"
+
+#, c-format
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
+msgstr "%s បង្ហាញថា​នៅ​ក្រៅបណ្ដាញ ហើយ​មិន​បានទទួល​សារ​ដែល​អ្នក​ទើប​តែ​បាន​ផ្ញើ​នោះ​ទេ ។"
+
+msgid ""
+"Unable to connect to server. Please enter the address of the server you wish "
+"to connect to."
+msgstr "មិន​អាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​បានទេ ។ សូម​បញ្ចូល​អាសយដ្ឋាន​ម៉ាស៊ីនបម្រើ​ដែល​អ្នក​ចង់​តភ្ជាប់ ។"
+
+msgid "Error. SSL support is not installed."
+msgstr "កំហុស ។ ការ​គាំទ្រ SSL មិន​ត្រូវ​បាន​ដំឡើង​ទេ ។"
+
+msgid "This conference has been closed. No more messages can be sent."
+msgstr "សន្និសីទ​នេះ​ត្រូ​វបាន​បិទ ។ គ្មាន​សារ​អាច​ត្រូវ​បាន​ផ្ញើ​ទេ ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Novell GroupWise Messenger Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​របស់​កម្មវិធី​ផ្ញើសារ GroupWise របស់​ណូវែល"
+
+msgid "Server address"
+msgstr "អាសយដ្ឋាន​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Server port"
+msgstr "ច្រក​ម៉ាស៊ីនបម្រើ"
+
+msgid "Could not join chat room"
+msgstr "មិនអាច​ចូល​រួម​ក្នុង​បន្ទប់​ជជែក​បានទេ"
+
+msgid "Invalid chat room name"
+msgstr "ឈ្មោះ​បន្ទប់​ជជែក​មិន​ត្រឹមត្រូវ"
+
+msgid "Server closed the connection."
+msgstr "ម៉ាស៊ីនបម្រើ​បានបិទ​ការ​តភ្ជាប់ ។"
+
+#, c-format
+msgid ""
+"Lost connection with server:\n"
+"%s"
+msgstr ""
+"បាត់​បង់​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ៖\n"
+"%s"
+
+msgid "Received invalid data on connection with server."
+msgstr "បាន​ទទួល​ទិន្នន័យ​មិនត្រឹមត្រូវ​នៅ​លើ​កា​រតភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ ។ "
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "AIM Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ AIM"
+
+msgid "ICQ UIN..."
+msgstr "ICQ UIN..."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "ICQ Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ ICQ"
+
+msgid "Encoding"
+msgstr "ការ​អ៊ិនកូដ"
+
+msgid "The remote user has closed the connection."
+msgstr "អ្នក​ប្រើ​ពី​ចម្ងាយ​​បានបិទ​ការ​តភ្ជាប់ ។"
+
+msgid "The remote user has declined your request."
+msgstr "អ្នក​ប្រើពី​ចម្ងាយ​បានបដិសេធ​សំណើរ​របស់​អ្នក ។"
+
+#, c-format
+msgid "Lost connection with the remote user:<br>%s"
+msgstr "បាត់បង់​ការ​តភ្ជាប់​ជា​មួយ​អ្នកប្រើ​ពី​ចម្ងាយ ៖ <br>%s"
+
+msgid "Received invalid data on connection with remote user."
+msgstr "បាន​ទទួល​ទិន្នន័យ​មិន​ត្រឹមត្រូវ​នៅ​ពេល​តភ្ជាប់​ជា​មួយ​អ្នកប្រើពី​ចម្ងាយ ។"
+
+msgid "Could not establish a connection with the remote user."
+msgstr "មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ​អ្នក​ប្រើ​ពី​ចម្ងាយ​បាន​ទេ ។"
+
+msgid "Direct IM established"
+msgstr "បានបង្កើត IM ដោយ​ផ្ទាល់"
+
+#, c-format
+msgid ""
+"%s tried to send you a %s file, but we only allow files up to %s over Direct "
+"IM.  Try using file transfer instead.\n"
+msgstr ""
+"%s បានព្យាយាម​ផ្ញើ​ឲ្យ​​អ្ន​ក​នូវ​ឯកសារ %s ប៉ុន្តែ​អនុញ្ញាត​តែ​ឯកសារ​ %s លើ​ IM ដោយ​ផ្ទាល់ ។ ព្យាយាម​ប្រើ​"
+"ការ​ផ្ទេរ​ឯកសារ​ជំនួស​វិញ ។\n"
+
+#, c-format
+msgid "File %s is %s, which is larger than the maximum size of %s."
+msgstr "ឯកសារ %s គឺជា %s ដែល​ធំជាង​ទំហំ​អតិបរមា​របស់ %s ។"
+
+msgid "Invalid error"
+msgstr "កំហុស​​មិន​ត្រឹមត្រូវ"
+
+msgid "Invalid SNAC"
+msgstr "SNAC មិន​ត្រឹមត្រូវ"
+
+msgid "Rate to host"
+msgstr "វាយតម្លៃ​ម៉ាស៊ីន"
+
+msgid "Rate to client"
+msgstr "វាយតម្លៃ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "Service unavailable"
+msgstr "សេវា​មិនអាច​ប្រើបាន"
+
+msgid "Service not defined"
+msgstr "សេវា​មិនបានកំណត់"
+
+msgid "Obsolete SNAC"
+msgstr "SNAC ពេញលេញ"
+
+msgid "Not supported by host"
+msgstr "មិនបានគាំទ្រ​ដោយ​ម៉ាស៊ីន​ទេ"
+
+msgid "Not supported by client"
+msgstr "មិនបាន​គាំទ្រ​ដោយ​ម៉ាស៊ីន​ភ្ញៀវទេ"
+
+msgid "Refused by client"
+msgstr "បាន​បដិសេធ​ដោយ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "Reply too big"
+msgstr "ការ​ឆ្លើយតប​ធំពេក"
+
+msgid "Responses lost"
+msgstr "បាត់បង់ការ​ឆ្លើយតប"
+
+msgid "Request denied"
+msgstr "បដិសេធ​សំណើ"
+
+msgid "Busted SNAC payload"
+msgstr "Busted SNAC payload"
+
+msgid "Insufficient rights"
+msgstr "សិទ្ធិ​មិន​គ្រប់គ្រាន់"
+
+msgid "In local permit/deny"
+msgstr "នៅ​ក្នុង​ការ​បដិសេធ/អនុញ្ញាត"
+
+msgid "Warning level too high (sender)"
+msgstr "កម្រិត​ព្រមាន​ខ្ពស់​ពេក (អ្នក​ផ្ញើ)"
+
+msgid "Warning level too high (receiver)"
+msgstr "កម្រិត​ព្រមាន​ខ្ពស់​ពេក (អ្នក​ទទួល)"
+
+msgid "User temporarily unavailable"
+msgstr "អ្នក​ប្រើ​មិនអាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន"
+
+msgid "No match"
+msgstr "គ្មានការ​ផ្គូផ្គង"
+
+msgid "List overflow"
+msgstr "បញ្ជី​លើស​ចំណុះ"
+
+msgid "Request ambiguous"
+msgstr "ការ​ស្នើ​មិន​ប្រាកដ"
+
+msgid "Queue full"
+msgstr "ជួរ​​ពេញ"
+
+msgid "Not while on AOL"
+msgstr "មិន​សម្រាក​នៅ​លើ AOL"
+
+msgid ""
+"(There was an error receiving this message.  The buddy you are speaking with "
+"is probably using a different encoding than expected.  If you know what "
+"encoding he is using, you can specify it in the advanced account options for "
+"your AIM/ICQ account.)"
+msgstr ""
+"(មាន​កំហុស​មួយ​ក្នុងកា​រទទួល​សារ​នេះ ។ មិត្តភក្ដិ​ដែល​អ្នក​កំពុង​និយាយ​ជា​មួយ​ប្រហែលជា​ប្រើការ​អ៊ិនកូដ​ផ្សេង​ពីអ្វី​ដែល​"
+"រំពឹង​ទុក ។ ប្រសិនបើ​​អ្នកដឹង​ការ​អ៊ិនកូដ​អ្វី​ដែល​អ្នកកំពុង​ប្រើ អ្នក​អាច​បញ្ជាក់​វា​នៅ​ក្នុង​ជម្រើស​គណនី​កម្រិត​ខ្ពស់​"
+"សម្រាប់​គណនី AIM/ICQ របស់​អ្នក ។)"
+
+#, c-format
+msgid ""
+"(There was an error receiving this message.  Either you and %s have "
+"different encodings selected, or %s has a buggy client.)"
+msgstr ""
+"(មានកំហុស​មួយ​ក្នុងការ​ទទួល​សារ ។ អ្នក​ និង %s បាន​ជ្រើស​ការ​ការអ៊ិនកូដ​ផ្សេង​គ្នា ឬ %s មាន​ម៉ាស៊ីន​ភ្ញៀវ​"
+"មិត្តភក្ដិ ។)"
+
+#. Label
+msgid "Buddy Icon"
+msgstr "រូបតំណាង​មិត្តភក្ដិ"
+
+msgid "Voice"
+msgstr "សំឡេង"
+
+msgid "AIM Direct IM"
+msgstr "AIM នាំ IM"
+
+msgid "Get File"
+msgstr "យក​ឯកសារ"
+
+msgid "Games"
+msgstr "ល្បែង"
+
+msgid "Add-Ins"
+msgstr "បន្ថែម"
+
+msgid "Send Buddy List"
+msgstr "ផ្ញើ​បញ្ជី​មិត្តភក្ដិ"
+
+msgid "ICQ Direct Connect"
+msgstr "តភ្ជាប់​ ICQ ដោយ​ផ្ទាល់"
+
+msgid "AP User"
+msgstr "អ្នក​ប្រើ AP"
+
+msgid "ICQ RTF"
+msgstr "ICQ RTF"
+
+msgid "Nihilist"
+msgstr "Nihilist"
+
+msgid "ICQ Server Relay"
+msgstr "ពន្យារ​ម៉ាស៊ីន​បម្រើ ICQ"
+
+msgid "Old ICQ UTF8"
+msgstr "ICQ UTF8 ចាស់"
+
+msgid "Trillian Encryption"
+msgstr "ការ​អ៊ិនគ្រីប Trillian"
+
+msgid "ICQ UTF8"
+msgstr "ICQ UTF8"
+
+msgid "Hiptop"
+msgstr "Hiptop"
+
+msgid "Security Enabled"
+msgstr "បាន​បើក​សុវត្ថិភាព"
+
+msgid "Video Chat"
+msgstr "ជជែក​តាម​វីដេអូ"
+
+msgid "iChat AV"
+msgstr "iChat AV"
+
+msgid "Live Video"
+msgstr "វីដេអូ​បន្តផ្ទាល់"
+
+msgid "Camera"
+msgstr "ម៉ាស៊ីន​ថត​"
+
+msgid "Screen Sharing"
+msgstr "ការ​ចែករំលែក​អេក្រង់"
+
+msgid "Free For Chat"
+msgstr "ទំនេរ​សម្រាប់​ជជែក"
+
+msgid "Not Available"
+msgstr "មិនអាច​ប្រើ​បាន"
+
+msgid "Occupied"
+msgstr "កាន់កាប់"
+
+msgid "Web Aware"
+msgstr "ការ​យល់ដឹង​អំពី​បណ្ដាញ"
+
+msgid "Invisible"
+msgstr "មើល​មិន​ឃើញ"
+
+msgid "IP Address"
+msgstr "អាសយដ្ឋាន IP"
+
+msgid "Warning Level"
+msgstr "កម្រិត​ព្រមាន"
+
+msgid "Buddy Comment"
+msgstr "មតិយោបល់​មិត្តភក្ដិ"
+
+#, c-format
+msgid ""
+"Could not connect to authentication server:\n"
+"%s"
+msgstr ""
+"មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​បានទេ ៖\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not connect to BOS server:\n"
+"%s"
+msgstr ""
+"មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ BOS ៖\n"
+"%s"
+
+msgid "Username sent"
+msgstr "បានផ្ញើ​ឈ្មោះ​អ្នក​ប្រើ"
+
+msgid "Connection established, cookie sent"
+msgstr "បានបង្កើត​ការ​តភ្ជាប់ បានផ្ញើ​ខូគី"
+
+#. TODO: Don't call this with ssi
+msgid "Finalizing connection"
+msgstr "បញ្ចប់​ការ​តភ្ជាប់"
+
+#, c-format
+msgid ""
+"Unable to login: Could not sign on as %s because the username is invalid.  "
+"Usernames must be a valid email address, or start with a letter and contain "
+"only letters, numbers and spaces, or contain only numbers."
+msgstr ""
+"មិនអាច​ចូល​បានទេ ៖ មិនអាច​ចូល​ជា​ %s ពីព្រោះ​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ ។ អ្នក​ប្រើ​ត្រូវ​តែ​មានអាសយដ្ឋាន​"
+"អ៊ីមែល ឬ​ចាប់ផ្ដើម​ដោយ​អក្សរ និង​មានតែ​អក្សរ លេខ និង​ចន្លោះ ឬ​មាន​តែ​លេខ ។"
+
+#. Unregistered screen name
+#. uid is not exist
+msgid "Invalid username."
+msgstr "ឈ្មោះ​អ្នកប្រើ​មិន​ត្រឹមត្រូវ ។"
+
+msgid "Incorrect password."
+msgstr "ពាក្យ​សម្ងាត់​មិន​ត្រឹមត្រូវ ។"
+
+#. Suspended account
+msgid "Your account is currently suspended."
+msgstr "គណនី​របស់​អ្នក​បច្ចុប្បន្ន​ត្រូវ​បានផ្អាក ។"
+
+#. service temporarily unavailable
+msgid "The AOL Instant Messenger service is temporarily unavailable."
+msgstr "សេវា​កម្មវិធី​ផ្ញើសារបន្ទាន់ AOL បច្ចុប្បន្ន​ប្រើ​មិនបានទេ ។"
+
+#. screen name connecting too frequently
+#. IP address connecting too frequently
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+"អ្នក​កំពុង​ត្រូវ​បានតភ្ជាប់ និង​ផ្ដាច់​ញឹក​ញាប់​ណាស់ ។ រង់ចាំ​ដប់នាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។ ប្រសិនបើ​អ្នក​បន្ត​"
+"ដើម្បី​ព្យាយាម អ្នកនឹង​ត្រូវ​រង់ចាំ​យូរ​បន្តិច ។"
+
+#, c-format
+msgid "The client version you are using is too old. Please upgrade at %s"
+msgstr "កំណែ​ម៉ាស៊ីន​ភ្ញៀវ​ដែល​អ្នក​កំពុង​ប្រើ​ចាស់​ពេក ។ សូម​ធ្វើ​ឲ្យ​ប្រសើរ​នៅ %s"
+
+msgid "Could Not Connect"
+msgstr "មិនអាច​តភ្ជាប់​បានទេ"
+
+msgid "Received authorization"
+msgstr "បានទទួល​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "The SecurID key entered is invalid."
+msgstr "សោ SecurID ដែល​​បាន​បញ្ចូល​មិនត្រឹមត្រូវ ។"
+
+msgid "Enter SecurID"
+msgstr "បញ្ចូល SecurID"
+
+msgid "Enter the 6 digit number from the digital display."
+msgstr "បញ្ចូលលេខ ៦ តួលេខ​ពី​ការ​បង្ហាញឌីជីថល ។"
+
+#. *
+#. * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
+#.
+msgid "_OK"
+msgstr "យល់ព្រម"
+
+#, c-format
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr ""
+"អ្នក​អាច​ត្រូ​វបាន​ផ្ដាច់​ក្នុង​រយៈពេលបន្តិចទៀត​នេះ ។ ប្រសិនបើ​ដូច្នេះ​មែន ពិនិត្យ​មើល​ភាពទាន់សម័យ %s ។"
+
+msgid "Unable to get a valid AIM login hash."
+msgstr "មិនអាច​យក​សញ្ញា​ចូល AIM ត្រឹមត្រូវ​ទេ ។"
+
+#, c-format
+msgid "You may be disconnected shortly.  Check %s for updates."
+msgstr "អ្នក​អាច​ត្រូវ​បានផ្ដាច់​ក្នុង​រយៈពេល​បន្តិចទៀត​នេះ ។ ពិនិត្យ​មើលភាព​ទាន់សម័យ %s ។"
+
+msgid "Unable to get a valid login hash."
+msgstr "មិនអាច​យក​សញ្ញា​ចូល​ត្រឹមត្រូវ​បានទេ ។"
+
+msgid "Password sent"
+msgstr "បានផ្ញើ​ពាក្យ​​​សម្ងាត់"
+
+msgid "Unable to initialize connection"
+msgstr "មិនអាច​ចាប់ផ្ដើម​កា​រតភ្ជាប់​បានទេ"
+
+msgid "Please authorize me so I can add you to my buddy list."
+msgstr "សូម​អនុញ្ញាត​ខ្ញុំ ដូច្នេះ​ខ្ញុំ​អាច​បន្ថែម​អ្នក​នៅកាន់​បញ្ជី​មិត្តភក្ដិ​របស់​​ខ្ញុំ ។"
+
+msgid "Authorization Request Message:"
+msgstr "សារ​សំណើ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖"
+
+msgid "Please authorize me!"
+msgstr "សូម​អនុញ្ញាត​ខ្ញុំ !"
+
+msgid "No reason given."
+msgstr "គ្មាន​ហេតុផល​បានផ្ដល់ ។"
+
+msgid "Authorization Denied Message:"
+msgstr "សារ​បដិសេធ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ៖"
+
+#, c-format
+msgid ""
+"The user %u has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+"អ្នក​ប្រើ %u បានបដិសេធ​សំណើ​របស់​អ្នក ក្នុងការ​បន្ថែម​ពួកគេ​ទៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ដោយ​សារ​មាន​ហេតុផល​"
+"ដូច​ខាងក្រោម ៖\n"
+"%s"
+
+msgid "ICQ authorization denied."
+msgstr "បានបដិសេធ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ICQ ។"
+
+#. Someone has granted you authorization
+#, c-format
+msgid "The user %u has granted your request to add them to your buddy list."
+msgstr "អ្នក​ប្រើ %u បានផ្ដល់​សំណើ​របស់​អ្នក​ ដើម្បី​បន្ថែម​ពួកគេ​ទៅ​កាន់​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។"
+
+#, c-format
+msgid ""
+"You have received a special message\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+"អ្នក​បាន​ទទួល​សារ​ពិសេស\n"
+"\n"
+"ពី ៖ %s [%s]\n"
+"%s"
+
+#, c-format
+msgid ""
+"You have received an ICQ page\n"
+"\n"
+"From: %s [%s]\n"
+"%s"
+msgstr ""
+"អ្នក​បាន​ទទួល​ទំព័រ ICQ\n"
+"\n"
+"ពី ៖ %s [%s]\n"
+"%s"
+
+#, c-format
+msgid ""
+"You have received an ICQ email from %s [%s]\n"
+"\n"
+"Message is:\n"
+"%s"
+msgstr ""
+"អ្នក​បាន​ទទួល​អ៊ីមែល ICQ ពី %s [%s]\n"
+"\n"
+"សារគឺ ៖\n"
+"%s"
+
+#, c-format
+msgid "ICQ user %u has sent you a buddy: %s (%s)"
+msgstr "អ្នក​ប្រើ ICQ %u បានផ្ញើ​ឲ្យ​អ្នក​នូវ​មិត្តភក្ដិ ៖ %s (%s)"
+
+msgid "Do you want to add this buddy to your buddy list?"
+msgstr "តើ​អ្នក​ចង់​ប​ន្ថែម​មិត្តភក្ដិ​នេះ​ទៅ​កាន់​បញ្ជីមិត្តភក្តិ​របស់​អ្នក​ដែរឬទេ ?"
+
+msgid "_Add"
+msgstr "បន្ថែម"
+
+msgid "_Decline"
+msgstr "បដិ​សេធ"
+
+#, c-format
+msgid "You missed %hu message from %s because it was invalid."
+msgid_plural "You missed %hu messages from %s because they were invalid."
+msgstr[0] "អ្នកបាត់សារ %hu ពី %s ដោយ​សារ​តែ​ពួកវា​មិន​ត្រឹមត្រូវ ។"
+
+#, c-format
+msgid "You missed %hu message from %s because it was too large."
+msgid_plural "You missed %hu messages from %s because they were too large."
+msgstr[0] "អ្នកបាត់សារ %hu ពី %s ពីព្រោះ​វា​ធំពេក ។"
+
+#, c-format
+msgid ""
+"You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural ""
+"You missed %hu messages from %s because the rate limit has been exceeded."
+msgstr[0] "អ្នក​បាត់សារ %hu ពី %s ដោយសារ​តែ​លើស​ដែន​កំណត់​អត្រា ។"
+
+#, c-format
+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] "អ្នកបាត់សារ %hu ពី %s ដោយ​សារ​តែ​កម្រិត​ព្រមានរបស់​គាត់​ខ្ពស់​ពេក ។"
+
+#, 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] "អ្នកបាត់​សារ %hu ពី %s ដោយសារ​តែ​កម្រិត​ព្រមាន​របស់​អ្នក​ខ្ពស់​ពេក ។"
+
+#, c-format
+msgid "You missed %hu message from %s for an unknown reason."
+msgid_plural "You missed %hu messages from %s for an unknown reason."
+msgstr[0] "អ្នកបាត់​សារ %hu ពី %s ដោយសារ​ហេតុផល​ដែល​មិនស្គាល់ ។"
+
+#. Data is assumed to be the destination sn
+#, c-format
+msgid "Unable to send message: %s"
+msgstr "មិនអាច​ផ្ញើ​សារ ៖ %s"
+
+msgid "Unknown reason."
+msgstr "មិន​ស្គាល់​ហេតុផល ។"
+
+#, c-format
+msgid "Unable to send message to %s:"
+msgstr "មិនអាច​ផ្ញើសារ​ទៅ​កាន់ %s បានទេ ៖"
+
+#, c-format
+msgid "User information not available: %s"
+msgstr "មិនមាន​ព័ត៌មាន​អ្នក​ប្រើ​ ៖ %s"
+
+msgid "Online Since"
+msgstr "លើ​បណ្ដាញ​តាំងពី"
+
+msgid "Member Since"
+msgstr "សមាជិក​តាំង​ពី"
+
+msgid "Profile"
+msgstr "ទម្រង់"
+
+msgid "Your AIM connection may be lost."
+msgstr "កា​រតភ្ជាប់ AIM របស់​អ្នក​អាច​បាត់បង់ ។"
+
+#. The conversion failed!
+msgid ""
+"[Unable to display a message from this user because it contained invalid "
+"characters.]"
+msgstr "[មិនអាច​បង្ហាញ​សារ​ពី​អ្នក​ប្រើ​នេះ​បានទេ ពីព្រោះ​វា​មាន​តួអក្សរ​មិន​ត្រឹមត្រូវ ។]"
+
+msgid ""
+"The last action you attempted could not be performed because you are over "
+"the rate limit. Please wait 10 seconds and try again."
+msgstr ""
+"សកម្មភាព​ចុងក្រោយ​ដែល​អ្នកប៉ុនប៉ង​មិនអាច​ត្រូវ​បានអនុវត្ត​បានទេ ពីព្រោះ​អ្នក​លើស​អត្រា​ដែន​កំណត់ ។ សូម​រង់ចាំ​ "
+"១០ វិនាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+#, c-format
+msgid "You have been disconnected from chat room %s."
+msgstr "អ្នក​ត្រូវ​បានផ្ដាច់​ចេញ​ពី​បន្ទប់​ជជែក %s ។"
+
+msgid "Mobile Phone"
+msgstr "ទូរស័ព្ទ​​ចល័ត"
+
+msgid "Personal Web Page"
+msgstr "ទំព័រ​បណ្ដាញ​ផ្ទាល់ខ្លួន"
+
+#. aim_userinfo_t
+#. strip_html_tags
+msgid "Additional Information"
+msgstr "ព័ត៌មាន​បន្ថែម"
+
+msgid "Zip Code"
+msgstr "លេខ​តំបន់"
+
+msgid "Work Information"
+msgstr "ព័ត៌មាន​ការងារ"
+
+msgid "Division"
+msgstr "វិធី​ចែក"
+
+msgid "Position"
+msgstr "ទីតាំង​"
+
+msgid "Web Page"
+msgstr "ទំព័រ​បណ្តាញ"
+
+msgid "Pop-Up Message"
+msgstr "សារ​លេច​ឡើង"
+
+#, c-format
+msgid "The following username is associated with %s"
+msgid_plural "The following usernames are associated with %s"
+msgstr[0] "ឈ្មោះ​អ្នកប្រើ​ដូច​ខាងក្រោម​ត្រូវ​បានភ្ជាប់​ជា​មួយ %s"
+
+#, c-format
+msgid "No results found for email address %s"
+msgstr "រក​មិនឃើញ​លទ្ធផល​សម្រាប់​អាសយដ្ឋាន​អ៊ីមែល %s"
+
+#, c-format
+msgid "You should receive an email asking to confirm %s."
+msgstr "អ្នក​គួរ​ទទួល​អ៊ីមែល​មួយ ដោយ​សួរ​ឲ្យ​អះអាង %s ។"
+
+msgid "Account Confirmation Requested"
+msgstr "បាន​ស្នើ​ការ​អះអាង​របស់គណនី"
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name differs "
+"from the original."
+msgstr "កំហុស 0x%04x ៖ មិនអាច​ធ្វើ​ទ្រង់ទ្រាយ​ឈ្មោះអ្នកប្រើបានទេ ពីព្រោះ​ឈ្មោះ​ខុស​ពី​ឈ្មោះ​ដើម ។"
+
+#, c-format
+msgid "Error 0x%04x: Unable to format username because it is invalid."
+msgstr "កំហុស 0x%04x ៖ មិនអាច​ធ្វើ​ទ្រង់ទ្រាយ​ឈ្មោះ​អ្នកប្រើ​បានទេ ពីព្រោះ​វា​មិនត្រឹមត្រូវ ។"
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name is too "
+"long."
+msgstr "កំហុស 0x%04x ៖ មិនអាច​ធ្វើ​ទ្រង់ទ្រាយ​ឈ្មោះអ្នកប្រើ​បានទេ ពីព្រោះ​ឈ្មោះ​ដែល​បាន​ស្នើ​វែង​ពេក ។"
+
+#, c-format
+msgid ""
+"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 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 email address because the given address is "
+"invalid."
+msgstr ""
+"កំហុស 0x%04x ៖ មិន​អាច​ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​អ៊ីមែល​បានទេ ពីព្រោះ​អាសយដ្ឋាន​ដែល​បានផ្ដល់​មិន​ត្រឹមត្រូវ​ទេ ។"
+
+#, c-format
+msgid "Error 0x%04x: Unknown error."
+msgstr "កំហុស 0x%04x ៖ មិនស្គាល់​កំហុស ។"
+
+msgid "Error Changing Account Info"
+msgstr "កំហុស​ក្នុងកា​រផ្លាស់ប្ដូរ​ព័ត៌មាន​របស់​គណនី"
+
+#, c-format
+msgid "The email address for %s is %s"
+msgstr "អាសយដ្ឋាន​អ៊ីមែល​សម្រាប់ %s គឺ %s"
+
+msgid "Account Info"
+msgstr "ព័ត៌មាន​គណនី"
+
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr "មិនបានផ្ញើ​រូបភាព IM របស់​ទេ ។ អ្នក​ត្រូវតែ​បានតភ្ជាប់​ដោយ​ផ្ទាល់ ដើម្បី​ផ្ញើ​រូបភាព IM ។"
+
+msgid "Unable to set AIM profile."
+msgstr "មិនអាច​កំណត់​ទម្រង់ AIM ទេ ។"
+
+msgid ""
+"You have probably requested to set your profile before the login procedure "
+"completed.  Your profile remains unset; try setting it again when you are "
+"fully connected."
+msgstr ""
+"អ្នកប្រហែលជា​បាន​ស្នើ​ ឲ្យ​កំណត់​ទម្រង់​របស់​អ្នកមុននឹង​បញ្ចប់នីតិវិធី​បញ្ចូល ។ ទម្រង់​របស់​អ្នក​នៅតែ​មិនបាន​កំណត់ "
+"ព្យាយាម​កំណត់​វា​ម្ដង​ទៀត នៅពេល​ដែល​អ្នក​បានតភ្ជាប់ពេញលេញ ។"
+
+#, c-format
+msgid ""
+"The maximum profile length of %d byte has been exceeded.  It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum profile length of %d bytes has been exceeded.  It has been "
+"truncated for you."
+msgstr[0] "ប្រវែង​ទម្រង់​អតិបរមានៃ %d បៃ​បានលើស​ដែនកំណត់​ហើយ ។ វា​ត្រូវ​បានកាត់​ឲ្យ​ខ្លី​សម្រាប់​អ្នក ។"
+
+msgid "Profile too long."
+msgstr "ទម្រង់​វែង​ពេក ។"
+
+#, c-format
+msgid ""
+"The maximum away message length of %d byte has been exceeded.  It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum away message length of %d bytes has been exceeded.  It has been "
+"truncated for you."
+msgstr[0] ""
+"សារ​ចាកឆ្ងាយ​អតិបរមា​ប្រវែង %d បៃ បានលើស​កំណត់​ហើយ ។ វា​ត្រូវ​បាន​កាត់​ឲ្យ​ខ្លី​សម្រាប់​អ្នក ។"
+
+msgid "Away message too long."
+msgstr "សារ​ចាកឆ្ងាយ​វែង​ពេក ។"
+
+#, c-format
+msgid ""
+"Could not add the buddy %s because the username is invalid.  Usernames must "
+"be a valid email address, or start with a letter and contain only letters, "
+"numbers and spaces, or contain only numbers."
+msgstr ""
+"មិនអាច​បន្ថែម​មិត្តភក្ដិ %s បាន​ទេ ពីព្រោះ​ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ ។ ឈ្មោះ​អ្នកប្រើ​ត្រូវ​តែ​ជា​"
+"អាសយដ្ឋានអ៊ីមែល​ត្រឹមត្រូវ ឬ​ចាប់ផ្ដើម​ដោយ​អក្សរ ហើយមាន​តែ​អក្សរ លេខ និង​ចន្លោះ ឬ​មាន​តែ​លេខ ។"
+
+msgid "Unable to Add"
+msgstr "មិនអាច​បន្ថែម"
+
+msgid "Unable to Retrieve Buddy List"
+msgstr "មិនអាច​ទៅ​យក​បញ្ជីមិត្តភ្ដិ​បានទេ"
+
+msgid ""
+"The AIM servers were temporarily unable to send your buddy list.  Your buddy "
+"list is not lost, and will probably become available in a few minutes."
+msgstr ""
+"ម៉ាស៊ីនបម្រើ AIM មិនអាច​ផ្ញើ​ជា​បណ្ដោះអាសន្ន​ទៅ​កាន់​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។ បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក​មិន​បាត់​"
+"បង់​ទេ ហើយ​​ប្រហែលជា​នឹង​អាច​ប្រើ​ក្នុង​រយៈ​ពីរ បី​នាទី ។"
+
+msgid "Orphans"
+msgstr "កំព្រា"
+
+#, c-format
+msgid ""
+"Could not add the buddy %s because you have too many buddies in your buddy "
+"list.  Please remove one and try again."
+msgstr ""
+"មិនអាច​បន្ថែម​មិត្តភក្ដិ %s បាន​ទេ ពីព្រោះ​អ្នក​មាន​មិត្តភក្ដិជា​ច្រើន​នៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។ សូមយក​​"
+"ចេញ​មួយ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+msgid "(no name)"
+msgstr "(គ្មាន​ឈ្មោះ)"
+
+#, c-format
+msgid "Could not add the buddy %s for an unknown reason."
+msgstr "មិនអាច​បន្ថែម​មិត្តភក្ដិ %s បាន​ទេ ដោយ​សារ​មិន​ស្គាល់​ហេតុផល ។"
+
+#, c-format
+msgid ""
+"The user %s has given you permission to add him or her to your buddy list.  "
+"Do you want to add this user?"
+msgstr ""
+"អ្នក​ប្រើ %s បានផ្ដល់​សិទ្ធិ​ដើម្បី​បន្ថែម​គាត់​ទៅកាន់​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។ តើអ្នក​ចង់​បន្ថែម​អ្នកប្រើនេះ​"
+"ដែរឬទេ ?"
+
+msgid "Authorization Given"
+msgstr "បានផ្ដល់កា​រផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#. Granted
+#, c-format
+msgid "The user %s has granted your request to add them to your buddy list."
+msgstr "អ្នកប្រើ %s បានផ្ដល់​សំណើ​របស់​អ្នក ដើម្បីបន្ថែម​ពួកគេ​ទៅ​កាន់បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Authorization Granted"
+msgstr "បាន​ផ្ដល់​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#. Denied
+#, c-format
+msgid ""
+"The user %s has denied your request to add them to your buddy list for the "
+"following reason:\n"
+"%s"
+msgstr ""
+"អ្នកប្រើ %s បានបដិសេធ​សំណើ​របស់​អ្នក ដើម្បីបន្ថែម​ពួកគេ​ទៅក្នុង​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ដោយ​សារ​តែ​មាន​ហេតុផល​"
+"ដូច​ខាងក្រោម ៖\n"
+"%s"
+
+msgid "Authorization Denied"
+msgstr "បានបដិសេធ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "_Exchange:"
+msgstr "ផ្លាស់ប្ដូរ ៖"
+
+msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
+msgstr ""
+"រូបភាព IM របស់​អ្នក​មិន​ត្រូវ​បាន​ផ្ញើ​ទេ ។ អ្នកមិនអាច​ផ្ញើ​រូបភាព IM នៅ​ក្នុងការ​ជជែក​របស់ AIM បាន​ទេ "
+"។"
+
+msgid "iTunes Music Store Link"
+msgstr "តំណ​ផ្ទុក​តន្ត្រី​របស់ iTunes"
+
+#, c-format
+msgid "Buddy Comment for %s"
+msgstr "មតិយោបល់​របស់មិត្តភក្ដិ​សម្រាប់ %s"
+
+msgid "Buddy Comment:"
+msgstr "មតិយោបល់របស់មិត្តភក្ដិ ៖"
+
+#, c-format
+msgid "You have selected to open a Direct IM connection with %s."
+msgstr "អ្នកបាន​ជ្រើស​ដើម្បីបើក​ការ​តភ្ជាប់ IM ដោយ​ផ្ទាល់ជា​មួយ %s ។"
+
+msgid ""
+"Because this reveals your IP address, it may be considered a security risk.  "
+"Do you wish to continue?"
+msgstr ""
+"ពីព្រោះ​វា​ដឹង​អាសយដ្ឋាន IP របស់​អ្នក វា​អាច​ត្រូវ​បាន​​ចាត់​ទុកថា​មានគ្រោះថ្នាក់ ។ តើអ្នក​ចង់​បន្ត​"
+"ដែរឬទេ ?"
+
+msgid "C_onnect"
+msgstr "តភ្ជាប់"
+
+msgid "Get AIM Info"
+msgstr "យក​ព័ត៌មាន​របស់ AIM"
+
+#. We only do this if the user is in our buddy list
+msgid "Edit Buddy Comment"
+msgstr "កែសម្រួល​មតិយោបល់​របស់​មិត្តភក្ដិ"
+
+msgid "Get Status Msg"
+msgstr "យក​ស្ថានភាព​កម្មវិធី​ផ្ញើសារ"
+
+msgid "Direct IM"
+msgstr "IM ផ្ទាល់"
+
+msgid "Re-request Authorization"
+msgstr "ស្នើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ"
+
+msgid "Require authorization"
+msgstr "តម្រូវ​ឲ្យ​មានការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Web aware (enabling this will cause you to receive SPAM!)"
+msgstr "ការ​យល់​ដឹង​អំពីបណ្ដាញ (ការ​បើកវា​នឹង​​ធ្វើ​ឲ្យ​អ្នក​ទទួល​ SPAM!)"
+
+msgid "ICQ Privacy Options"
+msgstr "ជម្រើស​ឯកជន​របស់ ICQ"
+
+msgid "The new formatting is invalid."
+msgstr "កា​រធ្វើ​ទ្រង់ទ្រាយ​ថ្មី​មិន​ត្រឹមត្រូវ​ទេ ។"
+
+msgid "Username formatting can change only capitalization and whitespace."
+msgstr "កា​រធ្វើ​ទ្រង់ទ្រាយឈ្មោះ​អ្នកប្រើ​អាច​ផ្លាស់ប្ដូរ​តែ​​ក្នុង​ករណី​មានអក្សរ​ធំ និង​ចន្លោះមិនឃើញ ។"
+
+msgid "Change Address To:"
+msgstr "ផ្លាស់ប្ដូរ​អាសយដ្ឋាន​ ជូន​ចំពោះ ៖"
+
+msgid "<i>you are not waiting for authorization</i>"
+msgstr "<i>អ្នកមិនកំពុង​រង់ចាំ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ទេ</i>"
+
+msgid "You are awaiting authorization from the following buddies"
+msgstr "អ្នកកំពុង​រង់ចាំ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ពី​មិត្តភក្ដិ​ដូច​ខាង​ក្រោម"
+
+msgid ""
+"You can re-request authorization from these buddies by right-clicking on "
+"them and selecting \"Re-request Authorization.\""
+msgstr ""
+"អ្នក​អាច​ស្នើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ​ពី​មិត្តភក្ដិ​ទាំង​នេះ ដោយ​ចុច​កណ្ដុរ​ស្ដាំ​លើ​ពួកវា ហើយជ្រើស "
+"\"ស្នើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ឡើង​វិញ ។\""
+
+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"
+msgstr "ស្វែងរក"
+
+msgid "Set User Info (web)..."
+msgstr "កំណត់​ព័ត៌មាន​របស់​អ្នកប្រើ (បណ្ដាញ)..."
+
+msgid "Change Password (web)"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់ (បណ្ដាញ)"
+
+msgid "Configure IM Forwarding (web)"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​ការ​បញ្ជូន IM បន្ត (បណ្ដាញ)"
+
+#. ICQ actions
+msgid "Set Privacy Options..."
+msgstr "កំណត់​ជម្រើស​ឯកជន..."
+
+#. AIM actions
+msgid "Confirm Account"
+msgstr "អះអាង​គណនី"
+
+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 Email Address..."
+msgstr "ស្វែងរក​មិត្តភក្ដិ​តាម​អាសយដ្ឋាន​អ៊ីមែល..."
+
+msgid "Search for Buddy by Information"
+msgstr "ស្វែងរក​មិត្តភក្ដិ​តាម​ព័ត៌មាន"
+
+msgid ""
+"Always use AIM/ICQ proxy server for\n"
+"file transfers and direct IM (slower,\n"
+"but does not reveal your IP address)"
+msgstr ""
+"ប្រើ​ម៉ាស៊ីនបម្រើ​ប្រូកស៊ី AIM/ICQ ជា​និច្ច​សម្រាប់​ការ​ផ្ទេរ​ឯកសារ និង IM ផ្ទាល់ (យឺត ប៉ុន្តែ​មិន​ដឹង​"
+"អាសយដ្ឋាន​ IP របស់​អ្នក​ទេ)"
+
+msgid "Allow multiple simultaneous logins"
+msgstr "អនុញ្ញាត​ការ​ចូល​ច្រើន​នាក់​ដំណាល​គ្នា"
+
+#, c-format
+msgid "Asking %s to connect to us at %s:%hu for Direct IM."
+msgstr "ស្នើ %s ឲ្យ​តភ្ជាប់​មក​យើង​នៅ %s:%hu សម្រាប់ IM ដោយ​ផ្ទាល់ ។"
+
+#, c-format
+msgid "Attempting to connect to %s:%hu."
+msgstr "ប៉ុនប៉ង​តភ្ជាប់​ទៅ​កាន់ %s:%hu ។"
+
+msgid "Attempting to connect via proxy server."
+msgstr "ប៉ុនប៉ង​តភ្ជាប់​តាមរយៈ​ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី ។"
+
+#, c-format
+msgid "%s has just asked to directly connect to %s"
+msgstr "%s ទើប​តែ​បានសួរ​ដើម្បីតភ្ជាប់​ដោយ​ផ្ទាល់ទៅ %s"
+
+msgid ""
+"This requires a direct connection between the two computers and is necessary "
+"for IM Images.  Because your IP address will be revealed, this may be "
+"considered a privacy risk."
+msgstr ""
+"វា​ត្រូវការ​ការ​តភ្ជាប់​ដោយ​ផ្ទាល់​រវាង​កុំព្យូទ័រ​ពីរ ហើយ​ចាំបាច់​សម្រាប់​រូបភាព IM ។ ពីព្រោះ​អាសយដ្ឋាន IP "
+"របស់​អ្នក​នឹង​ត្រូវ​បានដឹង វា​អាច​ចាត់​ទុក​ថា​គ្រោះថ្នាក់ ។"
+
+msgid "Aquarius"
+msgstr "Aquarius"
+
+msgid "Pisces"
+msgstr "Pisces"
+
+msgid "Aries"
+msgstr "Aries"
+
+msgid "Taurus"
+msgstr "Taurus"
+
+msgid "Gemini"
+msgstr "Gemini"
+
+msgid "Cancer"
+msgstr "មហារីក"
+
+msgid "Leo"
+msgstr "Leo"
+
+msgid "Virgo"
+msgstr "Virgo"
+
+msgid "Libra"
+msgstr "Libra"
+
+msgid "Scorpio"
+msgstr "Scorpio"
+
+msgid "Sagittarius"
+msgstr "Sagittarius"
+
+msgid "Capricorn"
+msgstr "Capricorn"
+
+msgid "Rat"
+msgstr "កណ្ដុរ"
+
+msgid "Ox"
+msgstr "គោ"
+
+msgid "Tiger"
+msgstr "ខ្លា"
+
+msgid "Rabbit"
+msgstr "ទន្សាយ"
+
+msgid "Dragon"
+msgstr "នាគ"
+
+msgid "Snake"
+msgstr "ពស់"
+
+msgid "Horse"
+msgstr "សេះ"
+
+msgid "Goat"
+msgstr "ពពែ"
+
+msgid "Monkey"
+msgstr "ស្វា"
+
+msgid "Rooster"
+msgstr "មាន់​គក"
+
+msgid "Dog"
+msgstr "ឆ្កែ"
+
+msgid "Pig"
+msgstr "ជ្រូក"
+
+msgid "Other"
+msgstr "ផ្សេងៗទៀត"
+
+msgid "Visible"
+msgstr "​មើលឃើញ"
+
+msgid "Friend Only"
+msgstr "តែមិត្តភក្ដិ"
+
+msgid "Private"
+msgstr "ឯកជន"
+
+msgid "QQ Number"
+msgstr "ចំនួន QQ"
+
+msgid "Country/Region"
+msgstr "ប្រទេស​/​តំបន់"
+
+msgid "Province/State"
+msgstr "ខេត្ត/រដ្ឋ"
+
+msgid "Zipcode"
+msgstr "កូដ​តំបន់"
+
+msgid "Phone Number"
+msgstr "លេខ​ទូរស័ព្ទ"
+
+msgid "Authorize adding"
+msgstr "ផ្ទៀងផ្ទាត់​ការ​បន្ថែម"
+
+msgid "Cellphone Number"
+msgstr "លេខ​ទូរស័ព្ទ​ចល័ត"
+
+msgid "Personal Introduction"
+msgstr "សេចក្ដី​ណែនាំ​ផ្ទាល់ខ្លួន"
+
+msgid "City/Area"
+msgstr "ទីក្រុង​/តំបន់"
+
+msgid "Publish Mobile"
+msgstr "បោះពុម្ព​ចល័ត"
+
+msgid "Publish Contact"
+msgstr "បោះពុម្ព​ផ្សាយ​ទំនាក់"
+
+msgid "College"
+msgstr "មហាវិទ្យាល័យ"
+
+msgid "Horoscope"
+msgstr "ផែនចក្ររាសី"
+
+msgid "Zodiac"
+msgstr "រាសីចក្រ"
+
+msgid "Blood"
+msgstr "ឈាម"
+
+msgid "True"
+msgstr "ពិត"
+
+msgid "False"
+msgstr "មិន​ពិត"
+
+msgid "Modify Contact"
+msgstr "កែប្រែ​ទំនាក់ទំនង"
+
+msgid "Modify Address"
+msgstr "កែប្រែ​អាសយដ្ឋាន"
+
+msgid "Modify Extended Information"
+msgstr "កែប្រែ​ព័ត៌មាន​ដែល​បា​នពង្រីក"
+
+msgid "Modify Information"
+msgstr "កែប្រែ​ព័ត៌មាន"
+
+msgid "Update"
+msgstr "ធ្វើ​​ឲ្យ​​ទាន់សម័យ\t"
+
+msgid "Could not change buddy information."
+msgstr "មិនអាច​ផ្លាស់ប្ដូរ​ព័ត៌មាន​មិត្តភក្ដិ​បានទេ ។"
+
+#, c-format
+msgid "%u requires verification"
+msgstr "%u ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Add buddy question"
+msgstr "បន្ថែម​សំណួរ​មិត្តភក្ដិ"
+
+msgid "Enter answer here"
+msgstr "បញ្ចូល​ចម្លើយ​នៅ​ទីនេះ"
+
+msgid "Send"
+msgstr "ផ្ញើ"
+
+msgid "Invalid answer."
+msgstr "ចម្លើយ​មិន​ត្រឹមត្រូវ ។"
+
+msgid "Authorization denied message:"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​បានបដិសេធ​សារ ៖"
+
+msgid "Sorry, you're not my style."
+msgstr "សូម​អភ័យទោស អ្នក​មិនមែន​ជា​រចនាប័ទ្ម​របស់​ខ្ញុំ​ទេ ។"
+
+#, c-format
+msgid "%u needs authorization"
+msgstr "%u ត្រូវការ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Add buddy authorize"
+msgstr "បន្ថែម​ការ​ផ្ទៀងផ្ទាត់​មិត្តភក្ដិ"
+
+msgid "Enter request here"
+msgstr "បញ្ចូល​សំណើ​នៅ​ទីនេះ"
+
+msgid "Would you be my friend?"
+msgstr "តើអ្នក​នឹង​ជា​មិត្តភក្ដិ​របស់​ខ្ញុំ ?"
+
+msgid "QQ Buddy"
+msgstr "មិត្តភក្ដិ QQ"
+
+msgid "Add buddy"
+msgstr "បន្ថែម​មិត្តភក្ដិ"
+
+msgid "Invalid QQ Number"
+msgstr "ចំនួន QQ មិន​ត្រឹមត្រូវ"
+
+msgid "Failed sending authorize"
+msgstr "បានបរាជ័យ​​ក្នុងការ​ផ្ញើ​ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Failed removing buddy %u"
+msgstr "បាន​បរាជ័យ​ក្នុងកា​រយក​មិត្តភក្ដិ​ %u ចេញ"
+
+#, c-format
+msgid "Failed removing me from %d's buddy list"
+msgstr "បានបរាជ័យ​ក្នុងការ​យក​ខ្ញុំ​ចេញ​ពី​បញ្ជីមិត្តភក្ដិ​របស់ %d"
+
+msgid "No reason given"
+msgstr "គ្មាន​ហេតុផល​បាន​ផ្ដល់"
+
+#. only need to get value
+#, c-format
+msgid "You have been added by %s"
+msgstr "អ្នក​ត្រូវ​បាន​បន្ថែម​ដោយ %s"
+
+msgid "Would you like to add him?"
+msgstr "តើ​អ្នក​ចង់​បន្ថែម​គាត់​ទេ ?"
+
+#, c-format
+msgid "Rejected by %s"
+msgstr "បាន​ច្រាន​ចេញ​ដោយ %s"
+
+#, c-format
+msgid "Message: %s"
+msgstr "សារ ៖ %s"
+
+msgid "ID: "
+msgstr "លេខ​សម្គាល់ ៖"
+
+msgid "Group ID"
+msgstr "លេខ​សម្គាល់ក្រុម"
+
+msgid "QQ Qun"
+msgstr "QQ Qun"
+
+msgid "Please enter Qun number"
+msgstr "សូម​បញ្ចូល​លេខ Qun"
+
+msgid "You can only search for permanent Qun\n"
+msgstr "អ្នក​អាច​ស្វែងរក​សម្រាប់តែ​ Qun អចិន្ត្រៃយ៍​ប៉ុណ្ណោះ\n"
+
+msgid "(Invalid UTF-8 string)"
+msgstr "(ខ្សែអក្សរ UTF-8 មិន​ត្រឹមត្រូវ)"
+
+msgid "Not member"
+msgstr "មិន​ចងចាំ"
+
+msgid "Member"
+msgstr "ចងចាំ"
+
+msgid "Requesting"
+msgstr "សំណើ"
+
+msgid "Admin"
+msgstr "គ្រប់គ្រង"
+
+msgid "Notice"
+msgstr "ចំណាំ"
+
+msgid "Detail"
+msgstr "សេចក្ដី​លម្អិត"
+
+msgid "Creator"
+msgstr "អ្នកបង្កើត"
+
+msgid "About me"
+msgstr "អំពី​ខ្ញុំ"
+
+msgid "Category"
+msgstr "ប្រភេទ"
+
+msgid "The Qun does not allow others to join"
+msgstr "Qun មិនអនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​ចូលរួម"
+
+msgid "Join QQ Qun"
+msgstr "ចូលរួម QQ Qun"
+
+msgid "Input request here"
+msgstr "បញ្ចូល​សំណើ​នៅ​ទីនេះ"
+
+#, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "បាន​ចូលដោយ​ជោគជ័យ Qun %s (%u)"
+
+msgid "Successfully joined Qun"
+msgstr "បានចូល​ដោយ​ជោគជ័យ Qun"
+
+#, c-format
+msgid "Qun %u denied from joining"
+msgstr "Qun %u បាន​បដិសេធ​ពី​ការ​ចូលរួម"
+
+msgid "QQ Qun Operation"
+msgstr "ប្រតិបត្តិការ QQ Qun"
+
+msgid "Failed:"
+msgstr "បាន​បរាជ័យ ៖"
+
+msgid "Join Qun, Unknown Reply"
+msgstr "ចូលរួម Qun មិន​ស្គាល់ការ​ឆ្លើយតប"
+
+msgid "Quit Qun"
+msgstr "ចេញពី Qun"
+
+msgid ""
+"Note, if you are the creator, \n"
+"this operation will eventually remove this Qun."
+msgstr "ចំណាំ ប្រសិនបើ​អ្នក​ជា​អ្នកបង្កើត ប្រតិបត្តិការ​នេះ​នឹង​យក Qun នេះ​ចេញ​ ។"
+
+msgid "Sorry, you are not our style"
+msgstr "សូម​អភ័យ​ទោស អ្នក​មិន​ស្ថិត​នៅ​ក្នុងរចនាប័ទ្ម​របស់​យើង​ទេ"
+
+msgid "Successfully changed Qun members"
+msgstr "បានផ្លាស់ប្ដូរ​សមាជិក Qun ដោយ​ជោគជ័យ"
+
+msgid "Successfully changed Qun information"
+msgstr "បាន​ផ្លាស់ប្ដូរ​ព័ត៌មាន Qun ដោយ​ជោគជ័យ"
+
+msgid "You have successfully created a Qun"
+msgstr "អ្នកបានបង្កើត Qun ដោយ​ជោគជ័យ"
+
+msgid "Would you like to set up detailed information now?"
+msgstr "តើអ្នក​ចង់​រៀបចំ​ព័ត៌មានលម្អិត​ឥឡូវ​ដែរឬទេ ?"
+
+msgid "Setup"
+msgstr "រៀបចំ"
+
+#, c-format
+msgid "%u requested to join Qun %u for %s"
+msgstr "%u បានស្នើ​ឲ្យ​ចូលរួម Qun %u សម្រាប់ %s"
+
+#, c-format
+msgid "%u request to join Qun %u"
+msgstr "%u ស្នើ​ឲ្យ​ចូលរួម Qun %u"
+
+#, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ចូលរួម Qun %u បាន​ប្រតិបត្តិ​ដោយ​អ្នក​គ្រប់គ្រង %u"
+
+#, c-format
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
+msgstr "<b>ចូលរួម Qun %u ត្រូវ​បាន​អនុម័ត​ដោយ​អ្នក​គ្រប់គ្រង %u សម្រាប់ %s</b>"
+
+#, c-format
+msgid "<b>Removed buddy %u.</b>"
+msgstr "<b>បាន​យក​មិត្តភក្ដិ %u ចេញ ។</b>"
+
+#, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "<b>បាន​ចូល​រួម​មិត្តភក្ដិ​ថ្មី %u ។</b>"
+
+#, c-format
+msgid "Unknown-%d"
+msgstr "មិនស្គាល់ %d"
+
+msgid "Level"
+msgstr "កម្រិត"
+
+msgid " VIP"
+msgstr " VIP"
+
+msgid " TCP"
+msgstr " TCP"
+
+msgid " FromMobile"
+msgstr " FromMobile"
+
+msgid " BindMobile"
+msgstr " BindMobile"
+
+msgid " Video"
+msgstr " វីដែអូ"
+
+msgid " Zone"
+msgstr " តំបន់"
+
+msgid "Flag"
+msgstr "ទង់"
+
+msgid "Ver"
+msgstr "កំណែ"
+
+msgid "Invalid name"
+msgstr "ឈ្មោះ​មិន​ត្រឹមត្រូវ"
+
+msgid "Select icon..."
+msgstr "ជ្រើស​រូបតំណាង..."
+
+#, c-format
+msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>ពេលវេលា​ចូល</b> ៖ %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
+msgid "<b>Total Online Buddies</b>: %d<br>\n"
+msgstr "<b>មិត្តភក្ដិ​លើ​បណ្ដាញ​សរុប</b> ៖ %d<br>\n"
+
+#, c-format
+msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>ធ្វើ​ឲ្យ​ស្រស់​ចុងក្រោយ</b> ៖ %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
+msgid "<b>Server</b>: %s<br>\n"
+msgstr "<b>ម៉ាស៊ីន​បម្រើ</b> ៖ %s<br>\n"
+
+#, c-format
+msgid "<b>Client Tag</b>: %s<br>\n"
+msgstr "<b>ទង់​ម៉ាស៊ីន​ភ្ញៀវ</b> ៖ %s<br>\n"
+
+#, c-format
+msgid "<b>Connection Mode</b>: %s<br>\n"
+msgstr "<b>របៀប​តភ្ជាប់</b> ៖ %s<br>\n"
+
+#, c-format
+msgid "<b>My Internet IP</b>: %s:%d<br>\n"
+msgstr "<b>IP អ៊ីនធឺណិត​របស់​ខ្ញុំ</b> ៖ %s:%d<br>\n"
+
+#, c-format
+msgid "<b>Sent</b>: %lu<br>\n"
+msgstr "<b>បានផ្ញើ</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Resend</b>: %lu<br>\n"
+msgstr "<b>ផ្ញើ​ឡើង​វិញ</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Lost</b>: %lu<br>\n"
+msgstr "<b>បាត់បង់</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Received</b>: %lu<br>\n"
+msgstr "<b>បាន​ទទួល</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Received Duplicate</b>: %lu<br>\n"
+msgstr "<b>បាន​ស្ទួន</b> ៖ %lu<br>\n"
+
+#, c-format
+msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
+msgstr "<b>ពេលវេលា</b> ៖ %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
+msgid "<b>IP</b>: %s<br>\n"
+msgstr "<b>IP</b> ៖ %s<br>\n"
+
+msgid "Login Information"
+msgstr "ព័ត៌មាន​ចូល"
+
+msgid "<p><b>Original Author</b>:<br>\n"
+msgstr "<p><b>អ្នក​និពន្ធ​ដើម</b> ៖<br>\n"
+
+msgid "<p><b>Code Contributors</b>:<br>\n"
+msgstr "<p><b>អ្នក​ចែកចាយ​កូដ</b> ៖<br>\n"
+
+msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
+msgstr "<p><b>អ្នក​សរសេរ​បំណះ​ដែល​ជា​ទីស្រឡាញ់</b> ៖<br>\n"
+
+msgid "<p><b>Acknowledgement</b>:<br>\n"
+msgstr "<p><b>ទទួល​ស្គាល់</b> ៖<br>\n"
+
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>អ្នក​សាកល្បង​ហ្មតចត់</b> ៖<br>\n"
+
+msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
+msgstr "<p><i>ប្រុសៗ​ទាំង​អស់​នៅ​ក្នុង​បន្ទប់...</i><br>\n"
+
+msgid "<i>Feel free to join us!</i> :)"
+msgstr "<i>ចូលរួម​ជា​មួយ​យើង​ដោយ​សេរី !</i> :)"
+
+#, c-format
+msgid "About OpenQ %s"
+msgstr "អំពី OpenQ %s"
+
+msgid "Change Icon"
+msgstr "ផ្លាស់ប្ដូរ​រូបតំណាង"
+
+msgid "Change Password"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់"
+
+msgid "Account Information"
+msgstr "ព័ត៌មាន​គណនី"
+
+msgid "Update all QQ Quns"
+msgstr "ធ្វើ​ឲ្យ QQ Quns ទាន់សម័យ"
+
+msgid "About OpenQ"
+msgstr "អំពី OpenQ"
+
+msgid "Modify Buddy Memo"
+msgstr "កែប្រែ មិត្តភក្ដិ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "QQ Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ QQ"
+
+msgid "Auto"
+msgstr "ស្វ័យ​ប្រវត្តិ"
+
+msgid "Select Server"
+msgstr "ជ្រើស​ម៉ាស៊ីន​បម្រើ"
+
+msgid "QQ2005"
+msgstr "QQ2005"
+
+msgid "QQ2007"
+msgstr "QQ2007"
+
+msgid "QQ2008"
+msgstr "QQ2008"
+
+msgid "Connect by TCP"
+msgstr "តភ្ជាប់​តាម TCP"
+
+msgid "Show server notice"
+msgstr "បង្ហាញ​​​កំណត់​ចំណាំ​របស់​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Show server news"
+msgstr "បង្ហាញ​ព័ត៌មាន​របស់​ម៉ាស៊ីនបម្រើ"
+
+msgid "Show chat room when msg comes"
+msgstr "បង្ហាញ​"
+
+msgid "Keep alive interval (seconds)"
+msgstr "ទុក​ខាងក្នុង (វិនាទី)"
+
+msgid "Update interval (seconds)"
+msgstr "ធ្វើ​ឲ្យ​ចន្លោះ​ទាន់សម័យ (វិនាទី)"
+
+msgid "Cannot decrypt server reply"
+msgstr "មិនអាច​ឌិគ្រីប​កា​រឆ្លើយ​តប​របស់​ម៉ាស៊ីន​បម្រើ​បានទេ"
+
+#, c-format
+msgid "Failed requesting token, 0x%02X"
+msgstr "បានបរាជ័យ​ក្នុងកា​រស្នើ​ថូខឹន 0x%02X"
+
+#, c-format
+msgid "Invalid token len, %d"
+msgstr "ថូខឹន​មិនត្រឹមត្រូវ %d"
+
+#. extend redirect used in QQ2006
+msgid "Redirect_EX is not currently supported"
+msgstr "Redirect_EX បច្ចុប្បន្ន​មិនត្រូវ​បានគាំទ្រ​ទេ"
+
+#. need activation
+#. need activation
+#. need activation
+msgid "Activation required"
+msgstr "ត្រូវការ​ធ្វើ​ឲ្យ​សកម្ម"
+
+#, c-format
+msgid "Unknown reply code when logging in (0x%02X)"
+msgstr "កូដ​ឆ្លើយតប​មិន​​ស្គាល់​នៅ​ពេល​ចូល (0x%02X)"
+
+msgid "Could not decrypt server reply"
+msgstr "មិនអាច​ឌិគ្រីប​ការ​​ឆ្លើយតប​របស់​ម៉ាស៊ីន​បម្រើ​បាន​ទេ"
+
+msgid "Requesting captcha"
+msgstr "ស្នើ captcha"
+
+msgid "Checking captcha"
+msgstr "ពិនិត្យ​មើល captcha"
+
+msgid "Failed captcha verification"
+msgstr "បានបរាជ័យក្នុងការ​ផ្ទៀងផ្ទាត់ captcha"
+
+msgid "Captcha Image"
+msgstr "រូបភាព Captcha"
+
+msgid "Enter code"
+msgstr "បញ្ចូល​កូដ"
+
+msgid "QQ Captcha Verification"
+msgstr "ការ​ផ្ទៀងផ្ទាត់ QQ Captcha"
+
+msgid "Enter the text from the image"
+msgstr "បញ្ចូល​អត្ថបទ​ពី​រូបភាព"
+
+#, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr "មិនស្គាល់​ការ​ឆ្លើយតប​នៅពេល​ពិនិត្យមើលពាក្យ​សម្ងាត់ (0x%02X)"
+
+#, c-format
+msgid ""
+"Unknown reply code when logging in (0x%02X):\n"
+"%s"
+msgstr ""
+"កូដ​ឆ្លើយតប​មិនស្គាល់ នៅពេល​ចូល (0x%02X) ៖\n"
+"%s"
+
+#. we didn't successfully connect. tdt->toc_fd is valid here
+msgid "Unable to connect."
+msgstr "មិនអាច​តភ្ជាប់​បានទេ ។"
+
+msgid "Socket error"
+msgstr "កំហុស​រន្ធ"
+
+msgid "Unable to read from socket"
+msgstr "មិនអាច​អាន​ពី​រន្ធ​បានទេ"
+
+msgid "Write Error"
+msgstr "កំហុស​ក្នុងកា​រសរសេរ"
+
+msgid "Connection lost"
+msgstr "បាត់បង់​ការ​តភ្ជាប់"
+
+msgid "Getting server"
+msgstr "យក​ម៉ាស៊ីនបម្រើ"
+
+msgid "Requesting token"
+msgstr "ស្នើ​ថូខឹន"
+
+msgid "Couldn't resolve host"
+msgstr "មិនអាច​ដោះស្រាយ​ម៉ាស៊ីនបានទេ"
+
+msgid "Invalid server or port"
+msgstr "ម៉ាស៊ីន​បម្រើ ឬ​ច្រក​មិន​ត្រឹមត្រូវ"
+
+msgid "Connecting to server"
+msgstr "តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីនបម្រើ"
+
+msgid "QQ Error"
+msgstr "កំហុស QQ"
+
+#, c-format
+msgid ""
+"Server News:\n"
+"%s\n"
+"%s\n"
+"%s"
+msgstr ""
+"ព័ត៌មាន​ម៉ាស៊ីន​បម្រើ ៖\n"
+"%s\n"
+"%s\n"
+"%s"
+
+#, c-format
+msgid "%s:%s"
+msgstr "%s:%s"
+
+#, c-format
+msgid "From %s:"
+msgstr "ពី %s ៖"
+
+#, c-format
+msgid ""
+"Server notice From %s: \n"
+"%s"
+msgstr ""
+"កំណត់​ចំណាំ​ម៉ាស៊ីន​បម្រើពី %s ៖ \n"
+"%s"
+
+msgid "Unknown SERVER CMD"
+msgstr "មិនស្គាល់​ម៉ាស៊ីន​បម្រើ CMD"
+
+#, c-format
+msgid ""
+"Error reply of %s(0x%02X)\n"
+"Room %u, reply 0x%02X"
+msgstr ""
+"កំហុស​ក្នុងការ​ឆ្លើយ​តប %s(0x%02X)\n"
+"បន្ទប់ %u ឆ្លើយតប 0x%02X"
+
+msgid "QQ Qun Command"
+msgstr "ពាក្យ​បញ្ជា QQ Qun"
+
+msgid "Could not decrypt login reply"
+msgstr "មិនអាច​ឌិគ្រីប​ការ​ឆ្លើយ​តប​ការ​ចូល​បានទេ"
+
+msgid "Unknown LOGIN CMD"
+msgstr "មិនស្គាល់​ការ​ចូល CMD"
+
+msgid "Unknown CLIENT CMD"
+msgstr "មិនស្គាល់​ម៉ាស៊ីន​ភ្ញៀវ CMD"
+
+#, c-format
+msgid "%d has declined the file %s"
+msgstr "%d បានបដិសេធ​ឯកសារ %s"
+
+msgid "File Send"
+msgstr "ផ្ញើ​ឯកសារ"
+
+#, c-format
+msgid "%d canceled the transfer of %s"
+msgstr "%d បានបោះបង់​ការ​ផ្ទេរ %s"
+
+msgid "Connection closed (writing)"
+msgstr "បាន​បិទ​ការ​តភ្ជាប់ (សរសេរ)"
+
+#, c-format
+msgid "<b>Group Title:</b> %s<br>"
+msgstr "<b>ចំណង​ជ្រើ​ក្រុម ៖</b> %s<br>"
+
+#, c-format
+msgid "<b>Notes Group ID:</b> %s<br>"
+msgstr "<b>កំណត់ចំណាំ​ក្រុម ID ៖</b> %s<br>"
+
+#, c-format
+msgid "Info for Group %s"
+msgstr "ព័ត៌មាន​សម្រាប់​ក្រុម %s"
+
+msgid "Notes Address Book Information"
+msgstr "កំណត់​ចំណាំ​ព័ត៌មាន​សៀវភៅ​អាសយដ្ឋាន"
+
+msgid "Invite Group to Conference..."
+msgstr "អញ្ជើញ​ក្រុម​ឲ្យ​ចូលរួម​សន្និសីទ..."
+
+msgid "Get Notes Address Book Info"
+msgstr "យក​កំណត់​ចំណាំ​ព័ត៌មាន​សៀវភៅ​អាសយដ្ឋាន"
+
+msgid "Sending Handshake"
+msgstr "ផ្ញើ​ការ​ចាប់ដៃ"
+
+msgid "Waiting for Handshake Acknowledgement"
+msgstr "រង់ចាំ​ការ​ទទួលស្គាល់​ការ​ចាប់ដៃ"
+
+msgid "Handshake Acknowledged, Sending Login"
+msgstr "បាន​ទទួល​ស្គាល់ការ​ចាប់ដៃ ផ្ញើ​ការ​ចូល"
+
+msgid "Waiting for Login Acknowledgement"
+msgstr "រង់ចាំ​ការ​ទទួលស្គាល់​ការ​ចូល"
+
+msgid "Login Redirected"
+msgstr "បានបញ្ចូល​ការ​ចូល​បន្ត"
+
+msgid "Forcing Login"
+msgstr "បង្ខំ​កា​រចូល"
+
+msgid "Login Acknowledged"
+msgstr "បានទទួលស្គាល់​កា​រចូល"
+
+msgid "Starting Services"
+msgstr "ចាប់ផ្ដើម​សេវា"
+
+#, c-format
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
+msgstr "ពេលមួយ​នោះ អ្នកគ្រប់គ្រង​បានចេញផ្សាយ​នូវ​សេចក្ដី​ប្រកាស​ដូច​ខាង​ក្រោម​នៅ​លើម៉ាស៊ីនបម្រើ %s"
+
+msgid "Sametime Administrator Announcement"
+msgstr "ការ​ប្រកាស​របស់​អ្នកគ្រប់គ្រង​ពេល​តែ​មួយ"
+
+msgid "Connection reset"
+msgstr "កំណត់​ការ​តភ្ជាប់​ឡើង​វិញ"
+
+#, c-format
+msgid "Error reading from socket: %s"
+msgstr "កំហុស​ក្នុងការ​អាន​ពី​រន្ធ ៖ %s"
+
+#. this is a regular connect, error out
+msgid "Unable to connect to host"
+msgstr "មិនអាច​តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​ទេ"
+
+#, c-format
+msgid "Announcement from %s"
+msgstr "ការ​ប្រកាស​ពី %s"
+
+msgid "Conference Closed"
+msgstr "បានបិទ​សន្និសីទ"
+
+msgid "Unable to send message: "
+msgstr "មិនអាច​ផ្ញើសារ​បានទេ ៖"
+
+msgid "Place Closed"
+msgstr "បានបិទ​កន្លែង"
+
+msgid "Microphone"
+msgstr "មេក្រូ"
+
+msgid "Speakers"
+msgstr "ធុងបាស"
+
+msgid "Video Camera"
+msgstr "ម៉ាស៊ីន​ថត​​វីដេអូ"
+
+msgid "Supports"
+msgstr "គាំទ្រ"
+
+msgid "External User"
+msgstr "អ្នក​ប្រើ​ខាង​ក្រៅ"
+
+msgid "Create conference with user"
+msgstr "បង្កើត​សន្និសីទ​ជា​មួយ​អ្នក​ប្រើ"
+
+#, c-format
+msgid ""
+"Please enter a topic for the new conference, and an invitation message to be "
+"sent to %s"
+msgstr "សូម​បញ្ចូល​ប្រធាន​បទ​សម្រាប់​សន្និសីទ​ថ្មី ហើយ​សារ​អញ្ជើញ​ត្រូវ​ផ្ញើ​ទៅ %s"
+
+msgid "New Conference"
+msgstr "សន្និសីទ​ថ្មី"
+
+msgid "Create"
+msgstr "បង្កើត"
+
+msgid "Available Conferences"
+msgstr "សន្និសីទ​ដែល​អាច​ប្រើ​បាន"
+
+msgid "Create New Conference..."
+msgstr "បង្កើត​សន្និសីទ​ថ្មី..."
+
+msgid "Invite user to a conference"
+msgstr "អញ្ជើញ​អ្នកប្រើ​ឲ្យ​ចូលរួម​សន្និសីទ"
+
+#, c-format
+msgid ""
+"Select a conference from the list below to send an invite to user %s. Select "
+"\"Create New Conference\" if you'd like to create a new conference to invite "
+"this user to."
+msgstr ""
+"ជ្រើស​សន្និសីទ​ពី​បញ្ជីខាង​ក្រោម ដើម្បី​ផ្ញើ​ការ​អញ្ជើញ​ទៅអ្នកប្រើ %s ។ ជ្រើស \"បង្កើត​សន្និសីទ​ថ្មី\" "
+"ប្រសិនបើ​​អ្នក​ចង់​បង្កើត​សន្និសីទ​ថ្មី​ដើម្បីអញ្ជើញ​ង្នក​ប្រើ​នេះ ។"
+
+msgid "Invite to Conference"
+msgstr "អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុង​សន្និសីទ"
+
+msgid "Invite to Conference..."
+msgstr "អញ្ជើញ​ឲ្យ​ចូលរួម​ក្នុង​សន្និសីទ..."
+
+msgid "Send TEST Announcement"
+msgstr "ផ្ញើ​ការ​ប្រកាស​សាកល្បង"
+
+msgid "Topic:"
+msgstr "ប្រធានបទ ៖"
+
+msgid "No Sametime Community Server specified"
+msgstr "គ្មាន​ម៉ាស៊ីន​បម្រើ​សហគមន៍​បានបញ្ជាក់​ទេ"
+
+#, c-format
+msgid ""
+"No host or IP address has been configured for the Meanwhile account %s. "
+"Please enter one below to continue logging in."
+msgstr ""
+"គ្មាន​ម៉ាស៊ីន ឬ​អាសយដ្ឋាន IP ត្រូវ​បានកំណត់​រចនាសម្ព័ន្ធ​សម្រាប់​គណនី %s ។ សូម​បញ្ចូល​អាសយដ្ឋាន IP មួយ​"
+"ខាងក្រោម​ដើម្បី​បន្ត​ចូល ។"
+
+msgid "Meanwhile Connection Setup"
+msgstr "រៀបចំ​ការ​តភ្ជាប់"
+
+msgid "No Sametime Community Server Specified"
+msgstr "គ្មាន​ម៉ាស៊ីន​បម្រើ​សហគមន៍​បាន​បញ្ជាក់​ទេ"
+
+msgid "Connect"
+msgstr "ត​ភ្ជាប់"
+
+#, c-format
+msgid "Unknown (0x%04x)<br>"
+msgstr "មិនស្គាល់ (0x%04x)<br>"
+
+msgid "Last Known Client"
+msgstr "បាន​ស្គាល់​ម៉ាស៊ីន​ភ្ញៀវ​ចុងក្រោយ"
+
+msgid "User Name"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ"
+
+msgid "Sametime ID"
+msgstr "លេខស្គាល់​ Sametime"
+
+msgid "An ambiguous user ID was entered"
+msgstr "លេខ​សម្គាល់​អ្នក​ប្រើ​ត្រូវ​បាន​បញ្ចូល"
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. Please "
+"select the correct user from the list below to add them to your buddy list."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' អាច​សំអាង​លើ​អ្នកប្រើដូច​ខាងក្រោយ ។ សូម​ជ្រើស​អ្នកប្រើ​ដែល​ត្រឹមត្រូវ​ពី​បញ្ជីខាង​"
+"ក្រោម ដើម្បី​បន្ថែម​ពួកគេ​ទៅ​ក្នុង​​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Select User"
+msgstr "ជ្រើស​អ្នក​ប្រើ"
+
+msgid "Unable to add user: user not found"
+msgstr "មិនអាច​បន្ថែម​អ្នកប្រើបាន​ទេ ៖ រក​មិនឃើញ​អ្នក​ប្រើ"
+
+#, c-format
+msgid ""
+"The identifier '%s' did not match any users in your Sametime community. This "
+"entry has been removed from your buddy list."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' មិន​បានផ្គូផ្គង​អ្នក​ប្រើនៅ​ក្នុង​​សហគមន៍ Sametime របស់​អ្នក​ទេ ។ ធាតុ​នេះ​"
+"ត្រូវ​បាន​យកចេញ​ពី​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក​ហើយ ។"
+
+#, c-format
+msgid ""
+"Error reading file %s: \n"
+"%s\n"
+msgstr ""
+"កំហុស​ក្នុងការ​អាន​ឯកសារ %s ៖ \n"
+"%s\n"
+
+msgid "Remotely Stored Buddy List"
+msgstr "បាន​ទុក​បញ្ជី​មិត្តភក្ដិ​ពី​ចម្ងាយ"
+
+msgid "Buddy List Storage Mode"
+msgstr "របៀប​ផ្ទុក​បញ្ជីមិត្តភក្ដិ"
+
+msgid "Local Buddy List Only"
+msgstr "តែ​បញ្ជីមិត្តភក្ដិ​មូលដ្ឋាន​ប៉ុណ្ណោះ"
+
+msgid "Merge List from Server"
+msgstr "បញ្ចូល​បញ្ជី​ពី​ម៉ាស៊ីន​បម្រើ"
+
+msgid "Merge and Save List to Server"
+msgstr "បញ្ចូល និង​រក្សាទុក​បញ្ជី​ទៅ​កាន់​ម៉ាស៊ីនបម្រើ"
+
+msgid "Synchronize List with Server"
+msgstr "ធ្វើ​សមកាលកម្ម​បញ្ជី​ជា​មួយ​ម៉ាស៊ីន​បម្រើ"
+
+#, c-format
+msgid "Import Sametime List for Account %s"
+msgstr "នាំចូលបញ្ជី Sametime សម្រាប់​គណនី %s"
+
+#, c-format
+msgid "Export Sametime List for Account %s"
+msgstr "នាំចេញ​បញ្ជី Sametime សម្រាប់​គណនី %s"
+
+msgid "Unable to add group: group exists"
+msgstr "មិនអាច​បន្ថែម​ក្រុម ​៖ មានក្រុម​រួចហើយ"
+
+#, c-format
+msgid "A group named '%s' already exists in your buddy list."
+msgstr "មាន​ក្រុម​ដែលមាន​ឈ្មោះ '%s' រួច​ហើយ​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Unable to add group"
+msgstr "មិនអាច​បន្ថែម​ក្រុម​បានទេ"
+
+msgid "Possible Matches"
+msgstr "មាន​ការ​ផ្គូផ្គង"
+
+msgid "Notes Address Book group results"
+msgstr "ចំណាំ​លទ្ធផល​ក្រុម​សៀវភៅ​អាសយដ្ឋាន"
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following Notes Address "
+"Book groups. Please select the correct group from the list below to add it "
+"to your buddy list."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' អាច​យោង​តាម​ក្រុម​សៀវភៅ​អាសយដ្ឋាន​ចំណាំ ។ សូម​ជ្រើស​ក្រុម​ត្រឹមត្រូវ​ពី​បញ្ជី​"
+"ខាងក្រោម ដើម្បី​បន្ថែម​វា​ទៅកាន់បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Select Notes Address Book"
+msgstr "ជ្រើស​សៀវភៅ​អាសយដ្ឋាន​ចំណាំ"
+
+msgid "Unable to add group: group not found"
+msgstr "មិនអាច​បន្ថែម​ក្រុម​បានទេ ៖ រក​មិនឃើញ​ក្រុម"
+
+#, c-format
+msgid ""
+"The identifier '%s' did not match any Notes Address Book groups in your "
+"Sametime community."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' មិន​ផ្គូផ្គង​ក្រុមសៀវ​ភៅ​អាសយដ្ឋាន​​ចំណាំ​ណាមួយ​ទេ​នៅ​ក្នុងសហគមន៍ Sametimeរបស់​"
+"អ្នក ។"
+
+msgid "Notes Address Book Group"
+msgstr "ចំណាំ​ក្រុម​សៀវភៅ​អាសយដ្ឋាន"
+
+msgid ""
+"Enter the name of a Notes Address Book group in the field below to add the "
+"group and its members to your buddy list."
+msgstr ""
+"បញ្ចូល​ឈ្មោះ​ក្រុម​សៀវភៅ​ចំណាំ​នៅ​ក្នុង​វាល​ខាង​ក្រោម ដើម្បី​បន្ថែម​ក្រុម និង​សមាជិករបស់វា​ទៅកាន់​បញ្ជី​មិត្តភក្ដិ​របស់​"
+"អ្នក ។"
+
+#, c-format
+msgid "Search results for '%s'"
+msgstr "ស្វែងរក​លទ្ធផល​សម្រាប់ '%s'"
+
+#, c-format
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. You "
+"may add these users to your buddy list or send them messages with the action "
+"buttons below."
+msgstr ""
+"ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' អាច​យោង​តាម​អ្នកប្រើ​ដូច​ខាង​ក្រោម ។ អ្នក​​អាច​បន្ថែម​អ្នកប្រើទាំង​នេះ​ទៅ​កាន់​"
+"បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ឬ​ផ្ញើ​សារ​ឲ្យ​ពួកគេ​ដោយ​ប្រើ​ប៊ូតុង​សកម្មភាព​ខាងក្រោម ។"
+
+msgid "Search Results"
+msgstr "ស្វែងរក​លទ្ធ​ផល"
+
+msgid "No matches"
+msgstr "គ្មានការ​ផ្គូផ្គង"
+
+#, c-format
+msgid "The identifier '%s' did not match any users in your Sametime community."
+msgstr "ឧបករណ៍​កំណត់​អត្តសញ្ញាណ '%s' មិនបានផ្គូផ្គង​​អ្នកប្រើ​នៅ​ក្នុង​សហគមន៍ Sametime របស់​អ្នក ។"
+
+msgid "No Matches"
+msgstr "គ្មានការ​ផ្គូផ្គង"
+
+msgid "Search for a user"
+msgstr "ស្វែងរក​អ្នកប្រើ"
+
+msgid ""
+"Enter a name or partial ID in the field below to search for matching users "
+"in your Sametime community."
+msgstr ""
+"បញ្ចូល​ឈ្មោះ ឬ​លេខសម្គាល់​ដោយ​ផ្នែក​នៅ​ក្នុងវាល​ខាងក្រោម ដើម្បី​ស្វែងរក​អ្នកប្រើ​ដែល​ផ្គូផ្គង​នៅ​ក្នុង​សហគមន៍ "
+"Sametime របស់​អ្នក ។"
+
+msgid "User Search"
+msgstr "ស្វែងរក​អ្នកប្រើ"
+
+msgid "Import Sametime List..."
+msgstr "នាំចូល​បញ្ជី Sametime..."
+
+msgid "Export Sametime List..."
+msgstr "នាំចេញ​បញ្ជី Sametime..."
+
+msgid "Add Notes Address Book Group..."
+msgstr "បន្ថែម​ក្រុម​​សៀវភៅ​អាសយដ្ឋាន​ចំណាំ..."
+
+msgid "User Search..."
+msgstr "ស្វែងរក​អ្នកប្រើ..."
+
+msgid "Force login (ignore server redirects)"
+msgstr "បង្ខំ​ឲ្យ​ចូល (មិនអើពោះ​ការ​បញ្ជូន​ម៉ាស៊ីន​បម្រើ​ត)"
+
+#. pretend to be Sametime Connect
+msgid "Hide client identity"
+msgstr "លាក់​​អត្តសញ្ញាណ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+#, c-format
+msgid "User %s is not present in the network"
+msgstr "អ្នកប្រើ %s មិនបង្ហាញ​នៅ​ក្នុង​បណ្ដាញ​ទេ"
+
+msgid "Key Agreement"
+msgstr "ការ​ព្រមព្រៀង​សំខាន់"
+
+msgid "Cannot perform the key agreement"
+msgstr "មិនអាច​អនុវត្ត​ការ​​ព្រមព្រៀង​សំខាន់​ទេ"
+
+msgid "Error occurred during key agreement"
+msgstr "កំហុស​បាន​កើតឡើង​កំឡុង​ពេល​កិច្ចព្រមព្រៀង​សំខាន់"
+
+msgid "Key Agreement failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ព្រមព្រៀង​សំខាន់"
+
+msgid "Timeout during key agreement"
+msgstr "អស់ពេល​កំឡុង​ពេល​ព្រមព្រៀង​សំខាន់4"
+
+msgid "Key agreement was aborted"
+msgstr "ការ​ព្រមព្រៀង​សំខាន់​ត្រូវ​បានបោះបង់"
+
+msgid "Key agreement is already started"
+msgstr "ការ​ព្រមព្រៀង​សំខាន់​បាន​ចាប់ផ្ដើម​រួចហើយ"
+
+msgid "Key agreement cannot be started with yourself"
+msgstr "ការ​ព្រមព្រៀង​សំខាន់​មិន​អាច​ត្រូវ​ចាប់ផ្ដើម​ជា​មួយ​ខ្លួន​អ្នក​ផ្ទាល់"
+
+msgid "The remote user is not present in the network any more"
+msgstr "អ្នកប្រើ​ពីចម្ងាយ​មិនបង្ហាញ​នៅ​ក្នុង​បណ្ដាញ​ទៀត​ទេ"
+
+#, c-format
+msgid ""
+"Key agreement request received from %s. Would you like to perform the key "
+"agreement?"
+msgstr "បាន​​ទទួល​សំណួរ​ការ​ព្រមព្រៀង​ពី %s ។ តើ​អ្នក​ចង់​អនុវត្ត​ការ​ព្រមព្រៀង​សំខាន់ដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"The remote user is waiting key agreement on:\n"
+"Remote host: %s\n"
+"Remote port: %d"
+msgstr ""
+"អ្នកប្រើពី​ចម្ងាយ​កំពុង​រង់ចាំ​ការ​ព្រមព្រៀង​សំខាន់​នៅ​លើ ៖\n"
+"ម៉ាស៊ីន​ពី​ចម្ងាយ ៖ %s\n"
+"ច្រក​ពី​ចម្ងាយ ៖ %d"
+
+msgid "Key Agreement Request"
+msgstr "សំណើ​ការ​ព្រមព្រៀង​សំខាន់"
+
+msgid "IM With Password"
+msgstr "IM មាន​ពាក្យ​សម្ងាត់"
+
+msgid "Cannot set IM key"
+msgstr "មិន​កំណត់​សោ IM បានទេ"
+
+msgid "Set IM Password"
+msgstr "កំណត់​ពាក្យ​សម្ងាត់ IM"
+
+msgid "Get Public Key"
+msgstr "យក​សោ​សាធារណៈ"
+
+msgid "Cannot fetch the public key"
+msgstr "មិន​អាច​ទៅ​យក​សោ​សាធារណៈ​បានទេ"
+
+msgid "Show Public Key"
+msgstr "បង្ហាញ​សោ​សាធារណៈ"
+
+msgid "Could not load public key"
+msgstr "មិនអាច​ផ្ទុក​សោសាធារណៈបានទេ"
+
+msgid "User Information"
+msgstr "ព័ត៌មាន​អ្នក​អ្នកប្រើ"
+
+msgid "Cannot get user information"
+msgstr "មិន​អាច​យក​ព័ត៌មាន​របស់​អ្នក​ប្រើ​បានទេ"
+
+#, c-format
+msgid "The %s buddy is not trusted"
+msgstr "មិត្តភក្ដិ %s មិន​ទុកចិត្ត​ទេ"
+
+msgid ""
+"You cannot receive buddy notifications until you import his/her public key.  "
+"You can use the Get Public Key command to get the public key."
+msgstr ""
+"អ្នក​មិន​អាច​ទទួល​ការ​ជូនដំណឹង​មិត្តភក្ដិ​​ទេ រហូត​ដល់​អ្នក​នាំចូល​សោ​សាធារណៈ​របស់​គាត់ ។ អ្នក​អាច​ប្រើ​ពាក្យ​បញ្ជា​"
+"សាធារណៈ​ ដើម្បីទទួល​បាន​សោ​សាធារណៈ ។"
+
+#. Open file selector to select the public key.
+msgid "Open..."
+msgstr "បើក​..."
+
+#, c-format
+msgid "The %s buddy is not present in the network"
+msgstr "មិត្តភក្ដិ %s មិន​បង្ហាញ​នៅ​ក្នុង​បណ្ដាញទេ"
+
+msgid ""
+"To add the buddy you must import his/her public key. Press Import to import "
+"a public key."
+msgstr ""
+"ដើម្បី​បន្ថែម​មិត្តភក្ដិ​ អ្នក​ត្រូវ​តែ​នាំចូល​សោសាធារណៈ​របស់​គាត់ ។ ចុច​នាំចូល ដើម្បីនាំចូល​សោ​សាធារណៈ ។"
+
+msgid "_Import..."
+msgstr "នាំចូល..."
+
+msgid "Select correct user"
+msgstr "ជ្រើស​​អ្នកប្រើ​ដែល​ត្រឹមត្រូវ"
+
+msgid ""
+"More than one user was found with the same public key. Select the correct "
+"user from the list to add to the buddy list."
+msgstr ""
+"រកឃើញ​អ្នកប្រើច្រើនជាង​មួយ​ដែលមាន​សោ​សាធារណៈដូចគ្នា ​​។ ជ្រើស​អ្នកប្រើបច្ចុប្បន្ន​ពី​បញ្ជី ដើម្បី​បន្ថែម​ទៅ​"
+"កាន់បញ្ជីមិត្តភក្ដិ ។"
+
+msgid ""
+"More than one user was found with the same name. Select the correct user "
+"from the list to add to the buddy list."
+msgstr ""
+"រក​ឃើញ​​អ្នកប្រើ​ច្រើនជាង​មួយ ដែលមាន​ឈ្មោះ​ដូចគ្នា ។ ជ្រើស​អ្នក​ប្រើត្រឹមត្រូវ​ពី​បញ្ជី​ដើម្បី​បន្ថែម​"
+"ទៅកាន់បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។"
+
+msgid "Detached"
+msgstr "ផ្ដាច់"
+
+msgid "Indisposed"
+msgstr "មិន​ចោល"
+
+msgid "Wake Me Up"
+msgstr "ដាស់ខ្ញុំ"
+
+msgid "Hyper Active"
+msgstr "សកម្ម​ភាព"
+
+msgid "Robot"
+msgstr "មនុស្ស​យន្ត"
+
+msgid "Happy"
+msgstr "សប្បាយ"
+
+msgid "Sad"
+msgstr "ក្រៀមក្រំ"
+
+msgid "Angry"
+msgstr "ខឹង"
+
+msgid "Jealous"
+msgstr "ច្រណែន"
+
+msgid "Ashamed"
+msgstr "អៀនខ្មាស់"
+
+msgid "Invincible"
+msgstr "មិន​ចុះចាញ់"
+
+msgid "In Love"
+msgstr "សេចក្តី​ស្រឡាញ់"
+
+msgid "Sleepy"
+msgstr "ងងុយដេក"
+
+msgid "Bored"
+msgstr "អផ្សុក"
+
+msgid "Excited"
+msgstr "រំភើប"
+
+msgid "Anxious"
+msgstr "រសាប់រសល់"
+
+msgid "User Modes"
+msgstr "របៀប​អ្នក​ប្រើ"
+
+msgid "Preferred Contact"
+msgstr "ទំនាក់ទំនង​ដែល​ពេញចិត្ត"
+
+msgid "Preferred Language"
+msgstr "ភាសា​ដែល​ពេញចិត្ត"
+
+msgid "Device"
+msgstr "ឧបករណ៍​"
+
+msgid "Timezone"
+msgstr "តំបន់​ពេលវេលា"
+
+msgid "Geolocation"
+msgstr "ទីតាំង​ភូមិសាស្ត្រ"
+
+msgid "Reset IM Key"
+msgstr "កំណត់​សោ IM ឡើង​វិញ"
+
+msgid "IM with Key Exchange"
+msgstr "IM មាន​ការ​ផ្លាស់ប្ដូរ​សោ"
+
+msgid "IM with Password"
+msgstr "IM មាន​ពាក្យ​សម្ងាត់"
+
+msgid "Get Public Key..."
+msgstr "យក​សោ​សាធារណៈ..."
+
+msgid "Kill User"
+msgstr "សម្លាប់​អ្នក​ប្រើ"
+
+msgid "Draw On Whiteboard"
+msgstr "គូរ​លើ​ក្ដារខៀន"
+
+msgid "_Passphrase:"
+msgstr "ឃ្លា​សម្ងាត់ ៖"
+
+#, c-format
+msgid "Channel %s does not exist in the network"
+msgstr "មិន​ទាន់មាន​ឆានែល %s នៅ​ក្នុង​បណ្ដាញ​ទេ"
+
+msgid "Channel Information"
+msgstr "ព័ត៌មាន​ឆានែល"
+
+msgid "Cannot get channel information"
+msgstr "មិនអាចយក​ព័ត៌មាន​ឆានែល​បានទេ"
+
+#, c-format
+msgid "<b>Channel Name:</b> %s"
+msgstr "<b>ឈ្មោះ​ឆានែល ៖</b> %s"
+
+#, c-format
+msgid "<br><b>User Count:</b> %d"
+msgstr "<br><b>ចំនួន​អ្នកប្រើ ៖</b> %d"
+
+#, c-format
+msgid "<br><b>Channel Founder:</b> %s"
+msgstr "<br><b>ស្ថាបនិក​ឆានែល ៖</b> %s"
+
+#, c-format
+msgid "<br><b>Channel Cipher:</b> %s"
+msgstr "<br><b>សរសេរ​ឆានែល​ជា​​សម្ងាត់ ៖</b> %s"
+
+#. Definition of HMAC: http://en.wikipedia.org/wiki/HMAC
+#, c-format
+msgid "<br><b>Channel HMAC:</b> %s"
+msgstr "<br><b>ឆានែល HMAC ៖</b> %s"
+
+#, c-format
+msgid "<br><b>Channel Topic:</b><br>%s"
+msgstr "<br><b>ប្រធានបទ​ឆានែល ៖</b><br>%s"
+
+#, c-format
+msgid "<br><b>Channel Modes:</b> "
+msgstr "<br><b>របៀប​​ឆានែល ៖</b> "
+
+#, c-format
+msgid "<br><b>Founder Key Fingerprint:</b><br>%s"
+msgstr "<br><b>ស្ថាបនិកសោ​ស្នាម​ម្រាមដៃ ៖</b><br>%s"
+
+#, c-format
+msgid "<br><b>Founder Key Babbleprint:</b><br>%s"
+msgstr "<br><b>ស្ថាបនិក​សោ Babbleprint ៖</b><br>%s"
+
+msgid "Add Channel Public Key"
+msgstr "បន្ថែម​សោ​សាធារណៈ​របស់​ឆានែល"
+
+#. Add new public key
+msgid "Open Public Key..."
+msgstr "បើកសោ​សាធារណៈ..."
+
+msgid "Channel Passphrase"
+msgstr "ឃ្លាសម្ងាត់​ឆានែល"
+
+msgid "Channel Public Keys List"
+msgstr "បញ្ជី​សោ​សាធារណៈ​របស់​ឆានែល"
+
+#, c-format
+msgid ""
+"Channel authentication is used to secure the channel from unauthorized "
+"access. The authentication may be based on passphrase and digital "
+"signatures. If passphrase is set, it is required to be able to join. If "
+"channel public keys are set then only users whose public keys are listed are "
+"able to join."
+msgstr ""
+"ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​របស់​ឆានែល​ត្រូវ​បានប្រើ​ដើម្បី​ធ្វើ​ឲ្យ​ឆានែល​មានសុវត្ថិភាព ពីការ​ចូលដំណើរការ​"
+"ដែល​មិនបានផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ ។ ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​អាច​មាន​មូលដ្ឋាន​លើ​ឃ្លា​សម្ងាត់ និង​"
+"ហត្ថលេខា​ឌីជីថល ។ ប្រសិន​បើ​បានកំណត់​ឃ្លា​សម្ងាត់ វា​តម្រូវ​ឲ្យ​ចូល​រួម ។ ប្រសិន​បើ​សោ​សាធារណៈ​របស់​ឆានែល​ "
+"បន្ទាប់មកមានតែ​អ្នកប្រើ​ដែលសោសាធារណៈ​របស់​វា​ត្រូវ​បានរាយ​ដើម្បីអាច​ចូលរួម​បាន ។"
+
+msgid "Channel Authentication"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​​ត្រឹមត្រូវ​របស់ឆានែល"
+
+msgid "Add / Remove"
+msgstr "បន្ថែម/យក​ចេញ"
+
+msgid "Group Name"
+msgstr "ឈ្មោះ​ក្រុម"
+
+msgid "Passphrase"
+msgstr "ឃ្លាសម្ងាត់"
+
+#, c-format
+msgid "Please enter the %s channel private group name and passphrase."
+msgstr "សូម​បញ្ចូល​ឈ្មោះក្រុម​ឯកជន​ឆានែល %s និង​ឃ្លា​សម្ងាត់ ។"
+
+msgid "Add Channel Private Group"
+msgstr "បន្ថែម​ក្រុម​ឯកជន​របស់​ឆានែល"
+
+msgid "User Limit"
+msgstr "ដែន​កំណត់​អ្នកប្រើ"
+
+msgid "Set user limit on channel. Set to zero to reset user limit."
+msgstr "កំណត់​ដែនកំណត់​របស់​អ្នកប្រើ​នៅ​លើ​ឆានែល ។ កំណត់​សូន្យ​ដើម្បី​កំណត់​ដែនកំណត់​អ្នកប្រើឡើង​វិញ ។"
+
+msgid "Invite List"
+msgstr "អញ្ជើញ​បញ្ជី"
+
+msgid "Ban List"
+msgstr "បញ្ជី​ហាមឃាត់"
+
+msgid "Add Private Group"
+msgstr "បន្ថែម​ក្រុម​ឯកជន"
+
+msgid "Reset Permanent"
+msgstr "កំណត់​អចិន្ត្រៃយ៍​ឡើង​វិញ"
+
+msgid "Set Permanent"
+msgstr "កំណត់​អចិន្ត្រៃយ៍"
+
+msgid "Set User Limit"
+msgstr "កំណត់​ដែន​កំណត់​របស់​អ្នក"
+
+msgid "Reset Topic Restriction"
+msgstr "កំណត់​ការ​ដាក់កម្រិត​ប្រធានបទ​ឡើងវិញ"
+
+msgid "Set Topic Restriction"
+msgstr "កំណត់​ការ​កម្រិត​ប្រធានបទ"
+
+msgid "Reset Private Channel"
+msgstr "កំណត់​ឆានែល​ឯកជន​ឡើងវិញ"
+
+msgid "Set Private Channel"
+msgstr "កំណត់​ឆានែល​ឯកជន"
+
+msgid "Reset Secret Channel"
+msgstr "កំណត់​ឆានែល​សម្ងាត់"
+
+msgid "Set Secret Channel"
+msgstr "កំណត់​ឆានែល​សម្ងាត់​"
+
+#, c-format
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
+msgstr "អ្នកបាន​ចូលរួម​​​ក្នុង​ឆានែល %s មុននឹង​អ្នក​អាច​ចូលរួម​ក្នុង​ក្រុមឯកជន"
+
+msgid "Join Private Group"
+msgstr "ចូលរួម​ក្នុង​ក្រុម​ឯកជន"
+
+msgid "Cannot join private group"
+msgstr "មិនអាច​ចូលរួម​ក្នុងក្រុម​ឯកជន​បានទេ"
+
+msgid "Call Command"
+msgstr "ហៅ​ពាក្យ​បញ្ជា"
+
+msgid "Cannot call command"
+msgstr "មិនអាច​ហៅ​ពាក្យ​បញ្ជា​បានទេ"
+
+msgid "Unknown command"
+msgstr "មិន​ស្គាល់​ពាក្យ​បញ្ជា"
+
+msgid "Secure File Transfer"
+msgstr "ការ​ផ្ទេរ​ឯកសារ​មាន​សុវត្ថិភាព"
+
+msgid "Error during file transfer"
+msgstr "កំហុសកំឡុង​ពេល​ផ្ទេរ​ឯកសារ"
+
+msgid "Remote disconnected"
+msgstr "បានផ្ដាច់​ពីចម្ងាយ"
+
+msgid "Permission denied"
+msgstr "បានបដិសេធ​សិទ្ធិ"
+
+msgid "Key agreement failed"
+msgstr "បាន​បរាជ័យ​លើ​កិច្ចព្រមព្រៀង​សំខាន់"
+
+msgid "Connection timed out"
+msgstr "អស់ពេល​តភ្ជាប់"
+
+msgid "Creating connection failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​បង្កើត​ការ​តភ្ជាប់"
+
+msgid "File transfer session does not exist"
+msgstr "មិនទាន់មាន​សម័យ​ផ្ទេរ​ឯកសារ​ទេ"
+
+msgid "No file transfer session active"
+msgstr "គ្មាន​សម័យ​ផ្ទេរ​ឯកសារ​សកម្ម​ទេ"
+
+msgid "File transfer already started"
+msgstr "បានចាប់ផ្ដើមការ​ផ្ទេរ​ឯកសារ​រួច​​ហើយ"
+
+msgid "Could not perform key agreement for file transfer"
+msgstr "មិន​អាច​អនុវត្ត​កិច្ចព្រមព្រៀង​សំខាន់​សម្រាប់​ការ​ផ្ទេរ​ឯកសារ​បានទេ"
+
+msgid "Could not start the file transfer"
+msgstr "មិនអាច​ចាប់ផ្ដើម​ការ​ផ្ទេរ​ឯកសារ​បានទេ"
+
+msgid "Cannot send file"
+msgstr "មិនអាច​ផ្ញើ​ឯកសារ​បាន​ទេ"
+
+msgid "Error occurred"
+msgstr "កំហុស​បានកើត​ឡើង"
+
+#, c-format
+msgid "%s has changed the topic of <I>%s</I> to: %s"
+msgstr "%s បានផ្លាស់ប្ដូរ​ប្រធានបទ​របស់ <I>%s</I> ទៅ​ជា ៖ %s"
+
+#, c-format
+msgid "<I>%s</I> set channel <I>%s</I> modes to: %s"
+msgstr "<I>%s</I> កំណត់​របៀប​​ឆានែល <I>%s</I> ទៅ​ជា ៖ %s"
+
+#, c-format
+msgid "<I>%s</I> removed all channel <I>%s</I> modes"
+msgstr "<I>%s</I> បាន​យក​របៀប​ឆានែល <I>%s</I> ចេញ"
+
+#, c-format
+msgid "<I>%s</I> set <I>%s's</I> modes to: %s"
+msgstr "<I>%s</I> កំណត់​របៀប <I>%s</I> ទៅ​ជា ៖ %s"
+
+#, c-format
+msgid "<I>%s</I> removed all <I>%s's</I> modes"
+msgstr "<I>%s</I> បាន​យក​របៀបរបស់ <I>%s</I> ទាំង​អស់​ចេញ"
+
+#, c-format
+msgid "You have been kicked off <I>%s</I> by <I>%s</I> (%s)"
+msgstr "អ្នកត្រូវ​បានធាក់ចេញ​ពី <I>%s</I> ដោយ <I>%s</I> (%s)"
+
+#, c-format
+msgid "You have been killed by %s (%s)"
+msgstr "អ្នក​ត្រូវ​បាន​សម្លាប់​ដោយ %s (%s)"
+
+#, c-format
+msgid "Killed by %s (%s)"
+msgstr "បាន​សម្លាប់​ដោយ %s (%s)"
+
+msgid "Server signoff"
+msgstr "ចេញ​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Personal Information"
+msgstr "ព័ត៌មាន​ផ្ទាល់ខ្លួន"
+
+msgid "Birth Day"
+msgstr "ថ្ងៃ​​កំណើត"
+
+msgid "Job Role"
+msgstr "តួនាទី​ការងារ"
+
+msgid "Organization"
+msgstr "អង្គការ"
+
+msgid "Unit"
+msgstr "ផ្នែក"
+
+msgid "Note"
+msgstr "ចំណាំ"
+
+msgid "Join Chat"
+msgstr "ចូលរួម​ជជែក"
+
+#, c-format
+msgid "You are channel founder on <I>%s</I>"
+msgstr "អ្នកជា​អ្នកស្ថាបនិក​ឆានែលនៅ​លើ <I>%s</I>"
+
+#, c-format
+msgid "Channel founder on <I>%s</I> is <I>%s</I>"
+msgstr "ស្ថាបនិក​ឆានែល​នៅ​លើ <I>%s</I> គឺ <I>%s</I>"
+
+msgid "Real Name"
+msgstr "ឈ្មោះ​ពិត"
+
+msgid "Status Text"
+msgstr "អត្ថបទ​ស្ថានភាព"
+
+msgid "Public Key Fingerprint"
+msgstr "ស្នាមម្រាមដៃ​សោ​សាធារណៈ"
+
+msgid "Public Key Babbleprint"
+msgstr "Babbleprint សោ​សាធារណៈ"
+
+msgid "_More..."
+msgstr "ផ្សេងៗ​ទៀត..."
+
+msgid "Detach From Server"
+msgstr "ផ្ដាច់​ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Cannot detach"
+msgstr "មិនអាច​ផ្ដាច់​បានទេ"
+
+msgid "Cannot set topic"
+msgstr "មិនអាច​កំណត់​ប្រធាន​បទ​បានទេ"
+
+msgid "Failed to change nickname"
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្លាស់ប្ដូរ​សម្មតិនាម"
+
+msgid "Roomlist"
+msgstr "បញ្ជី​បន្ទប់"
+
+msgid "Cannot get room list"
+msgstr "មិនអាច​យក​បញ្ជី​បន្ទប់បានទេ"
+
+msgid "Network is empty"
+msgstr "បណ្ដាញ​ទទេ"
+
+msgid "No public key was received"
+msgstr "មិនបានទទួល​សោ​សាធារណៈ​ទេ"
+
+msgid "Server Information"
+msgstr "ព័ត៌មាន​ម៉ាស៊ីនបម្រើ"
+
+msgid "Cannot get server information"
+msgstr "មិនអាច​យក​ព័ត៌មាន​ម៉ាស៊ីនបម្រើបានទេ"
+
+msgid "Server Statistics"
+msgstr "ស្ថិតិ​ម៉ាស៊ីនបម្រើ"
+
+msgid "Cannot get server statistics"
+msgstr "មិនអាច​យក​ស្ថិតិ​ម៉ាស៊ីនបម្រើបានទេ"
+
+#, c-format
+msgid ""
+"Local server start time: %s\n"
+"Local server uptime: %s\n"
+"Local server clients: %d\n"
+"Local server channels: %d\n"
+"Local server operators: %d\n"
+"Local router operators: %d\n"
+"Local cell clients: %d\n"
+"Local cell channels: %d\n"
+"Local cell servers: %d\n"
+"Total clients: %d\n"
+"Total channels: %d\n"
+"Total servers: %d\n"
+"Total routers: %d\n"
+"Total server operators: %d\n"
+"Total router operators: %d\n"
+msgstr ""
+"ម៉ាស៊ីនបម្រើ​មូលដ្ឋាន​ចាប់ផ្ដើម​ម៉ោង ៖ %s\n"
+"ម៉ាស៊ីន​បម្រើ​មូលដ្ឋាន​ដល់​ម៉ោង ៖ %s\n"
+"ម៉ាស៊ីន​ភ្ញៀវ​របស់​ម៉ាស៊ីនបម្រើ​មូលដ្ឋាន ៖ %d\n"
+"ឆានែល​ម៉ាស៊ីន​បម្រើ​មូលដ្ឋាន ៖ %d\n"
+"ការី​ម៉ាស៊ីនបម្រើ​មូលដ្ឋាន ៖ %d\n"
+"ការី​រ៉ោតទ័រ​មូលដ្ឋាន ៖ %d\n"
+"ម៉ាស៊ីន​ភ្ញើ​ចល័ត​មូលដ្ឋាន ៖ %d\n"
+"ឆានែល​ចល័ត​មូលដ្ឋាន ៖ %d\n"
+"ម៉ាស៊ីនបម្រើចល័ត​មូលដ្ឋាន ៖ %d\n"
+"ម៉ាស៊ីន​ភ្ញៀវ​សរុប ៖ %d\n"
+"ឆានែល​សរុប ៖ %d\n"
+"ម៉ាស៊ីនបម្រើសរុប ៖ %d\n"
+"Total routers: %d\n"
+"Total server operators: %d\n"
+"Total router operators: %d\n"
+
+msgid "Network Statistics"
+msgstr "ស្ថិតិ​បណ្ដាញ"
+
+msgid "Ping failed"
+msgstr "បានបរាជ័យក្នុងការ Ping"
+
+msgid "Ping reply received from server"
+msgstr "បាន​ទទួល​ការ​ឆ្លើយតប Ping ពី​ម៉ាស៊ីនបម្រើ"
+
+msgid "Could not kill user"
+msgstr "មិនអាច​សម្លាប់​អ្នកប្រើបានទេ"
+
+msgid "WATCH"
+msgstr "ឃ្លាំង​មើល"
+
+msgid "Cannot watch user"
+msgstr "មិនអាច​ឃ្លាំង​មើល​អ្នកប្រើបានទេ"
+
+msgid "Resuming session"
+msgstr "បន្ត​សម័យ"
+
+msgid "Authenticating connection"
+msgstr "ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ការ​តភ្ជាប់"
+
+msgid "Verifying server public key"
+msgstr "ផ្ទៀងផ្ទាត់​សោ​សាធារណៈ​របស់​ម៉ាស៊ីនបម្រើ"
+
+msgid "Passphrase required"
+msgstr "ត្រូវការ​ឃ្លា​សម្ងាត់"
+
+#, c-format
+msgid ""
+"Received %s's public key. Your local copy does not match this key. Would you "
+"still like to accept this public key?"
+msgstr ""
+"បានទទួល​សោ​សាធារណៈ​របស់ %s ។ ច្បាបចម្លង​មូលដ្ឋាន​របស់​​អ្នក​មិនផ្គូផ្គង​សោ​នេះ​ទេ ។ តើ​អ្នកនៅតែ​ទទួល​យក​សោ​"
+"សាធារណៈ​នេះ​ឬ ?"
+
+#, c-format
+msgid "Received %s's public key. Would you like to accept this public key?"
+msgstr "បានទទួល​សោ​សាធារណៈ​របស់ %s ។ តើអ្នក​ចង់​ទទួល​យក​សោ​សាធារណៈ​នេះ​ដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"Fingerprint and babbleprint for the %s key are:\n"
+"\n"
+"%s\n"
+"%s\n"
+msgstr ""
+"ស្នាមម្រាមដៃ និង babbleprint សម្រាប់សោ %s គឺ ៖\n"
+"\n"
+"%s\n"
+"%s\n"
+
+msgid "Verify Public Key"
+msgstr "ផ្ទៀងផ្ទាត��​សោ​សាធារណៈ"
+
+msgid "_View..."
+msgstr "មើល..."
+
+msgid "Unsupported public key type"
+msgstr "ប្រភេទ​សោ​សាធារណៈ​មិន​បានគាំទ្រ"
+
+msgid "Disconnected by server"
+msgstr "បានផ្ដាច់​ដោយ​ម៉ាស៊ីនបម្រើ"
+
+msgid "Error during connecting to SILC Server"
+msgstr "កំហុស​កំឡុងពេល​តភ្ជាប់​ទៅកាន់​ម៉ាស៊ីន​បម្រើ SILC"
+
+msgid "Key Exchange failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​រផ្លាស់ប្ដូរ​សោ"
+
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
+msgstr "បានបរាជ័យ​ក្នុងការ​បន្ត​សម័យ​ដែលបានផ្ដាច់ ។ ចុច​តភ្ជាប់ឡើង​វិញ​ដើម្បី​បង្កើត​ការ​តភ្ជាប់ថ្មី ។"
+
+msgid "Connection failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់"
+
+msgid "Performing key exchange"
+msgstr "អនុវត្ត​ការ​ផ្លាស់ប្ដូរ​សោ"
+
+msgid "Unable to create connection"
+msgstr "មិនអាច​បង្កើត​ការតភ្ជាប់​បានទេ"
+
+msgid "Could not load SILC key pair"
+msgstr "មិនអាច​ផ្ទុក​ការ​​ផ្គូផ្គង​សោ SILC បានទេ"
+
+#. Progress
+msgid "Connecting to SILC Server"
+msgstr "តភ្ជាប់​ទៅ​កាន់​ម៉ាស៊ីន​បម្រើ SILC"
+
+msgid "Out of memory"
+msgstr "អស់​សតិOut of memory"
+
+msgid "Cannot initialize SILC protocol"
+msgstr "មិនអាច​ចាប់ផ្ដើម​ពិធីការ SILC បានទេ"
+
+msgid "Error loading SILC key pair"
+msgstr "កំហុស​ក្នុងការ​ផ្ទុក​ការ​ផ្គូផ្គង​សោ SILC"
+
+#, c-format
+msgid "Download %s: %s"
+msgstr "ទាញ %s ៖ %s"
+
+msgid "Your Current Mood"
+msgstr "អារម្មណ៍​បច្ចុប្បន្ន​របស់​អ្នក"
+
+#, c-format
+msgid "Normal"
+msgstr "ធម្មតា"
+
+msgid "In love"
+msgstr "ស្រឡាញ់"
+
+msgid ""
+"\n"
+"Your Preferred Contact Methods"
+msgstr ""
+"\n"
+"វិធីសាស្ត្រ​ទំនាក់ទំនង​ដែលពេញចិត្ត​របស់​អ្នក"
+
+msgid "SMS"
+msgstr "SMS"
+
+msgid "MMS"
+msgstr "MMS"
+
+msgid "Video conferencing"
+msgstr "សន្និសីទ​វីដេអូ"
+
+msgid "Your Current Status"
+msgstr "ស្ថានភាព​បច្ចុប្បន្ន​របស់​អ្នក"
+
+msgid "Online Services"
+msgstr "សេវា​លើ​បណ្ដាញ"
+
+msgid "Let others see what services you are using"
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​មើល​សេវា​អ្វីដែល​អ្នកកំពុង​ប្រើ"
+
+msgid "Let others see what computer you are using"
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​មើលកុំព្យូទ័រ​ដែល​អ្នក​កំពុង​ប្រើ"
+
+msgid "Your VCard File"
+msgstr "ឯកសារ VCard"
+
+msgid "Timezone (UTC)"
+msgstr "តំបន់​ពេលវេលា (UTC)"
+
+msgid "User Online Status Attributes"
+msgstr "គុណលក្ខណៈ​ស្ថានភាព​លើ​បណ្ដាញ​របស់​អ្នកប្រើ"
+
+msgid ""
+"You can let other users see your online status information and your personal "
+"information. Please fill the information you would like other users to see "
+"about yourself."
+msgstr ""
+"អ្នកអាច​អនុញ្ញាត​ឲ្យ​អ្នកផ្សេង​មើល​ព័ត៌មាន​ស្ថានភាព​លើបណ្ដាញ​ និង​ព័ត៌មានផ្ទាល់ខ្លួន​របស់​អ្នក ។ សូម​បំពេញ​"
+"ព័ត៌មាន​ដែល​អ្នក​ចង់​ឲ្យ​អ្នក​ផ្សេង​មើល​ព័ត៌មានអំពី​ខ្លួន​អ្នក​ផ្ទាល់ ។"
+
+msgid "Message of the Day"
+msgstr "សារ​ថ្ងៃ"
+
+msgid "No Message of the Day available"
+msgstr "គ្មាន​សារ​ថ្ងៃ​នោះ​ទេ"
+
+msgid "There is no Message of the Day associated with this connection"
+msgstr "មិនមានសារ​ថ្ងៃ​ដែលបានភ្ជាប់​ជា​មួយ​ការ​តភ្ជាប់នេះ​ទៀត​ទេ"
+
+msgid "Create New SILC Key Pair"
+msgstr "បង្កើត​ការ​ផ្គូផ្គង​សោ SILC ថ្មី"
+
+msgid "Passphrases do not match"
+msgstr "ឃ្លា​សម្ងាត់​មិនផ្គូផ្គង"
+
+msgid "Key Pair Generation failed"
+msgstr "បានបរាជ័យ​ក្នុងកា​របង្កើត​គូរ​សោ"
+
+msgid "Key length"
+msgstr "ប្រវែង​សោ"
+
+msgid "Public key file"
+msgstr "ឯកសារ​សោ​សាធារណៈ"
+
+msgid "Private key file"
+msgstr "ឯកសារ​សោ​ឯកជន"
+
+msgid "Passphrase (retype)"
+msgstr "ឃ្លាសម្ងាត់ (វាយ​ម្ដង​ទៀត)"
+
+msgid "Generate Key Pair"
+msgstr "បង្កើត​គូសោ"
+
+msgid "Online Status"
+msgstr "ស្ថានភាព​លើ​បណ្ដាញ"
+
+msgid "View Message of the Day"
+msgstr "មើល​សារ​ថ្ងៃ"
+
+msgid "Create SILC Key Pair..."
+msgstr "បង្កើត​គូ​សោ SILC..."
+
+#, c-format
+msgid "User <I>%s</I> is not present in the network"
+msgstr "អ្នកប្រើ <I>%s</I> មិនបង្ហាញ​នៅ​ក្នុង​បណ្ដាញ​ទេ"
+
+msgid "Topic too long"
+msgstr "ប្រធាន​បទ​វែងពេក"
+
+msgid "You must specify a nick"
+msgstr "អ្នក​ត្រូវតែ​បញ្ជាក់​សម្មតិនាម"
+
+#, c-format
+msgid "channel %s not found"
+msgstr "រក​មិនឃើញ​ឆានែល %s"
+
+#, c-format
+msgid "channel modes for %s: %s"
+msgstr "របៀប​ឆានែល​ពី %s ៖ %s"
+
+#, c-format
+msgid "no channel modes are set on %s"
+msgstr "គ្មាន​របៀប​ឆានែល​ត្រូវ​បានកំណត់​នៅ​លើ %s"
+
+#, c-format
+msgid "Failed to set cmodes for %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​កំណត់​ cmodes សម្រាប់ %s"
+
+#, c-format
+msgid "Unknown command: %s, (may be a client bug)"
+msgstr "មិនស្គាល់ពាក្យ​បញ្ជា ៖ %s (អាច​ជា​កំហុស​របស់​ម៉ាស៊ីន​ភ្ញៀវ)"
+
+msgid "part [channel]:  Leave the chat"
+msgstr "ផ្នែក [ឆានែល] ៖  ចេញ​ពី​កា​រជជែក"
+
+msgid "leave [channel]:  Leave the chat"
+msgstr "ចេញ [ឆានែល] ៖  ចេញ​ពីការ​ជជែក"
+
+msgid "topic [&lt;new topic&gt;]:  View or change the topic"
+msgstr "ប្រធានបទ [&lt;ប្រធាន​បទ​ថ្មី&gt;] ៖  មើល ឬ​ផ្លាស់ប្ដូរ​ប្រធានបទ"
+
+msgid "join &lt;channel&gt; [&lt;password&gt;]:  Join a chat on this network"
+msgstr "ចូលរួម &lt;ឆានែល&gt; [&lt;ពាក្យ​សម្ងាត់&gt;] ៖  ចូលរួម​ក្នុងការ​ជជែក​នៅ​លើ​បណ្ដាញ​នេះ"
+
+msgid "list:  List channels on this network"
+msgstr "បញ្ជី ៖ រាយឆានែល​នៅ​លើ​បណ្ដាញ​នេះ"
+
+msgid "whois &lt;nick&gt;:  View nick's information"
+msgstr "whois &lt;nick&gt; ៖  មើល​ព័ត៌មាន​សម្មតិនាម"
+
+msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user"
+msgstr "msg &lt;nick&gt; &lt;message&gt; ៖  ផ្ញើ​សារ​ឯកជន​​ឲ្យ​អ្នកប្រើ"
+
+msgid "query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
+msgstr "សួរ &lt;nick&gt; [&lt;message&gt;] ៖  ផ្ញើ​សារ​ឯកជន​ឲ្យ​អ្នកប្រើ"
+
+msgid "motd:  View the server's Message Of The Day"
+msgstr "motd ៖  មើល​សារ​របស់ម៉ាស៊ីនបម្រើ​នៃ​ថ្ងៃ"
+
+msgid "detach:  Detach this session"
+msgstr "ផ្ដាច់ ៖ ផ្ដាច់​សម័យ​នេះ"
+
+msgid "quit [message]:  Disconnect from the server, with an optional message"
+msgstr "ចេញ [សារ] ៖  ផ្ដាច់​ពី​ម៉ាស៊ីនបម្រើ ដោយ​មាន​សារ​ជា​ជម្រើស"
+
+msgid "call &lt;command&gt;:  Call any silc client command"
+msgstr "call &lt;command&gt; ៖  ហៅ​ពាក្យ​បញ្ជា​ម៉ាស៊ីនភ្ញៀវ silc ណា​មួយ"
+
+msgid "kill &lt;nick&gt; [-pubkey|&lt;reason&gt;]:  Kill nick"
+msgstr "សម្លាប់ &lt;nick&gt; [-pubkey|&lt;reason&gt;] ៖  សម្លាប់​សម្មតិនាម"
+
+msgid "nick &lt;newnick&gt;:  Change your nickname"
+msgstr "nick &lt;newnick&gt; ៖  ផ្លាស់ប្ដូរ​សម្មតិនាម​របស់​អ្នក"
+
+msgid "whowas &lt;nick&gt;:  View nick's information"
+msgstr "whowas &lt;nick&gt; ៖  មើល​ព័ត៌មាន​សម្មតិនាម"
+
+msgid ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display "
+"channel modes"
+msgstr ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments] ៖  ផ្លាស់ប្ដូរ ឬ​បង្ហាញ​របៀប​"
+"ឆានែល"
+
+msgid ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes "
+"on channel"
+msgstr ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt; ៖  ផ្លាស់ប្ដូរ​របៀប​សម្មតិនាម​នៅ​"
+"លើ​ឆានែល"
+
+msgid "umode &lt;usermodes&gt;:  Set your modes in the network"
+msgstr "umode &lt;usermodes&gt; ៖ កំណត់​របៀប​របស់​អ្នក​នៅ​ក្នុង​បណ្ដាញ"
+
+msgid "oper &lt;nick&gt; [-pubkey]:  Get server operator privileges"
+msgstr "oper &lt;nick&gt; [-pubkey] ៖  យក​សិទ្ធិ​ការី​របស់​ម៉ាស៊ីនបម្រើ"
+
+msgid ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from "
+"channel invite list"
+msgstr ""
+"អញ្ជើញ &lt;channel&gt; [-|+]&lt;nick&gt; ៖  អញ្ជើញ​សម្មតិនាម ឬ​បន្ថែម/យក​ចេញ​ពី​បញ្ជីអញ្ជើញ​"
+"ឆានែល"
+
+msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]:  Kick client from channel"
+msgstr "ទាត់ &lt;channel&gt; &lt;nick&gt; [comment] ៖  ចុ​ច​ម៉ាស៊ីន​ភ្ញៀវ​ពី​ឆានែល"
+
+msgid "info [server]:  View server administrative details"
+msgstr "ព័ត៌មាន [ម៉ាស៊ីនបម្រើ] ៖  មើល​សេចក្ដី​លម្អិត​គ្រប់គ្រង​របស់​ម៉ាស៊ីនបម្រើ"
+
+msgid "ban [&lt;channel&gt; +|-&lt;nick&gt;]:  Ban client from channel"
+msgstr "ហាមឃាត់ [&lt;channel&gt; +|-&lt;nick&gt;] ៖  ហាមឃាត់​ម៉ាស៊ីន​ភ្ញៀវ​ពី​ឆានែល"
+
+msgid "getkey &lt;nick|server&gt;:  Retrieve client's or server's public key"
+msgstr "getkey &lt;nick|server&gt; ៖ ទៅ​យក​សោសាធារណៈ​របស់​ម៉ាស៊ីនបម្រើ ឬ​ម៉ាស៊ីន​ភ្ញៀវ"
+
+msgid "stats:  View server and network statistics"
+msgstr "ស្ថានភាព ៖ មើល​ស្ថិតិ​ម៉ាស៊ីនបម្រើ និង​បណ្ដាញ"
+
+msgid "ping:  Send PING to the connected server"
+msgstr "ping ៖  ផ្ញើ​ PING ទៅកាន់​ម៉ាស៊ីនបម្រើ​ដែលបានតភ្ជាប់"
+
+msgid "users &lt;channel&gt;:  List users in channel"
+msgstr "អ្នកប្រើ &lt;ឆានែល&gt; ៖  រាយ​អ្នកប្រើ​នៅ​ក្នុង​ឆានែល"
+
+msgid ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List "
+"specific users in channel(s)"
+msgstr ""
+"ឈ្មោះ [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt; ៖  រាយ​អ្នកប្រើ​"
+"ជាក់លាក់​នៅ​ក្នុង​ឆានែល"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+msgid "SILC Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ SILC"
+
+#. *  description
+msgid "Secure Internet Live Conferencing (SILC) Protocol"
+msgstr "ពិធីការ Secure Internet Live Conferencing (SILC)"
+
+msgid "Network"
+msgstr "បណ្ដាញ"
+
+msgid "Public Key file"
+msgstr "ឯកសារ​សោ​សាធារណៈ"
+
+msgid "Private Key file"
+msgstr "ឯកសារ​សោ​ឯកជន"
+
+msgid "Cipher"
+msgstr "សរសេរ​សម្ងាត់"
+
+msgid "HMAC"
+msgstr "HMAC"
+
+msgid "Use Perfect Forward Secrecy"
+msgstr "ប្រើ​ភាព​សុវត្ថិភាព​បញ្ជូនបន្ត​ល្អ​ឥតខ្ចោះ"
+
+msgid "Public key authentication"
+msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​សោ​សាធារណៈ"
+
+msgid "Block IMs without Key Exchange"
+msgstr "ទប់ស្កាត់ IMs ដោយ​គ្មាន​ការ​ផ្លាស់ប្ដូរ​សោ"
+
+msgid "Block messages to whiteboard"
+msgstr "ទប់ស្កាត់សារ​ទៅក្ដារខៀន"
+
+msgid "Automatically open whiteboard"
+msgstr "បើក​ក្ដារខៀន​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Digitally sign and verify all messages"
+msgstr "ចុះហត្ថលេខា​ឌីជីថល និង​ផ្ទៀងផ្ទាត់​សារ​ទាំងអស់"
+
+msgid "Creating SILC key pair..."
+msgstr "កំពុង​បង្កើត​គូសោ SILC​..."
+
+msgid "Cannot create SILC key pair\n"
+msgstr "មិនអាច​បង្កើត​គូ​សោ SILC\n"
+
+#. Hint for translators: Please check the tabulator width here and in
+#. the next strings (short strings: 2 tabs, longer strings 1 tab,
+#. sum: 3 tabs or 24 characters)
+#, c-format
+msgid "Real Name: \t%s\n"
+msgstr "ឈ្មោះ​ពិត ៖ \t%s\n"
+
+#, c-format
+msgid "User Name: \t%s\n"
+msgstr "ឈ្មោះអ្នកប្រើ ៖ \t%s\n"
+
+#, c-format
+msgid "Email: \t\t%s\n"
+msgstr "អ៊ីមែល ៖ \t\t%s\n"
+
+#, c-format
+msgid "Host Name: \t%s\n"
+msgstr "ឈ្មោះម៉ាស៊ីន ៖ \t%s\n"
+
+#, c-format
+msgid "Organization: \t%s\n"
+msgstr "អង្គការ ៖ \t%s\n"
+
+#, c-format
+msgid "Country: \t%s\n"
+msgstr "ប្រទេស ៖ \t%s\n"
+
+#, c-format
+msgid "Algorithm: \t%s\n"
+msgstr "ក្បួន​ដោះស្រាយ ៖ \t%s\n"
+
+#, c-format
+msgid "Key Length: \t%d bits\n"
+msgstr "ប្រវែង​សោ ៖ \t%d ប៊ីត\n"
+
+#, c-format
+msgid "Version: \t%s\n"
+msgstr "កំណែ ៖ \t%s\n"
+
+#, c-format
+msgid ""
+"Public Key Fingerprint:\n"
+"%s\n"
+"\n"
+msgstr ""
+"ស្នាមម្រាមដៃ​សោ​សាធារណៈ ៖\n"
+"%s\n"
+"\n"
+
+#, c-format
+msgid ""
+"Public Key Babbleprint:\n"
+"%s"
+msgstr ""
+"Babbleprint សោ​សាធារណៈ ៖\n"
+"%s"
+
+msgid "Public Key Information"
+msgstr "ព័ត៌មាន​សោ​សាធារណៈ"
+
+msgid "Paging"
+msgstr "ភេយីង"
+
+msgid "Video Conferencing"
+msgstr "សន្និសីទ​វីដេអូ"
+
+msgid "Computer"
+msgstr "កុំព្យូទ័រ"
+
+msgid "PDA"
+msgstr "PDA"
+
+msgid "Terminal"
+msgstr "ស្ថានីយ"
+
+#, c-format
+msgid "%s sent message to whiteboard. Would you like to open the whiteboard?"
+msgstr "%s បាន​ផ្ញើសារ​ទៅក្ដារខៀន ។ តើ​អ្នក​ចង់បើក​ក្ដារខៀន​ឬទេ ?"
+
+#, c-format
+msgid ""
+"%s sent message to whiteboard on %s channel. Would you like to open the "
+"whiteboard?"
+msgstr "%s បាន​ផ្ញើសារ​ទៅក្ដារខៀន​នៅ​លើ​ឆានែល %s ។ តើ​អ្នកចង់​បើក​ក្ដារខៀន​ដែរឬទេ ?"
+
+msgid "Whiteboard"
+msgstr "ក្ដារខៀន"
+
+msgid "No server statistics available"
+msgstr "មិនមាន​ស្ថិតិ​ម៉ាស៊ីន​បម្រើ"
+
+#, c-format
+msgid "Failure: Version mismatch, upgrade your client"
+msgstr "បរាជ័យ ៖ កំណែ​មិនផ្គូផ្គង ធ្វើ​ឲ្យ​​ម៉ាស៊ីន​ភ្ញៀវ​របស់​អ្នក​ប្រសើរ​ឡើង"
+
+#, c-format
+msgid "Failure: Remote does not trust/support your public key"
+msgstr "បរាជ័យ ៖ ការ​តភ្ជាប់​ពី​ចម្ងាយ​មិន​ទុកចិត្ត/គាំទ្រ​សោ​សាធារណៈ​របស់​អ្នកទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed KE group"
+msgstr "បរាជ័យ ៖ ការ​តភ្ជាប់​ពីចម្ងាយ​មិនគាំទ្រ​ក្រុម KE ដែល​បាន​ស្នើ​ទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed cipher"
+msgstr "បរាជ័យ ៖ ការតភ្ជាប់ពីចម្ងាយ​មិនគាំទ្រ​ការ​សរសេរ​សម្ងាត់​ដែលបានស្នើទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed PKCS"
+msgstr "បរាជ័យ ៖ ការតភ្ជាប់ពីចម្ងាយ​មិនគាំទ្រ​ PKCS ដែល​បាន​ស្នើ​ទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed hash function"
+msgstr "បរាជ័យ ៖ ការតភ្ជាប់​ពីចម្ងាយ​មិន​គាំទ្រ​មុខងារ hash ដែល​បាន​ស្នើ​ទេ"
+
+#, c-format
+msgid "Failure: Remote does not support proposed HMAC"
+msgstr "បរាជ័យ ៖ ការតភ្ជាប់ពីចម្ងាយ​មិនគាំទ្រ HMAC ដែល​បានស្នើ​​ទេ"
+
+#, c-format
+msgid "Failure: Incorrect signature"
+msgstr "បរាជ័យ ៖ ហត្ថលេខា​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Failure: Invalid cookie"
+msgstr "បរាជ័យ ៖ ខូគី​មិន​ត្រឹមត្រូវ"
+
+#, c-format
+msgid "Failure: Authentication failed"
+msgstr "បរាជ័យ ៖ បានបរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ"
+
+msgid "Cannot initialize SILC Client connection"
+msgstr "មិន​អាច​ចាប់ផ្ដើម​ការ​តភ្ជាប់ម៉ាស៊ីន​ភ្ញៀវ SILC បានទេ"
+
+msgid "John Noname"
+msgstr "John Noname"
+
+#, c-format
+msgid "Could not load SILC key pair: %s"
+msgstr "មិនអាច​ផ្ទុក​គូសោ SILC ៖ %s"
+
+msgid "Could not write"
+msgstr "មិនអាច​សរសេរ​បានទេ"
+
+msgid "Could not connect"
+msgstr "មិនអាច​តភ្ជាប់"
+
+msgid "Unknown server response."
+msgstr "មិនស្គាល់​ការ​ឆ្លើយតប​របស់ម៉ាស៊ីនបម្រើ"
+
+msgid "Could not create listen socket"
+msgstr "មិនអាច​បង្កើត​រន្ធ​ស្ដាប់បានទេ"
+
+msgid "Could not resolve hostname"
+msgstr "មិនអាច​ដោះស្រាយ​ឈ្មោះ​ម៉ាស៊ីនបានទេ"
+
+msgid "SIP usernames may not contain whitespaces or @ symbols"
+msgstr "ឈ្មោះអ្នកប្រើ SIP អាច​មិនមាន​ចន្លោះ​មិនឃើញ ឬ​និមិត្តសញ្ញា @"
+
+msgid "SIP connect server not specified"
+msgstr "SIP តភ្ជាប់​ម៉ាស៊ីន​បម្រើ​មិន​បានបញ្ជាក់ទេ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "SIP/SIMPLE Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ SIP/SIMPLE"
+
+#. *  summary
+msgid "The SIP/SIMPLE Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ SIP/SIMPLE"
+
+msgid "Publish status (note: everyone may watch you)"
+msgstr "បោះពុម្ព​ស្ថានភាព (ចំណាំ ៖ អ្នករាល់គ្នា​អាច​មើលអ្នកបាន)"
+
+msgid "Use UDP"
+msgstr "ប្រើ UDP"
+
+msgid "Use proxy"
+msgstr "ប្រើ​ប្រូកស៊ី"
+
+msgid "Proxy"
+msgstr "ប្រូកស៊ី"
+
+msgid "Auth User"
+msgstr "ផ្ទៀងផ្ទាត់​អ្នកប្រើ"
+
+msgid "Auth Domain"
+msgstr "ផ្ទៀងផ្ទាត់​ដែន"
+
+#, c-format
+msgid "Looking up %s"
+msgstr "រកមើល %s"
+
+#, c-format
+msgid "Connect to %s failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​តភ្ជាប់ %s"
+
+#, c-format
+msgid "Signon: %s"
+msgstr "ចូល ៖ %s"
+
+#, c-format
+msgid "Unable to write file %s."
+msgstr "មិនអាច​សរសេរ​ឯកសារ %s បាននោះទេ ។"
+
+#, c-format
+msgid "Unable to read file %s."
+msgstr "មិន​អាច​អាន​ឯកសារ %s បានទេ ។"
+
+#, c-format
+msgid "Message too long, last %s bytes truncated."
+msgstr "សារ​វែងពេក បានកាត់​ឲ្យ​ខ្លីចុងក្រោយ​ត្រឹម %s បៃ ។"
+
+#, c-format
+msgid "%s not currently logged in."
+msgstr "%s បច្ចុប្បន្នមិន​បានចូល​ទេ ។"
+
+#, c-format
+msgid "Warning of %s not allowed."
+msgstr "មិន​បានអនុញ្ញាត​ការ​ព្រមានរបស់ %s ទេ ។"
+
+#, c-format
+msgid "A message has been dropped, you are exceeding the server speed limit."
+msgstr "សារ​ត្រូវ​បានទម្លាក់ អ្នកបានលើស​ដែន​កំណត់ល្បឿន​របស់​ម៉ាស៊ីនបម្រើ ។"
+
+#, c-format
+msgid "Chat in %s is not available."
+msgstr "មិនមានការ​​ជជែក​នៅ​ក្នុង %s ទេ ។"
+
+#, c-format
+msgid "You are sending messages too fast to %s."
+msgstr "អ្នកកំពុង​ផ្ញើសារ​យ៉ាង​លឿន​ទៅ %s ។"
+
+#, c-format
+msgid "You missed an IM from %s because it was too big."
+msgstr "អ្នកបាត់ IM ពី %s ពីព្រោះ​វា​ធំពេក ។"
+
+#, c-format
+msgid "You missed an IM from %s because it was sent too fast."
+msgstr "អ្នកបានបាត់ IM ពី %s ពីព្រោះ​វា​លឿន​ពេក ។"
+
+#, c-format
+msgid "Failure."
+msgstr "បរាជ័យ ។"
+
+#, c-format
+msgid "Too many matches."
+msgstr "មានការ​ផ្គូផ្គង​ច្រើនពេក ។"
+
+#, c-format
+msgid "Need more qualifiers."
+msgstr "ត្រូវការ​ឧបករណ៍​បញ្ជាក់​បន្ថែមទៀត ។"
+
+#, c-format
+msgid "Dir service temporarily unavailable."
+msgstr "សេវា Dir មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។"
+
+#, c-format
+msgid "Email lookup restricted."
+msgstr "បានដាក់កម្ងិរ​ការ​រកមើល​អ៊ីមែល ។"
+
+#, c-format
+msgid "Keyword ignored."
+msgstr "បានមិនអើពើ​ពាក្យគន្លឹះ ។"
+
+#, c-format
+msgid "No keywords."
+msgstr "គ្មាន​ពាក្យ​គន្លឹះ ។"
+
+#, c-format
+msgid "User has no directory information."
+msgstr "អ្នកប្រើ​មិនមាន​​ព័ត៌មាន​ថត​ទៀតទេ ។"
+
+#, c-format
+msgid "Country not supported."
+msgstr "មិន​បានគាំទ្រ​ប្រទេស​ទេ ។"
+
+#, c-format
+msgid "Failure unknown: %s."
+msgstr "មិនស្គាល់​ភាព​បរាជ័យ ៖ %s ។"
+
+#, c-format
+msgid "Incorrect username or password."
+msgstr "ឈ្មោះ​អ្នកប្រើ ឬ​ពាក្យសម្ងាត់​មិន​ត្រឹមត្រូវ ។"
+
+#, c-format
+msgid "The service is temporarily unavailable."
+msgstr "សេវា​មិន​អាច​ប្រើបាន​ជា​បណ្ដោះអាសន្ន ។"
+
+#, c-format
+msgid "Your warning level is currently too high to log in."
+msgstr "កម្រិត​ព្រមាន​របស់​អ្នកបច្ចុប្បន្ន​ខ្ពស់​ពេក​ត្រូវ​ចូល ។"
+
+#, c-format
+msgid ""
+"You have been connecting and disconnecting too frequently.  Wait ten minutes "
+"and try again.  If you continue to try, you will need to wait even longer."
+msgstr ""
+"អ្នក​បានតភ្ជាប់​ និង​ផ្ដាច់​ញឹកញាប់ពេក ។ រង់ចាំ​រយៈពេល​ ១០ នាទី ហើយ​ព្យាយាម​ម្ដង​ទៀត ។ ប្រសិន​បើ​អ្នកបន្ត​"
+"ព្យាយាម អ្នក​នឹង​ត្រូវ​រង់ចាំ​យូរ​ជាង​នេះ ។"
+
+#, c-format
+msgid "An unknown signon error has occurred: %s."
+msgstr "មិនស្គាល់​កំហុស​ក្នុងការ​ចូល​បានកើតឡើង ៖ %s ។"
+
+#, c-format
+msgid "An unknown error, %d, has occurred.  Info: %s"
+msgstr "មិនស្គាល់​កំហុស %d ដែល​បានកើត​ឡើង ។ ព័ត៌មាន ៖ %s"
+
+msgid "Invalid Groupname"
+msgstr "ឈ្មោះក្រុម​មិនត្រឹមត្រូវ"
+
+msgid "Connection Closed"
+msgstr "បានបិទ​ការ​តភ្ជាប់"
+
+msgid "Waiting for reply..."
+msgstr "កំពុង​រង់ចាំ​ការ​ឆ្លើយតប..."
+
+msgid "TOC has come back from its pause. You may now send messages again."
+msgstr "TOC បាន​ត្រឡប់​ពី​ការ​ផ្អាក​របស់​វា ។ ឥឡូវ​អ្នក​ផ្ញើសារ​ម្ដង​ទៀត ។"
+
+msgid "Password Change Successful"
+msgstr "ផ្លាស់ប្ដូរ​ពាក្យ​សម្ងាត់​ដោយ​ជោគជ័យ"
+
+msgid "_Group:"
+msgstr " ក្រុម ៖"
+
+msgid "Get Dir Info"
+msgstr "យក​ព័ត៌មាន Dir"
+
+msgid "Set Dir Info"
+msgstr "កំណត់​ព័ត៌មាន Dir"
+
+#, c-format
+msgid "Could not open %s for writing!"
+msgstr "មិន​អាច​បើក %s ដើម្បីសរសេរ​បានទេ !"
+
+msgid "File transfer failed; other side probably canceled."
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទេរ​ឯកសារ ផ្នែកផ្សេង​ប្រហែលជា​បានបោះបង់​ហើយ "
+
+msgid "Could not connect for transfer."
+msgstr "មិនអាច​តភ្ជាប់​ដើម្បី​ផ្ទេរ​បានទេ ។"
+
+msgid "Could not write file header.  The file will not be transferred."
+msgstr "មិនអាច​សរសេរ​បឋមកថា​ឯកសារ​បានទេ ។ ឯកសារ​នឹង​មិន​ត្រូវ​បានផ្ទេរ​ទេ ។"
+
+msgid "Save As..."
+msgstr "រក្សាទុកជា..."
+
+#, c-format
+msgid "%s requests %s to accept %d file: %s (%.2f %s)%s%s"
+msgid_plural "%s requests %s to accept %d files: %s (%.2f %s)%s%s"
+msgstr[0] "%s ស្នើ %s ឲ្យ​ទទួលឯកសារ %d ៖ %s (%.2f %s)%s%s"
+
+#, c-format
+msgid "%s requests you to send them a file"
+msgstr "%s ស្នើ​អ្នក​ឲ្យ​ផ្ញើ​ឯកសារ​ឲ្យ​ពួកវា"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "TOC Protocol Plugin"
+msgstr "កម្មវិធី​ពិធីការ TOC"
+
+#, c-format
+msgid "%s has sent you a webcam invite, which is not yet supported."
+msgstr "%s បានផ្ញើ​ការ​អញ្ជើញ​អ្នក​ឲ្យ​បើក​ម៉ាស៊ីន​ថត​តាមបណ្ដាញ ដែល​មិន​ត្រូវ​បាន​គាំទ្រ​នៅ​ឡើយទេ ។"
+
+msgid "Your Yahoo! message did not get sent."
+msgstr "យ៉ាហ៊ូ​របស់​អ្នក ! សារ​មិន​ត្រូវ​បានផ្ញើ​ទេ ។"
+
+#, c-format
+msgid "Yahoo! system message for %s:"
+msgstr "យ៉ាហ៊ូ ! សារ​ប្រព័ន្ធ​សម្រាប់ %s ៖"
+
+#, c-format
+msgid ""
+"%s has (retroactively) denied your request to add them to your list for the "
+"following reason: %s."
+msgstr ""
+"%s បាន (ប្រតិសកម្ម) បដិសេធ​សំណើ​របស់​អ្នក ដើម្បីបន្ថែមពួកគេ​ទៅ​ក្នុង​បញ្ជី​របស់អ្នក​​ដោយ​មាន​ហេតុផល​"
+"ដូចខាងក្រោម ៖ %s ។"
+
+#, c-format
+msgid "%s has (retroactively) denied your request to add them to your list."
+msgstr "%s បាន​ (ប្រតិសកម្ម) បដិសេធ​សំណើ​របស់​អ្នក ដើម្បី​បន្ថែម​ពួកគេ​ទៅ​ក្នុង​បញ្ជី​របស់​អ្នក ។"
+
+msgid "Add buddy rejected"
+msgstr "បន្ថែម​មិត្តភក្ដិ​ដែល​បាន​ច្រានចេញ"
+
+#, c-format
+msgid ""
+"The Yahoo server has requested the use of an unrecognized authentication "
+"method.  You will probably not be able to successfully sign on to Yahoo.  "
+"Check %s for updates."
+msgstr ""
+"ម៉ាស៊ីន​បម្រើ​យ៉ាហ៊ូ​បាន​ស្នើ​ឲ្យ​ប្រើ​វិធីសាស្ត្រ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹមត្រូវ​ដែល​មិន​ស្គាល់ ។  អ្នក​នឹង​ប្រហែលជា​មិនអាច​"
+"ចូល​ក្នុងយ៉ាហ៊ូ​ដោយជោគជ័យ ។ ពិនិត្យ​មើល %s សម្រាប់​ភាព​ទាន់សម័យ ។"
+
+msgid "Failed Yahoo! Authentication"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹម​ត្រូវ​របស់​យ៉ាហ៊ូ !"
+
+#, c-format
+msgid ""
+"You have tried to ignore %s, but the user is on your buddy list.  Clicking "
+"\"Yes\" will remove and ignore the buddy."
+msgstr ""
+"អ្នកបាន​ព្យាយាម​មិនអើពើ %s ប៉ុន្តែ​អ្នកប្រើ​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។ ចុច \"បាទ/ចាស\" នឹង​យក​"
+"ចេញ ហើយ​មិនអើពើ​មិត្តភក្ដិ ។"
+
+msgid "Ignore buddy?"
+msgstr "មិនអើពើ​មិត្តភក្ដិ !"
+
+msgid "Your account is locked, please log in to the Yahoo! website."
+msgstr "គណនី​របស់​អ្នកត្រូវ​បាន​ចាក់សោ សូំ​ចូល​ក្នុង​តំបន់បណ្ដាញ​របស់យ៉ាហ៊ូ !"
+
+#, c-format
+msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
+msgstr "មិន​ស្គាល់លេខ​កំហុស %d ។ ចូល​ក្នុង​តំបន់យ៉ាហ៊ូ ! អាចជួសជុល​វា​បាន ។"
+
+#, c-format
+msgid "Could not add buddy %s to group %s to the server list on account %s."
+msgstr "មិនអាច​បន្ថែម​មិត្តភក្ដិ %s ដើម្បីដាក់ %s ជា​ក្រុម​ទៅកាន់​បញ្ជីម៉ាស៊ីន​បម្រើ​នៅ​ក្នុងគណនី %s ។"
+
+msgid "Could not add buddy to server list"
+msgstr "មិនអាច​បន្ថែម​មិត្តភក្ដិ​ទៅ​កាន់បញ្ជី​ម៉ាស៊ីន​បម្រើ​ទេ"
+
+#, c-format
+msgid "[ Audible %s/%s/%s.swf ] %s"
+msgstr "[ Audible %s/%s/%s.swf ] %s"
+
+msgid "Received unexpected HTTP response from server."
+msgstr "បាន​ទទួល​កា​រឆ្លើយ​តប HTTP ពី​ម៉ាស៊ីនបម្រើ ។"
+
+msgid "Connection problem"
+msgstr "បញ្ហា​ក្នុង​ការ​តភ្ជាប់"
+
+#, c-format
+msgid ""
+"Lost connection with %s:\n"
+"%s"
+msgstr ""
+"បាត់បង់​ការ​តភ្ជាប់​ជា​មួយ %s ៖\n"
+"%s"
+
+#, c-format
+msgid ""
+"Could not establish a connection with %s:\n"
+"%s"
+msgstr ""
+"មិនអាច​បង្កើត​ការ​តភ្ជាប់​ជា​មួយ %s បានទេ ៖\n"
+"%s"
+
+msgid "Not at Home"
+msgstr "មិននៅ​ផ្ទះ​ទេ"
+
+msgid "Not at Desk"
+msgstr "មិននៅ​តុ​ទេ"
+
+msgid "Not in Office"
+msgstr "មិន​នៅ​ក្នុងការិយាល័យ​ទេ"
+
+msgid "On Vacation"
+msgstr "បវេស្សនកាល"
+
+msgid "Stepped Out"
+msgstr "ចេញ"
+
+msgid "Not on server list"
+msgstr "មិន​នៅ​ក្នុង​បញ្ជី​ម៉ាស៊ីនបម្រើ​ទេ"
+
+msgid "Appear Online"
+msgstr "បង្ហាញ​លើ​បណ្ដាញ"
+
+msgid "Appear Permanently Offline"
+msgstr "បង្ហាញ​នៅ​ក្រៅ​បណ្ដាញ​ជា​អចិន្ត្រៃយ៍"
+
+msgid "Presence"
+msgstr "វត្តមាន"
+
+msgid "Appear Offline"
+msgstr "បង្ហាញ​នៅ​ក្រៅ​បណ្ដាញ"
+
+msgid "Don't Appear Permanently Offline"
+msgstr "កុំបង្ហាញ​នៅ​ក្រៅ​បណ្ដាញ​អចិន្ត្រៃយ៍"
+
+msgid "Join in Chat"
+msgstr "ចូលរួម​ក្នុងកា​រជជែក"
+
+msgid "Initiate Conference"
+msgstr "ចាប់ផ្ដើម​សន្និសីទ"
+
+msgid "Presence Settings"
+msgstr "ការ​កំណត់​វត្តមាន"
+
+msgid "Start Doodling"
+msgstr "ចាប់ផ្ដើម Doodling"
+
+msgid "Activate which ID?"
+msgstr "ធ្វើ​ឲ្យ​សកម្ម​នូវ​លេខសម្គាល់​ណា​មួយ ?"
+
+msgid "Join whom in chat?"
+msgstr "អ្នកណា​ចូលរួម​ក្នុងកា​រជជែក ?"
+
+msgid "Activate ID..."
+msgstr "ធ្វើ​ឲ្យ​លេខសម្គាល់​សកម្ម..."
+
+msgid "Join User in Chat..."
+msgstr "ចូលរួម​អ្នកប្រើ​នៅ​ក្នុង​ការ​ជជែក..."
+
+msgid "Open Inbox"
+msgstr "បើក​ប្រអប់"
+
+msgid "join &lt;room&gt;:  Join a chat room on the Yahoo network"
+msgstr "ចូលរួម &lt;room&gt; ៖  ចូលរួម​បន្ទប់​ជជែក​នៅ​ក្នុង​បណ្ដាញ​យ៉ាហ៊ូ"
+
+msgid "list: List rooms on the Yahoo network"
+msgstr "បញ្ជី ៖ រាយ​បន្ទប់​នៅ​ក្នុង​បណ្ដាញ​របស់​យ៉ាហ៊ូ"
+
+msgid "doodle: Request user to start a Doodle session"
+msgstr "doodle ៖ ស្នើ​អ្នកប្រើ​ឲ្យ​ចាប់ផ្ដើម​សម័យ​របស់ Doodle"
+
+msgid "Yahoo ID..."
+msgstr "លេខ​សម្គាល់​របស់​យ៉ាហ៊ូ..."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Yahoo Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ​របស់យ៉ាហ៊ូ"
+
+msgid "Yahoo Japan"
+msgstr "យ៉ាហ៊ូ​ ជប៉ុន"
+
+msgid "Pager server"
+msgstr "ម៉ាស៊ីនបម្រើ​ភេយ័រ"
+
+msgid "Japan Pager server"
+msgstr "ម៉ាស៊ីន​បម្រើ​ភេយ័រ​ជប៉ុន"
+
+msgid "Pager port"
+msgstr "ច្រក​ភេយ័រ"
+
+msgid "File transfer server"
+msgstr "ម៉ាស៊ីនបម្រើ​ផ្ទេរ​ឯកសារ"
+
+msgid "Japan file transfer server"
+msgstr "ម៉ាស៊ីនបម្រើ​ផ្ទេរ​ឯកសារ​ជប៉ុន"
+
+msgid "File transfer port"
+msgstr "ច្រក​ផ្ទេរ​ឯកសារ"
+
+msgid "Chat room locale"
+msgstr "បន្ទប់​ជជែក​មូលដ្ឋាន"
+
+msgid "Ignore conference and chatroom invitations"
+msgstr "មិនអើពើ​សន្និសីទ និង​ការ​អញ្ជើញ​របស់​បន្ទប់​ជជែក"
+
+msgid "Chat room list URL"
+msgstr "URL បញ្ជី​បន្ទប់​ជជែក"
+
+msgid "Yahoo Chat server"
+msgstr "ម៉ាស៊ីនបម្រើ​ជជែក​យ៉ាហ៊ូ"
+
+msgid "Yahoo Chat port"
+msgstr "ច្រក​ជជែក​យ៉ាហ៊ូ"
+
+#. Write a local message to this conversation showing that a request for a
+#. * Doodle session has been made
+#.
+msgid "Sent Doodle request."
+msgstr "បានផ្ញើ​សំណើ Doodle ។"
+
+msgid "Unable to establish file descriptor."
+msgstr "មិនអាច​បង្កើត​​ឧបករណ៍​ពិពណ៌នា​ឯកសារ​បានទេ ។"
+
+#, c-format
+msgid "%s is trying to send you a group of %d files.\n"
+msgstr "%s កំពុង​ព្យាយាម​ផ្ញើ​ឲ្យ​អ្នក​នូវ​ក្រុម​ឯកសារ %d ។\n"
+
+msgid "Yahoo! Japan Profile"
+msgstr "ទម្រង់​យ៉ាហ៊ូ ជប៉ុន"
+
+msgid "Yahoo! Profile"
+msgstr "ទម្រង់ យ៉ាហ៊ូ !"
+
+msgid ""
+"Sorry, profiles marked as containing adult content are not supported at this "
+"time."
+msgstr "សូម​អភ័យ​ទោស ទម្រង់​បាន​សម្គាល់ថា​មាន​មាតិកា​​មនុស្ស​ពេញវ័យ​មិន​ត្រូវ​បានគាំទ្រ​នៅ​ពេល​នេះ​ទេ ។"
+
+msgid ""
+"If you wish to view this profile, you will need to visit this link in your "
+"web browser:"
+msgstr "ប្រសិន​បើ​អ្នក​ចង់​មើល​ជម្រង់​នេះ អ្នកត្រូវតែ​ទស្សនា​តំណ​នេះ​នៅ​ក្នុង​កម្មវិធី​រុករក​បណ្តាញ​របស់​អ្នក ៖"
+
+msgid "Yahoo! ID"
+msgstr "លេខ​សម្គាល់​របស់​យ៉ាហ៊ូ !"
+
+msgid "Hobbies"
+msgstr "ចំណូល​ចិត្ត"
+
+msgid "Latest News"
+msgstr "ព័ត៌មាន​ចុងក្រោយ"
+
+msgid "Home Page"
+msgstr "គេហទំព័រ"
+
+msgid "Cool Link 1"
+msgstr "តំណ ១"
+
+msgid "Cool Link 2"
+msgstr "តំណ ២"
+
+msgid "Cool Link 3"
+msgstr "តំណ ៣"
+
+msgid "Last Update"
+msgstr "ភាព​ទាន់សម័យ​ចុងក្រោយ"
+
+msgid ""
+"This profile is in a language or format that is not supported at this time."
+msgstr "ទម្រង់​នេះ​ស្ថិត​ក្នុង​ភាសា ឬ​ទ្រង់ទ្រាយ​ដែល​មិន​បាន​គាំទ្រ​នៅពេល​នេះ​ទេ ។"
+
+msgid ""
+"Could not retrieve the user's profile. This most likely is a temporary "
+"server-side problem. Please try again later."
+msgstr ""
+"មិនអាច​ទៅយក​ទម្រង់​របស់​អ្នកប្រើ​បានទេ ។ វា​ទំនង​ជា​បញ្ហា​ខាង​ម៉ាស៊ីនបម្រើជា​បណ្ដោះអាសន្ន ។ សូម​ព្យាយាម​"
+"ម្ដង​ទៀត​ពេល​ក្រោយ ។"
+
+msgid ""
+"Could not retrieve the user's profile. This most likely means that the user "
+"does not exist; however, Yahoo! sometimes does fail to find a user's "
+"profile. If you know that the user exists, please try again later."
+msgstr ""
+"មិនអាច​ទៅ យក​ទម្រង់​របស់​អ្នកប្រើបានទេ ។ វា​ទំនង​ជា​មាន​ន័យ​ថា ​មិនទាន់​មាន​អ្នកប្រើ​ទេ ទោះ​ជា​យ៉ាង​ណា​ក៏​"
+"ដោយ យ៉ាហ៊ូ ពេលខ្លះ​បានអនុវត្ត​មិនជោគជ័យ​ដើម្បីរក​ទម្រង់​របស់​អ្នក​ប្រើ ។ ប្រសិនបើ​អ្នក​ដឹង​ថា​មាន​អ្នកប្រើហើយ "
+"សូម​ព្យាយាម​ម្ដង​ទៀត​នៅ​ពេល​ក្រោយ ។"
+
+msgid "The user's profile is empty."
+msgstr "ទម្រង់​របស់​អ្នកប្រើ​ទទេរ ។"
+
+#, c-format
+msgid "%s declined your conference invitation to room \"%s\" because \"%s\"."
+msgstr "%s បានបដិសេធ​ការ​អញ្ជើញ​សន្និសីទ​របស់​អ្នក​​ក្នុង​បន្ទប់ \"%s\" ដោយ​សារតែ \"%s\" ។"
+
+msgid "Invitation Rejected"
+msgstr "បានបដិសេធ​ការ​អញ្ជើញ"
+
+msgid "Failed to join chat"
+msgstr "បានបរាជ័យ​ក្នុងការ​ចូលរួម​ក្នុងការ​ជជែក"
+
+#. -6
+msgid "Unknown room"
+msgstr "មិន​ស្គាល់​បន្ទប់"
+
+#. -15
+msgid "Maybe the room is full"
+msgstr "ប្រហែល​ជា​បន្ទប់ពេញ​ហើយ"
+
+#. -35
+msgid "Not available"
+msgstr "មិនមាន"
+
+msgid ""
+"Unknown error. You may need to logout and wait five minutes before being "
+"able to rejoin a chatroom"
+msgstr "មិនស្គាល់​កំហុស ។ អ្នក​ត្រូវ​តែ​ចេញ ហើយ​រង់ចាំ​ប្រាំ​នាទី​ មុននឹង​អាច​ចូលរួម​ក្នុង​បន្ទប់​ជជែក​ម្ដង​ទៀត"
+
+#, c-format
+msgid "You are now chatting in %s."
+msgstr "ឥឡូវ​អ្នកកំពុង​ជជែក​​នៅ​ក្នុង %s ។"
+
+msgid "Failed to join buddy in chat"
+msgstr "បានបរាជ័យ​ក្នុងកា​រ​បញ្ចូល​មិត្តភក្ដិ​ក្នុងកា​រជជែក"
+
+msgid "Maybe they're not in a chat?"
+msgstr "ប្រហែល​ជា​មិនមាន​នៅ​ក្នុងការ​ជជែក​ទេ ?"
+
+msgid "Fetching the room list failed."
+msgstr "បាន​បរាជ័យ​ក្នុងការ​​ទៅយក​បញ្ជី​បន្ទប់ ។"
+
+msgid "Voices"
+msgstr "សំឡេង"
+
+msgid "Webcams"
+msgstr "ម៉ាស៊ីន​ថត​តាមបណ្ដាញ"
+
+msgid "Unable to fetch room list."
+msgstr "មិនអាច​ទៅ​យក​បញ្ជី​បន្ទប់​បានទេ ។"
+
+msgid "User Rooms"
+msgstr "បន្ទប់​អ្នកប្រើ"
+
+msgid "Connection problem with the YCHT server."
+msgstr "បញ្ហា​ក្នុងកា​រតភ្ជាប់​ជា​មួយ​ម៉ាស៊ីន​បម្រើ YCHT ។"
+
+#, c-format
+msgid ""
+"Lost connection with server\n"
+"%s"
+msgstr ""
+"បាត់បង់​ការ​តភ្ជាប់​ជា​មួយ​ម៉ាស៊ីនបម្រើ\n"
+"%s"
+
+msgid ""
+"(There was an error converting this message.\t Check the 'Encoding' option "
+"in the Account Editor)"
+msgstr "(មានកំហុសក្នុងបម្លែង​សារ​នេះ ។ គូសធីក​ជម្រើស 'ការ​អ៊ិនកូដ' នៅ ក្នុង​កម្មវិធី​កែសម្រួល​គណនី)"
+
+#, c-format
+msgid "Unable to send to chat %s,%s,%s"
+msgstr "មិនអាច​ផ្ញើ​ទៅកាន់ការ​ជជែក %s,%s,%s បានទេ"
+
+msgid "Hidden or not logged-in"
+msgstr "បានលាក់ ឬ​មិនបានចូល"
+
+#, c-format
+msgid "<br>At %s since %s"
+msgstr "<br>នៅ %s តាំង​ពី %s"
+
+msgid "Anyone"
+msgstr "អ្នករាល់គ្នា"
+
+msgid "_Class:"
+msgstr "ថ្នាក់"
+
+msgid "_Instance:"
+msgstr "ធាតុ ៖"
+
+msgid "_Recipient:"
+msgstr "អ្នក​ទទួល ៖"
+
+#, c-format
+msgid "Attempt to subscribe to %s,%s,%s failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​​ប៉ុនប៉ង​ជាវ %s,%s,%s"
+
+msgid "zlocate &lt;nick&gt;: Locate user"
+msgstr "zlocate &lt;nick&gt; ៖ កំណត់​ទីតាំង​អ្នកប្រើ"
+
+msgid "zl &lt;nick&gt;: Locate user"
+msgstr "zl &lt;nick&gt; ៖ កំណត់​ទីតាំង​អ្នកប្រើ"
+
+msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
+msgstr "ធាតុ &lt;instance&gt; ៖ កំណត់​ធាតុ​ត្រូវ​ប្រើ​នៅ​ក្នុង​ថ្នាក់​នេះ"
+
+msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
+msgstr "inst &lt;instance&gt; ៖ កំណត់​ធាតុ​ត្រូវ​ប្រើ​នៅ​ក្នុង​ថ្នាក់​នេះ"
+
+msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
+msgstr "ប្រធានបទ &lt;instance&gt; ៖ កំណត់​ធាតុ​ត្រូវ​ប្រើនៅ​ក្នុង​ថ្នាក់នេះ"
+
+msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
+msgstr ""
+"sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt; ៖ ចូលរួម​ក្នុងការ​ជជែក​ថ្មី"
+
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr "zi &lt;instance&gt; ; ផ្ញើសារ​ទៅ &lt;សារ<i>ធាតុ</i>,*&gt;"
+
+msgid ""
+"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
+"<i>instance</i>,*&gt;"
+msgstr ""
+"zci &lt;class&gt; &lt;instance&gt; ៖ ផ្ញើសារ​ទៅ &lt;<i>ថ្នាក់</i>,<i>ធាតុ</i>,"
+"*&gt;"
+
+msgid ""
+"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
+"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt; ៖ ផ្ញើសារ​ទៅ &lt;"
+"<i>ថ្នាក់</i>,<i>ធាតុ</i>,<i>អ្នក​ទទួល</i>&gt;"
+
+msgid ""
+"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
+"<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+"zir &lt;instance&gt; &lt;recipient&gt; ៖ ផ្ញើសារ​ទៅ &lt;MESSAGE,<i>instance</"
+"i>,<i>recipient</i>&gt;"
+
+msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
+msgstr "zc &lt;class&gt; ៖ ផ្ញើសារទៅកាន់ &lt;<i>class</i>,PERSONAL,*&gt;"
+
+msgid "Resubscribe"
+msgstr "ជាវ​ឡើង​វិញ"
+
+msgid "Retrieve subscriptions from server"
+msgstr "ទៅយក​ការជាវ​ពី​ម៉ាស៊ីនបម្រើ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Zephyr Protocol Plugin"
+msgstr "កម្មវិធី​ជំនួយ​ពិធីការ Zephyr"
+
+msgid "Use tzc"
+msgstr "ប្រើ tzc"
+
+msgid "tzc command"
+msgstr "ពាក្យ​បញ្ជា tzc"
+
+msgid "Export to .anyone"
+msgstr "នាំចេញ​ទៅ .anyone"
+
+msgid "Export to .zephyr.subs"
+msgstr "នាំចេញ​ទៅ .zephyr.subs"
+
+msgid "Import from .anyone"
+msgstr "នាំចូល​ពី .anyone"
+
+msgid "Import from .zephyr.subs"
+msgstr "នាំចូល​ពី .zephyr.subs"
+
+msgid "Realm"
+msgstr "Realm"
+
+msgid "Exposure"
+msgstr "បង្ហាញ"
+
+#, c-format
+msgid ""
+"Unable to create socket:\n"
+"%s"
+msgstr ""
+"មិនអាច​បង្កើត​រន្ធ ៖\n"
+"%s"
+
+#, c-format
+msgid "Unable to parse response from HTTP proxy: %s\n"
+msgstr "មិនអាច​ញែក​ការ​ឆ្លើយតប​ពី​ប្រូកស៊ី HTTP ៖ %s\n"
+
+#, c-format
+msgid "HTTP proxy connection error %d"
+msgstr "កំហុសក្នុងការ​តភ្ជាប់ប្រូកស៊ី HTTP %d"
+
+#, c-format
+msgid "Access denied: HTTP proxy server forbids port %d tunneling."
+msgstr "បដិសេធ ៖ ម៉ាស៊ីនបម្រើប្រូកស៊ី HTTP ហាមឃាត់​ច្រក %d ។"
+
+#, c-format
+msgid "Error resolving %s"
+msgstr "កំហុស​ក្នុងការ​ដោះស្រាយ %s"
+
+msgid "Could not resolve host name"
+msgstr "មិនអាច​ដោះស្រាយ​ឈ្មោះម៉ាស៊ីនបានទេ"
+
+#, c-format
+msgid "Requesting %s's attention..."
+msgstr "កំពុងស្នើ​កា​រចាប់អារម្មណ៍​​របស់ %s..."
+
+#, c-format
+msgid "%s has requested your attention!"
+msgstr "%s បាន​ស្នើ​កា​រចាប់អារម្មណ៍​អ្នកប្រើ !"
+
+#. *
+#. * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
+#.
+msgid "_Yes"
+msgstr "បាទ/ចាស"
+
+msgid "_No"
+msgstr "ទេ"
+
+#. *
+#. * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
+#.
+msgid "_Accept"
+msgstr "យល់​​​ព្រម​"
+
+#. *
+#. * The default message to use when the user becomes auto-away.
+#.
+msgid "I'm not here right now"
+msgstr "ខ្ញុំ​មិននៅ​ទីនេះ​ទេ​ឥឡូវ"
+
+msgid "saved statuses"
+msgstr "បានរក្សាទុ​ស្ថានភាព"
+
+#, c-format
+msgid "%s is now known as %s.\n"
+msgstr "%s ឥឡូវ​ត្រូវ​បាន​ស្គាល់​ជា %s ។\n"
+
+#, c-format
+msgid ""
+"%s has invited %s to the chat room %s:\n"
+"%s"
+msgstr ""
+"%s បាន​អញ្ជើញ %s ឲ្យ​ចូលរួម​ក្នុង​បន្ទប់ %s ៖\n"
+"%s"
+
+#, c-format
+msgid "%s has invited %s to the chat room %s\n"
+msgstr "%s បានអញ្ជើញ %s ឲ្យ​ចូលរួម​ក្នុង​បន្ទប់​ជជែក %s\n"
+
+msgid "Accept chat invitation?"
+msgstr "ព្រម​ទទួល​ការអញ្ជើញ​នៃ​កា​រជជែក ?"
+
+#. Shortcut
+msgid "Shortcut"
+msgstr "ផ្លូវ​កាត់"
+
+msgid "The text-shortcut for the smiley"
+msgstr "ផ្លូវកាត់​អត្ថបទ​សម្រាប់​សញ្ញា​អារម្មណ៍"
+
+#. Stored Image
+msgid "Stored Image"
+msgstr "រូបភាព​ដែល​បានទុក"
+
+msgid "Stored Image. (that'll have to do for now)"
+msgstr "រូបភាព​ដែលបានទុក ។ (ដែល​ត្រូ​វធ្វើ​ឥឡូវ)"
+
+msgid "SSL Connection Failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​តភ្ជាប់ SSL"
+
+msgid "SSL Handshake Failed"
+msgstr "បាន​បរាជ័យ​ក្នុងការ​ចាប់ដៃ SSL"
+
+msgid "SSL peer presented an invalid certificate"
+msgstr "គូ SSL បាន​បង្ហាញ​​វិញ្ញាបនបត្រ​មិន​ត្រឹមត្រូវ"
+
+msgid "Unknown SSL error"
+msgstr "មិនស្គាល់​កំហុស SSL"
+
+msgid "Unset"
+msgstr "មិន​បានកំណត់Unset"
+
+msgid "Do not disturb"
+msgstr "កុំ​រំខាន"
+
+msgid "Extended away"
+msgstr "បាន​ពង្រីក​ការ​ចាកឆ្ងាយ"
+
+msgid "Mobile"
+msgstr "ចល័ត"
+
+msgid "Listening to music"
+msgstr "ស្ដាប់​តន្ត្រី"
+
+#, c-format
+msgid "%s (%s) changed status from %s to %s"
+msgstr "%s (%s) បាន​ផ្លាស់ប្ដូរ​ស្ថានភាព​ពី %s ទៅ​ជា %s"
+
+#, c-format
+msgid "%s (%s) is now %s"
+msgstr "%s (%s) ឥឡូវ​គឺ %s"
+
+#, c-format
+msgid "%s (%s) is no longer %s"
+msgstr "%s (%s) មិនមានទៀតទេ %s"
+
+#, c-format
+msgid "%s became idle"
+msgstr "%s ក្លាយ​ជា​ទំនេរ"
+
+#, c-format
+msgid "%s became unidle"
+msgstr "%s ក្លាយ​ជា​មិនទំនេរ"
+
+#, c-format
+msgid "+++ %s became idle"
+msgstr "+++ %s ក្លាយជា​ទំនេរ"
+
+#, c-format
+msgid "+++ %s became unidle"
+msgstr "+++ %s ក្លាយ​ជា​មិន​ទំនេរ"
+
+#.
+#. * This string determines how some dates are displayed.  The default
+#. * string "%x %X" shows the date then the time.  Translators can
+#. * change this to "%X %x" if they want the time to be shown first,
+#. * followed by the date.
+#.
+#, c-format
+msgid "%x %X"
+msgstr "%x %X"
+
+#, c-format
+msgid "Error Reading %s"
+msgstr "កំហុស​ក្នុងការ​អាន %s"
+
+#, c-format
+msgid ""
+"An error was encountered reading your %s.  They have not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"មាន​កំហុស​ក្នុងការ​អាន​ %s របស់​​អ្នក ។ ពួកវា​មិន​ត្រូវ​បានផ្ទុក​ទេ ហើយ​ឯកសារ​ចាស់​ត្រូវ​បាន​ប្ដូរ​ឈ្មោះ​ទៅជា %"
+"s~."
+
+msgid "Calculating..."
+msgstr "កំពុង​គណនា..."
+
+msgid "Unknown."
+msgstr "មិន​ស្គាល់ ។"
+
+#, c-format
+msgid "%d second"
+msgid_plural "%d seconds"
+msgstr[0] "%d វិនាទី"
+
+#, c-format
+msgid "%d day"
+msgid_plural "%d days"
+msgstr[0] "%d ថ្ងៃ"
+
+#, c-format
+msgid "%s, %d hour"
+msgid_plural "%s, %d hours"
+msgstr[0] "%s, %d ម៉ោង"
+
+#, c-format
+msgid "%d hour"
+msgid_plural "%d hours"
+msgstr[0] "%d ម៉ោង"
+
+#, c-format
+msgid "%s, %d minute"
+msgid_plural "%s, %d minutes"
+msgstr[0] "%s, %d នាទី"
+
+#, c-format
+msgid "%d minute"
+msgid_plural "%d minutes"
+msgstr[0] "%d នាទី"
+
+#, c-format
+msgid "Could not open %s: Redirected too many times"
+msgstr "មិន​អាច​បើក %s ៖ បានបញ្ជូនច្រើនដង​ពេក"
+
+#, c-format
+msgid "Unable to connect to %s"
+msgstr "មិនអាច​តភ្ជាប់​ទៅ %s"
+
+#, c-format
+msgid "Error reading from %s: response too long (%d bytes limit)"
+msgstr "កំហុស​ក្នុងកា​រអាន​ពី %s ៖ កា​រឆ្លើយតប​វែងពេក (ដែន​កំណត់ %d បៃ)"
+
+#, c-format
+msgid ""
+"Unable to allocate enough memory to hold the contents from %s.  The web "
+"server may be trying something malicious."
+msgstr ""
+"មិនអាច​បម្រុង​ទុក​សតិ​គ្រប់គ្រាន់​ដើម្បី​ផ្ទុកមាតិកា​ពី %s បានទេ ។ ម៉ាស៊ីនបម្រើបណ្ដាញ​ប្រហែលជា​​ព្យាយាម​អ្វី​ដែល​​"
+"មិនល្អ ។"
+
+#, c-format
+msgid "Error reading from %s: %s"
+msgstr "កំហុស​ក្នុងការ​អាន​ពី %s: %s"
+
+#, c-format
+msgid "Error writing to %s: %s"
+msgstr "កំហុស​ក្នុងការ​សរសេរ​ទៅ​កាន់ %s: %s"
+
+#, c-format
+msgid "Unable to connect to %s: %s"
+msgstr "មិនអាច​តភ្ជាប់​ទៅកាន់ %s: %s"
+
+#, c-format
+msgid " - %s"
+msgstr " - %s"
+
+#, c-format
+msgid " (%s)"
+msgstr " (%s)"
+
+#. 10053
+#, c-format
+msgid "Connection interrupted by other software on your computer."
+msgstr "ការ​តភ្ជាប់​បានផ្អាក​ដោយ​កម្មវិធី​ផ្សេង​នៅ​ក្នុង​កុំព្យូទ័រ​របស់ ។"
+
+#. 10054
+#, c-format
+msgid "Remote host closed connection."
+msgstr "ការ​តភ្ជាប់​បានបិទ​ពី​ម៉ាស៊ីន​ពី​ចម្ងាយ ។"
+
+#. 10060
+#, c-format
+msgid "Connection timed out."
+msgstr "អស់ពេល​តភ្ជាប់ ។"
+
+#. 10061
+#, c-format
+msgid "Connection refused."
+msgstr "បានបដិសេធ​កា​រតភ្ជាប់ ។"
+
+#. 10048
+#, c-format
+msgid "Address already in use."
+msgstr "អាសយដ្ឋាន​កំពុង​ប្រើ​ហើយ ។"
+
+msgid "Internet Messenger"
+msgstr "កម្មវិធី​ផ្ញើសារ​អ៊ីនធឺណិត"
+
+msgid "Pidgin Internet Messenger"
+msgstr "កម្មវិធី​ផ្ញើសារ​អ៊ីនធឺណិត​របស់ Pidgin"
+
+msgid "Send instant messages over multiple protocols"
+msgstr "ផ្ញើសារ​បន្ទាន់​តាម​ពិធីការ​ជា​ច្រើន"
+
+msgid "Orientation"
+msgstr "ទិស"
+
+msgid "The orientation of the tray."
+msgstr "ទិស​របស់​ថាស ។"
+
+#. Build the login options frame.
+msgid "Login Options"
+msgstr "ជម្រើស​​ចូល"
+
+msgid "Pro_tocol:"
+msgstr "ពិធីការ ៖"
+
+msgid "_Username:"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ ៖"
+
+msgid "Remember pass_word"
+msgstr "ចងចាំ​ពាក្យ​សម្ងាត់"
+
+#. Build the user options frame.
+msgid "User Options"
+msgstr "ជម្រើស​អ្នកប្រើ"
+
+msgid "_Local alias:"
+msgstr "ឈ្មោះក្លែងក្លាយ​មូលដ្ឋាន ៖"
+
+msgid "New _mail notifications"
+msgstr "ការ​ជូនដំណឹង​សំបុត្រ​ថ្មី"
+
+#. Buddy icon
+msgid "Use this buddy _icon for this account:"
+msgstr "ប្រើ​រូបតំណាង​មិត្តភក្ដិ​នេះ​សម្រាប់គណនី​នេះ ៖"
+
+#. Build the protocol options frame.
+#, c-format
+msgid "%s Options"
+msgstr "ជម្រើស %s"
+
+msgid "Use GNOME Proxy Settings"
+msgstr "ប្រើ​ការ​កំណត់​ប្រូកស៊ី​របស់ GNOME"
+
+msgid "Use Global Proxy Settings"
+msgstr "ប្រើ​ការ​កំណត់​ប្រូកស៊ី​សកល"
+
+msgid "No Proxy"
+msgstr "គ្មានប្រូកស៊ី"
+
+msgid "HTTP"
+msgstr "HTTP"
+
+msgid "SOCKS 4"
+msgstr "SOCKS 4"
+
+msgid "SOCKS 5"
+msgstr "SOCKS 5"
+
+msgid "Use Environmental Settings"
+msgstr "ការ​កំណត់​បរិស្ថាន​អ្នក​ប្រើ"
+
+#. This is an easter egg.
+#. It means one of two things, both intended as humourus:
+#. A) your network is really slow and you have nothing better to do than
+#. look at butterflies.
+#. B)You are looking really closely at something that shouldn't matter.
+msgid "If you look real closely"
+msgstr "ប្រសិនបើ​អ្នក​មើល​ទៅ​ពិតជា​ជិត​ណាស់"
+
+#. This is an easter egg. See the comment on the previous line in the source.
+msgid "you can see the butterflies mating"
+msgstr "អ្នកអាច​មើល​ butterflies mating"
+
+msgid "Proxy Options"
+msgstr "ជម្រើសប្រូកស៊ី"
+
+msgid "Proxy _type:"
+msgstr "ប្រភេទ​ប្រូកស៊ី ៖"
+
+msgid "_Host:"
+msgstr "ម៉ាស៊ីន ៖"
+
+msgid "_Port:"
+msgstr "ច្រក ៖"
+
+msgid "Pa_ssword:"
+msgstr "ពាក្យ​សម្ងាត់ ៖"
+
+msgid "Unable to save new account"
+msgstr "មិនអាច​រក្សាទុក​គណនី​ថ្មី​បានទេ"
+
+msgid "An account already exists with the specified criteria."
+msgstr "មានគណនី​រួច​ហើយ​ជា​មួយនឹង​លក្ខខណ្ឌ​ដែល​បាន​បញ្ជាក់ ។"
+
+msgid "Add Account"
+msgstr "បន្ថែម​គណនី"
+
+msgid "_Basic"
+msgstr "មូលដ្ឋាន"
+
+msgid "Create _this new account on the server"
+msgstr "បង្កើត​គណនី​ថ្មី​នៅ​លើ​ម៉ាស៊ីនបម្រើ"
+
+msgid "_Advanced"
+msgstr "កម្រិត​ខ្ពស់"
+
+msgid "Enabled"
+msgstr "បានបើក"
+
+msgid "Protocol"
+msgstr "ពិធីការ"
+
+#, c-format
+msgid ""
+"<span size='larger' weight='bold'>Welcome to %s!</span>\n"
+"\n"
+"You have no IM accounts configured. To start connecting with %s press the "
+"<b>Add...</b> button below and configure your first account. If you want %s "
+"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
+"them all.\n"
+"\n"
+"You can come back to this window to add, edit, or remove accounts from "
+"<b>Accounts->Manage Accounts</b> in the Buddy List window"
+msgstr ""
+"<span size='larger' weight='bold'>សូម​ស្វាគមន៍​មកកាន់ %s!</span>\n"
+"\n"
+"អ្នក​មិនមាន​គណនី IM បានកំណត់​រចនាសម្ព័ន្ធ​ទេ ។ ដើម្បីចាប់ផ្ដើម​ការ​តភ្ជាប់​ជា​មួយ​ %s ចុចប៊ូតុង "
+"<b>បន្ថែម...</b> ខាង​ក្រោម​ និង​កំណត់​រចនាសម្ព័ន្ធ​គណនី​ដំបូង​របស់​អ្នក ។ ប្រសិនបើ​អ្នក​ចង់​ឲ្យ %s តភ្ជាប់​ទៅ​"
+"គណនី IM ជា​ច្រើន ចុច​ <b>បន្ថែម...</b> ដើម្បី​កំណត់​រចនាសម្ព័ន្ធ​ពួកវា​ទាំង​អស់ ។\n"
+"\n"
+"You can come back to this window to add, edit, or remove accounts from "
+"<b>Accounts->Manage Accounts</b> in the Buddy List window"
+
+#, c-format
+msgid "You have %d contact named %s. Would you like to merge them?"
+msgid_plural ""
+"You currently have %d contacts named %s. Would you like to merge them?"
+msgstr[0] "អ្នកបច្ចុប្បន្ន​មាន​ទំនាក់ទំនង %d ដែល​មាន​ឈ្មោះ %s ។ តើ​អ្នកចង់​បញ្ចូល​ពួកវា​ដែរឬទេ ?"
+
+msgid ""
+"Merging these contacts will cause them to share a single entry on the buddy "
+"list and use a single conversation window. You can separate them again by "
+"choosing 'Expand' from the contact's context menu"
+msgstr ""
+"បញ្ចូល​ទំនាក់ទំនង​ទាំង​នេះ​នឹង​បណ្ដាល​ឲ្យ​ពួកវា​ចែករំលែក​ធាតុតែ​មួយ​នៅ​ក្នុង​បញ្ជីមិត្តភក្ដិ ហើយ​ប្រើ​បង្អួច​សន្ទនា​តែ​"
+"មួយ ។ អ្នកអាច​បំបែក​ពួកវា​ម្ដង​ទៀត ដោយ​ជ្រើស 'ពង្រីក' ពី​ម៉ឺនុយ​បរិបទ​របស់ទំនាក់ទំនង"
+
+msgid "Please update the necessary fields."
+msgstr "សូម​ធ្វើ​ឲ្យ​វាល​ដែល​ចាំបាច់ទាន់សម័យ ។"
+
+msgid "Room _List"
+msgstr "បញ្ជី​បន្ទប់"
+
+msgid ""
+"Please enter the appropriate information about the chat you would like to "
+"join.\n"
+msgstr "សូម​បញ្ចូល​ព័ត៌មាន​ដេល​សមរម្យ​អំពីការជជែក​ដែល​នឹង​ចូលរួម ។\n"
+
+msgid "_Account:"
+msgstr "គណនី ៖"
+
+msgid "_Block"
+msgstr "ទប់ស្កាត់"
+
+msgid "Un_block"
+msgstr "មិន​ទប់ស្កាត់"
+
+msgid "Move to"
+msgstr "ផ្លាស់ទី​ទៅ"
+
+msgid "Get _Info"
+msgstr "យក​ព័ត៌មាន"
+
+msgid "I_M"
+msgstr "IM"
+
+msgid "_Send File..."
+msgstr "ផ្ញើ​ឯកសារ..."
+
+msgid "Add Buddy _Pounce..."
+msgstr "បន្ថែម​ក្រុម​មិត្តភក្ដិ..."
+
+msgid "View _Log"
+msgstr "កំណត់​ហេតុ​មើល"
+
+msgid "Hide when offline"
+msgstr "លាក់​នៅពេល​នៅ​ក្រៅបណ្ដាញ"
+
+msgid "_Alias..."
+msgstr "ឈ្មោះ​ក្លែងក្លាយ..."
+
+msgid "_Remove"
+msgstr "យក​ចេញ"
+
+msgid "Set Custom Icon"
+msgstr "កំណត់​រូបតំណាង​ផ្ទាល់ខ្លួន"
+
+msgid "Remove Custom Icon"
+msgstr "យក​រូបតំណាង​ផ្ទាល់ខ្លួន​ចេញ"
+
+msgid "Add _Buddy..."
+msgstr "បន្ថែម​មិត្តភក្ដិ..."
+
+msgid "Add C_hat..."
+msgstr "បន្ថែមការ​ជជែក..."
+
+msgid "_Delete Group"
+msgstr "លុបក្រុម"
+
+msgid "_Rename"
+msgstr "ប្តូរ​​ឈ្មោះ​"
+
+#. join button
+msgid "_Join"
+msgstr "ចូលរួម"
+
+msgid "Auto-Join"
+msgstr "ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Persistent"
+msgstr "មិនព្រម"
+
+msgid "_Edit Settings..."
+msgstr "កែសម្រួល​ការ​កំណត់..."
+
+msgid "_Collapse"
+msgstr "វេញ"
+
+msgid "_Expand"
+msgstr "ពង្រីក"
+
+msgid "/Tools/Mute Sounds"
+msgstr "/ឧបករណ៍/ស្ងាត់"
+
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
+msgstr "អ្នកបច្ចុប្បន្នមិន​ត្រូវ​បានចូល​ដោយ​ប្រើ​គណនី​ដែលអាច​បន្ថែម​មិត្តភក្ដិ​នោះ​ទេ ។"
+
+#. I don't believe this can happen currently, I think
+#. * everything that calls this function checks for one of the
+#. * above node types first.
+msgid "Unknown node type"
+msgstr "មិនស្គាល់ប្រភេទ​ថ្នាំង"
+
+#. Buddies menu
+msgid "/_Buddies"
+msgstr "/មិត្តភក្ដិ"
+
+msgid "/Buddies/New Instant _Message..."
+msgstr "/មិត្តភក្ដិ/សារ​បន្ទាន់​ថ្មី..."
+
+msgid "/Buddies/Join a _Chat..."
+msgstr "/មិត្តភក្ដិ/ចូលរួម​ក្នុងកា​រជជែក..."
+
+msgid "/Buddies/Get User _Info..."
+msgstr "/មិត្តភក្ដិ/យក​ព័ត៌មាន​អ្នកប្រើ..."
+
+msgid "/Buddies/View User _Log..."
+msgstr "/មិត្តភក្ដិ/មើល​កំណត់​ហេតុ​អ្នក​ប្រើ..."
+
+msgid "/Buddies/Sh_ow"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ"
+
+msgid "/Buddies/Show/_Offline Buddies"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/មិត្តភក្ដិក្រៅ​បណ្ដាញ"
+
+msgid "/Buddies/Show/_Empty Groups"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/ក្រុម​ទទេ"
+
+msgid "/Buddies/Show/Buddy _Details"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/សេចក្ដី​លម្អិត​មិត្តភក្ដិ"
+
+msgid "/Buddies/Show/Idle _Times"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/ពេលវេលា​ទំនេរ"
+
+msgid "/Buddies/Show/_Protocol Icons"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/រូបតំណាង​ពិធីការ"
+
+msgid "/Buddies/_Sort Buddies"
+msgstr "/មិត្តភក្ដិ/តម្រៀប​មិត្តភក្ដិ"
+
+msgid "/Buddies/_Add Buddy..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​មិត្តភក្ដិ..."
+
+msgid "/Buddies/Add C_hat..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​ការ​ជជែក..."
+
+msgid "/Buddies/Add _Group..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​ក្រុម..."
+
+msgid "/Buddies/_Quit"
+msgstr "/មិត្តភក្ដិ/ចេញ"
+
+#. Accounts menu
+msgid "/_Accounts"
+msgstr "/គណនី"
+
+msgid "/Accounts/Manage Accounts"
+msgstr "/គណនី/គ្រប់គ្រង​គណនី"
+
+#. Tools
+msgid "/_Tools"
+msgstr "/ឧបករណ៍"
+
+msgid "/Tools/Buddy _Pounces"
+msgstr "/ឧបករណ៍/ក្រុមមិត្តភក្ដិ"
+
+msgid "/Tools/_Certificates"
+msgstr "/ឧបករណ៍/វិញ្ញាបនបត្រ"
+
+msgid "/Tools/Plu_gins"
+msgstr "/ឧបករណ៍/កម្មវិធី​ជំនួយ"
+
+msgid "/Tools/Pr_eferences"
+msgstr "/ឧបករណ៍/ចំណូល​ចិត្ត"
+
+msgid "/Tools/Pr_ivacy"
+msgstr "/ឧបករណ៍/ភាព​ឯកជន"
+
+msgid "/Tools/Smile_y"
+msgstr "/ឧបករណ៍/សញ្ញាណ​អារម្មណ៍"
+
+msgid "/Tools/_File Transfers"
+msgstr "/ឧបករណ៍/ការ​ផ្ទេរ​ឯកសារ"
+
+msgid "/Tools/R_oom List"
+msgstr "/ឧបករណ៍/បញ្ជី​បន្ទប់"
+
+msgid "/Tools/System _Log"
+msgstr "/ឧបករណ៍/កំណត់ហេតុ​ប្រព័ន្ធ"
+
+msgid "/Tools/Mute _Sounds"
+msgstr "/ឧបករណ៍/ស្ងាត់"
+
+#. Help
+msgid "/_Help"
+msgstr "/ជំនួយ"
+
+msgid "/Help/Online _Help"
+msgstr "/ជំនួយ/ជំនួយ​លើ​បណ្ដាញ"
+
+msgid "/Help/_Debug Window"
+msgstr "/ជំនួយ/បង្អួច​បំបាត់​កំហុស"
+
+msgid "/Help/_About"
+msgstr "/ជំនួយ/អំពី"
+
+#, c-format
+msgid "<b>Account:</b> %s"
+msgstr "<b>គណនី ៖</b> %s"
+
+#, c-format
+msgid ""
+"\n"
+"<b>Occupants:</b> %d"
+msgstr ""
+"\n"
+"<b>មុខរបរ ៖</b> %d"
+
+#, c-format
+msgid ""
+"\n"
+"<b>Topic:</b> %s"
+msgstr ""
+"\n"
+"<b>ប្រធានបទ ៖</b> %s"
+
+msgid "(no topic set)"
+msgstr "(គ្មានប្រធានបទ​បានកំណត់​ទេ)"
+
+msgid "Buddy Alias"
+msgstr "ឈ្មោះ​ក្លែង​ក្លាយ​មិត្តភក្ដិ"
+
+msgid "Logged In"
+msgstr "បាន​ចូល"
+
+msgid "Last Seen"
+msgstr "បានឃើញ​ចុងក្រោយ"
+
+msgid "Spooky"
+msgstr "ធ្វើ​ឲ្យ​ឈឺ"
+
+msgid "Awesome"
+msgstr "ខ្លាច"
+
+msgid "Rockin'"
+msgstr "Rockin'"
+
+msgid "Total Buddies"
+msgstr "មិត្តភក្ដិ​សរុប"
+
+#, c-format
+msgid "Idle %dd %dh %02dm"
+msgstr "ទំនេរ %dd %dh %02dm"
+
+#, c-format
+msgid "Idle %dh %02dm"
+msgstr "ទំនេរ %dh %02dm"
+
+#, c-format
+msgid "Idle %dm"
+msgstr "ទំនេរ %dm"
+
+msgid "/Buddies/New Instant Message..."
+msgstr "/មិត្តភក្ដិ/សារ​បន្ទាន់​ថ្មី..."
+
+msgid "/Buddies/Join a Chat..."
+msgstr "/មិត្តភក្ដិ/ចូលរួម​ក្នុងកា​រជជែក..."
+
+msgid "/Buddies/Get User Info..."
+msgstr "/មិត្តភក្ដិ/យក​ព័ត៌មាន​អ្នកប្រើ..."
+
+msgid "/Buddies/Add Buddy..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​មិត្តភក្ដិ..."
+
+msgid "/Buddies/Add Chat..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​ការ​ជជែក..."
+
+msgid "/Buddies/Add Group..."
+msgstr "/មិត្តភក្ដិ/បន្ថែម​ក្រុម..."
+
+msgid "/Tools/Privacy"
+msgstr "/ឧបករណ៍/ភាព​ឯកជន"
+
+msgid "/Tools/Room List"
+msgstr "/ឧបករណ៍/បញ្ជី​បន្ទប់"
+
+#, c-format
+msgid "%d unread message from %s\n"
+msgid_plural "%d unread messages from %s\n"
+msgstr[0] "សារ​មិនអាន %d ពី %s\n"
+
+msgid "Manually"
+msgstr "ដោយដៃ"
+
+msgid "By status"
+msgstr "តាម​ស្ថានភាព"
+
+msgid "By log size"
+msgstr "តាម​ទំហំ​កំណត់ហេតុ"
+
+#, c-format
+msgid "%s disconnected"
+msgstr "បាន​ផ្ដាច់ %s"
+
+#, c-format
+msgid "%s disabled"
+msgstr "បានបិទ %s"
+
+msgid "Reconnect"
+msgstr "តភ្ជាប់​ឡើង​វិញ"
+
+msgid "Re-enable"
+msgstr "បើក​ឡើង​វិញ"
+
+msgid "Welcome back!"
+msgstr "សូម​ស្វាគមន៍ការ​​ត្រឡប់​មក​វិញ !"
+
+#, c-format
+msgid "%d account was disabled because you signed on from another location:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
+msgstr[0] "គណនី %d ត្រូវ​បាន​បិទ​ ពីព្រោះ​អ្នក​បានចូល​ពី​ទីតាំង​ផ្សេរ ៖"
+
+msgid "<b>Username:</b>"
+msgstr "<b> ឈ្មោះ​អ្នក​ប្រើ ៖</b>"
+
+msgid "<b>Password:</b>"
+msgstr "<b>ពាក្យ​សម្ងាត់ ៖</b>"
+
+msgid "_Login"
+msgstr "ចូល"
+
+msgid "/Accounts"
+msgstr "/គណនី"
+
+#. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
+#, c-format
+msgid ""
+"<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 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'>សូម​ស្វាគមន៍​មក​កាន់ %s !</span>\n"
+"\n"
+"អ្នក​​គ្មាន​គណនី​បាន​បើក​ទេ ។ បើកគណនី IM របស់​អ្នកពី​បង្អួច <b>គណនី</b> នៅ <b>គណនី->គ្រប់គ្រង​គណនី</"
+"b> ។ នៅពេល​អ្នកបើក​គណនី អ្នក​នឹង​អាច​ចូល កំណត់​ស្ថានភាព​របស់​អ្នក ហើយ​និយាយាជា​មួយមិត្តភក្ដិ ។"
+
+#. set the Show Offline Buddies option. must be done
+#. * after the treeview or faceprint gets mad. -Robot101
+#.
+msgid "/Buddies/Show/Offline Buddies"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/មិត្តភក្ដិ​ក្រៅ​បណ្ដាញ"
+
+msgid "/Buddies/Show/Empty Groups"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/ក្រុម​ទទេ"
+
+msgid "/Buddies/Show/Buddy Details"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ​/សេចក្ដី​លម្អិត​របស់មិត្តភក្ដិ"
+
+msgid "/Buddies/Show/Idle Times"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/ពេលវេលា​ទំនេរ"
+
+msgid "/Buddies/Show/Protocol Icons"
+msgstr "/មិត្តភក្ដិ/បង្ហាញ/រូបតំណាង​ពិធីការ"
+
+msgid "Add a buddy.\n"
+msgstr "បន្ថែម​មិត្តភក្ដិ ។\n"
+
+msgid "Buddy's _username:"
+msgstr "ឈ្មោះ​អ្នក​ប្រើ​របស់​មិត្តភក្ដិ ៖"
+
+msgid "(Optional) A_lias:"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ (ជម្រើស) ៖"
+
+msgid "Add buddy to _group:"
+msgstr "បន្ថែម​មិត្តភក្ដិ​ទៅ​ក្រុម ៖ "
+
+msgid "This protocol does not support chat rooms."
+msgstr "ពិធីការ​នេះ​មិន​គាំទ្រ​បន្ទប់​ជជែក​នេះ​ទេ ។"
+
+msgid ""
+"You are not currently signed on with any protocols that have the ability to "
+"chat."
+msgstr "អ្នក​បច្ចុប្បន្ន​មិន​បានចូល​ជា​មួយ​ពិធីការ​​ណាមួយ​ដែល​មាន​លទ្ធភាព​ជជែក ។"
+
+msgid ""
+"Please enter an alias, and the appropriate information about the chat you "
+"would like to add to your buddy list.\n"
+msgstr ""
+"សូម​បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ និង​ព័ត៌មាន​ដែល​សមរម្យ​អំពី​ការជជែក ដែល​អ្នកចង់​បន្ថែម​ទៅបញ្ជីមិត្តភក្ដិ​របស់​អ្នក "
+"។\n"
+
+msgid "A_lias:"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ ៖"
+
+msgid "Auto_join when account becomes online."
+msgstr "ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ​ នៅពេល​គណនី​ក្លាយ​ជា​នៅ​លើ​បណ្ដាញ ។"
+
+msgid "_Remain in chat after window is closed."
+msgstr "នៅ​ក្នុង​ការជជែក​បន្ទាប់​ពី​បង្អួច​ត្រូវ​បានបិទ ។"
+
+msgid "Please enter the name of the group to be added."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​របស​ក្រុម​ដែល​ត្រូ​វ​បន្ថែម ។"
+
+msgid "Enable Account"
+msgstr "បើក​គណនី"
+
+msgid "<PurpleMain>/Accounts/Enable Account"
+msgstr "<PurpleMain>/គណនី/បើក​គណនី"
+
+msgid "<PurpleMain>/Accounts/"
+msgstr "<PurpleMain>/គណនី/"
+
+msgid "_Edit Account"
+msgstr "កែសម្រួល​គណនី"
+
+msgid "No actions available"
+msgstr "គ្មាន​សកម្មភាព"
+
+msgid "_Disable"
+msgstr "បិទ"
+
+msgid "/Tools"
+msgstr "/ឧបករណ៍"
+
+msgid "/Buddies/Sort Buddies"
+msgstr "/មិត្តភក្ដិ/តម្រៀប​មិត្តភក្ដិ"
+
+#. Widget creation function
+msgid "SSL Servers"
+msgstr "ម៉ាស៊ីនបម្រើស SSL"
+
+msgid "Unknown command."
+msgstr "មិនស្គាល់​ពាក្យ​បញ្ជា ។"
+
+msgid "That buddy is not on the same protocol as this chat."
+msgstr "មិត្តភក្ដិនេះ​មិន​នៅ​លើ​ពិធីការ​ដដែល​ដូច​ម៉ាស៊ីន​ភ្ញៀវ​នេះ​ទេ ។"
+
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
+msgstr "អ្នកបច្ចុប្បន្នមិនបាន​ចូល​ដោយ​ប្រើ​គណនី​ ដែល​អាចអញ្ជើញ​មិត្តភក្ដិ​នោះ​ទេ ។"
+
+msgid "Invite Buddy Into Chat Room"
+msgstr "អញ្ជើញ​មិត្តភក្ដិ​ទៅ​ក្នុង​បន្ទប់​ជជែក"
+
+#. Put our happy label in it.
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​របស់​អ្នកប្រើ​ដែល​អ្នក​ចង់​អញ្ជើញ រួម​ជា​មួយ​នឹង​សារ​អញ្ជើញ​ជា​ជម្រើស ។"
+
+msgid "_Buddy:"
+msgstr "មិត្តភក្ដិ ៖"
+
+msgid "_Message:"
+msgstr "សារ ៖"
+
+#, c-format
+msgid "<h1>Conversation with %s</h1>\n"
+msgstr "<h1>សន្ទនា​ជា​មួយ %s</h1>\n"
+
+msgid "Save Conversation"
+msgstr "រក្សា​​ទុក​​​ការ​សន្ទនា"
+
+msgid "Find"
+msgstr "រក"
+
+msgid "_Search for:"
+msgstr "ស្វែងរក ៖"
+
+msgid "Un-Ignore"
+msgstr "​អើពើ"
+
+msgid "Ignore"
+msgstr "មិន​អើពើ"
+
+msgid "Get Away Message"
+msgstr "យក​សារ​ចាកឆ្ងាយ"
+
+msgid "Last said"
+msgstr "បាន​និយាយ​ចុង​ក្រោយ"
+
+msgid "Unable to save icon file to disk."
+msgstr "មិនអាច​រក្សាទុក​ឯកសារ​​រូបតំណាង​ទៅ​ថាស​បានទេ ។"
+
+msgid "Save Icon"
+msgstr "រក្សា​​ទុក​​​រូបតំណាង"
+
+msgid "Animate"
+msgstr "ចលនា"
+
+msgid "Hide Icon"
+msgstr "លាក់​​រូបតំណាង"
+
+msgid "Save Icon As..."
+msgstr "រក្សា​​ទុក​​​រូបតំណាង​ជា..."
+
+msgid "Set Custom Icon..."
+msgstr "កំណត់​រូបតំណាង​ផ្ទាល់ខ្លួន..."
+
+msgid "Change Size"
+msgstr "ផ្លាស់ប្ដូរ​ទំហំ"
+
+msgid "Show All"
+msgstr "បង្ហាញ​ទាំងអស់"
+
+#. Conversation menu
+msgid "/_Conversation"
+msgstr "/សន្ទនា"
+
+msgid "/Conversation/New Instant _Message..."
+msgstr "/សន្ទនា/សារ​បន្ទាន់​ថ្មី..."
+
+msgid "/Conversation/_Find..."
+msgstr "/សន្ទនា/រក..."
+
+msgid "/Conversation/View _Log"
+msgstr "/សន្ទនា/មើល​កំណត់​ហេតុ"
+
+msgid "/Conversation/_Save As..."
+msgstr "/សន្ទនា/រក្សាទុកជា..."
+
+msgid "/Conversation/Clea_r Scrollback"
+msgstr "/សន្ទនា/ជំម្រះ"
+
+msgid "/Conversation/Se_nd File..."
+msgstr "/សន្ទនា/ផ្ញើ​ឯកសារ..."
+
+msgid "/Conversation/Add Buddy _Pounce..."
+msgstr "/សន្ទនា/បន្ថែម​ក្រុម​មិត្តភក្ដិ..."
+
+msgid "/Conversation/_Get Info"
+msgstr "/សន្ទនា/យក​ព័ត៌មាន"
+
+msgid "/Conversation/In_vite..."
+msgstr "/សន្ទនា/អញ្ជើញ..."
+
+msgid "/Conversation/M_ore"
+msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត"
+
+msgid "/Conversation/Al_ias..."
+msgstr "/សន្ទនា/ឈ្មោះ​ក្លែងក្លាយ..."
+
+msgid "/Conversation/_Block..."
+msgstr "/សន្ទនា/ទប់ស្កាត់..."
+
+msgid "/Conversation/_Unblock..."
+msgstr "/សន្ទនា/មិនទប់ស្កាត់..."
+
+msgid "/Conversation/_Add..."
+msgstr "/សន្ទនា/បន្ថែម..."
+
+msgid "/Conversation/_Remove..."
+msgstr "/សន្ទនា/យកចេញ..."
+
+msgid "/Conversation/Insert Lin_k..."
+msgstr "/សន្ទនា/បញ្ចូលតំណ..."
+
+msgid "/Conversation/Insert Imag_e..."
+msgstr "/សន្ទនា/បញ្ចូល​រូបភាព..."
+
+msgid "/Conversation/_Close"
+msgstr "/សន្ទនា/បិទ"
+
+#. Options
+msgid "/_Options"
+msgstr "/ជម្រើស"
+
+msgid "/Options/Enable _Logging"
+msgstr "/ជម្រើស/បើក​ការ​ចូល"
+
+msgid "/Options/Enable _Sounds"
+msgstr "/ជម្រើស/បើក​សំឡេង"
+
+msgid "/Options/Show Formatting _Toolbars"
+msgstr "/ជម្រើស/បង្ហាញ​របារ​ឧបករណ៍​ធ្វើទ្រង់ទ្រាយ"
+
+msgid "/Options/Show Ti_mestamps"
+msgstr "/ជម្រើស/បង្ហាញ​ត្រាពេលវេលា"
+
+msgid "/Conversation/More"
+msgstr "/សន្ទនា/ផ្សេងៗ​ទៀត"
+
+msgid "/Options"
+msgstr "/ជម្រើស​"
+
+#. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
+#. * the 'Conversation' menu pops up.
+#. Make sure the 'Conversation -> More' menuitems are regenerated whenever
+#. * the 'Conversation' menu pops up because the entries can change after the
+#. * conversation is created.
+msgid "/Conversation"
+msgstr "/សន្ទនា"
+
+msgid "/Conversation/View Log"
+msgstr "/សន្ទនា/មើល​កំណត់​ហេតុ"
+
+msgid "/Conversation/Send File..."
+msgstr "/សន្ទនា/ផ្ញើ​ឯកសារ..."
+
+msgid "/Conversation/Add Buddy Pounce..."
+msgstr "/សន្ទនា/បន្ថែម​ក្រុម​មិត្តភក្ដិ..."
+
+msgid "/Conversation/Get Info"
+msgstr "/សន្ទនា/យក​ព័ត៌មាន"
+
+msgid "/Conversation/Invite..."
+msgstr "/សន្ទនា/អញ្ជើញ..."
+
+msgid "/Conversation/Alias..."
+msgstr "/សន្ទនា/ឈ្មោះ​ក្លែងក្លាយ..."
+
+msgid "/Conversation/Block..."
+msgstr "/សន្ទនា/ទប់ស្កាត់..."
+
+msgid "/Conversation/Unblock..."
+msgstr "/សន្ទនា/មិនទប់ស្កាត់..."
+
+msgid "/Conversation/Add..."
+msgstr "/សន្ទនា/បន្ថែម..."
+
+msgid "/Conversation/Remove..."
+msgstr "/សន្ទនា/យកចេញ..."
+
+msgid "/Conversation/Insert Link..."
+msgstr "/សន្ទនា/បញ្ចូល​តំណ..."
+
+msgid "/Conversation/Insert Image..."
+msgstr "/សន្ទនា/បញ្ចូលរូបភាព..."
+
+msgid "/Options/Enable Logging"
+msgstr "/ជម្រើស/បើក​ការ​ចូល"
+
+msgid "/Options/Enable Sounds"
+msgstr "/ជម្រើស/បើក​សំឡេង"
+
+msgid "/Options/Show Formatting Toolbars"
+msgstr "/ជម្រើស/បង្ហាញ​របារ​ឧបករណ៍​ធ្វើ​ទ្រង់ទ្រាយ"
+
+msgid "/Options/Show Timestamps"
+msgstr "/ជម្រើស​/បង្ហាញ​ត្រាពេលវេលា"
+
+msgid "User is typing..."
+msgstr "អ្នកប្រើ​កំពុង​វាយ..."
+
+#, c-format
+msgid ""
+"\n"
+"%s has stopped typing"
+msgstr ""
+"\n"
+"%s បានឈប់​វាយ"
+
+#. Build the Send To menu
+msgid "S_end To"
+msgstr "ផ្ញើ​ទៅ"
+
+msgid "_Send"
+msgstr "ផ្ញើ"
+
+#. Setup the label telling how many people are in the room.
+msgid "0 people in room"
+msgstr "គ្មានមនុស្ស​នៅ​ក្នុង​បន្ទប់​ទេ"
+
+#, c-format
+msgid "%d person in room"
+msgid_plural "%d people in room"
+msgstr[0] "មនុស្ស %d នៅ​ក្នុង​បន្ទប់"
+
+msgid "Typing"
+msgstr "វាយ"
+
+msgid "Stopped Typing"
+msgstr "ឈប់​វាយ"
+
+msgid "Nick Said"
+msgstr "សម្មតិនាម​បាន​និយាយ"
+
+msgid "Unread Messages"
+msgstr "សារ​មិន​បានអាន"
+
+msgid "New Event"
+msgstr "ព្រឹត្តិការណ៍​ថ្មី"
+
+msgid "clear: Clears all conversation scrollbacks."
+msgstr "ជម្រះ ៖ ជម្រះ​ការ​សន្ទនា​ទាំង​អស់ ។"
+
+msgid "Confirm close"
+msgstr "អះអាង​ការ​បិទ"
+
+msgid "You have unread messages. Are you sure you want to close the window?"
+msgstr "អ្នកមាន​សារ​មិនទាន់អាន ។ តើអ្នក​ប្រាកដ​ជា​ចង់​បិទ​បង្អួច​នេះ​ឬ ?"
+
+msgid "Close other tabs"
+msgstr "បិទ​ផ្ទាំង​ផ្សេងៗ​ទៀត"
+
+msgid "Close all tabs"
+msgstr "បិទ​ផ្ទាំង​ទាំង​អស់"
+
+msgid "Detach this tab"
+msgstr "ផ្ដាច់​ផ្ទាំង​នេះ"
+
+msgid "Close this tab"
+msgstr "បិទ​​ផ្ទាំង​នេះ"
+
+msgid "Close conversation"
+msgstr "បិទ​ការ​សន្ទនា"
+
+msgid "Last created window"
+msgstr "បង្អួច​បាន​បង្កើត​ចុងក្រោយ"
+
+msgid "Separate IM and Chat windows"
+msgstr "បំបែកបង្អួច IM និង​ជជែក"
+
+msgid "New window"
+msgstr "បង្អួច​ថ្មី"
+
+msgid "By group"
+msgstr "តាម​ក្រុម"
+
+msgid "By account"
+msgstr "តាមគណនី"
+
+msgid "Save Debug Log"
+msgstr "រក្សាទុក​កំណត់​ហេតុ​បំបាត់​កំហុស"
+
+msgid "Invert"
+msgstr "ដាក់​បញ្ច្រាស"
+
+msgid "Highlight matches"
+msgstr "បន្លិច​ការ​ផ្គូផ្គង"
+
+msgid "_Icon Only"
+msgstr "តែ​រូបតំណាង"
+
+msgid "_Text Only"
+msgstr "តែ​អត្ថបទ"
+
+msgid "_Both Icon & Text"
+msgstr "ទាំង​រូបតំណាង និង​អត្ថបទ"
+
+msgid "Filter"
+msgstr "តម្រង"
+
+msgid "Right click for more options."
+msgstr "ចុច​កណ្ដុរ​ខាង​ស្ដាំ​ដើម្បី​មើល​​ជម្រើ​សជា​ច្រើន​ទៀត ។"
+
+msgid "Level "
+msgstr "កម្រិត"
+
+msgid "Select the debug filter level."
+msgstr "ជ្រើស​កម្រិត​តម្រង​បំបាត់​កំហុស ។"
+
+msgid "All"
+msgstr "ទាំង​អស់"
+
+msgid "Misc"
+msgstr "ផ្សេងៗ"
+
+msgid "Warning"
+msgstr "ការ​ព្រមាន"
+
+msgid "Error "
+msgstr "កំហុស"
+
+msgid "Fatal Error"
+msgstr "កំហុស​ធ្ងន់ធ្ងរ"
+
+msgid "bug master"
+msgstr "កំហុស​មេ"
+
+msgid "artist"
+msgstr "សិល្បករ"
+
+#. feel free to not translate this
+msgid "Ka-Hing Cheung"
+msgstr "Ka-Hing Cheung"
+
+msgid "support"
+msgstr "គាំទ្រ"
+
+msgid "webmaster"
+msgstr "ប្រធាន​បណ្ដាញ"
+
+msgid "Senior Contributor/QA"
+msgstr "អ្នក​ចែកចាយ​ជាន់ខ្ពស់/QA"
+
+msgid "win32 port"
+msgstr "ច្រក win32"
+
+msgid "maintainer"
+msgstr "អ្នក​ថែទា"
+
+msgid "libfaim maintainer"
+msgstr "អ្នក​ថែទាំ libfaim"
+
+#. If "lazy bum" translates literally into a serious insult, use something else or omit it.
+msgid "hacker and designated driver [lazy bum]"
+msgstr "អ្នកលួច និង​កម្មវិធី​បញ្ជាដែល​បាន​ជ្រើស [អាល់ប៊ុម​កម្ជិល]"
+
+msgid "support/QA"
+msgstr "គាំទ្រ/QA"
+
+msgid "XMPP"
+msgstr "XMPP"
+
+msgid "original author"
+msgstr "អ្នកនិពន្ធ​ដើម"
+
+msgid "lead developer"
+msgstr "ប្រធាន​អ្នកអភិវឌ្ឍ"
+
+msgid "Afrikaans"
+msgstr "អាហ្វ្រីកាអាន"
+
+msgid "Arabic"
+msgstr "អារ៉ាប់"
+
+msgid "Belarusian Latin"
+msgstr "បេឡារុស្ស ឡាទីន"
+
+msgid "Bulgarian"
+msgstr "ប៊ុលហ្គារី"
+
+msgid "Bengali"
+msgstr "បេន្កាលី"
+
+msgid "Bosnian"
+msgstr "បូស្នី"
+
+msgid "Catalan"
+msgstr "កាតាឡាន"
+
+msgid "Valencian-Catalan"
+msgstr "កាតាឡាន-វ៉ាឡេនហ្សង់"
+
+msgid "Czech"
+msgstr "ឆេក"
+
+msgid "Danish"
+msgstr "ដាណឺម៉ាក"
+
+msgid "German"
+msgstr "​​អា​ល្លឺម៉ង់"
+
+msgid "Dzongkha"
+msgstr "ដុងហ្កា"
+
+msgid "Greek"
+msgstr "ក្រិក"
+
+msgid "Australian English"
+msgstr "​​​អង់គ្លេស​អូស្ត្រាលី"
+
+msgid "Canadian English"
+msgstr "​​​អង់គ្លេស​កាណាដា"
+
+msgid "British English"
+msgstr "​​​អង់គ្លេស អង់គ្លេស"
+
+msgid "Esperanto"
+msgstr "អេស្ពេរ៉ាន់តូ\t"
+
+msgid "Spanish"
+msgstr "​អេស៉្បាញ"
+
+msgid "Estonian"
+msgstr "អេស្តូនី"
+
+msgid "Euskera(Basque)"
+msgstr "អឺ​ស្កេរ៉ា (​​បាស្កេ)"
+
+msgid "Persian"
+msgstr "ប៉ឺស៊ីយ៉ាន"
+
+msgid "Finnish"
+msgstr "ហ្វាំង​ឡង់"
+
+msgid "French"
+msgstr "បារាំង"
+
+msgid "Irish"
+msgstr "អៀរឡង់"
+
+msgid "Galician"
+msgstr "ហ្គាលីស្យាន"
+
+msgid "Gujarati"
+msgstr "ហ្កុយ៉ារាទី"
+
+msgid "Gujarati Language Team"
+msgstr "ប្រធានក្រុម​ភាសា​ហ្កុយ៉ារាទី"
+
+msgid "Hebrew"
+msgstr "ហេប្រូ"
+
+msgid "Hindi"
+msgstr "ហិណ្ឌូ"
+
+msgid "Hungarian"
+msgstr "ហុងគ្រី"
+
+msgid "Indonesian"
+msgstr "ឥណ្ឌូនេស៊ី"
+
+msgid "Italian"
+msgstr "អ៊ីតាលី"
+
+msgid "Japanese"
+msgstr "ជប៉ុន"
+
+msgid "Georgian"
+msgstr "ហ្សកហ្ស៊ី"
+
+msgid "Ubuntu Georgian Translators"
+msgstr "អ្នកប្រើ​ប្រែ​​ហ្សកហ្ស៊ី​របស់​អូប៊ុនទូ"
+
+msgid "Kannada"
+msgstr "កិណាដា"
+
+msgid "Kannada Translation team"
+msgstr "ក្រុម​អ្នកបកប្រែ​ភាសា​កិណាដា"
+
+msgid "Korean"
+msgstr "កូរ៉េ"
+
+msgid "Kurdish"
+msgstr "ឃឺដ"
+
+msgid "Lao"
+msgstr "ឡាវ"
+
+msgid "Lithuanian"
+msgstr "លីទុយអានី"
+
+msgid "Macedonian"
+msgstr "​ម៉ាសេដូនី"
+
+msgid "Mongolian"
+msgstr "ម៉ុងហ្គោលី"
+
+msgid "Bokmål Norwegian"
+msgstr "ប៊ុកម៉ល​ណរវ៉េ"
+
+msgid "Nepali"
+msgstr "នេប៉ាល់"
+
+msgid "Dutch, Flemish"
+msgstr "ហុល្លង់"
+
+msgid "Norwegian Nynorsk"
+msgstr "ណរវ៉េ នីណ័រ"
+
+msgid "Occitan"
+msgstr "អុកស៊ីតង់"
+
+msgid "Punjabi"
+msgstr "ពូនយ៉ាប៊ី"
+
+msgid "Polish"
+msgstr "ប៉ូឡូញ"
+
+msgid "Portuguese"
+msgstr "ព័រទុយហ្គាល់"
+
+msgid "Portuguese-Brazil"
+msgstr "ព័រទុយហ្គាល់-ប្រេស៊ីល"
+
+msgid "Pashto"
+msgstr "ប៉ាស្តូ"
+
+msgid "Romanian"
+msgstr "រូម៉ានី"
+
+msgid "Russian"
+msgstr "រុស្ស៊ី"
+
+msgid "Slovak"
+msgstr "ស្លូវ៉ាគី"
+
+msgid "Slovenian"
+msgstr "​​​ស្លូវ៉ានី"
+
+msgid "Albanian"
+msgstr "អាល់បានី"
+
+msgid "Serbian"
+msgstr "សែប៊ី"
+
+msgid "Sinhala"
+msgstr "ស៊ីនហាលា"
+
+msgid "Swedish"
+msgstr "ស៊ុយអែដ"
+
+msgid "Tamil"
+msgstr "តាមីល"
+
+msgid "Telugu"
+msgstr "តេលូហ្គូ"
+
+msgid "Thai"
+msgstr "ថៃ"
+
+msgid "Turkish"
+msgstr "ទួរគី"
+
+msgid "Urdu"
+msgstr "​អ៊ូរ្ឌូ"
+
+msgid "Vietnamese"
+msgstr "វៀតណាម"
+
+msgid "T.M.Thanh and the Gnome-Vi Team"
+msgstr "T.M.Thanh និង​ក្រុម Gnome-Vi"
+
+msgid "Simplified Chinese"
+msgstr "ចិន​សាមញ្ញ"
+
+msgid "Hong Kong Chinese"
+msgstr "ចិន​ហុងកុង"
+
+msgid "Traditional Chinese"
+msgstr "ចិនបុរាណ"
+
+msgid "Amharic"
+msgstr "អាមហារីច"
+
+#, c-format
+msgid "About %s"
+msgstr "អំពី %s"
+
+#, c-format
+msgid ""
+"%s is a graphical modular messaging client based on libpurple which is "
+"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, "
+"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and "
+"QQ all at once.  It is written using GTK+.<BR><BR>You may modify and "
+"redistribute the program under the terms of the GPL (version 2 or later).  A "
+"copy of the GPL is contained in the 'COPYING' file distributed with %s.  %s "
+"is copyrighted by its contributors.  See the 'COPYRIGHT' file for the "
+"complete list of contributors.  We provide no warranty for this program."
+"<BR><BR>"
+msgstr ""
+"%s គឺ​ជា​ម៉ាស៊ីន​ភ្ញៀវ​សារ​ម៉ូឌុល​ក្រាហ្វិក​​ដែល​មាន​មូលដ្ឋាន​លើ libpurple ដែល​មាន​សមត្ថភាព​តភ្ជាប់​ទៅ​កាន់ "
+"AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus "
+"Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and QQ ទាំង​អស់​នៅ​ពេល​តែ​មួយ ។ វា​"
+"ត្រូវ​បានសរសេរ​ដោយ​ប្រើ GTK+ ។<BR><BR>អ្នកអាចកែប្រែ និង​ចែកចាយ​ឡើង​វិញ​នូវ​កម្មវិធី​ក្រោម​លក្ខខណ្ឌ "
+"GPL (កំណែ ២ ឬ​ខ្ពស់​ជាង​នេះ) ។ ច្បាប់​ចម្លង GPL មាន​ឯកសារ 'COPYING' បាន​ចែកចាយជា​មួយ %s ។  "
+"%s ត្រូ​វបាន​រក្សាសិទ្ធិ​អ្នកចែកចាយ​របស់​ខ្លួន ។ សូម​មើល​ឯកសារ 'COPYRIGHT' សម្រាប់​បញ្ជី​អ្នកចែកចាយ​"
+"ពេញលេញ ។ យើង​​មិន​ធានា​លើ​កម្មវិធី​នេះ​ទេ ។<BR><BR>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">FAQ ៖</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">ជួយ​តាមរយៈ​អ៊ីមែល ៖</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\"> ឆានែល</FONT><BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr "<FONT SIZE=\"4\"> XMPP</FONT>devel@conference.pidgin.im<BR><BR>"
+
+msgid "Current Developers"
+msgstr "អ្នក​អភិវឌ្ឍន៍​បច្ចុប្បន្ន"
+
+msgid "Crazy Patch Writers"
+msgstr "អ្នក​សរសេរ​បំណះ​មិនល្អ"
+
+msgid "Retired Developers"
+msgstr "អ្នក​អភិវឌ្ឍន៍​ដែល​ចូល​និវត្តន៍"
+
+msgid "Retired Crazy Patch Writers"
+msgstr "អ្នក​សរសេរ​បំណះ​ដែល​ចូល​និវត្តន៍"
+
+msgid "Current Translators"
+msgstr "អ្នកបកប្រែ​បច្ចុប្បន្ន"
+
+msgid "Past Translators"
+msgstr "អ្នក​បកប្រែ​មុន"
+
+msgid "Debugging Information"
+msgstr "ព័ត៌មាន​បំបាត់​កំហុស"
+
+msgid "_Name"
+msgstr "ឈ្មោះ"
+
+msgid "_Account"
+msgstr "គណនី"
+
+msgid "Get User Info"
+msgstr "យក​ព័ត៌មាន​អ្នកប្រើ"
+
+msgid ""
+"Please enter the username or alias of the person whose info you would like "
+"to view."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ ឬ​ឈ្មោះ​ក្លែងក្លាយ​របស់​មនុស្ស​ដែល​អ្នក​ចង់​មើល ។"
+
+msgid "View User Log"
+msgstr "មើល​កំណត់​ហេតុ​អ្នកប្រើ​"
+
+msgid "Alias Contact"
+msgstr "ទំនាក់ទំនង​ឈ្មោះក្លែងក្លាយ"
+
+msgid "Enter an alias for this contact."
+msgstr "បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ​សម្រាប់​ទំនាក់ទំនង​នេះ ។"
+
+#, c-format
+msgid "Enter an alias for %s."
+msgstr "បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ​សម្រាប់ %s ។"
+
+msgid "Alias Buddy"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ​របស់មិត្តភក្ដិ"
+
+msgid "Alias Chat"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ​ក្នុងកា​រជជែក"
+
+msgid "Enter an alias for this chat."
+msgstr "បញ្ចូល​ឈ្មោះ​ក្លែងក្លាយ​សម្រាប់​ការ​ជជែក​នេះ ។"
+
+#, c-format
+msgid ""
+"You are about to remove the contact containing %s and %d other buddy from "
+"your buddy list.  Do you want to continue?"
+msgid_plural ""
+"You are about to remove the contact containing %s and %d other buddies from "
+"your buddy list.  Do you want to continue?"
+msgstr[0] ""
+"អ្នក​រៀប​នឹង​យក​​​​ទំនាក់ទំនង​មិត្តភក្ដិ​ផ្សេង​​ដែល​មាន %s និង %d ចេញពី​បញ្ជីមិត្តភក្ដិ​របស់អ្នក ។ តើ​អ្នក​ចង់​បន្ត​"
+"ដែរឬទេ ?"
+
+msgid "Remove Contact"
+msgstr "យក​​ទំនាក់ទំនង​ចេញ"
+
+msgid "_Remove Contact"
+msgstr "យក​ទំនាក់ទំនង​ចេញ"
+
+#, c-format
+msgid ""
+"You are about to merge the group called %s into the group called %s. Do you "
+"want to continue?"
+msgstr "អ្នករៀប​នឹង​បញ្ចូល​ក្រុម​ដែល​ហៅ​ថា %s ចូល​គ្នា​ទៅ​ក្នុង​ក្រុម​ដែលហៅ​ថា %s ។ តើ​អ្នក​ចង់​បន្ត​ដែរឬទេ ?"
+
+msgid "Merge Groups"
+msgstr "បញ្ចូល​ក្រុម​ចូលគ្នា"
+
+msgid "_Merge Groups"
+msgstr "បញ្ចូល​ក្រុម​ចូលគ្នា"
+
+#, c-format
+msgid ""
+"You are about to remove the group %s and all its members from your buddy "
+"list.  Do you want to continue?"
+msgstr ""
+"អ្នក​រៀបនឹង​យក​ក្រុម​ដែល %s ចេញ ហើយ​សមាជិករបស់​វា​ទាំងអស់​ពី​បញ្ជីមិត្តភក្ដិ ។ តើ​អ្នក​ចង់​បន្តដែរឬទេ ?"
+
+msgid "Remove Group"
+msgstr "យក​​ក្រុម​ចេញ"
+
+msgid "_Remove Group"
+msgstr "យក​ក្រុម​ចេញ"
+
+#, c-format
+msgid ""
+"You are about to remove %s from your buddy list.  Do you want to continue?"
+msgstr "អ្នក​រៀបនឹង​យក %s ពី​បញ្ជីមិត្តភក្ដិ​របស់​អ្នក ។ តើ​អ្នកចង់​បន្ត​ដែរឬទេ ?"
+
+msgid "Remove Buddy"
+msgstr "យក​​មិត្តភក្ដិ​ចេញ"
+
+msgid "_Remove Buddy"
+msgstr "យក​​មិត្តភក្ដិ​ចេញ"
+
+#, c-format
+msgid ""
+"You are about to remove the chat %s from your buddy list.  Do you want to "
+"continue?"
+msgstr "អ្នក​រៀបនឹង​យក​ការ​ជជែក %s ចេញពី​​បញ្ជី​មិត្តភក្ដិ​របស់​អ្នក ។ តើ​អ្នកចង់​បន្តដែរឬទេ ?"
+
+msgid "Remove Chat"
+msgstr "យក​​កា​រជជែក​ចេញ"
+
+msgid "_Remove Chat"
+msgstr "យក​​ការ​ជជែក​ចេញ"
+
+msgid "Right-click for more unread messages...\n"
+msgstr "ចុច​កណ្ដុរ​ស្ដាំ​ដើម្បី​មើលសារ​​មិនទាន់អាន​បន្ថែម​ទៀត...\n"
+
+msgid "_Change Status"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព"
+
+msgid "Show Buddy _List"
+msgstr "បង្ហាញ​បញ្ជីមិត្តភក្ដិ"
+
+msgid "_Unread Messages"
+msgstr "សារ​មិនទាន់អាន"
+
+msgid "New _Message..."
+msgstr "សារ​ថ្មី..."
+
+msgid "_Accounts"
+msgstr "គណនី"
+
+msgid "Plu_gins"
+msgstr "កម្មវិធី​ជំនួយ"
+
+msgid "Pr_eferences"
+msgstr "ចំណូល​ចិត្ត"
+
+msgid "Mute _Sounds"
+msgstr "ស្ងាត់"
+
+msgid "_Blink on New Message"
+msgstr "លោត​ភ្លឹបភ្លែង​នៅពេល​មាន​សារ​ថ្មី"
+
+msgid "_Quit"
+msgstr "ចេញ"
+
+msgid "Not started"
+msgstr "មិន​បានចាប់ផ្ដើម​ទេ"
+
+msgid "<b>Receiving As:</b>"
+msgstr "<b>ទទួល​ជា ៖</b>"
+
+msgid "<b>Receiving From:</b>"
+msgstr "<b>ទទួល​ពីរ ៖</b>"
+
+msgid "<b>Sending To:</b>"
+msgstr "<b>ផ្ញើ​ទៅ ៖</b>"
+
+msgid "<b>Sending As:</b>"
+msgstr "<b>ផ្ញើជា ៖</b>"
+
+msgid "There is no application configured to open this type of file."
+msgstr "គ្មាន​កម្មវិធី​បានកំណត់​រចនាសម្ព័ន្ធទេ ដើម្បីបើក​ឯកសារ​ប្រភេទ​នេះ ។"
+
+msgid "An error occurred while opening the file."
+msgstr "កំហុស​មួយ​បានកើត​ឡើង​ខណៈពេល​បើក​ឯកសារ ។"
+
+#, c-format
+msgid "Error launching %s: %s"
+msgstr "កំហុស​ក្នុងកា​រចាប់ផ្ដើម %s: %s"
+
+#, c-format
+msgid "Error running %s"
+msgstr "កំហុស​ក្នុងការ %s"
+
+#, c-format
+msgid "Process returned error code %d"
+msgstr "ដំណើរការ​បានត្រឡប់កូដ​កំហុស %d"
+
+msgid "Filename:"
+msgstr "ឈ្មោះ​ឯកសារ ៖"
+
+msgid "Local File:"
+msgstr "ឯកសារ​មូលដ្ឋាន ៖"
+
+msgid "Speed:"
+msgstr "ល្បឿន ៖"
+
+msgid "Time Elapsed:"
+msgstr "ពេល​វេលា​​កន្លង​ទៅ ៖"
+
+msgid "Time Remaining:"
+msgstr "ពេល​វេលា​​នៅ​សល់ ៖"
+
+msgid "Close this window when all transfers _finish"
+msgstr "បិទ​បង្អួច​នេះ​នៅពេល​កា​រផ្ទេរ​ទាំងអស់​ចប់"
+
+msgid "C_lear finished transfers"
+msgstr "ជម្រះ​ការ​ផ្ទេរ​ដែលចប់"
+
+#. "Download Details" arrow
+msgid "File transfer _details"
+msgstr "សេចក្ដីលម្អិត​ការ​ផ្ទេរ​ឯកសារ"
+
+#. Pause button
+msgid "_Pause"
+msgstr "ផ្អាក"
+
+#. Resume button
+msgid "_Resume"
+msgstr "បន្ត"
+
+msgid "Paste as Plain _Text"
+msgstr "បិទភ្ជាប់​ជា​អត្ថបទ​ធម្មតា"
+
+msgid "_Reset formatting"
+msgstr "កំណត់​ការ​ធ្វើ​ទ្រង់ទ្រាយ​ឡើង​វិញ"
+
+msgid "Disable _smileys in selected text"
+msgstr "បិទ​សញ្ញាណអារម្មណ៍​នៅ​ក្នុងអត្ថបទ​ដែលបានជ្រើស"
+
+msgid "Hyperlink color"
+msgstr "ពណ៌​តំណខ្ពស់"
+
+msgid "Color to draw hyperlinks."
+msgstr "ពណ៌​ត្រូវគូ​តំណខ្ពស់ ។"
+
+msgid "Hyperlink visited color"
+msgstr "ពណ៌ដែល​បាន​ទស្សនា​តំណខ្ពស់"
+
+msgid "Color to draw hyperlinks after it has been visited (or activated)."
+msgstr "ពណ៌​ត្រូវគូ​តំណខ្ពស់​បន្ទាប់ពី​វា​ត្រូវ​បានទស្សនា (ឬ​ធ្វើ​ឲ្យ​សកម្ម) ។"
+
+msgid "Hyperlink prelight color"
+msgstr "ពណ៌​ពន្លឺ​មុន​តំណខ្ពស់"
+
+msgid "Color to draw hyperlinks when mouse is over them."
+msgstr "ពណ៌​ត្រូវ​គូ​តំណខ្ពស់​នៅពេល​ដាក់​កណ្ដុរ​លើ​ពួកវា ។"
+
+msgid "Sent Message Name Color"
+msgstr "បានផ្ញើ​ពណ៌​ឈ្មោះ​សារ"
+
+msgid "Color to draw the name of a message you sent."
+msgstr "ពណ៌​ត្រូវ​គូរ​ឈ្មោះ​សារ​ដែលអ្នកបានផ្ញើ ។"
+
+msgid "Received Message Name Color"
+msgstr "បាន​ទទួល​ពណ៌​ឈ្មោះ​សារ"
+
+msgid "Color to draw the name of a message you received."
+msgstr "ពណ៌​ត្រូវគូរ​ឈ្មោះ​សារ​ដែលអ្នកបានទទួល ។"
+
+msgid "\"Attention\" Name Color"
+msgstr "\"ប្រយ័ត្ន\" ពណ៌​ឈ្មោះ"
+
+msgid "Color to draw the name of a message you received containing your name."
+msgstr "ពណ៌​ត្រូវ​គូរ​ឈ្មោះ​សារ​ដែល​អ្នកបានទទួល មានឈ្មោះរបស់​អ្នក ។"
+
+msgid "Action Message Name Color"
+msgstr "សកម្មភាព​​ពណ៌​ឈ្មោះ​សារ​"
+
+msgid "Color to draw the name of an action message."
+msgstr "ពណ៌​ត្រូវគូរ​ឈ្មោះ​សារ​សកម្មភាព ។"
+
+msgid "Action Message Name Color for Whispered Message"
+msgstr "សកម្មភាព​ពណ៌​ឈ្មោះ​សារ​​សម្រាប់​សារ​ដែល​ខ្សឹប"
+
+msgid "Whisper Message Name Color"
+msgstr "ពណ៌​ឈ្មោះ​សារ​ខ្សឹប"
+
+msgid "Typing notification color"
+msgstr "វាយ​ពណ៌​ជូនដំណឹង"
+
+msgid "The color to use for the typing notification font"
+msgstr "ពណ៌​ត្រូវ​ប្រើ​ដើម្បីវាយ​ពុម្ពអក្សរ​ជូនដំណឹង"
+
+msgid "Typing notification font"
+msgstr "វាយ​ពុម្ពអក្សរ​ជូនដំណឹង"
+
+msgid "The font to use for the typing notification"
+msgstr "ពុម្ពអក្សរ​ត្រូវ​ប្រើ​សម្រាប់វាយ​ការ​ជូនដំណឹង"
+
+msgid "Enable typing notification"
+msgstr "អនុញ្ញាត​វាយ​ការជូនដំណឹង"
+
+msgid "_Copy Email Address"
+msgstr "ចម្លង​អាសយដ្ឋាន​អ៊ីមែល"
+
+msgid "_Open Link in Browser"
+msgstr "បើក​តំណ​នៅ​ក្នុង​កម្មវិធីរុករក"
+
+msgid "_Copy Link Location"
+msgstr "ចម្លង​ទីតាំង​តំណ"
+
+msgid ""
+"<span size='larger' weight='bold'>Unrecognized file type</span>\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+"<span size='larger' weight='bold'>មិនស្គាល់​ប្រភេទ​ឯកសារ</span>\n"
+"\n"
+"កំណត់​លំនាំដើម​ទៅ PNG ។"
+
+msgid ""
+"Unrecognized file type\n"
+"\n"
+"Defaulting to PNG."
+msgstr ""
+"ប្រភេទសារ​ដែល​មិនស្គាល់\n"
+"\n"
+"កំណត់​លំនាំដើម​ទៅ PNG ។"
+
+#, c-format
+msgid ""
+"<span size='larger' weight='bold'>Error saving image</span>\n"
+"\n"
+"%s"
+msgstr ""
+"<span size='larger' weight='bold'>កំហុស​ក្នុងការ​រក្សាទុក​រូបភាព</span>\n"
+"\n"
+"%s"
+
+#, c-format
+msgid ""
+"Error saving image\n"
+"\n"
+"%s"
+msgstr ""
+"កំហុស​ក្នុងការ​រក្សាទុក​រូបភាព\n"
+"\n"
+"%s"
+
+msgid "Save Image"
+msgstr "រក្សា​​ទុក​​​រូបភាព"
+
+#, c-format
+msgid "_Save Image..."
+msgstr "រក្សាទុក​រូបភាព..."
+
+#, c-format
+msgid "_Add Custom Smiley..."
+msgstr "បន្ថែម​សញ្ញាណ​អារម្មណ៍​ផ្ទាល់ខ្លួន..."
+
+msgid "Select Font"
+msgstr "ជ្រើស​ពុម្ព​អក្សរ"
+
+msgid "Select Text Color"
+msgstr "ជ្រើស​ពណ៌​អត្ថបទ"
+
+msgid "Select Background Color"
+msgstr "ជ្រើស​ពណ៌​ផ្ទៃ​ខាងក្រោយ"
+
+msgid "_URL"
+msgstr "URL"
+
+msgid "_Description"
+msgstr "សេចក្ដីពិពណ៌នា"
+
+msgid ""
+"Please enter the URL and description of the link that you want to insert. "
+"The description is optional."
+msgstr "សូម​បញ្ចូល URL និង​សេចក្ដីពិពណ៌នា​របស់តំណ​ដែល​អ្នក​ចង់​បញ្ចូល ។ សេចក្ដី​ពិពណ៌នា​គឺជា​ជម្រើស ។"
+
+msgid "Please enter the URL of the link that you want to insert."
+msgstr "សូម​បញ្ចូល​ URL របស់​តំណ​ដែល​អ្នកចង់​បញ្ចូល ។"
+
+msgid "Insert Link"
+msgstr "បញ្ចូល​តំណ"
+
+msgid "_Insert"
+msgstr "បញ្ចូល​"
+
+#, c-format
+msgid "Failed to store image: %s\n"
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព ៖ %s\n"
+
+msgid "Insert Image"
+msgstr "បញ្ចូល​​រូបភាព"
+
+#, c-format
+msgid ""
+"This smiley is disabled because a custom smiley exists for this shortcut:\n"
+" %s"
+msgstr ""
+"សញ្ញាណ​អារម្មណ៍​ត្រូវ​បានបិទ​ពីព្រោះ​មាន​សញ្ញាណ​អារម្មណ៍​សម្រាប់​ផ្លូវកាត់​នេះ​រួច​ហើយ ៖\n"
+" %s"
+
+msgid "Smile!"
+msgstr "សញ្ញាណ​អារម្មណ៍ !"
+
+msgid "_Manage custom smileys"
+msgstr "គ្រប់គ្រង​សញ្ញាណ​អារម្មណ៍​ផ្ទាល់ខ្លួន"
+
+msgid "This theme has no available smileys."
+msgstr "ស្បែក​នេះ​មិនមាន​សញ្ញាណ​អារម្មណ៍​ទេ ។"
+
+msgid "_Font"
+msgstr "ពុម្ព​អក្សរ"
+
+msgid "Group Items"
+msgstr "ដាក់​ធាតុ​ជា​ក្រុម"
+
+msgid "Ungroup Items"
+msgstr "បំបែក​​ក្រុម​ធាតុ"
+
+msgid "Bold"
+msgstr "ដិត​"
+
+msgid "Italic"
+msgstr "ទ្រេត"
+
+msgid "Underline"
+msgstr "គូស​បន្ទាត់​ក្រោម"
+
+msgid "Strikethrough"
+msgstr "បន្ទាត់​ឆូត"
+
+msgid "Increase Font Size"
+msgstr "បង្កើន​ទំហំ​ពុម្ពអក្សរ"
+
+msgid "Decrease Font Size"
+msgstr "បន្ថយ​ទំហំ​ពុម្ពអក្សរ"
+
+msgid "Font Face"
+msgstr "លក្ខណៈ​ពុម្ព​អក្សរ"
+
+msgid "Background Color"
+msgstr "ពណ៌​ផ្ទៃ​ខាង​ក្រោយ​"
+
+msgid "Foreground Color"
+msgstr "ពណ៌​ផ្ទៃ​ខាងមុខ"
+
+msgid "Reset Formatting"
+msgstr "កំណត់​ការ​ធ្វើ​ទ្រង់ទ្រាយ​ឡើងវិញ"
+
+msgid "Insert IM Image"
+msgstr "បញ្ចូល​រូបភាព IM"
+
+msgid "Insert Smiley"
+msgstr "បញ្ចូល​​សញ្ញាណអារម្មណ៍"
+
+msgid "<b>_Bold</b>"
+msgstr "<b>ដិត</b>"
+
+msgid "<i>_Italic</i>"
+msgstr "<i>ទ្រេត</i>"
+
+msgid "<u>_Underline</u>"
+msgstr "<u>គូស​បន្ទាត់​ក្រោម</u>"
+
+msgid "<span strikethrough='true'>Strikethrough</span>"
+msgstr "<span strikethrough='true'>បន្ទាត់​ឆូត</span>"
+
+msgid "<span size='larger'>_Larger</span>"
+msgstr "<span size='larger'>ធំជាង</span>"
+
+msgid "_Normal"
+msgstr "ធម្មតា"
+
+msgid "<span size='smaller'>_Smaller</span>"
+msgstr "<span size='smaller'>តូចជាង</span>"
+
+#. If we want to show the formatting for the following items, we would
+#. * need to update them when formatting changes. The above items don't need
+#. * no updating nor nothin'
+msgid "_Font face"
+msgstr "លក្ខណៈ​ពុម្ព​អក្សរ"
+
+msgid "Foreground _color"
+msgstr "ពណ៌​ផ្ទៃខាង​មុខ"
+
+msgid "Bac_kground color"
+msgstr "ពណ៌​ផ្ទៃ​ខាងក្រោយ"
+
+msgid "_Image"
+msgstr "រូបភាព"
+
+msgid "_Link"
+msgstr "តំណ"
+
+msgid "_Horizontal rule"
+msgstr "ក្បួន​ផ្ដេក"
+
+msgid "_Smile!"
+msgstr "សញ្ញាណ​អារម្មណ៍"
+
+msgid "Log Deletion Failed"
+msgstr "បានបរាជ័យ​ក្នុងការ​លុប​កំណត់​ហេតុ"
+
+msgid "Check permissions and try again."
+msgstr "ពិនិត្យ​មើល​សិទ្ធិ​ ហើយ​ព្យាយាម​ម្ដង​ទៀត ។"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation with "
+"%s which started at %s?"
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​ចង់​លុប​កំណត់​សន្ទនា​ជា​មួយ %s ជា​អចិន្ត្រៃយ៍​ដែល​ចាប់ផ្ដើមនៅ %s ដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
+msgstr "តើ​អ្នកប្រាកដ​ជា​ចង់​លុប​កំណត់​ហេតុ​សន្ទនា​នៅក្នុង %s ជា​អចិន្ត្រៃយ៍​​ដែល​ចាប់​ផ្ដើ​ម​នៅ %s ដែរឬទេ ?"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
+msgstr "តើ​អ្នក​ប្រាកដជា​ចង់លុប​កំណត់​ហេតុ​ប្រព័ន្ធ​ដែល​ចាប់ផ្ដើម​នៅ %s ជា​អចិន្ត្រៃយ៍​ឬ ?"
+
+msgid "Delete Log?"
+msgstr "លុប​កំណត់​ហេតុ ?"
+
+msgid "Delete Log..."
+msgstr "លុប​កំណត់​ហេតុ..."
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
+msgstr "<span size='larger' weight='bold'>សន្ទនា​នៅ​ក្នុង %s លើ %s</span>"
+
+#, c-format
+msgid "<span size='larger' weight='bold'>Conversation with %s on %s</span>"
+msgstr "<span size='larger' weight='bold'>សន្ទនា​ជា​មួយ %s នៅ​លើ %s</span>"
+
+#. Steal the "HELP" response and use it to trigger browsing to the logs folder
+msgid "_Browse logs folder"
+msgstr "រកមើល​ថត​កំណត់​ហេតុ"
+
+#, c-format
+msgid "%s %s. Try `%s -h' for more information.\n"
+msgstr "%s %s ។ ព្យាយាម `%s -h' សម្រាប់​ព័ត៌មាន​បន្ថែម ។\n"
+
+#, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+"  -c, --config=DIR    use DIR for config files\n"
+"  -d, --debug         print debugging messages to stdout\n"
+"  -h, --help          display this help and exit\n"
+"  -m, --multiple      do not ensure single instance\n"
+"  -n, --nologin       don't automatically login\n"
+"  -l, --login[=NAME]  enable specified account(s) (optional argument NAME\n"
+"                      specifies account(s) to use, separated by commas.\n"
+"                      Without this only the first account will be enabled).\n"
+"  --display=DISPLAY   X display to use\n"
+"  -v, --version       display the current version and exit\n"
+msgstr ""
+"%s %s\n"
+"ការ​ប្រើប្រាស់ ៖ %s [ជម្រើស]...\n"
+"\n"
+"  -c, --config=DIR    ប្រើ DIR សម្រាប់​ឯកសារ​កំណត់​រចនាសម្ព័ន្ធ\n"
+"  -d, --debug         បោះពុម្ព​សារ​បំបាត់​កំហុស​ទៅ stdout\n"
+"  -h, --help          បង្ហាញ​ជំនួយ​នេះ ហើយ​ចេញ\n"
+"  -m, --multiple      មិនប្រាកដ​ធាតុ​តែ​មួយ\n"
+"  -n, --nologin       កុំ​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ\n"
+"  -l, --login[=NAME]  បើក​គណនី​ដែល​បានបញ្ជាក់ (អាគុយម៉ង​ជម្រើស NAME\n"
+"                      បញ្ជាក់​គណនី​ត្រូវ​ប្រើ បំបែក​ដោយ​សញ្ញា (,) ។\n"
+"                      ដោយ​គ្មាន​គណនី​ដំបូង​នេះ​នឹង​ត្រូវ​បានបើក) ។\n"
+"  --display=DISPLAY   ការ​បង្ហាញ X ត្រូវ​ប្រើ\n"
+"  -v, --version       បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n"
+
+#, c-format
+msgid ""
+"%s %s\n"
+"Usage: %s [OPTION]...\n"
+"\n"
+"  -c, --config=DIR    use DIR for config files\n"
+"  -d, --debug         print debugging messages to stdout\n"
+"  -h, --help          display this help and exit\n"
+"  -m, --multiple      do not ensure single instance\n"
+"  -n, --nologin       don't automatically login\n"
+"  -l, --login[=NAME]  enable specified account(s) (optional argument NAME\n"
+"                      specifies account(s) to use, separated by commas.\n"
+"                      Without this only the first account will be enabled).\n"
+"  -v, --version       display the current version and exit\n"
+msgstr ""
+"%s %s\n"
+"ការ​ប្រើប្រាស់ ៖ %s [ជម្រើស]...\n"
+"\n"
+"  -c, --config=DIR    ប្រើ DIR សម្រាប់​ឯកសារ​កំណត់​រចនាសម្ព័ន្ធ\n"
+"  -d, --debug         បោះពុម្ព​សារ​បំបាត់​កំហុស​ទៅ stdout\n"
+"  -h, --help          បង្ហាញជំនួយ​នេះ​ ហើយ​ចេញ\n"
+"  -m, --multiple      កុំ​ប្រាកដ​ធាតុ​តែ​មួយ\n"
+"  -n, --nologin       កុំ​ចូល​ដោយ​ស្វ័យ​ប្រវត្តិ\n"
+"  -l, --login[=NAME]  បើក​គណនី​ដែលបាន​បញ្ជាក់ (អាគុយម៉ង់​ជម្រើស NAME\n"
+"                      បញ្ជាក់​គណនី​ត្រូវ​ប្រើ បំបែក​ដោយ​សញ្ញា​ (,)។\n"
+"                      ដោយ​គ្មាន​គណនី​ដំបូង​នឹង​ត្រូវ​បានបើក) ។\n"
+"  -v, --version       បង្ហាញ​កំណែ​បច្ចុប្បន្ន ហើយ​ចេញ\n"
+
+#, c-format
+msgid ""
+"%s %s has segfaulted and attempted to dump a core file.\n"
+"This is a bug in the software and has happened through\n"
+"no fault of your own.\n"
+"\n"
+"If you can reproduce the crash, please notify the developers\n"
+"by reporting a bug at:\n"
+"%ssimpleticket/\n"
+"\n"
+"Please make sure to specify what you were doing at the time\n"
+"and post the backtrace from the core file.  If you do not know\n"
+"how to get the backtrace, please read the instructions at\n"
+"%swiki/GetABacktrace\n"
+msgstr ""
+"%s %s has segfaulted and attempted to dump a core file.\n"
+"This is a bug in the software and has happened through\n"
+"no fault of your own.\n"
+"\n"
+"If you can reproduce the crash, please notify the developers\n"
+"by reporting a bug at:\n"
+"%ssimpleticket/\n"
+"\n"
+"Please make sure to specify what you were doing at the time\n"
+"and post the backtrace from the core file.  If you do not know\n"
+"how to get the backtrace, please read the instructions at\n"
+"%swiki/GetABacktrace\n"
+
+#. Translators may want to transliterate the name.
+#. It is not to be translated.
+msgid "Pidgin"
+msgstr "Pidgin"
+
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "ចេញ ដោយ​សារ​តែ​ម៉ាស៊ីន​ភ្ញើ libpurple ផ្សេង​ទៀត​កំពុង​រត់​រួច​ហើយ ។\n"
+
+msgid "Open All Messages"
+msgstr "បើក​សារ​ទាំងអស់"
+
+msgid "<span weight=\"bold\" size=\"larger\">You have mail!</span>"
+msgstr "<span weight=\"bold\" size=\"larger\">អ្នក​មាន​សំបុត្រ !</span>"
+
+#, c-format
+msgid "%s has %d new message."
+msgid_plural "%s has %d new messages."
+msgstr[0] "%s មាន​សារ​ថ្មី %d ។"
+
+#, c-format
+msgid "<b>%d new email.</b>"
+msgid_plural "<b>%d new emails.</b>"
+msgstr[0] "<b>អ៊ីមែល​ថ្មី %d ។</b>"
+
+#, c-format
+msgid "The browser command \"%s\" is invalid."
+msgstr "ពាក្យ​បញ្ជា​កម្មវិធីរុករក \"%s\" មិន​ត្រឹមត្រូវ ។"
+
+msgid "Unable to open URL"
+msgstr "មិនអាច​បើក URL"
+
+#, c-format
+msgid "Error launching \"%s\": %s"
+msgstr "កំហុស​ក្នុងកា​រចាប់ផ្ដើម \"%s\" ៖ %s"
+
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
+msgstr "ពាក្យ​បញ្ជា​កម្មវិធី​រុករក 'ដោយដៃ' ត្រូវ​បាន​ជ្រើស ប៉ុន្តែ​គ្មាន​ពាក្យ​បញ្ជា​ត្រូវ​បាន​ជ្រើស​ទេ ។"
+
+msgid "The following plugins will be unloaded."
+msgstr "កម្មវិធី​ជំនួយ​ដូច​ខាងក្រោម​នឹង​ត្រូវ​បានផ្ទុក​ឡើង ។"
+
+msgid "Multiple plugins will be unloaded."
+msgstr "កម្មវិធី​ជំនួយ​ជា​ច្រើន​នឹង​ត្រូវ​បានផ្ទុក​ឡើង ។"
+
+msgid "Unload Plugins"
+msgstr "ផ្ទុក​ឡើង​កម្មវិធី​ជំនួយ"
+
+msgid "Could not unload plugin"
+msgstr "មិនអាច​ផ្ទុក​កម្មវិធី​ជំនួយ​ឡើង​បានទេ"
+
+msgid ""
+"The plugin could not be unloaded now, but will be disabled at the next "
+"startup."
+msgstr "កម្មវិធី​ជំនួយ​មិនអាច​ត្រូវ​បានផ្ទុក​ឡើង​ឥឡូវ​ទេ ប៉ុន្តែ​នឹង​ត្រូ​វបាន​បិទនៅពេល​ចាប់ផ្ដើមលើក​ក្រោយ ។"
+
+#, c-format
+msgid ""
+"<span foreground=\"red\" weight=\"bold\">Error: %s\n"
+"Check the plugin website for an update.</span>"
+msgstr ""
+"<span foreground=\"red\" weight=\"bold\">កំហុស ៖ %s\n"
+"ពិនិត្យមើល​តំបន់​បណ្ដាញ​កម្មវិធី​ជំនួយ​សម្រាប់​ភាព​ទាន់សម័យ ។</span>"
+
+msgid "Author"
+msgstr "អ្នកនិពន្ធ ​"
+
+msgid "<b>Written by:</b>"
+msgstr "<b>បាន​សរសេរ​ដោ​យ ៖</b>"
+
+msgid "<b>Web site:</b>"
+msgstr "<b>តំបន់​បណ្ដាញ ៖</b>"
+
+msgid "<b>Filename:</b>"
+msgstr "<b>ឈ្មោះ​ឯកសារ ៖</b>"
+
+msgid "Configure Pl_ugin"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​ជំនួយ"
+
+msgid "<b>Plugin Details</b>"
+msgstr "<b>សេចក្ដី​លម្អិត​កម្មវិធី​ជំនួយ</b>"
+
+msgid "Select a file"
+msgstr "ជ្រើស​ឯកសារ"
+
+#. Create the "Pounce on Whom" frame.
+msgid "Pounce on Whom"
+msgstr "ក្រុម​នៅ​លើ​អ្នកណា"
+
+msgid "_Buddy name:"
+msgstr "ឈ្មោះ​មិត្តភក្ដិ ៖"
+
+msgid "Si_gns on"
+msgstr "ចូល"
+
+msgid "Signs o_ff"
+msgstr "ចេញ"
+
+msgid "Goes a_way"
+msgstr "ចាកឆ្ងាយ"
+
+msgid "Ret_urns from away"
+msgstr "ត្រឡប់​ពី​ការ​ចាកឆ្ងាយ"
+
+msgid "Becomes _idle"
+msgstr "ក្លាយជា​ទំនេរ"
+
+msgid "Is no longer i_dle"
+msgstr "មិន​ទំនេរ​ទៀតទេ"
+
+msgid "Starts _typing"
+msgstr "ចាប់ផ្ដើម​វាយ"
+
+msgid "P_auses while typing"
+msgstr "ផ្អាក​ខណៈពេល​វាយ"
+
+msgid "Stops t_yping"
+msgstr "ឈប់​វាយ"
+
+msgid "Sends a _message"
+msgstr "ផ្ញើសារ"
+
+msgid "Ope_n an IM window"
+msgstr "បើក​បង្អួច IM"
+
+msgid "_Pop up a notification"
+msgstr "កា​រជូនដំណឹង​លេច​ឡើង"
+
+msgid "Send a _message"
+msgstr "ផ្ញើ​សារ"
+
+msgid "E_xecute a command"
+msgstr "ប្រតិបត្តិ​ពាក្យ​បញ្ជា"
+
+msgid "P_lay a sound"
+msgstr "ចាក់​សំឡេង"
+
+msgid "Brows_e..."
+msgstr "រកមើល..."
+
+msgid "Br_owse..."
+msgstr "រកមើល..."
+
+msgid "Pre_view"
+msgstr "មើលជា​មុន"
+
+msgid "P_ounce only when my status is not Available"
+msgstr "តែ​ក្រុម​នៅពេល​ដែល​ស្ថានភាព​ខ្ញុំ​មិនអាច​ជជែក​បាន"
+
+msgid "_Recurring"
+msgstr "កើតឡើង​វិញ"
+
+msgid "Pounce Target"
+msgstr "ក្រុម​គោល​ដៅ​"
+
+msgid "Smiley theme failed to unpack."
+msgstr "ស្បែក​សញ្ញាណអារម្មណ៍​បានបរាជ័យ​ក្នុងការ​ស្រាយ ។"
+
+msgid "Install Theme"
+msgstr "ដំឡើង​ស្បែក"
+
+msgid ""
+"Select a smiley theme that you would like to use from the list below. New "
+"themes can be installed by dragging and dropping them onto the theme list."
+msgstr ""
+"ជ្រើស​ស្បែក​សញ្ញាណ​ញញឹម​ដែល​អ្នក​ចង់​ប្រើ​ពី​បញ្ជី​ខាង​ក្រោម ។ ស្បែក​ថ្មី​អាច​ត្រូវ​បាន​អូស និង​ទម្លាក់​ពួកវា​ទៅ​ក្នុង​"
+"បញ្ជី​ស្បែក ។"
+
+msgid "Icon"
+msgstr "រូបតំណាង"
+
+msgid "Keyboard Shortcuts"
+msgstr "ផ្លូវ​កាត់​ក្តារចុច"
+
+msgid "Cl_ose conversations with the Escape key"
+msgstr "បិទ​ការ​សន្ទនា​ដោយ​ប្រើ​គ្រាប់ចុច​គេច (Escape)"
+
+msgid "System Tray Icon"
+msgstr "រូបតំណាង​ថាស​ប្រព័ន្ធ"
+
+msgid "_Show system tray icon:"
+msgstr "បង្ហាញ​​រូបតំណាង​ថាស​ប្រព័ន្ធ ៖"
+
+msgid "On unread messages"
+msgstr "សារ​មិន​ទាន់អាន"
+
+msgid "Conversation Window Hiding"
+msgstr "លាក់​បង្អួច​សន្ទនា"
+
+msgid "_Hide new IM conversations:"
+msgstr "លាក់​កា​រសន្ទនា IM ថ្មី ៖"
+
+msgid "When away"
+msgstr "នៅពេល​ចាកឆ្ងាយ"
+
+#. All the tab options!
+msgid "Tabs"
+msgstr "ថេប"
+
+msgid "Show IMs and chats in _tabbed windows"
+msgstr "បង្ហាញ IMs និង​ការជជែក​នៅ​ក្នុង​បង្អួច​ជា​ថេប"
+
+msgid "Show close b_utton on tabs"
+msgstr "បង្ហាញ​ប៊ូតុង​បិទ​នៅ​លើ​ថេប"
+
+msgid "_Placement:"
+msgstr "ការ​ដាក់ ៖"
+
+msgid "Top"
+msgstr "កំពូល"
+
+msgid "Bottom"
+msgstr "បាត"
+
+msgid "Left"
+msgstr "ឆ្វេង"
+
+msgid "Right"
+msgstr "​ស្តាំ"
+
+msgid "Left Vertical"
+msgstr "បញ្ឈរ​ឆ្វេង"
+
+msgid "Right Vertical"
+msgstr "បញ្ឈរ​ស្ដាំ"
+
+msgid "N_ew conversations:"
+msgstr "ការ​សន្ទនា​ថ្មី ៖"
+
+msgid "Show _formatting on incoming messages"
+msgstr "បង្ហាញ​កា​រធ្វើ​ទ្រង់ទ្រាយ​នៅ​ពេល​មានសារ​ចូល"
+
+msgid "Close IMs immediately when the tab is closed"
+msgstr "បិទ​ IMs ភ្លាមៗ​នៅពេល​បិទ​ផ្ទាំង"
+
+msgid "Show _detailed information"
+msgstr "បង្ហាញ​ព័ត៌មាន​លម្អិត"
+
+msgid "Enable buddy ic_on animation"
+msgstr "បើក​ចលនា​រូបតំណាង​របស់​មិត្តភក្ដិ"
+
+msgid "_Notify buddies that you are typing to them"
+msgstr "ជូនដំណឹង​មិត្តភក្ដិ​ដេល​អ្នក​កំពុង​វាយ​ទៅ​កាន់​ពួកគេ"
+
+msgid "Highlight _misspelled words"
+msgstr "បន្លិច​ពាក្យ​ដែល​ខុស"
+
+msgid "Use smooth-scrolling"
+msgstr "ប្រើ​រមូរ​រលូន"
+
+msgid "F_lash window when IMs are received"
+msgstr "បង្អួច Flash នៅពេល​បានទទួល IMs"
+
+msgid "Minimi_ze new conversation windows"
+msgstr "បង្រួម​បង្អួច​សន្ទនា​ថ្មី​អប្បបរមា"
+
+msgid "Minimum input area height in lines:"
+msgstr "បង្រួម​កម្ពស់​ផ្ទៃ​បញ្ចូល​គិតជា​បន្ទាត់ ៖"
+
+msgid "Font"
+msgstr "ពុម្ព​អក្សរ"
+
+msgid "Use document font from _theme"
+msgstr "ប្រើ​ពុម្ពអក្សរ​ឯកសារ​ពី​ស្បែក"
+
+msgid "Use font from _theme"
+msgstr "ប្រើ​ពុម្ពអក្សរ​ពី​ស្បែក"
+
+msgid "Conversation _font:"
+msgstr "ពុម្ពអក្សរ​សន្ទនា ៖"
+
+msgid "Default Formatting"
+msgstr "ការ​ធ្វើទ្រង់ទ្រាយ​លំនាំដើម"
+
+msgid ""
+"This is how your outgoing message text will appear when you use protocols "
+"that support formatting."
+msgstr ""
+"នេះ​ជា​វិធី​ដែល​អត្ថបទ​សារ​ចេញ​របស់​នឹង​បង្ហាញ នៅពេល​ដែល​អ្នក​ប្រើ​ពិធីការ​ដែល​គាំទ្រ​ការ​ធ្វើទ្រង់ទ្រាយ ។"
+
+msgid "Cannot start proxy configuration program."
+msgstr "មិនអាច​ចាប់ផ្ដើម​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី​បានទេ ។"
+
+msgid "Cannot start browser configuration program."
+msgstr "មិនអាច​ចាប់ផ្ដើម​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក​បានទេ ។"
+
+msgid "ST_UN server:"
+msgstr "ម៉ាស៊ីនបម្រើ STUN ៖"
+
+msgid "<span style=\"italic\">Example: stunserver.org</span>"
+msgstr "<span style=\"italic\">ឧទាហរណ៍ ៖ stunserver.org</span>"
+
+msgid "_Autodetect IP address"
+msgstr "រកឃើញ​អាសយដ្ឋាន IP ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Public _IP:"
+msgstr "IP សាធារណៈ"
+
+msgid "Ports"
+msgstr "ច្រក"
+
+msgid "_Enable automatic router port forwarding"
+msgstr "បើក​ការ​បញ្ជូន​ច្រក​រ៉ោត័រ​បន្ត​ដោយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "_Manually specify range of ports to listen on"
+msgstr "បញ្ជាក់ជួរ​ច្រក​ដែល​ត្រូវ​ស្ដាប់​ដោយ​ដៃ"
+
+msgid "_Start port:"
+msgstr "ច្រក​ចាប់ផ្ដើម ៖"
+
+msgid "_End port:"
+msgstr "ច្រក​បញ្ចប់ ៖"
+
+msgid "Proxy Server &amp; Browser"
+msgstr "ម៉ាស៊ីនបម្រើ​ប្រូកស៊ី &amp; កម្មវិធី​រុករក​"
+
+msgid "<b>Proxy configuration program was not found.</b>"
+msgstr "<b>រក​មិន​ឃើញ​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី ។</b>"
+
+msgid "<b>Browser configuration program was not found.</b>"
+msgstr "<b>រក​មិនឃើញ​កម្មវិធី​កំណត់​រចនាសម្ព័ន្ធ​របស់​កម្មវិធី​រុករក​ទេ ។</b>"
+
+msgid ""
+"Proxy & Browser preferences are configured\n"
+"in GNOME Preferences"
+msgstr "បានកំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក និង​ប្រូកស៊ី​នៅ​ក្នុង​ចំណូល​ចិត្ត​​របស់ GNOME"
+
+msgid "Configure _Proxy"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​ប្រូកស៊ី"
+
+msgid "Configure _Browser"
+msgstr "កំណត់​រចនាសម្ព័ន្ធ​កម្មវិធី​រុករក"
+
+msgid "Proxy Server"
+msgstr "ម៉ាស៊ីន​បម្រើ​ប្រូកស៊ី"
+
+msgid "No proxy"
+msgstr "គ្មានប្រូកស៊ី"
+
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "ប្រើ"
+
+msgid "_User:"
+msgstr "អ្នក​ប្រើ ៖"
+
+msgid "Seamonkey"
+msgstr "Seamonkey"
+
+msgid "Opera"
+msgstr "Opera"
+
+msgid "Netscape"
+msgstr "Netscape"
+
+msgid "Mozilla"
+msgstr "Mozilla"
+
+msgid "Konqueror"
+msgstr "Konqueror"
+
+msgid "Desktop Default"
+msgstr "ផ្ទៃតុ​លំនាំដើម"
+
+msgid "GNOME Default"
+msgstr "GNOME លំនាំដើម"
+
+msgid "Galeon"
+msgstr "Galeon"
+
+msgid "Firefox"
+msgstr "Firefox"
+
+msgid "Firebird"
+msgstr "Firebird"
+
+msgid "Epiphany"
+msgstr "Epiphany"
+
+msgid "Manual"
+msgstr "សៀវភៅ​ដៃ"
+
+msgid "Browser Selection"
+msgstr "ជម្រើស​កម្មវិធី​រុករក"
+
+msgid "_Browser:"
+msgstr "កម្មវិធី​រុករក ៖"
+
+msgid "_Open link in:"
+msgstr "បើក​តំណ​នៅ​ក្នុង ៖"
+
+msgid "Browser default"
+msgstr "កម្មវិធីរុករក​លំនាំដើម"
+
+msgid "Existing window"
+msgstr "មាន​បង្អួចរួច​ហើយ"
+
+msgid "New tab"
+msgstr "ផ្ទាំង​ថ្មី"
+
+#, c-format
+msgid ""
+"_Manual:\n"
+"(%s for URL)"
+msgstr ""
+"សៀវភៅ​ដៃ ​៖\n"
+"(%s សម្រាប់ URL)"
+
+msgid "Log _format:"
+msgstr "ទ្រង់ទ្រាយ​កំណត់​ហេតុ ៖"
+
+msgid "Log all _instant messages"
+msgstr "ចុះ​កំណត់​ហេតុ​សារ​បន្ទាន់​ទាំង​អស់"
+
+msgid "Log all c_hats"
+msgstr "ចុះ​​កំណត់ហេតុ​ការ​ជជែក​ទាំង​អស់"
+
+msgid "Log all _status changes to system log"
+msgstr "ចុះ​កំណត់​ហេតុ​ការ​​ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅ​កំណត់ហេតុ​ប្រព័ន្ធ"
+
+msgid "Sound Selection"
+msgstr "ការ​ជ្រើស​សំឡេង"
+
+#, c-format
+msgid "Quietest"
+msgstr "ស្ងាត់​បំផុត"
+
+#, c-format
+msgid "Quieter"
+msgstr "ស្ងាត់​ជាង"
+
+#, c-format
+msgid "Quiet"
+msgstr "ស្ងាត់"
+
+#, c-format
+msgid "Loud"
+msgstr "ឮ"
+
+#, c-format
+msgid "Louder"
+msgstr "ឮខ្លាំង​ជាង"
+
+#, c-format
+msgid "Loudest"
+msgstr "ឮខ្លាំង​បំផុត"
+
+msgid "_Method:"
+msgstr "វិធីសាស្ត្រ ៖"
+
+msgid "Console beep"
+msgstr "ប៊ីប​របស់កុង​សូល"
+
+msgid "No sounds"
+msgstr "គ្មាន​សំឡេង"
+
+#, c-format
+msgid ""
+"Sound c_ommand:\n"
+"(%s for filename)"
+msgstr ""
+"ពាក្យ​បញ្ជា​សំឡេង ៖\n"
+"(%s សម្រាប់​ឈ្មោះ​ឯកសារ)"
+
+msgid "M_ute sounds"
+msgstr "ស្ងាត់"
+
+msgid "Sounds when conversation has _focus"
+msgstr "សំឡេង​នៅពេល​ផ្ដោត​ការ​សន្ទនា"
+
+msgid "_Enable sounds:"
+msgstr "បើក​ជម្រើស ៖"
+
+msgid "V_olume:"
+msgstr "កម្រិត​សំឡេង​ ៖"
+
+msgid "Play"
+msgstr "ចាក់"
+
+msgid "_Browse..."
+msgstr "រកមើល..."
+
+msgid "_Reset"
+msgstr "កំណត់​ឡើង​វិញ"
+
+msgid "_Report idle time:"
+msgstr "រាយការណ៍​ពេលវេលា​ទំនេរ ៖"
+
+msgid "Based on keyboard or mouse use"
+msgstr "មាន​មូលដ្ឋាន​លើ​កា​រប្រើក្ដារចុច ឬ​កណ្ដុរ"
+
+msgid "_Auto-reply:"
+msgstr "ឆ្លើយ​តប​ដោយ​ស្វ័យ​ប្រវត្តិ ៖"
+
+msgid "When both away and idle"
+msgstr "នៅពេល​អ្នកទាំង​ពីរ​ចាកឆ្ងាយ ឬ​​ទំនេរ"
+
+#. Auto-away stuff
+msgid "Auto-away"
+msgstr "ចាកឆ្ងាយ​ស្វ័យ​ប្រវត្តិ"
+
+msgid "Change status when _idle"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​នៅពេល​ទំនេរ"
+
+msgid "_Minutes before becoming idle:"
+msgstr "ប៉ុន្មាន​នាទី​មុន​នឹង​ក្លាយជា​ទំនេរ ៖"
+
+msgid "Change _status to:"
+msgstr "ផ្លាស់ប្ដូរ​ស្ថានភាព​ទៅជា ៖"
+
+#. Signon status stuff
+msgid "Status at Startup"
+msgstr "ស្ថានភាព​នៅពេល​ចាប់ផ្ដើម"
+
+msgid "Use status from last _exit at startup"
+msgstr "ប្រើ​ស្ថានភាព​ពី​ការ​ចេញ​ចុងក្រោយ​នៅពេល​ចាប់ផ្ដើម"
+
+msgid "Status to a_pply at startup:"
+msgstr "ស្ថានភាព​ត្រូវ​​អនុវត្ត​នៅពេល​ចាប់ផ្ដើម ៖"
+
+msgid "Interface"
+msgstr "ចំណុច​ប្រទាក់"
+
+msgid "Smiley Themes"
+msgstr "ស្បែក​សញ្ញាណ​អារម្មណ៍"
+
+msgid "Browser"
+msgstr "កម្មវិធី​រុករក"
+
+msgid "Status / Idle"
+msgstr "ស្ថានភាព/ទំនេរ"
+
+msgid "Allow all users to contact me"
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នកប្រើទាំង​អស់​ទាក់ទង​ខ្ញុំ"
+
+msgid "Allow only the users on my buddy list"
+msgstr "អនុញ្ញាត​តែ​អ្នកប្រើ​នៅ​ក្នុង​បញ្ជី​មិត្តភក្ដិ​របស់​ខ្ញុំ​ប៉ុណ្ណោះ"
+
+msgid "Allow only the users below"
+msgstr "អនុញ្ញាត​តែ​អ្នកប្រើខាងក្រោម​ប៉ុណ្ណោះ"
+
+msgid "Block all users"
+msgstr "ទប់ស្កាត់​អ្នក​ប្រើ​ទាំង​អស់"
+
+msgid "Block only the users below"
+msgstr "ទប់ស្កាត់តែ​អ្នកប្រើ​ខាងក្រោមប៉ុណ្ណោះ"
+
+msgid "Privacy"
+msgstr "ភាព​ឯកជន"
+
+msgid "Changes to privacy settings take effect immediately."
+msgstr "ផ្លាស់ប្ដូរ​ទៅការ​កំណត់​ភាព​ឯកជន​នឹង​មានប្រសិទ្ធភាព​ភ្លាម ។"
+
+msgid "Set privacy for:"
+msgstr "កំណត់​ភាព​ឯកជន​សម្រាប់ ៖"
+
+#. Remove All button
+msgid "Remove Al_l"
+msgstr "យក​ចេញ​ទាំង​អស់"
+
+msgid "Permit User"
+msgstr "អនុញ្ញាត​អ្នកប្រើ"
+
+msgid "Type a user you permit to contact you."
+msgstr "វាយ​អ្នកប្រើ ដែល​អ្នកអនុញ្ញាត​ឲ្យ​ទាក់ទង​អ្នក ។"
+
+msgid "Please enter the name of the user you wish to be able to contact you."
+msgstr "សូម​បញ្ចូល​ឈ្មោះអ្នកប្រើ​ ដែល​អ្នកចង់​ឲ្យទាក់ទង​អ្នក ។"
+
+msgid "_Permit"
+msgstr "អនុញ្ញាត"
+
+#, c-format
+msgid "Allow %s to contact you?"
+msgstr "អនុញ្ញាតឲ្យ %s ទាក់ទង​អ្នក ?"
+
+#, c-format
+msgid "Are you sure you wish to allow %s to contact you?"
+msgstr "តើអ្នក​ប្រាកដ​ជា​ចង់​អនុញ្ញាតឲ្យ %s ទាក់ទង​អ្នក​ឬ ?"
+
+msgid "Block User"
+msgstr "ទប់ស្កាត់​អ្នក​ប្រើ"
+
+msgid "Type a user to block."
+msgstr "វាយ​​អ្នកប្រើត្រូវ​ទប់ស្កាត់ ។"
+
+msgid "Please enter the name of the user you wish to block."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​ដែល​អ្នក​ចង់​ទប់ស្កាត់ ។"
+
+#, c-format
+msgid "Block %s?"
+msgstr "ទប់ស្កាត់ %s?"
+
+#, c-format
+msgid "Are you sure you want to block %s?"
+msgstr "តើអ្នកប្រាកដ​ជា​ចង់​ទប់ស្កាត់ %s ឬ ?"
+
+msgid "Apply"
+msgstr "អនុវត្ត"
+
+msgid "That file already exists"
+msgstr "មាន​ឯកសារ​នោះ​រួច​ហើយ"
+
+msgid "Would you like to overwrite it?"
+msgstr "តើអ្នក​ចង់សរសេរ​ជាន់​លើវា​ឬ ?"
+
+msgid "Overwrite"
+msgstr "សរសេរ​ជាន់​លើ"
+
+msgid "Choose New Name"
+msgstr "ជ្រើស​​ឈ្មោះ​ថ្មី"
+
+msgid "Select Folder..."
+msgstr "ជ្រើស​ថត ។"
+
+#. list button
+msgid "_Get List"
+msgstr "យក​បញ្ជី"
+
+#. add button
+msgid "_Add Chat"
+msgstr "បន្ថែម​ការជជែក"
+
+msgid "Are you sure you want to delete the selected saved statuses?"
+msgstr "តើ​អ្នក​ប្រាកដ​ជា​​លុប​ស្ថានភាព​ដែល​បាន​រក្សាទុក​ដែលបានជ្រើស​ឬ ?"
+
+#. Use button
+msgid "_Use"
+msgstr "ប្រើ"
+
+msgid "Title already in use.  You must choose a unique title."
+msgstr "មាន​ចំណង​ជើង​រួច​ហើយ ។ អ្នក​ត្រូវ​តែ​ជ្រើស​ចំណង​ជើង​តែ​មួយ ។"
+
+msgid "Different"
+msgstr "ខុសគ្នា"
+
+msgid "_Title:"
+msgstr "ចំណង​ជើង ៖"
+
+msgid "_Status:"
+msgstr "ស្ថានភាព ៖"
+
+#. Different status message expander
+msgid "Use a _different status for some accounts"
+msgstr "ប្រើ​ស្ថានភាព​ផ្សេង​សម្រាប់គណនី​មួយ​ចំនួន"
+
+#. Save & Use button
+msgid "Sa_ve & Use"
+msgstr "រក្សាទុក​ការ​ប្រើ"
+
+#, c-format
+msgid "Status for %s"
+msgstr "ស្ថានភាព​សម្រាប់ %s"
+
+msgid "Custom Smiley"
+msgstr "សញ្ញា​អារម្មណ៍​ផ្ទាល់ខ្លួន"
+
+msgid "More Data needed"
+msgstr "ត្រូវការ​ទិន្នន័យ​បន្ថែម​ទៀត"
+
+msgid "Please provide a shortcut to associate with the smiley."
+msgstr "សូម​ផ្ដល់​នូវ​ផ្លូវកាត់​ដើម្បី​ភ្ជាប់​ជា​មួយ​នឹង​សញ្ញា​អារម្មណ៍ ។"
+
+msgid "Duplicate Shortcut"
+msgstr "ផ្លូវកាត់​ស្ទួន"
+
+msgid ""
+"A custom smiley for the selected shortcut already exists. Please specify a "
+"different shortcut."
+msgstr "សញ្ញា​អារម្មណ៍​ផ្ទាល់ខ្លួន​សម្រាប់​ផ្លូវកាត់​ដែល​បាន​ជ្រើស​មាន​រួច​ហើយ ។ សូម​បញ្ជី​ផ្លូវកាត់​ផ្សេង ។"
+
+msgid "Please select an image for the smiley."
+msgstr "សូម​ជ្រើស​រូបភាព​សម្រាប់​សញ្ញាអារម្មណ៍ ។"
+
+msgid "Edit Smiley"
+msgstr "កែ​សម្រួល​សញ្ញាអារម្មណ៍"
+
+msgid "Add Smiley"
+msgstr "បន្ថែម​សញ្ញាអារម្មណ៍"
+
+msgid "Smiley _Image"
+msgstr "រូបភាព​សញ្ញាអារម្មណ៍"
+
+#. Smiley shortcut
+msgid "Smiley S_hortcut"
+msgstr "ផ្លូវ​កាត់​សញ្ញាអារម្មណ៍"
+
+msgid "Smiley"
+msgstr "សញ្ញាអារម្មណ៍"
+
+msgid "Custom Smiley Manager"
+msgstr "កម្មវិធី​គ្រប់គ្រង​សញ្ញាអារម្មណ៍​ផ្ទាល់ខ្លួន"
+
+msgid "Click to change your buddyicon for this account."
+msgstr "ចុច​ដើម្បី​ផ្លាស់ប្ដូរ​រូបតំណាង​មិត្តភក្ដិ​របស់​អ្នកសម្រាប់គណនី​នេះ ។"
+
+msgid "Click to change your buddyicon for all accounts."
+msgstr "ចុច​ដើម្បី​ផ្លាស់ប្ដូរ​រូបតំណាង​មិត្តភក្ដិ​របស់​អ្នក​សម្រាប់គណនី​ទាំង​អស់ ។"
+
+msgid "Waiting for network connection"
+msgstr "រង់ចាំ​ការ​តភ្ជាប់បណ្ដាញ"
+
+msgid "New status..."
+msgstr "ស្ថានភាព​ថ្មី..."
+
+msgid "Saved statuses..."
+msgstr "ស្ថាន​ភាព​ដែលបាន​រក្សាទុក..."
+
+msgid "Status Selector"
+msgstr "កម្មវិធី​ជ្រើស​ស្ថានភាព"
+
+msgid "Google Talk"
+msgstr "Google Talk"
+
+#, c-format
+msgid "The following error has occurred loading %s: %s"
+msgstr "កំហុស​ដូច​ខាងក្រោម​បានកើតឡើង​​កំឡុង​ពេល​ផ្ទុក %s ៖ %s"
+
+msgid "Failed to load image"
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព"
+
+#, c-format
+msgid "Cannot send folder %s."
+msgstr "មិនអាច​ផ្ញើថត %s បានទេ ។"
+
+#, c-format
+msgid ""
+"%s cannot transfer a folder. You will need to send the files within "
+"individually."
+msgstr "%s មិនអាច​ផ្ទេរ​ថត​បានទេ ។ អ្នកនឹង​ត្រូវ​ផ្ញើ​ឯកសារ​រៀងខ្លួនៗ ។"
+
+msgid "You have dragged an image"
+msgstr "អ្នកបាន​អូស​រូបភាព"
+
+msgid ""
+"You can send this image as a file transfer, embed it into this message, or "
+"use it as the buddy icon for this user."
+msgstr ""
+"អ្នក​អាច​ផ្ញើ​រូបភាព​នេះ​ជា​ការ​ផ្ទេរ​ឯកសារ បង្កប់​វា​ក្នុងសារ​នេះ ឬ​ប្រើ​វា​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់ការ​"
+"ប្រើ​នេះ ។"
+
+msgid "Set as buddy icon"
+msgstr "កំណត់​ជា​រូបតំណាង​មិត្តភក្ដិ"
+
+msgid "Send image file"
+msgstr "ផ្ញើ​ឯកសារ​រូបភាព"
+
+msgid "Insert in message"
+msgstr "បញ្ចូល​ក្នុងសារ"
+
+msgid "Would you like to set it as the buddy icon for this user?"
+msgstr "តើអ្នក​ចង់​កំណត់​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់​អ្នកប្រើនេះ​ដែរឬទេ ?"
+
+msgid ""
+"You can send this image as a file transfer, or use it as the buddy icon for "
+"this user."
+msgstr "អ្នកអាច​ផ្ញើរូបភាព​នេះ​ជា​ការ​ផ្ទេរ​ឯកសារ ឬ​ប្រើវា​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់​អ្នកប្រើ​នេះ ។"
+
+msgid ""
+"You can insert this image into this message, or use it as the buddy icon for "
+"this user"
+msgstr "អ្នក​អាច​បញ្ចូល​រូបភាព​នេះ​​ក្នុង​សារ​នេះ ឬ​ប្រើ​វា​ជា​រូបតំណាង​មិត្តភក្ដិ​សម្រាប់​អ្នកប្រើ​នេះ"
+
+#. I don't know if we really want to do anything here.  Most of the desktop item types are crap like
+#. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
+#. * send.  The only logical one is "Application," but do we really want to send a binary and nothing else?
+#. * Probably not.  I'll just give an error and return.
+#. The original patch sent the icon used by the launcher.  That's probably wrong
+msgid "Cannot send launcher"
+msgstr "មិនអាច​ផ្ញើ​កម្មវិធី​ចាប់ផ្ដើម​បានទេ"
+
+msgid ""
+"You dragged a desktop launcher. Most likely you wanted to send whatever this "
+"launcher points to instead of this launcher itself."
+msgstr ""
+"អ្នកបានអូស​កម្មវិធី​ចាប់ផ្ដើម​ផ្ទៃតុ ។ ទំនង​ជា​អ្នក​ចង់​ផ្ញើ​អ្វី​កម្មវិធី​នេះ​ចង្អុល​​ទៅ​កម្មវិធី​ចាប់ផ្ដើម​នេះ​ជំនួស​វិញ "
+"។"
+
+#, c-format
+msgid ""
+"<b>File:</b> %s\n"
+"<b>File size:</b> %s\n"
+"<b>Image size:</b> %dx%d"
+msgstr ""
+"<b>ឯកសារ ៖</b> %s\n"
+"<b>ទំហំ​ឯកសារ ៖</b> %s\n"
+"<b>ទំហំ​រូបភាព ៖</b> %dx%d"
+
+#, c-format
+msgid "The file '%s' is too large for %s.  Please try a smaller image.\n"
+msgstr "ឯកសារ '%s' ធំពេក​សម្រាប់ %s ។  សូម​ព្យាយាម​រូបភាព​ដែល​តូចជាង​នេះ ។\n"
+
+msgid "Icon Error"
+msgstr "កំហុស​រូបតំណាង"
+
+msgid "Could not set icon"
+msgstr "មិនអាច​កំណត់​រូបតំណាង​បានទេ"
+
+#, c-format
+msgid "Failed to open file '%s': %s"
+msgstr "បានបរាជ័យ​ក្នុងការ​បើក​ឯកសារ '%s' ៖ %s"
+
+#, c-format
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr "បានបរាជ័យ​ក្នុងការ​ផ្ទុក​រូបភាព '%s' ៖ មិនស្គាល់ហេតុផល ប្រហែលជា​ឯកសារ​រូបភាព​តូច"
+
+msgid "Save File"
+msgstr "រក្សា​​ទុក​​​ឯកសារ"
+
+msgid "Select color"
+msgstr "ជ្រើស​ពណ៌"
+
+msgid "_Alias"
+msgstr "ឈ្មោះ​ក្លែងក្លាយ"
+
+msgid "Close _tabs"
+msgstr "បិទ​​ផ្ទាំង"
+
+msgid "_Get Info"
+msgstr "យក​ព័ត៌មាន"
+
+msgid "_Invite"
+msgstr "អញ្ជើញ"
+
+msgid "_Modify..."
+msgstr "កែប្រែ..."
+
+msgid "_Add..."
+msgstr "បន្ថែម..."
+
+msgid "_Open Mail"
+msgstr "បើក​សំបុត្រ"
+
+msgid "_Edit"
+msgstr "កែ​សម្រួល"
+
+msgid "Pidgin Tooltip"
+msgstr "ព័ត៌មាន​ជំនួយ Pidgin"
+
+msgid "Pidgin smileys"
+msgstr "សញ្ញាអារម្មណ៍​របស់ Pidgin"
+
+msgid "Penguin Pimps"
+msgstr "Penguin Pimps"
+
+msgid "Selecting this disables graphical emoticons."
+msgstr "ជ្រើស​សញ្ញាអារម្មណ៍​ក្រាហ្វិក​ដែល​បិទ​នេះ ។"
+
+msgid "none"
+msgstr "គ្មាន"
+
+msgid "Small"
+msgstr "តូច"
+
+msgid "Smaller versions of the default smilies"
+msgstr "កំណែ​តូច​របស់​សញ្ញាអារម្មណ៍​លំនាំដើម"
+
+msgid "Response Probability:"
+msgstr "ប្រូបាប៊ីលីតេឆ្លើយតប ៖"
+
+msgid "Statistics Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​ស្ថិតិ"
+
+#. msg_difference spinner
+msgid "Maximum response timeout:"
+msgstr "អស់ពេល​ឆ្លើយតប​អតិបរមា ៖"
+
+msgid "minutes"
+msgstr "នាទី"
+
+#. last_seen spinner
+msgid "Maximum last-seen difference:"
+msgstr "ភាព​ខុសគ្នា​ដែល​បានឃើញ​ចុងក្រោយ​អតិបរមា ៖"
+
+#. threshold spinner
+msgid "Threshold:"
+msgstr "កម្រិត​ពន្លឺ ៖"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Availability Prediction"
+msgstr "មាន​ការទាយ​ទំនាក់ទំនង"
+
+#. *< name
+#. *< version
+msgid "Contact Availability Prediction plugin."
+msgstr "មាន​កម្មវិធី​ជំនួយ​ទាយ​ទំនាក់ទំនង ។"
+
+#. *  summary
+msgid "Displays statistical information about your buddies' availability"
+msgstr "បង្ហាញ​ព័ត៌មាន​ស្ថិតិ​អំពី​ភាព​អាច​ប្រើ​បាន​នៃ​មិត្តភក្ដិ​របស់​អ្នក"
+
+msgid "Buddy is idle"
+msgstr "មិត្តភក្ដិ​ទំនេរ"
+
+msgid "Buddy is away"
+msgstr "មិត្តភក្ដិ​ចាកឆ្ងាយ"
+
+msgid "Buddy is \"extended\" away"
+msgstr "មិត្តភក្ដិ​ត្រូវបាន \"ពន្យារ\" ការ​ចាកឆ្ងាយ"
+
+#. Not used yet.
+msgid "Buddy is mobile"
+msgstr "មិត្តភក្ដិ​ចល័ត"
+
+msgid "Buddy is offline"
+msgstr "មិត្តភក្ដិ​ក្រៅបណ្ដាញ"
+
+msgid "Point values to use when..."
+msgstr "ចង្អុល​តម្លៃ​ត្រូវ​ប្រើនៅ​ពេល..."
+
+msgid ""
+"The buddy with the <i>largest score</i> is the buddy who will have priority "
+"in the contact.\n"
+msgstr "មិត្តភក្ដិ​ដែលមាន <i>ពិន្ទុធំ</i> គឺជា​មិត្តភក្ដិ​ដែល​នឹង​មាន​អាទិភាព​នៅ​ក្នុងការជជែក ។\n"
+
+msgid "Use last buddy when scores are equal"
+msgstr "ប្រើ​មិត្តភក្ដិ​ចុងក្រោយ​នៅពេល​ពិន្ទុ​ស្មើគ្នា"
+
+msgid "Point values to use for account..."
+msgstr "ចង្អុល​តម្លៃ​ដើម្បីប្រើ​សម្រាប់គណនី..."
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Contact Priority"
+msgstr "អាទិភាព​ទំនាក់ទំនង"
+
+#. *< name
+#. *< version
+#. *< summary
+msgid ""
+"Allows for controlling the values associated with different buddy states."
+msgstr "អនុញ្ញាត​សម្រាប់​ពិនិត្យ​តម្លៃ​ដែល​ភ្ជាប់​ជា​មួយ​នឹង​ស្ថានភាព​មិត្តភក្ដិ​ផ្សេងៗ ។"
+
+#. *< description
+msgid ""
+"Allows for changing the point values of idle/away/offline states for buddies "
+"in contact priority computations."
+msgstr ""
+"អនុញ្ញាត​ឲ្យ​ផ្លាស់ប្ដូរ​តម្លៃចង្អុល​នៃ​ស្ថានភាព​​ទំនេរ/ចាកឆ្ងាយ/ក្រៅបណ្ដាញ​សម្រាប់​មិត្តភក្ដិ​នៅ​ក្នុង​ការ​គណនា​"
+"អាទិភាព​ទំនាក់ទំនង ។"
+
+msgid "Conversation Colors"
+msgstr "ពណ៌​សន្ទនា"
+
+msgid "Customize colors in the conversation window"
+msgstr "ប្ដូរ​ពណ៌​តាម​បំណង​នៅ​ក្នុង​បង្អួច​សន្ទនា"
+
+msgid "Error Messages"
+msgstr "សារ​កំហុស"
+
+msgid "Highlighted Messages"
+msgstr "សារ​ដែល​បាន​បន្លិច"
+
+msgid "System Messages"
+msgstr "សារ​ប្រព័ន្ធ"
+
+msgid "Sent Messages"
+msgstr "សារ​បានផ្ញើ"
+
+msgid "Received Messages"
+msgstr "សារ​បានទទួល"
+
+#, c-format
+msgid "Select Color for %s"
+msgstr "ជ្រើស​ពណ៌​សម្រាប់ %s"
+
+msgid "Ignore incoming format"
+msgstr "មិនអើពើ​ទ្រង់ទ្រាយ​ចូល"
+
+msgid "Apply in Chats"
+msgstr "អនុវត្ត​ក្នុង​ការជជែក"
+
+msgid "Apply in IMs"
+msgstr "អនុវត្ត​ក្នុង IMs"
+
+msgid "By conversation count"
+msgstr "តាម​ចំនួន​សន្ទនា"
+
+msgid "Conversation Placement"
+msgstr "ការ​ដាក់ការ​សន្ទនា"
+
+#. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
+msgid ""
+"Note: The preference for \"New conversations\" must be set to \"By "
+"conversation count\"."
+msgstr "ចំណាំ ៖ ចំណូលចិត្ត​សម្រាប់ \"ការ​សន្ទនា​ថ្មី\" ត្រូវ​តែ​បានកំណត់​ទៅ \"តាម​ចំនួន​សន្ទនា\" ។"
+
+msgid "Number of conversations per window"
+msgstr "ចំនួន​សន្ទនា​ក្នុង​មួយ​បង្អួច"
+
+msgid "Separate IM and Chat windows when placing by number"
+msgstr "បំបែក​ IM និង​បង្អួចជជែក​នៅពេល​ដាក់​តាម​លេខ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "ExtPlacement"
+msgstr "ExtPlacement"
+
+#. *< name
+#. *< version
+msgid "Extra conversation placement options."
+msgstr "ជម្រើស​ដាក់​កា​រសន្ទនា​បន្ថែម"
+
+#. *< summary
+#. *  description
+msgid ""
+"Restrict the number of conversations per windows, optionally separating IMs "
+"and Chats"
+msgstr "ដាក់កម្រិត​ចំនួន​សន្ទនា​ក្នុង​មួយ​បង្អួច ជា​ជម្រើស​បំបែក IMs និង​​ការ​ជជែក"
+
+#. Configuration frame
+msgid "Mouse Gestures Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​កាយវិការ​កណ្ដុរ"
+
+msgid "Middle mouse button"
+msgstr "ប៊ូតុង​កណ្ដុរ​កណ្ដាល"
+
+msgid "Right mouse button"
+msgstr "ប៊ូតុង​កណ្ដុរ​ស្ដាំ"
+
+#. "Visual gesture display" checkbox
+msgid "_Visual gesture display"
+msgstr "បង្ហាញ​កាយវិការ​ដែលមើលឃើញ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Mouse Gestures"
+msgstr "កាយវិការ​កណ្ដុរ"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "Provides support for mouse gestures"
+msgstr "ផ្ដល់​នូវការ​គាំទ្រ​សម្រាប់​កាយវិកា​រកណ្ដុរ"
+
+#. *  description
+msgid ""
+"Allows support for mouse gestures in conversation windows. Drag the middle "
+"mouse button to perform certain actions:\n"
+" • Drag down and then to the right to close a conversation.\n"
+" • Drag up and then to the left to switch to the previous conversation.\n"
+" • Drag up and then to the right to switch to the next conversation."
+msgstr ""
+"អនុញ្ញាត​ឲ្យ​គាំទ្រ​កាយវិការ​កណ្ដុរ​នៅក្នុង​បង្អួច​សន្ទនា ។ អូស​​ប៊ូតុង​កណ្ដុរ​កណ្ដាល​ដើម្បី​អនុវត្ត​សកម្មភាព​​មួយចំនួន​ដូច​"
+"ខាងក្រោម ៖\n"
+" • អូស​ចុះក្រោម ហើយ​បន្ទាប់មក​ទៅ​ស្ដាំដើម្បី​បិទ​ការ​សន្ទនា ។\n"
+" • អូស​ឡើង​លើ ហើយ​បន្ទាប់​មក​ទៅ​ឆ្វេង​ដើម្បីប្ដូរ​ទៅ​ការ​សន្ទនា​មុន ។\n"
+" • អូស​ឡើង​លើ ហើយ​បន្ទាប់​មក​ទៅ​ស្ដាំ​ដើម្បីប្ដូរ​ទៅ​ការ​សន្ទនា​បន្ទាប់ ។"
+
+msgid "Instant Messaging"
+msgstr "ការ​ផ្ញើសារ​បន្ទាន់"
+
+#. Add the label.
+msgid "Select a person from your address book below, or add a new person."
+msgstr "ជ្រើស​មនុស្ស​ពី​សៀវភៅ​អាសយដ្ឋាន​ខាងក្រោម ឬ​បន្ថែម​មនុស្ស​ថ្មី ។"
+
+msgid "Group:"
+msgstr "ក្រុម ៖"
+
+#. "New Person" button
+msgid "New Person"
+msgstr "មនុស្ស​ថ្មី"
+
+#. "Select Buddy" button
+msgid "Select Buddy"
+msgstr "ជ្រើស​មិត្តភក្ដិ"
+
+#. Add the label.
+msgid ""
+"Select a person from your address book to add this buddy to, or create a new "
+"person."
+msgstr "ជ្រើស​មនុស្ស​ពី​សៀវភៅ​អាសយដ្ឋាន​របស់​អ្នក ដើម្បីបន្ថែម​មិត្តភក្ដិ ឬ​បង្កើត​មនុស្ស​ថ្មី ។"
+
+#. Add the expander
+msgid "User _details"
+msgstr "សេចក្ដី​លម្អិត​អ្នក​ប្រើ"
+
+#. "Associate Buddy" button
+msgid "_Associate Buddy"
+msgstr "ភ្ជាប់​មិត្តភក្ដិ"
+
+msgid "Unable to send email"
+msgstr "មិនអាច​ផ្ញើ​អ៊ីមែល​បានទេ"
+
+msgid "The evolution executable was not found in the PATH."
+msgstr "រក​មិនឃើញ​ evolution ដែល​អាច​ប្រតិបត្តិបាន​នៅ​ក្នុង PATH ។"
+
+msgid "An email address was not found for this buddy."
+msgstr "រក​មិនឃើញអាសយដ្ឋាន​អ៊ីមែល​សម្រាប់​មិត្តភក្ដិ​នេះ​ទេ ។"
+
+msgid "Add to Address Book"
+msgstr "បន្ថែម​ទៅ​សៀវភៅ​អាសយដ្ឋាន"
+
+msgid "Send Email"
+msgstr "ផ្ញើ​អ៊ីមែល"
+
+#. Configuration frame
+msgid "Evolution Integration Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​​ការ​រួមបញ្ចូល Evolution"
+
+#. Label
+msgid "Select all accounts that buddies should be auto-added to."
+msgstr "ជ្រើស​គណនី​ទាំង​អស់​ដែលមិត្តភក្ដិ​គួរ​ត្រូវ​បាន​បន្ថែម​ដោយ​ស្វ័យ​ប្រវត្តិ ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Evolution Integration"
+msgstr "ការ​រួម​បញ្ចូល Evolution"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Provides integration with Evolution."
+msgstr "ផ្ដល់​នូវការ​បញ្ចូល​ជា​មួយ Evolution ។"
+
+msgid "Please enter the person's information below."
+msgstr "សូម​បញ្ចូល​ព័ត៌មាន​របស់​មនុស្ស​ខាង​ក្រោម ។"
+
+msgid "Please enter the buddy's username and account type below."
+msgstr "សូម​បញ្ចូល​ឈ្មោះ​អ្នកប្រើ​របស់​មិត្តភក្ដិ និង​ប្រភេទ​គណនី​ខា​ងក្រោម ។"
+
+msgid "Account type:"
+msgstr "ប្រភេទ​គណនី ៖"
+
+#. Optional Information section
+msgid "Optional information:"
+msgstr "ព័ត៌មាន​ជម្រើស ៖"
+
+msgid "First name:"
+msgstr "នាមខ្លួន ៖"
+
+msgid "Last name:"
+msgstr "នាម​ត្រកូល ៖"
+
+msgid "Email:"
+msgstr "អ៊ីមែល ៖"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "GTK Signals Test"
+msgstr "ការ​សាកល្បង​សញ្ញា​ GTK"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Test to see that all ui signals are working properly."
+msgstr "សាកល្បង​ដើម្បី​មើល​សញ្ញា​ចំណុច​ប្រទាក់​អ្នកប្រើ​ទាំង​អស់​ដែល​កំពុង​ដំណើរការ​យ៉ាង​ត្រឹមត្រូវ ។"
+
+#, c-format
+msgid ""
+"\n"
+"<b>Buddy Note</b>: %s"
+msgstr ""
+"\n"
+"<b>ចំណាំ​មិត្តភក្ដិ</b> ៖ %s"
+
+msgid "History"
+msgstr "ប្រវត្តិ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Iconify on Away"
+msgstr "កំណត់​រូបតំណាង​នៅពេល​ចាកឆ្ងាយ"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Iconifies the buddy list and your conversations when you go away."
+msgstr "កំណត់​រូបតំណាង​បញ្ជីមិត្តភក្ដិ និង​ការ​សន្ទនា​របស់​អ្នកនៅពេល​ចាកឆ្ងាយ ។"
+
+msgid "Mail Checker"
+msgstr "កម្មវិធី​ពិនិត្យ​សំបុត្រ"
+
+msgid "Checks for new local mail."
+msgstr "ពិនិត្យ​មើល​សំបុត្រ​មូលដ្ឋាន​ថ្មី ។"
+
+msgid "Adds a small box to the buddy list that shows if you have new mail."
+msgstr "បន្ថែម​ប្រអប់​តូច​ទៅ​កាន់បញ្ជី​មិត្តភក្ដិ ដែល​បង្ហាញ​ប្រសិន​បើ​អ្នក​មាន​សំបុត្រ​ថ្មី ។"
+
+msgid "Markerline"
+msgstr "បន្ទាត់​សញ្ញា​សម្គាល់"
+
+msgid "Draw a line to indicate new messages in a conversation."
+msgstr "គូរ​បន្ទាត់​ដើម្បី​បង្ហាញ​សារ​ថ្មី​នៅ​ក្នុង​កសារ​សន្ទនា ។"
+
+msgid "Jump to markerline"
+msgstr "លោត​ទៅ​បន្ទាត់​សញ្ញា​សម្គាល់"
+
+msgid "Draw Markerline in "
+msgstr "គូរ​បន្ទាត់​សញ្ញា​សម្គាល់​នៅ​ក្នុង"
+
+msgid "_IM windows"
+msgstr "បង្អួច IM"
+
+msgid "C_hat windows"
+msgstr "បង្អួច​ការ​ជជែក"
+
+msgid ""
+"A music messaging session has been requested. Please click the MM icon to "
+"accept."
+msgstr "បាន​ស្នើ​សម័យ​ផ្ញើសារ​តន្ត្រី ។ សូម​ចុច​រូបតំណាង MM ដើម្បីទទួល​យក ។"
+
+msgid "Music messaging session confirmed."
+msgstr "បានអះអាង​សម័យ​ផ្ញើសារ​តន្ត្រី ។"
+
+msgid "Music Messaging"
+msgstr "កា​រផ្ញើសារ​តន្ត្រី"
+
+msgid "There was a conflict in running the command:"
+msgstr "មាន​កា​រប៉ះទង្គិច​ក្នុងការ​រត់​ពាក្យ​បញ្ជា ៖"
+
+msgid "Error Running Editor"
+msgstr "កំហុស​ក្នុងការ​រត់​កម្មវិធី​កែសម្រួល"
+
+msgid "The following error has occurred:"
+msgstr "កំហុស​ដូច​ខាងក្រោម​បានកើត​ឡើង ៖"
+
+#. Configuration frame
+msgid "Music Messaging Configuration"
+msgstr "ការ​កំណត់​រចនាសម្ព័ន្ធ​ការ​ផ្ញើសារ​តន្ត្រី"
+
+msgid "Score Editor Path"
+msgstr "ដាក់​ពិន្ទុ​ផ្លូវ​កម្មវិធី​កែសម្រួល"
+
+msgid "_Apply"
+msgstr "អនុវត្ត"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+#. *< name
+#. *< version
+msgid "Music Messaging Plugin for collaborative composition."
+msgstr "កម្មវិធី​ជំនួយ​ផ្ញើសារ​តន្ត្រី​សម្រាប់​ការ​តែង​សហការណ៍ ។"
+
+#. *  summary
+msgid ""
+"The Music Messaging Plugin allows a number of users to simultaneously work "
+"on a piece of music by editting a common score in real-time."
+msgstr ""
+"កម្មវិធី​ផ្ញើសារ​តន្ត្រី​អនុញ្ញាត​ឲ្យ​អ្នកប្រើជា​ច្រើន​ធ្វើការ​ដំណាល​គ្នា​លើ​ផ្នែក​តន្ត្រី​ដោយ​កែសម្រួល​ពិន្ទុ​ធម្មតា​នៅ​"
+"ក្នុង​ពេលវេលា​ពិតប្រាកដ ។"
+
+#. ---------- "Notify For" ----------
+msgid "Notify For"
+msgstr "ជូន​ដំណឹង​សម្រាប់"
+
+msgid "\t_Only when someone says your username"
+msgstr "\tតែ​នៅពេល​មាន​អ្នកណាម្នាក់​និយាយ​អំពីឈ្មោះ​អ្នកប្រើ​របស់​អ្នក"
+
+msgid "_Focused windows"
+msgstr "បង្អួច​បានផ្ដោត​អារម្មណ៍"
+
+#. ---------- "Notification Methods" ----------
+msgid "Notification Methods"
+msgstr "វិធីសាស្ត្រ​ជូនដំណឹង"
+
+msgid "Prepend _string into window title:"
+msgstr "បន្ថែម​ខ្សែអក្សរ​ទៅ​ចំណង​ជើង​បង្អួច ៖"
+
+#. Count method button
+msgid "Insert c_ount of new messages into window title"
+msgstr "បញ្ចូល​ចំនួន​សារ​ថ្មី​ទៅ​ក្នុង​ចំណង​ជើង​បង្អួច"
+
+#. Count xprop method button
+msgid "Insert count of new message into _X property"
+msgstr "បញ្ចូល​ចំនួនសារ​ថ្មី​ទៅ​ក្នុងលក្ខណៈសម្បត្តិ X"
+
+#. Urgent method button
+msgid "Set window manager \"_URGENT\" hint"
+msgstr "កំណត់​ជំនួយ​កម្មវិធី​គ្រប់គ្រង​បង្អួច \"_URGENT\""
+
+msgid "_Flash window"
+msgstr "បញ្ចេញពន្លឺ"
+
+#. Raise window method button
+msgid "R_aise conversation window"
+msgstr "លើក​បង្អួច​សន្ទនា​ឡើង​លើ"
+
+#. Present conversation method button
+msgid "_Present conversation window"
+msgstr "បង្ហាញ​បង្អួច​សន្ទនា"
+
+#. ---------- "Notification Removals" ----------
+msgid "Notification Removal"
+msgstr "យក​ការ​ជូនដំណឹ​ង​ចេញ"
+
+#. Remove on focus button
+msgid "Remove when conversation window _gains focus"
+msgstr "យកចេញ​នៅពេល​មានការ​ផ្ដោត​លើ​បង្អួច​សន្ទនា"
+
+#. Remove on click button
+msgid "Remove when conversation window _receives click"
+msgstr "យកចេញ​នៅពេល​ចុច​បង្អួច​សន្ទនា"
+
+#. Remove on type button
+msgid "Remove when _typing in conversation window"
+msgstr "យកចេញ​នៅពេល​វាយ​ក្នុង​បង្អួច​សន្ទនា"
+
+#. Remove on message send button
+msgid "Remove when a _message gets sent"
+msgstr "យកចេញ​នៅពេល​បានផ្ញើសារ"
+
+#. Remove on conversation switch button
+msgid "Remove on switch to conversation ta_b"
+msgstr "យកចេញ​នៅពេល​ប្ដូរ​ទៅ​ផ្ទាង​សន្ទនា"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Message Notification"
+msgstr "កា​រជូនដំណឹង​សារ"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "Provides a variety of ways of notifying you of unread messages."
+msgstr "ផ្ដល់​នូវវិធីផ្សេងៗ​នៃ​ការ​ជូនដំណឹង​​អ្នក​អំពី​សារ​មិនទាន់អាន ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Pidgin Demonstration Plugin"
+msgstr "កម្មវិធី​ជំនួយបង្ហាញ​របស់ Pidgin"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "An example plugin that does stuff - see the description."
+msgstr "កម្មវិធីជំនួយ​គំរូ​ដែល​ធ្វើការ - សូម​សេចក្ដិពិពណ៌នា ​​​។"
+
+#. *  description
+msgid ""
+"This is a really cool plugin that does a lot of stuff:\n"
+"- It tells you who wrote the program when you log in\n"
+"- It reverses all incoming text\n"
+"- It sends a message to people on your list immediately when they sign on"
+msgstr ""
+"នេះ​គឺជា​កម្មវិធី​ជំនួយ​ពិតជា​ល្អ​ដែល​ធ្វើការជា​ច្រើន ៖\n"
+"- វា​ប្រាប់អ្នក​ថាអ្នកបានសរសេរ​កម្មវិធី​នៅពេល​អ្នកចូល\n"
+"- វា​បម្រុង​ទុក​អត្ថបទ​ចូល​ទាំង​អស់\n"
+"- វា​ផ្ញើ​សារ​ទៅមនុស្ស​នៅ​ក្នុង​បញ្ជី​របស់​អ្នក​ភ្លាមៗ នៅពេល​ពួកគេ​ចូល"
+
+msgid "Cursor Color"
+msgstr "ពណ៌​ទស្សន៍ទ្រនិច"
+
+msgid "Secondary Cursor Color"
+msgstr "ពណ៌​ទស្សន៍​ទ្រនិចទីពីរ"
+
+msgid "Hyperlink Color"
+msgstr "ពណ៌​តំណខ្ពស់"
+
+msgid "Visited Hyperlink Color"
+msgstr "ពណ៌​តំណខ្ពស់​ដែលបានទស្សនា"
+
+msgid "Highlighted Message Name Color"
+msgstr "ពណ៌​ឈ្មោះសារ​ដែល​បាន​បន្លិច"
+
+msgid "GtkTreeView Horizontal Separation"
+msgstr "ការ​បំបែក​ផ្ដេក​របស់ GtkTreeView"
+
+msgid "Conversation Entry"
+msgstr "ធាតុ​​​សន្ទនា"
+
+msgid "Request Dialog"
+msgstr "ប្រអប់​សំណើ"
+
+msgid "Notify Dialog"
+msgstr "ប្រអប់​ជូនដំណឹង"
+
+msgid "Select Color"
+msgstr "ជ្រើស​ពណ៌"
+
+#, c-format
+msgid "Select Interface Font"
+msgstr "ជ្រើស​ពុម្ពអក្សរ​ចំណុច​ប្រទាក់"
+
+#, c-format
+msgid "Select Font for %s"
+msgstr "ជ្រើស​ពុម្ពអក្សរ​សម្រាប់ %s"
+
+msgid "GTK+ Interface Font"
+msgstr "GTK+ ពុម្ពអក្សរ​ចំណុច​ប្រទាក់"
+
+msgid "GTK+ Text Shortcut Theme"
+msgstr "GTK+ ស្បែក​ផ្លូវកាត់អត្ថបទ"
+
+#.
+#. for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) {
+#. hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_CAT_SPACE);
+#. gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0);
+#.
+#. check = pidgin_prefs_checkbox(_(widget_bool_names[i]),
+#. widget_bool_prefs_set[i], hbox);
+#. gtk_size_group_add_widget(labelsg, check);
+#.
+#. widget_bool_widgets[i] = pidgin_prefs_checkbox("", widget_bool_prefs[i], hbox);
+#. *
+#. gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]);
+#. *
+#. gtk_widget_set_sensitive(widget_bool_widgets[i],
+#. purple_prefs_get_bool(widget_bool_prefs_set[i]));
+#. g_signal_connect(G_OBJECT(check), "toggled",
+#. G_CALLBACK(pidgin_toggle_sensitive),
+#. widget_bool_widgets[i]);
+#. }
+#.
+msgid "Interface colors"
+msgstr "ពណ៌​ចំណុច​ប្រទាក់"
+
+msgid "Widget Sizes"
+msgstr "ទំហំ​ធាតុក្រាហ្វិក"
+
+msgid "Fonts"
+msgstr "ពុម្ព​​អក្សរ"
+
+msgid "Gtkrc File Tools"
+msgstr "ឧបករណ៍​ឯកសារ Gtkrc"
+
+#, c-format
+msgid "Write settings to %s%sgtkrc-2.0"
+msgstr "សរសេរ​ការ​កំណត់​ទៅ​កាន់ %s%sgtkrc-2.0"
+
+msgid "Re-read gtkrc files"
+msgstr "អាន​ឯកសារ gtkrc ឡើង​វិញ"
+
+msgid "Pidgin GTK+ Theme Control"
+msgstr "កម្មវិធី​ជំនួយ GTK+ ការ​ត្រួតពិនិត្យ​ស្បែក"
+
+msgid "Provides access to commonly used gtkrc settings."
+msgstr "ផ្ដល់​នូវ​កា​រចូលដំណើរការ​ទៅកាន់​ការ​កំណត់ gtkrc ដែលបាន​ប្រើ​ធម្មតា ។"
+
+msgid "Raw"
+msgstr "ដើម"
+
+msgid "Lets you send raw input to text-based protocols."
+msgstr "អនុញ្ញាត​ឲ្យ​អ្នក​ផ្ញើ​កា​របញ្ចូលដើម​ទៅ​កាន់​​​អត្ថបទ​ដែល​មានមូលដ្ឋាន​លើ​ពិធីការ ។"
+
+msgid ""
+"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
+"'Enter' in the entry box to send. Watch the debug window."
+msgstr ""
+"អនុញ្ញាត​ឲ្យ​អ្នក​ផ្ញើ​ការ​បញ្ចូលដើម​ទៅ​អត្ថបទ​ដែលមានមូលដ្ឋាន​លើ​ពិធីការ (XMPP, MSN, IRC, TOC) ។ ចុច​"
+"គ្រាប់ចុច 'បញ្ចូល (Enter)' នៅ​ក្នុង​ប្រអប់​ធាតុ​ដើម្បី​ផ្ញើ ។ មើល​បង្អួច​បំបាត់កំហុស ។"
+
+#, c-format
+msgid "You can upgrade to %s %s today."
+msgstr "អ្នកអាច​ធ្វើ​ឲ្យ​ប្រសើរ​ទៅ %s %s ថ្ងៃ​នេះ ។"
+
+msgid "New Version Available"
+msgstr "មានកំណែថ្មី"
+
+msgid "Later"
+msgstr "ពេលក្រោយ"
+
+msgid "Download Now"
+msgstr "ទាញយក​ឥឡូវ"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Release Notification"
+msgstr "ការ​ជូនដំណឹង​ចេញផ្សាយ"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "Checks periodically for new releases."
+msgstr "ពិនិត្យ​មើល​ការ​ចេញផ្សាយ​តាម​កំណត់​សម្រាប់ការ​ចេញផ្សាយ​ថ្មី ។"
+
+#. *  description
+msgid ""
+"Checks periodically for new releases and notifies the user with the "
+"ChangeLog."
+msgstr "ពិនិត្យ​មើល​កា​ចេញផ្សាយ​​តាមកំណត់​សម្រាប់​ការ​ចេញផ្សាយ​ថ្មី និងជូនដំណឹង​អ្នកប្រើ​ក្នុង ChangeLog ។"
+
+#. *< major version
+#. *< minor version
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Send Button"
+msgstr "ផ្ញើ​ប៊ូតុង​"
+
+#. *< name
+#. *< version
+msgid "Conversation Window Send Button."
+msgstr "ប៊ូតុង​​ផ្ញើ​បង្អួច​សន្ទនា ។"
+
+#. *< summary
+msgid ""
+"Adds a Send button to the entry area of the conversation window. Intended "
+"for when no physical keyboard is present."
+msgstr "បន្ថែម​ប៊ូតុង​ផ្ញើ​ទៅ​ផ្ទៃ​ធាតុ​របស់​បង្អួច​សន្ទនា ។ បំណង​សម្រាប់នៅពេល​ដែល​គ្មាន​ក្ដារចុច​ពិត ។"
+
+msgid "Duplicate Correction"
+msgstr "ស្ទួនកំណែ"
+
+msgid "The specified word already exists in the correction list."
+msgstr "មាន​ពាក្យដែលបានបញ្ជាក់រួច​ហើយ​នៅក្នុង​បញ្ជី​កែ ។"
+
+msgid "Text Replacements"
+msgstr "ការ​ជំនួស​អត្ថបទ"
+
+msgid "You type"
+msgstr "អ្នកវាយ"
+
+msgid "You send"
+msgstr "អ្នក​ផ្ញើ"
+
+msgid "Whole words only"
+msgstr "តែ​ពាក្យ​ទាំង​មូល"
+
+msgid "Case sensitive"
+msgstr "ប្រកាន់​អក្សរ​តូចធំ"
+
+msgid "Add a new text replacement"
+msgstr "បន្ថែម​ការ​ជំនួស​អត្ថបទ​ថ្មី"
+
+msgid "You _type:"
+msgstr "អ្នក​វាយ ៖"
+
+msgid "You _send:"
+msgstr "អ្នកផ្ញើ ៖"
+
+#. Created here so it can be passed to whole_words_button_toggled.
+msgid "_Exact case match (uncheck for automatic case handling)"
+msgstr "ការ​ផ្គូផ្គង​ករណី​ជាក់លាក់ (ដោះធីក​សម្រាប់​ការ​គ្រប់គ្រង​ករណី​ដោ​យ​ស្វ័យ​ប្រវត្តិ)"
+
+msgid "Only replace _whole words"
+msgstr "តែ​ការ​ជំនួស​ពាក្យ​ទាំង​មូលប៉ុណ្ណោះ"
+
+msgid "General Text Replacement Options"
+msgstr "ជម្រើស​ជំនួស​អត្ថបទ​ទូទៅ"
+
+msgid "Enable replacement of last word on send"
+msgstr "បើក​ការជំនួស​ពាក្យ​ចុងក្រោយ​នៅពេល​ផ្ញើ"
+
+msgid "Text replacement"
+msgstr "កា​រជំនួស​អត្ថបទ"
+
+msgid "Replaces text in outgoing messages according to user-defined rules."
+msgstr "ជំនួស​អត្ថបទ​នៅ​ក្នុង​សារ​ចេញ ដោយ​យោង​តាម​ក្បួន​កំណត់​ដោយ​អ្នកប្រើ ។"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Buddy Ticker"
+msgstr "ការ​បន្លឺ​សំឡេង​របស់​មិត្តភក្ដិ"
+
+#. *< name
+#. *< version
+#. *  summary
+#. *  description
+msgid "A horizontal scrolling version of the buddy list."
+msgstr "កំណែ​រមូរ​ផ្ដេក​របស់​បញ្ជីមិត្តភក្ដិ ។"
+
+msgid "Display Timestamps Every"
+msgstr "បង្ហាញ​ត្រាពេលវេលា​រៀងរាល់"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Timestamp"
+msgstr "ត្រា​ពេលវេលា"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "Display iChat-style timestamps"
+msgstr "បង្ហាញ​ត្រាពេលវេលា​របស់ iChat-style"
+
+#. *  description
+msgid "Display iChat-style timestamps every N minutes."
+msgstr "បង្ហាញ​ត្រា​ពេលវេលា​របស់ iChat-style រៀងរាល់ N នាទី ។"
+
+msgid "Timestamp Format Options"
+msgstr "ជម្រើស​ទ្រង់ទ្រាយ​ត្រា​ពេលវេលា"
+
+#, c-format
+msgid "_Force 24-hour time format"
+msgstr "បង្ខំ​ទ្រង់ទ្រាយ​ពេលវេលា​ ២៤- ម៉ោង"
+
+msgid "Show dates in..."
+msgstr "បង្ហាញ​កាលបរិច្ឆេទ​ក្នុង..."
+
+msgid "Co_nversations:"
+msgstr "ការ​សន្ទនា ៖"
+
+msgid "For delayed messages"
+msgstr "សម្រាប់សារ​ដែលបានពន្យារ"
+
+msgid "For delayed messages and in chats"
+msgstr "សម្រាប់សារ​ដែលបាន​ពន្យារ​ និង​ក្នុង​គំនូស​តាង"
+
+msgid "_Message Logs:"
+msgstr "កំណត់​ហេតុ​សារ ៖"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Message Timestamp Formats"
+msgstr "ទ្រង់ទ្រាយ​ត្រា​ពេលវេលា​សារ"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "Customizes the message timestamp formats."
+msgstr "ប្ដូរ​ទ្រង់ទ្រាយ​ត្រា​ពេលវេលា​ផ្ទាល់ខ្លួន ។"
+
+#. *  description
+msgid ""
+"This plugin allows the user to customize conversation and logging message "
+"timestamp formats."
+msgstr ""
+"កម្មវិធី​ជំនួយ​នេះ​អនុញ្ញាត​ឲ្យ​អ្នកប្រើ​ប្ដូរ​ទ្រង់ទ្រាយ​​ការ​សន្ទនា និង​កា​រចុះ​កំណត់ហេតុ​សារ​ត្រាពេលវេលា​"
+"ផ្ទាល់ខ្លួន ។"
+
+msgid "Opacity:"
+msgstr "ភាព​ស្រអាប់ ៖"
+
+#. IM Convo trans options
+msgid "IM Conversation Windows"
+msgstr "បង្អួច​សន្ទនា IM"
+
+msgid "_IM window transparency"
+msgstr "ភាពថ្លា​បង្អួច​របស់ IM"
+
+msgid "_Show slider bar in IM window"
+msgstr "បង្ហាញ​របារ​គ្រាប់រំកិល​នៅ​ក្នុងបង្អួច IM"
+
+msgid "Remove IM window transparency on focus"
+msgstr "យក​ភាព​ថ្លា​របស់​បង្អួច IM ចេញ​​នៅពេល​ផ្ដោត"
+
+msgid "Always on top"
+msgstr "តែងតែ​នៅ​លើ​ជា​និច្ច"
+
+#. Buddy List trans options
+msgid "Buddy List Window"
+msgstr "បង្អួច​បញ្ជី​មិត្តភក្ដិ"
+
+msgid "_Buddy List window transparency"
+msgstr "ភាព​ថ្លា​របស់បង្អួច​បញ្ជីមិត្តភក្ដិ"
+
+msgid "Remove Buddy List window transparency on focus"
+msgstr "យក​ភាព​ថ្លា​របស់​បង្អួច​បញ្ជីមិត្តភក្ដិ​ចេញ​នៅពេល​ផ្ដោត"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "Transparency"
+msgstr "ភាព​ថ្លា​"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "Variable Transparency for the buddy list and conversations."
+msgstr "ភាព​ថ្លា​ដែល​មាន​សម្រាប់បញ្ជី​មិត្តភក្ដិ​ និង​ការសន្ទនា ។"
+
+#. *  description
+msgid ""
+"This plugin enables variable alpha transparency on conversation windows and "
+"the buddy list.\n"
+"\n"
+"* Note: This plugin requires Win2000 or greater."
+msgstr ""
+"កម្មវិធី​ជំនួយ​នេះ​បើក​ភាព​ថ្លា​អាល់ហ្វា​ដែល​អាច​ប្រើ​បាន​នៅ​ក្នុង​បង្អួច​សន្ទនា និង​បញ្ជីមិត្តភក្ដិ ។\n"
+"\n"
+"* ចំណាំ ៖ កម្មវិធី​ជំនួយ​នេះ​ត្រូវការ Win2000 ឬ​ខ្ពស់​ជាង​នេះ ។"
+
+msgid "GTK+ Runtime Version"
+msgstr "កំណែ GTK+ Runtime"
+
+#. Autostart
+msgid "Startup"
+msgstr "ចាប់ផ្ដើម"
+
+#, c-format
+msgid "_Start %s on Windows startup"
+msgstr "ចាប់ផ្ដើម​ %s នៅពេល​បង្អួច​ចាប់ផ្ដើម"
+
+msgid "_Dockable Buddy List"
+msgstr "បញ្ជី​មិត្តភ្ដិ​ដែល​អាច​ចូលផែ​បាន"
+
+#. Blist On Top
+msgid "_Keep Buddy List window on top:"
+msgstr "ទុក​បង្អួច​បញ្ជីមិត្តភក្ដិ​​នៅ​កំពូល ៖"
+
+#. XXX: Did this ever work?
+msgid "Only when docked"
+msgstr "តែ​នៅពេល​បានចូលផែ​ប៉ុណ្ណោះ"
+
+msgid "Windows Pidgin Options"
+msgstr "ជម្រើស​​បង្អួច​របស់ Pidgin"
+
+msgid "Options specific to Pidgin for Windows."
+msgstr "ជម្រើស​ជាក់លាក់​ទៅ Pidgin សម្រាប់​បង្អួច ។"
+
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr "ផ្ដល់​នូវ​ជម្រើស​ជាក់លាក់​ទៅ Pidgin សម្រាប់​វីនដូច​ជា​បញ្ជី​មិត្តភក្ដិ​ចូលផែ ។"
+
+msgid "<font color='#777777'>Logged out.</font>"
+msgstr "<font color='#777777'>បានចេញ ។</font>"
+
+#. *< type
+#. *< ui_requirement
+#. *< flags
+#. *< dependencies
+#. *< priority
+#. *< id
+msgid "XMPP Console"
+msgstr "កុងសូល XMPP"
+
+msgid "Account: "
+msgstr "គណនី  ៖"
+
+msgid "<font color='#777777'>Not connected to XMPP</font>"
+msgstr "<font color='#777777'>បានតភ្ជាប់​ទៅ​កាន់ XMPP</font>"
+
+msgid "Insert an <iq/> stanza."
+msgstr "បញ្ចូល <iq/> stanza ។"
+
+msgid "Insert a <presence/> stanza."
+msgstr "បញ្ចូល <presence/> stanza ។"
+
+msgid "Insert a <message/> stanza."
+msgstr "បញ្ចូល <message/> stanza ។"
+
+#. *< name
+#. *< version
+#. *  summary
+msgid "Send and receive raw XMPP stanzas."
+msgstr "ផ្ញើ​ និង​ទទួល​ XMPP stanzas ដើម ។"
+
+#. *  description
+msgid "This plugin is useful for debbuging XMPP servers or clients."
+msgstr "កម្មវិធី​ជំនួយ​នេះ​មានប្រយោជន៍​សម្រាប់បំបាត់​កំហុស​ម៉ាស៊ីនបម្រើ ឬ​ម៉ាស៊ីន​ភ្ញៀវ XMPP ។"
--- a/po/nb.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/nb.po	Wed Mar 04 16:52:47 2009 +0000
@@ -14,10 +14,10 @@
 msgstr ""
 "Project-Id-Version: nb\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-13 09:58-0500\n"
-"PO-Revision-Date: 2009-01-14 01:45+0100\n"
+"POT-Creation-Date: 2009-02-24 09:57-0500\n"
+"PO-Revision-Date: 2009-02-24 18:47+0100\n"
 "Last-Translator: Hans Fredrik Nordhaug <hans@nordhaug.priv.no>\n"
-"Language-Team: Norsk <nb@li.org>\n"
+"Language-Team: Norwegian Bokmål <i18n-nb@lister.ping.ui.no>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -39,7 +39,7 @@
 "Usage: %s [OPTION]...\n"
 "\n"
 "  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
+"  -d, --debug         print debugging messages to stderr\n"
 "  -h, --help          display this help and exit\n"
 "  -n, --nologin       don't automatically login\n"
 "  -v, --version       display the current version and exit\n"
@@ -48,14 +48,20 @@
 "Bruk: %s [Valg]...\n"
 "\n"
 "  -c, --config=DIR    bruk DIR for konfigurasjonsfiler\n"
-"  -d, --debug         skriv debugging beskjeder til stdout\n"
+"  -d, --debug         skriv feilsøkingsbeskjeder til stderr\n"
 "  -h, --help          vis denne hjelpen og avslutt\n"
 "  -n, --nologin       ikke logg automatisk inn\n"
 "  -v, --version       vis den nåværende versjon og avslutt\n"
 
 #, c-format
-msgid "%s encountered errors migrating your settings from %s to %s. Please investigate and complete the migration by hand. Please report this error at http://developer.pidgin.im"
-msgstr "%s det inntraff en feil i migreringen av ditt oppsett fra %s til %s. Vennligst undersøk og gjør ferdig migreringen for hånd. Vennligst raporter denne feilen på http://developer.pidgin.im"
+msgid ""
+"%s encountered errors migrating your settings from %s to %s. Please "
+"investigate and complete the migration by hand. Please report this error at "
+"http://developer.pidgin.im"
+msgstr ""
+"%s det inntraff en feil i migreringen av ditt oppsett fra %s til %s. "
+"Vennligst undersøk og gjør ferdig migreringen for hånd. Vennligst raporter "
+"denne feilen på http://developer.pidgin.im"
 
 msgid "Error"
 msgstr "Feil"
@@ -293,10 +299,12 @@
 msgstr "Skriv tom streng for å resette navnet."
 
 msgid "Removing this contact will also remove all the buddies in the contact"
-msgstr "Fjerning av denne kontakten vil også fjerne alle medlemmene i denne kontakten"
+msgstr ""
+"Fjerning av denne kontakten vil også fjerne alle medlemmene i denne kontakten"
 
 msgid "Removing this group will also remove all the buddies in the group"
-msgstr "Fjerning av denne gruppen vil også fjerne alle kontaktene i denne gruppa"
+msgstr ""
+"Fjerning av denne gruppen vil også fjerne alle kontaktene i denne gruppa"
 
 #, c-format
 msgid "Are you sure you want to remove %s?"
@@ -352,8 +360,12 @@
 msgid "Unblock"
 msgstr "Ikke Blokker"
 
-msgid "Please enter the username or alias of the person you would like to Block/Unblock."
-msgstr "Skriv inn brukernavnet eller aliaset på den personen du vil blokkere/ikke blokkere."
+msgid ""
+"Please enter the username or alias of the person you would like to Block/"
+"Unblock."
+msgstr ""
+"Skriv inn brukernavnet eller aliaset på den personen du vil blokkere/ikke "
+"blokkere."
 
 #. Not multiline
 #. Not masked?
@@ -362,10 +374,12 @@
 msgstr "OK"
 
 msgid "New Instant Message"
-msgstr "Ny direktemelding"
+msgstr "Ny lynmelding"
 
 msgid "Please enter the username or alias of the person you would like to IM."
-msgstr "Skriv inn brukernavnet eller aliaset på den personen du vil sende direktemelding til."
+msgstr ""
+"Skriv inn brukernavnet eller aliaset på den personen du vil sende "
+"lynmelding til."
 
 msgid "Channel"
 msgstr "Kanal"
@@ -379,15 +393,18 @@
 msgid "Join"
 msgstr "Bli med"
 
-msgid "Please enter the username or alias of the person whose log you would like to view."
-msgstr "Skriv inn brukernavnet eller aliaset til den personen du vil se loggen til."
+msgid ""
+"Please enter the username or alias of the person whose log you would like to "
+"view."
+msgstr ""
+"Skriv inn brukernavnet eller aliaset til den personen du vil se loggen til."
 
 #. Create the "Options" frame.
 msgid "Options"
 msgstr "Brukervalg"
 
 msgid "Send IM..."
-msgstr "Send direktemelding..."
+msgstr "Send lynmelding..."
 
 msgid "Block/Unblock..."
 msgstr "Blokker/ikke blokker ..."
@@ -526,17 +543,23 @@
 msgid ""
 "%s\n"
 "\n"
-"Finch will not attempt to reconnect the account until you correct the error and re-enable the account."
+"Finch will not attempt to reconnect the account until you correct the error "
+"and re-enable the account."
 msgstr ""
 "%s\n"
 "\n"
-"Finch vil ikke forsøke å koble kontoen til igjen før du har rettet på feilen og slått på kontoen igjen."
+"Finch vil ikke forsøke å koble kontoen til igjen før du har rettet på feilen "
+"og slått på kontoen igjen."
 
 msgid "Re-enable Account"
 msgstr "Reaktiver konto"
 
-msgid "The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects."
-msgstr "Denne kontoen er koblet av og du er ikke lenger med i denne samtalen. Du blir automatisk med i samtalen når kontoen kobler til igjen."
+msgid ""
+"The account has disconnected and you are no longer in this chat. You will be "
+"automatically rejoined in the chat when the account reconnects."
+msgstr ""
+"Denne kontoen er koblet av og du er ikke lenger med i denne samtalen. Du "
+"blir automatisk med i samtalen når kontoen kobler til igjen."
 
 msgid "No such command."
 msgstr "Ingen slik kommando."
@@ -548,10 +571,10 @@
 msgstr "Din kommando feilet av ukjent årsak."
 
 msgid "That command only works in chats, not IMs."
-msgstr "Den kommandoen virker bare i samtalegrupper, ikke i direktemeldinger."
+msgstr "Den kommandoen virker bare i samtalegrupper, ikke i lynmeldinger."
 
 msgid "That command only works in IMs, not chats."
-msgstr "Den kommandoen virker bare i direktemeldinger, ikke samtalegrupper."
+msgstr "Den kommandoen virker bare i lynmeldinger, ikke samtalegrupper."
 
 msgid "That command doesn't work on this protocol."
 msgstr "Denne kommandoen virker ikke på denne protokollen."
@@ -579,10 +602,13 @@
 msgstr "Du har forlatt denne samtalen."
 
 msgid "Logging started. Future messages in this conversation will be logged."
-msgstr "Innlogging startet. Fremtidige beskjeder i denne samtalen vil bli logget."
-
-msgid "Logging stopped. Future messages in this conversation will not be logged."
-msgstr "Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget."
+msgstr ""
+"Innlogging startet. Fremtidige beskjeder i denne samtalen vil bli logget."
+
+msgid ""
+"Logging stopped. Future messages in this conversation will not be logged."
+msgstr ""
+"Logging stoppet. Framtidige beskjeder i denne samtalen vil ikke bli logget."
 
 msgid "Send To"
 msgstr "Send til"
@@ -644,21 +670,34 @@
 "De følgende kommandoer er tilgjengelige i denne sammenhengen:\n"
 
 #, c-format
-msgid "%s is not a valid message class. See '/help msgcolor' for valid message classes."
-msgstr "%s er ingen gyldig beskjedklasse. Se «/help msgcolor» for gyldige beskjedklasser."
+msgid ""
+"%s is not a valid message class. See '/help msgcolor' for valid message "
+"classes."
+msgstr ""
+"%s er ingen gyldig beskjedklasse. Se «/help msgcolor» for gyldige "
+"beskjedklasser."
 
 #, c-format
 msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
 msgstr "%s er ingen gyldig farge. Se «/help msgcolor» for gyldige farger."
 
-msgid "say &lt;message&gt;:  Send a message normally as if you weren't using a command."
-msgstr "say &lt;message&gt;: Send en beskjed normalt som om du ikke brukte en kommando."
+msgid ""
+"say &lt;message&gt;:  Send a message normally as if you weren't using a "
+"command."
+msgstr ""
+"say &lt;message&gt;: Send en beskjed normalt som om du ikke brukte en "
+"kommando."
 
 msgid "me &lt;action&gt;:  Send an IRC style action to a buddy or chat."
-msgstr "me &lt;action&gt;: Send en IRC stil handling til en kontakt eller samtale."
-
-msgid "debug &lt;option&gt;:  Send various debug information to the current conversation."
-msgstr "debug &lt;option&gt;: Send diverse debug informasjon til den pågående samtalen."
+msgstr ""
+"me &lt;action&gt;: Send en IRC stil handling til en kontakt eller samtale."
+
+msgid ""
+"debug &lt;option&gt;:  Send various debug information to the current "
+"conversation."
+msgstr ""
+"debug &lt;option&gt;: Send diverse debug informasjon til den pågående "
+"samtalen."
 
 msgid "clear: Clears the conversation scrollback."
 msgstr "clear: Renser samtale scrollback."
@@ -687,8 +726,18 @@
 msgid "statuses: Show the savedstatuses window."
 msgstr "statuses: Vis lagrede statuser i vindu."
 
-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;forgrunn&gt; &lt;bakgrunn&gt;: Velg fargene for de forskjellige beskjedklassene i samtalevinduet.<br>    &lt;klasse&gt;:  receive, send, highlight, action, timestamp<br>    &lt;forgrunn/bakgrunn&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, default<br><br>EKSEMPEL:<br>    msgcolor send cyan default"
+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;forgrunn&gt; &lt;bakgrunn&gt;: Velg fargene for "
+"de forskjellige beskjedklassene i samtalevinduet.<br>    &lt;klasse&gt;:  "
+"receive, send, highlight, action, timestamp<br>    &lt;forgrunn/"
+"bakgrunn&gt;: black, red, green, blue, white, gray, darkgray, magenta, cyan, "
+"default<br><br>EKSEMPEL:<br>    msgcolor send cyan default"
 
 msgid "Unable to open file."
 msgstr "Klarte ikke åpne fil."
@@ -790,14 +839,24 @@
 msgid "%B %Y"
 msgstr "%B %Y"
 
-msgid "System events will only be logged if the \"Log all status changes to system log\" preference is enabled."
-msgstr "System hendelser vil bare bli logget om \"Logg alle status forandringer til system logg\" har blitt slått på."
-
-msgid "Instant messages will only be logged if the \"Log all instant messages\" preference is enabled."
-msgstr "Direktemeldinger vil bare bli logget om \"Logg alle direktemeldinger\" har blitt slått på."
-
-msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
-msgstr "Samtaler vil bare bli logget om \"Logg alle samtaler\" har blitt slått på."
+msgid ""
+"System events will only be logged if the \"Log all status changes to system "
+"log\" preference is enabled."
+msgstr ""
+"System hendelser vil bare bli logget om \"Logg alle status forandringer til "
+"system logg\" har blitt slått på."
+
+msgid ""
+"Instant messages will only be logged if the \"Log all instant messages\" "
+"preference is enabled."
+msgstr ""
+"Lynmeldinger vil bare bli logget om \"Logg alle lynmeldinger\" har "
+"blitt slått på."
+
+msgid ""
+"Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgstr ""
+"Samtaler vil bare bli logget om \"Logg alle samtaler\" har blitt slått på."
 
 msgid "No logs were found"
 msgstr "Ingen logger ble funnet"
@@ -855,7 +914,7 @@
 msgstr "Fortsett"
 
 msgid "IM"
-msgstr "Direktemelding"
+msgstr "Lynmelding"
 
 msgid "(none)"
 msgstr "(uten navn)"
@@ -900,8 +959,10 @@
 msgid "The selected file is not a valid plugin."
 msgstr "Den valgte fila er ikke et gyldig tillegg."
 
-msgid "Please open the debug window and try again to see the exact error message."
-msgstr "Åpne feilsøkingsvinduet og prøv igjen for å se den eksakte feilmeldingen."
+msgid ""
+"Please open the debug window and try again to see the exact error message."
+msgstr ""
+"Åpne feilsøkingsvinduet og prøv igjen for å se den eksakte feilmeldingen."
 
 msgid "Select plugin to install"
 msgstr "Velg tillegg å installere"
@@ -981,7 +1042,7 @@
 msgstr "Handling"
 
 msgid "Open an IM window"
-msgstr "Åpne vindu for direktemelding"
+msgstr "Åpne vindu for lynmelding"
 
 msgid "Pop up a notification"
 msgstr "Varslingsvindu spretter opp"
@@ -1057,6 +1118,7 @@
 msgid "%s has sent you a message. (%s)"
 msgstr "%s har sendt deg en beskjed. (%s)"
 
+#, c-format
 msgid "Unknown pounce event. Please report this!"
 msgstr "Ukjent varslingshendelse. Vennligst rapporter dette!"
 
@@ -1102,7 +1164,6 @@
 msgid "Change status to"
 msgstr "Endre status til"
 
-#. Conversations
 msgid "Conversations"
 msgstr "Samtaler"
 
@@ -1330,7 +1391,8 @@
 msgstr "Kan ikke finne vindu"
 
 msgid "This plugin cannot be loaded because it was not built with X11 support."
-msgstr "Dette tillegget kan ikke bli lastet fordi det ikke var bygd med X11 støtte."
+msgstr ""
+"Dette tillegget kan ikke bli lastet fordi det ikke var bygd med X11 støtte."
 
 msgid "GntClipboard"
 msgstr "GntClipboard"
@@ -1338,8 +1400,12 @@
 msgid "Clipboard plugin"
 msgstr "Utklipstavle tillegg"
 
-msgid "When the gnt clipboard contents change, the contents are made available to X, if possible."
-msgstr "Når innholdet i gnt clipboard forandres, vil innholdet bli gjort tilgjengelig for X, om mulig."
+msgid ""
+"When the gnt clipboard contents change, the contents are made available to "
+"X, if possible."
+msgstr ""
+"Når innholdet i gnt clipboard forandres, vil innholdet bli gjort "
+"tilgjengelig for X, om mulig."
 
 #, c-format
 msgid "%s just signed on"
@@ -1398,11 +1464,13 @@
 msgid ""
 "Logging can be enabled from Tools -> Preferences -> Logging.\n"
 "\n"
-"Enabling logs for instant messages and/or chats will activate history for the same conversation type(s)."
+"Enabling logs for instant messages and/or chats will activate history for "
+"the same conversation type(s)."
 msgstr ""
 "Logging kan slås på gjennom Verktøy -> Innstillinger -> Logging.\n"
 "\n"
-"Å slå på logging for lynmeldinger og/eller prat vil aktivere historie for den samme samtaletypen."
+"Å slå på logging for lynmeldinger og/eller prat vil aktivere historie for "
+"den samme samtaletypen."
 
 msgid "GntHistory"
 msgstr "GntHistorikk"
@@ -1410,8 +1478,12 @@
 msgid "Shows recently logged conversations in new conversations."
 msgstr "Viser tidligere loggede samtaler i nye samtaler."
 
-msgid "When a new conversation is opened this plugin will insert the last conversation into the current conversation."
-msgstr "Når en ny samtale startes, vil dette tillegget sette inn den forrige samtalen i den pågående."
+msgid ""
+"When a new conversation is opened this plugin will insert the last "
+"conversation into the current conversation."
+msgstr ""
+"Når en ny samtale startes, vil dette tillegget sette inn den forrige "
+"samtalen i den pågående."
 
 msgid "Online"
 msgstr "Pålogget"
@@ -1570,8 +1642,12 @@
 #. Prompt the user to authenticate the certificate
 #. vrq will be completed by user_auth
 #, c-format
-msgid "The certificate presented by \"%s\" is self-signed. It cannot be automatically checked."
-msgstr "Sertifikatet presentert av \"%s\" er sjøl signert. Det kan ikke bli automatisk sjekket."
+msgid ""
+"The certificate presented by \"%s\" is self-signed. It cannot be "
+"automatically checked."
+msgstr ""
+"Sertifikatet presentert av \"%s\" er sjøl signert. Det kan ikke bli "
+"automatisk sjekket."
 
 #, c-format
 msgid "The certificate chain presented for %s is not valid."
@@ -1589,16 +1665,27 @@
 msgstr "Ugyldig sertifikat lenke"
 
 #. vrq will be completed by user_auth
-msgid "You have no database of root certificates, so this certificate cannot be validated."
-msgstr "Du har ingen database av root sertifikater, så dette sertifikatet kan ikke bli validisert."
+msgid ""
+"You have no database of root certificates, so this certificate cannot be "
+"validated."
+msgstr ""
+"Du har ingen database av root sertifikater, så dette sertifikatet kan ikke "
+"bli validisert."
 
 #. vrq will be completed by user_auth
-msgid "The root certificate this one claims to be issued by is unknown to Pidgin."
-msgstr "Root sertifikatet som denne hevder å bli utstedt av er ukjent for Pidgin."
-
-#, c-format
-msgid "The certificate chain presented by %s does not have a valid digital signature from the Certificate Authority from which it claims to have a signature."
-msgstr "Sertifikat lenken presentert av %s har ikke en gyldig digital signatur fra Sertifikat Myndigheten der den hevder å ha en signatur."
+msgid ""
+"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgstr ""
+"Root sertifikatet som denne hevder å bli utstedt av er ukjent for Pidgin."
+
+#, c-format
+msgid ""
+"The certificate chain presented by %s does not have a valid digital "
+"signature from the Certificate Authority from which it claims to have a "
+"signature."
+msgstr ""
+"Sertifikat lenken presentert av %s har ikke en gyldig digital signatur fra "
+"Sertifikat Myndigheten der den hevder å ha en signatur."
 
 msgid "Invalid certificate authority signature"
 msgstr "Ugyldig sertifikat myndighet signatur"
@@ -1608,8 +1695,12 @@
 #. being prompted
 #. vrq will be completed by user_auth
 #, c-format
-msgid "The certificate presented by \"%s\" claims to be from \"%s\" instead.  This could mean that you are not connecting to the service you believe you are."
-msgstr "Serifikatet presentert av \"%s\" hevder av være fra \"%s\" istedet.  Dette kan bety at du ikke er tilkoblet til den tjenesten du tror du er."
+msgid ""
+"The certificate presented by \"%s\" claims to be from \"%s\" instead.  This "
+"could mean that you are not connecting to the service you believe you are."
+msgstr ""
+"Serifikatet presentert av \"%s\" hevder av være fra \"%s\" istedet.  Dette "
+"kan bety at du ikke er tilkoblet til den tjenesten du tror du er."
 
 #. Make messages
 #, c-format
@@ -1736,6 +1827,7 @@
 "Feil under lesing fra oppslagsprosessen:\n"
 "%s"
 
+#, c-format
 msgid "Resolver process exited without answering our request"
 msgstr "Oppslagsprosess avsluttet uten å svare på vår forespørsel"
 
@@ -1781,7 +1873,9 @@
 
 #, c-format
 msgid "%s is not a regular file. Cowardly refusing to overwrite it.\n"
-msgstr "%s er ikke en vanlig fil. Pidgin nekter å overskrive den for å ikke risikere å ødelegge noe.\n"
+msgstr ""
+"%s er ikke en vanlig fil. Pidgin nekter å overskrive den for å ikke risikere "
+"å ødelegge noe.\n"
 
 #, c-format
 msgid "%s wants to send you %s (%s)"
@@ -1902,32 +1996,68 @@
 msgid "The handler for \"ymsgr\" URLs"
 msgstr "Håndtereren for «ymsgr»-URLer"
 
-msgid "True if the command specified in the \"command\" key should handle \"aim\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «aim»-URLer."
-
-msgid "True if the command specified in the \"command\" key should handle \"gg\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «gg»-URLer."
-
-msgid "True if the command specified in the \"command\" key should handle \"icq\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «icq»-URLer."
-
-msgid "True if the command specified in the \"command\" key should handle \"irc\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «irc»-URLer."
-
-msgid "True if the command specified in the \"command\" key should handle \"msnim\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «msnim»-URLer."
-
-msgid "True if the command specified in the \"command\" key should handle \"sip\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «sip»-URLer."
-
-msgid "True if the command specified in the \"command\" key should handle \"xmpp\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «xmpp»-URLer."
-
-msgid "True if the command specified in the \"command\" key should handle \"ymsgr\" URLs."
-msgstr "Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «ymsgr»-URLer."
-
-msgid "True if the command used to handle this type of URL should be run in a terminal."
-msgstr "Sann hvis kommandoen som skal håndtere denne type URLer skal kjøres i en terminal."
+msgid ""
+"True if the command specified in the \"command\" key should handle \"aim\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «aim»-"
+"URLer."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"gg\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «gg»-"
+"URLer."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"icq\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «icq»-"
+"URLer."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"irc\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «irc»-"
+"URLer."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"msnim\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «msnim»-"
+"URLer."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"sip\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «sip»-"
+"URLer."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"xmpp\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «xmpp»-"
+"URLer."
+
+msgid ""
+"True if the command specified in the \"command\" key should handle \"ymsgr\" "
+"URLs."
+msgstr ""
+"Sann hvis kommandoen spesifisert i «kommando»-nøkkelen skal håndtere «ymsgr»-"
+"URLer."
+
+msgid ""
+"True if the command used to handle this type of URL should be run in a "
+"terminal."
+msgstr ""
+"Sann hvis kommandoen som skal håndtere denne type URLer skal kjøres i en "
+"terminal."
 
 msgid "Whether the specified command should handle \"aim\" URLs"
 msgstr "Om den spesifike kommandoen skal håndtere «aim»-URLer"
@@ -1972,12 +2102,20 @@
 msgstr "XML"
 
 #, c-format
-msgid "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
-msgstr "<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;STANDARDSVAR&gt;:</b></font> %s<br/>\n"
-
-#, c-format
-msgid "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-REPLY&gt;:</b></font> %s<br/>\n"
-msgstr "<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;STANDARDSVAR&gt;:</b></font> %s<br/>\n"
+msgid ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+"<font color=\"#16569E\"><font size=\"2\">(%s)</font> <b>%s &lt;"
+"STANDARDSVAR&gt;:</b></font> %s<br/>\n"
+
+#, c-format
+msgid ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;AUTO-"
+"REPLY&gt;:</b></font> %s<br/>\n"
+msgstr ""
+"<font color=\"#A82F2F\"><font size=\"2\">(%s)</font> <b>%s &lt;"
+"STANDARDSVAR&gt;:</b></font> %s<br/>\n"
 
 msgid "<font color=\"red\"><b>Unable to find log path!</b></font>"
 msgstr "<font color=\"red\"><b>Klarte ikke finne banen til loggen!</b></font>"
@@ -2005,12 +2143,19 @@
 msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
 msgstr "ABI versjon mismatch %d.%d.x (trenger %d.%d.x)"
 
-msgid "Plugin does not implement all required functions (list_icon, login and close)"
-msgstr "Tillegget implenterer ikke alle funksjoner som kreves (list_icon, login og close)"
-
-#, c-format
-msgid "The required plugin %s was not found. Please install this plugin and try again."
-msgstr "Det nødvendige tillegget %s ble ikke funnet. Installer dette tillegget og prøv igjen."
+msgid ""
+"Plugin does not implement all required functions (list_icon, login and close)"
+msgstr ""
+"Tillegget implenterer ikke alle funksjoner som kreves (list_icon, login og "
+"close)"
+
+#, c-format
+msgid ""
+"The required plugin %s was not found. Please install this plugin and try "
+"again."
+msgstr ""
+"Det nødvendige tillegget %s ble ikke funnet. Installer dette tillegget og "
+"prøv igjen."
 
 msgid "Unable to load the plugin"
 msgstr "Klarte ikke å laste tillegget"
@@ -2112,7 +2257,8 @@
 
 #. *< summary
 msgid "Adds the option to store notes for buddies on your buddy list."
-msgstr "Legger til muligheten for å lagre notater for kompiser i kompislisten din."
+msgstr ""
+"Legger til muligheten for å lagre notater for kompiser i kompislisten din."
 
 #. *< type
 #. *< ui_requirement
@@ -2210,8 +2356,12 @@
 msgstr "Test IPC-støtte for tillegg (som klient)."
 
 #. *  description
-msgid "Test plugin IPC support, as a client. This locates the server plugin and calls the commands registered."
-msgstr "Test IPC-støtte for tillegg (som klient). Dette finner tjenertillegget og kaller de registrerte kommandoene."
+msgid ""
+"Test plugin IPC support, as a client. This locates the server plugin and "
+"calls the commands registered."
+msgstr ""
+"Test IPC-støtte for tillegg (som klient). Dette finner tjenertillegget og "
+"kaller de registrerte kommandoene."
 
 #
 #. *< type
@@ -2231,7 +2381,8 @@
 
 #. *  description
 msgid "Test plugin IPC support, as a server. This registers the IPC commands."
-msgstr "Test IPC-støtte for tillegg (som tjener). Dette registrerer IPC-kommandoene."
+msgstr ""
+"Test IPC-støtte for tillegg (som tjener). Dette registrerer IPC-kommandoene."
 
 msgid "Join/Part Hiding Configuration"
 msgstr "Innstilling for å skjule bli med-/forlat-tilstander"
@@ -2261,8 +2412,12 @@
 msgstr "Skjul fremmede join/part beskjeder."
 
 #. *  description
-msgid "This plugin hides join/part messages in large rooms, except for those users actively taking part in a conversation."
-msgstr "Denne plugin skjuler join/part beskjeder i store rom, untatt for de brukerne som aktivt deltar i en samtale."
+msgid ""
+"This plugin hides join/part messages in large rooms, except for those users "
+"actively taking part in a conversation."
+msgstr ""
+"Denne plugin skjuler join/part beskjeder i store rom, untatt for de brukerne "
+"som aktivt deltar i en samtale."
 
 #. This is used in the place of a timezone abbreviation if the
 #. * offset is way off.  The user should never really see it, but
@@ -2287,8 +2442,12 @@
 msgid "You were disconnected from the server."
 msgstr "Du har blitt koblet fra tjeneren."
 
-msgid "You are currently disconnected. Messages will not be received unless you are logged in."
-msgstr "Du er for tiden avlogget. Beskjeder vil ikke bli mottatt uten at du er innlogget."
+msgid ""
+"You are currently disconnected. Messages will not be received unless you are "
+"logged in."
+msgstr ""
+"Du er for tiden avlogget. Beskjeder vil ikke bli mottatt uten at du er "
+"innlogget."
 
 msgid "Message could not be sent because the maximum length was exceeded."
 msgstr "Meldingen kunne ikke bli sendt fordi max lengde ble overskredet."
@@ -2370,13 +2529,18 @@
 
 #. * description
 msgid ""
-"When viewing logs, this plugin will include logs from other IM clients. Currently, this includes Adium, MSN Messenger, and Trillian.\n"
+"When viewing logs, this plugin will include logs from other IM clients. "
+"Currently, this includes Adium, MSN Messenger, and Trillian.\n"
 "\n"
-"WARNING: This plugin is still alpha code and may crash frequently.  Use it at your own risk!"
-msgstr ""
-"Når man ser på logger, vil dette tillegget inkludere logger fra andre lynmeldingsklienter. For tiden inkluderer dette Adium, MSN Messenger og Trillian.\n"
+"WARNING: This plugin is still alpha code and may crash frequently.  Use it "
+"at your own risk!"
+msgstr ""
+"Når man ser på logger, vil dette tillegget inkludere logger fra andre "
+"lynmeldingsklienter. For tiden inkluderer dette Adium, MSN Messenger og "
+"Trillian.\n"
 "\n"
-"ADVARSEL: Dette tillegget er enda alpha kode og kan krasje ofte.  Bruk den på egen risiko!"
+"ADVARSEL: Dette tillegget er enda alpha kode og kan krasje ofte.  Bruk den "
+"på egen risiko!"
 
 #
 msgid "Mono Plugin Loader"
@@ -2386,7 +2550,7 @@
 msgstr "Laster .NET tillegg med Mono."
 
 msgid "Add new line in IMs"
-msgstr "Legg til linjeskift i direktemeldinger."
+msgstr "Legg til linjeskift i lynmeldinger."
 
 msgid "Add new line in Chats"
 msgstr "Legg til linjeskift i samtaler"
@@ -2409,8 +2573,12 @@
 msgstr "Setter inn en ny linje foran viste beskjeder."
 
 #. *< summary
-msgid "Prepends a newline to messages so that the rest of the message appears below the username in the conversation window."
-msgstr "Setter inn en ny linje foran beskjeder sånn at resten av teksten kommer frem under brukernavnet i samtalevinduet."
+msgid ""
+"Prepends a newline to messages so that the rest of the message appears below "
+"the username in the conversation window."
+msgstr ""
+"Setter inn en ny linje foran beskjeder sånn at resten av teksten kommer frem "
+"under brukernavnet i samtalevinduet."
 
 msgid "Offline Message Emulation"
 msgstr "Emulering av avlogget-beskjed"
@@ -2418,12 +2586,20 @@
 msgid "Save messages sent to an offline user as pounce."
 msgstr "Lagre beskjeder sendt til en avlogget bruker som pounce."
 
-msgid "The rest of the messages will be saved as pounce. You can edit/delete the pounce from the `Buddy Pounce' dialog."
-msgstr "Resten av beskjedene vil bli lagret som varsling. Du kan forandre/slette varslingen fra kontaktvarslingsdialogen."
-
-#, c-format
-msgid "\"%s\" is currently offline. Do you want to save the rest of the messages in a pounce and automatically send them when \"%s\" logs back in?"
-msgstr "\"%s\" er for tiden avlogget. Vil du lagre resten av beskjeden i en varsling og automatisk sende den når \"%s\" logger inn igjen?"
+msgid ""
+"The rest of the messages will be saved as pounce. You can edit/delete the "
+"pounce from the `Buddy Pounce' dialog."
+msgstr ""
+"Resten av beskjedene vil bli lagret som varsling. Du kan forandre/slette "
+"varslingen fra kontaktvarslingsdialogen."
+
+#, c-format
+msgid ""
+"\"%s\" is currently offline. Do you want to save the rest of the messages in "
+"a pounce and automatically send them when \"%s\" logs back in?"
+msgstr ""
+"\"%s\" er for tiden avlogget. Vil du lagre resten av beskjeden i en varsling "
+"og automatisk sende den når \"%s\" logger inn igjen?"
 
 msgid "Offline Message"
 msgstr "Avlogget beskjed"
@@ -2464,8 +2640,12 @@
 msgid "Psychic mode for incoming conversation"
 msgstr "Synsk modus for innkommende samtale"
 
-msgid "Causes conversation windows to appear as other users begin to message you.  This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
-msgstr "Gjør at samtalevinduet dukker opp idet andre brukere begynner å sende beskjed til deg. Dette fungerer for AIM, ICQ, XMPP, Sametime og Yahoo!"
+msgid ""
+"Causes conversation windows to appear as other users begin to message you.  "
+"This works for AIM, ICQ, XMPP, Sametime, and Yahoo!"
+msgstr ""
+"Gjør at samtalevinduet dukker opp idet andre brukere begynner å sende "
+"beskjed til deg. Dette fungerer for AIM, ICQ, XMPP, Sametime og Yahoo!"
 
 msgid "You feel a disturbance in the force..."
 msgstr "You feel a disturbance in the force..."
@@ -2612,8 +2792,12 @@
 #. *< version
 #. *  summary
 #. *  description
-msgid "Notifies in a conversation window when a buddy goes or returns from away or idle."
-msgstr "Varsler i et samtalevindu når en kontakt blir borte/inaktiv, eller returnerer."
+msgid ""
+"Notifies in a conversation window when a buddy goes or returns from away or "
+"idle."
+msgstr ""
+"Varsler i et samtalevindu når en kontakt blir borte/inaktiv, eller "
+"returnerer."
 
 #
 msgid "Tcl Plugin Loader"
@@ -2623,19 +2807,28 @@
 msgid "Provides support for loading Tcl plugins"
 msgstr "Lar deg laste Tcl-tillegg"
 
-msgid "Unable to detect ActiveTCL installation. If you wish to use TCL plugins, install ActiveTCL from http://www.activestate.com\n"
-msgstr "Klarte ikke finne en ActiveTCL installasjon. Om du ønsker å bruke TCL tillegg, installer ActiveTCL fra http://www.activestate.com\n"
-
-msgid "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d.pidgin.im/BonjourWindows for more information."
-msgstr "Fant ikke verktøysamlingen til Apple Bonjour for Windows. Du finner flere opplysninger på adressa http://d.pidgin.im/BonjourWindows."
+msgid ""
+"Unable to detect ActiveTCL installation. If you wish to use TCL plugins, "
+"install ActiveTCL from http://www.activestate.com\n"
+msgstr ""
+"Klarte ikke finne en ActiveTCL installasjon. Om du ønsker å bruke TCL "
+"tillegg, installer ActiveTCL fra http://www.activestate.com\n"
+
+msgid ""
+"The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
+"pidgin.im/BonjourWindows for more information."
+msgstr ""
+"Fant ikke verktøysamlingen til Apple Bonjour for Windows. Du finner flere "
+"opplysninger på adressa http://d.pidgin.im/BonjourWindows."
 
 msgid "Unable to listen for incoming IM connections\n"
 msgstr "Klarte ikke lage ny tilkobling\n"
 
-msgid "Unable to establish connection with the local mDNS server.  Is it running?"
-msgstr "Klarte ikke etablere kontakt med den lokale mDNS serveren. Er den igang?"
-
-#. Creating the options for the protocol
+msgid ""
+"Unable to establish connection with the local mDNS server.  Is it running?"
+msgstr ""
+"Klarte ikke etablere kontakt med den lokale mDNS serveren. Er den igang?"
+
 msgid "First name"
 msgstr "Fornavn"
 
@@ -2668,6 +2861,10 @@
 msgid "Purple Person"
 msgstr "Purple-person"
 
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "Lokal port"
+
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -2693,7 +2890,9 @@
 msgid "Invalid proxy settings"
 msgstr "Ugyldige proxyinnstilinger"
 
-msgid "Either the host name or port number specified for your given proxy type is invalid."
+msgid ""
+"Either the host name or port number specified for your given proxy type is "
+"invalid."
 msgstr "Det spesifiserte maskinnavnet eller portnummeret for proxy er ugyldig."
 
 msgid "Token Error"
@@ -3154,11 +3353,19 @@
 msgid "Invalid nickname"
 msgstr "Ugyldig brukernavn"
 
-msgid "Your selected nickname was rejected by the server.  It probably contains invalid characters."
-msgstr "Ditt valgte kallenavn ble avvist av tjeneren. Sannsynligvis inneholder det ugyldige tegn."
-
-msgid "Your selected account name was rejected by the server.  It probably contains invalid characters."
-msgstr "Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det ugyldige tegn."
+msgid ""
+"Your selected nickname was rejected by the server.  It probably contains "
+"invalid characters."
+msgstr ""
+"Ditt valgte kallenavn ble avvist av tjeneren. Sannsynligvis inneholder det "
+"ugyldige tegn."
+
+msgid ""
+"Your selected account name was rejected by the server.  It probably contains "
+"invalid characters."
+msgstr ""
+"Ditt valgte kontonavn ble avvist av tjeneren. Sannsynligvis inneholder det "
+"ugyldige tegn."
 
 msgid "Cannot change nick"
 msgstr "Kan ikke endre kallenavn"
@@ -3194,8 +3401,12 @@
 msgid "action &lt;action to perform&gt;:  Perform an action."
 msgstr "action &lt;action to perform&gt;:  Utfør noe."
 
-msgid "away [message]:  Set an away message, or use no message to return from being away."
-msgstr "away [melding]:  Sett en melding som skal vises når du er fraværende, eller ikke sett noen for å returnere."
+msgid ""
+"away [message]:  Set an away message, or use no message to return from being "
+"away."
+msgstr ""
+"away [melding]:  Sett en melding som skal vises når du er fraværende, eller "
+"ikke sett noen for å returnere."
 
 msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
 msgstr "ctcp <kallenavn> <beskjed>: sender ctcp beskjed til kallenavn."
@@ -3203,26 +3414,56 @@
 msgid "chanserv: Send a command to chanserv"
 msgstr "chanserv:  Send en kommando til chanserv"
 
-msgid "deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from someone. You must be a channel operator to do this."
-msgstr "deop &lt;nick1&gt; [nick2] ...:  Fjern kanal OP status fra noen. Du må være kanal OP for å gjøre dette."
-
-msgid "devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from someone, preventing them from speaking if the channel is moderated (+m). You must be a channel operator to do this."
-msgstr "devoice &lt;nick1&gt; [nick2] ...:  Fjern kanal voice status fra noen, hindre de fra å snakke om kanalen er moderert (+m). Du må være kanal OP for å gjøre dette."
-
-msgid "invite &lt;nick&gt; [room]:  Invite someone to join you in the specified channel, or the current channel."
-msgstr "invite &lt;nick&gt; [room]:  Inviter noen til å joine deg i spsifisert kanel eller den nåværende kanalen."
-
-msgid "j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more channels, optionally providing a channel key for each if needed."
-msgstr "j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Fyll inn en eller flere kanaler, alternativt gi en nøkkel for hver om nødvendig."
-
-msgid "join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more channels, optionally providing a channel key for each if needed."
-msgstr "join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Fyll inn en eller flere kanaler, alternativt gi en nøkkel for hver om nødvendig."
-
-msgid "kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a channel operator to do this."
-msgstr "kick &lt;nick&gt; [message]:  Fjern noen fra en kanal. Du må være kanal OP for å gjøre dette."
-
-msgid "list:  Display a list of chat rooms on the network. <i>Warning, some servers may disconnect you upon doing this.</i>"
-msgstr "list:  Vis en liste over samtalerom på nettverket. <i>Advarsel, noen tjenere kan koble fra om du gjør dette.</i>"
+msgid ""
+"deop &lt;nick1&gt; [nick2] ...:  Remove channel operator status from "
+"someone. You must be a channel operator to do this."
+msgstr ""
+"deop &lt;nick1&gt; [nick2] ...:  Fjern kanal OP status fra noen. Du må være "
+"kanal OP for å gjøre dette."
+
+msgid ""
+"devoice &lt;nick1&gt; [nick2] ...:  Remove channel voice status from "
+"someone, preventing them from speaking if the channel is moderated (+m). You "
+"must be a channel operator to do this."
+msgstr ""
+"devoice &lt;nick1&gt; [nick2] ...:  Fjern kanal voice status fra noen, "
+"hindre de fra å snakke om kanalen er moderert (+m). Du må være kanal OP for "
+"å gjøre dette."
+
+msgid ""
+"invite &lt;nick&gt; [room]:  Invite someone to join you in the specified "
+"channel, or the current channel."
+msgstr ""
+"invite &lt;nick&gt; [room]:  Inviter noen til å joine deg i spsifisert kanel "
+"eller den nåværende kanalen."
+
+msgid ""
+"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+"j &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Fyll inn en eller flere "
+"kanaler, alternativt gi en nøkkel for hver om nødvendig."
+
+msgid ""
+"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Enter one or more "
+"channels, optionally providing a channel key for each if needed."
+msgstr ""
+"join &lt;room1&gt;[,room2][,...] [key1[,key2][,...]]:  Fyll inn en eller "
+"flere kanaler, alternativt gi en nøkkel for hver om nødvendig."
+
+msgid ""
+"kick &lt;nick&gt; [message]:  Remove someone from a channel. You must be a "
+"channel operator to do this."
+msgstr ""
+"kick &lt;nick&gt; [message]:  Fjern noen fra en kanal. Du må være kanal OP "
+"for å gjøre dette."
+
+msgid ""
+"list:  Display a list of chat rooms on the network. <i>Warning, some servers "
+"may disconnect you upon doing this.</i>"
+msgstr ""
+"list:  Vis en liste over samtalerom på nettverket. <i>Advarsel, noen tjenere "
+"kan koble fra om du gjør dette.</i>"
 
 msgid "me &lt;action to perform&gt;:  Perform an action."
 msgstr "me &lt;action to perform&gt;:  Utfør noe."
@@ -3230,11 +3471,18 @@
 msgid "memoserv: Send a command to memoserv"
 msgstr "memoserv:  Send en kommando til memoserv"
 
-msgid "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel or user mode."
-msgstr "mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Sett er fjern en kanal eller bruker modus."
-
-msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as opposed to a channel)."
-msgstr "msg &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker."
+msgid ""
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Set or unset a channel "
+"or user mode."
+msgstr ""
+"mode &lt;+|-&gt;&lt;A-Za-z&gt; &lt;nick|channel&gt;:  Sett er fjern en kanal "
+"eller bruker modus."
+
+msgid ""
+"msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"msg &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker."
 
 msgid "names [channel]:  List the users currently in a channel."
 msgstr "names [channel]:  Vis brukere i denne kanalen."
@@ -3248,23 +3496,41 @@
 msgid "notice &lt;target&lt;:  Send a notice to a user or channel."
 msgstr "notice &lt;mål&gt;: Send en varsling til en bruker eller kanal."
 
-msgid "op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You must be a channel operator to do this."
-msgstr "op &lt;nick1&gt; [nick2] ...:  Tillat OP status til noen. Du må være kanal OP for å gjøre dette."
-
-msgid "operwall &lt;message&gt;:  If you don't know what this is, you probably can't use it."
-msgstr "operwall &lt;message&gt;:  Om du ikke vet hva dette er, kan du sannsynligvis ikke bruke dette."
+msgid ""
+"op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"op &lt;nick1&gt; [nick2] ...:  Tillat OP status til noen. Du må være kanal "
+"OP for å gjøre dette."
+
+msgid ""
+"operwall &lt;message&gt;:  If you don't know what this is, you probably "
+"can't use it."
+msgstr ""
+"operwall &lt;message&gt;:  Om du ikke vet hva dette er, kan du sannsynligvis "
+"ikke bruke dette."
 
 msgid "operserv: Send a command to operserv"
 msgstr "operserv:  Send en kommando til operserv"
 
-msgid "part [room] [message]:  Leave the current channel, or a specified channel, with an optional message."
-msgstr "part [room] [message]:  Forlat nåværende kanal eller en spesifisert kanal med en beskjed."
-
-msgid "ping [nick]:  Asks how much lag a user (or the server if no user specified) has."
+msgid ""
+"part [room] [message]:  Leave the current channel, or a specified channel, "
+"with an optional message."
+msgstr ""
+"part [room] [message]:  Forlat nåværende kanal eller en spesifisert kanal "
+"med en beskjed."
+
+msgid ""
+"ping [nick]:  Asks how much lag a user (or the server if no user specified) "
+"has."
 msgstr "ping [nick]:  Send ping til en bruker."
 
-msgid "query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as opposed to a channel)."
-msgstr "query &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker (vises ikke i kanal)."
+msgid ""
+"query &lt;nick&gt; &lt;message&gt;:  Send a private message to a user (as "
+"opposed to a channel)."
+msgstr ""
+"query &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker "
+"(vises ikke i kanal)."
 
 msgid "quit [message]:  Disconnect from the server, with an optional message."
 msgstr "quit [message]:  Disconnect fra server, med evt. beskjed."
@@ -3272,8 +3538,12 @@
 msgid "quote [...]:  Send a raw command to the server."
 msgstr "quote [...]:  Send en rå kommando til serveren."
 
-msgid "remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a channel operator to do this."
-msgstr "remove &lt;nick&gt; [message]:  Fjern noen fra et rom. Du må være kanal OP for å gjøre dette."
+msgid ""
+"remove &lt;nick&gt; [message]:  Remove someone from a room. You must be a "
+"channel operator to do this."
+msgstr ""
+"remove &lt;nick&gt; [message]:  Fjern noen fra et rom. Du må være kanal OP "
+"for å gjøre dette."
 
 msgid "time: Displays the current local time at the IRC server."
 msgstr "time: Vis nåværende lokaltid på IRC serveren."
@@ -3287,17 +3557,26 @@
 msgid "version [nick]: send CTCP VERSION request to a user"
 msgstr "versjon [nick]: send CTCP VERSION forespørsel til en bruker"
 
-msgid "voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You must be a channel operator to do this."
-msgstr "voice &lt;nick1&gt; [nick2] ...:  Gi voice til noen. Du må være kanal OP for å gjøre dette."
-
-msgid "wallops &lt;message&gt;:  If you don't know what this is, you probably can't use it."
-msgstr "wallops &lt;message&gt;:  Om du ikke vet hva dette er, kan du sannsynligvis ikke bruke det."
+msgid ""
+"voice &lt;nick1&gt; [nick2] ...:  Grant channel voice status to someone. You "
+"must be a channel operator to do this."
+msgstr ""
+"voice &lt;nick1&gt; [nick2] ...:  Gi voice til noen. Du må være kanal OP for "
+"å gjøre dette."
+
+msgid ""
+"wallops &lt;message&gt;:  If you don't know what this is, you probably can't "
+"use it."
+msgstr ""
+"wallops &lt;message&gt;:  Om du ikke vet hva dette er, kan du sannsynligvis "
+"ikke bruke det."
 
 msgid "whois [server] &lt;nick&gt;:  Get information on a user."
 msgstr "whois [server] &lt;nick&gt;:  Hent informasjon om en bruker."
 
 msgid "whowas &lt;nick&gt;: Get information on a user that has logged off."
-msgstr "whowas &lt;kallenavn&gt;:  Hent informasjon om en bruker som har logget av."
+msgstr ""
+"whowas &lt;kallenavn&gt;:  Hent informasjon om en bruker som har logget av."
 
 #, c-format
 msgid "Reply time from %s: %lu seconds"
@@ -3322,17 +3601,25 @@
 msgstr "utfør"
 
 msgid "Server requires TLS/SSL for login.  No TLS/SSL support found."
-msgstr "Tjeneren krever TLS/SSL for å logge inn, men støtte for dette ble ikke funnet."
+msgstr ""
+"Tjeneren krever TLS/SSL for å logge inn, men støtte for dette ble ikke "
+"funnet."
 
 msgid "You require encryption, but no TLS/SSL support found."
 msgstr "Du krever kryptering, men ingen støtte for TLS/SSL ble funnet."
 
 msgid "Server requires plaintext authentication over an unencrypted stream"
-msgstr "Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert forbindelse"
-
-#, c-format
-msgid "%s requires plaintext authentication over an unencrypted connection.  Allow this and continue authentication?"
-msgstr "%s krever autentisering i klartekst over eit ukryptert samband. Vil du tillate dette og fortsett med autentiseringen?"
+msgstr ""
+"Tjeneren forlanger identitetsbekreftelse i ren tekst over en ukryptert "
+"forbindelse"
+
+#, c-format
+msgid ""
+"%s requires plaintext authentication over an unencrypted connection.  Allow "
+"this and continue authentication?"
+msgstr ""
+"%s krever autentisering i klartekst over eit ukryptert samband. Vil du "
+"tillate dette og fortsett med autentiseringen?"
 
 msgid "Plaintext Authentication"
 msgstr "Identitetsbekreftelse i ren tekst"
@@ -3402,8 +3689,12 @@
 msgid "Edit XMPP vCard"
 msgstr "Rediger vCard for XMPP"
 
-msgid "All items below are optional. Enter only the information with which you feel comfortable."
-msgstr "Alle feltene nedenfor er valgfrie. Du trenger bare å skrive den informasjonen du ønsker."
+msgid ""
+"All items below are optional. Enter only the information with which you feel "
+"comfortable."
+msgstr ""
+"Alle feltene nedenfor er valgfrie. Du trenger bare å skrive den "
+"informasjonen du ønsker."
 
 msgid "Client"
 msgstr "Klient"
@@ -3632,8 +3923,12 @@
 msgstr "Følgende resultat fra ditt søk"
 
 #. current comment from Jabber User Directory users.jabber.org
-msgid "Find a contact by entering the search criteria in the given fields. Note: Each field supports wild card searches (%)"
-msgstr "Finn en kontakt ved å skrive inn søkekriterier i gitte felter. NB: Hvert felt har støtte for wild card søk (%)"
+msgid ""
+"Find a contact by entering the search criteria in the given fields. Note: "
+"Each field supports wild card searches (%)"
+msgstr ""
+"Finn en kontakt ved å skrive inn søkekriterier i gitte felter. NB: Hvert "
+"felt har støtte for wild card søk (%)"
 
 msgid "Directory Query Failed"
 msgstr "Mappeforespørsel feilet"
@@ -3740,7 +4035,8 @@
 msgstr "Finn samtalerom"
 
 msgid "You require encryption, but it is not available on this server."
-msgstr "Du krever kryptering, men det er ikke støtte for det på denne serveren."
+msgstr ""
+"Du krever kryptering, men det er ikke støtte for det på denne serveren."
 
 msgid "Write error"
 msgstr "Feil ved skriving"
@@ -3810,7 +4106,8 @@
 msgid "Unregister"
 msgstr "Avregistrer"
 
-msgid "Please fill out the information below to change your account registration."
+msgid ""
+"Please fill out the information below to change your account registration."
 msgstr "Fyll ut feltene under for å endre din kontoregistrering."
 
 msgid "Please fill out the information below to register your new account."
@@ -4168,11 +4465,19 @@
 msgid "ban &lt;user&gt; [reason]:  Ban a user from the room."
 msgstr "ban &lt;bruker&gt; [grunn]:  Forby en bruker fra rommet."
 
-msgid "affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's affiliation with the room."
-msgstr "Knytt &lt;bruker&gt; &lt;eier|admin|medlem|utstøtt|ingen&gt;: Sett en brukers tilknyting til rommet."
-
-msgid "role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's role in the room."
-msgstr "rolle &lt;user&gt; &lt;moderator|deltaker|besøkende|ingen&gt;: Sett en brukers rolle i rommet."
+msgid ""
+"affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
+"affiliation with the room."
+msgstr ""
+"Knytt &lt;bruker&gt; &lt;eier|admin|medlem|utstøtt|ingen&gt;: Sett en "
+"brukers tilknyting til rommet."
+
+msgid ""
+"role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's "
+"role in the room."
+msgstr ""
+"rolle &lt;user&gt; &lt;moderator|deltaker|besøkende|ingen&gt;: Sett en "
+"brukers rolle i rommet."
 
 msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
 msgstr "invite &lt;bruker&gt; [rom]:  Inviter en bruker til rommet."
@@ -4183,8 +4488,11 @@
 msgid "kick &lt;user&gt; [reason]:  Kick a user from the room."
 msgstr "kick &lt;bruker&gt; [grunn]:  Spark en bruker ut av rommet."
 
-msgid "msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
-msgstr "msg &lt;bruker&gt; &lt;melding&gt;:  Send en privatmelding til en annen bruker."
+msgid ""
+"msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
+msgstr ""
+"msg &lt;bruker&gt; &lt;melding&gt;:  Send en privatmelding til en annen "
+"bruker."
 
 msgid "ping &lt;jid&gt;:\tPing a user/component/server."
 msgstr "ping &lt;jid&gt;:\tPing en bruker/komponent/server."
@@ -4272,8 +4580,12 @@
 msgid "Create New Room"
 msgstr "Skap nytt samtalerom"
 
-msgid "You are creating a new room.  Would you like to configure it, or accept the default settings?"
-msgstr "Du er i ferd med å lage et nytt rom. Ønsker du å endre innstillingene, eller bruke standardinnstillingene?"
+msgid ""
+"You are creating a new room.  Would you like to configure it, or accept the "
+"default settings?"
+msgstr ""
+"Du er i ferd med å lage et nytt rom. Ønsker du å endre innstillingene, eller "
+"bruke standardinnstillingene?"
 
 msgid "_Configure Room"
 msgstr "_Konfigurer rom"
@@ -4333,8 +4645,12 @@
 msgid "Please specify a new nickname for you."
 msgstr "Oppgi et nytt kallenavn for deg."
 
-msgid "This information is visible to all contacts on your contact list, so choose something appropriate."
-msgstr "Denne informasjonen vises til alle dine kontakter i kontaktlisten din, så velg noe passende."
+msgid ""
+"This information is visible to all contacts on your contact list, so choose "
+"something appropriate."
+msgstr ""
+"Denne informasjonen vises til alle dine kontakter i kontaktlisten din, så "
+"velg noe passende."
 
 msgid "Set Nickname..."
 msgstr "Sett Nick..."
@@ -4345,9 +4661,6 @@
 msgid "Select an action"
 msgstr "Velg en handling"
 
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Klarte ikke hente MSN-adressebok"
-
 #. 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
@@ -4366,172 +4679,233 @@
 msgstr "Synkronisasjonsproblem med kontaktlisten i %s (%s)"
 
 #, c-format
-msgid "%s on the local list is inside the group \"%s\" but not on the server list. Do you want this buddy to be added?"
-msgstr "%s er på den lokale lista innenfor gruppa \"%s\", men ikke på tjenerlista. Ønsker du at denne kontakten skal bli lagt til?"
-
-#, c-format
-msgid "%s is on the local list but not on the server list. Do you want this buddy to be added?"
-msgstr "%s er på den lokale lista, men ikke på tjenerlista. Ønsker du at denne kontakten skal bli lagt til?"
-
+msgid ""
+"%s on the local list is inside the group \"%s\" but not on the server list. "
+"Do you want this buddy to be added?"
+msgstr ""
+"%s er på den lokale lista innenfor gruppa \"%s\", men ikke på tjenerlista. "
+"Ønsker du at denne kontakten skal bli lagt til?"
+
+#, c-format
+msgid ""
+"%s is on the local list but not on the server list. Do you want this buddy "
+"to be added?"
+msgstr ""
+"%s er på den lokale lista, men ikke på tjenerlista. Ønsker du at denne "
+"kontakten skal bli lagt til?"
+
+#, c-format
 msgid "Unable to parse message"
 msgstr "Klarte ikke tolke beskjed"
 
+#, c-format
 msgid "Syntax Error (probably a client bug)"
 msgstr "Syntaksfeil (sannsynligvis en Pidgin-bug)"
 
+#, c-format
 msgid "Invalid email address"
 msgstr "Ugyldig epostadresse"
 
+#, c-format
 msgid "User does not exist"
 msgstr "Brukeren eksisterer ikke"
 
+#, c-format
 msgid "Fully qualified domain name missing"
 msgstr "Fullstending domenenavn mangler"
 
+#, c-format
 msgid "Already logged in"
 msgstr "Allerede logget inn"
 
+#, c-format
 msgid "Invalid username"
 msgstr "Ugyldig brukernavn"
 
+#, c-format
 msgid "Invalid friendly name"
 msgstr "Ugyldig vennlig navn"
 
+#, c-format
 msgid "List full"
 msgstr "Listen er full"
 
+#, c-format
 msgid "Already there"
 msgstr "Du er allerede der"
 
+#, c-format
 msgid "Not on list"
 msgstr "Ikke på listen"
 
+#, c-format
 msgid "User is offline"
 msgstr "Brukeren er avlogget"
 
+#, c-format
 msgid "Already in the mode"
 msgstr "Du er allerede i modusen"
 
+#, c-format
 msgid "Already in opposite list"
 msgstr "Du er allerede i den andre listen"
 
+#, c-format
 msgid "Too many groups"
 msgstr "For mange grupper"
 
+#, c-format
 msgid "Invalid group"
 msgstr "Ugyldig gruppe"
 
+#, c-format
 msgid "User not in group"
 msgstr "Brukeren er ikke i gruppen"
 
+#, c-format
 msgid "Group name too long"
 msgstr "Gruppenavnet er for langt"
 
+#, c-format
 msgid "Cannot remove group zero"
 msgstr "Kan ikke fjerne gruppe null"
 
+#, c-format
 msgid "Tried to add a user to a group that doesn't exist"
 msgstr "Prøvde å legge en bruker til i en ikke-eksisterende gruppe"
 
+#, c-format
 msgid "Switchboard failed"
 msgstr "Feil med switchboard-tjenesten"
 
+#, c-format
 msgid "Notify transfer failed"
 msgstr "Overføring av varsling feilet"
 
+#, c-format
 msgid "Required fields missing"
 msgstr "Du har ikke fylt inn alle nødvendige felt"
 
+#, c-format
 msgid "Too many hits to a FND"
 msgstr "For mange treff på en FND"
 
+#, c-format
 msgid "Not logged in"
 msgstr "Ikke pålogget"
 
+#, c-format
 msgid "Service temporarily unavailable"
 msgstr "Tjenesten midlertidig uttilgjengelig"
 
+#, c-format
 msgid "Database server error"
 msgstr "Feil på databasetjeneren"
 
+#, c-format
 msgid "Command disabled"
 msgstr "Kommando deaktivert"
 
+#, c-format
 msgid "File operation error"
 msgstr "Filoperasjonsfeil"
 
+#, c-format
 msgid "Memory allocation error"
 msgstr "Feil ved minneallokering"
 
+#, c-format
 msgid "Wrong CHL value sent to server"
 msgstr "Feil CHL-verdi sendt til tjener"
 
+#, c-format
 msgid "Server busy"
 msgstr "Tjeneren er opptatt"
 
+#, c-format
 msgid "Server unavailable"
 msgstr "Tjeneren er ikke tilgjengelig"
 
+#, c-format
 msgid "Peer notification server down"
 msgstr "Varslingstjeneren er ikke tilgjengelig"
 
+#, c-format
 msgid "Database connect error"
 msgstr "Klarte ikke koble til databasen"
 
+#, c-format
 msgid "Server is going down (abandon ship)"
 msgstr "Tjeneren er på vei nei (redde seg den som kan)"
 
+#, c-format
 msgid "Error creating connection"
 msgstr "Feil: kunne ikke koble til"
 
+#, c-format
 msgid "CVR parameters are either unknown or not allowed"
 msgstr "CVR-parametre er enten ukjent eller ikke tillatt"
 
+#, c-format
 msgid "Unable to write"
 msgstr "Klarte ikke skrive"
 
+#, c-format
 msgid "Session overload"
 msgstr "Sesjonsoverlast"
 
+#, c-format
 msgid "User is too active"
 msgstr "Brukeren er for aktiv"
 
+#, c-format
 msgid "Too many sessions"
 msgstr "For mange sesjoner"
 
+#, c-format
 msgid "Passport not verified"
 msgstr "Passport-konto er ikke blitt verifisert"
 
+#, c-format
 msgid "Bad friend file"
 msgstr "Ugyldig 'friend'-fil"
 
+#, c-format
 msgid "Not expected"
 msgstr "Uventet"
 
+#, c-format
 msgid "Friendly name changes too rapidly"
 msgstr "Visningsnavnet endres for raskt"
 
+#, c-format
 msgid "Server too busy"
 msgstr "Tjeneren er for opptatt"
 
+#, c-format
 msgid "Authentication failed"
 msgstr "Autentisering feilet"
 
+#, c-format
 msgid "Not allowed when offline"
 msgstr "Ikke tillatt når avlogget"
 
+#, c-format
 msgid "Not accepting new users"
 msgstr "Nye brukere vil ikke bli godtatt"
 
+#, c-format
 msgid "Kids Passport without parental consent"
 msgstr "Passport for barn, men har ikke foreldregodkjenning"
 
+#, c-format
 msgid "Passport account not yet verified"
 msgstr "Passport-konto er ikke blitt verifisert enda"
 
 msgid "Passport account suspended"
 msgstr "Passport-konto inndratt"
 
+#, c-format
 msgid "Bad ticket"
 msgstr "Bad ticket"
 
@@ -4548,7 +4922,7 @@
 msgstr "Andre kontakter"
 
 msgid "Non-IM Contacts"
-msgstr "Ikke-direktemeldingskontakter"
+msgstr "Ikke-lynmeldingskontakter"
 
 msgid "Nudge"
 msgstr "Dytt"
@@ -4585,8 +4959,11 @@
 msgid "Allow MSN Mobile pages?"
 msgstr "Tillat tekstmeldinger via MSN?"
 
-msgid "Do you want to allow or disallow people on your buddy list to send you MSN Mobile pages to your cell phone or other mobile device?"
-msgstr "Ønsker du å tillate eller forby kontakter å sende deg tekstmeldinger via MSN?"
+msgid ""
+"Do you want to allow or disallow people on your buddy list to send you MSN "
+"Mobile pages to your cell phone or other mobile device?"
+msgstr ""
+"Ønsker du å tillate eller forby kontakter å sende deg tekstmeldinger via MSN?"
 
 msgid "Allow"
 msgstr "Tillat"
@@ -4602,7 +4979,8 @@
 msgstr "Ingen tekst blokkert for denne kontoen."
 
 #, c-format
-msgid "MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgid ""
+"MSN servers are currently blocking the following regular expressions:<br/>%s"
 msgstr "MSN-tjenere blokkerer for øyeblikket følgende regulære uttrykk:<br/>%s"
 
 msgid "This account does not have email enabled."
@@ -4693,7 +5071,8 @@
 msgstr "Start gruppesamtale"
 
 msgid "SSL support is needed for MSN. Please install a supported SSL library."
-msgstr "SSL-støtte kreves for MSN. Vennligst installer et støttet SSL-bibliotek."
+msgstr ""
+"SSL-støtte kreves for MSN. Vennligst installer et støttet SSL-bibliotek."
 
 msgid "Failed to connect to server."
 msgstr "Klarte ikke koble til tjener."
@@ -4808,19 +5187,19 @@
 msgstr "Arbeidsadresse"
 
 msgid "Work Mobile"
-msgstr "Mobil Jobb"
+msgstr "Mobil arbeid"
 
 msgid "Work Pager"
-msgstr "Telefonsøker Jobb"
+msgstr "Telefonsøker arbeid"
 
 msgid "Work Fax"
-msgstr "Fax Jobb"
+msgstr "Fax arbeid"
 
 msgid "Work Email"
-msgstr "E-post Arbeid"
+msgstr "E-post arbeid"
 
 msgid "Work IM"
-msgstr "Lynmelding Arbeid"
+msgstr "Lynmelding arbeid"
 
 msgid "Start Date"
 msgstr "Startdato"
@@ -4837,11 +5216,20 @@
 msgid "The user has not created a public profile."
 msgstr "Brukeren har ikke opprettet en offentlig profil."
 
-msgid "MSN reported not being able to find the user's profile. This either means that the user does not exist, or that the user exists but has not created a public profile."
-msgstr "MSN klarte ikke å finne brukerens profil. Dette betyr enten at brukeren ikke eksisterer, eller at brukeren ikke har opprettet en offentlig profil."
-
-msgid "Could not find any information in the user's profile. The user most likely does not exist."
-msgstr "Pidgin klarte ikke finne noen informasjon i brukerens profil. Antakelig eksisterer brukeren ikke."
+msgid ""
+"MSN reported not being able to find the user's profile. This either means "
+"that the user does not exist, or that the user exists but has not created a "
+"public profile."
+msgstr ""
+"MSN klarte ikke å finne brukerens profil. Dette betyr enten at brukeren ikke "
+"eksisterer, eller at brukeren ikke har opprettet en offentlig profil."
+
+msgid ""
+"Could not find any information in the user's profile. The user most likely "
+"does not exist."
+msgstr ""
+"Pidgin klarte ikke finne noen informasjon i brukerens profil. Antakelig "
+"eksisterer brukeren ikke."
 
 msgid "View web profile"
 msgstr "Vis nettprofil"
@@ -4917,7 +5305,8 @@
 
 #, c-format
 msgid "%s could not be added because your buddy list is full."
-msgstr "%s kunne ikke bli lagt til kontaktlista, fordi din kontaktliste er full."
+msgstr ""
+"%s kunne ikke bli lagt til kontaktlista, fordi din kontaktliste er full."
 
 #, c-format
 msgid "%s is not a valid passport account."
@@ -4937,24 +5326,36 @@
 
 #, c-format
 msgid ""
-"The MSN server will shut down for maintenance in %d minute. You will automatically be signed out at that time.  Please finish any conversations in progress.\n"
+"The MSN server will shut down for maintenance in %d minute. You will "
+"automatically be signed out at that time.  Please finish any conversations "
+"in progress.\n"
 "\n"
-"After the maintenance has been completed, you will be able to successfully sign in."
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
 msgid_plural ""
-"The MSN server will shut down for maintenance in %d minutes. You will automatically be signed out at that time.  Please finish any conversations in progress.\n"
+"The MSN server will shut down for maintenance in %d minutes. You will "
+"automatically be signed out at that time.  Please finish any conversations "
+"in progress.\n"
 "\n"
-"After the maintenance has been completed, you will be able to successfully sign in."
+"After the maintenance has been completed, you will be able to successfully "
+"sign in."
 msgstr[0] ""
-"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutt. Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
+"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutt. Du "
+"vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
 "\n"
 "Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen."
 msgstr[1] ""
-"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutter. Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
+"MSN-tjeneren vil stenge ned pga. vedlikeholdsarbeid i løpet av %d minutter. "
+"Du vil da bli frakoblet, så vennligst avslutt eventuelle samtaler før det.\n"
 "\n"
 "Etter at vedlikeholdsarbeidet er ferdig, kan du logge på igjen."
 
-msgid "Message was not sent because the system is unavailable. This normally happens when the user is blocked or does not exist."
-msgstr "Beskjeden ble ikke sendt fordi system er utilgjengelig. Dette skjer normalt når brukeren er blokkert eller ikke eksisterer."
+msgid ""
+"Message was not sent because the system is unavailable. This normally "
+"happens when the user is blocked or does not exist."
+msgstr ""
+"Beskjeden ble ikke sendt fordi system er utilgjengelig. Dette skjer normalt "
+"når brukeren er blokkert eller ikke eksisterer."
 
 msgid "Message was not sent because messages are being sent too quickly."
 msgstr "Meldingen ble ikke sendt fordi meldinger blir sendt for raskt."
@@ -4992,7 +5393,8 @@
 msgstr "Du ble logget av fordi du har logget på et annet sted."
 
 msgid "The MSN servers are temporarily unavailable. Please wait and try again."
-msgstr "MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere."
+msgstr ""
+"MSN-tjenerene er midlertidig utilgjengelig.Vennligst prøv igjen senere."
 
 msgid "The MSN servers are going down temporarily."
 msgstr "MSN-tjenerne vil bli utilgjengelig en liten stund."
@@ -5001,8 +5403,11 @@
 msgid "Unable to authenticate: %s"
 msgstr "Klarte ikke autentisere: %s"
 
-msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
-msgstr "Din MSN-kontaktliste er midlertidig utilgjengelig. Vennligst prøv igjen senere."
+msgid ""
+"Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgstr ""
+"Din MSN-kontaktliste er midlertidig utilgjengelig. Vennligst prøv igjen "
+"senere."
 
 msgid "Handshaking"
 msgstr "Håndtrykk"
@@ -5035,7 +5440,8 @@
 msgstr "Meldingen ble kanskje ikke sendt, et tidsavbrudd inntraff:"
 
 msgid "Message could not be sent, not allowed while invisible:"
-msgstr "Meldingen ble ikke sendt, du ikke kan sende meldinger når du er usynlig:"
+msgstr ""
+"Meldingen ble ikke sendt, du ikke kan sende meldinger når du er usynlig:"
 
 msgid "Message could not be sent because the user is offline:"
 msgstr "Meldingen kunne ikke bli sendt, brukeren er frakoblet:"
@@ -5046,11 +5452,18 @@
 msgid "Message could not be sent because we are sending too quickly:"
 msgstr "Meldingen ble ikke sendt fordi vi sender for raskt:"
 
-msgid "Message could not be sent because we were unable to establish a session with the server. This is likely a server problem, try again in a few minutes:"
-msgstr "Beskjeden kunne ikke bli sendt fordi vi kunne ikke opprette en økt med serveren. Dette er sannsynligvis et server problem, prøv igjen om noen minutter:"
-
-msgid "Message could not be sent because an error with the switchboard occurred:"
-msgstr "Meldingen kunne ikke bli sendt, da det skjedde en feil med sentralbordet:"
+msgid ""
+"Message could not be sent because we were unable to establish a session with "
+"the server. This is likely a server problem, try again in a few minutes:"
+msgstr ""
+"Beskjeden kunne ikke bli sendt fordi vi kunne ikke opprette en økt med "
+"serveren. Dette er sannsynligvis et server problem, prøv igjen om noen "
+"minutter:"
+
+msgid ""
+"Message could not be sent because an error with the switchboard occurred:"
+msgstr ""
+"Meldingen kunne ikke bli sendt, da det skjedde en feil med sentralbordet:"
 
 msgid "Message may have not been sent because an unknown error occurred:"
 msgstr "Meldingen kunne ikke bli sendt på grunn av en ukjent feil:"
@@ -5142,10 +5555,18 @@
 msgstr "Lynmeldingsvenner"
 
 #, 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[0] "%d kontakt ble lagt til eller oppdatert fra serveren (inkludert kontakter allerede på tjenerside-listen)"
-msgstr[1] "%d kontakter ble lagt til eller oppdatert fra serveren (inkludert kontakter allerede på tjenerside-listen)"
+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[0] ""
+"%d kontakt ble lagt til eller oppdatert fra serveren (inkludert kontakter "
+"allerede på tjenerside-listen)"
+msgstr[1] ""
+"%d kontakter ble lagt til eller oppdatert fra serveren (inkludert kontakter "
+"allerede på tjenerside-listen)"
 
 msgid "Add contacts from server"
 msgstr "Ugyldig svar fra tjener"
@@ -5161,8 +5582,15 @@
 msgstr "Protokoll feil, kode %d: %s"
 
 #, c-format
-msgid "%s Your password is %d characters, greater than the expected maximum length of %d for MySpaceIM. Please shorten your password at http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try again."
-msgstr "%s Passordet ditt er på %d tegn. MySpaceIM godtar bare %d tegn. Gjør passordet ditt kortere på nettsiden http://profileedit.myspace.com/index.cfm?fuseaction=accountSettings.changePassword og prøv på nytt."
+msgid ""
+"%s Your password is %d characters, greater than the expected maximum length "
+"of %d for MySpaceIM. Please shorten your password at http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
+"again."
+msgstr ""
+"%s Passordet ditt er på %d tegn. MySpaceIM godtar bare %d tegn. Gjør "
+"passordet ditt kortere på nettsiden http://profileedit.myspace.com/index.cfm?"
+"fuseaction=accountSettings.changePassword og prøv på nytt."
 
 msgid "MySpaceIM Error"
 msgstr "MySpaceIM-feil"
@@ -5204,8 +5632,12 @@
 msgid "The RC4 cipher could not be found"
 msgstr "RC4 summeringen kunne ikke bli funnet"
 
-msgid "Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will not be loaded."
-msgstr "Oppgrader til en libpurple med RC4 støtte (>= 2.0.1). MySpaceIM tillegg vil ikke bli lastet."
+msgid ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"Oppgrader til en libpurple med RC4 støtte (>= 2.0.1). MySpaceIM tillegg vil "
+"ikke bli lastet."
 
 msgid "Add friends from MySpace.com"
 msgstr "Legg til venner fra MySpace.com"
@@ -5481,8 +5913,12 @@
 msgid "Could not recognize the host of the username you entered"
 msgstr "Klarte ikke kjenne igjen verten til det brukernavnet du tastet inn"
 
-msgid "Your account has been disabled because too many incorrect passwords were entered"
-msgstr "Kontoen din har blitt deaktivert på grunn av for mange ugyldige inntastede passord"
+msgid ""
+"Your account has been disabled because too many incorrect passwords were "
+"entered"
+msgstr ""
+"Kontoen din har blitt deaktivert på grunn av for mange ugyldige inntastede "
+"passord"
 
 msgid "You cannot add the same person twice to a conversation"
 msgstr "Du kan ikke legge til den samme personen to ganger til en samtale"
@@ -5502,8 +5938,11 @@
 msgid "The user has blocked you"
 msgstr "Brukeren har blokkert deg"
 
-msgid "This evaluation version does not allow more than ten users to log in at one time"
-msgstr "Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere"
+msgid ""
+"This evaluation version does not allow more than ten users to log in at one "
+"time"
+msgstr ""
+"Denne testversjonen tillater ikke mer enn ti samtidige innloggede brukere"
 
 msgid "The user is either offline or you are blocked"
 msgstr "Brukeren er enten frakoplet, eller så er du blokkert"
@@ -5535,19 +5974,28 @@
 
 #, c-format
 msgid "Unable to send message to %s. Could not create the conference (%s)."
-msgstr "Klarte ikke sende beskjed til %s. Klarte ikke sette opp konferansen (%s)."
+msgstr ""
+"Klarte ikke sende beskjed til %s. Klarte ikke sette opp konferansen (%s)."
 
 #, c-format
 msgid "Unable to send message. Could not create the conference (%s)."
 msgstr "Klarte ikke sende beskjed. Klarte ikke sette opp konferansen (%s)."
 
 #, c-format
-msgid "Unable to move user %s to folder %s in the server side list. Error while creating folder (%s)."
-msgstr "Klarte ikke flytte brukeren %s til mappe %s i lista på tjenersiden. En feil oppsto under opprettelse av mappe (%s)."
-
-#, c-format
-msgid "Unable to add %s to your buddy list. Error creating folder in server side list (%s)."
-msgstr "Klarte ikke legge til %s i kontaktlista. En feil oppsto under opprettelse i lista på tjenersiden (%s)."
+msgid ""
+"Unable to move user %s to folder %s in the server side list. Error while "
+"creating folder (%s)."
+msgstr ""
+"Klarte ikke flytte brukeren %s til mappe %s i lista på tjenersiden. En feil "
+"oppsto under opprettelse av mappe (%s)."
+
+#, c-format
+msgid ""
+"Unable to add %s to your buddy list. Error creating folder in server side "
+"list (%s)."
+msgstr ""
+"Klarte ikke legge til %s i kontaktlista. En feil oppsto under opprettelse i "
+"lista på tjenersiden (%s)."
 
 #, c-format
 msgid "Could not get details for user %s (%s)."
@@ -5636,20 +6084,27 @@
 msgstr "Ønsker du å bli med i samtalen?"
 
 msgid "You have been logged out because you logged in at another workstation."
-msgstr "Du ble logget av fordi du har logget på med dette skjermnavnet et annet sted."
-
-#, c-format
-msgid "%s appears to be offline and did not receive the message that you just sent."
+msgstr ""
+"Du ble logget av fordi du har logget på med dette skjermnavnet et annet sted."
+
+#, c-format
+msgid ""
+"%s appears to be offline and did not receive the message that you just sent."
 msgstr "%s ser ut til å være  frakoplet, og mottok ikke meldingen du sendte."
 
-msgid "Unable to connect to server. Please enter the address of the server you wish to connect to."
-msgstr "Klarte ikke kople til tjener, skriv inn adressen til tjeneren du ønsker å kople til."
+msgid ""
+"Unable to connect to server. Please enter the address of the server you wish "
+"to connect to."
+msgstr ""
+"Klarte ikke kople til tjener, skriv inn adressen til tjeneren du ønsker å "
+"kople til."
 
 msgid "Error. SSL support is not installed."
 msgstr "Feil: SSL-støtte er ikke installert."
 
 msgid "This conference has been closed. No more messages can be sent."
-msgstr "Denne konferansen har blitt stengt, ingen flere meldinger kan bli sendt."
+msgstr ""
+"Denne konferansen har blitt stengt, ingen flere meldinger kan bli sendt."
 
 #. *< type
 #. *< ui_requirement
@@ -5742,8 +6197,12 @@
 msgstr "Direkte lynmelding opprettet"
 
 #, c-format
-msgid "%s tried to send you a %s file, but we only allow files up to %s over Direct IM.  Try using file transfer instead.\n"
-msgstr "%s prøvde å sende deg en %s fil, men vi tillater kun filer opp til %s over Direct IM. Prøv å bruke filoverføring istedenfor.\n"
+msgid ""
+"%s tried to send you a %s file, but we only allow files up to %s over Direct "
+"IM.  Try using file transfer instead.\n"
+msgstr ""
+"%s prøvde å sende deg en %s fil, men vi tillater kun filer opp til %s over "
+"Direct IM. Prøv å bruke filoverføring istedenfor.\n"
 
 #, c-format
 msgid "File %s is %s, which is larger than the maximum size of %s."
@@ -5821,12 +6280,24 @@
 msgid "Not while on AOL"
 msgstr "Ikke mens du er på AOL"
 
-msgid "(There was an error receiving this message.  The buddy you are speaking with is probably using a different encoding than expected.  If you know what encoding he is using, you can specify it in the advanced account options for your AIM/ICQ account.)"
-msgstr "(Det oppsto en feil i mottak av denne beskjeden.  Kontakten du snakker med bruker sannsynligvis en annen koding enn forventet.  Om du vet hvilken koding han bruker, kan du spesifisere dette i avanserte kontoinstillinger for din AIM/ICQ konto.)"
-
-#, c-format
-msgid "(There was an error receiving this message.  Either you and %s have different encodings selected, or %s has a buggy client.)"
-msgstr "(Det oppstod en feil under mottaket av denne beskjeden. Enten har du og %s valgt ulike tegnkoding, eller så bruker %s en klient med feil i.)"
+msgid ""
+"(There was an error receiving this message.  The buddy you are speaking with "
+"is probably using a different encoding than expected.  If you know what "
+"encoding he is using, you can specify it in the advanced account options for "
+"your AIM/ICQ account.)"
+msgstr ""
+"(Det oppsto en feil i mottak av denne beskjeden.  Kontakten du snakker med "
+"bruker sannsynligvis en annen koding enn forventet.  Om du vet hvilken "
+"koding han bruker, kan du spesifisere dette i avanserte kontoinstillinger "
+"for din AIM/ICQ konto.)"
+
+#, c-format
+msgid ""
+"(There was an error receiving this message.  Either you and %s have "
+"different encodings selected, or %s has a buggy client.)"
+msgstr ""
+"(Det oppstod en feil under mottaket av denne beskjeden. Enten har du og %s "
+"valgt ulike tegnkoding, eller så bruker %s en klient med feil i.)"
 
 #. Label
 msgid "Buddy Icon"
@@ -5946,8 +6417,15 @@
 msgstr "Fullfører tilkobling"
 
 #, c-format
-msgid "Unable to login: Could not sign on as %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
-msgstr "Får ikke til å logge inn: Klarte ikke logge på som %s fordi brukernavnet er ugyldig. Brukernavn må være en gyldig e-postadresse, eller begynna med en bokstav og bare inneholde bokstaver, tall og mellomrom, eller bare inneholde tall."
+msgid ""
+"Unable to login: Could not sign on as %s because the username is invalid.  "
+"Usernames must be a valid email address, or start with a letter and contain "
+"only letters, numbers and spaces, or contain only numbers."
+msgstr ""
+"Får ikke til å logge inn: Klarte ikke logge på som %s fordi brukernavnet er "
+"ugyldig. Brukernavn må være en gyldig e-postadresse, eller begynna med en "
+"bokstav og bare inneholde bokstaver, tall og mellomrom, eller bare inneholde "
+"tall."
 
 #. Unregistered screen name
 #. uid is not exist
@@ -5967,8 +6445,12 @@
 
 #. screen name connecting too frequently
 #. IP address connecting too frequently
-msgid "You have been connecting and disconnecting too frequently. Wait ten minutes and try again. If you continue to try, you will need to wait even longer."
-msgstr "Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
+msgid ""
+"You have been connecting and disconnecting too frequently. Wait ten minutes "
+"and try again. If you continue to try, you will need to wait even longer."
+msgstr ""
+"Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. "
+"Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
 
 #, c-format
 msgid "The client version you are using is too old. Please upgrade at %s"
@@ -5997,7 +6479,9 @@
 
 #, c-format
 msgid "You may be disconnected shortly.  If so, check %s for updates."
-msgstr "Du kan bli frakoblet ganske snart. Hvis det skjer, sjekk %s for oppdateringer."
+msgstr ""
+"Du kan bli frakoblet ganske snart. Hvis det skjer, sjekk %s for "
+"oppdateringer."
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "Klarte ikke å motta gyldig AIM-påloggingshash."
@@ -6016,7 +6500,8 @@
 msgstr "Klarte ikke lage ny tilkobling"
 
 msgid "Please authorize me so I can add you to my buddy list."
-msgstr "Vennligst godkjenn meg slik at jeg kan legge deg til i kontaktlisten min."
+msgstr ""
+"Vennligst godkjenn meg slik at jeg kan legge deg til i kontaktlisten min."
 
 msgid "Authorization Request Message:"
 msgstr "Beskjed i godkjenningsforespørsel:"
@@ -6032,10 +6517,12 @@
 
 #, c-format
 msgid ""
-"The user %u has denied your request to add them to your buddy list for the following reason:\n"
+"The user %u has denied your request to add them to your buddy list for the "
+"following reason:\n"
 "%s"
 msgstr ""
-"Brukeren %u har avslått din forespørsel om å bli lagt til i din kontaktliste med følgende grunn:\n"
+"Brukeren %u har avslått din forespørsel om å bli lagt til i din kontaktliste "
+"med følgende grunn:\n"
 "%s"
 
 msgid "ICQ authorization denied."
@@ -6044,7 +6531,9 @@
 #. Someone has granted you authorization
 #, c-format
 msgid "The user %u has granted your request to add them to your buddy list."
-msgstr "Brukeren %u har godtatt din forespørsel om å bli lagt til i kontaktlisten din."
+msgstr ""
+"Brukeren %u har godtatt din forespørsel om å bli lagt til i kontaktlisten "
+"din."
 
 #, c-format
 msgid ""
@@ -6108,22 +6597,37 @@
 msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi de var for store."
 
 #, c-format
-msgid "You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded."
-msgstr[0] "Du har gått glipp av %hu beskjed fra %s fordi hastighetsgrensen har blitt overskredet."
-msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi hastighetsgrensen har blitt overskredet."
-
-#, c-format
-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] "Du har gått glipp av %hu beskjed fra %s fordi hans/hennes advarselsnivå er for høyt."
-msgstr[1] "Du har gått glipp av %hu beskjeder fra %s fordi hans/hennes advarselsnivå er for høyt."
+msgid ""
+"You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural ""
+"You missed %hu messages from %s because the rate limit has been exceeded."
+msgstr[0] ""
+"Du har gått glipp av %hu beskjed fra %s fordi hastighetsgrensen har blitt "
+"overskredet."
+msgstr[1] ""
+"Du har gått glipp av %hu beskjeder fra %s fordi hastighetsgrensen har blitt "
+"overskredet."
+
+#, c-format
+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] ""
+"Du har gått glipp av %hu beskjed fra %s fordi hans/hennes advarselsnivå er "
+"for høyt."
+msgstr[1] ""
+"Du har gått glipp av %hu beskjeder fra %s fordi hans/hennes advarselsnivå er "
+"for høyt."
 
 #, 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] "Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt."
-msgstr[1] "Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt."
+msgid_plural ""
+"You missed %hu messages from %s because your warning level is too high."
+msgstr[0] ""
+"Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt."
+msgstr[1] ""
+"Du har gått glipp av %hu beskjed fra %s fordi ditt advarselsnivå er for høyt."
 
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
@@ -6160,11 +6664,19 @@
 msgstr "AIM-tilkoblingen kan være brutt."
 
 #. The conversion failed!
-msgid "[Unable to display a message from this user because it contained invalid characters.]"
-msgstr "[Klarte ikke vise en melding fra denne brukeren da den inneholdt ugyldige tegn.]"
-
-msgid "The last action you attempted could not be performed because you are over the rate limit. Please wait 10 seconds and try again."
-msgstr "Den siste kommandoen ble ikke utført fordi du har overskredet hastighetsgrensen. Vennligst vent 10 sekunder og prøv igjen."
+msgid ""
+"[Unable to display a message from this user because it contained invalid "
+"characters.]"
+msgstr ""
+"[Klarte ikke vise en melding fra denne brukeren da den inneholdt ugyldige "
+"tegn.]"
+
+msgid ""
+"The last action you attempted could not be performed because you are over "
+"the rate limit. Please wait 10 seconds and try again."
+msgstr ""
+"Den siste kommandoen ble ikke utført fordi du har overskredet "
+"hastighetsgrensen. Vennligst vent 10 sekunder og prøv igjen."
 
 #, c-format
 msgid "You have been disconnected from chat room %s."
@@ -6217,28 +6729,48 @@
 msgstr "Kontobekreftelse forespurt"
 
 #, c-format
-msgid "Error 0x%04x: Unable to format username because the requested name differs from the original."
-msgstr "Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet er forskjellig fra det opprinnelige."
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name differs "
+"from the original."
+msgstr ""
+"Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet "
+"er forskjellig fra det opprinnelige."
 
 #, c-format
 msgid "Error 0x%04x: Unable to format username because it is invalid."
 msgstr "Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det er ugyldig."
 
 #, c-format
-msgid "Error 0x%04x: Unable to format username because the requested name is too long."
-msgstr "Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet er for langt."
-
-#, c-format
-msgid "Error 0x%04x: Unable to change email address because there is already a request pending for this username."
-msgstr "Feil 0x%04x: Klarte ikke endre e-postadressen fordi det finnes en pågående forespørsel for dette brukernavnet."
-
-#, c-format
-msgid "Error 0x%04x: Unable to change email address because the given address has too many usernames associated with it."
-msgstr "Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen har for mange brukernavn assosiert ved seg."
-
-#, c-format
-msgid "Error 0x%04x: Unable to change email address because the given address is invalid."
-msgstr "Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen er ugyldig."
+msgid ""
+"Error 0x%04x: Unable to format username because the requested name is too "
+"long."
+msgstr ""
+"Feil 0x%04x: Klarte ikke formatere brukernavnet fordi det forespurte navnet "
+"er for langt."
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because there is already a "
+"request pending for this username."
+msgstr ""
+"Feil 0x%04x: Klarte ikke endre e-postadressen fordi det finnes en pågående "
+"forespørsel for dette brukernavnet."
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address has "
+"too many usernames associated with it."
+msgstr ""
+"Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen har "
+"for mange brukernavn assosiert ved seg."
+
+#, c-format
+msgid ""
+"Error 0x%04x: Unable to change email address because the given address is "
+"invalid."
+msgstr ""
+"Feil 0x%04x: Klarte ikke endre e-postadressen fordi den gitte adressen er "
+"ugyldig."
 
 #, c-format
 msgid "Error 0x%04x: Unknown error."
@@ -6254,36 +6786,67 @@
 msgid "Account Info"
 msgstr "Kontoinformasjon"
 
-msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
-msgstr "Ditt direktemeldingsbilde ble ikke sendt. Du må være direkte tilkoblet for å sende direktemeldingsbilder."
+msgid ""
+"Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgstr ""
+"Ditt lynmeldingsbilde ble ikke sendt. Du må være direkte tilkoblet for å "
+"sende lynmeldingsbilder."
 
 msgid "Unable to set AIM profile."
 msgstr "Klarte ikke sette AIM-profil."
 
-msgid "You have probably requested to set your profile before the login procedure completed.  Your profile remains unset; try setting it again when you are fully connected."
-msgstr "Du har antakeligvis prøvd å lagre profilinformasjon før innloggingsprosedyren var ferdig. Din profil er ennå ikke blitt lagret. Prøv å lagre den igjen når du er ferdig pålogget."
-
-#, c-format
-msgid "The maximum profile length of %d byte has been exceeded.  It has been truncated for you."
-msgid_plural "The maximum profile length of %d bytes has been exceeded.  It has been truncated for you."
-msgstr[0] "Maksimum profillengde på %d byte har blitt overskredet. Pidgin har avkortet den før den ble lagret."
-msgstr[1] "Maksimum profillengde på %d bytes har blitt overskredet. Pidgin har avkortet den før den ble lagret."
+msgid ""
+"You have probably requested to set your profile before the login procedure "
+"completed.  Your profile remains unset; try setting it again when you are "
+"fully connected."
+msgstr ""
+"Du har antakeligvis prøvd å lagre profilinformasjon før "
+"innloggingsprosedyren var ferdig. Din profil er ennå ikke blitt lagret. Prøv "
+"å lagre den igjen når du er ferdig pålogget."
+
+#, c-format
+msgid ""
+"The maximum profile length of %d byte has been exceeded.  It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum profile length of %d bytes has been exceeded.  It has been "
+"truncated for you."
+msgstr[0] ""
+"Maksimum profillengde på %d byte har blitt overskredet. Pidgin har avkortet "
+"den før den ble lagret."
+msgstr[1] ""
+"Maksimum profillengde på %d bytes har blitt overskredet. Pidgin har avkortet "
+"den før den ble lagret."
 
 msgid "Profile too long."
 msgstr "Profilen er for stor."
 
 #, c-format
-msgid "The maximum away message length of %d byte has been exceeded.  It has been truncated for you."
-msgid_plural "The maximum away message length of %d bytes has been exceeded.  It has been truncated for you."
-msgstr[0] "Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. Pidgin har avkortet den."
-msgstr[1] "Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. Pidgin har avkortet den."
+msgid ""
+"The maximum away message length of %d byte has been exceeded.  It has been "
+"truncated for you."
+msgid_plural ""
+"The maximum away message length of %d bytes has been exceeded.  It has been "
+"truncated for you."
+msgstr[0] ""
+"Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. "
+"Pidgin har avkortet den."
+msgstr[1] ""
+"Maksimumslengden på %d bytes for fraværsbeskjeder har blitt overskredet. "
+"Pidgin har avkortet den."
 
 msgid "Away message too long."
 msgstr "Fraværsbeskjeden er for lang."
 
 #, c-format
-msgid "Could not add the buddy %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."
-msgstr "Klarte ikke legge til kontakten %s fordi brukernavnet er ugyldig. Brukernavn må enten være en gyldig e-postadresse eller starte med en bokstav og inneholde kun bokstaver, tall og mellomrom, eller bare inneholde nummer."
+msgid ""
+"Could not add the buddy %s because the username is invalid.  Usernames must "
+"be a valid email address, or start with a letter and contain only letters, "
+"numbers and spaces, or contain only numbers."
+msgstr ""
+"Klarte ikke legge til kontakten %s fordi brukernavnet er ugyldig. Brukernavn "
+"må enten være en gyldig e-postadresse eller starte med en bokstav og "
+"inneholde kun bokstaver, tall og mellomrom, eller bare inneholde nummer."
 
 msgid "Unable to Add"
 msgstr "Klarte ikke legge til"
@@ -6291,15 +6854,23 @@
 msgid "Unable to Retrieve Buddy List"
 msgstr "Klarte ikke hente kontaktliste"
 
-msgid "The AIM servers were temporarily unable to send your buddy list.  Your buddy list is not lost, and will probably become available in a few minutes."
-msgstr "Klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få minutter."
+msgid ""
+"The AIM servers were temporarily unable to send your buddy list.  Your buddy "
+"list is not lost, and will probably become available in a few minutes."
+msgstr ""
+"Klarte ikke å hente kontaktlisten din fra AIM-tjenerne. Kontaktlisten er "
+"ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet av få minutter."
 
 msgid "Orphans"
 msgstr "Ugrupperte"
 
 #, c-format
-msgid "Could not add the buddy %s because you have too many buddies in your buddy list.  Please remove one and try again."
-msgstr "Klarte ikke legge til kontakten %s fordi du har for mange kontakter i listen. Vennligst fjern en og prøv igjen."
+msgid ""
+"Could not add the buddy %s because you have too many buddies in your buddy "
+"list.  Please remove one and try again."
+msgstr ""
+"Klarte ikke legge til kontakten %s fordi du har for mange kontakter i "
+"listen. Vennligst fjern en og prøv igjen."
 
 msgid "(no name)"
 msgstr "(uten navn)"
@@ -6309,8 +6880,12 @@
 msgstr "Klarte ikke legge til kontakten %s pga ukjent årsak."
 
 #, c-format
-msgid "The user %s has given you permission to add him or her to your buddy list.  Do you want to add this user?"
-msgstr "Brukeren %s har gitt deg tillatelse til å legge han eller henne til i kontaktlisten din. Ønsker du å legge til denne brukeren?"
+msgid ""
+"The user %s has given you permission to add him or her to your buddy list.  "
+"Do you want to add this user?"
+msgstr ""
+"Brukeren %s har gitt deg tillatelse til å legge han eller henne til i "
+"kontaktlisten din. Ønsker du å legge til denne brukeren?"
 
 msgid "Authorization Given"
 msgstr "Godkjent"
@@ -6318,7 +6893,9 @@
 #. Granted
 #, c-format
 msgid "The user %s has granted your request to add them to your buddy list."
-msgstr "Brukeren %s har akseptert din forespørsel om å bli lagt til i kontaktlisten din."
+msgstr ""
+"Brukeren %s har akseptert din forespørsel om å bli lagt til i kontaktlisten "
+"din."
 
 msgid "Authorization Granted"
 msgstr "Godkjent"
@@ -6326,10 +6903,12 @@
 #. Denied
 #, c-format
 msgid ""
-"The user %s has denied your request to add them to your buddy list for the following reason:\n"
+"The user %s has denied your request to add them to your buddy list for the "
+"following reason:\n"
 "%s"
 msgstr ""
-"Brukeren %s har avslått din forespørsel om å bli lagt til i din kontaktliste med følgende grun:\n"
+"Brukeren %s har avslått din forespørsel om å bli lagt til i din kontaktliste "
+"med følgende grun:\n"
 "%s"
 
 msgid "Authorization Denied"
@@ -6339,7 +6918,9 @@
 msgstr "_Utveksling:"
 
 msgid "Your IM Image was not sent. You cannot send IM Images in AIM chats."
-msgstr "Ditt direktemeldingsbilde ble ikke sendt. Du kan ikke sende direktemeldingsbilder i AIM-samtalegrupper."
+msgstr ""
+"Ditt lynmeldingsbilde ble ikke sendt. Du kan ikke sende "
+"lynmeldingsbilder i AIM-samtalegrupper."
 
 msgid "iTunes Music Store Link"
 msgstr "iTunes Music Store Link"
@@ -6353,10 +6934,14 @@
 
 #, c-format
 msgid "You have selected to open a Direct IM connection with %s."
-msgstr "Du har valgt å åpne en direktemelding til %s."
-
-msgid "Because this reveals your IP address, it may be considered a security risk.  Do you wish to continue?"
-msgstr "Fordi dette avslører IP-adressen din, kan det betraktes som en (minimal) sikkerhetsrisiko. Ønsker du å fortsette?"
+msgstr "Du har valgt å åpne en lynmelding til %s."
+
+msgid ""
+"Because this reveals your IP address, it may be considered a security risk.  "
+"Do you wish to continue?"
+msgstr ""
+"Fordi dette avslører IP-adressen din, kan det betraktes som en (minimal) "
+"sikkerhetsrisiko. Ønsker du å fortsette?"
 
 msgid "C_onnect"
 msgstr "K_oble til"
@@ -6390,7 +6975,8 @@
 msgstr "Den nye formateringen er ugyldig."
 
 msgid "Username formatting can change only capitalization and whitespace."
-msgstr "Brukernavn-formatering kan bare endre på store/små bokstaver og mellomrom."
+msgstr ""
+"Brukernavn-formatering kan bare endre på store/små bokstaver og mellomrom."
 
 msgid "Change Address To:"
 msgstr "Endre adresse til:"
@@ -6401,8 +6987,12 @@
 msgid "You are awaiting authorization from the following buddies"
 msgstr "Du venter på godkjenning fra disse kontaktene"
 
-msgid "You can re-request authorization from these buddies by right-clicking on them and selecting \"Re-request Authorization.\""
-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»."
+msgid ""
+"You can re-request authorization from these buddies by right-clicking on "
+"them and selecting \"Re-request Authorization.\""
+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»."
 
 msgid "Find Buddy by Email"
 msgstr "Finn kontakt utifra e-post"
@@ -6427,7 +7017,7 @@
 
 #. ICQ actions
 msgid "Set Privacy Options..."
-msgstr "Sett Privatliv Instillinger..."
+msgstr "Sett personvernvalg"
 
 #. AIM actions
 msgid "Confirm Account"
@@ -6475,8 +7065,14 @@
 msgid "%s has just asked to directly connect to %s"
 msgstr "%s har akkurat spurt om direkte tilkobling til %s"
 
-msgid "This requires a direct connection between the two computers and is necessary for IM Images.  Because your IP address will be revealed, this may be considered a privacy risk."
-msgstr "Dette krever at det opprettes en direkte tilkobling mellom de to datamaskinene, men er nødvendig for å sende bilder. Dette kan være en (minimal) sikkerhetsrisiko fordi mottakeren da ser IP-adressen din."
+msgid ""
+"This requires a direct connection between the two computers and is necessary "
+"for IM Images.  Because your IP address will be revealed, this may be "
+"considered a privacy risk."
+msgstr ""
+"Dette krever at det opprettes en direkte tilkobling mellom de to "
+"datamaskinene, men er nødvendig for å sende bilder. Dette kan være en "
+"(minimal) sikkerhetsrisiko fordi mottakeren da ser IP-adressen din."
 
 msgid "Aquarius"
 msgstr "Vannmannen"
@@ -6940,6 +7536,9 @@
 msgid "<p><b>Acknowledgement</b>:<br>\n"
 msgstr "<p><b>Takk til</b>:<br>\n"
 
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Nøyaktige testere</b>:<br>\n"
+
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr "<p><i>Og, alle guttene på bakrommet ...</i><br>\n"
 
@@ -6965,6 +7564,9 @@
 msgid "About OpenQ"
 msgstr "Om OpenQ"
 
+msgid "Modify Buddy Memo"
+msgstr "Endre kontaktmemo"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -7003,6 +7605,9 @@
 msgid "Show server news"
 msgstr "Vis tjenernytt"
 
+msgid "Show chat room when msg comes"
+msgstr "Vis praterommet når meldinga kommer"
+
 msgid "Keep alive interval (seconds)"
 msgstr "Intervall vedlikeholdstilkobling (sekund)"
 
@@ -7218,7 +7823,8 @@
 msgstr "Starter tjenester"
 
 #, c-format
-msgid "A Sametime administrator has issued the following announcement on server %s"
+msgid ""
+"A Sametime administrator has issued the following announcement on server %s"
 msgstr "En Sametime administrator har satt følgende kunngjøring på tjeneren %s"
 
 msgid "Sametime Administrator Announcement"
@@ -7268,8 +7874,12 @@
 msgstr "Opprett konferanse med bruker"
 
 #, c-format
-msgid "Please enter a topic for the new conference, and an invitation message to be sent to %s"
-msgstr "Vennligst sett topic for en ny konferanse, og en invitasjons beskjed vil bli sendt til %s"
+msgid ""
+"Please enter a topic for the new conference, and an invitation message to be "
+"sent to %s"
+msgstr ""
+"Vennligst sett topic for en ny konferanse, og en invitasjons beskjed vil bli "
+"sendt til %s"
 
 msgid "New Conference"
 msgstr "Ny konferanse"
@@ -7287,8 +7897,14 @@
 msgstr "Inviter bruker til en konferanse"
 
 #, c-format
-msgid "Select a conference from the list below to send an invite to user %s. Select \"Create New Conference\" if you'd like to create a new conference to invite this user to."
-msgstr "Velg en konferanse fra listen under for å sende en invitasjon til bruker %s. Velg \"Start Ny Konferanse\" om du vil starte en ny konferanse og invitere denne brukeren til."
+msgid ""
+"Select a conference from the list below to send an invite to user %s. Select "
+"\"Create New Conference\" if you'd like to create a new conference to invite "
+"this user to."
+msgstr ""
+"Velg en konferanse fra listen under for å sende en invitasjon til bruker %s. "
+"Velg \"Start Ny Konferanse\" om du vil starte en ny konferanse og invitere "
+"denne brukeren til."
 
 msgid "Invite to Conference"
 msgstr "Innviter til Konferanse"
@@ -7306,8 +7922,12 @@
 msgstr "Ingen Sametime fellesskapstjener oppgitt "
 
 #, c-format
-msgid "No host or IP address has been configured for the Meanwhile account %s. Please enter one below to continue logging in."
-msgstr "Ingen vert eller IP adresse har blitt konfigurert for Meanwhile kontoen %s. Skriv inn en under for å fortsette innloggingen."
+msgid ""
+"No host or IP address has been configured for the Meanwhile account %s. "
+"Please enter one below to continue logging in."
+msgstr ""
+"Ingen vert eller IP adresse har blitt konfigurert for Meanwhile kontoen %s. "
+"Skriv inn en under for å fortsette innloggingen."
 
 msgid "Meanwhile Connection Setup"
 msgstr "Meanwhile tilkoblingsinnstillinger"
@@ -7335,8 +7955,12 @@
 msgstr "En ugyldig bruker ID ble skrevet"
 
 #, c-format
-msgid "The identifier '%s' may possibly refer to any of the following users. Please select the correct user from the list below to add them to your buddy list."
-msgstr "Men enn en bruker ble funnet med det samme navnet %s. Velg den korrekte brukeren fra lista for å legge til kontaktlista."
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. Please "
+"select the correct user from the list below to add them to your buddy list."
+msgstr ""
+"Men enn en bruker ble funnet med det samme navnet %s. Velg den korrekte "
+"brukeren fra lista for å legge til kontaktlista."
 
 msgid "Select User"
 msgstr "Velg bruker"
@@ -7345,8 +7969,12 @@
 msgstr "Klarte ikke legge til bruker - bruker ikke funnet"
 
 #, c-format
-msgid "The identifier '%s' did not match any users in your Sametime community. This entry has been removed from your buddy list."
-msgstr "Brukeren %s matchet ikke noen av brukerne i ditt Sametime nettverk. Denne oppføringen har blitt fjernet fra kontaktlisten din."
+msgid ""
+"The identifier '%s' did not match any users in your Sametime community. This "
+"entry has been removed from your buddy list."
+msgstr ""
+"Brukeren %s matchet ikke noen av brukerne i ditt Sametime nettverk. Denne "
+"oppføringen har blitt fjernet fra kontaktlisten din."
 
 #, c-format
 msgid ""
@@ -7399,8 +8027,14 @@
 msgstr "Noterer Adressebok resultater for gruppe"
 
 #, c-format
-msgid "The identifier '%s' may possibly refer to any of the following Notes Address Book groups. Please select the correct group from the list below to add it to your buddy list."
-msgstr "'%s' kan referere til hvilken som helst av Notat Adressebok gruppene. Vennligst velg den rette gruppen fra listen under for å legge den til i kontaktlisten din."
+msgid ""
+"The identifier '%s' may possibly refer to any of the following Notes Address "
+"Book groups. Please select the correct group from the list below to add it "
+"to your buddy list."
+msgstr ""
+"'%s' kan referere til hvilken som helst av Notat Adressebok gruppene. "
+"Vennligst velg den rette gruppen fra listen under for å legge den til i "
+"kontaktlisten din."
 
 msgid "Select Notes Address Book"
 msgstr "Velg Notes adressebok"
@@ -7409,22 +8043,35 @@
 msgstr "Klarte ikke legge til gruppe: gruppa finnes ikke"
 
 #, c-format
-msgid "The identifier '%s' did not match any Notes Address Book groups in your Sametime community."
-msgstr "'%s' matchet inne noen Notat Adressebok gruppe i ditt Sametime nettverk."
+msgid ""
+"The identifier '%s' did not match any Notes Address Book groups in your "
+"Sametime community."
+msgstr ""
+"'%s' matchet inne noen Notat Adressebok gruppe i ditt Sametime nettverk."
 
 msgid "Notes Address Book Group"
 msgstr "Notes adressebokgruppe"
 
-msgid "Enter the name of a Notes Address Book group in the field below to add the group and its members to your buddy list."
-msgstr "Skriv inn navnet på en Notat Adressebok gruppe i feltet nedenfor, for å legge til gruppen og dens medlemmer til kontaktlisten din."
+msgid ""
+"Enter the name of a Notes Address Book group in the field below to add the "
+"group and its members to your buddy list."
+msgstr ""
+"Skriv inn navnet på en Notat Adressebok gruppe i feltet nedenfor, for å "
+"legge til gruppen og dens medlemmer til kontaktlisten din."
 
 #, c-format
 msgid "Search results for '%s'"
 msgstr "Søkeresultater for «%s»"
 
 #, c-format
-msgid "The identifier '%s' may possibly refer to any of the following users. You may add these users to your buddy list or send them messages with the action buttons below."
-msgstr "'%s' kan referere til hvilken som helst av de følgende brukerne. Du kan legge til disse brukerne til kontaktlisten din eller sende dem beskjeder med handlings knappene under."
+msgid ""
+"The identifier '%s' may possibly refer to any of the following users. You "
+"may add these users to your buddy list or send them messages with the action "
+"buttons below."
+msgstr ""
+"'%s' kan referere til hvilken som helst av de følgende brukerne. Du kan "
+"legge til disse brukerne til kontaktlisten din eller sende dem beskjeder med "
+"handlings knappene under."
 
 msgid "Search Results"
 msgstr "Søkeresultater"
@@ -7443,8 +8090,12 @@
 msgid "Search for a user"
 msgstr "Søk etter en bruker"
 
-msgid "Enter a name or partial ID in the field below to search for matching users in your Sametime community."
-msgstr "Skriv inn et navn eller delvis ID i feltet under for å søke etter matchende brukere i ditt Sametime nettverk."
+msgid ""
+"Enter a name or partial ID in the field below to search for matching users "
+"in your Sametime community."
+msgstr ""
+"Skriv inn et navn eller delvis ID i feltet under for å søke etter matchende "
+"brukere i ditt Sametime nettverk."
 
 msgid "User Search"
 msgstr "Bruker Søk"
@@ -7500,8 +8151,11 @@
 msgstr "Fjerntliggende bruker kan ikke nås over nettverket lenger"
 
 #, c-format
-msgid "Key agreement request received from %s. Would you like to perform the key agreement?"
-msgstr "Nøkkelavtaleforespørsel motatt fra %s. Ønsker du å gjennomføre nøkkelavtalen?"
+msgid ""
+"Key agreement request received from %s. Would you like to perform the key "
+"agreement?"
+msgstr ""
+"Nøkkelavtaleforespørsel motatt fra %s. Ønsker du å gjennomføre nøkkelavtalen?"
 
 #, c-format
 msgid ""
@@ -7517,13 +8171,13 @@
 msgstr "Nøkkelavtaleforespørsel"
 
 msgid "IM With Password"
-msgstr "Direktemelding med passord"
+msgstr "Lynmelding med passord"
 
 msgid "Cannot set IM key"
-msgstr "Klarer ikke sette direktemeldingsnøkkel"
+msgstr "Klarer ikke sette lynmeldingsnøkkel"
 
 msgid "Set IM Password"
-msgstr "Sett direktemeldingspassord"
+msgstr "Sett lynmeldingspassord"
 
 msgid "Get Public Key"
 msgstr "Hent offentlig nøkkel"
@@ -7547,8 +8201,13 @@
 msgid "The %s buddy is not trusted"
 msgstr "Ikke tillit til kontakten %s"
 
-msgid "You cannot receive buddy notifications until you import his/her public key.  You can use the Get Public Key command to get the public key."
-msgstr "Du kan ikke motta kontaktvarslinger før du importerer hans/hennes offentlige nøkkel. Du kan bruke Hent offentlig nøkkel-kommandoen for å få den offentlige nøkkelen."
+msgid ""
+"You cannot receive buddy notifications until you import his/her public key.  "
+"You can use the Get Public Key command to get the public key."
+msgstr ""
+"Du kan ikke motta kontaktvarslinger før du importerer hans/hennes offentlige "
+"nøkkel. Du kan bruke Hent offentlig nøkkel-kommandoen for å få den "
+"offentlige nøkkelen."
 
 #. Open file selector to select the public key.
 msgid "Open..."
@@ -7558,8 +8217,12 @@
 msgid "The %s buddy is not present in the network"
 msgstr "Kontakten %s er ikke tilgjengelig på nettverket"
 
-msgid "To add the buddy you must import his/her public key. Press Import to import a public key."
-msgstr "For å legge til kontakten må du importere hans/hennes offentlige nøkkel. Trykk Import for å importere en offentlig nøkkel."
+msgid ""
+"To add the buddy you must import his/her public key. Press Import to import "
+"a public key."
+msgstr ""
+"For å legge til kontakten må du importere hans/hennes offentlige nøkkel. "
+"Trykk Import for å importere en offentlig nøkkel."
 
 msgid "_Import..."
 msgstr "_Importer..."
@@ -7567,11 +8230,19 @@
 msgid "Select correct user"
 msgstr "Velg korrekt bruker"
 
-msgid "More than one user was found with the same public key. Select the correct user from the list to add to the buddy list."
-msgstr "Mer enn en bruker ble funnet med den samme offentlige nøkkelen. Velg den korrekte brukeren fra lista for å legge til kontaktlista."
-
-msgid "More than one user was found with the same name. Select the correct user from the list to add to the buddy list."
-msgstr "Men enn en bruker ble funnet med det samme navnet. Velg den korrekte brukeren fra lista for å legge til kontaktlista."
+msgid ""
+"More than one user was found with the same public key. Select the correct "
+"user from the list to add to the buddy list."
+msgstr ""
+"Mer enn en bruker ble funnet med den samme offentlige nøkkelen. Velg den "
+"korrekte brukeren fra lista for å legge til kontaktlista."
+
+msgid ""
+"More than one user was found with the same name. Select the correct user "
+"from the list to add to the buddy list."
+msgstr ""
+"Men enn en bruker ble funnet med det samme navnet. Velg den korrekte "
+"brukeren fra lista for å legge til kontaktlista."
 
 msgid "Detached"
 msgstr "Løsnet"
@@ -7642,13 +8313,13 @@
 msgstr "Sted"
 
 msgid "Reset IM Key"
-msgstr "Nullstill direktemeldingsnøkkel"
+msgstr "Nullstill lynmeldingsnøkkel"
 
 msgid "IM with Key Exchange"
-msgstr "Direktemelding med nøkkelsentral"
+msgstr "Lynmelding med nøkkelsentral"
 
 msgid "IM with Password"
-msgstr "Direktemelding med passord"
+msgstr "Lynmelding med passord"
 
 msgid "Get Public Key..."
 msgstr "Hent offentlig nøkkel ..."
@@ -7698,6 +8369,7 @@
 msgid "<br><b>Channel Topic:</b><br>%s"
 msgstr "<br><b>Kanaltema:</b><br> %s"
 
+#, c-format
 msgid "<br><b>Channel Modes:</b> "
 msgstr "<br><b>Kanaltilstander:</b> "
 
@@ -7722,8 +8394,19 @@
 msgid "Channel Public Keys List"
 msgstr "Liste over kanalen sine offentlige nøkler"
 
-msgid "Channel authentication is used to secure the channel from unauthorized access. The authentication may be based on passphrase and digital signatures. If passphrase is set, it is required to be able to join. If channel public keys are set then only users whose public keys are listed are able to join."
-msgstr "Kanalgodkjenning er brukt for å sikre kanalen fra uautorisert tilgang. Autentifikasjonen kan være basert på en nøkkelsetning og digitale signaturer. Dersom nøkkelsetning er valgt, er dette krevd for å bli med. Dersom digitale signaturer er valgt, så kan kun brukere hvis offentlige nøkkler er listet bli med."
+#, c-format
+msgid ""
+"Channel authentication is used to secure the channel from unauthorized "
+"access. The authentication may be based on passphrase and digital "
+"signatures. If passphrase is set, it is required to be able to join. If "
+"channel public keys are set then only users whose public keys are listed are "
+"able to join."
+msgstr ""
+"Kanalgodkjenning er brukt for å sikre kanalen fra uautorisert tilgang. "
+"Autentifikasjonen kan være basert på en nøkkelsetning og digitale "
+"signaturer. Dersom nøkkelsetning er valgt, er dette krevd for å bli med. "
+"Dersom digitale signaturer er valgt, så kan kun brukere hvis offentlige "
+"nøkkler er listet bli med."
 
 msgid "Channel Authentication"
 msgstr "Kanalautentifikasjon"
@@ -7748,7 +8431,8 @@
 msgstr "Brukergrense"
 
 msgid "Set user limit on channel. Set to zero to reset user limit."
-msgstr "Velg brukergrense til kanalen. Velg null for å nullstille brukergrense."
+msgstr ""
+"Velg brukergrense til kanalen. Velg null for å nullstille brukergrense."
 
 msgid "Invite List"
 msgstr "Inviteringsliste"
@@ -7787,7 +8471,8 @@
 msgstr "Velg hemmelig kanal"
 
 #, c-format
-msgid "You have to join the %s channel before you are able to join the private group"
+msgid ""
+"You have to join the %s channel before you are able to join the private group"
 msgstr "Du må bli med i %s-kanalen før du kan bli med i den private gruppa"
 
 msgid "Join Private Group"
@@ -8028,8 +8713,12 @@
 msgstr "Nøkkelsetning kreves"
 
 #, c-format
-msgid "Received %s's public key. Your local copy does not match this key. Would you still like to accept this public key?"
-msgstr "Mottok %s's offentlige nøkkel, men din lokale kopi stemmer ikke overens med denne nøkkelen. Ønsker du fremdeles å akseptere denne nøkkelen?"
+msgid ""
+"Received %s's public key. Your local copy does not match this key. Would you "
+"still like to accept this public key?"
+msgstr ""
+"Mottok %s's offentlige nøkkel, men din lokale kopi stemmer ikke overens med "
+"denne nøkkelen. Ønsker du fremdeles å akseptere denne nøkkelen?"
 
 #, c-format
 msgid "Received %s's public key. Would you like to accept this public key?"
@@ -8066,8 +8755,11 @@
 msgstr "Nøkkelutveksling feilet"
 
 # Er det virkelig "kople til på nytt"?
-msgid "Resuming detached session failed. Press Reconnect to create new connection."
-msgstr "Fortsettelse av løsnet økt misslyktes. Trykk Kople til på nytt for å lage en ny forbindelse."
+msgid ""
+"Resuming detached session failed. Press Reconnect to create new connection."
+msgstr ""
+"Fortsettelse av løsnet økt misslyktes. Trykk Kople til på nytt for å lage en "
+"ny forbindelse."
 
 msgid "Connection failed"
 msgstr "Tilkobling feilet"
@@ -8101,6 +8793,7 @@
 msgid "Your Current Mood"
 msgstr "Dit nåværende humør"
 
+#, c-format
 msgid "Normal"
 msgstr "Normal"
 
@@ -8147,8 +8840,14 @@
 msgid "User Online Status Attributes"
 msgstr "Brukeren sine tilkoblingsstatusattributt"
 
-msgid "You can let other users see your online status information and your personal information. Please fill the information you would like other users to see about yourself."
-msgstr "Du kan la andre brukere se din tilkoblingsstatusinformasjon og din personlige informasjon. Fyll inn informasjonen du ønsker at andre skal se om deg."
+msgid ""
+"You can let other users see your online status information and your personal "
+"information. Please fill the information you would like other users to see "
+"about yourself."
+msgstr ""
+"Du kan la andre brukere se din tilkoblingsstatusinformasjon og din "
+"personlige informasjon. Fyll inn informasjonen du ønsker at andre skal se om "
+"deg."
 
 msgid "Message of the Day"
 msgstr "Dagens melding"
@@ -8232,7 +8931,8 @@
 msgstr "topic [&lt;new topic&gt;]:  Vis eller forandre topic"
 
 msgid "join &lt;channel&gt; [&lt;password&gt;]:  Join a chat on this network"
-msgstr "join &lt;channel&gt; [&lt;password&gt;]:  Join en samtale på dette nettverket"
+msgstr ""
+"join &lt;channel&gt; [&lt;password&gt;]:  Join en samtale på dette nettverket"
 
 msgid "list:  List channels on this network"
 msgstr "list:  Vis kanaler på dette nettverket"
@@ -8241,10 +8941,12 @@
 msgstr "whois &lt;nick&gt;:  Vis nick'ets info"
 
 msgid "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user"
-msgstr "msg &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker"
+msgstr ""
+"msg &lt;nick&gt; &lt;message&gt;:  Send en privat beskjed til en bruker"
 
 msgid "query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
-msgstr "query &lt;nick&gt; [&lt;message&gt;]:  Send en privat beskjed til en bruker"
+msgstr ""
+"query &lt;nick&gt; [&lt;message&gt;]:  Send en privat beskjed til en bruker"
 
 msgid "motd:  View the server's Message Of The Day"
 msgstr "motd:  Vis serverens Message Of The Day"
@@ -8267,11 +8969,19 @@
 msgid "whowas &lt;nick&gt;:  View nick's information"
 msgstr "whowas &lt;nick&gt;:  Vis nick info"
 
-msgid "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display channel modes"
-msgstr "cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Forandre eller vis kanal modus"
-
-msgid "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes on channel"
-msgstr "cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Forandre nick modus på kanal"
+msgid ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Change or display "
+"channel modes"
+msgstr ""
+"cmode &lt;channel&gt; [+|-&lt;modes&gt;] [arguments]:  Forandre eller vis "
+"kanal modus"
+
+msgid ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Change nick's modes "
+"on channel"
+msgstr ""
+"cumode &lt;channel&gt; +|-&lt;modes&gt; &lt;nick&gt;:  Forandre nick modus "
+"på kanal"
 
 msgid "umode &lt;usermodes&gt;:  Set your modes in the network"
 msgstr "umode &lt;usermodes&gt;:  Sett modusene dine i nettverket"
@@ -8279,8 +8989,12 @@
 msgid "oper &lt;nick&gt; [-pubkey]:  Get server operator privileges"
 msgstr "oper &lt;nick&gt; [-pubkey]:  Få server OP rettigheter"
 
-msgid "invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from channel invite list"
-msgstr "invite &lt;channel&gt; [-|+]&lt;nick&gt;:  inviter nick eller legg til/fjern fra kanalens invitasjonsliste"
+msgid ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;:  invite nick or add/remove from "
+"channel invite list"
+msgstr ""
+"invite &lt;channel&gt; [-|+]&lt;nick&gt;:  inviter nick eller legg til/fjern "
+"fra kanalens invitasjonsliste"
 
 msgid "kick &lt;channel&gt; &lt;nick&gt; [comment]:  Kick client from channel"
 msgstr "kick &lt;channel&gt; &lt;nick&gt; [comment]:  Kick klient fra kanal"
@@ -8292,7 +9006,8 @@
 msgstr "ban [&lt;channel&gt; +|-&lt;nick&gt;]:  Bannlys klient fra kanal"
 
 msgid "getkey &lt;nick|server&gt;:  Retrieve client's or server's public key"
-msgstr "getkey &lt;nick|server&gt;:  Få klientens eller serverens offentlige nøkkel"
+msgstr ""
+"getkey &lt;nick|server&gt;:  Få klientens eller serverens offentlige nøkkel"
 
 msgid "stats:  View server and network statistics"
 msgstr "stats:  Vis server og nettverk statistikk"
@@ -8303,8 +9018,12 @@
 msgid "users &lt;channel&gt;:  List users in channel"
 msgstr "users &lt;channel&gt;:  Vis brukere i kanal"
 
-msgid "names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List specific users in channel(s)"
-msgstr "names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  Vis spesifiserte brukere i kanalen/kanlaene"
+msgid ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  List "
+"specific users in channel(s)"
+msgstr ""
+"names [-count|-ops|-halfops|-voices|-normal] &lt;channel(s)&gt;:  Vis "
+"spesifiserte brukere i kanalen/kanlaene"
 
 #. *< type
 #. *< ui_requirement
@@ -8344,7 +9063,7 @@
 msgstr "Offentlig nøkkel autentisering"
 
 msgid "Block IMs without Key Exchange"
-msgstr "Blokker direktemeldinger uten nøkkelutveksling"
+msgstr "Blokker lynmeldinger uten nøkkelutveksling"
 
 msgid "Block messages to whiteboard"
 msgstr "Blokker beskjeder til tavle"
@@ -8441,7 +9160,9 @@
 msgstr "%s sendte beskjed til tavle. Vil du åpne tavlen?"
 
 #, c-format
-msgid "%s sent message to whiteboard on %s channel. Would you like to open the whiteboard?"
+msgid ""
+"%s sent message to whiteboard on %s channel. Would you like to open the "
+"whiteboard?"
 msgstr "%s sendte en beskjed til tavle på kanal %s. Vil du åpne tavlen?"
 
 msgid "Whiteboard"
@@ -8450,33 +9171,44 @@
 msgid "No server statistics available"
 msgstr "Ingen tjenerstatistikk tilgjengelig"
 
+#, c-format
 msgid "Failure: Version mismatch, upgrade your client"
 msgstr "Feil: Versjonskonflikt, oppgrader din klient"
 
+#, c-format
 msgid "Failure: Remote does not trust/support your public key"
-msgstr "Fjernliggende part støtter eller stoler ikke på ikke din offentlige nøkkel"
-
+msgstr ""
+"Fjernliggende part støtter eller stoler ikke på ikke din offentlige nøkkel"
+
+#, c-format
 msgid "Failure: Remote does not support proposed KE group"
 msgstr "Feil: Fjerntliggende part støtter ikke foreslått KE-gruppe"
 
+#, c-format
 msgid "Failure: Remote does not support proposed cipher"
 msgstr "Fjerntliggende part støtter ikke foreslått krypteringsmetode"
 
+#, c-format
 msgid "Failure: Remote does not support proposed PKCS"
 msgstr "Feil: Fjerntliggende part støtter ikke foreslått PKCS"
 
+#, c-format
 msgid "Failure: Remote does not support proposed hash function"
 msgstr "Feil: Fjerntliggende part støtter ikke foreslått nøkkelfunksjon"
 
+#, c-format
 msgid "Failure: Remote does not support proposed HMAC"
 msgstr "Fjerntliggende part støtter ikke foreslått HMAC"
 
+#, c-format
 msgid "Failure: Incorrect signature"
 msgstr "Ugyldig signatur"
 
+#, c-format
 msgid "Failure: Invalid cookie"
 msgstr "Ugyldig informasjonskapsel"
 
+#, c-format
 msgid "Failure: Authentication failed"
 msgstr "Autentisering feilet"
 
@@ -8576,6 +9308,7 @@
 msgid "Warning of %s not allowed."
 msgstr "Advarsel %s er ikke tillatt."
 
+#, c-format
 msgid "A message has been dropped, you are exceeding the server speed limit."
 msgstr "En beskjed ble forkastet. Du overskrider tjenerens fartsgrense."
 
@@ -8595,30 +9328,39 @@
 msgid "You missed an IM from %s because it was sent too fast."
 msgstr "Du gikk glipp av en beskjed fra %s fordi den ble sendt for raskt."
 
+#, c-format
 msgid "Failure."
 msgstr "Feil."
 
+#, c-format
 msgid "Too many matches."
 msgstr "For mange treff."
 
+#, c-format
 msgid "Need more qualifiers."
 msgstr "Trenger flere parametre."
 
+#, c-format
 msgid "Dir service temporarily unavailable."
 msgstr "Katalogtjenesten er midlertidig utilgjengelig."
 
+#, c-format
 msgid "Email lookup restricted."
 msgstr "E-postoppslag er begrenset."
 
+#, c-format
 msgid "Keyword ignored."
 msgstr "Nøkkelord ignorert."
 
+#, c-format
 msgid "No keywords."
 msgstr "Ingen nøkkelord."
 
+#, c-format
 msgid "User has no directory information."
 msgstr "Brukeren har ingen kataloginformasjon."
 
+#, c-format
 msgid "Country not supported."
 msgstr "Land ikke støttet."
 
@@ -8626,17 +9368,25 @@
 msgid "Failure unknown: %s."
 msgstr "Ukjent feil: %s."
 
+#, c-format
 msgid "Incorrect username or password."
 msgstr "Feil brukernavn eller passord."
 
+#, c-format
 msgid "The service is temporarily unavailable."
 msgstr "Tjenesten er midlertidig utilgjengelig."
 
+#, c-format
 msgid "Your warning level is currently too high to log in."
 msgstr "Advarselsnivået ditt er satt for høyt for å logge inn."
 
-msgid "You have been connecting and disconnecting too frequently.  Wait ten minutes and try again.  If you continue to try, you will need to wait even longer."
-msgstr "Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
+#, c-format
+msgid ""
+"You have been connecting and disconnecting too frequently.  Wait ten minutes "
+"and try again.  If you continue to try, you will need to wait even longer."
+msgstr ""
+"Du har koblet til og koblet fra for hurtig. Vent ti minutter og prøv igjen. "
+"Hvis du fortsetter å prøve nå, vil du måtte vente enda lenger."
 
 #, c-format
 msgid "An unknown signon error has occurred: %s."
@@ -8721,26 +9471,42 @@
 msgstr "Yahoo! systemmelding for %s:"
 
 #, c-format
-msgid "%s has (retroactively) denied your request to add them to your list for the following reason: %s."
-msgstr "%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i kontaktlisten med følgende grunn: %s."
+msgid ""
+"%s has (retroactively) denied your request to add them to your list for the "
+"following reason: %s."
+msgstr ""
+"%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i "
+"kontaktlisten med følgende grunn: %s."
 
 #, c-format
 msgid "%s has (retroactively) denied your request to add them to your list."
-msgstr "%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i kontaktlisten din."
+msgstr ""
+"%s har (tilbakevirkende) avslått din forespørsel om å bli lagt til i "
+"kontaktlisten din."
 
 msgid "Add buddy rejected"
 msgstr "Legge til kontakt avslått"
 
 #, c-format
-msgid "The Yahoo server has requested the use of an unrecognized authentication method.  You will probably not be able to successfully sign on to Yahoo.  Check %s for updates."
-msgstr "Yahoo-tjeneren har forespurt bruk av en ukjent autentiseringsmetode. Denne versjonen av Pidgin vil antakeligvis ikke være i stand til å logge på Yahoo. Sjekk %s for oppdateringer."
+msgid ""
+"The Yahoo server has requested the use of an unrecognized authentication "
+"method.  You will probably not be able to successfully sign on to Yahoo.  "
+"Check %s for updates."
+msgstr ""
+"Yahoo-tjeneren har forespurt bruk av en ukjent autentiseringsmetode. Denne "
+"versjonen av Pidgin vil antakeligvis ikke være i stand til å logge på Yahoo. "
+"Sjekk %s for oppdateringer."
 
 msgid "Failed Yahoo! Authentication"
 msgstr "Yahoo!-autentisering feilet"
 
 #, c-format
-msgid "You have tried to ignore %s, but the user is on your buddy list.  Clicking \"Yes\" will remove and ignore the buddy."
-msgstr "Du forsøkte å ignorere %s, men vedkommende er i kontaktlisten din. Hvis du klikker på \"Ja\" vil kontakten fjernes og ignoreres."
+msgid ""
+"You have tried to ignore %s, but the user is on your buddy list.  Clicking "
+"\"Yes\" will remove and ignore the buddy."
+msgstr ""
+"Du forsøkte å ignorere %s, men vedkommende er i kontaktlisten din. Hvis du "
+"klikker på \"Ja\" vil kontakten fjernes og ignoreres."
 
 msgid "Ignore buddy?"
 msgstr "Ignorere kontakt?"
@@ -8750,11 +9516,13 @@
 
 #, c-format
 msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
-msgstr "Ukjent feilkode %d. Å logge inn på Yahoo!s nettside, kan kanskje løse dette."
+msgstr ""
+"Ukjent feilkode %d. Å logge inn på Yahoo!s nettside, kan kanskje løse dette."
 
 #, c-format
 msgid "Could not add buddy %s to group %s to the server list on account %s."
-msgstr "Klarte ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s."
+msgstr ""
+"Klarte ikke legge til kontakt %s i gruppen %s i tjenerlisten på konto %s."
 
 msgid "Could not add buddy to server list"
 msgstr "Klarte ikke legge kontakt til tjenerens kontaktliste"
@@ -8925,11 +9693,18 @@
 msgid "Yahoo! Profile"
 msgstr "Yahoo!-profil"
 
-msgid "Sorry, profiles marked as containing adult content are not supported at this time."
-msgstr "Beklager, profiler som er markert med vokseninnhold er for tiden ikke støttet."
-
-msgid "If you wish to view this profile, you will need to visit this link in your web browser:"
-msgstr "Hvis du ønsker å vise denne profilen, må du åpne denne lenken i en nettleser:"
+msgid ""
+"Sorry, profiles marked as containing adult content are not supported at this "
+"time."
+msgstr ""
+"Beklager, profiler som er markert med vokseninnhold er for tiden ikke "
+"støttet."
+
+msgid ""
+"If you wish to view this profile, you will need to visit this link in your "
+"web browser:"
+msgstr ""
+"Hvis du ønsker å vise denne profilen, må du åpne denne lenken i en nettleser:"
 
 msgid "Yahoo! ID"
 msgstr "Yahoo! ID"
@@ -8955,14 +9730,27 @@
 msgid "Last Update"
 msgstr "Sist oppdatert"
 
-msgid "This profile is in a language or format that is not supported at this time."
-msgstr "Denne profilen er i et språk eller format som for øyeblikket ikke er støttet."
-
-msgid "Could not retrieve the user's profile. This most likely is a temporary server-side problem. Please try again later."
-msgstr "Klarte ikke hente ned brukerens profil. Dette er mest sannsynlig et midlertidig server-problem. Prøv igjen senere."
-
-msgid "Could not retrieve the user's profile. This most likely means that the user does not exist; however, Yahoo! sometimes does fail to find a user's profile. If you know that the user exists, please try again later."
-msgstr "Klarte ikke hente ned brukerens profil. Dette betyr sannsynligvis at brukeren ikke eksisterer, men merk at Yahoo! noen ganger ikke greier å finne en brukers profil. Om du vet at brukeren eksisterer, vennligst prøv igjen senere."
+msgid ""
+"This profile is in a language or format that is not supported at this time."
+msgstr ""
+"Denne profilen er i et språk eller format som for øyeblikket ikke er støttet."
+
+msgid ""
+"Could not retrieve the user's profile. This most likely is a temporary "
+"server-side problem. Please try again later."
+msgstr ""
+"Klarte ikke hente ned brukerens profil. Dette er mest sannsynlig et "
+"midlertidig server-problem. Prøv igjen senere."
+
+msgid ""
+"Could not retrieve the user's profile. This most likely means that the user "
+"does not exist; however, Yahoo! sometimes does fail to find a user's "
+"profile. If you know that the user exists, please try again later."
+msgstr ""
+"Klarte ikke hente ned brukerens profil. Dette betyr sannsynligvis at "
+"brukeren ikke eksisterer, men merk at Yahoo! noen ganger ikke greier å finne "
+"en brukers profil. Om du vet at brukeren eksisterer, vennligst prøv igjen "
+"senere."
 
 msgid "The user's profile is empty."
 msgstr "Brukerens profil er tom."
@@ -8989,8 +9777,12 @@
 msgid "Not available"
 msgstr "Ikke tilgjengelig"
 
-msgid "Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom"
-msgstr "Ukjent feil. Det kan hende du må logge ut og vente fem minutter før du kan entre samtalerommet igjen"
+msgid ""
+"Unknown error. You may need to logout and wait five minutes before being "
+"able to rejoin a chatroom"
+msgstr ""
+"Ukjent feil. Det kan hende du må logge ut og vente fem minutter før du kan "
+"entre samtalerommet igjen"
 
 #, c-format
 msgid "You are now chatting in %s."
@@ -9028,8 +9820,12 @@
 "Du har blitt koblet fra tjeneren\n"
 "%s"
 
-msgid "(There was an error converting this message.\t Check the 'Encoding' option in the Account Editor)"
-msgstr "(En feil oppstod under konverteringen av denne beskjeden.\t Kontroller «Tegnkoding»-valget i kontohåndteren)"
+msgid ""
+"(There was an error converting this message.\t Check the 'Encoding' option "
+"in the Account Editor)"
+msgstr ""
+"(En feil oppstod under konverteringen av denne beskjeden.\t Kontroller "
+"«Tegnkoding»-valget i kontohåndteren)"
 
 #, c-format
 msgid "Unable to send to chat %s,%s,%s"
@@ -9065,28 +9861,45 @@
 msgstr "zl &lt;nick&gt;: Finn bruker"
 
 msgid "instance &lt;instance&gt;: Set the instance to be used on this class"
-msgstr "instance &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
+msgstr ""
+"instance &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
 
 msgid "inst &lt;instance&gt;: Set the instance to be used on this class"
 msgstr "inst &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
 
 msgid "topic &lt;instance&gt;: Set the instance to be used on this class"
-msgstr "topic &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
+msgstr ""
+"topic &lt;instance&gt;: Sett hendelse som skal brukes for denne klassen"
 
 msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
-msgstr "ub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join en ny samtale"
-
-msgid "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
-msgstr "zi &lt;instance&gt;: Send en beskjed til &lt;beskjed,<i>instance</i>,*&gt;"
-
-msgid "zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,*&gt;"
-msgstr "zci &lt;class&gt; &lt;instance&gt;: Send en beskjed til &lt;<i>class</i>,<i>instance</i>,*&gt;"
-
-msgid "zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
-msgstr "zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send en beskjed til &lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
-
-msgid "zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"
-msgstr "zir &lt;instance&gt; &lt;recipient&gt;: Send en beskjed til &lt;MESSAGE,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+"ub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join en ny samtale"
+
+msgid ""
+"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr ""
+"zi &lt;instance&gt;: Send en beskjed til &lt;beskjed,<i>instance</i>,*&gt;"
+
+msgid ""
+"zci &lt;class&gt; &lt;instance&gt;: Send a message to &lt;<i>class</i>,"
+"<i>instance</i>,*&gt;"
+msgstr ""
+"zci &lt;class&gt; &lt;instance&gt;: Send en beskjed til &lt;<i>class</i>,"
+"<i>instance</i>,*&gt;"
+
+msgid ""
+"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;"
+"<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+"zcir &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Send en beskjed til "
+"&lt;<i>class</i>,<i>instance</i>,<i>recipient</i>&gt;"
+
+msgid ""
+"zir &lt;instance&gt; &lt;recipient&gt;: Send a message to &lt;MESSAGE,"
+"<i>instance</i>,<i>recipient</i>&gt;"
+msgstr ""
+"zir &lt;instance&gt; &lt;recipient&gt;: Send en beskjed til &lt;MESSAGE,"
+"<i>instance</i>,<i>recipient</i>&gt;"
 
 msgid "zc &lt;class&gt;: Send a message to &lt;<i>class</i>,PERSONAL,*&gt;"
 msgstr "zc &lt;class&gt;: Send en beskjed til &lt;<i>class</i>,PERSONAL,*&gt;"
@@ -9296,8 +10109,12 @@
 msgstr "Feil ved lesing av %s"
 
 #, c-format
-msgid "An error was encountered reading your %s.  They have not been loaded, and the old file has been renamed to %s~."
-msgstr "Det oppstod en feil under lesing av %s. Den har ikke blitt lastet, og den gamle filen ble flyttet til %s~."
+msgid ""
+"An error was encountered reading your %s.  They have not been loaded, and "
+"the old file has been renamed to %s~."
+msgstr ""
+"Det oppstod en feil under lesing av %s. Den har ikke blitt lastet, og den "
+"gamle filen ble flyttet til %s~."
 
 msgid "Calculating..."
 msgstr "Beregner..."
@@ -9354,8 +10171,12 @@
 msgstr "Klarte ikke lese fra %s: for langt svar (%d bytes-grense)"
 
 #, c-format
-msgid "Unable to allocate enough memory to hold the contents from %s.  The web server may be trying something malicious."
-msgstr "Klarte ikke allokere nok minne til å holde på innholdet fra %s.  Det kan hende web serveren prøver på noe ondskapsfullt."
+msgid ""
+"Unable to allocate enough memory to hold the contents from %s.  The web "
+"server may be trying something malicious."
+msgstr ""
+"Klarte ikke allokere nok minne til å holde på innholdet fra %s.  Det kan "
+"hende web serveren prøver på noe ondskapsfullt."
 
 #, c-format
 msgid "Error reading from %s: %s"
@@ -9378,22 +10199,27 @@
 msgstr "(%s)"
 
 #. 10053
+#, c-format
 msgid "Connection interrupted by other software on your computer."
 msgstr "Forbindelsen ble avbrutt av annen programvare på din datamaskin."
 
 #. 10054
+#, c-format
 msgid "Remote host closed connection."
 msgstr "Fjern vert lukket forbindelsen."
 
 #. 10060
+#, c-format
 msgid "Connection timed out."
 msgstr "Tilkoblingen lyktes ikke innenfor tidsgrensen."
 
 #. 10061
+#, c-format
 msgid "Connection refused."
 msgstr "Tilkoblingen avvist."
 
 #. 10048
+#, c-format
 msgid "Address already in use."
 msgstr "Adressen er allerede i bruk"
 
@@ -9520,24 +10346,39 @@
 msgid ""
 "<span size='larger' weight='bold'>Welcome to %s!</span>\n"
 "\n"
-"You have no IM accounts configured. To start connecting with %s press the <b>Add...</b> button below and configure your first account. If you want %s to connect to multiple IM accounts, press <b>Add...</b> again to configure them all.\n"
+"You have no IM accounts configured. To start connecting with %s press the "
+"<b>Add...</b> button below and configure your first account. If you want %s "
+"to connect to multiple IM accounts, press <b>Add...</b> again to configure "
+"them all.\n"
 "\n"
-"You can come back to this window to add, edit, or remove accounts from <b>Accounts->Manage Accounts</b> in the Buddy List window"
+"You can come back to this window to add, edit, or remove accounts from "
+"<b>Accounts->Manage Accounts</b> in the Buddy List window"
 msgstr ""
 "<span size='larger' weight='bold'>Velkommen til %s!</span>\n"
 "\n"
-"Du har ikke satt opp noen lynmeldingskontoer. For å starte tilkobling til %s trykk <b>Legg til ...</b>-knappen nedenfor og sett opp kontoen din først. Om du vil at %s skal koble til flere lynmeldingskontoer, trykk <b>Legg til ...</b> igjen for å sette opp alle sammen.\n"
+"Du har ikke satt opp noen lynmeldingskontoer. For å starte tilkobling til %s "
+"trykk <b>Legg til ...</b>-knappen nedenfor og sett opp kontoen din først. Om "
+"du vil at %s skal koble til flere lynmeldingskontoer, trykk <b>Legg til ...</"
+"b> igjen for å sette opp alle sammen.\n"
 "\n"
-"Du kan komme tilbake til dette vinduet for å legge til, redigere eller fjerne kontoer fra <b>Kontoer->Håndter kontoer</b> i kontaktliste-vinduet."
+"Du kan komme tilbake til dette vinduet for å legge til, redigere eller "
+"fjerne kontoer fra <b>Kontoer->Håndter kontoer</b> i kontaktliste-vinduet."
 
 #, c-format
 msgid "You have %d contact named %s. Would you like to merge them?"
-msgid_plural "You currently have %d contacts named %s. Would you like to merge them?"
+msgid_plural ""
+"You currently have %d contacts named %s. Would you like to merge them?"
 msgstr[0] "Du har kontakten %d som %s. Vil du flette dem sammen?"
 msgstr[1] "Du har kontaktene %d som %s. Vil du flette dem sammen?"
 
-msgid "Merging these contacts will cause them to share a single entry on the buddy list and use a single conversation window. You can separate them again by choosing 'Expand' from the contact's context menu"
-msgstr "Sammenfletting av disse kontaktene vil føre til at de deler en enkelt oppføring i kontaktlisten og bruker ett enkelt samtalevindu. Du kan separere dem igjen ved å velge Utvid fra kontaktens meny i kontaktlisten"
+msgid ""
+"Merging these contacts will cause them to share a single entry on the buddy "
+"list and use a single conversation window. You can separate them again by "
+"choosing 'Expand' from the contact's context menu"
+msgstr ""
+"Sammenfletting av disse kontaktene vil føre til at de deler en enkelt "
+"oppføring i kontaktlisten og bruker ett enkelt samtalevindu. Du kan separere "
+"dem igjen ved å velge Utvid fra kontaktens meny i kontaktlisten"
 
 msgid "Please update the necessary fields."
 msgstr "Oppdater de nødvendige feltene."
@@ -9545,7 +10386,9 @@
 msgid "Room _List"
 msgstr "Rom_liste"
 
-msgid "Please enter the appropriate information about the chat you would like to join.\n"
+msgid ""
+"Please enter the appropriate information about the chat you would like to "
+"join.\n"
 msgstr "Skriv inn informasjon om samtalegruppen du ønsker å bli med i.\n"
 
 msgid "_Account:"
@@ -9624,7 +10467,8 @@
 msgid "/Tools/Mute Sounds"
 msgstr "/Verktøy/Skru av lyder"
 
-msgid "You are not currently signed on with an account that can add that buddy."
+msgid ""
+"You are not currently signed on with an account that can add that buddy."
 msgstr "Du er ikke pålogget med noen kontoer som kan legge til den kontakten."
 
 #. I don't believe this can happen currently, I think
@@ -9638,7 +10482,7 @@
 msgstr "/_Kontakter"
 
 msgid "/Buddies/New Instant _Message..."
-msgstr "/Kontakter/_Ny direktemelding..."
+msgstr "/Kontakter/_Ny lynmelding..."
 
 msgid "/Buddies/Join a _Chat..."
 msgstr "/Kontakter/_Bli med i samtalegruppe..."
@@ -9793,7 +10637,7 @@
 msgstr "Inaktiv %dm"
 
 msgid "/Buddies/New Instant Message..."
-msgstr "/Kontakter/Ny direktemelding..."
+msgstr "/Kontakter/Ny lynmelding..."
 
 msgid "/Buddies/Join a Chat..."
 msgstr "/Kontakter/Bli med i samtalegruppe..."
@@ -9811,7 +10655,7 @@
 msgstr "/Kontakter/Legg til gruppe..."
 
 msgid "/Tools/Privacy"
-msgstr "/Verktøy/Blokkeringer"
+msgstr "/Verktøy/Personvern"
 
 msgid "/Tools/Room List"
 msgstr "/Verktøy/Romliste"
@@ -9850,7 +10694,8 @@
 
 #, c-format
 msgid "%d account was disabled because you signed on from another location:"
-msgid_plural "%d accounts were disabled because you signed on from another location:"
+msgid_plural ""
+"%d accounts were disabled because you signed on from another location:"
 msgstr[0] "%d konto ble deaktivert fordi du har logget på et annet sted:"
 msgstr[1] "%d kontoer ble deaktivert fordi du har logget på et annet sted:"
 
@@ -9871,11 +10716,16 @@
 msgid ""
 "<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 Accounts</b>. Once you enable accounts, you'll be able to sign on, set your status, and talk to your friends."
+"You have no accounts enabled. Enable your IM accounts from the <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."
 msgstr ""
 "<span weight='bold' size='larger'>Velkommen til  %s!</span>\n"
 "\n"
-"Du har ingen kontoer aktivert. Aktiver dine lynmeldingskontoer fra <b>Kontoer</b>-vinduet ved <b>Kontoer->Håndter kontoer</b>. Når du har aktivert kontoene, kan du logge inn, sette din status og snakke med dine venner."
+"Du har ingen kontoer aktivert. Aktiver dine lynmeldingskontoer fra "
+"<b>Kontoer</b>-vinduet ved <b>Kontoer->Håndter kontoer</b>. Når du har "
+"aktivert kontoene, kan du logge inn, sette din status og snakke med dine "
+"venner."
 
 #. set the Show Offline Buddies option. must be done
 #. * after the treeview or faceprint gets mad. -Robot101
@@ -9910,10 +10760,14 @@
 msgid "This protocol does not support chat rooms."
 msgstr "Denne protokollversjonen støtter ikke samtalerom."
 
-msgid "You are not currently signed on with any protocols that have the ability to chat."
+msgid ""
+"You are not currently signed on with any protocols that have the ability to "
+"chat."
 msgstr "Du er ikke pålogget med noen protokoller som støtter samtalegrupper."
 
-msgid "Please enter an alias, and the appropriate information about the chat you would like to add to your buddy list.\n"
+msgid ""
+"Please enter an alias, and the appropriate information about the chat you "
+"would like to add to your buddy list.\n"
 msgstr "Skriv inn et aliasnavn og annen informasjon for samtalegruppen.\n"
 
 msgid "A_lias:"
@@ -9960,17 +10814,24 @@
 msgstr "Ukjent kommando."
 
 msgid "That buddy is not on the same protocol as this chat."
-msgstr "Denne kontakten er ikke på den samme protokollen som denne samtalegruppa."
-
-msgid "You are not currently signed on with an account that can invite that buddy."
-msgstr "Du er ikke pålogget pålogget med en konto som kan invitere denne kontakten."
+msgstr ""
+"Denne kontakten er ikke på den samme protokollen som denne samtalegruppa."
+
+msgid ""
+"You are not currently signed on with an account that can invite that buddy."
+msgstr ""
+"Du er ikke pålogget pålogget med en konto som kan invitere denne kontakten."
 
 msgid "Invite Buddy Into Chat Room"
 msgstr "Inviter kontakten inn i samtalerom"
 
 #. Put our happy label in it.
-msgid "Please enter the name of the user you wish to invite, along with an optional invite message."
-msgstr "Skriv inn navnet på brukeren som du vil invitere, og en eventuell invitasjonsbeskjed."
+msgid ""
+"Please enter the name of the user you wish to invite, along with an optional "
+"invite message."
+msgstr ""
+"Skriv inn navnet på brukeren som du vil invitere, og en eventuell "
+"invitasjonsbeskjed."
 
 msgid "_Buddy:"
 msgstr "_Kontakt:"
@@ -10235,7 +11096,7 @@
 msgstr "Sist opprettede vindu"
 
 msgid "Separate IM and Chat windows"
-msgstr "Skill direktemeldings- og gruppesamtalevinduer"
+msgstr "Skill lynmeldings- og gruppesamtalevinduer"
 
 msgid "New window"
 msgstr "Nytt vindu"
@@ -10445,7 +11306,7 @@
 msgstr "Kannada"
 
 msgid "Kannada Translation team"
-msgstr "Kannada Translation team"
+msgstr "Kannada oversettelseslag"
 
 msgid "Korean"
 msgstr "Koreansk"
@@ -10460,7 +11321,10 @@
 msgstr "Litauisk"
 
 msgid "Macedonian"
-msgstr "Makedons"
+msgstr "Makedonsk"
+
+msgid "Mongolian"
+msgstr "Mongolsk"
 
 msgid "Bokmål Norwegian"
 msgstr "Norsk Bokmål"
@@ -10555,11 +11419,50 @@
 msgstr "Om %s"
 
 #, c-format
-msgid "%s is a graphical modular messaging client based on libpurple which is capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and QQ all at once.  It is written using GTK+.<BR><BR>You may modify and redistribute the program under the terms of the GPL (version 2 or later).  A copy of the GPL is contained in the 'COPYING' file distributed with %s.  %s is copyrighted by its contributors.  See the 'COPYRIGHT' file for the complete list of contributors.  We provide no warranty for this program.<BR><BR>"
-msgstr "%s er en modulær grafisk samtaleklient basert på libpurple som kan koble til AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC,SIP/SIMPLE, Novell GroupWise, Lotus Sametime, Bonjour, Zephyr,MySpaceIM, Gadu-Gadu, og QQ samtidig.  Den er skravet ved bruk av GTK+.<BR><BR>Du kan modifisere og redistribuere programmet under GPL (versjon 2 eller senere) En kopi av GPL er plassert i COPYING filen distribuert med %s.  %s er kopibeskyttet av utgiverne.  Se COPYRIGHT filen for en komplett liste av utgivere.  Vi gir ingen garanti for dette programmet.<BR><BR>"
-
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin på irc.freenode.net<BR><BR>"
+msgid ""
+"%s is a graphical modular messaging client based on libpurple which is "
+"capable of connecting to AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC, SIP/SIMPLE, "
+"Novell GroupWise, Lotus Sametime, Bonjour, Zephyr, MySpaceIM, Gadu-Gadu, and "
+"QQ all at once.  It is written using GTK+.<BR><BR>You may modify and "
+"redistribute the program under the terms of the GPL (version 2 or later).  A "
+"copy of the GPL is contained in the 'COPYING' file distributed with %s.  %s "
+"is copyrighted by its contributors.  See the 'COPYRIGHT' file for the "
+"complete list of contributors.  We provide no warranty for this program."
+"<BR><BR>"
+msgstr ""
+"%s er en modulær grafisk samtaleklient basert på libpurple som kan koble til "
+"AIM, MSN, Yahoo!, XMPP, ICQ, IRC, SILC,SIP/SIMPLE, Novell GroupWise, Lotus "
+"Sametime, Bonjour, Zephyr,MySpaceIM, Gadu-Gadu, og QQ samtidig.  Den er "
+"skravet ved bruk av GTK+.<BR><BR>Du kan modifisere og redistribuere "
+"programmet under GPL (versjon 2 eller senere) En kopi av GPL er plassert i "
+"COPYING filen distribuert med %s.  %s er kopibeskyttet av utgiverne.  Se "
+"COPYRIGHT filen for en komplett liste av utgivere.  Vi gir ingen garanti for "
+"dette programmet.<BR><BR>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">OSS:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">Hjelp per e-post:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC-kanal:</FONT> #pidgin på irc.freenode.net<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
 
 msgid "Current Developers"
 msgstr "Tidligere utviklere"
@@ -10591,8 +11494,12 @@
 msgid "Get User Info"
 msgstr "Hent brukerinfo"
 
-msgid "Please enter the username or alias of the person whose info you would like to view."
-msgstr "Skriv inn brukernavnet eller aliaset til den personen du vil se informasjon om."
+msgid ""
+"Please enter the username or alias of the person whose info you would like "
+"to view."
+msgstr ""
+"Skriv inn brukernavnet eller aliaset til den personen du vil se informasjon "
+"om."
 
 msgid "View User Log"
 msgstr "Se på brukerlogg"
@@ -10617,10 +11524,18 @@
 msgstr "Skriv inn aliasnavn for denne samtalegruppa."
 
 #, c-format
-msgid "You are about to remove the contact containing %s and %d other buddy from your buddy list.  Do you want to continue?"
-msgid_plural "You are about to remove the contact containing %s and %d other buddies from your buddy list.  Do you want to continue?"
-msgstr[0] "Du er i ferd med å fjerne kontakten som inneholder %s og %d annen kontakt fra kontaktlista di. Ønsker du å fortsette?"
-msgstr[1] "Du er i ferd med å fjerne kontakten som inneholder %s og %d andre kontakter fra kontaktlista di. Ønsker du å fortsette?"
+msgid ""
+"You are about to remove the contact containing %s and %d other buddy from "
+"your buddy list.  Do you want to continue?"
+msgid_plural ""
+"You are about to remove the contact containing %s and %d other buddies from "
+"your buddy list.  Do you want to continue?"
+msgstr[0] ""
+"Du er i ferd med å fjerne kontakten som inneholder %s og %d annen kontakt "
+"fra kontaktlista di. Ønsker du å fortsette?"
+msgstr[1] ""
+"Du er i ferd med å fjerne kontakten som inneholder %s og %d andre kontakter "
+"fra kontaktlista di. Ønsker du å fortsette?"
 
 msgid "Remove Contact"
 msgstr "Fjern kontakt"
@@ -10629,8 +11544,12 @@
 msgstr "_Fjern kontakt"
 
 #, c-format
-msgid "You are about to merge the group called %s into the group called %s. Do you want to continue?"
-msgstr "Du er i ferd med å slå gruppa med navnet %s sammen med gruppa %s. Øsnker du å fortsette?"
+msgid ""
+"You are about to merge the group called %s into the group called %s. Do you "
+"want to continue?"
+msgstr ""
+"Du er i ferd med å slå gruppa med navnet %s sammen med gruppa %s. Øsnker du "
+"å fortsette?"
 
 msgid "Merge Groups"
 msgstr "Slå sammen grupper"
@@ -10639,8 +11558,12 @@
 msgstr "_Slå sammen grupper"
 
 #, c-format
-msgid "You are about to remove the group %s and all its members from your buddy list.  Do you want to continue?"
-msgstr "Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra kontaktlisten din?"
+msgid ""
+"You are about to remove the group %s and all its members from your buddy "
+"list.  Do you want to continue?"
+msgstr ""
+"Er du sikker på at du vil fjerne gruppen %s med alle medlemmer fra "
+"kontaktlisten din?"
 
 msgid "Remove Group"
 msgstr "Fjern gruppe"
@@ -10649,7 +11572,8 @@
 msgstr "_Fjern gruppe"
 
 #, c-format
-msgid "You are about to remove %s from your buddy list.  Do you want to continue?"
+msgid ""
+"You are about to remove %s from your buddy list.  Do you want to continue?"
 msgstr "Er du sikker på at du vil fjerne %s fra kontaktlisten din?"
 
 msgid "Remove Buddy"
@@ -10659,8 +11583,11 @@
 msgstr "_Fjern kontakt"
 
 #, c-format
-msgid "You are about to remove the chat %s from your buddy list.  Do you want to continue?"
-msgstr "Er du sikker på at du vil fjerne samtalegruppen %s fra kontaktlisten din?"
+msgid ""
+"You are about to remove the chat %s from your buddy list.  Do you want to "
+"continue?"
+msgstr ""
+"Er du sikker på at du vil fjerne samtalegruppen %s fra kontaktlisten din?"
 
 msgid "Remove Chat"
 msgstr "Fjern samtalegruppe"
@@ -10810,7 +11737,8 @@
 msgstr "Farge for navn på «oppmerksomhet» "
 
 msgid "Color to draw the name of a message you received containing your name."
-msgstr "Farge for å tegne navnet på en beskjed du mottok som innholdt navnet ditt."
+msgstr ""
+"Farge for å tegne navnet på en beskjed du mottok som innholdt navnet ditt."
 
 msgid "Action Message Name Color"
 msgstr "Farge for navn på handlingsbeskjed"
@@ -10889,9 +11817,11 @@
 msgid "Save Image"
 msgstr "Lagre bilde"
 
+#, c-format
 msgid "_Save Image..."
 msgstr "_Lagre bilde..."
 
+#, c-format
 msgid "_Add Custom Smiley..."
 msgstr "_Legg til tilpassede smilefjes"
 
@@ -10910,11 +11840,17 @@
 msgid "_Description"
 msgstr "_Beskrivelse"
 
-msgid "Please enter the URL and description of the link that you want to insert. The description is optional."
-msgstr "Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt."
+msgid ""
+"Please enter the URL and description of the link that you want to insert. "
+"The description is optional."
+msgstr ""
+"Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet "
+"er valgfritt."
 
 msgid "Please enter the URL of the link that you want to insert."
-msgstr "Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet er valgfritt."
+msgstr ""
+"Skriv inn URL og beskrivelse av lenka du vil sette inn. Beskrivelsesfeltet "
+"er valgfritt."
 
 msgid "Insert Link"
 msgstr "Sett inn lenke"
@@ -10934,7 +11870,8 @@
 "This smiley is disabled because a custom smiley exists for this shortcut:\n"
 " %s"
 msgstr ""
-"Smilefjeset er deaktivert fordi et tilpasset smilefjes eksisterer for denne snarveien:\n"
+"Smilefjeset er deaktivert fordi et tilpasset smilefjes eksisterer for denne "
+"snarveien:\n"
 "%s"
 
 msgid "Smile!"
@@ -10986,7 +11923,7 @@
 msgstr "Nullstill formatering"
 
 msgid "Insert IM Image"
-msgstr "Sett inn direktemeldingsbilde"
+msgstr "Sett inn lynmeldingsbilde"
 
 msgid "Insert Smiley"
 msgstr "Sett inn smilefjes"
@@ -11043,16 +11980,27 @@
 msgstr "Undersøk rettigheter og prøv igjen."
 
 #, c-format
-msgid "Are you sure you want to permanently delete the log of the conversation with %s which started at %s?"
-msgstr "Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som startet på %s?"
-
-#, c-format
-msgid "Are you sure you want to permanently delete the log of the conversation in %s which started at %s?"
-msgstr "Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som startet på %s?"
-
-#, c-format
-msgid "Are you sure you want to permanently delete the system log which started at %s?"
-msgstr "Er du sikker på at du for alltid vil slette systemloggen som starte på %s?"
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation with "
+"%s which started at %s?"
+msgstr ""
+"Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som "
+"startet på %s?"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the log of the conversation in %"
+"s which started at %s?"
+msgstr ""
+"Er du sikker på at du vil fjerne loggen permanent fra samtalen med %s som "
+"startet på %s?"
+
+#, c-format
+msgid ""
+"Are you sure you want to permanently delete the system log which started at %"
+"s?"
+msgstr ""
+"Er du sikker på at du for alltid vil slette systemloggen som starte på %s?"
 
 msgid "Delete Log?"
 msgstr "Slette logg?"
@@ -11101,7 +12049,8 @@
 "  -m, --multiple      Ikke garantere en enkelt instans\n"
 "  -n, --nologin       Ikke logg inn automatisk\n"
 "  -l, --login[=NAVN]  Logg inn automatisk (Valgfritt argument NAVN \n"
-"                      angir hvilke kontoer som skal brukes med komma som skilletegn.\n"
+"                      angir hvilke kontoer som skal brukes med komma som "
+"skilletegn.\n"
 "                      Uten dette brukes kun den første kontoen.)\n"
 "  --display=DISPLAY   X display for bruk\n"
 "  -v, --version       Vis den nårværende versjon og avslutt\n"
@@ -11130,7 +12079,8 @@
 "  -m, --multiple      Ikke garantere en enkelt instans\n"
 "  -n, --nologin       Ikke logg inn automatisk\n"
 "  -l, --login[=NAVN]  Logg inn automatisk (Valgfritt argument NAVN \n"
-"                      angir hvilke kontoer som skal brukes med komma som skilletegn.\n"
+"                      angir hvilke kontoer som skal brukes med komma som "
+"skilletegn.\n"
 "                      Uten dette brukes kun den første kontoen.)\n"
 "  -v, --version       Vis den nårværende versjon og avslutt\n"
 
@@ -11167,6 +12117,10 @@
 msgid "Pidgin"
 msgstr "Pidgin"
 
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Avslutter fordi en annen libpurple-klient allerede kjører.\n"
+
 msgid "Open All Messages"
 msgstr "Åpne alle beskjeder"
 
@@ -11196,8 +12150,11 @@
 msgid "Error launching \"%s\": %s"
 msgstr "Feil under starting av «%s</b>:%s"
 
-msgid "The 'Manual' browser command has been chosen, but no command has been set."
-msgstr "Klarte ikke å starte en nettleser fordi 'Manuell' nettleserkommando er valgt, men ingen kommando for denne har blitt satt."
+msgid ""
+"The 'Manual' browser command has been chosen, but no command has been set."
+msgstr ""
+"Klarte ikke å starte en nettleser fordi 'Manuell' nettleserkommando er "
+"valgt, men ingen kommando for denne har blitt satt."
 
 msgid "The following plugins will be unloaded."
 msgstr "Følgende tillegg kunne ikke losses."
@@ -11211,7 +12168,9 @@
 msgid "Could not unload plugin"
 msgstr "Klarte ikke fjerne tillegget"
 
-msgid "The plugin could not be unloaded now, but will be disabled at the next startup."
+msgid ""
+"The plugin could not be unloaded now, but will be disabled at the next "
+"startup."
 msgstr "Tillegget kan ikke fjernes nå, men blir deaktivert ved neste oppstart."
 
 #, c-format
@@ -11281,7 +12240,7 @@
 msgstr "Sender en _beskjed"
 
 msgid "Ope_n an IM window"
-msgstr "Åpn_e vindu for direktemelding"
+msgstr "Åpn_e vindu for lynmelding"
 
 msgid "_Pop up a notification"
 msgstr "_Varslingsvindu spretter opp"
@@ -11319,8 +12278,12 @@
 msgid "Install Theme"
 msgstr "Installer tema"
 
-msgid "Select a smiley theme that you would like to use from the list below. New themes can be installed by dragging and dropping them onto the theme list."
-msgstr "Velg smilefjes-temaet du vil bruke fra listen nedenfor. Nye temaer kan installeres ved å dra og slippe dem over temalisten."
+msgid ""
+"Select a smiley theme that you would like to use from the list below. New "
+"themes can be installed by dragging and dropping them onto the theme list."
+msgstr ""
+"Velg smilefjes-temaet du vil bruke fra listen nedenfor. Nye temaer kan "
+"installeres ved å dra og slippe dem over temalisten."
 
 msgid "Icon"
 msgstr "Ikon"
@@ -11344,7 +12307,7 @@
 msgstr "Skjuling av samtalevindu"
 
 msgid "_Hide new IM conversations:"
-msgstr "_Gjem nye direktemeldingssamtaler:"
+msgstr "_Gjem nye lynmeldingssamtaler:"
 
 msgid "When away"
 msgstr "Når fraværende"
@@ -11354,7 +12317,7 @@
 msgstr "Faner"
 
 msgid "Show IMs and chats in _tabbed windows"
-msgstr "Vis direktemeldinger og samtalegrupper i _faner"
+msgstr "Vis lynmeldinger og samtalegrupper i _faner"
 
 msgid "Show close b_utton on tabs"
 msgstr "Vis _lukkeknapp på faner"
@@ -11387,7 +12350,7 @@
 msgstr "Vis _formateringsverktøy på innkommende beskjeder"
 
 msgid "Close IMs immediately when the tab is closed"
-msgstr "Lukk direktemeldinger straks når fanen er lukket"
+msgstr "Lukk lynmeldinger straks når fanen er lukket"
 
 msgid "Show _detailed information"
 msgstr "Vis _detaljert informasjon"
@@ -11405,7 +12368,7 @@
 msgstr "Bruk behagelig scrolling"
 
 msgid "F_lash window when IMs are received"
-msgstr "B_link vinduet når nye direktemeldinger mottas"
+msgstr "B_link vinduet når nye lynmeldinger mottas"
 
 msgid "Minimi_ze new conversation windows"
 msgstr "Mini_mer nye samtalevinduer"
@@ -11428,8 +12391,12 @@
 msgid "Default Formatting"
 msgstr "Standardformatering"
 
-msgid "This is how your outgoing message text will appear when you use protocols that support formatting."
-msgstr "Slik vil dine utgående meldinger se ut når du bruker protokoller som støtter formatering."
+msgid ""
+"This is how your outgoing message text will appear when you use protocols "
+"that support formatting."
+msgstr ""
+"Slik vil dine utgående meldinger se ut når du bruker protokoller som støtter "
+"formatering."
 
 msgid "Cannot start proxy configuration program."
 msgstr "Klarte ikke starte innstillingsprogrammet for mellomlageret."
@@ -11492,6 +12459,10 @@
 msgid "No proxy"
 msgstr "Ingen proxy"
 
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "Bruk fjern DNS med SOCKS4-mellomtenarar"
+
 msgid "_User:"
 msgstr "_Bruker:"
 
@@ -11572,21 +12543,27 @@
 msgid "Sound Selection"
 msgstr "Lydvalg"
 
+#, c-format
 msgid "Quietest"
 msgstr "Stillest"
 
+#, c-format
 msgid "Quieter"
 msgstr "Stillere"
 
+#, c-format
 msgid "Quiet"
 msgstr "Stille"
 
+#, c-format
 msgid "Loud"
 msgstr "Høy"
 
+#, c-format
 msgid "Louder"
 msgstr "Høyere"
 
+#, c-format
 msgid "Loudest"
 msgstr "Høyest"
 
@@ -11690,14 +12667,14 @@
 msgid "Block only the users below"
 msgstr "Blokker kun brukerne vist nedenfor"
 
-msgid "Privacy"
+msgid "Personvern"
 msgstr "Sikkerhet"
 
 msgid "Changes to privacy settings take effect immediately."
 msgstr "Endringer i sikkerhetsinnstillingene skjer umiddelbart."
 
 msgid "Set privacy for:"
-msgstr "Sett sikkerhet for:"
+msgstr "Sett personvern for:"
 
 #. Remove All button
 msgid "Remove Al_l"
@@ -11809,8 +12786,12 @@
 msgid "Duplicate Shortcut"
 msgstr "Duplikat snarvei"
 
-msgid "A custom smiley for the selected shortcut already exists. Please specify a different shortcut."
-msgstr "Et tilpasset smilefjes finnes allerede for den valgte snarveien. Oppgi en annen snarvei."
+msgid ""
+"A custom smiley for the selected shortcut already exists. Please specify a "
+"different shortcut."
+msgstr ""
+"Et tilpasset smilefjes finnes allerede for den valgte snarveien. Oppgi en "
+"annen snarvei."
 
 msgid "Please select an image for the smiley."
 msgstr "Velg et bilde for smilefjeset."
@@ -11867,14 +12848,20 @@
 msgstr "Kan ikke sende mappe %s."
 
 #, c-format
-msgid "%s cannot transfer a folder. You will need to send the files within individually."
+msgid ""
+"%s cannot transfer a folder. You will need to send the files within "
+"individually."
 msgstr "%s kan ikke overføre en mappe. Du må sende filene inni hver for seg."
 
 msgid "You have dragged an image"
 msgstr "Du har dratt et bilde"
 
-msgid "You can send this image as a file transfer, embed it into this message, or use it as the buddy icon for this user."
-msgstr "Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden eller bruk det som kontaktikon for denne brukeren."
+msgid ""
+"You can send this image as a file transfer, embed it into this message, or "
+"use it as the buddy icon for this user."
+msgstr ""
+"Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden "
+"eller bruk det som kontaktikon for denne brukeren."
 
 msgid "Set as buddy icon"
 msgstr "Sett som kontaktikon"
@@ -11888,11 +12875,19 @@
 msgid "Would you like to set it as the buddy icon for this user?"
 msgstr "Vil du sette dette som kontaktikon for denne brukeren?"
 
-msgid "You can send this image as a file transfer, or use it as the buddy icon for this user."
-msgstr "Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden eller bruk det som kontaktikon for denne brukeren."
-
-msgid "You can insert this image into this message, or use it as the buddy icon for this user"
-msgstr "Du kan sette inn dette bildet i beskjed eller bruke det som kontaktikon for denne brukeren"
+msgid ""
+"You can send this image as a file transfer, or use it as the buddy icon for "
+"this user."
+msgstr ""
+"Du kan sende dette bildet som filoverføring, sett det inn i denne bekjeden "
+"eller bruk det som kontaktikon for denne brukeren."
+
+msgid ""
+"You can insert this image into this message, or use it as the buddy icon for "
+"this user"
+msgstr ""
+"Du kan sette inn dette bildet i beskjed eller bruke det som kontaktikon for "
+"denne brukeren"
 
 #. I don't know if we really want to do anything here.  Most of the desktop item types are crap like
 #. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
@@ -11902,8 +12897,12 @@
 msgid "Cannot send launcher"
 msgstr "Klarte ikke sende lasteren"
 
-msgid "You dragged a desktop launcher. Most likely you wanted to send whatever this launcher points to instead of this launcher itself."
-msgstr "Du dro en skrivebordstarter. Sannsynligvis ville du sende det som starteren peker til og ikke selve starteren."
+msgid ""
+"You dragged a desktop launcher. Most likely you wanted to send whatever this "
+"launcher points to instead of this launcher itself."
+msgstr ""
+"Du dro en skrivebordstarter. Sannsynligvis ville du sende det som starteren "
+"peker til og ikke selve starteren."
 
 #, c-format
 msgid ""
@@ -11930,8 +12929,10 @@
 msgstr "Klarte ikke å åpne fil '%s': %s"
 
 #, c-format
-msgid "Failed to load image '%s': reason not known, probably a corrupt image file"
-msgstr "Feilet å laste bilde '%s': grunn ukjent, sannsynligvis en korrupt bilde fil"
+msgid ""
+"Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr ""
+"Feilet å laste bilde '%s': grunn ukjent, sannsynligvis en korrupt bilde fil"
 
 msgid "Save File"
 msgstr "Lagre fil"
@@ -12042,8 +13043,12 @@
 msgid "Point values to use when..."
 msgstr "Verdier for bruk når..."
 
-msgid "The buddy with the <i>largest score</i> is the buddy who will have priority in the contact.\n"
-msgstr "Kontakten med den <i>største score</i> er kontakten som vil ha prioritet i kontakten.\n"
+msgid ""
+"The buddy with the <i>largest score</i> is the buddy who will have priority "
+"in the contact.\n"
+msgstr ""
+"Kontakten med den <i>største score</i> er kontakten som vil ha prioritet i "
+"kontakten.\n"
 
 msgid "Use last buddy when scores are equal"
 msgstr "Bruk den siste kontakten når resultatene er lik"
@@ -12063,12 +13068,18 @@
 #. *< name
 #. *< version
 #. *< summary
-msgid "Allows for controlling the values associated with different buddy states."
-msgstr "Lar deg kontrollere verdiene for de ulike tilstandene kontakter kan være i."
+msgid ""
+"Allows for controlling the values associated with different buddy states."
+msgstr ""
+"Lar deg kontrollere verdiene for de ulike tilstandene kontakter kan være i."
 
 #. *< description
-msgid "Allows for changing the point values of idle/away/offline states for buddies in contact priority computations."
-msgstr "Lar deg endre vektingen for inaktiv/borte/avlogget for kontakter i kontaktprioritetsutregninger."
+msgid ""
+"Allows for changing the point values of idle/away/offline states for buddies "
+"in contact priority computations."
+msgstr ""
+"Lar deg endre vektingen for inaktiv/borte/avlogget for kontakter i "
+"kontaktprioritetsutregninger."
 
 msgid "Conversation Colors"
 msgstr "Samtalefarger"
@@ -12102,7 +13113,7 @@
 msgstr "Legg til i Samtaler"
 
 msgid "Apply in IMs"
-msgstr "Legg til i Direktemeldinger"
+msgstr "Legg til i Lynmeldinger"
 
 msgid "By conversation count"
 msgstr "Etter samtaleantall"
@@ -12111,14 +13122,20 @@
 msgstr "Samtaleplassering"
 
 #. Translators: "New conversations" should match the text in the preferences dialog and "By conversation count" should be the same text used above
-msgid "Note: The preference for \"New conversations\" must be set to \"By conversation count\"."
-msgstr "NB: Preferansene for \"Nye samtaler\" må være satt til \"By conversation count\"."
+msgid ""
+"Note: The preference for \"New conversations\" must be set to \"By "
+"conversation count\"."
+msgstr ""
+"NB: Preferansene for \"Nye samtaler\" må være satt til \"By conversation "
+"count\"."
 
 msgid "Number of conversations per window"
 msgstr "Antall samtaler per vindu"
 
 msgid "Separate IM and Chat windows when placing by number"
-msgstr "Separere direktemeldings- og chattevinduer når programet plasserer etter nummer"
+msgstr ""
+"Separere lynmeldings- og chattevinduer når programet plasserer etter "
+"nummer"
 
 #. *< type
 #. *< ui_requirement
@@ -12136,8 +13153,12 @@
 
 #. *< summary
 #. *  description
-msgid "Restrict the number of conversations per windows, optionally separating IMs and Chats"
-msgstr "Begrens det maksimale antallet samtaler per vindu, og eventuelt separering av direktemeldinger og chat"
+msgid ""
+"Restrict the number of conversations per windows, optionally separating IMs "
+"and Chats"
+msgstr ""
+"Begrens det maksimale antallet samtaler per vindu, og eventuelt separering "
+"av lynmeldinger og chat"
 
 #. Configuration frame
 msgid "Mouse Gestures Configuration"
@@ -12170,22 +13191,26 @@
 
 #. *  description
 msgid ""
-"Allows support for mouse gestures in conversation windows. Drag the middle mouse button to perform certain actions:\n"
+"Allows support for mouse gestures in conversation windows. Drag the middle "
+"mouse button to perform certain actions:\n"
 " • Drag down and then to the right to close a conversation.\n"
 " • Drag up and then to the left to switch to the previous conversation.\n"
 " • Drag up and then to the right to switch to the next conversation."
 msgstr ""
-"Gir støtte til musebevegelser i samtalevinduer. Dra midtknappen på musa for å utføre enkelte handlinger:\n"
+"Gir støtte til musebevegelser i samtalevinduer. Dra midtknappen på musa for "
+"å utføre enkelte handlinger:\n"
 " • dra ned og til høyre: lar deg lukke en samtale.\n"
 " • dra opp og til venstre: bytter til forrige samtale.\n"
 " • dra opp og til høyre: bytter til neste samtale."
 
 msgid "Instant Messaging"
-msgstr "Direktemeldinger"
+msgstr "Lynmeldinger"
 
 #. Add the label.
 msgid "Select a person from your address book below, or add a new person."
-msgstr "Velg en person fra adresseboken som er vist under, eller legg til en ny person."
+msgstr ""
+"Velg en person fra adresseboken som er vist under, eller legg til en ny "
+"person."
 
 msgid "Group:"
 msgstr "Gruppe:"
@@ -12199,8 +13224,12 @@
 msgstr "Velg kontakt"
 
 #. Add the label.
-msgid "Select a person from your address book to add this buddy to, or create a new person."
-msgstr "Velg en person fra adresseboka for å legge til denne kontakten, eller lag en ny kontakt."
+msgid ""
+"Select a person from your address book to add this buddy to, or create a new "
+"person."
+msgstr ""
+"Velg en person fra adresseboka for å legge til denne kontakten, eller lag en "
+"ny kontakt."
 
 #. Add the expander
 msgid "User _details"
@@ -12223,7 +13252,7 @@
 msgstr "Legg til i adresseboka"
 
 msgid "Send Email"
-msgstr "Send E-post"
+msgstr "Send e-post"
 
 #. Configuration frame
 msgid "Evolution Integration Configuration"
@@ -12322,7 +13351,8 @@
 msgstr "Sjekker for ny lokal e-post."
 
 msgid "Adds a small box to the buddy list that shows if you have new mail."
-msgstr "Legger til en liten boks i kontaktlista som viser om du har fått e-post."
+msgstr ""
+"Legger til en liten boks i kontaktlista som viser om du har fått e-post."
 
 msgid "Markerline"
 msgstr "Markeringslinje"
@@ -12337,14 +13367,18 @@
 msgstr "Tegn Understrek i "
 
 msgid "_IM windows"
-msgstr "Vinduer for direktemeldinger"
+msgstr "Vinduer for lynmeldinger"
 
 #
 msgid "C_hat windows"
 msgstr "_Samtalevinduer"
 
-msgid "A music messaging session has been requested. Please click the MM icon to accept."
-msgstr "En musikk samtale økt har blitt forespurt. Vennligst klikk på MM ikonet for å akseptere."
+msgid ""
+"A music messaging session has been requested. Please click the MM icon to "
+"accept."
+msgstr ""
+"En musikk samtale økt har blitt forespurt. Vennligst klikk på MM ikonet for "
+"å akseptere."
 
 msgid "Music messaging session confirmed."
 msgstr "Musikk samtale økt bekreftet."
@@ -12383,8 +13417,12 @@
 msgstr "Musikk Samtale Tillegg for samarbeids komposisjon."
 
 #. *  summary
-msgid "The Music Messaging Plugin allows a number of users to simultaneously work on a piece of music by editting a common score in real-time."
-msgstr "Musikk Samtale Tillegg tillater flere brukere å arbeide på et stykke musikk samtidig ved å redigere et felles resultat i samtid."
+msgid ""
+"The Music Messaging Plugin allows a number of users to simultaneously work "
+"on a piece of music by editting a common score in real-time."
+msgstr ""
+"Musikk Samtale Tillegg tillater flere brukere å arbeide på et stykke musikk "
+"samtidig ved å redigere et felles resultat i samtid."
 
 #. ---------- "Notify For" ----------
 msgid "Notify For"
@@ -12527,6 +13565,7 @@
 msgid "Select Color"
 msgstr "Velg farge"
 
+#, c-format
 msgid "Select Interface Font"
 msgstr "Velg Grensesnitt Font"
 
@@ -12591,8 +13630,12 @@
 msgid "Lets you send raw input to text-based protocols."
 msgstr "Lar deg sende direktekommandoer til tekstbaserte protokoller."
 
-msgid "Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit 'Enter' in the entry box to send. Watch the debug window."
-msgstr "Lar deg sende direktekommandoer til tekstbaserte protokoller (XMPP, MSN, IRC, TOC). Trykk «Enter» for å sende og sjekk feilsøkingsvinduet."
+msgid ""
+"Lets you send raw input to text-based protocols (XMPP, MSN, IRC, TOC). Hit "
+"'Enter' in the entry box to send. Watch the debug window."
+msgstr ""
+"Lar deg sende direktekommandoer til tekstbaserte protokoller (XMPP, MSN, "
+"IRC, TOC). Trykk «Enter» for å sende og sjekk feilsøkingsvinduet."
 
 #, c-format
 msgid "You can upgrade to %s %s today."
@@ -12623,8 +13666,11 @@
 msgstr "Sjekker periodisk for nye utgaver."
 
 #. *  description
-msgid "Checks periodically for new releases and notifies the user with the ChangeLog."
-msgstr "Sjekker periodisk for nye versjoner, og gir endringslista til brukeren."
+msgid ""
+"Checks periodically for new releases and notifies the user with the "
+"ChangeLog."
+msgstr ""
+"Sjekker periodisk for nye versjoner, og gir endringslista til brukeren."
 
 #. *< major version
 #. *< minor version
@@ -12643,8 +13689,12 @@
 msgstr "Send-knapp i samtalevindu"
 
 #. *< summary
-msgid "Adds a Send button to the entry area of the conversation window. Intended for when no physical keyboard is present."
-msgstr "Legg til en Send-knapp i samtalevinduet. Tenkt brukt når intet fysisk tastatur er tilgjengelig."
+msgid ""
+"Adds a Send button to the entry area of the conversation window. Intended "
+"for when no physical keyboard is present."
+msgstr ""
+"Legg til en Send-knapp i samtalevinduet. Tenkt brukt når intet fysisk "
+"tastatur er tilgjengelig."
 
 msgid "Duplicate Correction"
 msgstr "Dupliserings Korrigering"
@@ -12736,6 +13786,7 @@
 msgid "Timestamp Format Options"
 msgstr "Innstillinger for Tidsstempel Format"
 
+#, c-format
 msgid "_Force 24-hour time format"
 msgstr "_Tving 24-timers format"
 
@@ -12771,24 +13822,28 @@
 msgstr "Lager egne tidsstempel formater for beskjeder."
 
 #. *  description
-msgid "This plugin allows the user to customize conversation and logging message timestamp formats."
-msgstr "Dette tillegget tillater brukeren å lage egne samtale og loggings tidsstempler."
+msgid ""
+"This plugin allows the user to customize conversation and logging message "
+"timestamp formats."
+msgstr ""
+"Dette tillegget tillater brukeren å lage egne samtale og loggings "
+"tidsstempler."
 
 msgid "Opacity:"
 msgstr "Ugjennomsiktighet:"
 
 #. IM Convo trans options
 msgid "IM Conversation Windows"
-msgstr "Samtalevinduer for direktemeldinger"
+msgstr "Samtalevinduer for lynmeldinger"
 
 msgid "_IM window transparency"
-msgstr "Gjennomsiktige vinduer for direktemeldinger"
+msgstr "Gjennomsiktige vinduer for lynmeldinger"
 
 msgid "_Show slider bar in IM window"
-msgstr "Vis _glideknapp i direktemeldingsvindu"
+msgstr "Vis _glideknapp i lynmeldingsvindu"
 
 msgid "Remove IM window transparency on focus"
-msgstr "Ta vekk transparens i direktemeldingsvindu ved fokus"
+msgstr "Ta vekk transparens i lynmeldingsvindu ved fokus"
 
 #
 msgid "Always on top"
@@ -12821,11 +13876,13 @@
 
 #. *  description
 msgid ""
-"This plugin enables variable alpha transparency on conversation windows and the buddy list.\n"
+"This plugin enables variable alpha transparency on conversation windows and "
+"the buddy list.\n"
 "\n"
 "* Note: This plugin requires Win2000 or greater."
 msgstr ""
-"Dette programtillegget gir variabel alfa-transparens i samtalevindu og kontaktlisten.\n"
+"Dette programtillegget gir variabel alfa-transparens i samtalevindu og "
+"kontaktlisten.\n"
 "\n"
 "*Merk: Tillegget krever Windows 2000 eller senere utgaver."
 
@@ -12851,17 +13908,17 @@
 msgid "Only when docked"
 msgstr "Kun når skjult i systemstatusfeltet"
 
-msgid "_Flash window when chat messages are received"
-msgstr "La vinduet _blinke når det kommer nye beskjeder"
-
 msgid "Windows Pidgin Options"
 msgstr "Valg for Windows Pidgin"
 
 msgid "Options specific to Pidgin for Windows."
 msgstr "Innstillinger som er spesifikke for Pidgin på Windows."
 
-msgid "Provides options specific to Pidgin for Windows , such as buddy list docking."
-msgstr "Gir spesifikke innstillinger for Pidgin på Windows, slik som skjuling av kontaktliste i systemstatusfeltet."
+msgid ""
+"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgstr ""
+"Gir spesifikke innstillinger for Pidgin på Windows, slik som skjuling av "
+"kontaktliste i systemstatusfeltet."
 
 msgid "<font color='#777777'>Logged out.</font>"
 msgstr "<font color='#777777'>Logget ut.</font>"
@@ -12898,7 +13955,14 @@
 
 #. *  description
 msgid "This plugin is useful for debbuging XMPP servers or clients."
-msgstr "Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter."
+msgstr ""
+"Dette tillegget er kjekt å ha for debugging av XMPP servere og klienter."
+
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Klarte ikke hente MSN-adressebok"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "La vinduet _blinke når det kommer nye beskjeder"
 
 #, fuzzy
 #~ msgid "Connection to server lost (no data received within %d second)"
@@ -12908,6 +13972,7 @@
 #~ "Tilkobling til server mistet (ingen data mottatt iløpet av %d sekunder)"
 #~ msgstr[1] ""
 #~ "Tilkobling til server mistet (ingen data mottatt iløpet av %d sekunder)"
+
 #~ msgid ""
 #~ "You may be disconnected shortly.  You may want to use TOC until this is "
 #~ "fixed.  Check %s for updates."
@@ -12922,6 +13987,7 @@
 #, fuzzy
 #~ msgid "Can not decrypt get server reply"
 #~ msgstr "Kan ikke hente tjenerinformasjon"
+
 #~ msgid "Keep alive error"
 #~ msgstr "Hold i livet feil"
 
@@ -12936,16 +14002,20 @@
 #, fuzzy
 #~ msgid "Connecting server ..."
 #~ msgstr "Koble til tjener"
+
 #~ msgid "Failed to send IM."
-#~ msgstr "Feilet i å sende direktemelding."
+#~ msgstr "Feilet i å sende lynmelding."
+
 #~ msgid "User information for %s unavailable"
 #~ msgstr "Brukerinformasjon for %s er ikke tilgjengelig"
+
 #~ msgid "A group with the name already exists."
 #~ msgstr "En gruppe med dette navnet eksisterer allerede."
 
 #, fuzzy
 #~ msgid "Primary Information"
 #~ msgstr "Profilinformasjon"
+
 #~ msgid "Blood Type"
 #~ msgstr "Blodtype"
 
@@ -12956,6 +14026,7 @@
 #, fuzzy
 #~ msgid "Successed:"
 #~ msgstr "Hastighet:"
+
 #~ msgid ""
 #~ "Setting custom faces is not currently supported. Please choose an image "
 #~ "from %s."
@@ -12970,6 +14041,7 @@
 #, fuzzy
 #~ msgid "You rejected %d's request"
 #~ msgstr "Uventet forespørsel"
+
 #~ msgid "Reject request"
 #~ msgstr "Avslå forespørsel"
 
@@ -12984,12 +14056,14 @@
 #, fuzzy
 #~ msgid "QQ Number Error"
 #~ msgstr "QQ Nummer"
+
 #~ msgid "Group Description"
 #~ msgstr "Gruppebeskrivelse"
 
 #, fuzzy
 #~ msgid "Auth"
 #~ msgstr "Godkjenn"
+
 #~ msgid "Approve"
 #~ msgstr "Godkjenn"
 
@@ -13005,20 +14079,24 @@
 #, fuzzy
 #~ msgid "[%d] added to Qun \"%d\""
 #~ msgstr "Du [%d] har blitt lagt til i gruppen \"%d\""
+
 #~ msgid "I am a member"
 #~ msgstr "Jeg er en medlem"
 
 #, fuzzy
 #~ msgid "I am requesting"
 #~ msgstr "Ugyldig forespørsel"
+
 #~ msgid "I am the admin"
 #~ msgstr "Jeg er admin"
+
 #~ msgid "Unknown status"
 #~ msgstr "Ukjent status"
 
 #, fuzzy
 #~ msgid "Remove from Qun"
 #~ msgstr "Fjern gruppe"
+
 #~ msgid "You entered a group ID outside the acceptable range"
 #~ msgstr "Du tastet inn en gruppe ID utenfor den aksepterte rekkevidden"
 
@@ -13059,6 +14137,7 @@
 #, fuzzy
 #~ msgid "Leave the QQ Qun"
 #~ msgstr "Forlat denne QQ Qun"
+
 #~ msgid "Block this buddy"
 #~ msgstr "Blokker denne kontakten"
 
@@ -13091,6 +14170,7 @@
 #, fuzzy
 #~ msgid "QQ Budy"
 #~ msgstr "Legg til kontakt"
+
 #~ msgid "%s wants to add you [%s] as a friend"
 #~ msgstr "%s ønsker å legge deg [%s] som en venn"
 
@@ -13109,32 +14189,42 @@
 #, fuzzy
 #~ msgid "Network disconnected"
 #~ msgstr "Frakoblet"
+
 #~ msgid "developer"
 #~ msgstr "utvikler"
+
 #~ msgid "XMPP developer"
 #~ msgstr "XMPP-utvikler"
+
 #~ msgid "Artists"
 #~ msgstr "Artister"
+
 #~ msgid ""
 #~ "You are using %s version %s.  The current version is %s.  You can get it "
 #~ "from <a href=\"%s\">%s</a><hr>"
 #~ msgstr ""
 #~ "Du bruker %s versjon %s. Den nåværende versjonen er %s.  Du kan hente den "
 #~ "fra <a href=\"%s\">%s</a><hr>"
+
 #~ msgid "<b>ChangeLog:</b><br>%s"
 #~ msgstr "<b>Endringslogg:</b><br>%s"
+
 #~ msgid "Screen name:"
 #~ msgstr "Skjermnavn:"
+
 #~ msgid "Pounce only when my status is not available"
 #~ msgstr "Pounce kun når min status er ikke tilgjengelig"
+
 #~ msgid "Someone says your screen name in chat"
 #~ msgstr "Noen roper skjermnavnet ditt i en samtale"
+
 #~ msgid "EOF while reading from resolver process"
 #~ msgstr "Feil under lesing fra socket"
 
 #, fuzzy
 #~ msgid "Error setting socket options"
 #~ msgstr "Feil: kunne ikke koble til"
+
 #~ msgid ""
 #~ "This server requires plaintext authentication over an unencrypted "
 #~ "connection.  Allow this and continue authentication?"
@@ -13153,10 +14243,12 @@
 #, fuzzy
 #~ msgid "Windows Live ID authentication Failed"
 #~ msgstr "Autentisering feilet"
+
 #~ msgid ""
 #~ "Sorry, passwords over %d characters in length (yours is %d) are not "
 #~ "supported by MySpace."
 #~ msgstr "Sorry, passord over %d tegn (du har %d) er ikke støttet av MySpace."
+
 #~ msgid ""
 #~ "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile."
 #~ "username and choose a username and try to login again."
@@ -13164,73 +14256,99 @@
 #~ "Vennligst gå til http://editprofile.myspace.com/index.cfm?"
 #~ "fuseaction=profile.username og velg et brukernavn og prøv å logge inn "
 #~ "igjen."
+
 #~ msgid "Too evil (sender)"
 #~ msgstr "Altfor ond (sender)"
+
 #~ msgid "Too evil (receiver)"
 #~ msgstr "Altfor ond (mottaker)"
+
 #~ msgid "Screen name sent"
 #~ msgstr "Skjermnavn sendt"
+
 #~ msgid "Invalid screen name."
 #~ msgstr "Ugyldig brukernavn."
+
 #~ msgid "Available Message"
 #~ msgstr "Tilstedebeskjed"
+
 #~ msgid "Screen name"
 #~ msgstr "Skjermnavn"
+
 #~ msgid "Away Message"
 #~ msgstr "Fraværsbeskjed"
+
 #~ msgid "<i>(retrieving)</i>"
 #~ msgstr "<i>(mottar)</i>"
 
 #, fuzzy
 #~ msgid "Use recent buddies group"
 #~ msgstr "Brukeren er ikke i gruppen"
+
 #~ msgid "Show how long you have been idle"
 #~ msgstr "Vis hvor lenge du har vært inaktiv"
+
 #~ msgid "Your information has been updated"
 #~ msgstr "Din informasjon har blitt oppdatert"
+
 #~ msgid "Input your reason:"
 #~ msgstr "Sett inn din grunn:"
+
 #~ msgid "You have successfully removed a buddy"
 #~ msgstr "Fjerning av kompis var vellykket"
+
 #~ msgid "You have successfully removed yourself from your friend's buddy list"
 #~ msgstr "Fjerning av deg selv fra kompisen dins venneliste var vellykket"
+
 #~ msgid "You have added %d to buddy list"
 #~ msgstr "Legg til brukeren %d i kontaktlisten din"
 
 #, fuzzy
 #~ msgid "Invalid QQid"
 #~ msgstr "Ugyldig authzid"
+
 #~ msgid "Please enter external group ID"
 #~ msgstr "Skriv ekstern gruppe ID"
+
 #~ msgid "Your request to join group %d has been approved by admin %d"
 #~ msgstr ""
 #~ "Din forespørsel til å bli med i gruppen %d har blitt godkjent av admin %d"
+
 #~ msgid "This group has been added to your buddy list"
 #~ msgstr "Denne gruppen har blitt lagt til kontaktlisten din"
+
 #~ msgid "I am applying to join"
 #~ msgstr "Jeg søker om å bli med"
+
 #~ msgid "You have successfully left the group"
 #~ msgstr "Du har forlatt gruppen"
+
 #~ msgid "QQ Group Auth"
 #~ msgstr "QQ Group Auth"
+
 #~ msgid "Your authorization request has been accepted by the QQ server"
 #~ msgstr "Din autoriserings forespørsel har blitt godtatt av QQ serveren"
+
 #~ msgid "Code [0x%02X]: %s"
 #~ msgstr "Kode [0x%02X]: %s"
 
 #, fuzzy
 #~ msgid "Group Operation Error"
 #~ msgstr "Filoperasjonsfeil"
+
 #~ msgid "Enter your reason:"
 #~ msgstr "Skriv din grunn:"
 
 #, fuzzy
 #~ msgid "Error requesting login token"
 #~ msgstr "Feil: kunne ikke koble til"
+
 #~ msgid "Unable to login, check debug log"
 #~ msgstr "Klarte ikke logge inn, sjekk debug logg"
+
 #~ msgid "TCP Address"
 #~ msgstr "TCP-adresse"
+
 #~ msgid "UDP Address"
 #~ msgstr "UDP-adresse"
 
@@ -13241,16 +14359,22 @@
 #, fuzzy
 #~ msgid "Login failed, no reply"
 #~ msgstr "Pålogging feilet (%s)"
+
 #~ msgid "User %s rejected your request"
 #~ msgstr "Buker %s har avslått din forespørsel"
+
 #~ msgid "User %s approved your request"
 #~ msgstr "Buker %s har godkjent din forespørsel"
+
 #~ msgid "Cannot find/access ~/.silc directory"
 #~ msgstr "Kan ikke finne/åpne ~/.silc katalog"
+
 #~ msgid "Screen _name:"
 #~ msgstr "Skjerm_navn:"
+
 #~ msgid "_Merge"
 #~ msgstr "_Flette"
+
 #~ msgid ""
 #~ "Please enter the screen name of the person you would like to add to your "
 #~ "buddy list. You may optionally enter an alias, or nickname,  for the "
@@ -13261,14 +14385,19 @@
 #~ "kontaktlisten din. I tillegg kan du skrive inn et alias, eller kallenavn, "
 #~ "for kontakten. Aliaset vil bli vist i stedet for skjermnavnet der det er "
 #~ "mulig.\n"
+
 #~ msgid "A_ccount:"
 #~ msgstr "K_onto:"
+
 #~ msgid "_Screen name:"
 #~ msgstr "_Skjermnavn:"
+
 #~ msgid "User has typed something and stopped"
 #~ msgstr "Brukeren har skrevet noe og pauset"
+
 #~ msgid "S_mile!"
 #~ msgstr "S_mil!"
+
 #~ msgid ""
 #~ "%s%s<span weight=\"bold\">Written by:</span>\t%s\n"
 #~ "<span weight=\"bold\">Website:</span>\t\t%s\n"
@@ -13281,34 +14410,47 @@
 #, fuzzy
 #~ msgid "Display Statistics"
 #~ msgstr "Vis advarsler om tidsavbrudd"
+
 #~ msgid ""
 #~ "The contact availability plugin (cap) is used to display statistical "
 #~ "information about buddies in a users contact list."
 #~ msgstr ""
 #~ "Forutsigelse av Kontaktens Tilgjengelighet tillegg (cap) er brukt for å "
 #~ "vise statistisk informasjon om kontakter i en brukers kontaktliste."
+
 #~ msgid "There were errors unloading the plugin."
 #~ msgstr "Det oppsto feil i lossing av tillegget."
+
 #~ msgid "Couldn't open file"
 #~ msgstr "Klarte ikke åpne filen"
+
 #~ msgid "Error initializing session"
 #~ msgstr "Feil under oppretting av sesjon"
+
 #~ msgid "Unable to connect to contact server"
 #~ msgstr "Kan ikke koble til tjener"
+
 #~ msgid "Unable to connect to OIM server"
 #~ msgstr "Kan ikke koble til OIM server"
+
 #~ msgid "Unable to make SSL connection to server."
 #~ msgstr "Klarte ikke opprette SSL-forbindelse med tjeneren."
+
 #~ msgid "Invalid chat name specified."
 #~ msgstr "Ugyldig gruppesamtalenavn oppgitt."
+
 #~ msgid "%s changed status from %s to %s"
 #~ msgstr "%s har endret status fra %s til %s"
+
 #~ msgid "%s is now %s"
 #~ msgstr "%s er nå %s"
+
 #~ msgid "%s is no longer %s"
 #~ msgstr "%s er ikke lenger %s"
+
 #~ msgid "<span color=\"red\">%s disconnected: %s</span>"
 #~ msgstr "<span color=\"red\">%s koblet fra: %s</span>"
+
 #~ msgid ""
 #~ "%s\n"
 #~ "\n"
@@ -13319,10 +14461,13 @@
 #~ "\n"
 #~ "%s vil ikke prøve og koble til kontoen igjen for du har rettet på feilen "
 #~ "og slått på kontoen igjen."
+
 #~ msgid "Filter: "
 #~ msgstr "Filter: "
+
 #~ msgid "The dependent plugin %s failed to unload."
 #~ msgstr "Det nødvendige tillegget %s kunne ikke lastes."
+
 #~ msgid ""
 #~ "The AIM servers were temporarily unable to send your buddy list.  Your "
 #~ "buddy list is not lost, and will probably become available in a few hours."
@@ -13330,14 +14475,16 @@
 #~ "Pidgin klarte ikke å hente kontaktlisten din fra AIM-tjenerne. "
 #~ "Kontaktlisten er ikke tapt, og vil sannsynligvis bli tilgjengelig i løpet "
 #~ "av få timer."
+
 #~ msgid ""
 #~ "Always use ICQ proxy server for file transfers\n"
 #~ "(slower, but does not reveal your IP address)"
 #~ msgstr ""
 #~ "Alltid bruk ICQ proxy server for filoverføring\n"
 #~ "(saktere, men avslører ikke din IP adresse)"
+
 #~ msgid "/Buddies/Show"
 #~ msgstr "/Kontakter/Vis"
+
 #~ msgid "Autojoin when account becomes online."
 #~ msgstr "Autotilknytt når konto er tilkoblet."
-
--- a/po/pa.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/pa.po	Wed Mar 04 16:52:47 2009 +0000
@@ -1,22 +1,21 @@
-# translation of pidin.po to Punjabi
+# translation of pa.po to Punjabi
 # This file is distributed under the same license as the PACKAGE package.
 # Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER.
 #
-# Amanpreet Singh Alam[ਆਲਮ] <aalam@redhat.com>, 2005.
-# A S Alam <apbrar@gmail.com>, 2006, 2007.
-# A S Alam <aalam@users.sf.net>, 2007.
-msgid ""
-msgstr ""
-"Project-Id-Version: pidin\n"
+# A S Alam <aalam@users.sf.net>, 2005,2006, 2007, 2009.
+# Amanpreet Singh Alam <aalam@users.sf.net>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: pa\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-01 15:52-0800\n"
-"PO-Revision-Date: 2007-11-10 06:25+0530\n"
-"Last-Translator: A S Alam <apbrar@gmail.com>\n"
-"Language-Team: Punjabi <punjabi-l10n@users.sf.net>\n"
+"POT-Creation-Date: 2009-02-22 09:57-0500\n"
+"PO-Revision-Date: 2009-02-26 22:23+0530\n"
+"Last-Translator: Amanpreet Singh Alam <aalam@users.sf.net>\n"
+"Language-Team: Punjabi <punjabi-users@lists.sf.net>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "\n"
 "\n"
 "X-Generator: KBabel 1.11.4\n"
@@ -36,7 +35,7 @@
 "Usage: %s [OPTION]...\n"
 "\n"
 "  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
+"  -d, --debug         print debugging messages to stderr\n"
 "  -h, --help          display this help and exit\n"
 "  -n, --nologin       don't automatically login\n"
 "  -v, --version       display the current version and exit\n"
@@ -45,7 +44,7 @@
 "ਵਰਤੋਂ: %s [OPTION]...\n"
 "\n"
 "  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
+"  -d, --debug         print debugging messages to stderr\n"
 "  -h, --help          display this help and exit\n"
 "  -n, --nologin       don't automatically login\n"
 "  -v, --version       display the current version and exit\n"
@@ -64,19 +63,17 @@
 msgstr "ਗਲਤੀ"
 
 msgid "Account was not added"
-msgstr "ਅਕਾਊਂਟ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ"
-
-#, fuzzy
+msgstr "ਅਕਾਊਂਟ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਗਿਆ"
+
 msgid "Username of an account must be non-empty."
-msgstr "ਇੱਕ ਅਕਾਊਂਟ ਦਾ ਸਕਰੀਨ ਨਾਂ ਖਾਲੀ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।"
+msgstr "ਇੱਕ ਅਕਾਊਂਟ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਖਾਲੀ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ"
 
 msgid "New mail notifications"
-msgstr "ਨਵੀਂ ਚਿੱਠੀ ਸੂਚਨਾ"
+msgstr "ਨਵੀਂ ਮੇਲ ਨੋਟੀਫਿਕੇਸ਼ਨ"
 
 msgid "Remember password"
 msgstr "ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ"
 
-#, fuzzy
 msgid "There are no protocol plugins installed."
 msgstr "ਕੋਈ ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ।"
 
@@ -92,9 +89,8 @@
 msgid "Protocol:"
 msgstr "ਪ੍ਰੋਟੋਕਾਲ:"
 
-#, fuzzy
 msgid "Username:"
-msgstr "ਯੂਜ਼ਰ ਨਾਂ(_U):"
+msgstr "ਯੂਜ਼ਰ ਨਾਂ:"
 
 msgid "Password:"
 msgstr "ਪਾਸਵਰਡ:"
@@ -103,7 +99,6 @@
 msgstr "ਏਲੀਆਸ:"
 
 #. Register checkbox
-#, fuzzy
 msgid "Create this account on the server"
 msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ"
 
@@ -185,9 +180,8 @@
 msgid "Default"
 msgstr "ਡਿਫਾਲਟ"
 
-#, fuzzy
 msgid "You must provide a username for the buddy."
-msgstr "ਤੁਹਾਨੂੰ ਬੱਡੀ ਲਈ ਇੱਕ ਸਕਰੀਨ ਨਾਂ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।"
+msgstr "ਤੁਹਾਨੂੰ ਬੱਡੀ ਲਈ ਯੂਜ਼ਰ ਨਾਂ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।"
 
 msgid "You must provide a group."
 msgstr "ਤੁਹਾਨੂੰ ਇੱਕ ਗਰੁੱਪ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।"
@@ -204,13 +198,11 @@
 msgid "Username"
 msgstr "ਯੂਜ਼ਰ ਨਾਂ"
 
-#, fuzzy
 msgid "Alias (optional)"
-msgstr "ਉਪ ਨਾਂ ਸੰਪਰਕ"
-
-#, fuzzy
+msgstr "ਏਲੀਆਸ (ਚੋਣਵਾਂ)"
+
 msgid "Add in group"
-msgstr "ਗਰੁੱਪ ਸ਼ਾਮਿਲ"
+msgstr "ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ"
 
 msgid "Account"
 msgstr "ਅਕਾਊਂਟ"
@@ -352,9 +344,8 @@
 msgid "Plugins"
 msgstr "ਪਲੱਗਇਨ"
 
-#, fuzzy
 msgid "Block/Unblock"
-msgstr "ਪਾਬੰਦੀ ਹਟਾਓ"
+msgstr "ਪਾਬੰਦੀ ਲਗਾਓ/ਹਟਾਓ"
 
 msgid "Block"
 msgstr "ਪਾਬੰਦੀ"
@@ -362,11 +353,10 @@
 msgid "Unblock"
 msgstr "ਪਾਬੰਦੀ ਹਟਾਓ"
 
-#, fuzzy
 msgid ""
 "Please enter the username or alias of the person you would like to Block/"
 "Unblock."
-msgstr "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ IM ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਪਾਬੰਦੀ ਲਗਾਉਣੀ/ਹਟਾਉਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
 
 #. Not multiline
 #. Not masked?
@@ -377,9 +367,8 @@
 msgid "New Instant Message"
 msgstr "ਨਵਾਂ ਤਰੁੰਤ ਸੁਨੇਹਾ"
 
-#, fuzzy
 msgid "Please enter the username or alias of the person you would like to IM."
-msgstr "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ IM ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ IM ਚਾਹੁੰਦੇ ਹੋ।"
 
 msgid "Channel"
 msgstr "ਚੈਨਲ"
@@ -393,11 +382,10 @@
 msgid "Join"
 msgstr "ਦਾਖਲ"
 
-#, fuzzy
 msgid ""
 "Please enter the username or alias of the person whose log you would like to "
 "view."
-msgstr "ਉਸ ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਦਾ ਲਾਗ ਤੁਸੀਂ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr "ਉਸ ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ, ਜਿਸ ਦਾ ਲਾਗ ਤੁਸੀਂ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।"
 
 #. Create the "Options" frame.
 msgid "Options"
@@ -406,20 +394,17 @@
 msgid "Send IM..."
 msgstr "IM ਭੇਜੋ..."
 
-#, fuzzy
 msgid "Block/Unblock..."
-msgstr "ਪਾਬੰਦੀ ਹਟਾਓ"
+msgstr "ਪਾਬੰਦੀ ਲਗਾਓ/ਹਟਾਓ..."
 
 msgid "Join Chat..."
-msgstr "ਚੈਟ 'ਚ ਜੁਆਇੰਨ..."
-
-#, fuzzy
+msgstr "ਗੱਲਬਾਤ 'ਚ ਦਾਖਲ..."
+
 msgid "View Log..."
-msgstr "ਲਾਗ ਵੇਖੋ"
-
-#, fuzzy
+msgstr "ਲਾਗ ਵੇਖੋ..."
+
 msgid "View All Logs"
-msgstr "ਲਾਗ ਵੇਖੋ"
+msgstr "ਸਭ ਲਾਗ ਵੇਖੋ"
 
 msgid "Show"
 msgstr "ਵੇਖੋ"
@@ -442,16 +427,14 @@
 msgid "By Log Size"
 msgstr "ਲਾਗ ਸਾਈਜ਼ ਰਾਹੀਂ"
 
-#, fuzzy
 msgid "Buddy"
-msgstr "ਬੱਡੀ(_B):"
+msgstr "ਬੱਡੀ"
 
 msgid "Chat"
 msgstr "ਗੱਲਬਾਤ"
 
-#, fuzzy
 msgid "Grouping"
-msgstr "ਗਰੁੱਪ"
+msgstr "ਗਰੁੱਪਿੰਗ"
 
 msgid "Certificate Import"
 msgstr "ਸਰਟੀਫਿਕੇਟ ਇੰਪੋਰਟ"
@@ -562,7 +545,7 @@
 msgid ""
 "The account has disconnected and you are no longer in this chat. You will be "
 "automatically rejoined in the chat when the account reconnects."
-msgstr ""
+msgstr "ਅਕਾਊਂਟ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ ਗਿਆ ਹੈ ਅਤੇ ਤੁਸੀਂ ਇਹ ਗੱਲਬਾਤ ਨਹੀਂ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਸੀਂ ਅਕਾਊਂਟ ਮੁੜ-ਕੁਨੈਕਟ ਹੋਣ ਨਾਲ ਆਟੋਮੈਟਿਕ ਹੀ ਮੁੜ-ਕੁਨੈਕਟ ਹੋ ਜਾਉਗੇ।"
 
 msgid "No such command."
 msgstr "ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਹੈ।"
@@ -607,25 +590,24 @@
 msgid "Logging started. Future messages in this conversation will be logged."
 msgstr "ਲਾਗ ਕਰਨਾ ਸ਼ੁਰੂ ਕੀਤਾ ਹੈ। ਇਨ੍ਹਾਂ ਗੱਲਾਂ ਲਈ ਅਗਲੇ ਸੁਨੇਹੇ ਲਾਗ ਕੀਤੇ ਜਾਣਗੇ।"
 
-msgid ""
-"Logging stopped. Future messages in this conversation will not be logged."
+msgid "Logging stopped. Future messages in this conversation will not be logged."
 msgstr "ਲਾਗ ਕਰਨਾ ਬੰਦ ਕੀਤਾ। ਇਨ੍ਹਾਂ ਗੱਲਾਂ ਲਈ ਅਗਲੇ ਸੁਨੇਹੇ ਲਾਗ ਨਹੀਂ ਕੀਤੇ ਜਾਣਗੇ।"
 
 msgid "Send To"
 msgstr "ਭੇਜੋ"
 
-#, fuzzy
 msgid "Invite message"
-msgstr "ਸਨੇਹੇ 'ਚ ਸ਼ਾਮਿਲ"
+msgstr "ਸੱਦਾ ਸੁਨੇਹਾ"
 
 msgid "Invite"
 msgstr "ਸੱਦਾ"
 
-#, fuzzy
 msgid ""
 "Please enter the name of the user you wish to invite,\n"
 "along with an optional invite message."
-msgstr "ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
+msgstr ""
+"ਸੱਦਾ ਭੇਜਣ ਲਈ ਯੂਜ਼ਰ ਦਾ ਨਾਂ ਦਿਓ, ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਸੱਦਾ ਭੇਜਣਾ ਚਾਹੁੰਦੇ ਹੋ,\n"
+"ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਸੱਦਾ ਸੁਨੇਹਾ ਵੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
 
 msgid "Conversation"
 msgstr "ਗੱਲਾਂਬਾਤਾਂ"
@@ -639,9 +621,8 @@
 msgid "Add Buddy Pounce..."
 msgstr "ਬੱਡੀ ਪਉਨਸ ਸ਼ਾਮਲ..."
 
-#, fuzzy
 msgid "Invite..."
-msgstr "ਸੱਦਾ"
+msgstr "ਸੱਦਾ..."
 
 msgid "Enable Logging"
 msgstr "ਲਾਗ ਰੱਖਣ ਯੋਗ"
@@ -652,11 +633,11 @@
 msgid "<AUTO-REPLY> "
 msgstr "<AUTO-REPLY> "
 
-#, fuzzy, c-format
+#, c-format
 msgid "List of %d user:\n"
 msgid_plural "List of %d users:\n"
-msgstr[0] "ਯੂਜ਼ਰਾਂ ਦੀ ਲਿਸਟ:\n"
-msgstr[1] "ਯੂਜ਼ਰਾਂ ਦੀ ਲਿਸਟ:\n"
+msgstr[0] "%d ਯੂਜ਼ਰ ਦੀ ਲਿਸਟ:\n"
+msgstr[1] "%d ਯੂਜ਼ਰਾਂ ਦੀ ਲਿਸਟ:\n"
 
 msgid "Supported debug options are:  version"
 msgstr "ਸਹਿਯੋਗੀ ਡੀਬੱਗ ਚੋਣਾਂ ਹਨ:  version"
@@ -675,11 +656,11 @@
 msgid ""
 "%s is not a valid message class. See '/help msgcolor' for valid message "
 "classes."
-msgstr ""
+msgstr "%s ਇੱਕ ਵੈਧ ਸੁਨੇਹਾ ਕਲਾਸ ਨਹੀਂ ਹੈ। ਵੈਧ ਸੁਨੇਹਾ ਕਲਾਸਾਂ ਲਈ '/help msgcolor' ਵੇਖੋ।"
 
 #, c-format
 msgid "%s is not a valid color. See '/help msgcolor' for valid colors."
-msgstr ""
+msgstr "%s ਇੱਕ ਵੈਧ ਰੰਗ ਨਹੀਂ ਹੈ। ਵੈਧ ਰੰਗਾਂ ਲਈ '/help msgcolor'  ਵੇਖੋ।"
 
 msgid ""
 "say &lt;message&gt;:  Send a message normally as if you weren't using a "
@@ -728,6 +709,9 @@
 "background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
 "cyan, default<br><br>EXAMPLE:<br>    msgcolor send cyan default"
 msgstr ""
+"msgcolor &lt;class&gt; &lt;foreground&gt; &lt;background&gt;: ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਸੁਨੇਹਿਆਂ ਦੀਆਂ ਵੱਖ ਵੱਖ ਕਲਾਸਾਂ ਲਈ ਰੰਗ ਸੈੱਟ ਕਰੋ। <br>    &lt;"
+"class&gt;: receive, send, highlight, action, timestamp<br>    &lt;foreground/"
+"background&gt;: ਕਾਲਾ, ਲਾਲ, ਹਰਾ, ਨੀਲਾ, ਚਿੱਟਾ, ਗਰੇ, ਗੂੜਾ-ਗਰੇ, ਮੈਗਨਿਟਾ, ਕਿਰਮਚੀ, ਡਿਫਾਲਟ<br><br>ਜਿਵੇਂ:<br>    msgcolor send cyan default"
 
 msgid "Unable to open file."
 msgstr "ਫਾਇਲ ਖੋਲਣ ਲਈ ਅਸਫਲ ਹੈ।"
@@ -748,11 +732,11 @@
 msgid "Pause"
 msgstr "ਵਿਰਾਮ"
 
-#, fuzzy, c-format
+# , c-format
 msgid "File Transfers - %d%% of %d file"
 msgid_plural "File Transfers - %d%% of %d files"
-msgstr[0] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %d%% ਫਾਇਲਾਂ %d ਵਿੱਚੋਂ"
-msgstr[1] "ਫਾਇਲ ਟਰਾਂਸਫਰ - %d%% ਫਾਇਲਾਂ %d ਵਿੱਚੋਂ"
+msgstr[0] "ਫਾਇਲ ਟਰਾਂਸਫਰ -  %2$d ਵਿੱਚੋਂ %1$d%% ਫਾਇਲ"
+msgstr[1] "ਫਾਇਲ ਟਰਾਂਸਫਰ -  %2$d ਵਿੱਚੋਂ %1$d%% ਫਾਇਲਾਂ"
 
 #. Create the window.
 msgid "File Transfers"
@@ -799,13 +783,11 @@
 msgid "%.2f KiB/s"
 msgstr "%.2f KiB/s"
 
-#, fuzzy
 msgid "Sent"
-msgstr "ਸੈੱਟ"
-
-#, fuzzy
+msgstr "ਭੇਜੇ"
+
 msgid "Received"
-msgstr "ਪ੍ਰਾਪਤ ਹੋਏ ਸੁਨੇਹੇ"
+msgstr "ਮਿਲੇ"
 
 msgid "Finished"
 msgstr "ਮੁਕੰਮਲ"
@@ -814,21 +796,19 @@
 msgid "The file was saved as %s."
 msgstr "ਫਾਇਲ ਨੂੰ %s ਵਾਂਗ ਸੰਭਾਲਿਆ ਗਿਆ।"
 
-#, fuzzy
 msgid "Sending"
-msgstr "ਭੇਜੋ"
-
-#, fuzzy
+msgstr "ਭੇਜਿਆ ਜਾ ਰਿਹਾ ਹੈ"
+
 msgid "Receiving"
-msgstr "ਬਾਕੀ"
-
-#, fuzzy, c-format
+msgstr "ਮਿਲਿਆ"
+
+# , c-format
 msgid "Conversation in %s on %s"
-msgstr "%s ਨਾਲ ਗੱਲਾਂ-ਬਾਤਾਂ"
-
-#, fuzzy, c-format
+msgstr "%2$s ਉੱਤੇ %1$s ਗੱਲਬਾਤ"
+
+#, c-format
 msgid "Conversation with %s on %s"
-msgstr "%s ਨਾਲ ਗੱਲਬਾਤ"
+msgstr "%2$s ਉੱਤੇ %1$s ਨਾਲ ਗੱਲਾਂ"
 
 msgid "%B %Y"
 msgstr "%B %Y"
@@ -847,8 +827,7 @@
 "ਤੁਰੰਤ ਸੁਨੇਹੇ (IM) ਕੇਵਲ ਤਾਂ ਹੀ ਲਾਗ ਕੀਤੇ ਜਾਣਗੇ, ਜੇ \"ਸਭ ਤੁਰੰਤ ਸੁਨੇਹੇ ਲਾਗ ਕਰੋ\" ਪਸੰਦ ਨੂੰ ਯੋਗ ਕੀਤਾ "
 "ਹੋਵੇਗਾ।"
 
-msgid ""
-"Chats will only be logged if the \"Log all chats\" preference is enabled."
+msgid "Chats will only be logged if the \"Log all chats\" preference is enabled."
 msgstr "ਗੱਲਾਂ ਦੀ ਲਾਗ ਤਾਂ ਹੀ ਰੱਖਿਆ ਜਾਵੇਗਾ, ਜੇ \"ਸਭ ਗੱਲਾਂ ਦਾ ਲਾਗ ਰੱਖੋ\" ਪਸੰਦ ਯੋਗ ਕੀਤੀ ਹੋਵੇਗੀ।"
 
 msgid "No logs were found"
@@ -859,7 +838,7 @@
 
 #. Search box *********
 msgid "Scroll/Search: "
-msgstr ""
+msgstr "ਸਕਰੋਲ/ਖੋਜ:"
 
 #, c-format
 msgid "Conversations in %s"
@@ -869,9 +848,8 @@
 msgid "Conversations with %s"
 msgstr "%s ਨਾਲ ਗੱਲਬਾਤ"
 
-#, fuzzy
 msgid "All Conversations"
-msgstr "ਗੱਲਾਂ-ਬਾਤਾਂ"
+msgstr "ਸਭ ਗੱਲਾਂ-ਬਾਤਾਂ"
 
 msgid "System Log"
 msgstr "ਸਿਸਟਮ ਲਾਗ"
@@ -913,9 +891,8 @@
 msgid "(none)"
 msgstr "(ਕੋਈ ਨਹੀਂ)"
 
-#, fuzzy
 msgid "URI"
-msgstr "UIN"
+msgstr "URI"
 
 msgid "ERROR"
 msgstr "ਗਲਤੀ"
@@ -954,8 +931,7 @@
 msgid "The selected file is not a valid plugin."
 msgstr "ਚੁਣੀ ਫਾਇਲ ਇੱਕ ਠੀਕ ਪਲੱਗਇਨ ਨਹੀਂ ਹੈ।"
 
-msgid ""
-"Please open the debug window and try again to see the exact error message."
+msgid "Please open the debug window and try again to see the exact error message."
 msgstr "ਡੀਬੱਗ ਵਿੰਡੋ ਖੋਲ੍ਹੋ ਅਤੇ ਠੀਕ ਗਲਤੀ ਸੁਨੇਹਾ ਵੇਖਣ ਦੀ ਮੁੜ-ਟਰਾਈ ਕਰੋ।"
 
 msgid "Select plugin to install"
@@ -1050,9 +1026,8 @@
 msgid "Play a sound"
 msgstr "ਇੱਕ ਆਵਾਜ਼ ਚਲਾਓ"
 
-#, fuzzy
 msgid "Pounce only when my status is not Available"
-msgstr "ਜਦੋਂ ਮੇਰਾ ਸਟੇਟਸ ਉਪਲੱਬਧ ਨਾ ਹੋਵੇ ਤਾਂ ਹੀ ਪਉਨਸ ਕਰੋ(_o)"
+msgstr "ਜਦੋਂ ਮੇਰਾ ਸਟੇਟਸ ਉਪਲੱਬਧ ਨਾ ਹੋਵੇ ਤਾਂ ਹੀ ਪਉਨਸ ਕਰੋ"
 
 msgid "Recurring"
 msgstr "ਆਵਿਰਤੀ"
@@ -1113,7 +1088,6 @@
 msgid "%s has sent you a message. (%s)"
 msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ। (%s)"
 
-#, c-format
 msgid "Unknown pounce event. Please report this!"
 msgstr "ਅਣਜਾਣ ਪਉਨਸ ਘਟਨਾ ਹੈ। ਸੂਚਨਾ ਦਿਓ ਜੀ!"
 
@@ -1159,20 +1133,17 @@
 msgid "Change status to"
 msgstr "ਹਾਲਤ ਬਦਲੋ"
 
-#. Conversations
 msgid "Conversations"
 msgstr "ਗੱਲਾਂ-ਬਾਤਾਂ"
 
 msgid "Logging"
 msgstr "ਲਾਗਇਨ"
 
-#, fuzzy
 msgid "You must fill all the required fields."
-msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਖੇਤਰ ਭਰੋ।"
-
-#, fuzzy
+msgstr "ਤੁਹਾਨੂੰ ਸਭ ਲੋੜੀਦੇ ਖੇਤਰ ਭਰਨੇ ਪੈਣੇ ਹਨ"
+
 msgid "The required fields are underlined."
-msgstr "ਲੋੜੀਦੀ ਪਲੱਗਇਨ %s ਨੂੰ ਲੋਡ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ।"
+msgstr "ਲਾਜ਼ਮੀ ਖੇਤਰਾਂ ਹੇਠ ਲਾਈਨਾਂ ਲੱਗੀਆਂ ਹਨ।"
 
 msgid "Not implemented yet."
 msgstr "ਹਾਲੇ ਬਣਾਇਆ ਨਹੀਂ ਗਿਆ।"
@@ -1183,16 +1154,14 @@
 msgid "Open File..."
 msgstr "ਫਾਇਲ ਖੋਲੋ......."
 
-#, fuzzy
 msgid "Choose Location..."
-msgstr "ਯੂਜ਼ਰ ਟਿਕਾਣਾ"
+msgstr "ਟਿਕਾਣਾ ਚੁਣੋ..."
 
 msgid "Hit 'Enter' to find more rooms of this category."
-msgstr ""
-
-#, fuzzy
+msgstr "ਇਸ ਕੈਟਾਗਰੀ ਦੇ ਹੋਰ ਰੂਮ ਲੱਭਣ ਵਾਸਤੇ 'Enter' ਦੱਬੋ।"
+
 msgid "Get"
-msgstr "ਸੈੱਟ"
+msgstr "ਲਵੋ"
 
 #. Create the window.
 msgid "Room List"
@@ -1225,7 +1194,6 @@
 msgid "Others talk in chat"
 msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਹੋਰ ਵਿਸ਼ੇ"
 
-#, fuzzy
 msgid "Someone says your username in chat"
 msgstr "ਕਿਸੇ ਨੇ ਤੁਹਾਡਾ ਨਾਂ ਗੱਲਬਾਤ ਦੌਰਾਨ ਲਿਆ ਹੈ"
 
@@ -1480,44 +1448,37 @@
 msgid ""
 "When a new conversation is opened this plugin will insert the last "
 "conversation into the current conversation."
-msgstr ""
-"ਜਦੋਂ ਇੱਕ ਨਵੀਂ ਗੱਲਬਾਤ ਖੁੱਲ੍ਹਦੀ ਹੈ ਤਾਂ ਇਹ ਪਲੱਗਇਨ ਮੌਜੂਦਾ ਗੱਲਬਾਤ ਵਿੱਚ ਆਖਰੀ ਗੱਲਬਾਤ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ।"
-
-#, c-format
+msgstr "ਜਦੋਂ ਇੱਕ ਨਵੀਂ ਗੱਲਬਾਤ ਖੁੱਲ੍ਹਦੀ ਹੈ ਤਾਂ ਇਹ ਪਲੱਗਇਨ ਮੌਜੂਦਾ ਗੱਲਬਾਤ ਵਿੱਚ ਆਖਰੀ ਗੱਲਬਾਤ ਨੂੰ ਸ਼ਾਮਲ ਕਰਦੀ ਹੈ।"
+
 msgid "Online"
-msgstr "ਆਨਲਾਇਨ"
+msgstr "ਆਨਲਾਈਨ"
 
 msgid "Offline"
-msgstr "ਆਫਲਾਇਨ"
-
-#, fuzzy
+msgstr "ਆਫਲਾਈਨ"
+
 msgid "Online Buddies"
-msgstr "ਆਫਲਾਇਨ ਬੇਲੀ"
-
-#, fuzzy
+msgstr "ਆਨਲਾਈਨ ਬੱਡੀ"
+
 msgid "Offline Buddies"
-msgstr "ਆਫਲਾਇਨ ਬੇਲੀ"
-
-#, fuzzy
+msgstr "ਆਫਲਾਈਨ ਬੇਲੀ"
+
 msgid "Online/Offline"
-msgstr "ਆਨਾਲਾਇਨ"
+msgstr "ਆਨਲਾਈਨ/ਆਫਲਾਈਨ"
 
 msgid "Meebo"
-msgstr ""
-
-#, fuzzy
+msgstr "ਮੀਬੋ"
+
 msgid "No Grouping"
-msgstr "ਸਾਊਂਡ ਨਹੀਂ"
+msgstr "ਗਰੁੱਪਿੰਗ ਨਹੀਂ"
 
 msgid "Nested Subgroup"
-msgstr ""
+msgstr "ਅੰਦਰੂਨੀ ਸਬ-ਗਰੁੱਪ"
 
 msgid "Nested Grouping (experimental)"
-msgstr ""
-
-#, fuzzy
+msgstr "ਅੰਦਰੂਨੀ ਗਰੁੱਪਿੰਗ (ਤਰਜਬੇ ਅਧੀਨ)"
+
 msgid "Provides alternate buddylist grouping options."
-msgstr "ਈਵੇਲੂਸ਼ਨ ਨਾਲ ਸਬੰਧ ਉਪਲੱਬਧ ਕਰਵਾਉਦਾ ਹੈ।"
+msgstr "ਬਦਲਵੀਂ ਬੱਡੀ-ਲਿਸਟ ਗਰੁੱਪਿੰਗ ਚੋਣਾਂ ਦਿੰਦਾ ਹੈ।"
 
 msgid "Lastlog"
 msgstr "ਆਖਰੀ-ਲਾਗ"
@@ -1648,8 +1609,7 @@
 msgid ""
 "The certificate presented by \"%s\" is self-signed. It cannot be "
 "automatically checked."
-msgstr ""
-"ਸਰਟੀਫਿਕੇਟ \"%s\" ਨੂੰ ਖੁਦ-ਸਾਇਨ ਨਾਲ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਆਟੋਮੈਟਿਕ ਚੈੱਕ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
+msgstr "ਸਰਟੀਫਿਕੇਟ \"%s\" ਨੂੰ ਖੁਦ-ਸਾਇਨ ਨਾਲ ਪੇਸ਼ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਆਟੋਮੈਟਿਕ ਚੈੱਕ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।"
 
 #, c-format
 msgid "The certificate chain presented for %s is not valid."
@@ -1670,12 +1630,10 @@
 msgid ""
 "You have no database of root certificates, so this certificate cannot be "
 "validated."
-msgstr ""
-"ਤੁਹਾਡੇ ਕੋਲ root ਸਰਟੀਫਿਕੇਟ ਲਈ ਕੋਈ ਡਾਟਾਬੇਸ ਨਹੀਂ ਹੈ, ਇਸਕਰਕੇ ਇਹ ਸਰਟੀਫਿਕੇਟ ਵੈਧ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।"
+msgstr "ਤੁਹਾਡੇ ਕੋਲ root ਸਰਟੀਫਿਕੇਟ ਲਈ ਕੋਈ ਡਾਟਾਬੇਸ ਨਹੀਂ ਹੈ, ਇਸਕਰਕੇ ਇਹ ਸਰਟੀਫਿਕੇਟ ਵੈਧ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।"
 
 #. vrq will be completed by user_auth
-msgid ""
-"The root certificate this one claims to be issued by is unknown to Pidgin."
+msgid "The root certificate this one claims to be issued by is unknown to Pidgin."
 msgstr "ਇਹ root ਸਰਟੀਫਿਕੇਟ ਇੱਕ ਅਣਜਾਣ ਵਲੋਂ ਪਿਡਗਿਨ ਨੂੰ ਦਿੱਤਾ ਗਿਆ ਜਾਪਦਾ ਹੈ।"
 
 #, c-format
@@ -1827,9 +1785,8 @@
 "ਰਿਜ਼ੋਲਵਰ ਪਰੋਸੈੱਸ ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ:\n"
 "%s"
 
-#, c-format
 msgid "Resolver process exited without answering our request"
-msgstr ""
+msgstr "ਸਾਡੀ ਮੰਗ ਦਾ ਜਵਾਬ ਦਿੱਤੇ ਬਿਨਾਂ ਰਿਜ਼ਾਲਵਰ ਕਾਰਵਾਈ ਬੰਦ ਹੋ ਗਈ ਹੈ।"
 
 #, c-format
 msgid "Thread creation failure: %s"
@@ -1917,7 +1874,6 @@
 msgid "Transfer of file %s complete"
 msgstr "ਫਾਇਲ %s ਦਾ ਟਰਾਂਸਫਰ ਮੁਕੰਮਲ ਹੋਇਆ"
 
-#, c-format
 msgid "File transfer complete"
 msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਮੁਕੰਮਲ"
 
@@ -1925,7 +1881,6 @@
 msgid "You canceled the transfer of %s"
 msgstr "ਤੁਸੀਂ %s ਲਈ ਟਰਾਂਸਫਰ ਰੱਦ ਕੀਤਾ"
 
-#, c-format
 msgid "File transfer cancelled"
 msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਰੱਦ ਕੀਤਾ"
 
@@ -2114,7 +2069,6 @@
 msgid "You are using %s, but this plugin requires %s."
 msgstr "ਤੁਸੀਂ %s ਵਰਤੇ ਰਹੇ ਹੋ, ਪਰ ਇਹ ਪਲੱਗਇਨ ਲਈ %s ਲੋੜੀਦਾ ਹੈ।"
 
-#, c-format
 msgid "This plugin has not defined an ID."
 msgstr "ਇਹ ਪਲੱਗਇਨ ਕੋਈ ID ਨਹੀਂ ਹੈ।"
 
@@ -2126,10 +2080,8 @@
 msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
 msgstr "ABI ਵਰਜਨ %d.%d.x ਮਿਲਦਾ ਨਹੀਂ (%d.%d.x ਦੀ ਲੋੜ)"
 
-#, fuzzy
-msgid ""
-"Plugin does not implement all required functions (list_icon, login and close)"
-msgstr "ਪਲੱਗਇਨ ਨੇ ਸਭ ਲੋੜੀਦੇ ਫੰਕਸ਼ਨ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤੇ ਹਨ"
+msgid "Plugin does not implement all required functions (list_icon, login and close)"
+msgstr "ਪਲੱਗਇਨ ਨੇ ਸਭ ਲੋੜੀਦੇ ਫੰਕਸ਼ਨ ਸਥਾਪਿਤ ਨਹੀਂ ਕੀਤੇ ਹਨ (list_icon, login ਅਤੇ close)"
 
 #, c-format
 msgid ""
@@ -2147,9 +2099,9 @@
 msgid "Unable to load your plugin."
 msgstr "ਤੁਹਾਡੀ ਪਲੱਗਇਨ ਲੋਡ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
 
-#, fuzzy, c-format
+# , c-format
 msgid "%s requires %s, but it failed to unload."
-msgstr "ਨਿਰਭਰ ਪਲੱਗਇਨ %s ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ।"
+msgstr "%s ਨੂੰ %s  ਚਾਹੀਦਾ ਸੀ, ਪਰ ਇਹ ਲੋਡ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ"
 
 msgid "Autoaccept"
 msgstr "ਆਟੋ-ਮਨਜ਼ੂਰ ਕਰੋ"
@@ -2207,18 +2159,17 @@
 "ਪੋਪਅੱਪ ਨਾਲ ਨੋਟੀਫਾਈ ਕਰੋ, ਜਦੋਂ ਵੀ ਇੱਕ ਆਟੋ-ਮਨਜ਼ੂਰ ਫਾਇਲ ਟਰਾਂਸਫਰ ਪੂਰੀ ਹੋ ਜਾਵੇ\n"
 "(ਕੇਵਲ ਜਦੋਂ ਭੇਜਣ ਵਾਲੇ ਨਾਲ ਕੋਈ ਸੰਵਾਦ ਨਾ ਹੋਵੇ)"
 
-#, fuzzy
 msgid "Create a new directory for each user"
-msgstr "ਖੋਜ ਲਈ ਇੱਕ ਯੂਜ਼ਰ ਡਾਇਰੈਕਟਰੀ ਚੁਣੋ"
+msgstr "ਹਰੇਕ ਯੂਜ਼ਰ ਲਈ ਵੱਖਰੀ ਡਾਇਰੈਕਟਰੀ ਬਣਾਓ"
 
 msgid "Notes"
-msgstr "ਸੂਚਨਾ"
+msgstr "ਨੋਟਿਸ"
 
 msgid "Enter your notes below..."
-msgstr "ਆਪਣੀ ਸੂਚਨਾ ਹੇਠਾਂ ਦਿਓ..."
+msgstr "ਆਪਣੇ ਨੋਟਿਸ ਹੇਠਾਂ ਦਿਓ..."
 
 msgid "Edit Notes..."
-msgstr "ਸੂਚਨਾ ਸੋਧ..."
+msgstr "ਨੋਟਿਸ ਸੋਧ..."
 
 #. *< major version
 #. *< minor version
@@ -2229,7 +2180,7 @@
 #. *< priority
 #. *< id
 msgid "Buddy Notes"
-msgstr "ਬੱਡੀ ਨੋਟ"
+msgstr "ਬੱਡੀ ਨੋਟਿਸ"
 
 #. *< name
 #. *< version
@@ -2372,7 +2323,7 @@
 msgstr "ਯੂਜ਼ਰ ਇਨ-ਐਕਟੀਵਿਟੀ ਟਾਈਮ-ਆਉਟ (ਮਿੰਟਾਂ ਵਿੱਚ)"
 
 msgid "Apply hiding rules to buddies"
-msgstr ""
+msgstr "ਬੱਡੀ ਲਈ ਲੁਕਵਾਂ ਨਿਯਮ ਲਾਗੂ ਕਰੋ"
 
 #. *< type
 #. *< ui_requirement
@@ -2423,8 +2374,7 @@
 msgid ""
 "You are currently disconnected. Messages will not be received unless you are "
 "logged in."
-msgstr ""
-"ਇਸ ਸਮੇਂ ਤੁਸੀਂ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ। ਸੁਨੇਹੇ ਉਦੋਂ ਤੱਕ ਨਹੀਂ ਮਿਲਣਗੇ, ਜਦੋਂ ਤੱਕ ਕਿ ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕਰਦੇ ਹੋ।"
+msgstr "ਇਸ ਸਮੇਂ ਤੁਸੀਂ ਡਿਸ-ਕੁਨੈਕਟ ਹੋ। ਸੁਨੇਹੇ ਉਦੋਂ ਤੱਕ ਨਹੀਂ ਮਿਲਣਗੇ, ਜਦੋਂ ਤੱਕ ਕਿ ਤੁਸੀਂ ਲਾਗਇਨ ਨਹੀਂ ਕਰਦੇ ਹੋ।"
 
 msgid "Message could not be sent because the maximum length was exceeded."
 msgstr "ਲੰਬਾਈ ਵੱਧ ਹੋਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।"
@@ -2523,11 +2473,10 @@
 msgstr "ਮੋਨੋ ਨਾਲ .NET ਪਲੱਗਇਨ ਲੋਡ ਕਰੋ"
 
 msgid "Add new line in IMs"
-msgstr ""
-
-#, fuzzy
+msgstr "IM ਵਿੱਚ ਨਵੀਂ ਲਾਈਨ ਸ਼ਾਮਲ"
+
 msgid "Add new line in Chats"
-msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਲਾਗੂ ਕਰੋ"
+msgstr "ਗੱਲਾਬਾਤਾਂ ਵਿੱਚ ਨਵੀਆਂ ਲਾਈਨਾਂ ਸ਼ਾਮਲ"
 
 #. *< magic
 #. *< major version
@@ -2539,7 +2488,7 @@
 #. *< priority
 #. *< id
 msgid "New Line"
-msgstr "ਨਵੀਂ ਲਾਇਨ"
+msgstr "ਨਵੀਂ ਲਾਈਨ"
 
 #. *< name
 #. *< version
@@ -2547,16 +2496,15 @@
 msgstr "ਸੁਨੇਹਾ ਵੇਖਾਉਣ ਲਈ ਇੱਕ ਨਵੀਂ ਲਾਇਨ ਜੋੜੋ।"
 
 #. *< summary
-#, fuzzy
 msgid ""
 "Prepends a newline to messages so that the rest of the message appears below "
 "the username in the conversation window."
 msgstr ""
-"ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਇੱਕ ਨਵੀਂ-ਲਾਈਨ ਜੋੜਦੀ ਹੈ, ਤਾਂ ਕਿ ਨਵੇਂ ਸੁਨੇਹੇ ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਸਕਰੀਨ ਨਾਂ ਦੇ ਹੇਠ ਵੇਖਾਈ "
+"ਸੁਨੇਹਿਆਂ ਵਿੱਚ ਇੱਕ ਨਵੀਂ-ਲਾਈਨ ਜੋੜਦੀ ਹੈ, ਤਾਂ ਕਿ ਨਵੇਂ ਸੁਨੇਹੇ ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਯੂਜ਼ਰ ਨਾਂ ਦੇ ਹੇਠ ਵੇਖਾਈ "
 "ਦੇਣ।"
 
 msgid "Offline Message Emulation"
-msgstr "ਆਫ਼-ਲਾਈਨ ਸੁਨੇਹੇ ਵਾਂਗ"
+msgstr "ਆਫਲਾਈਨ ਸੁਨੇਹਾ ਸਮਰੂਪ"
 
 msgid "Save messages sent to an offline user as pounce."
 msgstr "ਇੱਕ ਆਫਲਾਈਨ ਯੂਜ਼ਰ ਨੂੰ ਭੇਜੇ ਸੁਨੇਹੇ ਪਉਨਸ ਵਾਂਗ ਸੰਭਾਲੋ।"
@@ -2782,23 +2730,19 @@
 "ActiveTCL ਇੰਸਟਾਲੇਸ਼ਨ ਖੋਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ। ਜੇ ਤੁਸੀਂ TCL ਪਲੱਗਇਨ ਵਰਤਣੀਆਂ ਚਾਹੁੰਦੇ ਹੋ ਤਾਂ http://"
 "www.activestate.com ਤੋਂ ActiveTCL ਇੰਸਟਾਲ ਕਰੋ।\n"
 
-#, fuzzy
 msgid ""
 "The Apple Bonjour For Windows toolkit wasn't found, see the FAQ at: http://d."
 "pidgin.im/BonjourWindows for more information."
 msgstr ""
-"Windows ਟੂਲਕਿੱਟ ਲਈ ਐਪਸ ਬੋਨਜੋਉਰ ਨਹੀਂ ਲੱਭਿਆ ਸਵਾਲ-ਜਵਾਬ ਵੇਖੋ: ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://"
-"developer.pidgin.im/wiki/Using%20Pidgin#CanIusePidginforBonjourLink-"
-"LocalMessaging ਵੇਖੋ।"
+"Windows ਟੂਲਕਿੱਟ ਲਈ ਐਪਸ ਬੋਨਜੋਉਰ ਨਹੀਂ ਲੱਭਿਆ ਸਵਾਲ-ਜਵਾਬ ਵੇਖੋ: ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ http://d."
+"pidgin.im/BonjourWindows ਵੇਖੋ।"
 
 msgid "Unable to listen for incoming IM connections\n"
 msgstr "ਆ ਰਹੇ IM ਕੁਨੈਕਸ਼ਨ ਸੁਣਨ ਤੋਂ ਅਸਮੱਰਥ ਹੈ\n"
 
-msgid ""
-"Unable to establish connection with the local mDNS server.  Is it running?"
+msgid "Unable to establish connection with the local mDNS server.  Is it running?"
 msgstr "ਇੱਕ ਲੋਕਲ mDNS ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹੈ।  ਕੀ ਇਹ ਚੱਲਦਾ ਹੈ?"
 
-#. Creating the options for the protocol
 msgid "First name"
 msgstr "ਪਹਿਲਾਂ ਨਾਂ"
 
@@ -2830,6 +2774,10 @@
 msgid "Purple Person"
 msgstr "ਪਰਪਲ ਵਿਅਕਤੀ"
 
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "ਲੋਕਲ ਪੋਰਟ"
+
 msgid "Bonjour"
 msgstr "ਬੋਨਜੁਉਰ"
 
@@ -2849,9 +2797,8 @@
 msgid "Could not listen on socket"
 msgstr "ਸਾਕਟ ਉੱਤੇ ਸੁਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ"
 
-#, fuzzy
 msgid "Error communicating with local mDNSResponder."
-msgstr "ਸਰਵਰ ਨਾਲ ਸੰਪਰਕ ਦੌਰਾਨ ਗਲਤੀ"
+msgstr "mDNSResponder ਨਾਲ ਸੰਚਾਰ ਦੌਰਾਨ ਗਲਤੀ ਹੈ।"
 
 msgid "Invalid proxy settings"
 msgstr "ਗਲਤ ਪਰਾਕਸੀ ਸੈਟਿੰਗ"
@@ -2876,9 +2823,9 @@
 msgid "Buddylist saved successfully!"
 msgstr "ਬੱਡੀ-ਲਿਸਟ ਠੀਕ ਤਰ੍ਹਾਂ ਸੰਭਾਲੀ ਗਈ!"
 
-#, fuzzy, c-format
+# , c-format
 msgid "Couldn't write buddy list for %s to %s"
-msgstr "ਬੱਡੀ-ਲਿਸਟ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
+msgstr "%s ਲਈ %s ਉੱਤੇ ਬੱਡੀ ਲਿਸਟ ਲਿਖਣ ਲਈ ਅਸਮਰੱਥ"
 
 msgid "Couldn't load buddylist"
 msgstr "ਬੱਡੀ-ਲਿਸਟ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
@@ -2992,7 +2939,6 @@
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
-#, c-format
 msgid "Away"
 msgstr "ਦੂਰ"
 
@@ -3187,7 +3133,7 @@
 msgstr "ਇੰਕੋਡਿੰਗ"
 
 msgid "Auto-detect incoming UTF-8"
-msgstr ""
+msgstr "ਆ ਰਹੀ UTF-8 ਆਟੋਮੈਟਿਕ ਖੋਜ"
 
 msgid "Real name"
 msgstr "ਅਸਲੀ ਨਾਂ"
@@ -3204,15 +3150,14 @@
 
 #, c-format
 msgid "Ban on %s by %s, set %s ago"
-msgstr ""
-
-#, fuzzy, c-format
+msgstr "%s ਉੱਤੇ %s ਵਲੋਂ ਪਾਬੰਦੀ, %s ਚਿਰ ਪਹਿਲਾਂ"
+
+#, c-format
 msgid "Ban on %s"
-msgstr "ਕਾਰਨ: %s"
-
-#, fuzzy
+msgstr "%s ਉੱਤੇ ਪਾਬੰਦੀ"
+
 msgid "End of ban list"
-msgstr "ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ"
+msgstr "ਪਾਬੰਦੀ ਲਿਸਟ ਦਾ ਅੰਤ"
 
 #, c-format
 msgid "You are banned from %s."
@@ -3372,7 +3317,7 @@
 "away."
 
 msgid "ctcp <nick> <msg>: sends ctcp msg to nick."
-msgstr ""
+msgstr "ctcp <nick> <msg>: sends ctcp msg to nick."
 
 msgid "chanserv: Send a command to chanserv"
 msgstr "chanserv: Send a command to chanserv"
@@ -3457,9 +3402,8 @@
 msgid "nickserv: Send a command to nickserv"
 msgstr "nickserv: Send a command to nickserv"
 
-#, fuzzy
 msgid "notice &lt;target&lt;:  Send a notice to a user or channel."
-msgstr "me &lt;action&gt;:  ਇੱਕ ਬੱਡੀ ਜਾਂ ਗੱਲਬਾਤ ਲਈ IRC ਸਟਾਈਲ ਐਕਸ਼ਨ ਭੇਜੋ"
+msgstr "notice &lt;target&lt;: ਯੂਜ਼ਰ ਜਾਂ ਚੈਨਲ ਨੂੰ ਨੋਟਿਸ ਭੇਜੋ।"
 
 msgid ""
 "op &lt;nick1&gt; [nick2] ...:  Grant channel operator status to someone. You "
@@ -3569,9 +3513,8 @@
 msgid "Server requires TLS/SSL for login.  No TLS/SSL support found."
 msgstr "ਲਾਗਇਨ ਲਈ ਸਰਵਰ ਨੂੰ TLS/SSL ਲੋੜੀਦਾ ਹੈ। ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
 
-#, fuzzy
 msgid "You require encryption, but no TLS/SSL support found."
-msgstr "ਲਾਗਇਨ ਲਈ ਸਰਵਰ ਨੂੰ TLS/SSL ਲੋੜੀਦਾ ਹੈ। ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਹੈ।"
+msgstr "ਤੁਹਾਨੂੰ ਇੰਕ੍ਰਿਪਸ਼ਨ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਕੋਈ TLS/SSL ਸਹਿਯੋਗ ਨਹੀਂ ਲੱਭਿਆ।"
 
 msgid "Server requires plaintext authentication over an unencrypted stream"
 msgstr "ਸਰਵਰ ਨੂੰ ਇੱਕ ਗ਼ੈਰ-ਇੰਕ੍ਰਿਪਟਡ ਸਟਰੀਮ ਲਈ ਪਲੇਨ-ਟੈਕਸਟ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ।"
@@ -3868,7 +3811,6 @@
 msgid "Extended Away"
 msgstr "ਪਹੁੰਚ ਤੋਂ ਦੂਰ"
 
-#, c-format
 msgid "Do Not Disturb"
 msgstr "ਤੰਗ ਨਾ ਕਰੋ"
 
@@ -3995,12 +3937,11 @@
 msgid "Write error"
 msgstr "ਲਿਖਣ ਵਿੱਚ ਗਲਤੀ"
 
-#, fuzzy
 msgid "Ping timeout"
-msgstr "ਪਲੇਨ ਟੈਕਸਟ"
+msgstr "ਪਿੰਗ ਟਾਈਮ-ਆਉਟ"
 
 msgid "Read Error"
-msgstr "ਪੜਨ ਗਲਤੀ"
+msgstr "ਪੜ੍ਹਨ ਗਲਤੀ"
 
 #, c-format
 msgid ""
@@ -4061,8 +4002,7 @@
 msgid "Unregister"
 msgstr "ਅਣ-ਰਜਿਸਟਰ"
 
-msgid ""
-"Please fill out the information below to change your account registration."
+msgid "Please fill out the information below to change your account registration."
 msgstr "ਆਪਣੀ ਅਕਾਊਂਟ ਰਜਿਸਟਰੇਸ਼ਨ ਬਦਲਣ ਵਾਸਤੇ ਹੇਠਾਂ ਜਾਣਕਾਰੀ ਭਰੋ ਜੀ।"
 
 msgid "Please fill out the information below to register your new account."
@@ -4103,6 +4043,9 @@
 msgid "Re-initializing Stream"
 msgstr "ਸਟਰੀਮ ਮੁੜ-ਸ਼ੁਰੂ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
 
+msgid "Server doesn't support blocking"
+msgstr "ਸਰਵਰ ਪਾਬੰਦੀ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
+
 msgid "Not Authorized"
 msgstr "ਪਰਮਾਣਤ ਨਹੀਂ"
 
@@ -4131,7 +4074,7 @@
 msgstr "ਮੂਡ"
 
 msgid "Now Listening"
-msgstr ""
+msgstr "ਹੁਣ ਸੁਣ ਰਿਹਾ ਹੈ"
 
 msgid "Mood Text"
 msgstr "ਮੂਡ ਟੈਕਸਟ"
@@ -4410,9 +4353,8 @@
 msgid "topic [new topic]:  View or change the topic."
 msgstr "topic [new topic]:  View or change the topic."
 
-#, fuzzy
 msgid "ban &lt;user&gt; [reason]:  Ban a user from the room."
-msgstr "ban &lt;user&gt; [room]:  Ban a user from the room."
+msgstr "ban &lt;user&gt; [reason]:  Ban a user from the room."
 
 msgid ""
 "affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's "
@@ -4431,18 +4373,14 @@
 msgid "invite &lt;user&gt; [message]:  Invite a user to the room."
 msgstr "invite &lt;user&gt; [room]:  ਯੂਜ਼ਰ ਨੂੰ ਰੂਮ 'ਚ ਸੱਦੋ।"
 
-#, fuzzy
 msgid "join: &lt;room&gt; [password]:  Join a chat on this server."
-msgstr "join: &lt;room&gt; [server]:  Join a chat on this server."
-
-#, fuzzy
+msgstr "join: &lt;room&gt; [password]:  Join a chat on this server."
+
 msgid "kick &lt;user&gt; [reason]:  Kick a user from the room."
-msgstr "kick &lt;user&gt; [room]:  Kick a user from the room."
-
-msgid ""
-"msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
-msgstr ""
-"msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
+msgstr "kick &lt;user&gt; [reason]:  Kick a user from the room."
+
+msgid "msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
+msgstr "msg &lt;user&gt; &lt;message&gt;:  Send a private message to another user."
 
 msgid "ping &lt;jid&gt;:\tPing a user/component/server."
 msgstr "ping &lt;jid&gt;:\tਇੱਕ ਯੂਜ਼ਰ/ਭਾਗ/ਸਰਵਰ ਪਿੰਗ ਕਰੋ।"
@@ -4485,13 +4423,11 @@
 msgid "Connect server"
 msgstr "ਸਰਵਰ ਨਾਲ ਜੋੜੋ"
 
-#, fuzzy
 msgid "File transfer proxies"
-msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਪੋਰਟ"
+msgstr "ਫਾਇਲ ਟਰਾਂਸਫਰ ਪਰਾਕਸੀ"
 
 #. this should probably be part of global smiley theme settings later on,
 #. shared with MSN
-#, fuzzy
 msgid "Show Custom Smileys"
 msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਵੇਖੋ"
 
@@ -4518,9 +4454,9 @@
 msgid "XMPP Message Error"
 msgstr "XMPP ਗਲਤੀ ਸੁਨੇਹਾ"
 
-#, fuzzy, c-format
+#, c-format
 msgid "(Code %s)"
-msgstr " (ਕੋਡ %s)"
+msgstr "(ਕੋਡ %s)"
 
 msgid "XML Parse error"
 msgstr "XML ਪਾਰਸ ਗਲਤੀ"
@@ -4571,7 +4507,7 @@
 msgid "Unable to send file to %s, not subscribed to user presence"
 msgstr "%s ਨੂੰ ਫਾਇਲ ਭੇਜਣ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਯੂਜ਼ਰ ਮੌਜੂਦਗੀ ਲਈ ਮੈਂਬਰ ਨਹੀਂ"
 
-#, fuzzy, c-format
+# , c-format
 msgid "Please select the resource of %s to which you would like to send a file"
 msgstr "ਚੁਣੋ ਕਿ ਕਿਹੜੇ %s ਦੇ ਸਰੋਤ ਤੁਸੀਂ ਇੱਕ ਫਾਇਲ ਤੋਂ ਤੁਸੀਂ ਭੇਜਣੇ ਚਾਹੁੰਦੇ ਹੋ"
 
@@ -4612,8 +4548,18 @@
 msgid "Select an action"
 msgstr "ਇੱਕ ਐਕਸ਼ਨ ਚੁਣੋ"
 
-msgid "Unable to retrieve MSN Address Book"
-msgstr "MSN ਐਡਰੈੱਸ ਬੁੱਕ ਲੈਣ ਲਈ ਅਸਮਰੱਥ"
+#. 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
+#, c-format
+msgid "Unable to add \"%s\"."
+msgstr "\"%s\" ਜੋੜਨ ਲਈ ਅਸਫ਼ਲ ਹੈ।"
+
+msgid "Buddy Add error"
+msgstr "ਬੱਡੀ ਸ਼ਾਮਲ ਗਲਤੀ"
+
+msgid "The username specified does not exist."
+msgstr "ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।"
 
 #, c-format
 msgid "Buddy list synchronization issue in %s (%s)"
@@ -4631,222 +4577,167 @@
 msgid ""
 "%s is on the local list but not on the server list. Do you want this buddy "
 "to be added?"
-msgstr ""
-"%s ਲੋਕਲ ਲਿਸਟ ਉੱਤੇ ਹੈ, ਪਰ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ। ਕੀ ਤੁਸੀਂ ਇਹ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#, c-format
+msgstr "%s ਲੋਕਲ ਲਿਸਟ ਉੱਤੇ ਹੈ, ਪਰ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ। ਕੀ ਤੁਸੀਂ ਇਹ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
+
 msgid "Unable to parse message"
 msgstr "ਸੁਨੇਹਾ ਪਾਰਸ ਕਰਨ ਲਈ ਅਸਫ਼ਲ"
 
-#, c-format
 msgid "Syntax Error (probably a client bug)"
 msgstr "ਸੰਟੈਕਸ ਗਤੀ (ਇੱਕ ਕਲਾਇਟ ਬੱਗ ਹੈ)"
 
-#, c-format
 msgid "Invalid email address"
 msgstr "ਗਲਤ ਈਮੇਲ ਐਡਰੈੱਸ"
 
-#, c-format
 msgid "User does not exist"
 msgstr "ਯੂਜ਼ਰ ਮੌਜੂਦ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Fully qualified domain name missing"
 msgstr "ਫੂਲ ਕੁਆਲੀਫਾਇਡ ਡੋਮੇਨ ਨਾਂ (FQDN) ਗੁੰਮ ਹੈ"
 
-#, c-format
 msgid "Already logged in"
 msgstr "ਪਹਿਲਾਂ ਹੀ ਲਾਗਇਨ ਹੈ"
 
-#, fuzzy, c-format
 msgid "Invalid username"
-msgstr "ਗਲਤ ਨਾਂ"
-
-#, c-format
+msgstr "ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ"
+
 msgid "Invalid friendly name"
 msgstr "ਗਲਤ ਦੋਸਤਾਨਾ ਨਾਂ"
 
-#, c-format
 msgid "List full"
 msgstr "ਲਿਸਟ ਭਰ ਗਈ"
 
-#, c-format
 msgid "Already there"
 msgstr "ਪਹਿਲਾਂ ਹੀ ਉਥੇ ਹੈ"
 
-#, c-format
 msgid "Not on list"
 msgstr "ਲਿਸਟ ਉੱਤੇ ਨਹੀਂ"
 
-#, c-format
 msgid "User is offline"
 msgstr "ਯੂਜ਼ਰ ਆਫਲਾਇਨ ਹੈ"
 
-#, c-format
 msgid "Already in the mode"
 msgstr "ਪਹਿਲਾਂ ਹੀ ਮੋਡ 'ਚ ਹੈ"
 
-#, c-format
 msgid "Already in opposite list"
 msgstr "ਪਹਿਲਾਂ ਹੀ ਉਲਟ ਲਿਸਟ ਵਿੱਚ ਹੈ"
 
-#, c-format
 msgid "Too many groups"
 msgstr "ਕਈ ਗਰੁੱਪ ਹਨ"
 
-#, c-format
 msgid "Invalid group"
 msgstr "ਗਲਤ ਗਰੁੱਪ"
 
-#, c-format
 msgid "User not in group"
 msgstr "ਯੂਜ਼ਰ ਗਰੁੱਪ 'ਚ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Group name too long"
 msgstr "ਗਰੁੱਪ ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ"
 
-#, c-format
 msgid "Cannot remove group zero"
 msgstr "ਗਰੁੱਪ ਜ਼ੀਰੋ ਹਟਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ ਹੈ"
 
-#, c-format
 msgid "Tried to add a user to a group that doesn't exist"
 msgstr "ਇੱਕ ਯੂਜ਼ਰ ਨੂੰ ਇੱਕ ਗਰੁੱਪ ਵਿੱਚ ਜੋੜਨ ਦੀ ਕੋਸ਼ਿਸ਼, ਜੋ ਕਿ ਮੌਜੂਦ ਹੀ ਨਹੀ ਹੈ।"
 
-#, c-format
 msgid "Switchboard failed"
 msgstr "ਸਵਿੱਚਬੋਰਡ ਫੇਲ੍ਹ ਹੋਇਆ"
 
-#, c-format
 msgid "Notify transfer failed"
 msgstr "ਨੋਟੀਫਾਈ ਟਰਾਂਸਫਰ ਫੇਲ੍ਹ"
 
-#, c-format
 msgid "Required fields missing"
 msgstr "ਲੋੜੀਦੇ ਖੇਤਰ ਗੁੰਮ ਹਨ"
 
-#, c-format
 msgid "Too many hits to a FND"
 msgstr "ਇੱਕ FND ਲਈ ਬਹੁਤੀਆਂ ਹਿੱਟਾਂ"
 
-#, c-format
 msgid "Not logged in"
 msgstr "ਲਾਗਇਨ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Service temporarily unavailable"
 msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਰੂਪ 'ਚ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Database server error"
 msgstr "ਡਾਟਾਬੇਸ ਸਰਵਰ ਗਲਤੀ"
 
-#, c-format
 msgid "Command disabled"
 msgstr "ਕਮਾਂਡ ਆਯੋਗ"
 
-#, c-format
 msgid "File operation error"
 msgstr "ਫਾਇਲ ਕਾਰਵਾਈ ਗਲਤੀ"
 
-#, c-format
 msgid "Memory allocation error"
 msgstr "ਮੈਮੋਰੀ ਜਾਰੀ ਗਲਤੀ"
 
-#, c-format
 msgid "Wrong CHL value sent to server"
 msgstr "ਗਲਤ CHL ਮੁੱਲ ਸਰਵਰ ਨੂੰ ਭੇਜਿਆ"
 
-#, c-format
 msgid "Server busy"
 msgstr "ਸਰਵਰ ਰੁੱਝਿਆ ਹੈ"
 
-#, c-format
 msgid "Server unavailable"
 msgstr "ਸਰਵਰ ਉਪਲੱਬਧ ਨਹੀਂ"
 
-#, c-format
 msgid "Peer notification server down"
 msgstr "ਪੀਰੀਅਰ ਨੋਟੀਫਿਕੇਸ਼ਨ ਸਰਵਰ ਬੰਦ ਹੈ"
 
-#, c-format
 msgid "Database connect error"
 msgstr "ਡਾਟਾਬੇਸ ਕੁਨੈਕਸ਼ਨ ਗਲਤੀ"
 
-#, c-format
 msgid "Server is going down (abandon ship)"
 msgstr "ਸਰਵਰ ਬੰਦ ਹੋ ਰਿਹਾ ਹੈ (ਡੁੱਬਦਾ ਜਹਾਜ਼)"
 
-#, c-format
 msgid "Error creating connection"
 msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਦੌਰਾਨ ਗਲਤੀ"
 
-#, c-format
 msgid "CVR parameters are either unknown or not allowed"
 msgstr "CVR ਪੈਰਾਮੀਟਰ ਜਾਂ ਤਾਂ ਅਣਜਾਣ ਹੈ ਜਾਂ ਮਨਜ਼ੂਰ ਨਹੀਂ ਹੈ।"
 
-#, c-format
 msgid "Unable to write"
 msgstr "ਲਿਖਣ ਲਈ ਅਸਫਲ"
 
-#, c-format
 msgid "Session overload"
 msgstr "ਸ਼ੈਸ਼ਨ ਓਵਰ-ਲੋਡ ਹੋ ਗਿਆ"
 
-#, c-format
 msgid "User is too active"
 msgstr "ਯੂਜ਼ਰ ਬਹੁਤ ਛੋਟਾ ਹੈ"
 
-#, c-format
 msgid "Too many sessions"
 msgstr "ਕਈ ਸ਼ੈਸ਼ਨ ਹਨ"
 
-#, c-format
 msgid "Passport not verified"
 msgstr "ਪਾਸਪੋਰਟ ਜਾਂਚਿਆ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Bad friend file"
 msgstr "ਗਲਤ ਮਿੱਤਰ ਫਾਇਲ"
 
-#, c-format
 msgid "Not expected"
 msgstr "ਲੋੜ ਨਹੀਂ ਸੀ"
 
-#, c-format
 msgid "Friendly name changes too rapidly"
 msgstr "ਦੋਸਤਾਨਾ ਨਾਂ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਬਦਲਿਆ"
 
-#, c-format
 msgid "Server too busy"
 msgstr "ਸਰਵਰ ਰੁਝਿਆ"
 
-#, c-format
 msgid "Authentication failed"
 msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲ"
 
-#, c-format
 msgid "Not allowed when offline"
 msgstr "ਜਦੋਂ ਆਫਲਾਇਨ ਹੋਵੇ ਤਾਂ ਮਨਜ਼ੂਰ ਨਹੀਂ"
 
-#, c-format
 msgid "Not accepting new users"
 msgstr "ਨਵੇਂ ਯੂਜ਼ਰ ਮਨਜ਼ੂਰ ਨਹੀਂ ਹਨ"
 
-#, c-format
 msgid "Kids Passport without parental consent"
 msgstr "ਬੱਚਾ ਪਾਸਪੋਰਟ ਬਿਨਾਂ ਮਾਪਿਆਂ ਦੀ ਸਹਿਮਤੀ ਦੇ"
 
-#, c-format
 msgid "Passport account not yet verified"
 msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਹਾਲੇ ਜਾਂਚਿਆ ਨਹੀਂ ਗਿਆ"
 
-#, fuzzy, c-format
 msgid "Passport account suspended"
-msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਹਾਲੇ ਜਾਂਚਿਆ ਨਹੀਂ ਗਿਆ"
-
-#, c-format
+msgstr "ਪਾਸਪੋਰਟ ਅਕਾਊਂਟ ਸਸਪੈਂਡ ਕੀਤਾ"
+
 msgid "Bad ticket"
 msgstr "ਗਲਤ ਟਿਕਟ"
 
@@ -4858,16 +4749,14 @@
 msgid "MSN Error: %s\n"
 msgstr "MSN ਗਲਤੀ: %s\n"
 
-#, fuzzy
 msgid "Other Contacts"
-msgstr "ਪਸੰਦੀਦਾ ਸੰਪਰਕ"
-
-#, fuzzy
+msgstr "ਹੋਰ ਸੰਪਰਕ"
+
 msgid "Non-IM Contacts"
-msgstr "ਸੰਪਰਕ ਹਟਾਓ"
+msgstr "ਗ਼ੈਰ-IM ਸੰਪਰਕ"
 
 msgid "Nudge"
-msgstr "ਸੈਨਤ (ਨੱਜ)"
+msgstr "ਸੈਨਤ"
 
 #, c-format
 msgid "%s has nudged you!"
@@ -4875,11 +4764,10 @@
 
 #, c-format
 msgid "Nudging %s..."
-msgstr "%s ਨੂੰ ਸੈਨਤ ਮਾਰੋ..."
-
-#, fuzzy
+msgstr "%s ਨੂੰ ਸੈਨਤ ਮਾਰੀ ਜਾ ਰਹੀ ਹੈ..."
+
 msgid "Email Address..."
-msgstr "ਈਮੇਲ ਐਡਰੈੱਸ"
+msgstr "ਈਮੇਲ ਐਡਰੈੱਸ..."
 
 msgid "Your new MSN friendly name is too long."
 msgstr "ਤੁਹਾਡਾ ਨਵਾਂ MSN ਦੋਸਤਾਨਾ ਨਾਂ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
@@ -4915,22 +4803,19 @@
 msgid "Disallow"
 msgstr "ਪਾਬੰਦੀ"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Blocked Text for %s"
-msgstr "%s ਲਈ ਬੱਡੀ ਟਿੱਪਣੀ"
-
-#, fuzzy
+msgstr "%s ਲਈ ਬੱਡੀ ਟੈਕਸਟ"
+
 msgid "No text is blocked for this account."
-msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):"
-
-#, c-format
-msgid ""
-"MSN servers are currently blocking the following regular expressions:<br/>%s"
-msgstr ""
-
-#, fuzzy
+msgstr "ਇਸ ਅਕਾਊਂਟ ਲਈ ਕੋਈ ਟੈਕਸਟ ਬਲਾਕ ਨਹੀਂ ਹੈ।"
+
+#, c-format
+msgid "MSN servers are currently blocking the following regular expressions:<br/>%s"
+msgstr "MSN ਸਰਵਰਾਂ ਉੱਤੇ ਹੇਠ ਦਿੱਤੇ ਨਿਯਮਤ ਸਮੀਕਰਨ ਪਾਬੰਦੀ ਲਗਾਏ ਗਏ ਹਨ: <br/>%s"
+
 msgid "This account does not have email enabled."
-msgstr "ਇਹ ਹਾਟਮੇਲ ਅਕਾਊਂਟ ਹਾਲੇ ਸਰਗਰਮ ਨਹੀਂ ਹੈ।"
+msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਈਮੇਲ ਚਾਲੂ ਨਹੀਂ ਹੈ।"
 
 msgid "Send a mobile message."
 msgstr "ਮੋਬਾਇਲ ਸੁਨੇਹਾ ਭੇਜੋ।"
@@ -4938,20 +4823,23 @@
 msgid "Page"
 msgstr "ਸਫ਼ਾ"
 
+msgid "Playing a game"
+msgstr "ਇੱਕ ਖੇਡ ਖੇਡੀ ਜਾ ਰਹੀ ਹੈ"
+
+msgid "Working"
+msgstr "ਕੰਮ ਕਰ ਰਿਹਾ/ਰਹੀ ਹਾਂ"
+
 msgid "Has you"
-msgstr ""
-
-#, fuzzy
+msgstr "ਤੁਸੀਂ ਹੋ"
+
 msgid "Home Phone Number"
-msgstr "ਘਰ ਫੋਨ ਨੰਬਰ ਦਿਓ..."
-
-#, fuzzy
+msgstr "ਘਰ ਫੋਨ ਨੰਬਰ"
+
 msgid "Work Phone Number"
-msgstr "ਕੰਮ ਫੋਨ ਨੰਬਰ ਦਿਓ..."
-
-#, fuzzy
+msgstr "ਕੰਮ ਫੋਨ ਨੰਬਰ"
+
 msgid "Mobile Phone Number"
-msgstr "ਮੋਬਾਇਲ ਨੰਬਰ ਦਿਓ..."
+msgstr "ਮੋਬਾਇਲ ਫੋਨ ਨੰਬਰ"
 
 msgid "Be Right Back"
 msgstr "ਆਉਨਾਂ"
@@ -4971,13 +4859,17 @@
 #. saveable
 #. should be user_settable some day
 #. independent
-#, fuzzy
 msgid "Artist"
 msgstr "ਕਲਾਕਾਰ"
 
-#, fuzzy
 msgid "Album"
-msgstr "ਟਿਊਨ ਐਲਬਮ"
+msgstr "ਐਲਬਮ"
+
+msgid "Game Title"
+msgstr "ਖੇਡ ਟਾਈਟਲ"
+
+msgid "Office Title"
+msgstr "ਆਫਿਸ ਟਾਈਟਲ"
 
 msgid "Set Friendly Name..."
 msgstr "ਦੋਸਤਾਨਾ ਨਾਂ ਦਿਓ..."
@@ -4998,7 +4890,7 @@
 msgstr "ਮੋਬਾਇਲ ਸਫ਼ੇ ਮੰਨਜ਼ੂਰ/ਨਾ-ਮਨਜ਼ੂਰ..."
 
 msgid "View Blocked Text..."
-msgstr ""
+msgstr "ਪਾਬੰਦੀਸ਼ੁਦਾ ਟੈਕਸਟ ਵੇਖੋ..."
 
 msgid "Open Hotmail Inbox"
 msgstr "ਹਾਟਮੇਲ ਇਨ-ਬਾਕਸ ਖੋਲ੍ਹੋ"
@@ -5167,8 +5059,8 @@
 "does not exist."
 msgstr "ਯੂਜ਼ਰ ਪ੍ਰੋਫਾਇਲ ਵਿੱਚ ਕੋਈ ਜਾਣਕਾਰੀ ਨਹੀਂ ਮਿਲੀ ਹੈ। ਯੂਜ਼ਰ ਮੌਜੂਦ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।"
 
-msgid "Profile URL"
-msgstr "ਪ੍ਰੋਫਾਇਲ URL"
+msgid "View web profile"
+msgstr "ਵੈੱਬ ਪਰੋਫਾਇਲ ਵੇਖੋ"
 
 #. *< type
 #. *< ui_requirement
@@ -5197,9 +5089,8 @@
 msgid "Windows Live ID authentication:Unable to connect"
 msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
 
-#, fuzzy
 msgid "Windows Live ID authentication:Invalid response"
-msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
+msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਗਲਤ ਜਵਾਬ"
 
 #, c-format
 msgid "%s is not a valid group."
@@ -5224,9 +5115,8 @@
 msgid "Unable to add user"
 msgstr "ਯੂਜ਼ਰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
 
-#, fuzzy
 msgid "The following users are missing from your addressbook"
-msgstr "ਤੁਹਾਡੀ ਖੋਜ ਦੇ ਹੇਠ ਦਿੱਤੇ ਨਤੀਜੇ ਹਨ"
+msgstr "ਤੁਹਾਡੀ ਐਡਰੈੱਸਬੁੱਕ ਵਿੱਚੋਂ ਹੇਠ ਦਿੱਤੇ ਯੂਜ਼ਰ ਗੁੰਮ ਹਨ"
 
 #, c-format
 msgid "Unable to add user on %s (%s)"
@@ -5251,9 +5141,8 @@
 msgid "Service Temporarily Unavailable."
 msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਰੂਪ 'ਚ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
 
-#, fuzzy
 msgid "Mobile message was not sent because it was too long."
-msgstr "ਸੁਨੇਹਾ ਨਹੀਂ ਭੇਜਿਆ ਗਿਆ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਸਾਇਨ-ਆਨ ਨਹੀਂ ਹੋ।"
+msgstr "ਮੋਬਾਇਲ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਗਿਆ, ਕਿਉਂਕਿ ਇਹ ਬਹੁਤ ਲੰਮਾ ਸੀ।"
 
 msgid "Unable to rename group"
 msgstr "ਗਰੁੱਪ ਨਾਂ-ਤਬਦੀਲੀ ਲਈ ਅਸਫਲ"
@@ -5261,7 +5150,7 @@
 msgid "Unable to delete group"
 msgstr "ਗਰੁੱਪ ਹਟਾਉਣ ਲਈ ਅਸਫਲ"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The MSN server will shut down for maintenance in %d minute. You will "
 "automatically be signed out at that time.  Please finish any conversations "
@@ -5277,38 +5166,31 @@
 "After the maintenance has been completed, you will be able to successfully "
 "sign in."
 msgstr[0] ""
-"MSN ਸਰਵਰ ਦੇਖਭਾਲਈ ਲਈ %d ਮਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ "
+"MSN ਸਰਵਰ ਦੇਖਭਾਲ ਲਈ %d ਮਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ "
 "ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n"
 "\n"
-"ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ। MSN ਸਰਵਰ ਲਈ %d ਮਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ "
-"ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n"
-"\n"
 "ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ।"
 msgstr[1] ""
-"MSN ਸਰਵਰ ਦੇਖਭਾਲਈ ਲਈ %d ਮਿੰਟ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ "
+"MSN ਸਰਵਰ ਦੇਖਭਾਲਈ ਲਈ %d ਮਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ "
 "ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n"
 "\n"
-"ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ। MSN ਸਰਵਰ ਲਈ %d ਮਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ "
-"ਜਾਵੇਗਾ। ਤੁਸੀਂ ਉਸ ਸਮੇਂ ਆਟੋਮੈਟਿਕ ਹੀ ਸਾਇਨ-ਆਉਟ ਹੋ ਜਾਉਗੇ। ਜਾਰੀ ਗੱਲਾਬਾਤਾਂ ਛੇਤੀ ਖਤਮ ਕਰੋ ਜੀ!\n"
-"\n"
 "ਦੇਖਭਾਲ ਖਤਮ ਹੋਣ ਬਾਅਦ, ਤੁਸੀਂ ਫੇਰ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ।"
 
 msgid ""
 "Message was not sent because the system is unavailable. This normally "
 "happens when the user is blocked or does not exist."
 msgstr ""
-
-#, fuzzy
+"ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਿਸਟਮ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ। ਇਹ ਅਕਸਰ ਤਾਂ ਹੁੰਦਾ ਹੈ, ਜਦੋਂ "
+"ਯੂਜ਼ਰ ਉੱਤੇ ਪਾਬੰਦੀ ਹੋਵੇ ਜਾਂ ਮੌਜੂਦ ਨਾ ਹੋਵੇ।"
+
 msgid "Message was not sent because messages are being sent too quickly."
-msgstr "ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਅਸੀਂ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜ ਰਹੇ ਹਾਂ:"
-
-#, fuzzy
+msgstr "ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸੁਨੇਹੇ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜੇ ਜਾ ਰਹੇ ਹਨ।"
+
 msgid "Message was not sent because an unknown encoding error occurred."
-msgstr "ਇੱਕ ਅਣਜਾਣੀ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ:"
-
-#, fuzzy
+msgstr "ਇੱਕ ਅਣਜਾਣੀ ਇੰਕੋਡਿੰਗ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।"
+
 msgid "Message was not sent because an unknown error occurred."
-msgstr "ਇੱਕ ਅਣਜਾਣੀ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ:"
+msgstr "ਇੱਕ ਅਣਜਾਣੀ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ।"
 
 msgid "Unable to connect"
 msgstr "ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
@@ -5346,8 +5228,7 @@
 msgid "Unable to authenticate: %s"
 msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਅਸਫਲ: %s"
 
-msgid ""
-"Your MSN buddy list is temporarily unavailable. Please wait and try again."
+msgid "Your MSN buddy list is temporarily unavailable. Please wait and try again."
 msgstr "ਤੁਹਾਡਾ MSN ਬੱਡੀ ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ। ਉਡੀਕ ਕਰਕੇ ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ ਜੀ।"
 
 msgid "Handshaking"
@@ -5399,8 +5280,7 @@
 "ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਅਸੀਂ ਸਰਵਰ ਨਾਲ ਸ਼ੈਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ ਹਾਂ। ਇਹ ਇੱਕ ਸਮੱਸਿਆ "
 "ਜਾਪਦੀ ਹੈ, ਕੁਝ ਮਿੰਟ ਬਾਅਦ ਟਰਾਈ ਕਰੋ ਜੀ:"
 
-msgid ""
-"Message could not be sent because an error with the switchboard occurred:"
+msgid "Message could not be sent because an error with the switchboard occurred:"
 msgstr "ਸਵਿੱਚਬੋਰਡ ਗਲਤੀ ਆਉਣ ਕਰਕੇ ਸੁਨੇਹਾ ਭੇਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ:"
 
 msgid "Message may have not been sent because an unknown error occurred:"
@@ -5414,28 +5294,21 @@
 msgid "%s has removed you from his or her buddy list."
 msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ 'ਚੋਂ ਹਟਾ ਦਿੱਤਾ ਹੈ।"
 
-#, fuzzy
 msgid "Delete Buddy from Address Book?"
-msgstr "ਐਡਰੈੱਸ ਕਿਤਾਬ ਵਿੱਚ ਸ਼ਾਮਿਲ"
-
-#, fuzzy
+msgstr "ਕੀ ਐਡਰੈੱਸਬੁੱਕ ਵਿੱਚੋਂ ਬੱਡੀ ਹਟਾਉਣਾ ਹੈ?"
+
 msgid "Do you want to delete this buddy from your address book as well?"
-msgstr "ਕੀ ਤੁਸੀਂ ਇਸ ਬੱਡੀ ਨੂੰ ਆਪਣੇ ਬੱਡੀ ਦੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨਾ ਚਾਹੋਗੇ?"
-
-#. 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
-#, c-format
-msgid "Unable to add \"%s\"."
-msgstr "\"%s\" ਜੋੜਨ ਲਈ ਅਸਫ਼ਲ ਹੈ।"
-
-#, fuzzy
+msgstr "ਕੀ ਤੁਸੀਂ ਇਸ ਬੱਡੀ ਨੂੰ ਆਪਣੀ ਐਡਰੈੱਸਬੁੱਕ ਵਿੱਚੋਂ ਵੀ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
+
 msgid "The username specified is invalid."
-msgstr "ਦਿੱਤਾ ਸਕਰੀਨ ਨਾਂ ਗਲਤ ਹੈ।"
+msgstr "ਦਿੱਤਾ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ"
 
 msgid "This Hotmail account may not be active."
 msgstr "ਇਹ ਹਾਟਮੇਲ ਅਕਾਊਂਟ ਹਾਲੇ ਸਰਗਰਮ ਨਹੀਂ ਹੈ।"
 
+msgid "Profile URL"
+msgstr "ਪ੍ਰੋਫਾਇਲ URL"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -5446,22 +5319,15 @@
 #. *< version
 #. *  summary
 #. *  description
-#, fuzzy
 msgid "MSN Protocol Plugin"
-msgstr "AIM ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
-
-msgid "Missing Cipher"
-msgstr "ਸੀਫ਼ਰ ਗੁੰਮ ਹੈ"
-
-msgid "The RC4 cipher could not be found"
-msgstr "RC4 ਸੀਫ਼ਰ ਨਹੀਂ ਲੱਭਿਆ"
-
-msgid ""
-"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
-"not be loaded."
-msgstr ""
-"RC4 ਸਹਿਯੋਗ (>=2.0.1) ਨਾਲ libpurple ਲਈ ਅੱਪਗਰੇਡ ਕਰੋ। MySpaceIM ਪਲੱਗਇਨ ਲੋਡ ਨਹੀਂ ਕੀਤੀ "
-"ਜਾ ਸਕੇਗੀ।"
+msgstr "MSN ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+
+#, c-format
+msgid "No such user: %s"
+msgstr "ਕੋਈ ਯੂਜ਼ਰ ਨਹੀਂ: %s"
+
+msgid "User lookup"
+msgstr "ਯੂਜਰ ਖੋਜ"
 
 msgid "Reading challenge"
 msgstr "ਚੈਲੰਜ਼ ਪੜ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ"
@@ -5472,11 +5338,17 @@
 msgid "Logging in"
 msgstr "ਲਾਗਇਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
 
-#, fuzzy, c-format
-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] "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋਇਆ (%d ਸਕਿੰਟਾਂ ਤੋਂ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ)"
-msgstr[1] "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋਇਆ (%d ਸਕਿੰਟਾਂ ਤੋਂ ਕੋਈ ਡਾਟਾ ਨਹੀਂ ਮਿਲਿਆ)"
+msgid "MySpaceIM - No Username Set"
+msgstr "MySpaceIM - ਕੋਈ ਯੂਜ਼ਰ ਨਾਂ ਨਹੀਂ ਦਿੱਤਾ"
+
+msgid "You appear to have no MySpace username."
+msgstr "ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ MySpace ਯੂਜ਼ਰ ਨਾਂ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।"
+
+msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
+msgstr "ਕੀ ਤੁਸੀਂ ਹੁਣ ਸੈੱਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ? (ਯਾਦ ਰੱਖੋ ਕਿ ਇਹ ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ!)"
+
+msgid "Lost connection with server"
+msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਖਤਮ"
 
 #. Can't write _()'d strings in array initializers. Workaround.
 msgid "New mail messages"
@@ -5497,15 +5369,25 @@
 msgid "MySpace"
 msgstr "MySpace"
 
-#, fuzzy
-msgid "MySpaceIM - No Username Set"
-msgstr "ਕੋਈ ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ"
-
-msgid "You appear to have no MySpace username."
-msgstr ""
-
-msgid "Would you like to set one now? (Note: THIS CANNOT BE CHANGED!)"
-msgstr ""
+msgid "IM Friends"
+msgstr "IM ਦੋਸਤ"
+
+#, 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[0] ""
+"%d ਬੱਡੀ ਨੂੰ ਸਰਵਰ ਤੋਂ ਸ਼ਾਮਲ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ (ਸਰਵਰ-ਸਾਈਡ ਲਿਸਟ ਉੱਤੋਂ ਬੱਡੀ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਮਲ "
+"ਕੀਤੇ)"
+msgstr[1] ""
+"%d ਬੱਡੀਆਂ ਨੂੰ ਸਰਵਰ ਤੋਂ ਸ਼ਾਮਲ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ (ਸਰਵਰ-ਸਾਈਡ ਲਿਸਟ ਉੱਤੋਂ ਬੱਡੀ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਮਲ "
+"ਕੀਤੇ)"
+
+msgid "Add contacts from server"
+msgstr "ਸਰਵਰ ਤੋਂ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ"
 
 #. The session is now set up, ready to be connected. This emits the
 #. * signedOn signal, so clients can now do anything with msimprpl, and
@@ -5524,10 +5406,25 @@
 "myspace.com/index.cfm?fuseaction=accountSettings.changePassword and try "
 "again."
 msgstr ""
+"%s ਤੁਹਾਡਾ ਪਾਸਵਰਡ %d ਅੱਖਰਾਂ ਦਾ ਹੈ, ਜੋ ਕਿ MySpaceIM ਲਈ %d ਦੀ ਲੰਬਾਈ ਤੋਂ ਵੱਧ ਗਿਆ ਹੈ। ਆਪਣਾ ਪਾਸਵਰਡ http://profileedit."
+"myspace.com/index.cfm?fuseaction=accountSettings.changePassword ਉੱਤੇ ਛੋਟਾ ਕਰਕੇ ਮੁੜ-ਟਰਾਈ ਕਰੋ ਜੀ।"
 
 msgid "MySpaceIM Error"
 msgstr "MySpaceIM ਗਲਤੀ"
 
+msgid "Invalid input condition"
+msgstr "ਗਲਤ ਇੰਪੁੱਟ ਹਾਲਤ"
+
+msgid "Read buffer full (2)"
+msgstr "ਪੜ੍ਹਨ ਬਫ਼ਰ ਭਰਿਆ (2)"
+
+msgid "Unparseable message"
+msgstr "ਨਾ-ਪਾਰਸਯੋਗ ਸੁਨੇਹਾ"
+
+#, c-format
+msgid "Couldn't connect to host: %s (%d)"
+msgstr "ਹੋਸਟ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s (%d)"
+
 msgid "Failed to add buddy"
 msgstr "ਬੱਡੀ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਫੇਲ੍ਹ"
 
@@ -5537,13 +5434,6 @@
 msgid "persist command failed"
 msgstr "persist ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੋਈ।"
 
-#, c-format
-msgid "No such user: %s"
-msgstr "ਕੋਈ ਯੂਜ਼ਰ ਨਹੀਂ: %s"
-
-msgid "User lookup"
-msgstr "ਯੂਜਰ ਖੋਜ"
-
 msgid "Failed to remove buddy"
 msgstr "ਬੱਡੀ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
 
@@ -5553,39 +5443,18 @@
 msgid "blocklist command failed"
 msgstr "blocklist ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੋਈ"
 
-msgid "Invalid input condition"
-msgstr "ਗਲਤ ਇੰਪੁੱਟ ਹਾਲਤ"
-
-#, fuzzy
-msgid "Read buffer full (2)"
-msgstr "ਪੜ੍ਹਨ ਬਫ਼ਰ ਭਰਿਆ"
-
-msgid "Unparseable message"
-msgstr "ਨਾ-ਪਾਰਸਯੋਗ ਸੁਨੇਹਾ"
-
-#, c-format
-msgid "Couldn't connect to host: %s (%d)"
-msgstr "ਹੋਸਟ ਨਾਲ ਕੁਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ: %s (%d)"
-
-msgid "IM Friends"
-msgstr "IM ਦੋਸਤ"
-
-#, fuzzy, 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[0] ""
-"%d ਬੱਡੀ ਨੂੰ ਸਰਵਰ ਤੋਂ ਸ਼ਾਮਲ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ (ਸਰਵਰ-ਸਾਈਡ ਲਿਸਟ ਉੱਤੋਂ ਬੱਡੀ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਮਲ "
-"ਕੀਤੇ)"
-msgstr[1] ""
-"%d ਬੱਡੀ ਨੂੰ ਸਰਵਰ ਤੋਂ ਸ਼ਾਮਲ ਜਾਂ ਅੱਪਡੇਟ ਕੀਤੇ ਗਏ ਹਨ (ਸਰਵਰ-ਸਾਈਡ ਲਿਸਟ ਉੱਤੋਂ ਬੱਡੀ ਪਹਿਲਾਂ ਹੀ ਸ਼ਾਮਲ "
-"ਕੀਤੇ)"
-
-msgid "Add contacts from server"
-msgstr "ਸਰਵਰ ਤੋਂ ਸੰਪਰਕ ਸ਼ਾਮਲ ਕਰੋ"
+msgid "Missing Cipher"
+msgstr "ਸੀਫ਼ਰ ਗੁੰਮ ਹੈ"
+
+msgid "The RC4 cipher could not be found"
+msgstr "RC4 ਸੀਫ਼ਰ ਨਹੀਂ ਲੱਭਿਆ"
+
+msgid ""
+"Upgrade to a libpurple with RC4 support (>= 2.0.1). MySpaceIM plugin will "
+"not be loaded."
+msgstr ""
+"RC4 ਸਹਿਯੋਗ (>=2.0.1) ਨਾਲ libpurple ਲਈ ਅੱਪਗਰੇਡ ਕਰੋ। MySpaceIM ਪਲੱਗਇਨ ਲੋਡ ਨਹੀਂ ਕੀਤੀ "
+"ਜਾ ਸਕੇਗੀ।"
 
 msgid "Add friends from MySpace.com"
 msgstr "MySpace.com ਤੋਂ ਦੋਸਤ ਸ਼ਾਮਲ ਕਰੋ"
@@ -5627,9 +5496,6 @@
 msgid "User"
 msgstr "ਯੂਜ਼ਰ"
 
-msgid "Profile"
-msgstr "ਪ੍ਰੋਫਾਇਲ"
-
 msgid "Headline"
 msgstr "ਹੈੱਡਲਾਈਨ"
 
@@ -5642,34 +5508,30 @@
 msgid "Client Version"
 msgstr "ਕਲਾਇਟ ਵਰਜਨ"
 
+msgid "MySpaceIM - Username Available"
+msgstr "MySpaceIM - ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਹੈ"
+
+msgid "This username is available. Would you like to set it?"
+msgstr "ਇਹ ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਹੈ। ਕੀ ਤੁਸੀਂ ਸੈੱਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
+
+msgid "ONCE SET, THIS CANNOT BE CHANGED!"
+msgstr "ਇੱਕ ਵਾਰ ਸੈੱਟ ਕੀਤਾ ਤਾਂ ਮੁੜ-ਬਦਲਿਆ ਨਹੀਂ ਜਾ ਸਕੇਗਾ!"
+
+msgid "MySpaceIM - Please Set a Username"
+msgstr "MySpaceIM - ਯੂਜ਼ਰ ਨਾਂ ਸੈੱਟ ਕਰੋ"
+
+msgid "This username is unavailable."
+msgstr "ਇਹ ਯੂਜ਼ਰ ਨਾਂ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
+
+msgid "Please try another username:"
+msgstr "ਹੋਰ ਯੂਜ਼ਰ ਨਾਂ ਨਾਲ ਟਰਾਈ ਕਰੋ ਜੀ:"
+
 #. Protocol won't log in now without a username set.. Disconnect
 msgid "No username set"
 msgstr "ਕੋਈ ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ"
 
-msgid "MySpaceIM - Please Set a Username"
-msgstr ""
-
 msgid "Please enter a username to check its availability:"
-msgstr ""
-
-#, fuzzy
-msgid "MySpaceIM - Username Available"
-msgstr "ਸਰਵਿਸ ਉਪਲਬੱਧ ਨਹੀਂ"
-
-#, fuzzy
-msgid "This username is available. Would you like to set it?"
-msgstr "%s ਨੇ ਵਾਇਟਬੋਰਡ ਉੱਤੇ ਸੁਨੇਹਾ ਭੇਜਿਆ। ਕੀ ਤੁਸੀਂ ਵਾਇਟਬੋਰਡ ਖੋਲ੍ਹਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-msgid "ONCE SET, THIS CANNOT BE CHANGED!"
-msgstr ""
-
-#, fuzzy
-msgid "This username is unavailable."
-msgstr "ਇਸ ਸਰੂਪ ਵਿੱਚ ਕੋਈ ਸਮਾਈਲ ਨਹੀਂ ਹਨ।"
-
-#, fuzzy
-msgid "Please try another username:"
-msgstr "%s ਲਈ ਨਵਾਂ ਨਾਂ ਦਿਓ ਜੀ"
+msgstr "ਕਿਸੇ ਦੀ ਉਪਲੱਬਧਤਾ ਵੇਖਣ ਲਈ ਯੂਜ਼ਰ ਨਾਂ ਦਿਓ ਜੀ:"
 
 #. TODO: icons for each zap
 #. Lots of comments for translators:
@@ -5862,13 +5724,11 @@
 msgid "Master archive is misconfigured"
 msgstr "ਮਾਸਟਰ ਭੰਡਾਰ ਗਲਤ ਸੰਰਚਿਤ ਹੈ"
 
-#, fuzzy
 msgid "Incorrect username or password"
-msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ"
-
-#, fuzzy
+msgstr "ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ"
+
 msgid "Could not recognize the host of the username you entered"
-msgstr "ਤੁਹਾਡੇ ਰਾਹੀਂ ਦਿੱਤੇ ਸਕਰੀਨ ਨਾਂ ਲਈ ਹੋਸਟ ਖੋਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ"
+msgstr "ਤੁਹਾਡੇ ਰਾਹੀਂ ਦਿੱਤੇ ਯੂਜ਼ਰ ਨਾਂ ਲਈ ਹੋਸਟ ਖੋਜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ"
 
 msgid ""
 "Your account has been disabled because too many incorrect passwords were "
@@ -5881,9 +5741,8 @@
 msgid "You have reached your limit for the number of contacts allowed"
 msgstr "ਤੁਸੀਂ ਵੱਧ ਤੋਂ ਵੱਧ ਸਵੀਕਾਰ ਸੰਪਰਕਾਂ ਦੀ ਸੀਮਾ ਤੱਕ ਅੱਪੜ ਗਏ ਹੋ"
 
-#, fuzzy
 msgid "You have entered an incorrect username"
-msgstr "ਤੁਸੀਂ ਇੱਕ ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਦਿੱਤਾ ਹੈ"
+msgstr "ਤੁਸੀਂ ਇੱਕ ਗਲਤ ਯੂਜ਼ਰ ਨਾਂ ਦਿੱਤਾ ਹੈ"
 
 msgid "An error occurred while updating the directory"
 msgstr "ਡਾਇਰੈਕਟਰੀ ਦੇ ਨਵੀਨੀਕਰਨ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ"
@@ -6040,8 +5899,7 @@
 msgstr "ਤੁਸੀਂ ਲਾਗ ਆਉਟ ਹੋ ਗਏ ਹੋ, ਕਿਉਕਿ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਵਰਕਸਟੇਸ਼ਨ ਉੱਤੇ ਲਾਗਇਨ ਹੋ ਗਏ ਹੋ।"
 
 #, c-format
-msgid ""
-"%s appears to be offline and did not receive the message that you just sent."
+msgid "%s appears to be offline and did not receive the message that you just sent."
 msgstr "%s ਮੌਜੂਦ ਨਹੀਂ (ਆਫਲਾਇਨ) ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਰਾਹੀਂ ਭੇਜੇ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਨਹੀਂ ਕਰ ਸਕੇਗਾ।"
 
 msgid ""
@@ -6052,7 +5910,6 @@
 msgid "Error. SSL support is not installed."
 msgstr "ਗਲਤੀ ਹੈ। SSL ਸਹਿਯੋਗ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ।"
 
-#, c-format
 msgid "This conference has been closed. No more messages can be sent."
 msgstr "ਇਹ ਕਾਨਫਰੰਸ ਬੰਦ ਕਰ ਦਿੱਤੀ ਗਈ ਹੈ। ਕੋਈ ਹੋਰ ਸੁਨੇਹਾ ਨਹੀਂ ਭੇਜਿਆ ਜਾ ਸਕਦਾ ਹੈ।"
 
@@ -6075,13 +5932,11 @@
 msgid "Server port"
 msgstr "ਸਰਵਰ ਪੋਰਟ"
 
-#, fuzzy
 msgid "Could not join chat room"
-msgstr "ਜੁੜਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ"
-
-#, fuzzy
+msgstr "ਚੈਟ ਰੂਮ ਵਿੱਚ ਦਾਖਲ ਨਹੀਂ ਹੋਇਆ ਜਾ ਸਕਿਆ"
+
 msgid "Invalid chat room name"
-msgstr "ਗਲਤ ਰੂਮ ਨਾਂ"
+msgstr "ਗਲਤ ਚੈਟ ਰੂਮ ਨਾਂ"
 
 msgid "Server closed the connection."
 msgstr "ਸਰਵਰ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ।"
@@ -6111,7 +5966,7 @@
 msgstr "AIM ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
 
 msgid "ICQ UIN..."
-msgstr ""
+msgstr "ICQ UIN..."
 
 #. *< type
 #. *< ui_requirement
@@ -6209,10 +6064,10 @@
 msgstr "ਲੋਕਲ ਇਜ਼ਾਜਤ/ਪਾਬੰਦੀ"
 
 msgid "Warning level too high (sender)"
-msgstr ""
+msgstr "ਚੇਤਾਵਨੀ ਲੈਵਲ ਬਹੁਤ ਵੱਧ ਹੈ (ਭੇਜਣ ਵਾਲਾ)"
 
 msgid "Warning level too high (receiver)"
-msgstr ""
+msgstr "ਚੇਤਾਵਨੀ ਲੈਵਲ ਬਹੁਤ ਵੱਧ ਹੈ (ਲੈਣ ਵਾਲਾ)"
 
 msgid "User temporarily unavailable"
 msgstr "ਯੂਜ਼ਰ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ"
@@ -6314,27 +6169,21 @@
 msgid "Camera"
 msgstr "ਕੈਮਰਾ"
 
-#, fuzzy
 msgid "Screen Sharing"
-msgstr "ਸਕਰੀਨ ਨਾਂ"
-
-#, c-format
+msgstr "ਸਕਰੀਨ ਸਾਂਝੀ"
+
 msgid "Free For Chat"
 msgstr "ਗੱਲਬਾਤ ਕਰਨ ਲਈ ਵੇਹਲਾ"
 
-#, c-format
 msgid "Not Available"
 msgstr "ਉਪਲੱਬਧ ਨਹੀਂ"
 
-#, c-format
 msgid "Occupied"
 msgstr "ਰੁਝਿਆ"
 
-#, c-format
 msgid "Web Aware"
 msgstr "ਵੈਬ ਜਾਣਕਾਰ"
 
-#, c-format
 msgid "Invisible"
 msgstr "ਅਦਿੱਖ"
 
@@ -6363,9 +6212,8 @@
 "BOS ਸਰਵਰ ਨਾਲ ਜੁੜਨ ਨਹੀਂ ਸਕਿਆ:\n"
 "%s"
 
-#, fuzzy
 msgid "Username sent"
-msgstr "ਕੋਈ ਯੂਜ਼ਰ-ਨਾਂ ਸੈੱਟ"
+msgstr "ਯੂਜ਼ਰ ਨਾਂ ਭੇਜਿਆ"
 
 msgid "Connection established, cookie sent"
 msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣ ਗਿਆ ਹੈ, ਕੂਕੀ ਭੇਜਿਆ ਗਿਆ"
@@ -6374,21 +6222,20 @@
 msgid "Finalizing connection"
 msgstr "ਕੁਨੈਕਸ਼ਨ ਤਿਆਰ"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Unable to login: Could not sign on as %s because the username is invalid.  "
 "Usernames must be a valid email address, or start with a letter and contain "
 "only letters, numbers and spaces, or contain only numbers."
 msgstr ""
-"ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s ਵਾਂਗ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਕਰੀਨ-ਨਾਂ ਗਲਤ ਹੈ। "
-"ਸਕਰੀਨ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ "
+"ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ: %s ਵਾਂਗ ਲਾਗਇਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। "
+"ਯੂਜ਼ਰ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ "
 "ਅੱਖਰ, ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।"
 
 #. Unregistered screen name
 #. uid is not exist
-#, fuzzy
 msgid "Invalid username."
-msgstr "ਗਲਤ ਨਾਂ"
+msgstr "ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਹੈ।"
 
 msgid "Incorrect password."
 msgstr "ਗਲਤ ਪਾਸਵਰਡ ਹੈ।"
@@ -6436,12 +6283,8 @@
 msgstr "ਠੀਕ ਹੈ(_O)"
 
 #, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"ਤੁਹਾਡਾ ਕੁਨੈਕਸ਼ਨ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ। ਤੁਸੀਂ ਸਥਿਰ ਹੋਣ ਤੱਕ TOC ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ। ਨਵੇਂ ਲਈ "
-"%s ਵੇਖੋ।"
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr "ਤੁਹਾਡਾ ਕੁਨੈਕਸ਼ਨ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ। ਇਸਕਰਕੇ ਅੱਪਡੇਟ ਲਈ %s ਵੇਖੋ।"
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "ਇੱਕ ਠੀਕ AIM ਲਾਗਇਨ ਹੈਂਸ਼ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਅਸਫ਼ਲ।"
@@ -6553,27 +6396,22 @@
 msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਬਹੁਤ ਵੱਡੇ ਹਨ।"
 
 #, c-format
-msgid ""
-"You missed %hu message from %s because the rate limit has been exceeded."
-msgid_plural ""
-"You missed %hu messages from %s because the rate limit has been exceeded."
+msgid "You missed %hu message from %s because the rate limit has been exceeded."
+msgid_plural "You missed %hu messages from %s because the rate limit has been exceeded."
 msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਦਰ ਸੀਮਾ ਹੱਦ ਟੱਪ ਗਈ ਹੈ।"
 msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਦਰ ਸੀਮਾ ਹੱਦ ਟੱਪ ਗਈ ਹੈ।"
 
-#, fuzzy, c-format
-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] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਉਹ ਬੁਰਾ ਹੈ।"
-msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਉਹ ਬੁਰਾ ਹੈ।"
-
-#, fuzzy, c-format
+#, c-format
+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] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਉਸ ਦਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।"
+msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਉਸ ਦਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।"
+
+#, 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] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਤੁਸੀਂ ਬੁਰੇ ਹੋ।"
-msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਤੁਸੀਂ ਬੁਰੇ ਹੋ।"
+msgid_plural "You missed %hu messages from %s because your warning level is too high."
+msgstr[0] "ਤੁਸੀਂ %hu ਸੁਨੇਹਾ %s ਵਲੋਂ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ।"
+msgstr[1] "ਤੁਸੀਂ %hu ਸੁਨੇਹਿਆਂ %s ਵਲੋਂ ਨੂੰ ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਵੱਧ ਹੈ"
 
 #, c-format
 msgid "You missed %hu message from %s for an unknown reason."
@@ -6603,6 +6441,9 @@
 msgid "Member Since"
 msgstr "ਮੈਂਬਰ ਹੈ"
 
+msgid "Profile"
+msgstr "ਪ੍ਰੋਫਾਇਲ"
+
 msgid "Your AIM connection may be lost."
 msgstr "ਤੁਹਾਡਾ AIM ਕੁਨੈਕਸ਼ਨ ਟੁੱਟ ਗਿਆ ਹੋ ਸਕਦਾ ਹੈ।"
 
@@ -6652,11 +6493,11 @@
 msgid "Pop-Up Message"
 msgstr "ਪੋਪਅੱਪ ਸੁਨੇਹਾ"
 
-#, fuzzy, c-format
+#, c-format
 msgid "The following username is associated with %s"
 msgid_plural "The following usernames are associated with %s"
-msgstr[0] "ਹੇਠ ਦਿੱਤੀ ਸਕਰੀਨ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹਨ"
-msgstr[1] "ਹੇਠ ਦਿੱਤੇ ਸਕਰੀਨ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹਨ"
+msgstr[0] "ਹੇਠ ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹੈ"
+msgstr[1] "ਹੇਠ ਦਿੱਤੇ ਯੂਜ਼ਰ ਨਾਂ %s ਨਾਲ ਸਬੰਧਿਤ ਹਨ"
 
 #, c-format
 msgid "No results found for email address %s"
@@ -6669,38 +6510,35 @@
 msgid "Account Confirmation Requested"
 msgstr "ਅਕਾਊਂਟ ਪੁਸ਼ਟੀ ਮੰਗ"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Error 0x%04x: Unable to format username because the requested name differs "
 "from the original."
-msgstr ""
-"ਗਲਤੀ 0x%04x: ਸਕਰੀਨ ਨਾਂ ਫਾਰਮਿਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਕਰੀਨ ਨਾਂ ਅਸਲੀ ਨਾਲੋਂ ਵੱਖਰਾ ਹੈ।"
-
-#, fuzzy, c-format
+msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਮਰੱਥ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਯੂਜ਼ਰ ਨਾਂ ਅਸਲੀ ਨਾਲੋਂ ਵੱਖਰਾ ਹੈ।"
+
+#, c-format
 msgid "Error 0x%04x: Unable to format username because it is invalid."
-msgstr "ਗਲਤੀ 0x%04x: ਸਕਰੀਨ ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਗਲਤ ਹੈ।"
-
-#, fuzzy, c-format
+msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਗਲਤ ਹੈ।"
+
+#, c-format
 msgid ""
 "Error 0x%04x: Unable to format username because the requested name is too "
 "long."
-msgstr "ਗਲਤੀ 0x%04x: ਸਕਰੀਨ ਨਾਂ ਫਾਰਮਿਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਕਰੀਨ ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ।"
-
-#, fuzzy, c-format
+msgstr "ਗਲਤੀ 0x%04x: ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਯੂਜ਼ਰ-ਨਾਂ ਬਹੁਤ ਵੱਡਾ ਹੈ।"
+
+#, c-format
 msgid ""
 "Error 0x%04x: Unable to change email address because there is already a "
 "request pending for this username."
 msgstr ""
-"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਤਬਦੀਲ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤਾ ਸਿਰਨਾਵੇਂ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ "
+"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਇਸ ਯੂਜ਼ਰ-ਨਾਂ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ "
 "ਬੇਨਤੀ ਬਕਾਇਆ ਪਈ ਹੈ।"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Error 0x%04x: Unable to change email address because the given address has "
 "too many usernames associated with it."
-msgstr ""
-"ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਤਬਦੀਲ ਕਰਨ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤੇ ਐਡਰੈੱਸ ਨਾਲ ਬਹੁਤ ਸਾਰੇ ਸਕਰੀਨ "
-"ਨਾਂ ਸਬੰਧਤ ਹਨ।"
+msgstr "ਗਲਤੀ 0x%04x: ਈਮੇਲ ਐਡਰੈੱਸ ਬਦਲਣ ਲਈ ਅਸਫਲ ਹੈ, ਕਿਉਕਿ ਦਿੱਤੇ ਐਡਰੈੱਸ ਨਾਲ ਬਹੁਤ ਸਾਰੇ ਯੂਜ਼ਰ-ਨਾਂ ਸਬੰਧਤ ਹਨ।"
 
 #, c-format
 msgid ""
@@ -6713,7 +6551,7 @@
 msgstr "ਗਲਤੀ 0x%04x: ਅਣਜਾਣੀ ਗਲਤੀ ਹੈ।"
 
 msgid "Error Changing Account Info"
-msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ ਤਬਦੀਲ ਕਰਨ ਲਈ ਗਲਤੀ"
+msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ ਬਦਲਣ ਦੌਰਾਨ ਗਲਤੀ"
 
 #, c-format
 msgid "The email address for %s is %s"
@@ -6722,8 +6560,7 @@
 msgid "Account Info"
 msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ"
 
-msgid ""
-"Your IM Image was not sent. You must be Direct Connected to send IM Images."
+msgid "Your IM Image was not sent. You must be Direct Connected to send IM Images."
 msgstr "ਤੁਹਾਡਾ IM ਭੇਜਿਆ ਨਹੀਂ ਸੀ ਗਿਆ। ਤੁਹਾਨੂੰ IM ਚਿੱਤਰ ਭੇਜਣ ਲਈ ਸਿੱਧਾ ਜੁੜਨਾ ਚਾਹੀਦਾ ਹੈ।"
 
 msgid "Unable to set AIM profile."
@@ -6738,7 +6575,7 @@
 "ਤੁਹਾਡਾ ਪਰੋਫਾਇਲ ਅਣ-ਸੈੱਟ ਹੀ ਰਹੇਗਾ, ਜਦੋਂ ਤੁਸੀਂ ਪੂਰੀ ਤਰ੍ਹਾਂ ਕੁਨੈਕਟ ਹੋ ਜਾਵੋ ਤਾਂ ਫੇਰ ਸੈਟਿੰਗ ਕਰਨ ਦੀ "
 "ਟਰਾਈ ਕਰਨੀ।"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The maximum profile length of %d byte has been exceeded.  It has been "
 "truncated for you."
@@ -6746,51 +6583,43 @@
 "The maximum profile length of %d bytes has been exceeded.  It has been "
 "truncated for you."
 msgstr[0] ""
-"ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ "
-"ਹੈ।ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) "
-"ਦਿੱਤਾ ਹੈ।"
+"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ "
+"ਹੈ।"
 msgstr[1] ""
-"ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ "
-"ਹੈ।ਪ੍ਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) "
+"ਪਰੋਫਾਇਲ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ।ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) "
 "ਦਿੱਤਾ ਹੈ।"
 
 msgid "Profile too long."
-msgstr "ਪ੍ਰੋਫਾਇਲ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
-
-#, fuzzy, c-format
+msgstr "ਪਰੋਫਾਇਲ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
+
+#, c-format
 msgid ""
 "The maximum away message length of %d byte has been exceeded.  It has been "
 "truncated for you."
 msgid_plural ""
 "The maximum away message length of %d bytes has been exceeded.  It has been "
 "truncated for you."
-msgstr[0] ""
-"ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।ਸੁਨੇਹੇ ਦੀ "
-"ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
-msgstr[1] ""
-"ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।ਸੁਨੇਹੇ ਦੀ "
-"ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
+msgstr[0] "ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
+msgstr[1] "ਸੁਨੇਹੇ ਦੀ ਵੱਧੋ-ਵੱਧ ਲੰਬਾਈ %d ਬਾਇਟਾਂ ਤੋਂ ਵੱਧ ਗਈ ਹੈ। ਗੇਮ ਨੇ ਤੁਹਾਡੇ ਲਈ ਇਸ ਨੂੰ ਛਾਂਗ (ਛੋਟਾ ਕਰ) ਦਿੱਤਾ ਹੈ।"
 
 msgid "Away message too long."
 msgstr "ਦੂਰ ਸੁਨੇਹਾ ਬਹੁਤ ਲੰਮਾ ਹੈ।"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Could not add the buddy %s because the username is invalid.  Usernames must "
 "be a valid email address, or start with a letter and contain only letters, "
 "numbers and spaces, or contain only numbers."
 msgstr ""
-"ਬੱਡੀ %s ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਸਕਰੀਨ ਨਾਂ ਗਲਤ ਹੈ। ਸਕਰੀਨ ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ "
+"ਬੱਡੀ %s ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਕਿਉਂਕਿ ਯੂਜ਼ਰ-ਨਾਂ ਗਲਤ ਹੈ। ਯੂਜ਼ਰ-ਨਾਂ ਇੱਕ ਵੈਧ ਈਮੇਲ ਐਡਰੈੱਸ "
 "ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਕੇਵਲ ਅੱਖਰ, ਨੰਬਰ, ਖਾਲੀ ਥਾਂ ਜਾਂ ਕੁਝ "
 "ਨੰਬਰ ਹੀ ਹੋ ਸਕਦੇ ਹਨ।"
 
-#, fuzzy
 msgid "Unable to Add"
-msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
-
-#, fuzzy
+msgstr "ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
+
 msgid "Unable to Retrieve Buddy List"
-msgstr "ਬੱਡੀ ਲਿਸਟ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਅਸਫਲ"
+msgstr "ਬੱਡੀ ਲਿਸਟ ਲੈਣ ਲਈ ਅਸਮਰੱਥ"
 
 msgid ""
 "The AIM servers were temporarily unable to send your buddy list.  Your buddy "
@@ -6817,7 +6646,7 @@
 msgid "Could not add the buddy %s for an unknown reason."
 msgstr "ਅਣਜਾਣੇ ਕਾਰਨ ਕਰਨੇ ਬੱਡੀ %s ਨੂੰ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "The user %s has given you permission to add him or her to your buddy list.  "
 "Do you want to add this user?"
@@ -6831,10 +6660,10 @@
 #. Granted
 #, c-format
 msgid "The user %s has granted your request to add them to your buddy list."
-msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਮੰਗ ਨੂੰ ਸਵੀਕਾਰ ਕਰ ਲਿਆ ਹੈ।"
+msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਮੰਗ ਮੰਨ ਲਈ ਹੈ।"
 
 msgid "Authorization Granted"
-msgstr "ਪ੍ਰਮਾਣਕਿਤਾ ਸਵੀਕਾਰ"
+msgstr "ਆਗਿਆ ਦਿੱਤੀ"
 
 #. Denied
 #, c-format
@@ -6843,7 +6672,7 @@
 "following reason:\n"
 "%s"
 msgstr ""
-"ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਬੇਨਤੀ ਨੂੰ ਇਸ ਕਰਕੇ ਠੁਕਰਾ ਦਿੱਤਾ ਹੈ:\n"
+"ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ ਕਰਨ ਦੀ ਬੇਨਤੀ ਹੇਠ ਦਿੱਤੇ ਕਾਰਨ ਕਰਕੇ ਠੁਕਰਾ ਦਿੱਤੀ ਹੈ:\n"
 "%s"
 
 msgid "Authorization Denied"
@@ -6882,6 +6711,7 @@
 msgid "Get AIM Info"
 msgstr "AIM ਜਾਣਕਾਰੀ ਲਵੋ"
 
+#. We only do this if the user is in our buddy list
 msgid "Edit Buddy Comment"
 msgstr "ਬੱਡੀ ਟਿੱਪਣੀ ਸੋਧ"
 
@@ -6901,23 +6731,22 @@
 msgstr "ਵੈੱਬ ਉੱਤੇ ਉਪਲੱਬਧ (ਇਹ ਯੋਗ ਕਰਨ ਨਾਲ ਤੁਹਾਨੂੰ ਸਪਮ (SPAM) ਆਉਣ ਦਾ ਖਤਰਾ!)"
 
 msgid "ICQ Privacy Options"
-msgstr "ICQ ਰਹੱਸ ਚੋਣਾਂ"
+msgstr "ICQ ਪਰਾਈਵੇਸੀ ਚੋਣਾਂ"
 
 msgid "The new formatting is invalid."
-msgstr "ਨਵਾਂ ਫਾਰਮਿਟ ਗਲਤ ਹੈ।"
-
-#, fuzzy
+msgstr "ਨਵਾਂ ਫਾਰਮੈਟ ਗਲਤ ਹੈ।"
+
 msgid "Username formatting can change only capitalization and whitespace."
-msgstr "ਸਕਰੀਨ ਨਾਂ ਫਾਰਮਿਟ ਵਿੱਚ ਵੱਡੇ ਅੱਖਰ ਅਤੇ ਖਾਲੀ ਥਾਂ ਹੀ ਤਬਦੀਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।"
+msgstr "ਯੂਜ਼ਰ-ਨਾਂ ਫਾਰਮੈਟ ਵਿੱਚ ਵੱਡੇ ਅੱਖਰ ਅਤੇ ਖਾਲੀ ਥਾਂ ਹੀ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।"
 
 msgid "Change Address To:"
-msgstr "ਐਡਰੈੱਸ ਤਬਦੀਲ:"
+msgstr "ਐਡਰੈੱਸ ਬਦਲੋ:"
 
 msgid "<i>you are not waiting for authorization</i>"
 msgstr "<i>ਤੁਸੀਂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਨਹੀਂ ਕਰ ਰਹੇ ਹੋ</i>"
 
 msgid "You are awaiting authorization from the following buddies"
-msgstr "ਤੁਸੀਂ ਇਹਨਾਂ ਬੱਡੀ ਵਲੋਂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਕਰ ਰਹੇ ਹੋ"
+msgstr "ਤੁਸੀਂ ਇਹਨਾਂ ਬੱਡੀਆਂ ਵਲੋਂ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਉਡੀਕ ਕਰ ਰਹੇ ਹੋ"
 
 msgid ""
 "You can re-request authorization from these buddies by right-clicking on "
@@ -6938,21 +6767,18 @@
 msgid "_Search"
 msgstr "ਖੋਜ(_S)"
 
-#, fuzzy
 msgid "Set User Info (web)..."
-msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਦਿਓ (URL)..."
-
-#, fuzzy
+msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਦਿਓ (ਵੈੱਬ)..."
+
 msgid "Change Password (web)"
-msgstr "ਪਾਸਵਰਡ ਤਬਦੀਲ (URL)"
-
-#, fuzzy
+msgstr "ਪਾਸਵਰਡ ਬਦਲੋ (ਵੈੱਬ)"
+
 msgid "Configure IM Forwarding (web)"
-msgstr "IM ਫਾਰਵਿਡਿੰਗ (URL) ਸੰਰਚਨਾ"
+msgstr "IM ਫਾਰਵਿਡਿੰਗ ਸੰਰਚਨਾ (ਵੈੱਬ)"
 
 #. ICQ actions
 msgid "Set Privacy Options..."
-msgstr "ਰਹੱਸ ਚੋਣਾਂ ਦਿਓ..."
+msgstr "ਪਰਾਈਵੇਸੀ ਚੋਣਾਂ ਦਿਓ..."
 
 #. AIM actions
 msgid "Confirm Account"
@@ -6973,17 +6799,16 @@
 msgid "Search for Buddy by Information"
 msgstr "ਜਾਣਕਾਰੀ ਰਾਹੀਂ ਬੱਡੀ ਖੋਜ"
 
-#, fuzzy
 msgid ""
 "Always use AIM/ICQ proxy server for\n"
 "file transfers and direct IM (slower,\n"
 "but does not reveal your IP address)"
 msgstr ""
-"ਫਾਇਲ ਟਰਾਂਸਫਰ ਲਈ ICQ ਪਰਾਕਸੀ ਸਰਵਰ ਹਮੇਸ਼ਾਂ ਵਰਤੋਂ\n"
-"(ਹੌਲੀ ਹੈ, ਪਰ ਤੁਹਾਡਾ IP ਐਡਰੈੱਸ ਵੇਖਾਉਦਾ ਨਹੀਂ ਹੈ)"
+"ਫਾਇਲ ਟਰਾਂਸਫਰ ਅਤੇ ਸਿੱਧਾ IM ਲਈ ICQ ਪਰਾਕਸੀ ਸਰਵਰ\n"
+"ਹਮੇਸ਼ਾਂ ਵਰਤੋਂ ਹੌਲੀ ਹੈ, ਪਰ ਤੁਹਾਡਾ IP ਐਡਰੈੱਸ ਵੇਖਾਉਦਾ ਨਹੀਂ ਹੈ)"
 
 msgid "Allow multiple simultaneous logins"
-msgstr ""
+msgstr "ਇੱਕੋ ਵਾਰ ਕਈ ਲਾਗਇਨ ਮਨਜ਼ੂਰ"
 
 #, c-format
 msgid "Asking %s to connect to us at %s:%hu for Direct IM."
@@ -6993,7 +6818,6 @@
 msgid "Attempting to connect to %s:%hu."
 msgstr "%s ਨਾਲ ਜੁੜਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਜਾਰੀ: %hu"
 
-#, c-format
 msgid "Attempting to connect via proxy server."
 msgstr "ਪਰਾਕਸੀ ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼।"
 
@@ -7084,16 +6908,14 @@
 msgid "Other"
 msgstr "ਹੋਰ"
 
-#, fuzzy
 msgid "Visible"
-msgstr "ਅਦਿੱਖ"
-
-msgid "Firend Only"
-msgstr ""
-
-#, fuzzy
+msgstr "ਦਿੱਖ"
+
+msgid "Friend Only"
+msgstr "ਕੇਵਲ ਦੋਸਤ ਹੀ"
+
 msgid "Private"
-msgstr "ਰਹੱਸ"
+msgstr "ਪ੍ਰਾਈਵੇਟ"
 
 msgid "QQ Number"
 msgstr "QQ ਨੰਬਰ"
@@ -7110,9 +6932,8 @@
 msgid "Phone Number"
 msgstr "ਫੋਨ ਨੰਬਰ"
 
-#, fuzzy
 msgid "Authorize adding"
-msgstr "ਕੀ ਬੱਡੀ ਮਨਜ਼ੂਰ ਹੈ?"
+msgstr "ਪਰਮਾਣਿਕਤਾ ਸ਼ਾਮਲ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
 
 msgid "Cellphone Number"
 msgstr "ਸੈਲਫੋਨ ਨੰਬਰ"
@@ -7120,130 +6941,106 @@
 msgid "Personal Introduction"
 msgstr "ਨਿੱਜੀ ਜਾਣ ਪਛਾਣ"
 
-#, fuzzy
 msgid "City/Area"
-msgstr "ਸ਼ਹਿਰ"
-
-#, fuzzy
+msgstr "ਸ਼ਹਿਰ/ਖੇਤਰ"
+
 msgid "Publish Mobile"
-msgstr "ਨਿੱਜੀ ਮੋਬਾਇਲ"
-
-#, fuzzy
+msgstr "ਮੋਬਾਇਲ ਪਬਲਿਸ਼"
+
 msgid "Publish Contact"
-msgstr "ਉਪ ਨਾਂ ਸੰਪਰਕ"
+msgstr "ਸੰਪਰਕ ਪਬਲਿਸ਼"
 
 msgid "College"
 msgstr "ਕਾਲਜ"
 
-#, fuzzy
 msgid "Horoscope"
-msgstr "ਜੋਤਿਸ਼ ਨਿਸ਼ਾਨ"
-
-#, fuzzy
+msgstr "ਜੋਤਿਸ਼"
+
 msgid "Zodiac"
-msgstr "ਰਾਸ਼ੀ ਨਿਸ਼ਾਨ"
-
-#, fuzzy
+msgstr "ਰਾਸ਼ੀ"
+
 msgid "Blood"
-msgstr "ਪਾਬੰਦੀ"
-
-#, fuzzy
+msgstr "ਖੂਨ"
+
 msgid "True"
-msgstr "ਟੋਰਅਸ"
-
-#, fuzzy
+msgstr "ਸਹੀਂ"
+
 msgid "False"
-msgstr "ਅਸਫ਼ਲ"
-
-#, fuzzy
+msgstr "ਗਲਤ"
+
 msgid "Modify Contact"
-msgstr "ਅਕਾਊਂਟ ਸੋਧ"
-
-#, fuzzy
+msgstr "ਸੰਪਰਕ ਸੋਧ"
+
 msgid "Modify Address"
-msgstr "ਘਰ ਐਡਰੈੱਸ"
-
-#, fuzzy
+msgstr "ਐਡਰੈੱਸ ਸੋਧ"
+
 msgid "Modify Extended Information"
-msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਸੋਧੋ"
-
-#, fuzzy
+msgstr "ਵਾਧੂ ਜਾਣਕਾਰੀ ਸੋਧ"
+
 msgid "Modify Information"
-msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਸੋਧੋ"
-
-#, fuzzy
+msgstr "ਜਾਣਕਾਰੀ ਸੋਧ"
+
 msgid "Update"
-msgstr "ਆਖਰੀ ਅੱਪਡੇਟ"
-
-#, fuzzy
+msgstr "ਅੱਪਡੇਟ"
+
 msgid "Could not change buddy information."
-msgstr "ਬੱਡੀ ਜਾਣਕਾਰੀ ਦਿਓ ਜੀ।"
-
-#, c-format
-msgid "%d needs Q&A"
-msgstr ""
-
-#, fuzzy
-msgid "Add buddy Q&A"
-msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
-
-#, fuzzy
-msgid "Input answer here"
-msgstr "ਇੰਪੁੱਟ ਮੰਗ ਇੱਥੇ"
+msgstr "ਬੱਡੀ ਜਾਣਕਾਰੀ ਬਦਲੀ ਨਹੀਂ ਜਾ ਸਕੀ"
+
+#, c-format
+msgid "%u requires verification"
+msgstr "%u ਲਈ ਪਰਮਾਣਿਕਤਾ ਦੀ ਲੋੜ"
+
+msgid "Add buddy question"
+msgstr "ਬੱਡੀ ਸਵਾਲ ਸ਼ਾਮਲ"
+
+msgid "Enter answer here"
+msgstr "ਇੱਥੇ ਜਵਾਬ ਦਿਓ"
 
 msgid "Send"
 msgstr "ਭੇਜੋ"
 
-#, fuzzy
 msgid "Invalid answer."
-msgstr "ਗਲਤ ਨਾਂ"
+msgstr "ਗਲਤ ਜਵਾਬ ਹੈ।"
 
 msgid "Authorization denied message:"
 msgstr "ਪ੍ਰਮਾਣਿਕਤਾ ਪਾਬੰਦੀ ਸੁਨੇਹਾ:"
 
-#, fuzzy
-msgid "Sorry, You are not my style."
-msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਟਾਈਪ ਦੇ ਨਹੀਂ..."
-
-#, fuzzy, c-format
-msgid "%d needs authentication"
-msgstr "ਯੂਜ਼ਰ %d ਨੂੰ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ"
-
-#, fuzzy
+msgid "Sorry, you're not my style."
+msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਟਾਈਪ ਦੇ ਨਹੀਂ ਹੋ।"
+
+#, c-format
+msgid "%u needs authorization"
+msgstr "%u ਨੂੰ ਪਰਮਾਣਕਿਤਾ ਦੀ ਲੋੜ ਹੈ"
+
 msgid "Add buddy authorize"
-msgstr "ਕੀ ਬੱਡੀ ਆਪਣੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ?"
-
-msgid "Input request here"
-msgstr "ਇੰਪੁੱਟ ਮੰਗ ਇੱਥੇ"
+msgstr "ਬੱਡੀ ਪਰਮਾਣਕਿਤਾ ਸ਼ਾਮਲ"
+
+msgid "Enter request here"
+msgstr "ਮੰਗ ਇੱਥੇ ਦਿਓ"
 
 msgid "Would you be my friend?"
 msgstr "ਕੀ ਤੁਸੀਂ ਮੇਰੇ ਦੋਸਤ ਬਣਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
 
-#, fuzzy
 msgid "QQ Buddy"
-msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
-
-#, fuzzy
+msgstr "QQ ਬੱਡੀ"
+
 msgid "Add buddy"
-msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
-
-#, fuzzy
+msgstr "ਬੱਡੀ ਸ਼ਾਮਲ"
+
 msgid "Invalid QQ Number"
-msgstr "ਗਲਤ QQ ਮੁੱਖ"
-
-#, fuzzy
+msgstr "ਗਲਤ QQ ਨੰਬਰ"
+
 msgid "Failed sending authorize"
-msgstr "ਮੈਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੋ ਜੀ!"
-
-#, fuzzy, c-format
-msgid "Failed removing buddy %d"
-msgstr "ਬੱਡੀ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
-
-#, fuzzy, c-format
+msgstr "ਪਰਮਾਣਕਿਤਾ ਭੇਜਣ ਲਈ ਫੇਲ੍ਹ ਹੈ"
+
+#, c-format
+msgid "Failed removing buddy %u"
+msgstr "ਬੱਡੀ %u ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
+
+#, c-format
 msgid "Failed removing me from %d's buddy list"
-msgstr "%s ਨੇ ਤੁਹਾਨੂੰ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ 'ਚੋਂ ਹਟਾ ਦਿੱਤਾ ਹੈ।"
-
-#, fuzzy
+msgstr "%d ਦੀ ਬੱਡੀ ਲਿਸਟ ਤੋਂ ਮੈਨੂੰ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
+
 msgid "No reason given"
 msgstr "ਕੋਈ ਕਾਰਨ ਨਹੀਂ ਦਿੱਤਾ ਹੈ।"
 
@@ -7255,9 +7052,9 @@
 msgid "Would you like to add him?"
 msgstr "ਕੀ ਤੁਸੀਂ ਉਸ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Rejected by %s"
-msgstr "ਰੱਦ ਕਰੋ"
+msgstr "%s ਵਲੋਂ ਰੱਦ ਕਰੋ"
 
 #, c-format
 msgid "Message: %s"
@@ -7272,82 +7069,73 @@
 msgid "QQ Qun"
 msgstr "QQ Qun"
 
-#, fuzzy
 msgid "Please enter Qun number"
-msgstr "%s ਲਈ ਨਵਾਂ ਨਾਂ ਦਿਓ ਜੀ"
-
-#, fuzzy
+msgstr "Qun ਨੰਬਰ ਦਿਓ ਜੀ"
+
 msgid "You can only search for permanent Qun\n"
-msgstr "ਤੁਸੀਂ ਕੇਵਲ ਪੱਕੇ QQ ਗਰੁੱਪ ਲਈ ਹੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ\n"
-
-#, fuzzy
+msgstr "ਤੁਸੀਂ ਕੇਵਲ ਪੱਕੇ Qun ਹੀ ਖੋਜ ਕਰ ਸਕਦੇ ਹੋ\n"
+
+msgid "(Invalid UTF-8 string)"
+msgstr "(ਗਲਤ UTF-8 ਲਾਇਨ)"
+
 msgid "Not member"
-msgstr "ਮੈਂ ਮੈਂਬਰ ਨਹੀਂ ਹਾਂ"
-
-#, fuzzy
+msgstr "ਮੈਂਬਰ ਨਹੀਂ"
+
 msgid "Member"
-msgstr "ਮੈਂਬਰ ਹੈ"
-
-#, fuzzy
+msgstr "ਮੈਂਬਰ ਹੋ"
+
 msgid "Requesting"
-msgstr "ਮੰਗ ਡਾਈਲਾਗ"
-
-#, fuzzy
+msgstr "ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
+
 msgid "Admin"
-msgstr "Adium"
-
-#, fuzzy
+msgstr "ਐਡਮਿਨ"
+
 msgid "Notice"
-msgstr "ਨੋਟ"
-
-#, fuzzy
+msgstr "ਨੋਟਿਸ"
+
 msgid "Detail"
-msgstr "ਡਿਫਾਲਟ"
+msgstr "ਵੇਰਵਾ"
 
 msgid "Creator"
 msgstr "ਨਿਰਮਾਤਾ"
 
-#, fuzzy
 msgid "About me"
-msgstr "%s ਬਾਰੇ"
-
-#, fuzzy
+msgstr "ਮੇਰੇ ਬਾਰੇ"
+
 msgid "Category"
-msgstr "ਗੱਲ ਗਲਤੀ"
-
-#, fuzzy
+msgstr "ਕੈਟਾਗਰੀ"
+
 msgid "The Qun does not allow others to join"
-msgstr "ਇਹ ਗਰੁੱਪ ਹੋਰਾਂ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਦਿੰਦਾ ਹੈ"
-
-#, fuzzy
+msgstr "Qun ਹੋਰਾਂ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਮਨਜ਼ੂਰੀ ਨਹੀਂ ਦਿੰਦਾ ਹੈ"
+
 msgid "Join QQ Qun"
-msgstr "ਚੈਟ ਜੁਆਇੰਨ"
-
-#, c-format
-msgid "Successfully joined Qun %s (%d)"
-msgstr ""
-
-#, fuzzy
+msgstr "QQ Qun ਜੁਆਇੰਨ ਕਰੋ"
+
+msgid "Input request here"
+msgstr "ਇੰਪੁੱਟ ਮੰਗ ਇੱਥੇ"
+
+#, c-format
+msgid "Successfully joined Qun %s (%u)"
+msgstr "Qun %s (%u) ਠੀਕ ਤਰ੍ਹਾਂ ਜੁਆਇੰਨ ਕੀਤਾ ਗਿਆ"
+
 msgid "Successfully joined Qun"
-msgstr "ਤੁਸੀਂ ਕਿਊਨ ਮੈਂਬਰ ਸੋਧਿਆ ਹੈ।"
-
-#, c-format
-msgid "Qun %d denied to join"
-msgstr ""
+msgstr "Qun ਠੀਕ ਤਰ੍ਹਾਂ ਜੁਆਇੰਨ ਕੀਤਾ"
+
+#, c-format
+msgid "Qun %u denied from joining"
+msgstr "ਕੁਆਇੰਨ %u ਨੇ ਜੁਆਇੰਨ ਕਰਵਾਉਣ ਤੇ ਰੋਕ ਲਾਈ"
 
 msgid "QQ Qun Operation"
-msgstr "QQ Qun ਕਾਰਵਾਈ"
-
-#, fuzzy
+msgstr "QQ Qun ਓਪਰੇਸ਼ਨ"
+
 msgid "Failed:"
-msgstr "ਅਸਫ਼ਲ"
-
-msgid "Join Qun, Unknow Reply"
-msgstr ""
-
-#, fuzzy
+msgstr "ਅਸਫ਼ਲ:"
+
+msgid "Join Qun, Unknown Reply"
+msgstr "Qun ਜੁਆਇੰਨ, ਅਣਜਾਣ ਜਵਾਬ"
+
 msgid "Quit Qun"
-msgstr "QQ Qun"
+msgstr "Qun ਬੰਦ ਕਰੋ"
 
 msgid ""
 "Note, if you are the creator, \n"
@@ -7356,194 +7144,180 @@
 "ਨੋਟ, ਜੇ ਤੁਸੀਂ ਬਣਾਉਣ ਵਾਲੇ ਹੋ ਤਾਂ,\n"
 "ਇਸ ਓਪਰੇਸ਼ਨ ਨਾਲ ਇਹ ਕਿਊਨ ਵੀ ਹਟਾਇਆ ਜਾਵੇਗਾ।"
 
-#, fuzzy
-msgid "Sorry, you are not our style ..."
-msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਟਾਈਪ ਦੇ ਨਹੀਂ..."
-
-#, fuzzy
-msgid "Successfully changed Qun member"
-msgstr "ਤੁਸੀਂ ਕਿਊਨ ਮੈਂਬਰ ਸੋਧਿਆ ਹੈ।"
-
-#, fuzzy
+msgid "Sorry, you are not our style"
+msgstr "ਅਫਸੋਸ, ਤੁਸੀਂ ਮੇਰੀ ਸਟਾਈਲ ਦੇ ਨਹੀਂ"
+
+msgid "Successfully changed Qun members"
+msgstr "ਕਿਊਨ ਮੈਂਬਰ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ"
+
 msgid "Successfully changed Qun information"
-msgstr "ਤੁਸੀਂ ਕਿਊਨ ਜਾਣਕਾਰੀ ਸੋਧੀ ਹੈ"
+msgstr "Qun ਜਾਣਕਾਰੀ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲੀ ਗਈ"
 
 msgid "You have successfully created a Qun"
-msgstr "ਤੁਸੀਂ ਇੱਕ ਕਿਊਨ ਬਣਾਇਆ ਹੈ"
-
-#, fuzzy
-msgid "Would you like to set detailed information now?"
-msgstr "ਕੀ ਤੁਸੀਂ ਕਿਊਨ ਲਈ ਵੇਰਵਾ ਹੁਣੇ ਸੈੱਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgstr "ਤੁਸੀਂ ਇੱਕ Qun ਠੀਕ ਤਰ੍ਹਾਂ ਬਣਾਇਆ"
+
+msgid "Would you like to set up detailed information now?"
+msgstr "ਕੀ ਤੁਸੀਂ ਵੇਰਵੇ ਸਮੇਤ ਸੈੱਟਅੱਪ ਜਾਣਕਾਰੀ ਅੱਪਡੇਟ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ?"
 
 msgid "Setup"
 msgstr "ਸੈੱਟਅੱਪ"
 
-#, fuzzy, c-format
-msgid "%d requested to join Qun %d for %s"
-msgstr "ਯੂਜ਼ਰ %d ਨੇ ਗਰੁੱਪ %d ਸ਼ਾਮਲ ਕਰਨ ਵਾਸਤੇ ਮੰਗ ਕੀਤੀ"
-
-#, fuzzy, c-format
-msgid "%d request to join Qun %d"
-msgstr "ਯੂਜ਼ਰ %d ਨੇ ਗਰੁੱਪ %d ਸ਼ਾਮਲ ਕਰਨ ਵਾਸਤੇ ਮੰਗ ਕੀਤੀ"
-
-#, fuzzy, c-format
-msgid "Failed to join Qun %d, operated by admin %d"
-msgstr "ਗੱਲਬਾਤ ਵਿੱਚ ਬੱਡੀ ਆਉਣ ਲਈ ਅਸਫਲ"
-
-#, c-format
-msgid "<b>Joining Qun %d is approved by admin %d for %s</b>"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "<b>Removed buddy %d.</b>"
-msgstr "ਬੱਡੀ ਹਟਾਓ"
-
-#, c-format
-msgid "<b>New buddy %d joined.</b>"
-msgstr ""
+#, c-format
+msgid "%u requested to join Qun %u for %s"
+msgstr "%u ਨੇ Qun %u ਨੂੰ %s ਲਈ ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਕੀਤੀ ਹੈ"
+
+#, c-format
+msgid "%u request to join Qun %u"
+msgstr "%u ਨੇ Qun %u ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਕੀਤੀ"
+
+#, c-format
+msgid "Failed to join Qun %u, operated by admin %u"
+msgstr "Qun %u ਜੁਆਇੰਨ ਕਰਨ ਲਈ ਫੇਲ੍ਹ ਹੈ, ਐਡਮਿਨ %u ਵਲੋਂ ਕਾਰਵਾਈ ਕੀਤੀ"
+
+#, c-format
+msgid "<b>Joining Qun %u is approved by admin %u for %s</b>"
+msgstr "<b>Qun %u ਜੁਆਇੰਨ ਕਰਨ ਨੂੰ ਐਡਮਿਨ %u ਵਲੋਂ %s ਲਈ ਮਨਜ਼ੂਰ ਹੈ।</b>"
+
+#, c-format
+msgid "<b>Removed buddy %u.</b>"
+msgstr "<b>%u ਬੱਡੀ ਹਟਾਓ।</b>"
+
+#, c-format
+msgid "<b>New buddy %u joined.</b>"
+msgstr "<b>ਨਵਾਂ ਬੱਡੀ %u ਜੁਆਇੰਨ ਕੀਤਾ।</b>"
 
 #, c-format
 msgid "Unknown-%d"
 msgstr "ਅਣਜਾਣ-%d"
 
 msgid "Level"
-msgstr "ਪੱਧਰ"
+msgstr "ਲੈਵਲ"
 
 msgid " VIP"
-msgstr ""
+msgstr " VIP"
 
 msgid " TCP"
-msgstr ""
-
-#, fuzzy
+msgstr " TCP"
+
 msgid " FromMobile"
-msgstr "ਮੋਬਾਇਲ"
-
-#, fuzzy
+msgstr " ਮੋਬਾਇਲ-ਤੋਂ"
+
 msgid " BindMobile"
-msgstr "ਮੋਬਾਇਲ"
-
-#, fuzzy
+msgstr " ਬਾਈਡ-ਮੋਬਾਇਲ"
+
 msgid " Video"
-msgstr "ਸਿੱਧੀ ਵੀਡਿਓ"
-
-#, fuzzy
+msgstr " ਵੀਡਿਓ"
+
 msgid " Zone"
-msgstr "ਕੋਈ ਨਹੀਂ"
+msgstr " ਜ਼ੋਨ"
 
 msgid "Flag"
-msgstr ""
+msgstr "ਫਲੈਗ"
 
 msgid "Ver"
-msgstr ""
+msgstr "Ver"
 
 msgid "Invalid name"
 msgstr "ਗਲਤ ਨਾਂ"
 
-#, fuzzy
 msgid "Select icon..."
-msgstr "ਫੋਲਡਰ ਚੁਣੋ..."
-
-#, fuzzy, c-format
+msgstr "ਆਈਕਾਨ ਚੁਣੋ..."
+
+#, c-format
 msgid "<b>Login time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>ਲਾਗਇਨ ਸਮਾਂ</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਲਾਗਇਨ ਸਮਾਂ</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
 msgid "<b>Total Online Buddies</b>: %d<br>\n"
-msgstr "<b>ਹੁਣ ਆਫਲਾਇਨ</b>: %d<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਕੁੱਲ ਆਨਲਾਈਨ ਬੱਡੀ</b>: %d<br>\n"
+
+#, c-format
 msgid "<b>Last Refresh</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
 msgid "<b>Server</b>: %s<br>\n"
-msgstr "<b>ਸਰਵਰ IP</b>: %s: %d<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਸਰਵਰ</b>: %s<br>\n"
+
+#, c-format
 msgid "<b>Client Tag</b>: %s<br>\n"
-msgstr "<b>ਲਾਗਇਨ ਸਮਾਂ</b>: %s<br>\n"
+msgstr "<b>ਕਲਾਇਟ ਟੈਗ</b>: %s<br>\n"
 
 #, c-format
 msgid "<b>Connection Mode</b>: %s<br>\n"
 msgstr "<b>ਕੁਨੈਕਸ਼ਨ ਢੰਗ</b>: %s<br>\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid "<b>My Internet IP</b>: %s:%d<br>\n"
-msgstr "<b>ਕੁਨੈਕਸ਼ਨ ਢੰਗ</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਮੇਰਾ ਇੰਟਰਨੈੱਟ IP</b>: %s:%d<br>\n"
+
+#, c-format
 msgid "<b>Sent</b>: %lu<br>\n"
-msgstr "<b>ਹੁਣ ਆਫਲਾਇਨ</b>: %d<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਭੇਜੇ</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Resend</b>: %lu<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਮੁੜ-ਭੇਜੋ</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Lost</b>: %lu<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਗੁਆਚੇ</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Received</b>: %lu<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਲਏ</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Received Duplicate</b>: %lu<br>\n"
-msgstr "<b>ਮੇਰਾ ਪਬਲਿਕ IP</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਡੁਪਲੀਕੇਟ ਮਿਲੇ</b>: %lu<br>\n"
+
+#, c-format
 msgid "<b>Time</b>: %d-%d-%d, %d:%d:%d<br>\n"
-msgstr "<b>ਲਾਗਇਨ ਸਮਾਂ</b>: %s<br>\n"
-
-#, fuzzy, c-format
+msgstr "<b>ਸਮਾਂ</b>: %d-%d-%d, %d:%d:%d<br>\n"
+
+#, c-format
 msgid "<b>IP</b>: %s<br>\n"
-msgstr "<b>ਸਰਵਰ IP</b>: %s: %d<br>\n"
+msgstr "<b>IP</b>: %s<br>\n"
 
 msgid "Login Information"
 msgstr "ਲਾਗਇਨ ਜਾਣਕਾਰੀ"
 
 msgid "<p><b>Original Author</b>:<br>\n"
-msgstr ""
+msgstr "<p><b>ਅਸਲੀ ਲੇਖਕ</b>:<br>\n"
 
 msgid "<p><b>Code Contributors</b>:<br>\n"
-msgstr ""
-
-#, fuzzy
+msgstr "<p><b>ਕੋਡ ਯੋਗਦਾਨ</b>:<br>\n"
+
 msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
-msgstr "<b>ਆਖਰੀ ਤਾਜ਼ਾ</b>: %s<br>\n"
-
-#, fuzzy
+msgstr "<p><b>ਪਿਆਰੇ ਪੈਚ ਲੇਖਕ</b>:<br>\n"
+
 msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<b>ਹੁਣ ਆਫਲਾਇਨ</b>: %d<br>\n"
+msgstr "<p><b>ਰਸੀਦ</b>:<br>\n"
 
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
-msgstr ""
+msgstr "<p><i>ਅਤੇ ਸਾਰੇ ਮੁੰਡੇ ਪਿਛਲੇ ਕਮਰੇ ਵਿੱਚ ਹਨ...</i><br>\n"
 
 msgid "<i>Feel free to join us!</i> :)"
-msgstr ""
-
-#, fuzzy, c-format
-msgid "About OpenQ r%s"
-msgstr "%s ਬਾਰੇ"
-
-#, fuzzy
+msgstr "<i>ਸਾਡੇ ਨਾਲ ਹੱਥ ਵਟਾਉਣ ਲਈ ਆ ਜਾਓ!</i> :)"
+
+#, c-format
+msgid "About OpenQ %s"
+msgstr "OpenQ %s ਬਾਰੇ"
+
 msgid "Change Icon"
-msgstr "ਆਈਕਾਨ ਸੰਭਾਲੋ"
+msgstr "ਆਈਕਾਨ ਬਦਲੋ"
 
 msgid "Change Password"
-msgstr "ਪਾਸਵਰਡ ਤਬਦੀਲ"
-
-#, fuzzy
+msgstr "ਪਾਸਵਰਡ ਬਦਲੋ"
+
 msgid "Account Information"
-msgstr "ਲਾਗਇਨ ਜਾਣਕਾਰੀ"
+msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ"
 
 msgid "Update all QQ Quns"
-msgstr ""
-
-#, fuzzy
+msgstr "ਸਭ QQ ਕਉਨ ਅੱਪਡੇਟ ਕਰੋ"
+
 msgid "About OpenQ"
-msgstr "%s ਬਾਰੇ"
+msgstr "OpenQ ਬਾਰੇ"
 
 #. *< type
 #. *< ui_requirement
@@ -7555,132 +7329,110 @@
 #. *< version
 #. *  summary
 #. *  description
-#, fuzzy
 msgid "QQ Protocol Plugin"
-msgstr "QQ ਪਰੋਟੋਕਾਲ\tਪਲੱਗਇਨ"
-
-#, fuzzy
+msgstr "QQ ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+
 msgid "Auto"
-msgstr "ਪਰਮਾ"
-
-#, fuzzy
+msgstr "ਆਟੋ"
+
 msgid "Select Server"
-msgstr "ਯੂਜ਼ਰ ਚੁਣੋ"
+msgstr "ਸਰਵਰ ਚੁਣੋ"
 
 msgid "QQ2005"
-msgstr ""
+msgstr "QQ2005"
 
 msgid "QQ2007"
-msgstr ""
+msgstr "QQ2007"
 
 msgid "QQ2008"
-msgstr ""
-
-#. #endif
-#, fuzzy
+msgstr "QQ2008"
+
 msgid "Connect by TCP"
 msgstr "TCP ਰਾਹੀਂ ਕੁਨੈਕਟ"
 
-#, fuzzy
 msgid "Show server notice"
-msgstr "ਸਰਵਰ ਪੋਰਟ"
-
-#, fuzzy
+msgstr "ਸਰਵਰ ਨੋਟਿਸ ਵੇਖੋ"
+
 msgid "Show server news"
-msgstr "ਸਰਵਰ ਐਡਰੈੱਸ"
-
-#, fuzzy
+msgstr "ਸਰਵਰ ਨਿਊਜ਼ ਵੇਖੋ"
+
+msgid "Show chat room when msg comes"
+msgstr "ਜਦੋਂ msg ਆਵੇ ਤਾਂ ਗੱਲਬਾਤ ਰੂਮ ਵੇਖੋ"
+
 msgid "Keep alive interval (seconds)"
-msgstr "ਚਾਲੂ ਰੱਖਣ ਗਲਤੀ"
-
-#, fuzzy
+msgstr "ਚਾਲੂ ਅੰਤਰਾਲ ਰੱਖੋ (ਸਕਿੰਟ)"
+
 msgid "Update interval (seconds)"
-msgstr "ਚਾਲੂ ਰੱਖਣ ਗਲਤੀ"
-
-#, fuzzy
-msgid "Can not decrypt server reply"
-msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋ ਸਕੀ"
-
-#, fuzzy
-msgid "Can not decrypt get server reply"
-msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋ ਸਕੀ"
+msgstr "ਅੱਪਡੇਟ ਅੰਤਰਾਲ (ਸਕਿੰਟ)"
+
+msgid "Cannot decrypt server reply"
+msgstr "ਸਰਵਰ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"
 
 #, c-format
 msgid "Failed requesting token, 0x%02X"
-msgstr ""
-
-#, fuzzy, c-format
+msgstr "ਟੋਕਨ ਮੰਗ ਫੇਲ੍ਹ ਹੋਈ, 0x%02X"
+
+#, c-format
 msgid "Invalid token len, %d"
-msgstr "ਗਲਤ ਟਾਇਟਲ"
+msgstr "ਗਲਤ ਟੋਕਨ ਲੰਬਾਈ, %d"
 
 #. extend redirect used in QQ2006
 msgid "Redirect_EX is not currently supported"
-msgstr ""
+msgstr "Redirect_EX ਹਾਲੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
 
 #. need activation
 #. need activation
 #. need activation
-#, fuzzy
 msgid "Activation required"
-msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਲੋੜੀਦੀ ਹੈ"
-
-#, c-format
-msgid "Unknow reply code when login (0x%02X)"
-msgstr ""
-
-msgid "Keep alive error"
-msgstr "ਚਾਲੂ ਰੱਖਣ ਗਲਤੀ"
-
-#, fuzzy
-msgid "Requesting captcha ..."
-msgstr "%s ਦੇ ਧਿਆਨ ਦੀ ਮੰਗ ਕੀਤੀ ਗਈ ਹੈ..."
-
-msgid "Checking code of captcha ..."
-msgstr ""
-
-msgid "Failed captcha verify"
-msgstr ""
-
-#, fuzzy
+msgstr "ਐਕਟੀਵੇਸ਼ਨ ਲੋੜੀਦੀ"
+
+#, c-format
+msgid "Unknown reply code when logging in (0x%02X)"
+msgstr "ਲਾਗਇਨ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਜਵਾਬ ਕੋਡ (0x%02X)"
+
+msgid "Could not decrypt server reply"
+msgstr "ਸਰਵਰ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"
+
+msgid "Requesting captcha"
+msgstr "ਕੈਪਟਚਾ ਦੀ ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
+
+msgid "Checking captcha"
+msgstr "ਕੈਪਟਚਾ ਚੈੱਕ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
+
+msgid "Failed captcha verification"
+msgstr "ਕੈਪਟਚਾ ਜਾਂਚ ਲਈ ਫੇਲ੍ਹ"
+
 msgid "Captcha Image"
-msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ"
-
-#, fuzzy
+msgstr "ਕੈਪਟਚਾ ਚਿੱਤਰ"
+
 msgid "Enter code"
-msgstr "ਪਾਸਵਰਡ ਦਿਓ"
-
-msgid "QQ Captcha Verifing"
-msgstr ""
-
-#, fuzzy
+msgstr "ਕੋਡ ਦਿਓ"
+
+msgid "QQ Captcha Verification"
+msgstr "QQ ਕੈਪਟਚਾ ਜਾਂਚ"
+
 msgid "Enter the text from the image"
-msgstr "ਗਰੁੱਪ ਦਾ ਨਾਂ ਦਿਓ"
-
-#, c-format
-msgid "Unknow reply code when checking password (0x%02X)"
-msgstr ""
-
-#, c-format
-msgid ""
-"Unknow reply code when login (0x%02X):\n"
+msgstr "ਚਿੱਤਰ ਤੋਂ ਟੈਕਸਟ ਦਿਓ"
+
+#, c-format
+msgid "Unknown reply when checking password (0x%02X)"
+msgstr "ਪਾਸਵਰਡ ਚੈੱਕ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਜਵਾਬ (0x%02X)"
+
+#, c-format
+msgid ""
+"Unknown reply code when logging in (0x%02X):\n"
 "%s"
 msgstr ""
+"ਲਾਗਇਨ ਕਰਨ ਦੌਰਾਨ ਅਣਜਾਣ ਜਵਾਬ ਕੋਡ (0x%02X):\n"
+"%s"
 
 #. we didn't successfully connect. tdt->toc_fd is valid here
 msgid "Unable to connect."
-msgstr "ਜੁੜਨ ਤੋਂ ਆਯੋਗ"
+msgstr "ਕੁਨੈਕਟ ਕਰਨ ਲਈ ਅਸਮਰੱਥ ਹੈ।"
 
 msgid "Socket error"
 msgstr "ਸਾਕਟ ਗਲਤੀ"
 
-#, fuzzy, c-format
-msgid ""
-"Lost connection with server:\n"
-"%d, %s"
-msgstr ""
-"ਸਰਵਰ ਨਾਲ ਆਖਰੀ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕੀਤਾ:\n"
-"%s"
-
 msgid "Unable to read from socket"
 msgstr "ਸਾਕਟ ਤੋਂ ਤਾਜ਼ਾ ਕਰਨ ਲਈ ਅਸਮਰੱਥ"
 
@@ -7690,77 +7442,74 @@
 msgid "Connection lost"
 msgstr "ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਹੋਇਆ"
 
-#, fuzzy
-msgid "Get server ..."
-msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਦਿਓ..."
-
-#, fuzzy
-msgid "Request token"
-msgstr "ਬੇਨਤੀ ਪਾਬੰਦੀ"
+msgid "Getting server"
+msgstr "ਸਰਵਰ ਜਾਣਕਾਰੀ ਲਈ ਜਾ ਰਹੀ ਹੈ"
+
+msgid "Requesting token"
+msgstr "ਟੋਕਨ ਲਈ ਮੰਗ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"
 
 msgid "Couldn't resolve host"
 msgstr "ਹੋਸਟ ਲੱਭਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ"
 
-#, fuzzy
 msgid "Invalid server or port"
-msgstr "ਗਲਤੀ"
-
-#, fuzzy
-msgid "Connecting server ..."
-msgstr "ਸਰਵਰ ਨਾਲ ਜੋੜੋ"
-
-#, fuzzy
+msgstr "ਗਲਤ ਸਰਵਰ ਜਾਂ ਪੋਰਟ"
+
+msgid "Connecting to server"
+msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"
+
 msgid "QQ Error"
-msgstr "QQid ਗਲਤੀ"
-
-msgid "Failed to send IM."
-msgstr "IM ਭੇਜਣ ਲਈ ਫੇਲ੍ਹ।"
-
-#, fuzzy, c-format
+msgstr "QQ ਗਲਤੀ"
+
+#, c-format
 msgid ""
 "Server News:\n"
 "%s\n"
 "%s\n"
 "%s"
-msgstr "ICQ Server Relay"
-
-#, fuzzy, c-format
+msgstr ""
+"ਸਰਵਰ ਨਿਊਜ਼:\n"
+"%s\n"
+"%s\n"
+"%s"
+
+#, c-format
+msgid "%s:%s"
+msgstr "%s:%s"
+
+#, c-format
 msgid "From %s:"
-msgstr "ਵੱਲੋਂ"
-
-#, fuzzy, c-format
+msgstr "%s ਵੱਲੋਂ:"
+
+#, c-format
 msgid ""
 "Server notice From %s: \n"
 "%s"
-msgstr "ਸਰਵਰ ਹਦਾਇਤਾਂ: %s"
-
-msgid "Unknow SERVER CMD"
-msgstr ""
+msgstr ""
+"%s ਵਲੋਂ ਸਰਵਰ ਨੋਟਿਸ: \n"
+" %s"
+
+msgid "Unknown SERVER CMD"
+msgstr "ਅਣਜਾਣ ਸਰਵਰ CMD"
 
 #, c-format
 msgid ""
 "Error reply of %s(0x%02X)\n"
-"Room %d, reply 0x%02X"
-msgstr ""
-
-#, fuzzy
+"Room %u, reply 0x%02X"
+msgstr ""
+"%s ਦਾ ਜਵਾਬ ਗਲਤੀ(0x%02X)\n"
+"ਰੂਮ %u, ਜਵਾਬ 0x%02X"
+
 msgid "QQ Qun Command"
-msgstr "ਕਮਾਂਡ"
-
-#, c-format
-msgid "Not a member of room \"%s\"\n"
-msgstr ""
-
-msgid "Can not decrypt login reply"
-msgstr ""
-
-#, fuzzy
-msgid "Unknow LOGIN CMD"
-msgstr "ਅਣਜਾਣ ਕਾਰਨ"
-
-#, fuzzy
-msgid "Unknow CLIENT CMD"
-msgstr "ਅਣਜਾਣ ਕਾਰਨ"
+msgstr "QQ ਕਿਉਨ ਕਮਾਂਡ"
+
+msgid "Could not decrypt login reply"
+msgstr "ਲਾਗਇਨ ਜਵਾਬ ਡਿਕ੍ਰਿਪਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"
+
+msgid "Unknown LOGIN CMD"
+msgstr "ਅਣਜਾਣ ਲਾਗਇਨ CMD"
+
+msgid "Unknown CLIENT CMD"
+msgstr "ਅਣਜਾਣ CLIENT CMD"
 
 #, c-format
 msgid "%d has declined the file %s"
@@ -7782,20 +7531,20 @@
 
 #, c-format
 msgid "<b>Notes Group ID:</b> %s<br>"
-msgstr "<b>ਸੂਚਨਾ ਗਰੁੱਪ ID:</b> %s<br>"
+msgstr "<b>ਨੋਟਿਸ ਗਰੁੱਪ ID:</b> %s<br>"
 
 #, c-format
 msgid "Info for Group %s"
 msgstr "ਗਰੁੱਪ %s ਲਈ ਜਾਣਕਾਰੀ"
 
 msgid "Notes Address Book Information"
-msgstr "ਸੂਚਨਾ ਐਡਰੈੱਸ ਕਿਤਾਬ ਜਾਣਕਾਰੀ"
+msgstr "ਨੋਟਿਸ ਐਡਰੈੱਸ ਬੁੱਕ ਜਾਣਕਾਰੀ"
 
 msgid "Invite Group to Conference..."
 msgstr "ਗਰੁੱਪ ਨੂੰ ਕਾਨਫਰੰਸ ਲਈ ਸੱਦਾ..."
 
 msgid "Get Notes Address Book Info"
-msgstr "ਸੂਚਨਾ ਐਡਰੈੱਸ ਕਿਤਾਬ ਜਾਣਕਾਰੀ ਲਵੋ"
+msgstr "ਨੋਟਿਸ ਐਡਰੈੱਸ ਬੁੱਕ ਜਾਣਕਾਰੀ ਲਵੋ"
 
 msgid "Sending Handshake"
 msgstr "ਹੈਂਡਸ਼ੇਕ ਭੇਜਿਆ ਜਾ ਰਿਹਾ ਹੈ"
@@ -7822,8 +7571,7 @@
 msgstr "ਸਰਵਿਸਾਂ ਸ਼ੁਰੂ ਕਰੋ"
 
 #, c-format
-msgid ""
-"A Sametime administrator has issued the following announcement on server %s"
+msgid "A Sametime administrator has issued the following announcement on server %s"
 msgstr "ਇੱਕ ਸੇਮ-ਟਾਈਮ ਐਡਮਿਨਸਟੇਟਰ ਨੇ %s ਸਰਵਰ ਉੱਤੇ ਅੱਗੇ ਦਿੱਤੇ ਐਲਾਨ ਕੀਤਾ ਹੈ"
 
 msgid "Sametime Administrator Announcement"
@@ -7920,8 +7668,7 @@
 msgid ""
 "No host or IP address has been configured for the Meanwhile account %s. "
 "Please enter one below to continue logging in."
-msgstr ""
-"ਮੀਨਵਾਇਲ ਅਕਾਊਂਟ %s ਲਈ ਕੋਈ ਹੋਸਟ ਜਾਂ IP ਐਡਰੈੱਸ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। ਲਾਗਇਨ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਇੱਕ ਦਿਓ।"
+msgstr "ਮੀਨਵਾਇਲ ਅਕਾਊਂਟ %s ਲਈ ਕੋਈ ਹੋਸਟ ਜਾਂ IP ਐਡਰੈੱਸ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। ਲਾਗਇਨ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਇੱਕ ਦਿਓ।"
 
 msgid "Meanwhile Connection Setup"
 msgstr "ਮੀਨਵਾਇਲ ਕੁਨੈਕਸ਼ਨ ਸੈੱਟਅੱਪ"
@@ -8039,8 +7786,7 @@
 msgid ""
 "The identifier '%s' did not match any Notes Address Book groups in your "
 "Sametime community."
-msgstr ""
-"ਪਛਾਣਕਰਤਾ '%s' ਤੁਹਾਡੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਕਿਸੇ ਨੋਟ ਐਡਰੈੱਸ ਬੁੱਕ ਗਰੁੱਪ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ।"
+msgstr "ਪਛਾਣਕਰਤਾ '%s' ਤੁਹਾਡੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਕਿਸੇ ਨੋਟ ਐਡਰੈੱਸ ਬੁੱਕ ਗਰੁੱਪ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ।"
 
 msgid "Notes Address Book Group"
 msgstr "ਨੋਟ ਐਡਰੈੱਸ ਕਿਤਾਬ ਗਰੁੱਪ"
@@ -8084,8 +7830,7 @@
 msgid ""
 "Enter a name or partial ID in the field below to search for matching users "
 "in your Sametime community."
-msgstr ""
-"ਆਪਣੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਰਲਦੇ ਯੂਜ਼ਰ ਖੋਜਣ ਵਾਸਤੇ ਅੱਗੇ ਖੇਤਰ ਵਿੱਚ ਨਾਂ ਜਾਂ ਅਧੂਰਾ ID ਦਿਓ।"
+msgstr "ਆਪਣੀ ਸੇਮ-ਟਾਈਮ ਕਮਿਊਨਟੀ ਵਿੱਚ ਰਲਦੇ ਯੂਜ਼ਰ ਖੋਜਣ ਵਾਸਤੇ ਅੱਗੇ ਖੇਤਰ ਵਿੱਚ ਨਾਂ ਜਾਂ ਅਧੂਰਾ ID ਦਿਓ।"
 
 msgid "User Search"
 msgstr "ਯੂਜ਼ਰ ਖੋਜ"
@@ -8221,14 +7966,12 @@
 msgid ""
 "More than one user was found with the same public key. Select the correct "
 "user from the list to add to the buddy list."
-msgstr ""
-"ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇੱਕ ਪਬਲਿਕ ਕੁੰਜੀ ਨਾਲ ਮਿਲੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।"
+msgstr "ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇੱਕ ਪਬਲਿਕ ਕੁੰਜੀ ਨਾਲ ਮਿਲੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।"
 
 msgid ""
 "More than one user was found with the same name. Select the correct user "
 "from the list to add to the buddy list."
-msgstr ""
-"ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇਸੇ ਨਾਂ ਨਾਲ ਹੀ ਲੱਭੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।"
+msgstr "ਇੱਕ ਤੋਂ ਵਧੇਰੇ ਯੂਜ਼ਰ ਇਸੇ ਨਾਂ ਨਾਲ ਹੀ ਲੱਭੇ ਹਨ। ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਠੀਕ ਯੂਜ਼ਰ ਚੁਣੋ।"
 
 msgid "Detached"
 msgstr "ਅੱਡ"
@@ -8352,7 +8095,6 @@
 msgid "<br><b>Channel Topic:</b><br>%s"
 msgstr "<br><b>ਚੈਨਲ ਵਿਸ਼ਾ:</b><br>%s"
 
-#, c-format
 msgid "<br><b>Channel Modes:</b> "
 msgstr "<br><b>ਚੈਨਲ ਮੋਡ:</b> "
 
@@ -8377,7 +8119,6 @@
 msgid "Channel Public Keys List"
 msgstr "ਚੈਨਲ ਪਬਲਿਕ ਕੁੰਜੀ ਲਿਸਟ"
 
-#, c-format
 msgid ""
 "Channel authentication is used to secure the channel from unauthorized "
 "access. The authentication may be based on passphrase and digital "
@@ -8452,8 +8193,7 @@
 msgstr "ਗੁਪਤ ਚੈਨਲ ਸੈੱਟ ਕਰੋ"
 
 #, c-format
-msgid ""
-"You have to join the %s channel before you are able to join the private group"
+msgid "You have to join the %s channel before you are able to join the private group"
 msgstr "ਤੁਹਾਨੂੰ ਪ੍ਰਾਈਵੇਟ ਗਰੁੱਪ ਵਿੱਚ ਦਾਖਲ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ %s ਚੈਨਲ ਵਿੱਚ ਦਾਖਲ ਹੋਣਾ ਪਵੇਗਾ"
 
 msgid "Join Private Group"
@@ -8734,8 +8474,7 @@
 msgid "Key Exchange failed"
 msgstr "ਕੁੰਜੀ ਤਬਾਦਲਾ ਅਸਫਲ"
 
-msgid ""
-"Resuming detached session failed. Press Reconnect to create new connection."
+msgid "Resuming detached session failed. Press Reconnect to create new connection."
 msgstr "ਮੁੜ-ਜੁੜਨ ਸਮੇਂ ਸ਼ੈਸ਼ਨ ਅਸਫਲ ਹੈ। ਨਵਾਂ ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਮੁੜ-ਜੁੜੋ ਨੂੰ ਦਬਾਓ।"
 
 msgid "Connection failed"
@@ -8763,14 +8502,13 @@
 msgid "Error loading SILC key pair"
 msgstr "SILC ਕੁੰਜੀ ਜੋੜਾ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Download %s: %s"
-msgstr "%s 'ਤੇ ਯੂਜ਼ਰ: %s"
+msgstr "%s ਡਾਊਨਲੋਡ: %s"
 
 msgid "Your Current Mood"
-msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਚਿੱਤ(ਮੂਡ)"
-
-#, c-format
+msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਚਿੱਤ"
+
 msgid "Normal"
 msgstr "ਸਧਾਰਨ"
 
@@ -8794,10 +8532,10 @@
 msgstr "ਵੀਡਿਓ ਕਾਨਫਰੰਸ"
 
 msgid "Your Current Status"
-msgstr "ਤੁਹਾਡਾ ਮੌਜੂਦਾ ਸਥਿਤੀ"
+msgstr "ਤੁਹਾਡੀ ਮੌਜੂਦਾ ਹਾਲਤ"
 
 msgid "Online Services"
-msgstr "ਆਨਲਾਇਨ ਸਰਵਿਸਾਂ"
+msgstr "ਆਨਲਾਈਨ ਸਰਵਿਸਾਂ"
 
 msgid "Let others see what services you are using"
 msgstr "ਹੋਰਾਂ ਨੂੰ ਇਹ ਵੇਖਣ ਦਿਓ ਕਿ ਤੁਸੀਂ ਕਿਹੜੀਆਂ ਸਰਵਿਸਾਂ ਵਰਤ ਰਹੇ ਹੋ"
@@ -8916,8 +8654,7 @@
 msgstr "msg &lt;nick&gt; &lt;message&gt;:  Send a private message to a user"
 
 msgid "query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
-msgstr ""
-"query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
+msgstr "query &lt;nick&gt; [&lt;message&gt;]:  Send a private message to a user"
 
 msgid "motd:  View the server's Message Of The Day"
 msgstr "motd:  ਸਰਵਰ ਦਾ ਦਿਨ ਦਾ ਸੁਨੇਹਾ ਵੇਖੋ"
@@ -9141,43 +8878,33 @@
 msgid "No server statistics available"
 msgstr "ਕੋਈ ਸਰਵਰ ਅੰਕੜੇ ਉਪਲੱਬਧ ਨਹੀਂ"
 
-#, c-format
 msgid "Failure: Version mismatch, upgrade your client"
 msgstr "ਅਸਫਲ: ਵਰਜਨ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ, ਤੁਹਾਨੂੰ ਨਵੇਂ ਕਲਾਇਟ ਦੀ ਲੋੜ ਹੈ"
 
-#, c-format
 msgid "Failure: Remote does not trust/support your public key"
 msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਤੁਹਾਡੀ ਪਬਲਿਕ ਕੁੰਜੀ ਉੱਤੇ ਭਰੋਸਾ/ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Failure: Remote does not support proposed KE group"
 msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ KE ਗਰੁੱਪ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Failure: Remote does not support proposed cipher"
 msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ ਸੀਫ਼ਰ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Failure: Remote does not support proposed PKCS"
 msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ PKCS ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Failure: Remote does not support proposed hash function"
 msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ ਹੈਂਸ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Failure: Remote does not support proposed HMAC"
 msgstr "ਅਸਫਲ: ਰਿਮੋਟ ਦਿੱਤੇ HMAC ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ"
 
-#, c-format
 msgid "Failure: Incorrect signature"
 msgstr "ਗਲਸ: ਗਲਤ ਦਸਤਖਤ"
 
-#, c-format
 msgid "Failure: Invalid cookie"
 msgstr "ਅਸਫਲ: ਗਲਤ ਕੂਕੀ"
 
-#, c-format
 msgid "Failure: Authentication failed"
 msgstr "ਅਸਫ਼ਲ: ਪ੍ਰਮਾਣਕਿਤਾ ਅਸਫ਼ਲ"
 
@@ -9206,10 +8933,12 @@
 msgid "Could not resolve hostname"
 msgstr "ਹੋਸਟ-ਨਾਂ ਹੱਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"
 
-#, fuzzy
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "SIP ਸਕਰੀਨ ਨਾਂ ਵਿੱਚ ਖਾਲੀ ਥਾਂ ਜਾਂ @ ਨਿਸ਼ਾਨ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ"
 
+msgid "SIP connect server not specified"
+msgstr "SIP ਕੁਨੈਕਟ ਸਰਵਰ ਨਹੀਂ ਦਿੱਤਾ"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -9219,11 +8948,11 @@
 #. *< name
 #. *< version
 msgid "SIP/SIMPLE Protocol Plugin"
-msgstr "SIP/SIMPLE ਪ੍ਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+msgstr "SIP/SIMPLE ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
 
 #. *  summary
 msgid "The SIP/SIMPLE Protocol Plugin"
-msgstr "SIP/SIMPLE ਪ੍ਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+msgstr "SIP/SIMPLE ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
 
 msgid "Publish status (note: everyone may watch you)"
 msgstr "ਸਟੇਟਸ ਦਿਓ (ਨੋਟ: ਹਰੇਕ ਤੁਹਾਨੂੰ ਵੇਖ ਸਕਦਾ ਹੈ)"
@@ -9275,7 +9004,6 @@
 msgid "Warning of %s not allowed."
 msgstr "%s ਲਈ ਉਡੀਕ ਸਵੀਕਾਰ ਨਹੀਂ ਹੈ।"
 
-#, c-format
 msgid "A message has been dropped, you are exceeding the server speed limit."
 msgstr "ਇੱਕ ਸੁਨੇਹਾ ਗੁਆ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਤੁਸੀਂ ਸਰਵਰ ਗਤੀ ਸੀਮਾ ਤੋਂ ਵੱਧ ਗਏ ਹੋ।"
 
@@ -9295,39 +9023,30 @@
 msgid "You missed an IM from %s because it was sent too fast."
 msgstr "ਤੁਸੀਂ %s ਤੋਂ ਇੱਕ IM ਗੁਆ ਲਿਆ ਹੈ, ਕਿਉਕਿ ਇਹ ਬਹੁਤ ਤੇਜ਼ੀ ਨਾਲ ਭੇਜਿਆ ਗਿਆ ਹੈ।"
 
-#, c-format
 msgid "Failure."
 msgstr "ਅਸਫਲ ਹੈ।"
 
-#, c-format
 msgid "Too many matches."
 msgstr "ਬਹੁਤ ਮੇਲ ਹਨ।"
 
-#, c-format
 msgid "Need more qualifiers."
 msgstr "ਹੋਰ ਯੋਗਤਾ ਦੀ ਲੋੜ ਹੈ।"
 
-#, c-format
 msgid "Dir service temporarily unavailable."
 msgstr "ਡਾਈ ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
 
-#, c-format
 msgid "Email lookup restricted."
 msgstr "ਈਮੇਲ ਖੋਜ ਪਾਬੰਦੀ ਹੈ।"
 
-#, c-format
 msgid "Keyword ignored."
 msgstr "ਸ਼ਬਦ ਅਣਡਿੱਠਾ"
 
-#, c-format
 msgid "No keywords."
 msgstr "ਕੋਈ ਸ਼ਬਦ ਨਹੀਂ ਹੈ।"
 
-#, c-format
 msgid "User has no directory information."
 msgstr "ਯੂਜ਼ਰ ਦੀ ਕੋਈ ਡਾਇਰੈਕਟਰੀ ਜਾਣਕਾਰੀ ਨਹੀਂ ਹੈ।"
 
-#, c-format
 msgid "Country not supported."
 msgstr "ਦੇਸ਼ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
 
@@ -9335,19 +9054,15 @@
 msgid "Failure unknown: %s."
 msgstr "ਅਣਜਾਣੀ ਅਸਫਲਤਾ: %s"
 
-#, fuzzy, c-format
 msgid "Incorrect username or password."
-msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ।"
-
-#, c-format
+msgstr "ਗਲਤ ਯੂਜ਼ਰ-ਨਾਂ ਜਾਂ ਪਾਸਵਰਡ।"
+
 msgid "The service is temporarily unavailable."
 msgstr "ਸਰਵਿਸ ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ।"
 
-#, c-format
 msgid "Your warning level is currently too high to log in."
 msgstr "ਤੁਹਾਡਾ ਚੇਤਾਵਨੀ ਲੈਵਲ ਇੰਨਾ ਜ਼ਿਆਦਾ ਹੈ ਕਿ ਲਾਗਇਨ ਨਹੀਂ ਹੋਇਆ ਜਾਂਦਾ ਹੈ।"
 
-#, c-format
 msgid ""
 "You have been connecting and disconnecting too frequently.  Wait ten minutes "
 "and try again.  If you continue to try, you will need to wait even longer."
@@ -9480,13 +9195,11 @@
 
 #, c-format
 msgid "Unknown error number %d. Logging into the Yahoo! website may fix this."
-msgstr ""
-"ਅਣਜਾਣੀ ਗਲਤੀ ਨੰਬਰ %d ਹੈ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।"
+msgstr "ਅਣਜਾਣੀ ਗਲਤੀ ਨੰਬਰ %d ਹੈ। Yahoo! ਵੈਬਸਾਇਟ ਉੱਤੇ ਲਾਗਇਨ ਕਰਨ ਨਾਲ ਸਮੱਸਿਆ ਹੱਲ ਹੋ ਸਕਦੀ ਹੈ।"
 
 #, c-format
 msgid "Could not add buddy %s to group %s to the server list on account %s."
-msgstr ""
-"ਸੁਨੇਹੀ %s ਨੂੰ ਗਰੁੱਪ %s ਵਿੱਚ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਅਕਾਊਂਟ %s ਲਈ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।"
+msgstr "ਸੁਨੇਹੀ %s ਨੂੰ ਗਰੁੱਪ %s ਵਿੱਚ ਸਰਵਰ ਲਿਸਟ ਉੱਤੇ ਅਕਾਊਂਟ %s ਲਈ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ ਹੈ।"
 
 msgid "Could not add buddy to server list"
 msgstr "ਸਰਵਰ ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਸ਼ਾਮਿਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ"
@@ -9586,9 +9299,8 @@
 msgid "doodle: Request user to start a Doodle session"
 msgstr "ਡੂਡਲ: ਯੂਜ਼ਰ ਨੂੰ ਇੱਕ ਘੁੱਗੂ ਘਾਂਘੜੇ (ਡੂਡਲ) ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਮੰਗ"
 
-#, fuzzy
 msgid "Yahoo ID..."
-msgstr "Yahoo! ID"
+msgstr "Yahoo ID..."
 
 #. *< type
 #. *< ui_requirement
@@ -9601,7 +9313,7 @@
 #. *  summary
 #. *  description
 msgid "Yahoo Protocol Plugin"
-msgstr "Yahoo ਪ੍ਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
+msgstr "Yahoo ਪਰੋਟੋਕਾਲ ਪਲੱਗਇਨ"
 
 msgid "Yahoo Japan"
 msgstr "Yahoo ਜਾਪਾਨ"
@@ -9648,9 +9360,9 @@
 msgid "Unable to establish file descriptor."
 msgstr "ਫਾਇਲ ਵੇਰਵਾ ਬਣਾਉਣ ਲਈ ਅਸਫਲ ਹੈ।"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s is trying to send you a group of %d files.\n"
-msgstr "%s %s ਫਾਇਲ ਭੇਜਣ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰ ਰਿਹਾ ਹੈ"
+msgstr "%s ਤੁਹਾਨੂੰ %d ਫਾਇਲਾਂ ਦਾ ਗਰੁੱਪ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਿਹਾ ਹੈ।।\n"
 
 msgid "Yahoo! Japan Profile"
 msgstr "Yahoo! ਜਾਪਾਨ ਪ੍ਰੋਫਾਇਲ"
@@ -9689,19 +9401,13 @@
 msgstr "ਸਬੰਧ 2"
 
 msgid "Cool Link 3"
-msgstr "ਸਬੰਧ 3"
+msgstr "ਵਧੀਆ ਲਿੰਕ 3"
 
 msgid "Last Update"
 msgstr "ਆਖਰੀ ਅੱਪਡੇਟ"
 
-#, c-format
-msgid "User information for %s unavailable"
-msgstr "%s ਲਈ ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਉਪਲੱਬਧ ਨਹੀਂ ਹੈ"
-
-msgid ""
-"Sorry, this profile seems to be in a language or format that is not "
-"supported at this time."
-msgstr "ਅਫਸੋਸ ਹੈ, ਪਰ ਇਹ ਪ੍ਰੋਫਾਇਲ ਉਸ ਭਾਸ਼ਾ ਵਿੱਚ ਹੈ, ਜੋ ਕਿ ਅਜੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
+msgid "This profile is in a language or format that is not supported at this time."
+msgstr "ਇਹ ਪ੍ਰੋਫਾਇਲ ਉਸ ਭਾਸ਼ਾ ਜਾਂ ਫਾਰਮੈਟ ਵਿੱਚ ਹੈ, ਜੋ ਕਿ ਅਜੇ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
 
 msgid ""
 "Could not retrieve the user's profile. This most likely is a temporary "
@@ -9835,11 +9541,9 @@
 msgstr "topic &lt;instance&gt;: Set the instance to be used on this class"
 
 msgid "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: Join a new chat"
-msgstr ""
-"sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: ਗੱਲਬਾਤ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ"
-
-msgid ""
-"zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
+msgstr "sub &lt;class&gt; &lt;instance&gt; &lt;recipient&gt;: ਗੱਲਬਾਤ ਵਿੱਚ ਦਾਖਲ ਹੋਇਆ"
+
+msgid "zi &lt;instance&gt;: Send a message to &lt;message,<i>instance</i>,*&gt;"
 msgstr "zi &lt;instance&gt;: &lt;message,<i>instance</i>,* ਨੂੰ ਸੁਨੇਹਾ ਭੇਜਿਆ ਹੈ&gt;"
 
 msgid ""
@@ -9988,21 +9692,18 @@
 msgstr "ਕੀ ਗੱਲਬਾਤ ਸੱਦਾ ਮੰਨਜ਼ੂਰ ਕਰਨਾ ਹੈ?"
 
 #. Shortcut
-#, fuzzy
 msgid "Shortcut"
-msgstr "ਲੜੀਬੱਧ"
-
-#, fuzzy
+msgstr "ਸ਼ਾਰਟਕੱਟ"
+
 msgid "The text-shortcut for the smiley"
-msgstr "GTK+ ਪਾਠ ਸ਼ਾਰਟਕੱਟ ਥੀਮ"
+msgstr "ਸਮਾਈਲੀ ਲਈ ਟੈਕਸਟ-ਸ਼ਾਰਟਕੱਟ"
 
 #. Stored Image
-#, fuzzy
 msgid "Stored Image"
-msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ"
+msgstr "ਸੰਭਾਲਿਆ ਚਿੱਤਰ"
 
 msgid "Stored Image. (that'll have to do for now)"
-msgstr ""
+msgstr "ਸੰਭਾਲਿਆ ਚਿੱਤਰ।(ਉਹ ਹੁਣ ਕਰਨਾ ਹੋਵੇਗਾ)"
 
 msgid "SSL Connection Failed"
 msgstr "SSL ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ"
@@ -10029,7 +9730,7 @@
 msgstr "ਮੋਬਾਇਲ"
 
 msgid "Listening to music"
-msgstr ""
+msgstr "ਸੰਗੀਤ ਸੁਣ ਰਿਹਾ/ਰਹੀ ਹਾਂ"
 
 #, c-format
 msgid "%s (%s) changed status from %s to %s"
@@ -10082,7 +9783,7 @@
 "ਨਾਂ %s~ ਬਦਲਿਆ ਗਿਆ ਹੈ।"
 
 msgid "Calculating..."
-msgstr "ਜਾਂਚ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ...."
+msgstr "ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ..."
 
 msgid "Unknown."
 msgstr "ਅਣਜਾਣ"
@@ -10131,9 +9832,9 @@
 msgid "Unable to connect to %s"
 msgstr "%s ਨਾਲ ਜੁੜਨ ਲਈ ਅਸਮਰੱਥ"
 
-#, fuzzy, c-format
+#, c-format
 msgid "Error reading from %s: response too long (%d bytes limit)"
-msgstr "%s ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ: %s"
+msgstr "%s ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ ਗਲਤੀ: ਜਵਾਬ ਬਹੁਤ ਲੰਮਾ ਹੈ (%d ਬਾਈਟ ਲਿਮਟ)"
 
 #, c-format
 msgid ""
@@ -10157,36 +9858,31 @@
 
 #, c-format
 msgid " - %s"
-msgstr ""
-
-#, fuzzy, c-format
+msgstr " - %s"
+
+#, c-format
 msgid " (%s)"
-msgstr "%s (%s)"
+msgstr " (%s)"
 
 #. 10053
-#, c-format
 msgid "Connection interrupted by other software on your computer."
-msgstr ""
+msgstr "ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ ਉੱਤੇ ਕੁਨੈਕਸ਼ਨ ਨੂੰ ਹੋਰ ਸਾਫਟਵੇਅਰਾਂ ਵਲੋਂ ਰੋਕਿਆ।"
 
 #. 10054
-#, fuzzy, c-format
 msgid "Remote host closed connection."
-msgstr "ਰਿਮੋਟ ਯੂਜ਼ਰ ਨੇ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ।"
+msgstr "ਰਿਮੋਟ ਹੋਸਟ ਨੇ ਕੁਨੈਕਸ਼ਨ ਬੰਦ ਕਰ ਦਿੱਤਾ ਹੈ।"
 
 #. 10060
-#, fuzzy, c-format
 msgid "Connection timed out."
-msgstr "ਕੁਨੈਕਸ਼ਨ ਟਾਈਮ-ਆਉਟ"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਟਾਈਮ-ਆਉਟ ਹੋਇਆ।"
 
 #. 10061
-#, fuzzy, c-format
 msgid "Connection refused."
-msgstr "ਕੁਨੈਕਸ਼ਨ ਮੁੜ-ਸੈੱਟ ਕੀਤਾ ਗਿਆ"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਤੋਂ ਇਨਕਾਰ ਕੀਤਾ।"
 
 #. 10048
-#, fuzzy, c-format
 msgid "Address already in use."
-msgstr "ਇਹ ਗੱਲ ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ 'ਚ ਹੈ"
+msgstr "ਐਡਰੈੱਸ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ।"
 
 msgid "Internet Messenger"
 msgstr "ਇੰਟਰਨੈਟ ਮੈਸੰਜ਼ਰ"
@@ -10295,9 +9991,8 @@
 msgid "_Basic"
 msgstr "ਬੇਸਿਕ(_B)"
 
-#, fuzzy
 msgid "Create _this new account on the server"
-msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ"
+msgstr "ਸਰਵਰ ਉੱਤੇ ਇਹ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ(_t)"
 
 msgid "_Advanced"
 msgstr "ਤਕਨੀਕੀ(_A)"
@@ -10308,7 +10003,7 @@
 msgid "Protocol"
 msgstr "ਪਰੋਟੋਕਾਲ"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "<span size='larger' weight='bold'>Welcome to %s!</span>\n"
 "\n"
@@ -10322,17 +10017,16 @@
 msgstr ""
 "<span size='larger' weight='bold'>%s ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ!</span>\n"
 "\n"
-"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ IM ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। %s ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ <b>ਸ਼ਾਮਲ</b> ਬਟਨ "
+"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਵੀ IM ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਨਹੀਂ ਹੈ। %s ਨਾਲ ਕੁਨੈਕਟ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ <b>ਸ਼ਾਮਲ...</b> ਬਟਨ "
 "ਦੱਬੋ ਅਤੇ ਆਪਣਾ ਪਹਿਲਾਂ ਅਕਾਊਂਟ ਸੰਰਚਿਤ ਕਰੋ। ਜੇ ਤੁਸੀਂ %s ਨੂੰ ਕਈ IM ਅਕਾਊਂਟਾਂ ਨਾਲ ਕੁਨੈਕਟ ਕਰਨਾ ਚਾਹੁੰਦੇ "
-"ਹੋ ਤਾਂ ਸਭ ਦੀ ਸੰਰਚਨਾ ਲਈ <b>ਸ਼ਾਮਲ</b> ਨੂੰ ਫੇਰ ਦੱਬੋ।\n"
+"ਹੋ ਤਾਂ ਸਭ ਦੀ ਸੰਰਚਨਾ ਲਈ <b>ਸ਼ਾਮਲ...</b> ਨੂੰ ਫੇਰ ਦੱਬੋ।\n"
 "\n"
-"ਤੁਸੀਂ ਇਹ ਵਿੰਡੋ ਉੱਤੇ ਬੱਡ ਲਿਸਟ ਵਿੰਡੋ ਵਿੱਚ <b>ਅਕਾਊਂਟ->ਸ਼ਾਮਲ/ਸੋਧ</b> ਰਾਹੀਂ ਅਕਾਊਂਟ ਸ਼ਾਮਲ, ਸੋਧਣ ਜਾਂ "
+"ਤੁਸੀਂ ਇਹ ਵਿੰਡੋ ਉੱਤੇ ਬੇਲੀ (ਬੱਡੀ) ਲਿਸਟ ਵਿੰਡੋ ਵਿੱਚ <b>ਅਕਾਊਂਟ->ਅਕਾਊਂਟ ਪਰਬੰਧ</b> ਰਾਹੀਂ ਅਕਾਊਂਟ ਸ਼ਾਮਲ, ਸੋਧਣ ਜਾਂ "
 "ਹਟਾਉਣ ਵਾਸਤੇ ਆ ਸਕਦੇ ਹੋ।"
 
 #, c-format
 msgid "You have %d contact named %s. Would you like to merge them?"
-msgid_plural ""
-"You currently have %d contacts named %s. Would you like to merge them?"
+msgid_plural "You currently have %d contacts named %s. Would you like to merge them?"
 msgstr[0] "ਤੁਹਾਡੇ ਕੋਲ %d ਸੰਪਰਕ %s ਨਾਂ ਨਾਲ ਹਨ। ਕੀ ਤੁਸੀਂ ਮਿਲਾਉਣੇ ਚਾਹੁੰਦੇ ਹੋ?"
 msgstr[1] "ਤੁਹਾਡੇ ਕੋਲ ਇਸ ਸਮੇਂ %d ਸੰਪਰਕ %s ਨਾਂ ਨਾਲ ਹਨ। ਕੀ ਤੁਸੀਂ ਮਿਲਾਉਣੇ ਚਾਹੁੰਦੇ ਹੋ?"
 
@@ -10345,13 +10039,11 @@
 "ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਰਤਣ ਲਈ ਸਹਾਇਕ ਹੈ। ਤੁਸੀਂ ਉਨ੍ਹਾਂ ਨੂੰ ਸੰਪਰਕ ਦੇ ਮੇਨੂ ਤੋਂ 'ਫੈਲਾਓ' ਚੁਣ ਕੇ ਫੇਰ ਅੱਡ ਅੱਡ ਕਰ "
 "ਸਕਦੇ ਹੋ।"
 
-#, fuzzy
 msgid "Please update the necessary fields."
 msgstr "ਲੋੜੀਦੇ ਖੇਤਰ ਅੱਪਡੇਟ ਕਰੋ ਜੀ।"
 
-#, fuzzy
 msgid "Room _List"
-msgstr "ਰੂਮ ਲਿਸਟ"
+msgstr "ਰੂਮ ਲਿਸਟ(_L)"
 
 msgid ""
 "Please enter the appropriate information about the chat you would like to "
@@ -10394,9 +10086,8 @@
 msgid "_Remove"
 msgstr "ਹਟਾਓ(_R)"
 
-#, fuzzy
 msgid "Set Custom Icon"
-msgstr "ਕਸਟਮ ਆਈਕਾਨ ਸੈੱਟ..."
+msgstr "ਕਸਟਮ ਆਈਕਾਨ ਸੈੱਟ ਕਰੋ"
 
 msgid "Remove Custom Icon"
 msgstr "ਕਸਟਮ ਆਈਕਾਨ ਹਟਾਓ"
@@ -10423,9 +10114,8 @@
 msgid "Persistent"
 msgstr "ਪੱਕਾ"
 
-#, fuzzy
 msgid "_Edit Settings..."
-msgstr "ਸੈਟਿੰਗ ਸੋਧ"
+msgstr "ਸੈਟਿੰਗ ਸੋਧ(_E)..."
 
 msgid "_Collapse"
 msgstr "ਸਮੇਟੋ(_C)"
@@ -10436,16 +10126,14 @@
 msgid "/Tools/Mute Sounds"
 msgstr "/ਟੂਲ/ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ"
 
-msgid ""
-"You are not currently signed on with an account that can add that buddy."
+msgid "You are not currently signed on with an account that can add that buddy."
 msgstr "ਤੁਸੀਂ ਇਸ ਸਮੇਂ ਇੱਕ ਅਕਾਊਂਟ ਨਾਲ ਲਾਗਇਨ ਨਹੀਂ ਹੋ, ਤਾਂ ਕਿ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਿਲ ਕੀਤਾ ਜਾ ਸਕੇ।"
 
 #. I don't believe this can happen currently, I think
 #. * everything that calls this function checks for one of the
 #. * above node types first.
-#, fuzzy
 msgid "Unknown node type"
-msgstr "ਅਣਜਾਣ ਗਲਤੀ ਕੋਡ %d"
+msgstr "ਅਣਜਾਣ ਨੋਡ ਟਾਈਪ"
 
 #. Buddies menu
 msgid "/_Buddies"
@@ -10467,7 +10155,7 @@
 msgstr "/ਬੱਡੀ/ਵੇਖੋ(_o)"
 
 msgid "/Buddies/Show/_Offline Buddies"
-msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਇਨ ਬੱਡੀ(_O)"
+msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਈਨ ਬੱਡੀ(_O)"
 
 msgid "/Buddies/Show/_Empty Groups"
 msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਖਾਲੀ ਗਰੁੱਪ(_E)"
@@ -10485,13 +10173,13 @@
 msgstr "/ਬੱਡੀ/ਬੱਡੀ ਕ੍ਰਮਬੱਧ(_S)"
 
 msgid "/Buddies/_Add Buddy..."
-msgstr "/ਬੱਡੀ/ਬੱਡੀ ਸ਼ਾਮਿਲ(_A)..."
+msgstr "/ਬੱਡੀ/ਬੱਡੀ ਸ਼ਾਮਲ(_A)..."
 
 msgid "/Buddies/Add C_hat..."
 msgstr "/ਬੱਡੀ/ਗੱਲਬਾਤ ਸ਼ਾਮਿਲ(_h)..."
 
 msgid "/Buddies/Add _Group..."
-msgstr "/ਬੱਡੀ/ਗਰੁੱਪ ਸ਼ਾਮਿਲ(_G)..."
+msgstr "/ਬੱਡੀ/ਗਰੁੱਪ ਸ਼ਾਮਲ(_G)..."
 
 msgid "/Buddies/_Quit"
 msgstr "/ਬੱਡੀ/ਬੰਦ ਕਰੋ(_Q)"
@@ -10500,9 +10188,8 @@
 msgid "/_Accounts"
 msgstr "/ਅਕਾਊਂਟ(_A)"
 
-#, fuzzy
 msgid "/Accounts/Manage Accounts"
-msgstr "/ਅਕਾਊਂਟ/ਪਰਬੰਧ"
+msgstr "/ਅਕਾਊਂਟ/ਅਕਾਊਂਟ ਪਰਬੰਧ"
 
 #. Tools
 msgid "/_Tools"
@@ -10521,14 +10208,13 @@
 msgstr "/ਟੂਲ/ਮੇਰੀ ਪਸੰਦ(_e)"
 
 msgid "/Tools/Pr_ivacy"
-msgstr "/ਟੂਲ/ਰਹੱਸ(_i)"
-
-#, fuzzy
+msgstr "/ਟੂਲ/ਪਰਾਈਵੇਸੀ(_i)"
+
 msgid "/Tools/Smile_y"
-msgstr "/ਟੂਲ/ਪਰਾਈਵੇਸੀ"
+msgstr "/ਟੂਲ/ਸਮਾਈਲੀ(_y)"
 
 msgid "/Tools/_File Transfers"
-msgstr "/ਟੂਲ/ਫਾਇਲ ਸੰਚਾਰ(_F)"
+msgstr "/ਟੂਲ/ਫਾਇਲ ਟਰਾਂਸਫਰ(_F)"
 
 msgid "/Tools/R_oom List"
 msgstr "/ਟੂਲ/ਰੂਮ ਲਿਸਟ(_o)"
@@ -10544,7 +10230,7 @@
 msgstr "/ਮੱਦਦ(_H)"
 
 msgid "/Help/Online _Help"
-msgstr "/ਮੱਦਦ/ਆਨਲਾਇਨ ਮੱਦਦ(_H)"
+msgstr "/ਮੱਦਦ/ਆਨਲਾਈਨ ਮੱਦਦ(_H)"
 
 msgid "/Help/_Debug Window"
 msgstr "/ਮੱਦਦ/ਡੀਬੱਗ ਵਿੰਡੋ(_D)"
@@ -10552,31 +10238,28 @@
 msgid "/Help/_About"
 msgstr "/ਮੱਦਦ/ਇਸ ਬਾਰੇ(_A)"
 
-#, fuzzy, c-format
+#, c-format
 msgid "<b>Account:</b> %s"
-msgstr ""
-"\n"
-"<b>ਅਕਾਊਂਟ:</b> %s"
-
-#, fuzzy, c-format
+msgstr "<b>ਅਕਾਊਂਟ:</b> %s"
+
+#, c-format
 msgid ""
 "\n"
 "<b>Occupants:</b> %d"
 msgstr ""
 "\n"
-"<b>ਅਕਾਊਂਟ:</b> %s"
-
-#, fuzzy, c-format
+"<b>ਨਿਵਾਸ:</b> %d "
+
+#, c-format
 msgid ""
 "\n"
 "<b>Topic:</b> %s"
 msgstr ""
 "\n"
-"<b>ਅਕਾਊਂਟ:</b> %s"
-
-#, fuzzy
+"<b>ਵਿਸ਼ਾ:</b> %s"
+
 msgid "(no topic set)"
-msgstr "ਕੋਈ ਵਿਸ਼ਾ ਨਹੀਂ ਦਿੱਤਾ ਹੈ"
+msgstr "(ਕੋਈ ਵਿਸ਼ਾ ਨਹੀਂ ਦਿੱਤਾ ਹੈ)"
 
 msgid "Buddy Alias"
 msgstr "ਬੱਡੀ ਏਲੀਆਸ"
@@ -10596,9 +10279,8 @@
 msgid "Rockin'"
 msgstr "ਰਾਕਇਨ'"
 
-#, fuzzy
 msgid "Total Buddies"
-msgstr "ਬੱਡੀ"
+msgstr "ਕੁੱਲ ਬੱਡੀ"
 
 #, c-format
 msgid "Idle %dd %dh %02dm"
@@ -10655,27 +10337,24 @@
 msgid "%s disconnected"
 msgstr "%s ਕੁਨੈਕਸ਼ਨ ਖਤਮ ਕੀਤਾ"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%s disabled"
-msgstr "ਕਮਾਂਡ ਆਯੋਗ"
-
-#, fuzzy
+msgstr "%s ਆਯੋਗ"
+
 msgid "Reconnect"
-msgstr "ਕੁਨੈਕਟ ਕਰੋ"
-
-#, fuzzy
+msgstr "ਮੁੜ-ਕੁਨੈਕਟ ਕਰੋ"
+
 msgid "Re-enable"
-msgstr "ਅਕਾਊਂਟ ਮੁੜ-ਯੋਗ"
+msgstr "ਮੁੜ-ਚਾਲੂ"
 
 msgid "Welcome back!"
-msgstr ""
-
-#, fuzzy, c-format
+msgstr "ਫੇਰ ਜੀ ਆਇਆਂ ਨੂੰ!"
+
+#, c-format
 msgid "%d account was disabled because you signed on from another location:"
-msgid_plural ""
-"%d accounts were disabled because you signed on from another location:"
-msgstr[0] "ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਥਾਂ ਤੋਂ ਲਾਗਇਨ ਹੋਏ"
-msgstr[1] "ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਥਾਂ ਤੋਂ ਲਾਗਇਨ ਹੋਏ"
+msgid_plural "%d accounts were disabled because you signed on from another location:"
+msgstr[0] "%d ਅਕਾਊਂਟ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਹੋਰ ਟਿਕਾਣੇ ਤੋਂ ਸਾਇਨ ਹੋ ਗਏ ਹੋ:"
+msgstr[1] "%d ਅਕਾਊਂਟ ਆਯੋਗ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ ਤੁਸੀਂ ਹੋਰ ਟਿਕਾਣੇ ਤੋਂ ਸਾਇਨ ਹੋ ਗਏ ਹੋ:"
 
 msgid "<b>Username:</b>"
 msgstr "<b>ਯੂਜ਼ਰ ਨਾਂ:</b>"
@@ -10690,7 +10369,7 @@
 msgstr "/ਅਕਾਊਂਟ"
 
 #. Translators: Please maintain the use of -> and <- to refer to menu heirarchy
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "<span weight='bold' size='larger'>Welcome to %s!</span>\n"
 "\n"
@@ -10700,7 +10379,7 @@
 msgstr ""
 "<span weight='bold' size='larger'>%s ਵਲੋਂ ਜੀ ਆਇਆਂ ਨੂੰ!</span>\n"
 "\n"
-"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਅਕਾਊਂਟ ਯੋਗ ਨਹੀਂ ਹੈ। ਆਪਣੇ IM ਅਕਾਊਂਟ <b>ਅਕਾਊਂਟ->ਪਰਬੰਧ</b> ਰਾਹੀਂ <b>ਅਕਾਊਂਟ</b> "
+"ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਅਕਾਊਂਟ ਯੋਗ ਨਹੀਂ ਹੈ। ਆਪਣੇ IM ਅਕਾਊਂਟ <b>ਅਕਾਊਂਟ->ਅਕਾਊਂਟ ਪਰਬੰਧ</b> ਰਾਹੀਂ <b>ਅਕਾਊਂਟ</b> "
 "ਤੋਂ ਯੋਗ ਕਰੋ। ਜਦੋਂ ਤੁਸੀਂ ਅਕਾਊਂਟ ਯੋਗ ਕੀਤੇ ਤਾਂ ਤੁਸੀਂ ਸਾਇਨ-ਆਨ ਕਰ ਸਕਦੇ ਹੋ, ਆਪਣਾ ਸਟੇਟਸ ਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ "
 "ਅਤੇ ਆਪਣੇ ਦੋਸਤਾਂ-ਮਿੱਤਰਾਂ ਨਾਲ ਗੱਲਾਂ ਮਾਰ ਸਕਦੇ ਹੋ।"
 
@@ -10708,7 +10387,7 @@
 #. * after the treeview or faceprint gets mad. -Robot101
 #.
 msgid "/Buddies/Show/Offline Buddies"
-msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਇਨ ਬੱਡੀ"
+msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਆਫਲਾਈਨ ਬੱਡੀ"
 
 msgid "/Buddies/Show/Empty Groups"
 msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਖਾਲੀ ਗਰੁੱਪ"
@@ -10722,21 +10401,17 @@
 msgid "/Buddies/Show/Protocol Icons"
 msgstr "/ਬੱਡੀ/ਵੇਖੋ/ਪਰੋਟੋਕਾਲ ਆਈਕਾਨ"
 
-#, fuzzy
 msgid "Add a buddy.\n"
-msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
-
-#, fuzzy
+msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ ਕਰੋ।\n"
+
 msgid "Buddy's _username:"
-msgstr "ਬੱਡੀ ਨਾਂ:"
-
-#, fuzzy
+msgstr "ਬੱਡੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ(_u):"
+
 msgid "(Optional) A_lias:"
-msgstr "ਚੋਣਵੀਂ ਜਾਣਕਾਰੀ:"
-
-#, fuzzy
+msgstr "(ਚੋਣਵਾਂ) ਏਲੀਆਸ(_l):"
+
 msgid "Add buddy to _group:"
-msgstr "ਕੀ ਬੱਡੀ ਆਪਣੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਿਲ?"
+msgstr "ਬੱਡੀ ਗਰੁੱਪ ਵਿੱਚ ਸ਼ਾਮਲ(_g):"
 
 msgid "This protocol does not support chat rooms."
 msgstr "ਇਹ ਪ੍ਰੋਟੋਕਾਲ ਗੱਲਬਾਤ ਰੂਮ ਲਈ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।"
@@ -10749,25 +10424,22 @@
 msgid ""
 "Please enter an alias, and the appropriate information about the chat you "
 "would like to add to your buddy list.\n"
-msgstr ""
-"ਇੱਕ ਏਲੀਆਸ ਅਤੇ ਗੱਲਬਾਤ ਲਈ ਠੀਕ ਨਾਂ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਬੱਡੀ ਲਿਸਟ ਸ਼ਾਮਿਲ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ।\n"
+msgstr "ਇੱਕ ਏਲੀਆਸ ਅਤੇ ਗੱਲਬਾਤ ਲਈ ਠੀਕ ਨਾਂ ਦਿਓ ਜੀ, ਜਿਸ ਲਈ ਤੁਸੀਂ ਬੱਡੀ ਲਿਸਟ ਸ਼ਾਮਿਲ ਕਰਨੀ ਚਾਹੁੰਦੇ ਹੋ।\n"
 
 msgid "A_lias:"
 msgstr "ਏਲੀਆਸ(_l):"
 
-#, fuzzy
 msgid "Auto_join when account becomes online."
-msgstr "ਜਦੋਂ ਅਕਾਊਂਟ ਆਨਲਾਇਨ ਹੋਵੇ ਤਾਂ ਆਟੋ-ਜੁਆਇੰਨ ਕਰੋ।"
-
-#, fuzzy
+msgstr "ਜਦੋਂ ਅਕਾਊਂਟ ਆਨਲਾਈਨ ਹੋਵੇ ਤਾਂ ਆਟੋ-ਜੁਆਇੰਨ ਕਰੋ(_j)।"
+
 msgid "_Remain in chat after window is closed."
-msgstr "ਜਦੋਂ ਵਿੰਡੋ ਬੰਦ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਗੱਲਬਾਤ ਓਹਲੇ।"
+msgstr "ਜਦੋਂ ਵਿੰਡੋ ਬੰਦ ਕੀਤੀ ਜਾਵੇ ਤਾਂ ਗੱਲਬਾਤ ਵਿੱਚ ਰਹੋ(_R)|"
 
 msgid "Please enter the name of the group to be added."
 msgstr "ਗਰੁੱਪ ਸ਼ਾਮਿਲ ਕਰਨ ਲਈ ਨਾਂ ਦਿਓ ਜੀ।"
 
 msgid "Enable Account"
-msgstr "ਅਕਾਊਂਟ ਯੋਗ"
+msgstr "ਅਕਾਊਂਟ ਚਾਲੂ"
 
 msgid "<PurpleMain>/Accounts/Enable Account"
 msgstr "<PurpleMain>/ਅਕਾਊਂਟ/ਅਕਾਊਂਟ ਯੋਗ"
@@ -10800,8 +10472,7 @@
 msgid "That buddy is not on the same protocol as this chat."
 msgstr "ਉਸ ਬੱਡੀ ਕੋਈ ਉਹ ਪ੍ਰੋਟੋਕਾਲ ਨਹੀਂ ਹੈ, ਜੋ ਕਿ ਇਸ ਗੱਲਬਾਤ ਦਾ"
 
-msgid ""
-"You are not currently signed on with an account that can invite that buddy."
+msgid "You are not currently signed on with an account that can invite that buddy."
 msgstr "ਤੁਸੀਂ ਇਸ ਸਮੇਂ ਇਸ ਅਕਾਊਂਟ ਨਾਲ ਲਾਗਇਨ ਨਹੀਂ ਹੋ, ਜਿਸ ਨਾਲ ਬੱਡੀ ਨੂੰ ਸੱਦਿਆ ਜਾ ਸਕੇ।"
 
 msgid "Invite Buddy Into Chat Room"
@@ -10862,9 +10533,8 @@
 msgid "Set Custom Icon..."
 msgstr "ਕਸਟਮ ਆਈਕਾਨ ਸੈੱਟ..."
 
-#, fuzzy
 msgid "Change Size"
-msgstr "ਹਾਲਤ ਬਦਲੋ"
+msgstr "ਸਾਈਜ਼ ਬਦਲੋ"
 
 msgid "Show All"
 msgstr "ਸਭ ਵੇਖੋ"
@@ -10929,25 +10599,25 @@
 
 #. Options
 msgid "/_Options"
-msgstr "/ਚੋਣ(_O)"
+msgstr "/ਚੋਣਾਂ(_O)"
 
 msgid "/Options/Enable _Logging"
-msgstr "/ਚੋਣ/ਲਾਗ ਯੋਗ(_L)"
+msgstr "/ਚੋਣਾਂ/ਲਾਗ ਯੋਗ(_L)"
 
 msgid "/Options/Enable _Sounds"
-msgstr "/ਚੋਣ/ਸਾਊਂਡ ਯੋਗ(_S)"
+msgstr "/ਚੋਣਾਂ/ਸਾਊਂਡ ਯੋਗ(_S)"
 
 msgid "/Options/Show Formatting _Toolbars"
-msgstr "/ਚੋਣ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ(_T)"
+msgstr "/ਚੋਣਾਂ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ(_T)"
 
 msgid "/Options/Show Ti_mestamps"
-msgstr "/ਚੋਣ/ਟਾਈਮ-ਸਟੈਂਪ ਵੇਖੋ(_M)"
+msgstr "/ਚੋਣਾਂ/ਟਾਈਮ-ਸਟੈਂਪ ਵੇਖੋ(_M)"
 
 msgid "/Conversation/More"
 msgstr "/ਗੱਲਬਾਤ/ਹੋਰ"
 
 msgid "/Options"
-msgstr "/ਚੋਣ"
+msgstr "/ਚੋਣਾਂ"
 
 #. The menubar has been deactivated. Make sure the 'More' submenu is regenerated next time
 #. * the 'Conversation' menu pops up.
@@ -10994,25 +10664,27 @@
 msgstr "/ਗੱਲਬਾਤ/ਚਿੱਤਰ ਸ਼ਾਮਲ..."
 
 msgid "/Options/Enable Logging"
-msgstr "/ਚੋਣ/ਲਾਗ ਰੱਖੋ"
+msgstr "/ਚੋਣਾਂ/ਲਾਗ ਰੱਖੋ"
 
 msgid "/Options/Enable Sounds"
-msgstr "/ਚੋਣ/ਆਵਾਜ਼ ਯੋਗ"
+msgstr "/ਚੋਣਾਂ/ਆਵਾਜ਼ ਯੋਗ"
 
 msgid "/Options/Show Formatting Toolbars"
-msgstr "/ਚੋਣ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ"
+msgstr "/ਚੋਣਾਂ/ਫਾਰਮੈਟ ਟੂਲਬਾਰ ਵੇਖੋ"
 
 msgid "/Options/Show Timestamps"
-msgstr "/ਚੋਣ/ਟਾਈਮ ਸਟੈਂਪ ਵੇਖੋ"
+msgstr "/ਚੋਣਾਂ/ਟਾਈਮ ਸਟੈਂਪ ਵੇਖੋ"
 
 msgid "User is typing..."
 msgstr "ਯੂਜ਼ਰ ਲਿਖਦਾ/ਲਿਖਦੀ ਹੈ..."
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "\n"
 "%s has stopped typing"
-msgstr "%s ਨੇ ਤੁਹਾਡੇ (%s) ਲਈ ਲਿਖਿਆ ਛੱਡਿਆ ਹੈ"
+msgstr ""
+"\n"
+"%s ਲਿਖਣੋਂ ਹਟਿਆ/ਹਟੀ"
 
 #. Build the Send To menu
 msgid "S_end To"
@@ -11131,22 +10803,20 @@
 msgstr "ਘਾਤਕ ਗਲਤੀ"
 
 msgid "bug master"
-msgstr ""
-
-#, fuzzy
+msgstr "ਬੱਗ ਮਾਸਟਰ"
+
 msgid "artist"
 msgstr "ਕਲਾਕਾਰ"
 
 #. feel free to not translate this
 msgid "Ka-Hing Cheung"
-msgstr ""
+msgstr "ਕਾ-ਹਿੰਗ ਚੀਉਂਗ"
 
 msgid "support"
 msgstr "ਸਹਿਯੋਗ"
 
-#, fuzzy
 msgid "webmaster"
-msgstr "ਖੋਜੀ ਤੇ ਵੈਬ ਮਾਸਟਰ"
+msgstr "ਵੈੱਬਮਾਸਟਰ"
 
 msgid "Senior Contributor/QA"
 msgstr "ਸੀਨੀਅਰ ਯੋਗਦਾਨੀ/QA"
@@ -11168,7 +10838,7 @@
 msgstr "ਸਹਿਯੋਗ/QA"
 
 msgid "XMPP"
-msgstr ""
+msgstr "XMPP"
 
 msgid "original author"
 msgstr "ਅਸਲੀ ਲੇਖਕ"
@@ -11245,9 +10915,8 @@
 msgid "French"
 msgstr "ਫਰੈਂਚ"
 
-#, fuzzy
 msgid "Irish"
-msgstr "ਕੁਰਦ"
+msgstr "ਆਈਰਸ਼"
 
 msgid "Galician"
 msgstr "ਗਾਲਿਸਿਕ"
@@ -11303,6 +10972,9 @@
 msgid "Macedonian"
 msgstr "ਮੈਕਡੋਨੀਆਈ"
 
+msgid "Mongolian"
+msgstr "ਮੰਗੋਲੀਆਈ"
+
 msgid "Bokmål Norwegian"
 msgstr "ਬੋਕਮਾਲ ਨਾਰਵੇਗਆਈ"
 
@@ -11316,10 +10988,10 @@
 msgstr "ਨਾਰਵੇਗੀਅਨ ਨਯਨੋਰਸਕ"
 
 msgid "Occitan"
-msgstr ""
+msgstr "ਅੱਸੀਟਾਨ"
 
 msgid "Punjabi"
-msgstr ""
+msgstr "ਪੰਜਾਬੀ"
 
 msgid "Polish"
 msgstr "ਪੋਲੈਂਡੀ"
@@ -11351,9 +11023,8 @@
 msgid "Serbian"
 msgstr "ਸਰਬੀਆਈ"
 
-#, fuzzy
 msgid "Sinhala"
-msgstr "ਸਮਾਜਿਕ"
+msgstr "ਸਿੰਹਾਲਾ"
 
 msgid "Swedish"
 msgstr "ਸਵੀਡਸ਼"
@@ -11371,7 +11042,7 @@
 msgstr "ਤੁਰਕ"
 
 msgid "Urdu"
-msgstr ""
+msgstr "ਉਰਦੂ"
 
 msgid "Vietnamese"
 msgstr "ਵੀਅਤਨਾਮੀ"
@@ -11415,9 +11086,25 @@
 "ਇਸ ਦੇ ਯੋਗਦਾਨੀਆਂ ਕੋਲ ਕਾਪੀ-ਰਾਈਟ ਹੈ। ਯੋਗਦਾਨੀਆਂ ਦੀ ਲਿਸਟ ਵੇਖਣ ਵਾਸਤੇ 'COPYRIGHT' ਫਾਇਲ ਵੇਖੋ। "
 "ਇਸ ਪਰੋਗਰਾਮ ਬਾਰੇ ਤੁਹਾਨੂੰ ਅਸੀਂ ਕੋਈ ਵਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦੇ ਹਾਂ।<BR><BR>"
 
-#, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT>irc.freenode.net ਉੱਤੇ #pidgin<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">ਸਵਾਲ-ਜਵਾਬ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">ਈਮੇਲ ਰਾਹੀਂ ਮੱਦਦ:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+
+msgid "<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr "<FONT SIZE=\"4\">IRC ਚੈਨਲ:</FONT>irc.freenode.net ਉੱਤੇ #pidgin<BR><BR>"
+
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
 
 msgid "Current Developers"
 msgstr "ਮੌਜੂਦਾ ਡੀਵੈਲਪਰ"
@@ -11449,11 +11136,10 @@
 msgid "Get User Info"
 msgstr "ਯੂਜ਼ਰ ਜਾਣਕਾਰੀ ਲਵੋ"
 
-#, fuzzy
 msgid ""
 "Please enter the username or alias of the person whose info you would like "
 "to view."
-msgstr "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ , ਜਿਸ ਦੀ ਜਾਣਕਾਰੀ ਤੁਸੀਂ ਵੇਖਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr "ਵਿਅਕਤੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ ਏਲੀਆਸ ਦਿਓ ਜੀ , ਜਿਸ ਦੀ ਜਾਣਕਾਰੀ ਤੁਸੀਂ ਵੇਖਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
 
 msgid "View User Log"
 msgstr "ਯੂਜ਼ਰ ਲਾਗ ਵੇਖੋ"
@@ -11477,17 +11163,15 @@
 msgid "Enter an alias for this chat."
 msgstr "ਇਸ ਗੱਲਬਾਤ ਲਈ ਉਪ ਨਾਂ ਦਿਓ।"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "You are about to remove the contact containing %s and %d other buddy from "
 "your buddy list.  Do you want to continue?"
 msgid_plural ""
 "You are about to remove the contact containing %s and %d other buddies from "
 "your buddy list.  Do you want to continue?"
-msgstr[0] ""
-"ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %s ਗੱਲਬਾਤ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।"
-msgstr[1] ""
-"ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %s ਗੱਲਬਾਤ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ।"
+msgstr[0] "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgstr[1] "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚੋਂ %s ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
 
 msgid "Remove Contact"
 msgstr "ਸੰਪਰਕ ਹਟਾਓ"
@@ -11522,8 +11206,7 @@
 msgstr "ਗਰੁੱਪ ਹਟਾਓ(_R)"
 
 #, c-format
-msgid ""
-"You are about to remove %s from your buddy list.  Do you want to continue?"
+msgid "You are about to remove %s from your buddy list.  Do you want to continue?"
 msgstr "ਤੁਸੀਂ %s ਨੂੰ ਆਪਣੀ ਸੁਨੇਹੀ ਲਿਸਟ ਵਿੱਚੋਂ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਜਾਰੀ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
 
 msgid "Remove Buddy"
@@ -11547,45 +11230,35 @@
 msgid "Right-click for more unread messages...\n"
 msgstr "ਹੋਰ ਨਾ-ਪੜ੍ਹੇ ਸੁਨੇਹਿਆਂ ਲਈ ਸੱਜਾ-ਕਲਿੱਕ...\n"
 
-#, fuzzy
 msgid "_Change Status"
-msgstr "ਹਾਲਤ ਬਦਲੋ"
-
-#, fuzzy
+msgstr "ਹਾਲਤ ਬਦਲੋ(_C)"
+
 msgid "Show Buddy _List"
-msgstr "ਬੱਡੀ ਲਿਸਟ ਵੇਖੋ"
-
-#, fuzzy
+msgstr "ਬੱਡੀ ਲਿਸਟ ਵੇਖੋ(_L)"
+
 msgid "_Unread Messages"
-msgstr "ਅਣ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ"
-
-#, fuzzy
+msgstr "ਅਣ-ਪੜ੍ਹੇ ਸੁਨੇਹੇ(_U)"
+
 msgid "New _Message..."
-msgstr "ਨਵਾਂ ਸੁਨੇਹਾ..."
-
-#, fuzzy
+msgstr "ਨਵਾਂ ਸੁਨੇਹਾ(_M)..."
+
 msgid "_Accounts"
-msgstr "/ਅਕਾਊਂਟ(_A)"
-
-#, fuzzy
+msgstr "ਅਕਾਊਂਟ(_A)"
+
 msgid "Plu_gins"
-msgstr "ਪਲੱਗਇਨ"
-
-#, fuzzy
+msgstr "ਪਲੱਗਇਨ(_g)"
+
 msgid "Pr_eferences"
-msgstr "ਮੇਰੀ ਪਸੰਦ"
-
-#, fuzzy
+msgstr "ਮੇਰੀ ਪਸੰਦ(_e)"
+
 msgid "Mute _Sounds"
-msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ"
-
-#, fuzzy
+msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ(_S)"
+
 msgid "_Blink on New Message"
-msgstr "ਨਵੇਂ ਸੁਨੇਹੇ ਉੱਤੇ ਝਪਕੋ"
-
-#, fuzzy
+msgstr "ਨਵੇਂ ਸੁਨੇਹੇ ਉੱਤੇ ਝਪਕੋ(_B)"
+
 msgid "_Quit"
-msgstr "ਬਾਹਰ"
+msgstr "ਬਾਹਰ(_Q)"
 
 msgid "Not started"
 msgstr "ਸ਼ੁਰੂ ਨਹੀਂ"
@@ -11660,77 +11333,70 @@
 msgstr "ਫਾਰਮੈਟਿੰਗ ਮੁੜ-ਸੈੱਟ ਕਰੋ(_R)"
 
 msgid "Disable _smileys in selected text"
-msgstr ""
+msgstr "ਚੁਣੇ ਟੈਕਸਟ ਵਿੱਚ ਸਮਾਈਲੀ ਆਯੋਗ(_s)"
 
 msgid "Hyperlink color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ"
+msgstr "ਹਾਈਪਰਲਿੰਕ ਰੰਗ"
 
 msgid "Color to draw hyperlinks."
-msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ ਦਿਓ।"
-
-#, fuzzy
+msgstr "ਹਾਈਪਰਲਿੰਕ ਲਈ ਰੰਗ ਦਿਓ।"
+
 msgid "Hyperlink visited color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ"
-
-#, fuzzy
+msgstr "ਖੋਲ੍ਹੋ ਹਾਈਪਰਲਿੰਕ ਰੰਗ"
+
 msgid "Color to draw hyperlinks after it has been visited (or activated)."
-msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।"
+msgstr "ਹਾਈਪਰਲਿੰਕ ਖੋਲ੍ਹਣ ਤੋਂ ਬਾਅਦ ਵਰਤਣ ਲਈ ਰੰਗ (ਜਾਂ ਐਕਟੀਵੇਟ ਹੋਣ ਤੋਂ ਬਾਅਦ)"
 
 msgid "Hyperlink prelight color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਪ੍ਰੀ-ਲਾਇਟ ਰੰਗ"
+msgstr "ਹਾਈਪਰਲਿੰਕ ਪ੍ਰੀ-ਲਾਇਟ ਰੰਗ"
 
 msgid "Color to draw hyperlinks when mouse is over them."
-msgstr "ਹਾਇਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।"
-
-#, fuzzy
+msgstr "ਹਾਈਪਰਲਿੰਕ ਲਈ ਰੰਗ, ਜਦੋਂ ਮਾਊਂਸ ਉਨ੍ਹਾਂ ਉੱਤੇ ਹੋਵੇ।"
+
 msgid "Sent Message Name Color"
-msgstr "ਭੇਜੇ ਸੁਨੇਹੇ"
+msgstr "ਭੇਜਿਆ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
 
 msgid "Color to draw the name of a message you sent."
-msgstr ""
-
-#, fuzzy
+msgstr "ਤੁਹਾਡੇ ਵਲੋਂ ਭੇਜੇ ਸੁਨੇਹੇ ਨਾਂ ਲਈ ਰੰਗ ਹੈ।"
+
 msgid "Received Message Name Color"
-msgstr "ਪ੍ਰਾਪਤ ਹੋਏ ਸੁਨੇਹੇ"
+msgstr "ਮਿਲਿਆ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
 
 msgid "Color to draw the name of a message you received."
-msgstr ""
+msgstr "ਤੁਹਾਡੇ ਮਿਲੇ ਸੁਨੇਹੇ ਦੇ ਨਾਂ ਲਈ ਰੰਗ ਹੈ।"
 
 msgid "\"Attention\" Name Color"
-msgstr ""
+msgstr "\"ਸਾਵਧਾਨ\" ਨਾਂ ਰੰਗ"
 
 msgid "Color to draw the name of a message you received containing your name."
-msgstr ""
+msgstr "ਤੁਹਾਡਾ ਨਾਂ ਰੱਖਣ ਵਾਲੇ ਇੱਕ ਸੁਨੇਹੇ, ਜੋ ਤੁਹਾਨੂੰ ਮਿਲਿਆ ਹੈ, ਦੇ ਨਾਂ ਲਈ ਰੰਗ"
 
 msgid "Action Message Name Color"
-msgstr ""
+msgstr "ਕਾਰਵਾਈ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
 
 msgid "Color to draw the name of an action message."
-msgstr ""
+msgstr "ਇੱਕ ਕਾਰਵਾਈ ਸੁਨੇਹੇ ਲਈ ਨਾਂ ਲਿਖਣ ਲਈ ਰੰਗ ਹੈ।"
 
 msgid "Action Message Name Color for Whispered Message"
-msgstr ""
+msgstr "ਘੁਸਰ-ਮੁਸਰ ਸੁਨੇਹੇ ਲਈ ਐਕਟਿਵ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
 
 msgid "Whisper Message Name Color"
-msgstr ""
-
-#, fuzzy
+msgstr "ਘੁਸਰ-ਮੁਸਰ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
+
 msgid "Typing notification color"
-msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਹਟਾਓ"
+msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਰੰਗ"
 
 msgid "The color to use for the typing notification font"
-msgstr ""
-
-#, fuzzy
+msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਲਈ ਫੋਂਟ ਵਾਸਤੇ ਵਰਤਣ ਲਈ ਰੰਗ"
+
 msgid "Typing notification font"
-msgstr "ਇੱਕ ਸੂਚਨਾ ਦਿਓ"
+msgstr "ਟਾਈਪ ਕਰਨ ਸੂਚਨਾ ਫੋਂਟ"
 
 msgid "The font to use for the typing notification"
-msgstr ""
-
-#, fuzzy
+msgstr "ਟਾਈਪ ਕਰਨ ਦੀ ਸੂਚਨਾ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਫੋਂਟ"
+
 msgid "Enable typing notification"
-msgstr "ਨਵੀਂ ਚਿੱਠੀ ਸੂਚਨਾ"
+msgstr "ਟਾਈਪ ਕਰਨ ਦੀ ਸੂਚਨਾ ਚਾਲੂ"
 
 msgid "_Copy Email Address"
 msgstr "ਈਮੇਲ ਐਡਰੈੱਸ ਨਕਲ(_C)"
@@ -11782,22 +11448,20 @@
 msgid "Save Image"
 msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ"
 
-#, c-format
 msgid "_Save Image..."
 msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ(_S)..."
 
-#, fuzzy, c-format
 msgid "_Add Custom Smiley..."
-msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਵੇਖੋ"
+msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਸ਼ਾਮਲ(_A)..."
 
 msgid "Select Font"
 msgstr "ਫੋਂਟ ਚੁਣੋ"
 
 msgid "Select Text Color"
-msgstr "ਪਾਠ ਰੰਗ ਚੁਣੋ"
+msgstr "ਟੈਕਸਟ ਰੰਗ ਚੁਣੋ"
 
 msgid "Select Background Color"
-msgstr "ਪਿੱਠਭੂਮੀ ਰੰਗ ਚੁਣੋ"
+msgstr "ਬੈਕਗਰਾਊਂਡ ਰੰਗ ਚੁਣੋ"
 
 msgid "_URL"
 msgstr "_URL"
@@ -11808,13 +11472,13 @@
 msgid ""
 "Please enter the URL and description of the link that you want to insert. "
 "The description is optional."
-msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਸੰਬੰਧ ਦਾ URL ਅਤੇ ਵੇਰਵਾ ਦਿਓ। ਵੇਰਵਾ ਚੋਣਵਾਂ ਹੈ।"
+msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਲਿੰਕ ਦਾ URL ਅਤੇ ਵੇਰਵਾ ਦਿਓ। ਵੇਰਵਾ ਚੋਣਵਾਂ ਹੈ।"
 
 msgid "Please enter the URL of the link that you want to insert."
-msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਸੰਬੰਧ ਦਾ URL ਦਿਓ।"
+msgstr "ਸ਼ਾਮਿਲ ਕਰਨ ਵਾਲੇ ਲਿੰਕ ਦਾ URL ਦਿਓ।"
 
 msgid "Insert Link"
-msgstr "ਸਬੰਧ ਸ਼ਾਮਿਲ"
+msgstr "ਲਿੰਕ ਸ਼ਾਮਲ"
 
 msgid "_Insert"
 msgstr "ਸ਼ਾਮਿਲ(_I)"
@@ -11831,13 +11495,14 @@
 "This smiley is disabled because a custom smiley exists for this shortcut:\n"
 " %s"
 msgstr ""
+"ਇਹ ਸਮਾਈਲੀ ਬੰਦ ਹੈ, ਕਿਉਂਕਿ ਕਸਟਮ ਸਮਾਈਲੀ ਇਸ ਸ਼ਾਰਟਕੱਟ ਲਈ ਮੌਜੂਦ ਹੈ:\n"
+" %s"
 
 msgid "Smile!"
 msgstr "ਸਮਾਈਲ!"
 
-#, fuzzy
 msgid "_Manage custom smileys"
-msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਵੇਖੋ"
+msgstr "ਕਸਟਮ ਸਮਾਇਲੀ ਪਰਬੰਧ(_M)"
 
 msgid "This theme has no available smileys."
 msgstr "ਇਸ ਸਰੂਪ ਵਿੱਚ ਕੋਈ ਸਮਾਈਲ ਨਹੀਂ ਹਨ।"
@@ -11932,12 +11597,11 @@
 msgid "_Smile!"
 msgstr "ਸਮਾਇਲ(_S)!"
 
-#, fuzzy
 msgid "Log Deletion Failed"
-msgstr "SSL ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ"
+msgstr "ਲਾਗਇਨ ਹਟਾਉਣ ਲਈ ਫੇਲ੍ਹ"
 
 msgid "Check permissions and try again."
-msgstr ""
+msgstr "ਅਧਿਕਾਰਾਂ ਦੀ ਜਾਂਚ ਕਰਕੇ ਮੁੜ-ਟਰਾਈ ਕਰੋ।"
 
 #, c-format
 msgid ""
@@ -11957,13 +11621,11 @@
 "s?"
 msgstr "ਕੀ ਤੁਸੀਂ %s ਉੱਤੇ ਸ਼ੁਰੂ ਕੀਤੇ ਸਿਸਟਮ ਲਾਗ ਨੂੰ ਪੱਕੇ ਤੌਰ ਉੱਤੇ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
 
-#, fuzzy
 msgid "Delete Log?"
-msgstr "ਹਟਾਓ"
-
-#, fuzzy
+msgstr "ਲਾਗ ਹਟਾਉਣਾ ਹੈ?"
+
 msgid "Delete Log..."
-msgstr "ਹਟਾਓ"
+msgstr "ਲਾਗ ਹਟਾਓ..."
 
 #, c-format
 msgid "<span size='larger' weight='bold'>Conversation in %s on %s</span>"
@@ -11981,7 +11643,7 @@
 msgid "%s %s. Try `%s -h' for more information.\n"
 msgstr "%s %s। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ `%s -h' ਵੇਖੋ।\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s %s\n"
 "Usage: %s [OPTION]...\n"
@@ -12005,12 +11667,13 @@
 "  -h, --help          display this help and exit\n"
 "  -m, --multiple      do not ensure single instance\n"
 "  -n, --nologin       don't automatically login\n"
-"  -l, --login[=NAME]  automatically login (optional argument NAME specifies\n"
-"                      account(s) to use, separated by commas)\n"
+"  -l, --login[=NAME]  enable specified account(s) (optional argument NAME\n"
+"                      specifies account(s) to use, separated by commas.\n"
+"                      Without this only the first account will be enabled).\n"
 "  --display=DISPLAY   X display to use\n"
 "  -v, --version       display the current version and exit\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s %s\n"
 "Usage: %s [OPTION]...\n"
@@ -12033,12 +11696,12 @@
 "  -h, --help          display this help and exit\n"
 "  -m, --multiple      do not ensure single instance\n"
 "  -n, --nologin       don't automatically login\n"
-"  -l, --login[=NAME]  automatically login (optional argument NAME specifies\n"
-"                      account(s) to use, separated by commas)\n"
-"  --display=DISPLAY   X display to use\n"
+"  -l, --login[=NAME]  enable specified account(s) (optional argument NAME\n"
+"                      specifies account(s) to use, separated by commas.\n"
+"                      Without this only the first account will be enabled).\n"
 "  -v, --version       display the current version and exit\n"
 
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "%s %s has segfaulted and attempted to dump a core file.\n"
 "This is a bug in the software and has happened through\n"
@@ -12065,17 +11728,15 @@
 "ਵੀ ਦੇਣਾ ਨਾ ਭੁੱਲੋ। ਜੇ ਤੁਸੀਂ ਇਹ ਨਹੀਂ ਜਾਣਦੇ ਹੋ ਕਿ ਬੈਕਟਰੈਕ ਕਿਵੇਂ ਲੈਣਾ ਹੈ ਤਾਂ,\n"
 "ਇਸ ਵਾਸਤੇ ਹਦਾਇਤਾਂ ਲਈ ਵੇਖੋ\n"
 "%swiki/GetABacktrace\n"
-"\n"
-"ਜੇ ਤੁਹਾਨੂੰ ਹੋਰ ਵੀ ਮੱਦਦ ਦੀ ਲੋੜ ਹੈ ਤਾਂ SeanEgn ਜਾਂ LSchiere (AIM ਰਾਹੀਂ) ਨਾਲ IM\n"
-" ਕਰੋ ਜੀ। ਸੀਨ ਅਤੇ ਲੁਕੀ ਬਾਰੇ ਹੋਰ ਪਰੋਟੋਕਾਲਾਂ ਰਾਹੀਂ ਸੰਪਰਕ ਜਾਣਕਾਰੀ\n"
-"ਲਈ ਵੇਖੋ:\n"
-"%swiki/DeveloperPages\n"
 
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
 msgid "Pidgin"
 msgstr "ਪਿਡਗਿਨ"
 
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ, ਕਿਉਂਕਿ ਇੱਕ ਹੋਰ libpurple ਕਲਾਇਟ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਰਿਹਾ ਹੈ।\n"
+
 msgid "Open All Messages"
 msgstr "ਸਭ ਸੁਨੇਹੇ ਖੋਲ੍ਹੋ"
 
@@ -12105,8 +11766,7 @@
 msgid "Error launching \"%s\": %s"
 msgstr "\"%s\" ਚਲਾਉਣ ਦੌਰਾਨ ਗਲਤੀ: %s"
 
-msgid ""
-"The 'Manual' browser command has been chosen, but no command has been set."
+msgid "The 'Manual' browser command has been chosen, but no command has been set."
 msgstr "'ਦਸਤੀ' ਝਲਕਾਰਾ ਕਮਾਂਡ ਚੁਣੀ ਗਈ ਹੈ, ਪਰ ਕੋਈ ਕਮਾਂਡ ਨਹੀਂ ਦਿੱਤੀ ਗਈ ਹੈ।"
 
 msgid "The following plugins will be unloaded."
@@ -12118,39 +11778,33 @@
 msgid "Unload Plugins"
 msgstr "ਪਲੱਗਇਨ ਅਣ-ਲੋਡ"
 
-#, fuzzy
 msgid "Could not unload plugin"
-msgstr "ਪਬਲਿਕ ਕੁੰਜੀ ਲੋਡ ਨਹੀਂ ਹੋ ਸਕਦੀ ਹੈ"
+msgstr "ਪਲੱਗਇਨ ਅਣਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
 
 msgid ""
 "The plugin could not be unloaded now, but will be disabled at the next "
 "startup."
-msgstr ""
-
-#, fuzzy, c-format
+msgstr "ਪਲੱਗਇਨ ਨੂੰ ਅਨ-ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ, ਪਰ ਇਸ ਨੂੰ ਅਗਲੀ ਵਾਰ ਚਾਲੂ ਹੋਣ ਸਮੇਂ ਬੰਦ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।"
+
+#, c-format
 msgid ""
 "<span foreground=\"red\" weight=\"bold\">Error: %s\n"
 "Check the plugin website for an update.</span>"
 msgstr ""
-"%s\n"
 "<span foreground=\"#ff0000\" weight=\"bold\">ਗਲਤੀ: %s\n"
 "ਇੱਕ ਅੱਪਡੇਟ ਲਈ ਪਲੱਗਇਨ ਵੈੱਬਸਾਇਟ ਵੇਖੋ।</span>"
 
-#, fuzzy
 msgid "Author"
-msgstr "ਪ੍ਰਮਾਣਿਤ"
-
-#, fuzzy
+msgstr "ਲੇਖਕ"
+
 msgid "<b>Written by:</b>"
-msgstr "<b>ਨੂੰ ਭੇਜੀ ਜਾਦੀ ਹੈ:</b>"
-
-#, fuzzy
+msgstr "<b>ਵਲੋਂ ਲਿਖਿਆ:</b>"
+
 msgid "<b>Web site:</b>"
-msgstr "<b>ਏਦਾਂ ਭੇਜੀ ਜਾਦੀ ਹੈ:</b>"
-
-#, fuzzy
+msgstr "<b>ਵੈੱਬਸਾਈਟ:</b>"
+
 msgid "<b>Filename:</b>"
-msgstr "<b>ਯੂਜ਼ਰ ਨਾਂ:</b>"
+msgstr "<b>ਫਾਇਲ ਨਾਂ:</b>"
 
 msgid "Configure Pl_ugin"
 msgstr "ਪਲੱਗਇਨ ਸੰਰਚਨਾ(_u)"
@@ -12248,11 +11902,10 @@
 msgstr "ਆਈਕਾਨ"
 
 msgid "Keyboard Shortcuts"
-msgstr ""
-
-#, fuzzy
+msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ"
+
 msgid "Cl_ose conversations with the Escape key"
-msgstr "%s ਨਾਲ ਗੱਲਬਾਤ"
+msgstr "ਈਸਕੇਸ (Esc) ਸਵਿੱਚ ਨਾਲ ਗੱਲਾਬਾਤਾਂ ਬੰਦ ਕਰੋ(_o)"
 
 msgid "System Tray Icon"
 msgstr "ਸਿਸਟਮ ਟਰੇ ਆਈਕਾਨ"
@@ -12334,7 +11987,7 @@
 msgstr "ਨਵੀਆਂ ਗੱਲਬਾਤ ਵਿੰਡੋਜ਼ ਘੱਟੋ-ਘੱਟ(_z)"
 
 msgid "Minimum input area height in lines:"
-msgstr ""
+msgstr "ਲਾਈਨਾਂ ਵਿੱਚ ਘੱਟੋ-ਘੱਟੋ ਇੰਪੁੱਟ ਏਰੀਆ ਹਾਈਲਾਈਟ:"
 
 msgid "Font"
 msgstr "ਫੋਂਟ"
@@ -12380,7 +12033,7 @@
 msgstr "ਪੋਰਟ"
 
 msgid "_Enable automatic router port forwarding"
-msgstr ""
+msgstr "ਆਟੋਮੈਟਿਕ ਰਾਊਟਰ ਪੋਰਟ ਫਾਰਵਰਡਿੰਗ ਚਾਲੂ ਕਰੋ(_E)"
 
 msgid "_Manually specify range of ports to listen on"
 msgstr "ਸੁਣਨ ਲਈ ਦਸਤੀ ਪੋਰਟ ਸੀਮਾ ਦਿਓ(_M)"
@@ -12419,6 +12072,10 @@
 msgid "No proxy"
 msgstr "ਕੋਈ ਪਰਾਕਸੀ ਨਹੀਂ"
 
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "ਰਿਮੋਟ DNS SOCKS4 ਪਰਾਕਸੀ ਨਾਲ ਵਰਤੋਂ"
+
 msgid "_User:"
 msgstr "ਯੂਜ਼ਰ(_U):"
 
@@ -12432,14 +12089,13 @@
 msgstr "ਨੈੱਟਸਕੇਪ"
 
 msgid "Mozilla"
-msgstr "ਮੌਜੀਲਾ"
+msgstr "ਮੋਜ਼ੀਲਾ"
 
 msgid "Konqueror"
 msgstr "ਕੌਨਕਿਉਰੋਰ"
 
-#, fuzzy
 msgid "Desktop Default"
-msgstr "ਮੂਲ ਮਨਜ਼ੂਰ ਕਰੋ(_A)"
+msgstr "ਵੇਹੜਾ (ਡੈਸਕਟਾਪ) ਡਿਫਾਲਟ"
 
 msgid "GNOME Default"
 msgstr "ਗਨੋਮ ਮੂਲ"
@@ -12500,27 +12156,21 @@
 msgid "Sound Selection"
 msgstr "ਆਵਾਜ਼ ਚੋਣ"
 
-#, c-format
 msgid "Quietest"
 msgstr "ਸਭ ਤੋਂ ਖਾਮੋਸ਼"
 
-#, c-format
 msgid "Quieter"
 msgstr "ਬਹੁਤ ਖਾਮੋਸ਼"
 
-#, c-format
 msgid "Quiet"
 msgstr "ਖਾਮੋਸ਼"
 
-#, c-format
 msgid "Loud"
 msgstr "ਉੱਚੀ"
 
-#, c-format
 msgid "Louder"
 msgstr "ਹੋਰ ਉੱਚੀ"
 
-#, c-format
 msgid "Loudest"
 msgstr "ਸਭ ਤੋਂ ਉੱਚੀ"
 
@@ -12541,31 +12191,26 @@
 "Sound c_ommand:\n"
 "(ਫਾਇਲ ਨਾਂ ਲਈ %s)"
 
-#, fuzzy
 msgid "M_ute sounds"
-msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ"
+msgstr "ਆਵਾਜ਼ ਚੁੱਪ ਰੱਖੋ(_u)"
 
 msgid "Sounds when conversation has _focus"
 msgstr "ਗੱਲਬਾਤ ਉੱਤੇ ਕੇਂਦਰਿਤ ਹੋਣ ਸਮੇਂ ਆਵਾਜ਼(_f)"
 
-#, fuzzy
 msgid "_Enable sounds:"
-msgstr "ਸਾਊਂਡ ਯੋਗ:"
-
-#, fuzzy
+msgstr "ਸਾਊਂਡ ਯੋਗ(_E):"
+
 msgid "V_olume:"
-msgstr "ਵਾਲੀਅਮ:"
+msgstr "ਵਾਲੀਅਮ(_o):"
 
 msgid "Play"
 msgstr "ਚਲਾਓ"
 
-#, fuzzy
 msgid "_Browse..."
-msgstr "ਝਲਕ(_e)..."
-
-#, fuzzy
+msgstr "ਝਲਕ(_B)..."
+
 msgid "_Reset"
-msgstr "ਮੁੜ-ਨਿਰਧਾਰਨ"
+msgstr "ਮੁੜ-ਸੈੱਟ(_R)"
 
 msgid "_Report idle time:"
 msgstr "ਵੇਹਲਾ ਸਮਾਂ ਗਿਣਾਓ(_R):"
@@ -12639,12 +12284,11 @@
 msgstr "ਰਹੱਸ ਦਿਓ:"
 
 #. Remove All button
-#, fuzzy
 msgid "Remove Al_l"
-msgstr "ਹਟਾਓ"
+msgstr "ਸਭ ਹਟਾਓ(_l)"
 
 msgid "Permit User"
-msgstr "ਸਵੀਕਾਰ ਵਿਅਕਤੀ"
+msgstr "ਮਨਜ਼ੂਰ ਯੂਜ਼ਰ"
 
 msgid "Type a user you permit to contact you."
 msgstr "ਵਿਅਕਤੀ ਨਾਂ ਦਿਓ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਸੰਪਰਕ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।"
@@ -12664,10 +12308,10 @@
 msgstr "ਕੀ ਤੁਸੀਂ %s ਨੂੰ ਤੁਹਾਡੇ ਨਾਲ ਸੰਪਰਕ ਕਰਨ ਦੇਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰਦੇ ਹੋ?"
 
 msgid "Block User"
-msgstr "ਵਿਅਕਤੀ ਪਾਬੰਦੀ"
+msgstr "ਯੂਜ਼ਰ ਪਾਬੰਦੀ"
 
 msgid "Type a user to block."
-msgstr "ਪਾਬੰਦੀ ਲਗਾਉਣ ਲਈ ਵਿਅਕਤੀ ਲਿਖੋ।"
+msgstr "ਪਾਬੰਦੀ ਲਗਾਉਣ ਲਈ ਯੂਜ਼ਰ ਦਿਓ"
 
 msgid "Please enter the name of the user you wish to block."
 msgstr "ਉਸ ਵਿਅਕਤੀ ਦਾ ਨਾਂ ਦਿਓ ਜੀ, ਜਿਸ ਉੱਤੇ ਤੁਸੀਂ ਪਾਬੰਦੀ ਲਗਾਉਣੀ ਚਾਹੁੰਦੇ ਹੋ।"
@@ -12707,20 +12351,20 @@
 msgstr "ਗੱਲਬਾਤ ਸ਼ਾਮਲ(_A)"
 
 msgid "Are you sure you want to delete the selected saved statuses?"
-msgstr "ਕੀ ਤੁਸੀਂ ਚੁਣੇ ਸੰਭਾਲੇ ਸਟੇਟਸ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
+msgstr "ਕੀ ਤੁਸੀਂ ਚੁਣੇ ਸੰਭਾਲੀ ਹਾਲਤ ਨੂੰ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
 
 #. Use button
 msgid "_Use"
 msgstr "ਵਰਤੋਂ(_U)"
 
 msgid "Title already in use.  You must choose a unique title."
-msgstr "ਟਾਇਟਲ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ।  ਤੁਹਾਨੂੰ ਵਿਲੱਖਣ ਟਾਇਟਲ ਚੁਣਨਾ ਚਾਹੀਦਾ ਹੈ।"
+msgstr "ਟਾਈਟਲ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਅਧੀਨ ਹੈ।  ਤੁਹਾਨੂੰ ਵਿਲੱਖਣ ਟਾਈਟਲ ਚੁਣਨਾ ਚਾਹੀਦਾ ਹੈ।"
 
 msgid "Different"
 msgstr "ਵੱਖਰਾ"
 
 msgid "_Title:"
-msgstr "ਟਾਇਟਲ(_T):"
+msgstr "ਟਾਈਟਲ(_T):"
 
 msgid "_Status:"
 msgstr "ਹਾਲਤ(_S):"
@@ -12737,75 +12381,62 @@
 msgid "Status for %s"
 msgstr "%s ਲਈ ਹਾਲਤ"
 
-#, fuzzy
 msgid "Custom Smiley"
-msgstr "ਸਮਾਇਲੀ ਸ਼ਾਮਲ ਕਰੋ"
+msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ"
 
 msgid "More Data needed"
-msgstr ""
+msgstr "ਹੋਰ ਡਾਟਾ ਚਾਹੀਦਾ ਹੈ"
 
 msgid "Please provide a shortcut to associate with the smiley."
-msgstr ""
-
-#, fuzzy
+msgstr "ਸਮਾਈਲੀ ਨਾਲ ਸਬੰਧਿਤ ਸ਼ਾਰਟਕੱਟ ਦਿਓ ਜੀ।"
+
 msgid "Duplicate Shortcut"
-msgstr "ਡੁਪਲੀਕੇਟ ਸੋਧ"
+msgstr "ਡੁਪਲੀਕੇਟ ਸ਼ਾਰਟਕੱਟ"
 
 msgid ""
 "A custom smiley for the selected shortcut already exists. Please specify a "
 "different shortcut."
-msgstr ""
-
-#, fuzzy
+msgstr "ਚੁਣੇ ਸ਼ਾਰਟਕੱਟ ਲਈ ਪਹਿਲਾਂ ਹੀ ਇੱਕ ਕਸਟਮ ਸਮਾਈਲੀ ਮੌਜੂਦ ਹੈ। ਵੱਖਰੇ ਸ਼ਾਰਟਕੱਟ ਨਾਲ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।"
+
 msgid "Please select an image for the smiley."
-msgstr "ਲਿਸਤ ਤੋਂ ਆਪਣਾ ਮੂਡ ਚੁਣੋ ਜੀ।"
-
-#, fuzzy
+msgstr "ਸਮਾਈਲੀ ਲਈ ਚਿੱਤਰ ਚੁਣੋ ਜੀ।"
+
 msgid "Edit Smiley"
-msgstr "ਸਮਾਇਲੀ ਸ਼ਾਮਲ ਕਰੋ"
-
-#, fuzzy
+msgstr "ਸਮਾਈਲੀ ਸੋਧ"
+
 msgid "Add Smiley"
-msgstr "ਸਮਾਈਲ!"
-
-#, fuzzy
+msgstr "ਸਮਾਈਲੀ ਸ਼ਾਮਲ"
+
 msgid "Smiley _Image"
-msgstr "ਚਿੱਤਰ ਸੰਭਾਲੋ"
+msgstr "ਸਮਾਈਲੀ ਚਿੱਤਰ(_I)"
 
 #. Smiley shortcut
 msgid "Smiley S_hortcut"
-msgstr ""
-
-#, fuzzy
+msgstr "ਸਮਾਈਲੀ ਸ਼ਾਰਟਕੱਟ(_h)"
+
 msgid "Smiley"
-msgstr "ਸਮਾਈਲ!"
-
-#, fuzzy
+msgstr "ਸਮਾਈਲੀ"
+
 msgid "Custom Smiley Manager"
-msgstr "ਸਰਟੀਫਿਕੇਟ ਮੈਨੇਜਰ"
-
-#, fuzzy
+msgstr "ਪਸੰਦੀਦਾ ਸਮਾਈਲੀ ਮੈਨੇਜਰ"
+
 msgid "Click to change your buddyicon for this account."
-msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):"
-
-#, fuzzy
+msgstr "ਇਸ ਅਕਾਊਂਟ ਲਈ ਆਪਣਾ ਬੱਡੀ-ਆਈਕਾਨ ਬਦਲਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।"
+
 msgid "Click to change your buddyicon for all accounts."
-msgstr "ਇਹ ਅਕਾਊਂਟ ਲਈ ਇਹ ਬੱਡੀ ਆਈਕਾਨ ਵਰਤੋਂ(_i):"
+msgstr "ਸਭ ਅਕਾਊਂਟਾਂ ਲਈ ਆਪਣਾ ਬੱਡੀ-ਆਈਖਾਨ ਬਦਲਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।"
 
 msgid "Waiting for network connection"
 msgstr "ਨੈੱਟਵਰਕ ਕੁਨੈਕਸ਼ਨ ਲਈ ਉਡੀਕ ਜਾਰੀ"
 
-#, fuzzy
 msgid "New status..."
-msgstr "ਨਵਾਂ ਸੁਨੇਹਾ..."
-
-#, fuzzy
+msgstr "ਨਵੀਂ ਹਾਲਤ..."
+
 msgid "Saved statuses..."
-msgstr "ਸੰਭਾਲੇ ਹਾਲਤ"
-
-#, fuzzy
+msgstr "ਸੰਭਾਲੇ ਹਾਲਤ..."
+
 msgid "Status Selector"
-msgstr "ਹਾਲਤ ਸ਼ਬਦ"
+msgstr "ਹਾਲਤ ਚੋਣਕਾਰ"
 
 msgid "Google Talk"
 msgstr "ਗੂਗਲ ਟਾਕ"
@@ -12859,8 +12490,7 @@
 msgid ""
 "You can insert this image into this message, or use it as the buddy icon for "
 "this user"
-msgstr ""
-"ਤੁਸੀਂ ਇਹ ਚਿੱਤਰ ਨੂੰ ਇਹ ਸੁਨੇਹੇ 'ਚ ਸ਼ਾਮਿਲ ਕਰਨ ਸਕਦੇ ਹੋ ਜਾਂ ਇਸ ਯੂਜ਼ਰ ਲਈ ਬੱਡੀ ਆਈਕਾਨ ਵਾਂਗ ਵਰਤ ਸਕਦੇ ਹੋ।"
+msgstr "ਤੁਸੀਂ ਇਹ ਚਿੱਤਰ ਨੂੰ ਇਹ ਸੁਨੇਹੇ 'ਚ ਸ਼ਾਮਿਲ ਕਰਨ ਸਕਦੇ ਹੋ ਜਾਂ ਇਸ ਯੂਜ਼ਰ ਲਈ ਬੱਡੀ ਆਈਕਾਨ ਵਾਂਗ ਵਰਤ ਸਕਦੇ ਹੋ।"
 
 #. I don't know if we really want to do anything here.  Most of the desktop item types are crap like
 #. * "MIME Type" (I have no clue how that would be a desktop item) and "Comment"... nothing we can really
@@ -12902,10 +12532,8 @@
 msgstr "ਫਾਇਲ '%s' ਖੋਲ੍ਹਣ ਲਈ ਫੇਲ੍ਹ: %s"
 
 #, c-format
-msgid ""
-"Failed to load image '%s': reason not known, probably a corrupt image file"
-msgstr ""
-"ਚਿੱਤਰ '%s' ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਤੌਰ ਤੇ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ"
+msgid "Failed to load image '%s': reason not known, probably a corrupt image file"
+msgstr "ਚਿੱਤਰ '%s' ਲੋਡ ਕਰਨ ਵਿੱਚ ਅਸਫਲ: ਕਾਰਨ ਜਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਹੈ, ਸੰਭਵ ਤੌਰ ਤੇ ਫਾਇਲ ਨਿਕਾਰਾ ਹੈ"
 
 msgid "Save File"
 msgstr "ਫਾਇਲ ਸੰਭਾਲੋ"
@@ -12925,24 +12553,20 @@
 msgid "_Invite"
 msgstr "ਸੱਦਾ(_I)"
 
-#, fuzzy
 msgid "_Modify..."
-msgstr "ਸੋਧ(_M)"
-
-#, fuzzy
+msgstr "ਸੋਧ(_M)..."
+
 msgid "_Add..."
-msgstr "ਸ਼ਾਮਲ(_A)"
+msgstr "ਸ਼ਾਮਲ(_A)..."
 
 msgid "_Open Mail"
 msgstr "ਮੇਲ ਖੋਲ੍ਹੋ(_O)"
 
-#, fuzzy
 msgid "_Edit"
-msgstr "ਸੋਧ"
-
-#, fuzzy
+msgstr "ਸੋਧ(_E)"
+
 msgid "Pidgin Tooltip"
-msgstr "ਪਿਡਗਿਨ"
+msgstr "ਪਿਡਗਿਨ ਟੂਲਟਿੱਪ"
 
 msgid "Pidgin smileys"
 msgstr "ਪਿਡਗਿਨ ਸਮਾਇਲੀ"
@@ -12956,12 +12580,11 @@
 msgid "none"
 msgstr "ਕੋਈ ਨਹੀਂ"
 
-#, fuzzy
 msgid "Small"
-msgstr "ਈਮੇਲ"
+msgstr "ਛੋਟਾ"
 
 msgid "Smaller versions of the default smilies"
-msgstr ""
+msgstr "ਡਿਫਾਲਟ ਸਮਾਈਲ ਲਈ ਛੋਟਾ ਵਰਜਨ"
 
 msgid "Response Probability:"
 msgstr "ਜਵਾਬ ਸੰਭਾਵਨਾ:"
@@ -13000,7 +12623,7 @@
 
 #. *  summary
 msgid "Displays statistical information about your buddies' availability"
-msgstr ""
+msgstr "ਆਪਣੀ ਬੱਡੀ ਦੀ ਉਪਲੱਬਧਤਾ ਲਈ ਅੰਕੜੇ ਵੇਖੋ।"
 
 msgid "Buddy is idle"
 msgstr "ਬੱਡੀ ਵੇਹਲਾ ਹੈ"
@@ -13044,16 +12667,14 @@
 #. *< name
 #. *< version
 #. *< summary
-msgid ""
-"Allows for controlling the values associated with different buddy states."
+msgid "Allows for controlling the values associated with different buddy states."
 msgstr "ਵੱਖਰੀ ਬੱਡੀ ਸਥਿਤੀ ਨਾਲ ਸਬੰਧਿਤ ਮੁੱਲਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਦਿਓ।"
 
 #. *< description
 msgid ""
 "Allows for changing the point values of idle/away/offline states for buddies "
 "in contact priority computations."
-msgstr ""
-"ਸੰਪਰਕ ਵਿੱਚ ਦਰਜੇ ਦੇ ਆਧਾਰ ਉੱਤੇ ਬੱਡੀ ਲਈ ਵੇਹਲਾ/ਦੂਰ/ਆਫਲਾਇਨ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਤਬਦੀਲ ਕਰਨਾ ਸਵੀਕਾਰ ਹੈ।"
+msgstr "ਸੰਪਰਕ ਵਿੱਚ ਦਰਜੇ ਦੇ ਆਧਾਰ ਉੱਤੇ ਬੱਡੀ ਲਈ ਵੇਹਲਾ/ਦੂਰ/ਆਫਲਾਇਨ ਸਥਿਤੀ ਦਾ ਮੁੱਲ ਤਬਦੀਲ ਕਰਨਾ ਸਵੀਕਾਰ ਹੈ।"
 
 msgid "Conversation Colors"
 msgstr "ਗੱਲਬਾਤ ਰੰਗ"
@@ -13158,7 +12779,6 @@
 msgstr "ਮਾਊਸ ਇਸ਼ਾਰਿਆਂ ਲਈ ਸਹਿਯੋਗ ਦਿੰਦਾ ਹੈ"
 
 #. *  description
-#, fuzzy
 msgid ""
 "Allows support for mouse gestures in conversation windows. Drag the middle "
 "mouse button to perform certain actions:\n"
@@ -13169,9 +12789,9 @@
 "ਗੱਲਬਾਤ ਵਿੰਡੋ ਵਿੱਚ ਮਾਊਸ ਗੈਸਟਰ ਲਈ ਸਹਿਯੋਗ ਮਨਜ਼ੂਰ ਕਰੋ।\n"
 "ਕੁਝ ਐਕਸ਼ਨ ਕਰਨ ਲਈ ਮਿਡਲ ਮਾਊਂਸ ਬਟਨ ਡਰੈਗ ਵਰਤੋਂ:\n"
 "\n"
-"ਇੱਕ ਗੱਲਬਾਤ ਨੂੰ ਬੰਦ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਨੂੰ ਡਰੈਗ ਕਰਕੇ ਸੱਜਾ ਪਾਸੇ ਭੇਜੋ।\n"
-"ਪਿਛਲੀ ਗੱਲਬਾਤ ਉੱਤੇ ਸਵਿੱਚ ਕਰਨ ਵਾਸਤੇ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਖੱਬੇ ਸਵਿੱਚ ਕਰੋ।\n"
-"ਅਗਲੀ ਗੱਲਬਾਤ ਵਿੱਚ ਜਾਣ ਲਈ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਸੱਜੇ ਪਾਸੇ ਭੇਜੋ।"
+" • ਇੱਕ ਗੱਲਬਾਤ ਨੂੰ ਬੰਦ ਕਰਨ ਵਾਸਤੇ ਹੇਠਾਂ ਨੂੰ ਡਰੈਗ ਕਰਕੇ ਸੱਜਾ ਪਾਸੇ ਭੇਜੋ।\n"
+" • ਪਿਛਲੀ ਗੱਲਬਾਤ ਉੱਤੇ ਸਵਿੱਚ ਕਰਨ ਵਾਸਤੇ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਖੱਬੇ ਸਵਿੱਚ ਕਰੋ।\n"
+" • ਅਗਲੀ ਗੱਲਬਾਤ ਵਿੱਚ ਜਾਣ ਲਈ ਉੱਤੇ ਡਰੈਗ ਕਰਕੇ ਸੱਜੇ ਪਾਸੇ ਭੇਜੋ।"
 
 msgid "Instant Messaging"
 msgstr "ਤਰੁੰਤ ਸੁਨੇਹੇਦਾਰ"
@@ -13247,9 +12867,8 @@
 msgid "Please enter the person's information below."
 msgstr "ਵਿਅਕਤੀ ਬਾਰੇ ਜਾਣਕਾਰੀ ਦਿਓ ਜੀ।"
 
-#, fuzzy
 msgid "Please enter the buddy's username and account type below."
-msgstr "ਬੱਡੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਅਤੇ ਅਕਾਊਂਟ ਕਿਸਮ ਹੇਠਾਂ ਦਿਓ ਜੀ"
+msgstr "ਬੱਡੀ ਦਾ ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਅਕਾਊਂਟ ਕਿਸਮ ਹੇਠਾਂ ਦਿਓ ਜੀ"
 
 msgid "Account type:"
 msgstr "ਅਕਾਊਂਟ ਨਾਂ:"
@@ -13325,9 +12944,8 @@
 msgid "Draw a line to indicate new messages in a conversation."
 msgstr "ਇੱਕ ਗੱਲਬਾਤ ਵਿੱਚ ਨਵਾਂ ਸੁਨੇਹਾ ਦਰਸਾਉਣ ਵਾਸਤੇ ਇੱਕ ਲਾਈਨ ਖਿੱਚੋ।"
 
-#, fuzzy
 msgid "Jump to markerline"
-msgstr "ਮਾਰਕ ਲਾਈਨ"
+msgstr "ਮਾਰਕ ਲਾਈਨ ਉੱਤੇ ਜਾਓ"
 
 msgid "Draw Markerline in "
 msgstr "ਮਾਰਕ-ਲਾਈਨ ਬਣਾਓ"
@@ -13389,11 +13007,10 @@
 
 #. ---------- "Notify For" ----------
 msgid "Notify For"
-msgstr "ਸੂਚਨਾ"
-
-#, fuzzy
+msgstr "ਸੂਚਨਾ ਦਿਓ"
+
 msgid "\t_Only when someone says your username"
-msgstr "\tਜਦੋਂ ਕੋਈ ਤੁਹਾਡਾ ਸਕਰੀਨ ਨਾਂ ਲਵੇ(_O)"
+msgstr "\tਜਦੋਂ ਕੋਈ ਤੁਹਾਡਾ ਯੂਜ਼ਰ ਨਾਂ ਲਵੇ(_O)"
 
 msgid "_Focused windows"
 msgstr "ਫੋਕਸ ਹੋਈਆਂ ਵਿੰਡੋਜ਼(_F)"
@@ -13417,18 +13034,16 @@
 msgid "Set window manager \"_URGENT\" hint"
 msgstr "ਵਿੰਡੋ ਮੈਨੇਜਰ ਵਿੱਚ \"_URGENT\" ਸੰਕੇਤ ਦਿਓ"
 
-#, fuzzy
 msgid "_Flash window"
-msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ(_h)"
+msgstr "ਵਿੰਡੋ ਝਪਕੋ(_F)"
 
 #. Raise window method button
 msgid "R_aise conversation window"
 msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਉਭਾਰੋ(_a)"
 
 #. Present conversation method button
-#, fuzzy
 msgid "_Present conversation window"
-msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਉਭਾਰੋ(_a)"
+msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਪੇਸ਼ ਕਰੋ(_P)"
 
 #. ---------- "Notification Removals" ----------
 msgid "Notification Removal"
@@ -13504,15 +13119,13 @@
 msgstr "ਸੈਕੰਡਰੀ ਕਰਸਰ ਰੰਗ"
 
 msgid "Hyperlink Color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ"
-
-#, fuzzy
+msgstr "ਹਾਈਪਰਲਿੰਕ ਰੰਗ"
+
 msgid "Visited Hyperlink Color"
-msgstr "ਹਾਇਪਰਲਿੰਕ ਰੰਗ"
-
-#, fuzzy
+msgstr "ਖੋਲ੍ਹੇ ਗਏ ਹਾਈਪਰਲਿੰਕ ਰੰਗ"
+
 msgid "Highlighted Message Name Color"
-msgstr "ਉਘਾੜੇ ਸੁਨੇਹੇ"
+msgstr "ਹਾਈਲਾਈਟ ਕੀਤਾ ਸੁਨੇਹਾ ਨਾਂ ਰੰਗ"
 
 msgid "GtkTreeView Horizontal Separation"
 msgstr "GtkTreeView ਹਰੀਜ਼ਟਲ ਵੱਖਰੇਵਾ"
@@ -13529,7 +13142,6 @@
 msgid "Select Color"
 msgstr "ਰੰਗ ਚੁਣੋ"
 
-#, c-format
 msgid "Select Interface Font"
 msgstr "ਇੰਟਰਫੇਸ ਰੰਗ ਚੁਣੋ"
 
@@ -13603,18 +13215,16 @@
 
 #, c-format
 msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "ਤੁਸੀਂ ਅੱਜ %s %s ਲਈ ਅੱਪਗਰੇਡ ਕੀਤਾ ਹੈ।"
 
 msgid "New Version Available"
 msgstr "ਨਵਾਂ ਵਰਜਨ ਉਪਲੱਬਧ ਹੈ"
 
-#, fuzzy
 msgid "Later"
-msgstr "ਮਿਤੀ"
-
-#, fuzzy
+msgstr "ਬਾਅਦ ਵਿੱਚ"
+
 msgid "Download Now"
-msgstr "%s 'ਤੇ ਯੂਜ਼ਰ: %s"
+msgstr "ਹੁਣੇ ਡਾਊਨਲੋਡ"
 
 #. *< type
 #. *< ui_requirement
@@ -13645,21 +13255,21 @@
 #. *< dependencies
 #. *< priority
 #. *< id
-#, fuzzy
 msgid "Send Button"
-msgstr "ਭੇਜੋ"
+msgstr "ਭੇਜੋ ਬਟਨ"
 
 #. *< name
 #. *< version
-#, fuzzy
 msgid "Conversation Window Send Button."
-msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਓਹਲੇ"
+msgstr "ਗੱਲਬਾਤ ਵਿੰਡੋ ਭੇਜੋ ਬਟਨ ਹੈ।"
 
 #. *< summary
 msgid ""
 "Adds a Send button to the entry area of the conversation window. Intended "
 "for when no physical keyboard is present."
 msgstr ""
+"ਗੱਲਬਾਤ ਵਿੰਡੋ ਦੇ ਲਿਖਣ ਖੇਤਰ ਵਿੱਚ ਭੇਜੋ ਬਟਨ ਸ਼ਾਮਲ ਕਰੋ। ਇਹ ਕੋਈ ਅਸਲ ਕੀਬੋਰਡ ਨਾ ਹੋਣ ਦੀ "
+"ਹਾਲਤ ਲਈ ਹੈ।"
 
 msgid "Duplicate Correction"
 msgstr "ਡੁਪਲੀਕੇਟ ਸੋਧ"
@@ -13751,7 +13361,6 @@
 msgid "Timestamp Format Options"
 msgstr "ਟਾਈਮ-ਸਟੈਂਪ ਫਾਰਮੈਟ ਚੋਣ"
 
-#, c-format
 msgid "_Force 24-hour time format"
 msgstr "24-ਘੰਟੇ ਸਮਾਂ ਫਾਰਮੈਟ ਲਈ ਮਜ੍ਬੂਰ(_F)"
 
@@ -13868,17 +13477,13 @@
 msgid "Only when docked"
 msgstr "ਸਿਰਫ਼ ਜਦੋਂ ਡੋਕ ਹੋਵੇ"
 
-msgid "_Flash window when chat messages are received"
-msgstr "ਗੱਲਬਾਤ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਹੋਣ ਉੱਤੇ ਵਿੰਡੋ ਝਲਕਾਓ(_F)"
-
 msgid "Windows Pidgin Options"
 msgstr "ਵਿੰਡੋ ਪਿਡਗਿਨ ਚੋਣਾਂ"
 
 msgid "Options specific to Pidgin for Windows."
 msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਖਾਸ ਚੋਣਾਂ"
 
-msgid ""
-"Provides options specific to Pidgin for Windows , such as buddy list docking."
+msgid "Provides options specific to Pidgin for Windows , such as buddy list docking."
 msgstr "ਵਿੰਡੋ ਲਈ ਪਿਡਗਿਨ ਲਈ ਖਾਸ ਚੋਣ ਹੈ, ਜਿਵੇਂ ਕਿ ਬੱਡੀ ਲਿਸਟ ਡੌਕਿੰਗ।"
 
 msgid "<font color='#777777'>Logged out.</font>"
@@ -13918,439 +13523,3 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "ਇਹ ਪਲੱਗਇਨ XMPP ਸਰਵਰ ਜਾਂ ਕਲਾਇਟ ਡੀਬੱਗ ਲਈ ਫਾਇਦੇਮੰਦ ਹੈ।"
 
-#~ msgid "A group with the name already exists."
-#~ msgstr "ਇਸ ਨਾਂ ਨਾਲ ਗਰੁੱਪ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।"
-
-#~ msgid "Primary Information"
-#~ msgstr "ਪ੍ਰਾਇਮਰੀ ਜਾਣਕਾਰੀ"
-
-#~ msgid "Blood Type"
-#~ msgstr "ਖੂਨ ਕਿਸਮ"
-
-#, fuzzy
-#~ msgid "Update information"
-#~ msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਅੱਪਡੇਟ ਕਰੋ"
-
-#, fuzzy
-#~ msgid "Successed:"
-#~ msgstr "ਗਤੀ:"
-
-#~ msgid ""
-#~ "Setting custom faces is not currently supported. Please choose an image "
-#~ "from %s."
-#~ msgstr "ਇਸ ਸਮੇਂ ਕਸਟਮ ਫੇਸ ਸੈੱਟ ਕਰਨਾ ਸਹਾਇਕ ਨਹੀਂ ਹੈ। %s ਤੋਂ ਚਿੱਤਰ ਚੁਣੋ ਜੀ।"
-
-#~ msgid "Invalid QQ Face"
-#~ msgstr "ਗਲਤ QQ ਮੁੱਖ"
-
-#~ msgid "You rejected %d's request"
-#~ msgstr "ਤੁਸੀਂ %d ਦੀ ਮੰਗ ਠੁਕਰਾਈ"
-
-#~ msgid "Reject request"
-#~ msgstr "ਮੰਗ ਨਾ-ਮਨਜ਼ੂਰ"
-
-#~ msgid "Add buddy with auth request failed"
-#~ msgstr "ਬੱਡੀ ਨੂੰ ਪਰਮਾਣਕਿਤਾ ਮੰਗ ਨਾਲ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਫੇਲ੍ਹ"
-
-#, fuzzy
-#~ msgid "Add into %d's buddy list"
-#~ msgstr "ਬੱਡੀ-ਲਿਸਟ ਲੋਡ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"
-
-#, fuzzy
-#~ msgid "QQ Number Error"
-#~ msgstr "QQ ਨੰਬਰ"
-
-#~ msgid "Group Description"
-#~ msgstr "ਗਰੁੱਪ ਵੇਰਵਾ"
-
-#~ msgid "Auth"
-#~ msgstr "ਪਰਮਾ"
-
-#~ msgid "Approve"
-#~ msgstr "ਮਨਜ਼ੂਰ"
-
-#, fuzzy
-#~ msgid "Successed to join Qun %d, operated by admin %d"
-#~ msgstr "ਤੁਹਾਡੀ %d ਗਰੁੱਪ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਨੂੰ ਐਡਮਿਨ %d ਨੇ ਰੱਦ ਕਰ ਦਿੱਤਾ ਹੈ"
-
-#, fuzzy
-#~ msgid "[%d] removed from Qun \"%d\""
-#~ msgstr "ਤੁਸੀਂ [%d] ਗਰੁੱਪ \"%d\" ਛੱਡਿਆ"
-
-#, fuzzy
-#~ msgid "[%d] added to Qun \"%d\""
-#~ msgstr "ਤੁਹਾਨੂੰ [%d] ਗਰੁੱਪ \"%d\" ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ ਹੈ"
-
-#~ msgid "I am a member"
-#~ msgstr "ਮੈਂ ਮੈਂਬਰ ਹਾਂ"
-
-#, fuzzy
-#~ msgid "I am requesting"
-#~ msgstr "ਗਲਤ ਬੇਨਤੀ"
-
-#~ msgid "I am the admin"
-#~ msgstr "ਮੈਂ ਐਡਮਿਨ ਹਾਂ"
-
-#~ msgid "Unknown status"
-#~ msgstr "ਅਣਜਾਣ ਹਾਲਤ"
-
-#, fuzzy
-#~ msgid "Remove from Qun"
-#~ msgstr "ਗਰੁੱਪ ਹਟਾਓ"
-
-#~ msgid "You entered a group ID outside the acceptable range"
-#~ msgstr "ਤੁਸੀਂ ਮਨਜ਼ੂਰ-ਸ਼ੁੱਦਾ ਰੇਜ਼ ਤੋਂ ਬਾਹਰ ਗਰੁੱਪ ID ਦਿੱਤਾ ਹੈ"
-
-#~ msgid "Are you sure you want to leave this Qun?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਕਿਊਨ ਨੂੰ ਛੱਡਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#~ msgid "Do you want to approve the request?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਇਹ ਮੰਗ ਮੰਨਣੀ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#, fuzzy
-#~ msgid "Change Qun member"
-#~ msgstr "ਫੋਨ ਨੰਬਰ"
-
-#, fuzzy
-#~ msgid "Change Qun information"
-#~ msgstr "ਚੈਨਲ ਜਾਣਕਾਰੀ"
-
-#, fuzzy
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s"
-#~ msgstr "%s (%s)"
-
-#~ msgid "System Message"
-#~ msgstr "ਸਿਸਟਮ ਸੁਨੇਹਾ"
-
-#~ msgid "<b>Last Login IP</b>: %s<br>\n"
-#~ msgstr "<b>ਆਖਰੀ ਲਾਗਇਨ IP</b>: %s<br>\n"
-
-#~ msgid "<b>Last Login Time</b>: %s\n"
-#~ msgstr "<b>ਆਖਰੀ ਲਾਗਇਨ ਸਮਾਂ</b>: %s\n"
-
-#~ msgid "Set My Information"
-#~ msgstr "ਮੇਰੀ ਜਾਣਕਾਰੀ ਸੈੱਟ ਕਰੋ"
-
-#, fuzzy
-#~ msgid "Leave the QQ Qun"
-#~ msgstr "ਇਹ QQ ਕਿਊਨ ਛੱਡਣਾ ਚਾਹੁੰਦੇ ਹੋ"
-
-#~ msgid "Block this buddy"
-#~ msgstr "ਇਹ ਬੱਡੀ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ"
-
-#, fuzzy
-#~ msgid "Error password: %s"
-#~ msgstr "ਪਾਸਵਰਡ ਬਦਲਣ ਦੌਰਾਨ ਗਲਤੀ"
-
-#, fuzzy
-#~ msgid "Failed to connect all servers"
-#~ msgstr "ਸਰਵਰ ਨਾਲ ਕੁਨੈਕਸ਼ਨ ਦੌਰਨ ਗਲਤੀ"
-
-#, fuzzy
-#~ msgid "Connecting server %s, retries %d"
-#~ msgstr ""
-#~ "ਸਰਵਰ (%s) ਵਲੋਂ ਕੁਨੈਕਸ਼ਨ ਗਲਤੀ:\n"
-#~ "%s"
-
-#, fuzzy
-#~ msgid "Do you approve the requestion?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਇਹ ਮੰਗ ਮੰਨਣੀ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#, fuzzy
-#~ msgid "Do you add the buddy?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਇਸ ਬੱਡੀ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#, fuzzy
-#~ msgid "%s added you [%s] to buddy list"
-#~ msgstr "%s ਨੇ ਤੁਹਾਨੂੰ [%s] ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ 'ਚ ਜੋੜਿਆ ਹੈ।"
-
-#, fuzzy
-#~ msgid "QQ Budy"
-#~ msgstr "ਬੱਡੀ ਸ਼ਾਮਿਲ"
-
-#~ msgid "%s wants to add you [%s] as a friend"
-#~ msgstr "%s ਤੁਹਾਨੂੰ [%s] ਨੂੰ ਦੋਸਤ ਦੇ ਤੌਰ ਉੱਤੇ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦਾ ਹੈ"
-
-#, fuzzy
-#~ msgid "%s is not in buddy list"
-#~ msgstr "%s ਤੁਹਾਡੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਨਹੀਂ ਹੈ।"
-
-#, fuzzy
-#~ msgid "Would you add?"
-#~ msgstr "ਕੀ ਤੁਸੀਂ ਉਸ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#, fuzzy
-#~ msgid "QQ Server Notice"
-#~ msgstr "ਸਰਵਰ ਪੋਰਟ"
-
-#, fuzzy
-#~ msgid "Network disconnected"
-#~ msgstr "ਰਿਮੋਟ ਡਿਸ-ਕੁਨੈਕਟ ਕੀਤਾ"
-
-#~ msgid "developer"
-#~ msgstr "ਡਿਵੈਲਪਰ"
-
-#~ msgid "XMPP developer"
-#~ msgstr "XMPP ਡੀਵੈਲਪਰ"
-
-#~ msgid "Artists"
-#~ msgstr "ਕਲਾਕਾਰ"
-
-#~ msgid ""
-#~ "You are using %s version %s.  The current version is %s.  You can get it "
-#~ "from <a href=\"%s\">%s</a><hr>"
-#~ msgstr ""
-#~ "ਤੁਸੀਂ ਇਸ ਸਮੇਂ %s ਵਰਜਨ %s ਵਰਤ ਰਹੇ ਹੋ। ਮੌਜੂਦਾ ਵਰਜਨ %s ਹੈ। ਤੁਸੀਂ ਇਸ ਨੂੰ <a href=\"%s\">%"
-#~ "s</a>ਤੋਂ ਲੈ ਸਕਦੇ ਹੋ।<hr>"
-
-#~ msgid "<b>ChangeLog:</b><br>%s"
-#~ msgstr "<b>ਬਦਲਾਅ:</b><br>%s"
-
-#~ msgid "Screen name:"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ:"
-
-#~ msgid "Pounce only when my status is not available"
-#~ msgstr "ਪਉਨਸ ਕੇਵਲ ਉਦੋਂ ਹੀ, ਜਦੋਂ ਮੇਰਾ ਸਟੇਟਸ ਉਪਲੱਬਧ ਨਾ ਹੋਵੇ"
-
-#~ msgid "Someone says your screen name in chat"
-#~ msgstr "ਕਿਸੇ ਨੇ ਗੱਲਬਾਤ ਵਿੱਚ ਤੁਹਾਡਾ ਨਾਂ ਲਿਆ ਹੈ"
-
-#~ msgid "EOF while reading from resolver process"
-#~ msgstr "ਹੱਲਕਰਤਾ ਪਰੋਸੈੱਸ ਤੋਂ ਪੜ੍ਹਨ ਦੌਰਾਨ EOF"
-
-#~ msgid "There were errors unloading the plugin."
-#~ msgstr "ਪਲੱਗਇਨ ਅਣ-ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀਆਂ ਹਨ।"
-
-#~ msgid "Error setting socket options"
-#~ msgstr "ਸਾਕਟ ਚੋਣਾਂ ਦੇਣ ਦੌਰਾਨ ਗਲਤੀ"
-
-#~ msgid "Couldn't open file"
-#~ msgstr "ਫਾਇਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕੀ"
-
-#~ msgid ""
-#~ "This server requires plaintext authentication over an unencrypted "
-#~ "connection.  Allow this and continue authentication?"
-#~ msgstr ""
-#~ "ਇਹ ਸਰਵਰ ਲਈ ਗ਼ੈਰ-ਇੰਕ੍ਰਿਪਟਡ ਕੁਨੈਕਸ਼ਨ ਉੱਤੇ ਪਲੇਨ-ਟੈਕਸਟ ਪਰਮਾਣਕਿਤਾ ਲੋੜੀਦੀ ਹੈ। ਕੀ ਇਹ "
-#~ "ਪਰਮਾਣਿਕਤਾ ਮਨਜ਼ੂਰ ਕਰਕੇ ਜਾਰੀ ਰੱਖਣਾ ਹੈ?"
-
-#~ msgid "Error initializing session"
-#~ msgstr "ਸ਼ੈਸ਼ਨ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਗਲਤੀ"
-
-#~ msgid "Invalid screen name"
-#~ msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਹੈ"
-
-#~ msgid "Current media"
-#~ msgstr "ਮੌਜੂਦਾ ਮੀਡਿਆ"
-
-#~ msgid ""
-#~ "Windows Live ID authentication: cannot find authenticate token in server "
-#~ "response"
-#~ msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ: ਸਰਵਰ ਜਵਾਬ ਵਿੱਚ ਪਰਮਾਣਕਿਤਾ ਟੋਕਨ ਨਹੀਂ ਲੱਭਿਆ ਜਾ ਸਕਦਾ"
-
-#~ msgid "Windows Live ID authentication Failed"
-#~ msgstr "ਵਿੰਡੋ ਲਾਇਵ ID ਪਰਮਾਣਕਿਤਾ ਫੇਲ੍ਹ ਹੋਈ"
-
-#~ msgid ""
-#~ "Sorry, passwords over %d characters in length (yours is %d) are not "
-#~ "supported by MySpace."
-#~ msgstr ""
-#~ "ਅਫਸੋਸ, MySpace ਵਲੋਂ %d ਅੱਖਰਾਂ ਤੋਂ ਵੱਧ ਲੰਬਾਈ ਦਾ ਪਾਸਵਰਡ ਮਨਜ਼ੂਰ ਨਹੀਂ ਹੈ (ਤੁਸੀਂ %d ਅੱਖਰ ਦਿੱਤੇ)।"
-
-#~ msgid ""
-#~ "Please go to http://editprofile.myspace.com/index.cfm?fuseaction=profile."
-#~ "username and choose a username and try to login again."
-#~ msgstr ""
-#~ "http://editprofile.myspace.com/index.cfm?fuseaction=profile.username ਉੱਤੇ "
-#~ "ਜਾਓ ਜੀ ਅਤੇ ਯੂਜ਼ਰ-ਨਾਂ ਚੁਣ ਕੇ ਫਿਰ ਲਾਗਇਨ ਕਰਨ ਦੀ ਟਰਾਈ ਕਰੋ।"
-
-#~ msgid "Unable to make SSL connection to server."
-#~ msgstr "ਸਰਵਰ ਨਾਲ SSL ਕੁਨੈਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਅਸਫਲ ਹੈ।"
-
-#~ msgid "Too evil (sender)"
-#~ msgstr "ਕਈ ਬੁਰੇ (ਭੇਜਣ ਵਾਲਾ)"
-
-#~ msgid "Too evil (receiver)"
-#~ msgstr "ਕਈ ਬੁਰੇ (ਪ੍ਰਾਪਤਕਰਤਾ)"
-
-#~ msgid "Screen name sent"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ ਭੇਜਿਆ"
-
-#~ msgid "Invalid screen name."
-#~ msgstr "ਗਲਤ ਸਕਰੀਨ ਨਾਂ ਹੈ।"
-
-#~ msgid "Available Message"
-#~ msgstr "ਉਪਲੱਬਧ ਸੁਨੇਹਾ"
-
-#~ msgid "Screen name"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ"
-
-#~ msgid "Invalid chat name specified."
-#~ msgstr "ਗਲਤ ਗੱਲਬਾਤ ਨਾਂ ਦਿੱਤਾ ਹੈ।"
-
-#~ msgid "Away Message"
-#~ msgstr "ਦੂਰ ਸੁਨੇਹਾ"
-
-#~ msgid "<i>(retrieving)</i>"
-#~ msgstr " <i>(ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ)</i>"
-
-#~ msgid "Use recent buddies group"
-#~ msgstr "ਤਾਜ਼ਾ ਬੱਡੀ ਗਰੁੱਪ ਵਰਤੋਂ"
-
-#~ msgid "Show how long you have been idle"
-#~ msgstr "ਵੇਖੋ ਕਿ ਕਿੰਨੇ ਚਿਰ ਤੋਂ ਤੁਸੀਂ ਵੇਹਲੇ ਹੋ"
-
-#~ msgid "Your information has been updated"
-#~ msgstr "ਤੁਹਾਡੀ ਜਾਣਕਾਰੀ ਅੱਪਡੇਟ ਕੀਤੀ ਗਈ ਹੈ"
-
-#~ msgid "Input your reason:"
-#~ msgstr "ਆਪਣਾ ਕਾਰਨ ਦਿਓ:"
-
-#~ msgid "You have successfully removed a buddy"
-#~ msgstr "ਤੁਸੀਂ ਇੱਕ ਬੱਡੀ ਨੂੰ ਹਟਾ ਦਿੱਤਾ ਹੈ"
-
-#~ msgid "You have successfully removed yourself from your friend's buddy list"
-#~ msgstr "ਤੁਸੀਂ ਆਪਣੇ ਆਪ ਨੂੰ ਆਪਣੇ ਦੋਸਤ ਦੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਹਟਾ ਲਿਆ ਹੈ"
-
-#~ msgid "You have added %d to buddy list"
-#~ msgstr "ਤੁਸੀਂ %d ਨੂੰ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਹੈ"
-
-#~ msgid "Invalid QQid"
-#~ msgstr "ਗਲਤ QQid"
-
-#~ msgid "Please enter external group ID"
-#~ msgstr "ਬਾਹਰੀ ਗਰੁੱਪ ID ਦਿਓ ਜੀ"
-
-#~ msgid "Your request to join group %d has been approved by admin %d"
-#~ msgstr "ਤੁਹਾਡੀ %d ਗਰੁੱਪ ਨੂੰ ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮੰਗ ਨੂੰ ਐਡਮਿਨ %d ਨੇ ਮਨਜ਼ੂਰ ਕਰ ਲਿਆ ਹੈ"
-
-#~ msgid "This group has been added to your buddy list"
-#~ msgstr "ਇਹ ਗਰੁੱਪ ਤੁਹਾਡੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਜੋੜਿਆ ਗਿਆ"
-
-#~ msgid "I am applying to join"
-#~ msgstr "ਮੈਂ ਜੁਆਇੰਨ ਕਰਨ ਵਾਸਤੇ ਅਪਲਾਈ ਕੀਤਾ"
-
-#~ msgid "You have successfully left the group"
-#~ msgstr "ਤੁਸੀਂ ਗਰੁੱਪ ਛੱਡ ਦਿੱਤਾ ਹੈ।"
-
-#~ msgid "QQ Group Auth"
-#~ msgstr "QQ ਗਰੁੱਪ ਪਰਮਾਣ"
-
-#~ msgid "Your authorization request has been accepted by the QQ server"
-#~ msgstr "ਤੁਹਾਡੀ ਪਰਮਾਣਿਕਤਾ ਮੰਗ ਨੂੰ QQ ਸਰਵਰ ਵਲੋਂ ਮਨਜ਼ੂਰ ਕੀਤਾ ਗਿਆ ਹੈ।"
-
-#~ msgid "Code [0x%02X]: %s"
-#~ msgstr "ਕੋਡ [0x%02X]: %s"
-
-#~ msgid "Group Operation Error"
-#~ msgstr "ਗਰੁੱਪ ਓਪਰੇਸ਼ਨ ਗਲਤੀ"
-
-#~ msgid "Enter your reason:"
-#~ msgstr "ਆਪਣਾ ਕਾਰਨ ਦਿਓ:"
-
-#~ msgid "Error requesting login token"
-#~ msgstr "ਲਾਗਇਨ ਟੋਕਨ ਮੰਗ ਗਲਤੀ"
-
-#~ msgid "Unable to login, check debug log"
-#~ msgstr "ਲਾਗਇਨ ਕਰਨ ਲਈ ਅਸਮਰੱਥ, ਡੀਬੱਗ ਲਾਗ ਵੇਖੋ"
-
-#~ msgid "TCP Address"
-#~ msgstr "TCP ਐਡਰੈੱਸ"
-
-#~ msgid "UDP Address"
-#~ msgstr "UDP ਐਡਰੈੱਸ"
-
-#~ msgid "Show Login Information"
-#~ msgstr "ਲਾਗਇਨ ਜਾਣਕਾਰੀ ਵੇਖੋ"
-
-#~ msgid "Login failed, no reply"
-#~ msgstr "ਲਾਗਇਨ ਫੇਲ੍ਹ, ਕੋਈ ਜਵਾਬ ਨਹੀਂ"
-
-#~ msgid "User %s rejected your request"
-#~ msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਡੀ ਮੰਗ ਨਾ ਮਨਜ਼ੂਰ ਕੀਤੀ ਹੈ"
-
-#~ msgid "User %s approved your request"
-#~ msgstr "ਯੂਜ਼ਰ %s ਨੇ ਤੁਹਾਡੀ ਮੰਗ ਮੰਨ ਲਈ ਹੈ"
-
-#~ msgid "Cannot find/access ~/.silc directory"
-#~ msgstr "~/.silc ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਲੱਭੀ/ਵਰਤੀ ਜਾ ਸਕਦੀ"
-
-#~ msgid "%s changed status from %s to %s"
-#~ msgstr "%s ਨੇ ਹਾਲਤ %s ਤੋਂ %s ਬਦਲਿਆ ਹੈ"
-
-#~ msgid "%s is now %s"
-#~ msgstr "%s ਹੁਣ %s"
-
-#~ msgid "%s is no longer %s"
-#~ msgstr "%s ਹੁਣ %s ਨਹੀਂ ਰਿਹਾ"
-
-#~ msgid "Screen _name:"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ(_n):"
-
-#~ msgid "_Merge"
-#~ msgstr "ਮਿਲਾਨ(_M):"
-
-#~ msgid "<span color=\"red\">%s disconnected: %s</span>"
-#~ msgstr "<span color=\"red\">%s ਅਕਾਊਂਟ ਬੰਦ ਕੀਤਾ: %s</span>"
-
-#~ msgid ""
-#~ "Please enter the screen name of the person you would like to add to your "
-#~ "buddy list. You may optionally enter an alias, or nickname,  for the "
-#~ "buddy. The alias will be displayed in place of the screen name whenever "
-#~ "possible.\n"
-#~ msgstr ""
-#~ "ਵਿਅਕਤੀ ਦਾ ਸਕਰੀਨ ਨਾਂ ਦਿਓ, ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਤੁਸੀਂ "
-#~ "ਬੱਡੀ ਲਈ ਚੋਣਵੇਂ ਰੂਪ ਵਿੱਚ ਏਲੀਆਸ ਜਾਂ ਛੋਟਾ ਨਾਂ ਦੇ ਸਕਦੇ ਹੋ। ਏਲੀਆਸ ਨੂੰ ਸਕਰੀਨ ਨਾਂ ਦੀ ਬਜਾਏ ਵਰਤਿਆ "
-#~ "ਜਾਵੇਗਾ, ਜਦੋਂ ਵੀ ਸੰਭਵ ਹੋਵੇਗਾ।\n"
-
-#~ msgid "A_ccount:"
-#~ msgstr "ਅਕਾਊਂਟ(_c):"
-
-#~ msgid "_Screen name:"
-#~ msgstr "ਸਕਰੀਨ ਨਾਂ(_S):"
-
-#~ msgid ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s will not attempt to reconnect the account until you correct the error "
-#~ "and re-enable the account."
-#~ msgstr ""
-#~ "%s\n"
-#~ "\n"
-#~ "%s ਅਕਾਊਂਟ ਨਾਲ ਕੁਨੈਕਟ ਹੋਣ ਦੀ ਉਦੋਂ ਤੱਕ ਕੋਸ਼ਿਸ਼ ਨਹੀਂ ਕਰੇਗਾ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਗਲਤੀ ਠੀਕ ਨਹੀਂ ਕਰਕੇ "
-#~ "ਅਕਾਊਂਟ ਮੁੜ-ਯੋਗ ਨਹੀਂ ਕਰਦੇ।"
-
-#~ msgid "User has typed something and stopped"
-#~ msgstr "ਯੂਜ਼ਰ ਨੇ ਕੁਝ ਲਿਖਿਆ ਅਤੇ ਰੁਕ ਗਿਆ/ਗਈ"
-
-#~ msgid ""
-#~ "You are about to remove the contact containing %s and %d other buddy from "
-#~ "your buddy list.  Do you want to continue?You are about to remove the "
-#~ "contact containing %s and %d other buddies from your buddy list.  Do you "
-#~ "want to continue?"
-#~ msgstr ""
-#~ "ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %s ਅਤੇ %d ਹੋਰ ਬੱਡੀ ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਹਟਾਉਣ ਜਾ ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ "
-#~ "ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?ਤੁਸੀਂ ਆਪਣੀ ਬੱਡੀ ਲਿਸਟ ਵਿੱਚ %sਅਤੇ %d ਹੋਰ ਬੱਡੀ ਰੱਖਣ ਵਾਲਾ ਸੰਪਰਕ ਹਟਾਉਣ ਜਾ "
-#~ "ਰਹੇ ਹੋ। ਕੀ ਤੁਸੀਂ ਹਟਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#~ msgid ""
-#~ "%s%s<span weight=\"bold\">Written by:</span>\t%s\n"
-#~ "<span weight=\"bold\">Website:</span>\t\t%s\n"
-#~ "<span weight=\"bold\">Filename:</span>\t\t%s"
-#~ msgstr ""
-#~ "%s%s<span weight=\"bold\">ਲਿਖੀ:</span>\t%s\n"
-#~ "<span weight=\"bold\">ਵੈੱਬਸਾਇਟ:</span>\t\t%s\n"
-#~ "<span weight=\"bold\">ਫਾਇਲ ਨਾਂ:</span>\t\t%s"
-
-#~ msgid "Display Statistics"
-#~ msgstr "ਅੰਕੜੇ ਵੇਖੋ"
-
-#~ msgid ""
-#~ "The contact availability plugin (cap) is used to display statistical "
-#~ "information about buddies in a users contact list."
-#~ msgstr ""
-#~ "ਸੰਪਰਕ ਉਪਲਬਧਤਾ ਅਨੁਮਾਨ (cap) ਇੱਕ ਯੂਜ਼ਰ ਸੰਪਰਕ ਲਿਸਟ ਵਿੱਚ ਬੱਡੀ ਬਾਰੇ ਅੰਕੜੇ ਵੇਖਾਉਣ ਲਈ ਵਰਤੀ "
-#~ "ਜਾਂਦੀ ਹੈ।"
--- a/po/pt_BR.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/pt_BR.po	Wed Mar 04 16:52:47 2009 +0000
@@ -8,8 +8,8 @@
 msgstr ""
 "Project-Id-Version: Pidgin\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-04 09:58-0500\n"
-"PO-Revision-Date: 2009-01-05 12:42-0300\n"
+"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"PO-Revision-Date: 2009-02-24 22:11-0300\n"
 "Last-Translator: Rodrigo Luiz Marques Flores <mail@rodrigoflores.org>\n"
 "Language-Team: Rodrigo Luiz Marques Flores <mail@rodrigoflores.org>\n"
 "MIME-Version: 1.0\n"
@@ -32,7 +32,7 @@
 "Usage: %s [OPTION]...\n"
 "\n"
 "  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
+"  -d, --debug         print debugging messages to stderr\n"
 "  -h, --help          display this help and exit\n"
 "  -n, --nologin       don't automatically login\n"
 "  -v, --version       display the current version and exit\n"
@@ -40,8 +40,8 @@
 "%s\n"
 "Uso: %s [OPÇÃO]...\n"
 "\n"
-"  -c, --config=DIR    use o diretório DIR para os arquivos de configuração\n"
-"  -d, --debug         imprima mensagens de depuração para a saída padrão\n"
+"  -c, --config=DIR    utilize o DIR para os arquivos de configuração\n"
+"  -d, --debug         imprima mensagens de depuração para a saída de erro\n"
 "  -h, --help          exiba esta ajuda e saia\n"
 "  -n, --nologin       não conecte automaticamente\n"
 "  -v, --version       exiba a versão atual e saia\n"
@@ -1118,6 +1118,7 @@
 msgid "%s has sent you a message. (%s)"
 msgstr "%s te enviou uma mensagem. (%s)"
 
+#, c-format
 msgid "Unknown pounce event. Please report this!"
 msgstr "Evento de ação desconhecido. Por favor reporte isso!"
 
@@ -1163,7 +1164,6 @@
 msgid "Change status to"
 msgstr "Mudar status para"
 
-#. Conversations
 msgid "Conversations"
 msgstr "Conversas"
 
@@ -1829,6 +1829,7 @@
 "Erro ao ler do processo de resolução:\n"
 "%s"
 
+#, c-format
 msgid "Resolver process exited without answering our request"
 msgstr "Processo que resolve fechou sem responder nossa requisição"
 
@@ -2842,7 +2843,6 @@
 "Não foi possível estabelecer conexão com o servidor mDNS local. Ele está "
 "rodando?"
 
-#. Creating the options for the protocol
 msgid "First name"
 msgstr "Nome"
 
@@ -2874,6 +2874,10 @@
 msgid "Purple Person"
 msgstr "Pessoa púrpura"
 
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "Porta local"
+
 msgid "Bonjour"
 msgstr "Bonjour"
 
@@ -4680,9 +4684,6 @@
 msgid "Select an action"
 msgstr "Selecione uma ação"
 
-msgid "Unable to retrieve MSN Address Book"
-msgstr "Falha ao obter catálogo de endereços do MSN"
-
 #. 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
@@ -4716,165 +4717,218 @@
 "%s está na lista local, mas não está na lista do servidor. Você deseja "
 "adicionar este amigo?"
 
+#, c-format
 msgid "Unable to parse message"
 msgstr "Não foi possível processar mensagem"
 
+#, c-format
 msgid "Syntax Error (probably a client bug)"
 msgstr "Erro de sintaxe (provavelmente um bug do cliente)"
 
+#, c-format
 msgid "Invalid email address"
 msgstr "Endereço de email inválido"
 
+#, c-format
 msgid "User does not exist"
 msgstr "Usuário inexistente"
 
+#, c-format
 msgid "Fully qualified domain name missing"
 msgstr "Faltando nome de domínio totalmente qualificado"
 
+#, c-format
 msgid "Already logged in"
 msgstr "Você já está conectado"
 
+#, c-format
 msgid "Invalid username"
 msgstr "Nome de usuário inválido"
 
+#, c-format
 msgid "Invalid friendly name"
 msgstr "Apelido inválido"
 
+#, c-format
 msgid "List full"
 msgstr "Lista cheia"
 
+#, c-format
 msgid "Already there"
 msgstr "Já está lá"
 
+#, c-format
 msgid "Not on list"
 msgstr "Não está na lista"
 
+#, c-format
 msgid "User is offline"
 msgstr "Usuário está desconectado"
 
+#, c-format
 msgid "Already in the mode"
 msgstr "Você já está nesse modo"
 
+#, c-format
 msgid "Already in opposite list"
 msgstr "Usuário já está na lista oposta"
 
+#, c-format
 msgid "Too many groups"
 msgstr "Excesso de grupos"
 
+#, c-format
 msgid "Invalid group"
 msgstr "Grupo inválido"
 
+#, c-format
 msgid "User not in group"
 msgstr "O usuário não está no grupo"
 
+#, c-format
 msgid "Group name too long"
 msgstr "Nome do grupo muito extenso."
 
+#, c-format
 msgid "Cannot remove group zero"
 msgstr "Não foi possível remover o grupo zero"
 
+#, c-format
 msgid "Tried to add a user to a group that doesn't exist"
 msgstr "Você tentou adicionar um usuário a um grupo que não existe"
 
+#, c-format
 msgid "Switchboard failed"
 msgstr "O quadro de comunicações falhou"
 
+#, c-format
 msgid "Notify transfer failed"
 msgstr "A notificação de transferência falhou"
 
+#, c-format
 msgid "Required fields missing"
 msgstr "Campos requeridos não foram preenchidos"
 
+#, c-format
 msgid "Too many hits to a FND"
 msgstr "Acessos demais a um FND"
 
+#, c-format
 msgid "Not logged in"
 msgstr "Desconectado"
 
+#, c-format
 msgid "Service temporarily unavailable"
 msgstr "Serviço temporariamente indisponível"
 
+#, c-format
 msgid "Database server error"
 msgstr "Erro do servidor de banco de dados"
 
+#, c-format
 msgid "Command disabled"
 msgstr "Comando desativado"
 
+#, c-format
 msgid "File operation error"
 msgstr "Erro ao executar operação de arquivo"
 
+#, c-format
 msgid "Memory allocation error"
 msgstr "Erro de alocação de memória"
 
+#, c-format
 msgid "Wrong CHL value sent to server"
 msgstr "Valor CHL incorreto enviado para o servidor"
 
+#, c-format
 msgid "Server busy"
 msgstr "Servidor ocupado"
 
+#, c-format
 msgid "Server unavailable"
 msgstr "Servidor indisponível"
 
+#, c-format
 msgid "Peer notification server down"
 msgstr "O servidor de notificação de pares está fora do ar"
 
+#, c-format
 msgid "Database connect error"
 msgstr "Erro ao conectar ao banco de dados"
 
+#, c-format
 msgid "Server is going down (abandon ship)"
 msgstr "O servidor vai sair do ar (abandonar navio)"
 
+#, c-format
 msgid "Error creating connection"
 msgstr "Erro ao criar a conexão"
 
+#, c-format
 msgid "CVR parameters are either unknown or not allowed"
 msgstr "Parâmetros CVR desconhecidos ou não permitidos"
 
+#, c-format
 msgid "Unable to write"
 msgstr "Não foi possível enviar"
 
+#, c-format
 msgid "Session overload"
 msgstr "Sessão sobrecarregada"
 
+#, c-format
 msgid "User is too active"
 msgstr "O usuário está muito ativo"
 
+#, c-format
 msgid "Too many sessions"
 msgstr "Excesso de sessões"
 
+#, c-format
 msgid "Passport not verified"
 msgstr "Conta do Passport não verificada"
 
+#, c-format
 msgid "Bad friend file"
 msgstr "Arquivo de amigos mal formado"
 
+#, c-format
 msgid "Not expected"
 msgstr "Inesperado"
 
+#, c-format
 msgid "Friendly name changes too rapidly"
 msgstr "O apelido foi mudado rapidamente demais"
 
+#, c-format
 msgid "Server too busy"
 msgstr "Servidor ocupado demais"
 
+#, c-format
 msgid "Authentication failed"
 msgstr "Autenticação mal sucedida"
 
+#, c-format
 msgid "Not allowed when offline"
 msgstr "Não permitido enquanto desconectado"
 
+#, c-format
 msgid "Not accepting new users"
 msgstr "Usuários novos não estão sendo aceitos"
 
+#, c-format
 msgid "Kids Passport without parental consent"
 msgstr "Passport para crianças sem consentimento dos pais"
 
+#, c-format
 msgid "Passport account not yet verified"
 msgstr "Conta do Passport ainda não foi verificada"
 
 msgid "Passport account suspended"
 msgstr "Conta do Passport suspensa"
 
+#, c-format
 msgid "Bad ticket"
 msgstr "Bilhete inválido"
 
@@ -6464,12 +6518,10 @@
 msgstr "_OK"
 
 #, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"Você pode ser desconectado num curto período de tempo. Você pode querer usar "
-"o TOC até que isso esteja corrigido. Verifique por atualizações em %s."
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr ""
+"Você pode ser desconectado em brevo. Se isso acontecer, verifique "
+"atualizações em %s."
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "Não foi possível conseguir um hash de conexão AIM válido."
@@ -6937,6 +6989,7 @@
 msgid "Get AIM Info"
 msgstr "Ver informações do AIM"
 
+#. We only do this if the user is in our buddy list
 msgid "Edit Buddy Comment"
 msgstr "Editar comentário do amigo"
 
@@ -7523,6 +7576,9 @@
 msgid "<p><b>Acknowledgement</b>:<br>\n"
 msgstr "<p><b>Agradecimento</b>:<br>\n"
 
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Testadores Escrupulosos</b>:<br>\n"
+
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr "<p><i>E, todos os garotos nos bastidores...</i><br>\n"
 
@@ -7548,6 +7604,9 @@
 msgid "About OpenQ"
 msgstr "Sobre o OpenQ"
 
+msgid "Modify Buddy Memo"
+msgstr "Modificar Lembrete do Amigo"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -7585,6 +7644,9 @@
 msgid "Show server news"
 msgstr "Mostrar novidades do servidor"
 
+msgid "Show chat room when msg comes"
+msgstr "Mostrar sala de chat quando enviarem uma mensagem"
+
 msgid "Keep alive interval (seconds)"
 msgstr "Intervalo de keep-alive (segundos)"
 
@@ -8343,6 +8405,7 @@
 msgid "<br><b>Channel Topic:</b><br>%s"
 msgstr "<br><b>Tópico do canal:</b><br>%s"
 
+#, c-format
 msgid "<br><b>Channel Modes:</b> "
 msgstr "<br><b>Modos do canal:</b> "
 
@@ -8367,6 +8430,7 @@
 msgid "Channel Public Keys List"
 msgstr "Lista de chaves públicas do canal"
 
+#, c-format
 msgid ""
 "Channel authentication is used to secure the channel from unauthorized "
 "access. The authentication may be based on passphrase and digital "
@@ -8765,6 +8829,7 @@
 msgid "Your Current Mood"
 msgstr "Seu humor atual"
 
+#, c-format
 msgid "Normal"
 msgstr "Normal"
 
@@ -9148,33 +9213,43 @@
 msgid "No server statistics available"
 msgstr "Estatísticas do servidor indisponíveis"
 
+#, c-format
 msgid "Failure: Version mismatch, upgrade your client"
 msgstr "Falha: Versões incompatíveis, atualize seu cliente"
 
+#, c-format
 msgid "Failure: Remote does not trust/support your public key"
 msgstr "Falha: O usuário remoto não confia/suporta sua chave pública."
 
+#, c-format
 msgid "Failure: Remote does not support proposed KE group"
 msgstr "Falha: O usuário remoto não suporta o grupo KE proposto."
 
+#, c-format
 msgid "Failure: Remote does not support proposed cipher"
 msgstr "Falha: O usuário remoto não suporta a cifra proposta"
 
+#, c-format
 msgid "Failure: Remote does not support proposed PKCS"
 msgstr "Falha: O usuário remoto não suporta o PKCS proposto"
 
+#, c-format
 msgid "Failure: Remote does not support proposed hash function"
 msgstr "Falha: O usuário remoto não suporta a função de hash proposta"
 
+#, c-format
 msgid "Failure: Remote does not support proposed HMAC"
 msgstr "Falha: O usuário remoto não suporta o HMAC proposto"
 
+#, c-format
 msgid "Failure: Incorrect signature"
 msgstr "Falha: Assinatura incorreta"
 
+#, c-format
 msgid "Failure: Invalid cookie"
 msgstr "Falha: Cookie inválido"
 
+#, c-format
 msgid "Failure: Authentication failed"
 msgstr "Falha: Autenticação mal sucedida"
 
@@ -9274,6 +9349,7 @@
 msgid "Warning of %s not allowed."
 msgstr "Alertar %s não é permitido."
 
+#, c-format
 msgid "A message has been dropped, you are exceeding the server speed limit."
 msgstr ""
 "Uma mensagem foi descartada, você está excedendo o limite de velocidade do "
@@ -9298,30 +9374,39 @@
 "Você perdeu uma mensagem de mensagem instantânea de %s porque ela foi "
 "enviada muito rapidamente."
 
+#, c-format
 msgid "Failure."
 msgstr "Falha."
 
+#, c-format
 msgid "Too many matches."
 msgstr "Excesso de resultados."
 
+#, c-format
 msgid "Need more qualifiers."
 msgstr "Necessários mais qualificadores."
 
+#, c-format
 msgid "Dir service temporarily unavailable."
 msgstr "Serviço de diretório temporariamente indisponível."
 
+#, c-format
 msgid "Email lookup restricted."
 msgstr "Pesquisa por email restrita."
 
+#, c-format
 msgid "Keyword ignored."
 msgstr "Palavra-chave ignorada."
 
+#, c-format
 msgid "No keywords."
 msgstr "Nenhuma palavra-chave."
 
+#, c-format
 msgid "User has no directory information."
 msgstr "Usuário não tem informação de diretório."
 
+#, c-format
 msgid "Country not supported."
 msgstr "País não suportado."
 
@@ -9329,16 +9414,20 @@
 msgid "Failure unknown: %s."
 msgstr "Falha desconhecida: %s."
 
+#, c-format
 msgid "Incorrect username or password."
 msgstr "Nome de usuário ou senha incorreto(a)."
 
+#, c-format
 msgid "The service is temporarily unavailable."
 msgstr "O serviço está temporariamente indisponível."
 
+#, c-format
 msgid "Your warning level is currently too high to log in."
 msgstr ""
 "Seu nível de alerta é alto demais para que você possa se conectar no momento."
 
+#, c-format
 msgid ""
 "You have been connecting and disconnecting too frequently.  Wait ten minutes "
 "and try again.  If you continue to try, you will need to wait even longer."
@@ -10168,22 +10257,27 @@
 msgstr "(%s)"
 
 #. 10053
+#, c-format
 msgid "Connection interrupted by other software on your computer."
 msgstr "Conexão interrompida por outro software no seu computador."
 
 #. 10054
+#, c-format
 msgid "Remote host closed connection."
 msgstr "O usuário remoto encerrou a conexão."
 
 #. 10060
+#, c-format
 msgid "Connection timed out."
 msgstr "Tempo limite de conexão esgotado."
 
 #. 10061
+#, c-format
 msgid "Connection refused."
 msgstr "Conexão rejeitada."
 
 #. 10048
+#, c-format
 msgid "Address already in use."
 msgstr "O endereço já está em uso"
 
@@ -11295,6 +11389,9 @@
 msgid "Macedonian"
 msgstr "Macedônio"
 
+msgid "Mongolian"
+msgstr "Mongol"
+
 msgid "Bokmål Norwegian"
 msgstr "Dano-Norueguês"
 
@@ -11407,8 +11504,33 @@
 "contribuidoes. Veja o arquivo 'COPYRIGHT' para uma lista completa destes "
 "contribuidores. Não oferecemos nenhuma garantia para este programa.<BR><BR>"
 
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr "<FONT SIZE=\"4\">IRC:</FONT> #pidgin no irc.freenode.net<BR><BR>"
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">Ajuda por e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">Canal do IRC:</FONT> #pidgin no irc.freenode.net<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">MUC(Multi User Chat) do XMPP:</FONT> devel@conference."
+"pidgin.im <BR><BR>"
 
 msgid "Current Developers"
 msgstr "Desenvolvedores atuais"
@@ -11768,9 +11890,11 @@
 msgid "Save Image"
 msgstr "Salvar imagem"
 
+#, c-format
 msgid "_Save Image..."
 msgstr "_Salvar imagem..."
 
+#, c-format
 msgid "_Add Custom Smiley..."
 msgstr "Exibir emoticons personalizados"
 
@@ -12064,6 +12188,10 @@
 msgid "Pidgin"
 msgstr "Pidgin"
 
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr "Saindo porque outro cliente libpurple já está sendo executado.\n"
+
 msgid "Open All Messages"
 msgstr "Abrir todas as mensagens"
 
@@ -12404,6 +12532,10 @@
 msgid "No proxy"
 msgstr "Nenhum proxy"
 
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "Usar DNS remoto com proxies SOCKS4"
+
 msgid "_User:"
 msgstr "_Usuário:"
 
@@ -12484,21 +12616,27 @@
 msgid "Sound Selection"
 msgstr "Seleção de som"
 
+#, c-format
 msgid "Quietest"
 msgstr "Muito silencioso"
 
+#, c-format
 msgid "Quieter"
 msgstr "Mais silencioso"
 
+#, c-format
 msgid "Quiet"
 msgstr "Silencioso"
 
+#, c-format
 msgid "Loud"
 msgstr "Alto"
 
+#, c-format
 msgid "Louder"
 msgstr "Mais alto"
 
+#, c-format
 msgid "Loudest"
 msgstr "Muito alto"
 
@@ -13511,6 +13649,7 @@
 msgid "Select Color"
 msgstr "Selecionar cor"
 
+#, c-format
 msgid "Select Interface Font"
 msgstr "Selecionar fonte da interface"
 
@@ -13738,6 +13877,7 @@
 msgid "Timestamp Format Options"
 msgstr "Opções de formatação da marcação de tempo"
 
+#, c-format
 msgid "_Force 24-hour time format"
 msgstr "_Forçar formato de data 24-horas"
 
@@ -13857,9 +13997,6 @@
 msgid "Only when docked"
 msgstr "Apenas quando ancorado"
 
-msgid "_Flash window when chat messages are received"
-msgstr "_Piscar a janela quando mensagens de bate-papo forem recebidas"
-
 msgid "Windows Pidgin Options"
 msgstr "Opções do Pidgin para Windows"
 
@@ -13909,6 +14046,20 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "Este plug-in é útil para depurar servidores ou clientes XMPP."
 
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "Falha ao obter catálogo de endereços do MSN"
+
+#~ msgid ""
+#~ "You may be disconnected shortly.  You may want to use TOC until this is "
+#~ "fixed.  Check %s for updates."
+#~ msgstr ""
+#~ "Você pode ser desconectado num curto período de tempo. Você pode querer "
+#~ "usar o TOC até que isso esteja corrigido. Verifique por atualizações em %"
+#~ "s."
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "_Piscar a janela quando mensagens de bate-papo forem recebidas"
+
 #~ msgid "Connection to server lost (no data received within %d second)"
 #~ msgid_plural ""
 #~ "Connection to server lost (no data received within %d seconds)"
--- a/po/ru.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/ru.po	Wed Mar 04 16:52:47 2009 +0000
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: ru\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-02-22 16:18-0500\n"
+"POT-Creation-Date: 2009-03-01 19:00-0500\n"
 "PO-Revision-Date: 2008-05-14 15:00+0400\n"
 "Last-Translator: Антон Самохвалов <samant.ua@mail.ru>\n"
 "Language-Team: \n"
@@ -23,7 +23,7 @@
 #. Translators may want to transliterate the name.
 #. It is not to be translated.
 msgid "Finch"
-msgstr "Finch"
+msgstr "Зяблик"
 
 #, c-format
 msgid "%s. Try `%s -h' for more information.\n"
@@ -740,6 +740,12 @@
 "background&gt;: black, red, green, blue, white, gray, darkgray, magenta, "
 "cyan, default<br><br>EXAMPLE:<br>    msgcolor send cyan default"
 msgstr ""
+"цвет сообщения &lt;класс&gt; &lt;передний план&gt; &lt;фон&gt;: Установите "
+"цвет для различных классов сообщений в окне общения.<br>    &lt;класс&gt;: "
+"получить, отправить, подсветить, действие, фиксация времени<br>    &lt; "
+"передний план/фон&gt;: чёрный, красный, зелёный, синий, белый, серый, тёмно-"
+"серый, пурпурный, голубой, по умолчанию<br><br>ПРИМЕР:<br>    цвет сообщения "
+"отправки по умолчанию голубой"
 
 msgid "Unable to open file."
 msgstr "Не удаётся открыть файл."
@@ -1197,7 +1203,7 @@
 msgstr "Выбрать местоположение..."
 
 msgid "Hit 'Enter' to find more rooms of this category."
-msgstr ""
+msgstr "Щёлкните 'Enter', чтобы найти больше комнат этой категории."
 
 msgid "Get"
 msgstr "Получить"
@@ -1509,7 +1515,7 @@
 msgstr "В сети/Не в сети"
 
 msgid "Meebo"
-msgstr ""
+msgstr "Мибо"
 
 msgid "No Grouping"
 msgstr "Нет объединения"
@@ -2145,7 +2151,7 @@
 
 #, c-format
 msgid "Plugin magic mismatch %d (need %d)"
-msgstr ""
+msgstr "Магическое несоответствие модуля %d (нужно %d)"
 
 #, c-format
 msgid "ABI version mismatch %d.%d.x (need %d.%d.x)"
@@ -2155,7 +2161,7 @@
 msgid ""
 "Plugin does not implement all required functions (list_icon, login and close)"
 msgstr ""
-"Модуль не реализует всех требуемых функций (list_icon, login and close)"
+"Модуль не реализует всех требуемых функций (список _иконок, вход и закрытие)"
 
 #, c-format
 msgid ""
@@ -2428,6 +2434,8 @@
 "This plugin hides join/part messages in large rooms, except for those users "
 "actively taking part in a conversation."
 msgstr ""
+"Этот модуль прячет сообщения подсоединения/обособления в больших комнатах, "
+"кроме тех пользователей, которые активно принимают участие в общении."
 
 #. This is used in the place of a timezone abbreviation if the
 #. * offset is way off.  The user should never really see it, but
@@ -3406,7 +3414,7 @@
 
 #, c-format
 msgid "Wallops from %s"
-msgstr ""
+msgstr "Грохот от %s"
 
 msgid "action &lt;action to perform&gt;:  Perform an action."
 msgstr "action &lt;действие для выполнения&gt;:  Выполнить действие."
@@ -7330,6 +7338,38 @@
 msgid "Could not change buddy information."
 msgstr "Не могу изменить информацию о собеседнике."
 
+msgid "Mobile"
+msgstr "Мобильный"
+
+msgid "Note"
+msgstr "Заметки"
+
+#. callback
+#, fuzzy
+msgid "Buddy Memo"
+msgstr "Значок собеседника"
+
+msgid "Change his/her memo as you like"
+msgstr ""
+
+#, fuzzy
+msgid "_Modify"
+msgstr "Изменить"
+
+#, fuzzy
+msgid "Memo Modify"
+msgstr "Изменить"
+
+#, fuzzy
+msgid "Server says:"
+msgstr "Сервер занят"
+
+msgid "Your request was accepted."
+msgstr ""
+
+msgid "Your request was rejected."
+msgstr ""
+
 #, fuzzy, c-format
 msgid "%u requires verification"
 msgstr "%u требует подтверждения"
@@ -7671,6 +7711,10 @@
 msgid "<p><b>Acknowledgement</b>:<br>\n"
 msgstr "<p><b>Подтверждение</b>:<br>\n"
 
+#, fuzzy
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>Исходный автор</b>:<br>\n"
+
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr "<p><i>И все мальчики в задней комнате...</i><br>\n"
 
@@ -7699,6 +7743,10 @@
 msgid "About OpenQ"
 msgstr "Об OpenQ"
 
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "Изменить адрес"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -8737,9 +8785,6 @@
 msgid "Unit"
 msgstr "Отдел"
 
-msgid "Note"
-msgstr "Заметки"
-
 msgid "Join Chat"
 msgstr "Присоединиться к чату"
 
@@ -10234,9 +10279,6 @@
 msgid "Extended away"
 msgstr "Расширенный \"Отошёл\""
 
-msgid "Mobile"
-msgstr "Мобильный"
-
 msgid "Listening to music"
 msgstr "Слушает музыку"
 
@@ -10502,7 +10544,7 @@
 msgstr "Не удаётся сохранить новую учётную запись"
 
 msgid "An account already exists with the specified criteria."
-msgstr ""
+msgstr "Учётная запись с указанными критериями уже существует."
 
 msgid "Add Account"
 msgstr "Добавить учётную запись"
@@ -11082,7 +11124,7 @@
 msgstr "Изменить размер"
 
 msgid "Show All"
-msgstr ""
+msgstr "Показать всё"
 
 #. Conversation menu
 msgid "/_Conversation"
@@ -13889,7 +13931,7 @@
 
 #, c-format
 msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "You can upgrade to %s %s today."
 
 msgid "New Version Available"
 msgstr "Доступна новая версия"
--- a/po/zh_HK.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/zh_HK.po	Wed Mar 04 16:52:47 2009 +0000
@@ -5,7 +5,7 @@
 # Copyright (C) 2003-2008, Ambrose C. Li <acli@ada.dhs.org>
 #
 # This file is distributed under the same license as the "Pidgin" package.
-# $InternalId: zh_TW.po,v 1.553 2008/09/30 05:14:21 acli Exp $
+# $InternalId: zh_TW.po,v 1.562 2009/02/27 04:50:13 acli Exp $
 #
 # ----------------------------------------------------------
 # For internal use only:
@@ -43,18 +43,17 @@
 # NOTE  以前分「Deny」(拒絕) 和「Block」(封鎖),現在不分了
 # NOTE  拒絕可以說等同於封鎖和某一個使用者的聯繫,有時用封鎖比較好。
 # NOTE  MSN6.0中文版對「Block」一詞的譯文為「封鎖」
-# XXX   Stream 暫譯「串流」,應該不是「通道」
 # NOTE  nplurals 重設為 2,因為部分原文要分辨例如「它」及「它們」一類的字眼
 # NOTE 所有語文名稱(除「世界語」外)一概譯成「XX文」,不譯「XX語」,因為寫下的是文,不是語
 # ----------------------------------------------------------
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Pidgin 2.5.2\n"
+"Project-Id-Version: Pidgin 2.5.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-18 01:17-0800\n"
-"PO-Revision-Date: 2008-12-17 12:15+0800\n"
-"Last-Translator: Paladin R. Liu <paladin@ms1.hinet.net>\n"
+"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"PO-Revision-Date: 2009-02-25 09:57-0500\n"
+"Last-Translator: Ambrose Li <ambrose.li@gmail.com>\n"
 "Language-Team: Chinese (Hong Kong) <community@linuxhall.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -77,7 +76,7 @@
 "Usage: %s [OPTION]...\n"
 "\n"
 "  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
+"  -d, --debug         print debugging messages to stderr\n"
 "  -h, --help          display this help and exit\n"
 "  -n, --nologin       don't automatically login\n"
 "  -v, --version       display the current version and exit\n"
@@ -86,7 +85,7 @@
 "使用方法: %s [選項]...\n"
 "\n"
 "  -c, --config=DIR    設定檔所在目錄\n"
-"  -d, --debug         在標準輸出中顯示除錯訊息\n"
+"  -d, --debug         在標準錯誤輸出中顯示除錯訊息\n"
 "  -h, --help          顯示輔助訊息並離開\n"
 "  -n, --nologin       不自動登入\n"
 "  -v, --version       顯示版本訊息並離開\n"
@@ -238,14 +237,16 @@
 msgid "The selected account is not online."
 msgstr "所指定的帳號目前沒有連線。"
 
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Error adding buddy"
 msgstr "新增好友途中發生了錯誤"
 
 msgid "Username"
 msgstr "使用者"
 
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Alias (optional)"
-msgstr "別名(可以不填)"
+msgstr "別名(選用)"
 
 # XXX 譯文可能不太通順 - acli 20080229
 msgid "Add in group"
@@ -285,7 +286,7 @@
 msgstr "如果要繼續修改其他細節,請用快顯選單。"
 
 msgid "Error adding group"
-msgstr "新增羣組途中發生了錯誤"
+msgstr "新增羣組發生了錯誤"
 
 msgid "You must give a name for the group to add."
 msgstr "請給你新增的羣組輸入名稱。"
@@ -871,9 +872,9 @@
 msgid "The file was saved as %s."
 msgstr "成功存檔至 %s。"
 
-# XXX 20080508 acli
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Sending"
-msgstr "送出中"
+msgstr "傳送中"
 
 # XXX 20080508 acli
 msgid "Receiving"
@@ -1216,7 +1217,6 @@
 msgid "Change status to"
 msgstr "更改狀態為"
 
-#. Conversations
 msgid "Conversations"
 msgstr "交談"
 
@@ -1333,14 +1333,18 @@
 msgid "Sounds when conversation has focus"
 msgstr "當交談取得輸入焦點發出音效"
 
+# XXX: 務必 聽起來不太恰當。這裡是指 Enable Sound 的選項 - c9s, 08 Dec 27 12/27/2008
+# XXX 「務必」不只指 Enable Sound,也在其他地方用到,改譯「完全啟用」不行 - 20090226 acli
 msgid "Always"
 msgstr "務必"
 
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Only when available"
-msgstr "上線而非離開期間"
-
+msgstr "狀態為上線時"
+
+# XXX: 離開區間? - c9s, 08 Dec 27 12/27/2008
 msgid "Only when not available"
-msgstr "離開期間"
+msgstr "狀態為非上線時"
 
 msgid "Volume(0-100):"
 msgstr "音量(0-100):"
@@ -1539,7 +1543,6 @@
 "conversation into the current conversation."
 msgstr "當新的交談開啟時,這個模組將會把上次的交談內容也顯示出來。"
 
-#, c-format
 msgid "Online"
 msgstr "上線"
 
@@ -1986,7 +1989,6 @@
 msgid "Transfer of file %s complete"
 msgstr "檔案 %s 傳送完畢"
 
-#, c-format
 msgid "File transfer complete"
 msgstr "檔案傳輸完畢"
 
@@ -1994,7 +1996,6 @@
 msgid "You canceled the transfer of %s"
 msgstr "你取消了 %s 的傳送"
 
-#, c-format
 msgid "File transfer cancelled"
 msgstr "檔案傳輸已取消"
 
@@ -2185,7 +2186,6 @@
 msgid "You are using %s, but this plugin requires %s."
 msgstr "你目前使用的是 %s,但這模組需要 %s。"
 
-#, c-format
 msgid "This plugin has not defined an ID."
 msgstr "這個模組未有定義它的 ID。"
 
@@ -2897,7 +2897,6 @@
 "Unable to establish connection with the local mDNS server.  Is it running?"
 msgstr "無法與近端的 mDNS 伺服器建立連線。它在執行中嗎?"
 
-#. Creating the options for the protocol
 msgid "First name"
 msgstr "名"
 
@@ -2931,6 +2930,10 @@
 msgid "Purple Person"
 msgstr "聯絡人"
 
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "本地端通訊埠"
+
 # NOTE 這是通訊協定名稱,不是問候語
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -3094,7 +3097,6 @@
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
-#, c-format
 msgid "Away"
 msgstr "離開"
 
@@ -3912,6 +3914,7 @@
 msgid "User Chatting"
 msgstr ""
 
+# NOTE Jabber 新功能規格
 msgid "User Browsing"
 msgstr "使用者瀏覽"
 
@@ -4019,7 +4022,6 @@
 msgid "Extended Away"
 msgstr "長時間離開"
 
-#, c-format
 msgid "Do Not Disturb"
 msgstr "請勿打擾"
 
@@ -4262,6 +4264,9 @@
 msgid "Re-initializing Stream"
 msgstr "串流重新初始中"
 
+msgid "Server doesn't support blocking"
+msgstr ""
+
 msgid "Not Authorized"
 msgstr "未認證"
 
@@ -4852,9 +4857,6 @@
 msgid "Select an action"
 msgstr "選擇一個動作"
 
-msgid "Unable to retrieve MSN Address Book"
-msgstr "無法讀取 MSN 通訊錄"
-
 #. 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
@@ -5103,7 +5105,6 @@
 msgid "Passport account not yet verified"
 msgstr "護照帳號尚未經過驗證"
 
-#, c-format
 msgid "Passport account suspended"
 msgstr "護照帳號被暫時吊銷"
 
@@ -5122,14 +5123,19 @@
 msgid "MSN Error: %s\n"
 msgstr "MSN 錯誤:%s\n"
 
-#, fuzzy
+# XXX 暫譯,有待改進 - 20090226 acli
+# NOTE: (09時14分13秒 EST) wing: what does "Other Contacts" (msn/group.h:36) actually mean? ..
+# NOTE: (09時24分18秒 EST) khc: I'd probably just translate to 其他人, hehe
+# NOTE: (09時24分44秒 EST) QuLogic: Other Contacts is non-grouped
+# NOTE: (09時25分02秒 EST) QuLogic: which is a group because libpurple doesn't understand non-grouped
 msgid "Other Contacts"
-msgstr "聯絡方法"
-
-# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
-#, fuzzy
+msgstr "沒有羣組的好友"
+
+# XXX 暫譯,有待改進 - 20090226 acli
+# XXX 這可能是MSN的「基本資料連絡人」? 
+# XXX「Buddy」和「Contact」在中文版Pidgin無法析別;可能有改進的空間
 msgid "Non-IM Contacts"
-msgstr "移除這組好友"
+msgstr "非即時訊息的好友"
 
 msgid "Nudge"
 msgstr "呼叫"
@@ -5206,9 +5212,8 @@
 msgid "Playing a game"
 msgstr "正在玩遊戲"
 
-#, fuzzy
 msgid "Working"
-msgstr "工作資料"
+msgstr "正在工作"
 
 msgid "Has you"
 msgstr "你在他(她)的好友清單裏"
@@ -5246,13 +5251,12 @@
 msgid "Album"
 msgstr "專輯名稱"
 
-#, fuzzy
 msgid "Game Title"
-msgstr "樂曲名稱"
-
-#, fuzzy
+msgstr "遊戲名稱"
+
+# XXX 這是盲猜,但MSN「工作資訊」分頁內比較可能對應「Office Title」的應該是這個 - 20090226
 msgid "Office Title"
-msgstr "樂曲名稱"
+msgstr "職位"
 
 msgid "Set Friendly Name..."
 msgstr "設定網名..."
@@ -5445,9 +5449,8 @@
 msgstr ""
 "在這個使用者的個人資料網頁找不到任何可用的資料。這個使用者極有可能並不存在。"
 
-#, fuzzy
 msgid "View web profile"
-msgstr "離線時隱藏"
+msgstr "檢視個人資料網頁"
 
 #. *< type
 #. *< ui_requirement
@@ -5505,9 +5508,9 @@
 msgid "Unable to add user"
 msgstr "無法新增使用者"
 
-#, fuzzy
+# XXX 暫譯 - 20090226
 msgid "The following users are missing from your addressbook"
-msgstr "以下為搜尋結果"
+msgstr "以下使用者不在通訊錄內"
 
 #  TODO 請覆查,譯文有待改進
 #, c-format
@@ -6336,7 +6339,6 @@
 msgid "Error. SSL support is not installed."
 msgstr "錯誤:沒有安裝 SSL 支援。"
 
-#, c-format
 msgid "This conference has been closed. No more messages can be sent."
 msgstr "這個會議已經關閉。無法繼續送出任何訊息。"
 
@@ -6596,6 +6598,7 @@
 msgid "Hiptop"
 msgstr "Hiptop"
 
+# FIXME flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli
 msgid "Security Enabled"
 msgstr "有保安功能"
 
@@ -6618,24 +6621,19 @@
 msgid "Screen Sharing"
 msgstr "螢幕共享"
 
-#, c-format
 msgid "Free For Chat"
 msgstr "我有空聊天"
 
-#, c-format
 msgid "Not Available"
 msgstr "長時間離開"
 
-#, c-format
 msgid "Occupied"
 msgstr "忙碌"
 
 # NOTE 參閱 http://www.geocities.com/Athens/Delphi/6470/icq99.html
-#, c-format
 msgid "Web Aware"
 msgstr "允許其他使用者在網絡上查看你目前的狀態"
 
-#, c-format
 msgid "Invisible"
 msgstr "隱身"
 
@@ -6737,19 +6735,15 @@
 msgstr "確定(_O)"
 
 #, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"你可能會短時間中斷連線。你可能會想在這個問題被修正後使用 TOC。請到 %s 看看有"
-"沒有更新。"
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr "你可能會在短時間內中斷連線。如果屬實,請到 %s 看看有沒有更新。"
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "無法取得有效的 AIM 登入碼。"
 
 #, c-format
 msgid "You may be disconnected shortly.  Check %s for updates."
-msgstr "你可能會短時間中斷連線。請到 %s 看看有沒有更新。"
+msgstr "你可能會在短時間內中斷連線。請到 %s 看看有沒有更新。"
 
 msgid "Unable to get a valid login hash."
 msgstr "無法取得有效的登入雜湊。"
@@ -7180,6 +7174,7 @@
 msgid "Get AIM Info"
 msgstr "取得 AIM 資訊"
 
+#. We only do this if the user is in our buddy list
 msgid "Edit Buddy Comment"
 msgstr "編輯好友說明"
 
@@ -7290,7 +7285,6 @@
 msgid "Attempting to connect to %s:%hu."
 msgstr "正在嘗試連線至 %s:%hu。"
 
-#, c-format
 msgid "Attempting to connect via proxy server."
 msgstr "正在嘗試透過代理伺服器連線。"
 
@@ -7381,16 +7375,15 @@
 msgid "Other"
 msgstr "其他"
 
-#, fuzzy
 msgid "Visible"
-msgstr "隱身"
-
+msgstr "公開"
+
+# XXX 暫譯 - 20090226
 msgid "Friend Only"
-msgstr ""
-
-#, fuzzy
+msgstr "只允許好友"
+
 msgid "Private"
-msgstr "私隱設定"
+msgstr "非公開"
 
 msgid "QQ Number"
 msgstr "QQ 號碼"
@@ -7417,18 +7410,14 @@
 msgid "Personal Introduction"
 msgstr "個人簡介"
 
-#, fuzzy
 msgid "City/Area"
-msgstr "城市"
-
-#, fuzzy
+msgstr "城市/地區"
+
 msgid "Publish Mobile"
-msgstr "個人流動電話"
-
-# XXX 中文譯文無法分別出「Alias Buddy」和「Alias Contact」
-#, fuzzy
+msgstr "刊登流動電話號碼"
+
 msgid "Publish Contact"
-msgstr "為這組好友加上別名"
+msgstr "刊登個人資料"
 
 msgid "College"
 msgstr "大學/大專"
@@ -7445,21 +7434,21 @@
 msgstr "血型"
 
 msgid "True"
-msgstr ""
+msgstr "是"
 
 msgid "False"
-msgstr ""
-
-#, fuzzy
+msgstr "不是"
+
+# FIXME - qq.c is buggy - it uses "Contact" here to mean "personal contact info" - filed ticket #8523
+# FIXME - 原文一詞多義,無法翻譯 - 20090226
 msgid "Modify Contact"
 msgstr "修改帳號"
 
 msgid "Modify Address"
 msgstr "修改地址"
 
-#, fuzzy
 msgid "Modify Extended Information"
-msgstr "修改資訊"
+msgstr "修改詳細資訊"
 
 msgid "Modify Information"
 msgstr "修改資訊"
@@ -7578,12 +7567,9 @@
 msgid "Member"
 msgstr "用戶"
 
-#  XXX 這譯文絶對有問題,但想不到怎樣譯較好 - ambrose 20070415
-#, fuzzy
 msgid "Requesting"
-msgstr "對話視窗 (Request Dialog)"
-
-# #NOTE 根據「plugins/log_reader.c#1971」的訊息來判斷,應該是指一種新式的通訊協定。
+msgstr ""
+
 msgid "Admin"
 msgstr ""
 
@@ -7599,14 +7585,12 @@
 msgid "About me"
 msgstr "關於我"
 
-#, fuzzy
 msgid "Category"
-msgstr "聊天錯誤"
+msgstr "類別"
 
 msgid "The Qun does not allow others to join"
 msgstr "這羣組不容許外人加入"
 
-#, fuzzy
 msgid "Join QQ Qun"
 msgstr "加入羣組"
 
@@ -7671,9 +7655,9 @@
 msgid "%u requested to join Qun %u for %s"
 msgstr "使用者 %d 要求加入羣組 %d"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%u request to join Qun %u"
-msgstr "使用者 %d 要求加入羣組 %d"
+msgstr "使用者 %u 要求加入羣組 %u"
 
 #, c-format
 msgid "Failed to join Qun %u, operated by admin %u"
@@ -7684,9 +7668,9 @@
 msgstr ""
 
 # XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
-#, fuzzy, c-format
+#, c-format
 msgid "<b>Removed buddy %u.</b>"
-msgstr "移除好友"
+msgstr "<b>成功移除好友 %u。</b>"
 
 # XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
 #, c-format
@@ -7720,14 +7704,12 @@
 msgid " FromMobile"
 msgstr " 使用流動通訊器材"
 
-#, fuzzy
 msgid " BindMobile"
 msgstr " 綁定流動通訊器材"
 
 msgid " Video"
 msgstr " 視像"
 
-#, fuzzy
 msgid " Zone"
 msgstr " 區"
 
@@ -7807,21 +7789,20 @@
 msgid "Login Information"
 msgstr "登入資訊"
 
-#, fuzzy
 msgid "<p><b>Original Author</b>:<br>\n"
-msgstr "<b>外部使用者</b><br>"
+msgstr "<p><b>原作者</b>:<br>\n"
 
 msgid "<p><b>Code Contributors</b>:<br>\n"
 msgstr "<p><b>程式碼貢獻者</b>:<br>\n"
 
-#, fuzzy
 msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
-msgstr "<b>最近更新時間:</b>%s<br>\n"
-
-# NOTE qq_data->net_stat.sent,送出的數據封包數量(並非位元組數量)的總計
-#, fuzzy
+msgstr "<p><b>可愛的模組作者</b>:<br>\n"
+
 msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<b>送出封包</b>:%lu 個<br>\n"
+msgstr "<p><b>鳴謝</b>:<br>\n"
+
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>仔細的品管人員</b>:<br>\n"
 
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr "<p><i>還有所有幕後默默貢獻的無名英雄們…</i><br>\n"
@@ -7848,6 +7829,10 @@
 msgid "About OpenQ"
 msgstr "關於 OpenQ"
 
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "修改地址"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -7868,13 +7853,13 @@
 msgstr "選擇伺服器"
 
 msgid "QQ2005"
-msgstr ""
+msgstr "QQ2005"
 
 msgid "QQ2007"
-msgstr ""
+msgstr "QQ2007"
 
 msgid "QQ2008"
-msgstr ""
+msgstr "QQ2008"
 
 msgid "Connect by TCP"
 msgstr "使用 TCP 連線"
@@ -7887,6 +7872,9 @@
 msgid "Show server news"
 msgstr "顯示伺服器是日訊息"
 
+msgid "Show chat room when msg comes"
+msgstr ""
+
 # XXX 20080810 acli - 譯文有待改進,原文也是
 msgid "Keep alive interval (seconds)"
 msgstr "每隔多少秒送出 Keep Alive"
@@ -7900,7 +7888,7 @@
 
 #, c-format
 msgid "Failed requesting token, 0x%02X"
-msgstr ""
+msgstr "請求符記失敗,回應碼「0x%02X」"
 
 #, c-format
 msgid "Invalid token len, %d"
@@ -7908,7 +7896,7 @@
 
 #. extend redirect used in QQ2006
 msgid "Redirect_EX is not currently supported"
-msgstr ""
+msgstr "暫時不支援 Redirect_EX"
 
 #. need activation
 #. need activation
@@ -7978,9 +7966,8 @@
 msgstr "設定使用者資訊..."
 
 # XXX 這是看了原始碼後的結論(但可能會錯)- acli 20080930
-#, fuzzy
 msgid "Requesting token"
-msgstr "送出請求符記中"
+msgstr "請求符記中"
 
 msgid "Couldn't resolve host"
 msgstr "無法解析主機"
@@ -9535,6 +9522,9 @@
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "SIP 的帳號不可含有空白字符或「@」符號"
 
+msgid "SIP connect server not specified"
+msgstr "未有指定 SIP 伺服器"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -11467,8 +11457,10 @@
 msgstr "反向"
 
 # XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
+# XXX flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli
+# NOTE 譯文改動 by c9s
 msgid "Highlight matches"
-msgstr "標示匹配字串"
+msgstr "標示比對字串"
 
 #  NOTE 除錯視窗的工具列的快取選單的指令,指「工具列的按紐以圖示標示」,下二同
 msgid "_Icon Only"
@@ -11513,11 +11505,13 @@
 msgid "Fatal Error"
 msgstr "嚴重錯誤訊息"
 
+# XXX 暫譯 - 20090226 acli
 msgid "bug master"
-msgstr ""
-
+msgstr "除錯主管"
+
+# NOTE 這個「artist」(有別於其他的「Artist」字串)係指設計pidgin圖示的「graphic designer」,絕對不可譯成「藝人」
 msgid "artist"
-msgstr "藝人"
+msgstr "平面設計"
 
 #. feel free to not translate this
 msgid "Ka-Hing Cheung"
@@ -11549,7 +11543,7 @@
 msgstr "支援兼品管"
 
 msgid "XMPP"
-msgstr ""
+msgstr "XMPP"
 
 msgid "original author"
 msgstr "原作者"
@@ -11706,6 +11700,9 @@
 msgid "Macedonian"
 msgstr "馬其頓文"
 
+msgid "Mongolian"
+msgstr "蒙古文"
+
 #  NOTE 譯文不統一,一般似乎偏向音譯,但譯音也不統一
 #  NOTE 音譯包括:博克馬爾、波克默爾、布克莫爾、巴克摩
 #  NOTE 其他譯法包括:丹麥-挪威文(大英百科)、丹麥式挪威文(維基百科)、東挪威文、標準挪威文(國內不是標準,國外是 :P)
@@ -11837,9 +11834,31 @@
 "<BR><BR>"
 
 #, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr ""
-"<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net 上的 #pidgin 頻道<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">常見問題:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/"
+"FAQ\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">電郵支援:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">IRC 頻道</FONT> irc.freenode.net 上的 #pidgin 頻道<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">XMPP 聊天室:</FONT>devel@conference.pidgin.im<BR><BR>"
 
 msgid "Current Developers"
 msgstr "現任開發者"
@@ -12503,6 +12522,10 @@
 msgid "Pidgin"
 msgstr "Pidgin"
 
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
 msgid "Open All Messages"
 msgstr "開啟所有訊息"
 
@@ -12843,6 +12866,10 @@
 msgid "No proxy"
 msgstr "不使用代理伺服器"
 
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "使用 SOCKS4 代理伺服器時使用遠端 DNS"
+
 msgid "_User:"
 msgstr "使用者(_U):"
 
@@ -13345,9 +13372,9 @@
 msgid "_Edit"
 msgstr "修改(_E)"
 
-#  FIXME Tooltip中文怎寫?
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Pidgin Tooltip"
-msgstr "Pidgin Tooltip"
+msgstr "Pidgin 工具提示"
 
 # NOTE 這是「Default」表情主題的說明
 msgid "Pidgin smileys"
@@ -13481,9 +13508,9 @@
 msgid "Error Messages"
 msgstr "錯誤訊息"
 
-# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 12/27/2008 - 20090226 acli
 msgid "Highlighted Messages"
-msgstr "反白訊息"
+msgstr "已標示訊息"
 
 msgid "System Messages"
 msgstr "系統訊息"
@@ -13951,9 +13978,9 @@
 msgstr "瀏覽過的超連結顏色"
 
 # XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
-# FIXME 什麼是「反白訊息名稱」? - acli 20080511
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 20081227 - 20090226 acli
 msgid "Highlighted Message Name Color"
-msgstr "反白訊息名稱顏色"
+msgstr "已標示訊息名稱顏"
 
 msgid "GtkTreeView Horizontal Separation"
 msgstr "GtkTreeView 水平間隔距離"
@@ -14048,7 +14075,7 @@
 
 #, c-format
 msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "%s 現已可升級至 %s 版。"
 
 msgid "New Version Available"
 msgstr "有新版本"
@@ -14318,9 +14345,6 @@
 msgid "Only when docked"
 msgstr "只在停駐時生效"
 
-msgid "_Flash window when chat messages are received"
-msgstr "收到聊天訊息後閃動視窗(_F)"
-
 msgid "Windows Pidgin Options"
 msgstr "Windows 版 Pidgin 選項"
 
@@ -14370,6 +14394,19 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "幫助為 XMPP 伺服器或客戶端進行除錯。"
 
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "無法讀取 MSN 通訊錄"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "收到聊天訊息後閃動視窗(_F)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly.  You may want to use TOC until this is "
+#~ "fixed.  Check %s for updates."
+#~ msgstr ""
+#~ "您可能會短時間中斷連線。您可能會想在這個問題被修正後使用 TOC。請到 %s 看看"
+#~ "有沒有更新。"
+
 #~ msgid "Connection to server lost (no data received within %d second)"
 #~ msgid_plural ""
 #~ "Connection to server lost (no data received within %d seconds)"
--- a/po/zh_TW.po	Wed Feb 25 22:59:41 2009 +0000
+++ b/po/zh_TW.po	Wed Mar 04 16:52:47 2009 +0000
@@ -3,7 +3,7 @@
 # Copyright (C) 2003-2008, Ambrose C. Li <acli@ada.dhs.org>
 #
 # This file is distributed under the same license as the "Pidgin" package.
-# $InternalId: zh_TW.po,v 1.553 2008/09/30 05:14:21 acli Exp $
+# $InternalId: zh_TW.po,v 1.562 2009/02/27 04:50:13 acli Exp $
 #
 # ----------------------------------------------------------
 # For internal use only:
@@ -41,18 +41,17 @@
 # NOTE  以前分「Deny」(拒絕) 和「Block」(封鎖),現在不分了
 # NOTE  拒絕可以說等同於封鎖和某一個使用者的聯繫,有時用封鎖比較好。
 # NOTE  MSN6.0中文版對「Block」一詞的譯文為「封鎖」
-# XXX   Stream 暫譯「串流」,應該不是「通道」
 # NOTE  nplurals 重設為 2,因為部分原文要分辨例如「它」及「它們」一類的字眼
 # NOTE 所有語文名稱(除「世界語」外)一概譯成「XX文」,不譯「XX語」,因為寫下的是文,不是語
 # ----------------------------------------------------------
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Pidgin 2.5.2\n"
+"Project-Id-Version: Pidgin 2.5.5\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-12-18 01:17-0800\n"
-"PO-Revision-Date: 2008-12-17 12:15+0800\n"
-"Last-Translator: Paladin R. Liu <paladin@ms1.hinet.net>\n"
+"POT-Creation-Date: 2009-02-27 10:14-0800\n"
+"PO-Revision-Date: 2009-02-25 09:57-0500\n"
+"Last-Translator: Ambrose Li <ambrose.li@gmail.com>\n"
 "Language-Team: Chinese (Traditional) <zh-l10n@linux.org.tw>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -75,7 +74,7 @@
 "Usage: %s [OPTION]...\n"
 "\n"
 "  -c, --config=DIR    use DIR for config files\n"
-"  -d, --debug         print debugging messages to stdout\n"
+"  -d, --debug         print debugging messages to stderr\n"
 "  -h, --help          display this help and exit\n"
 "  -n, --nologin       don't automatically login\n"
 "  -v, --version       display the current version and exit\n"
@@ -84,7 +83,7 @@
 "使用方法: %s [選項]...\n"
 "\n"
 "  -c, --config=DIR    設定檔所在目錄\n"
-"  -d, --debug         在標準輸出中顯示除錯訊息\n"
+"  -d, --debug         在標準錯誤輸出中顯示除錯訊息\n"
 "  -h, --help          顯示輔助訊息並離開\n"
 "  -n, --nologin       不自動登入\n"
 "  -v, --version       顯示版本訊息並離開\n"
@@ -236,14 +235,16 @@
 msgid "The selected account is not online."
 msgstr "所指定的帳號目前沒有連線。"
 
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Error adding buddy"
 msgstr "新增好友途中發生了錯誤"
 
 msgid "Username"
 msgstr "使用者"
 
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Alias (optional)"
-msgstr "別名(可以不填)"
+msgstr "別名(選用)"
 
 # XXX 譯文可能不太通順 - acli 20080229
 msgid "Add in group"
@@ -283,7 +284,7 @@
 msgstr "如果要繼續修改其他細節,請用快顯選單。"
 
 msgid "Error adding group"
-msgstr "新增群組途中發生了錯誤"
+msgstr "新增群組發生了錯誤"
 
 msgid "You must give a name for the group to add."
 msgstr "請給您新增的群組輸入名稱。"
@@ -869,9 +870,9 @@
 msgid "The file was saved as %s."
 msgstr "成功存檔至 %s。"
 
-# XXX 20080508 acli
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Sending"
-msgstr "送出中"
+msgstr "傳送中"
 
 # XXX 20080508 acli
 msgid "Receiving"
@@ -1214,7 +1215,6 @@
 msgid "Change status to"
 msgstr "更改狀態為"
 
-#. Conversations
 msgid "Conversations"
 msgstr "交談"
 
@@ -1331,14 +1331,18 @@
 msgid "Sounds when conversation has focus"
 msgstr "當交談取得輸入焦點發出音效"
 
+# XXX: 務必 聽起來不太恰當。這裡是指 Enable Sound 的選項 - c9s, 08 Dec 27 12/27/2008
+# XXX 「務必」不只指 Enable Sound,也在其他地方用到,改譯「完全啟用」不行 - 20090226 acli
 msgid "Always"
 msgstr "務必"
 
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Only when available"
-msgstr "上線而非離開期間"
-
+msgstr "狀態為上線時"
+
+# XXX: 離開區間? - c9s, 08 Dec 27 12/27/2008
 msgid "Only when not available"
-msgstr "離開期間"
+msgstr "狀態為非上線時"
 
 msgid "Volume(0-100):"
 msgstr "音量(0-100):"
@@ -1537,7 +1541,6 @@
 "conversation into the current conversation."
 msgstr "當新的交談開啟時,這個模組將會把上次的交談內容也顯示出來。"
 
-#, c-format
 msgid "Online"
 msgstr "上線"
 
@@ -1984,7 +1987,6 @@
 msgid "Transfer of file %s complete"
 msgstr "檔案 %s 傳送完畢"
 
-#, c-format
 msgid "File transfer complete"
 msgstr "檔案傳輸完畢"
 
@@ -1992,7 +1994,6 @@
 msgid "You canceled the transfer of %s"
 msgstr "你取消了 %s 的傳送"
 
-#, c-format
 msgid "File transfer cancelled"
 msgstr "檔案傳輸已取消"
 
@@ -2183,7 +2184,6 @@
 msgid "You are using %s, but this plugin requires %s."
 msgstr "您目前使用的是 %s,但這模組需要 %s。"
 
-#, c-format
 msgid "This plugin has not defined an ID."
 msgstr "這個模組未有定義它的 ID。"
 
@@ -2895,7 +2895,6 @@
 "Unable to establish connection with the local mDNS server.  Is it running?"
 msgstr "無法與近端的 mDNS 伺服器建立連線。它在執行中嗎?"
 
-#. Creating the options for the protocol
 msgid "First name"
 msgstr "名"
 
@@ -2929,6 +2928,10 @@
 msgid "Purple Person"
 msgstr "連絡人"
 
+#. Creating the options for the protocol
+msgid "Local Port"
+msgstr "本地端通訊埠"
+
 # NOTE 這是通訊協定名稱,不是問候語
 msgid "Bonjour"
 msgstr "Bonjour"
@@ -3092,7 +3095,6 @@
 #. get_yahoo_status_from_purple_status() returns YAHOO_STATUS_CUSTOM for
 #. * the generic away state (YAHOO_STATUS_TYPE_AWAY) with no message
 #. Away stuff
-#, c-format
 msgid "Away"
 msgstr "離開"
 
@@ -3910,6 +3912,7 @@
 msgid "User Chatting"
 msgstr ""
 
+# NOTE Jabber 新功能規格
 msgid "User Browsing"
 msgstr "使用者瀏覽"
 
@@ -4017,7 +4020,6 @@
 msgid "Extended Away"
 msgstr "長時間離開"
 
-#, c-format
 msgid "Do Not Disturb"
 msgstr "請勿打擾"
 
@@ -4260,6 +4262,9 @@
 msgid "Re-initializing Stream"
 msgstr "串流重新初始中"
 
+msgid "Server doesn't support blocking"
+msgstr ""
+
 msgid "Not Authorized"
 msgstr "未認證"
 
@@ -4850,9 +4855,6 @@
 msgid "Select an action"
 msgstr "選擇一個動作"
 
-msgid "Unable to retrieve MSN Address Book"
-msgstr "無法讀取 MSN 通訊錄"
-
 #. 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
@@ -5101,7 +5103,6 @@
 msgid "Passport account not yet verified"
 msgstr "護照帳號尚未經過驗證"
 
-#, c-format
 msgid "Passport account suspended"
 msgstr "護照帳號被暫時吊銷"
 
@@ -5120,14 +5121,19 @@
 msgid "MSN Error: %s\n"
 msgstr "MSN 錯誤:%s\n"
 
-#, fuzzy
+# XXX 暫譯,有待改進 - 20090226 acli
+# NOTE: (09時14分13秒 EST) wing: what does "Other Contacts" (msn/group.h:36) actually mean? ..
+# NOTE: (09時24分18秒 EST) khc: I'd probably just translate to 其他人, hehe
+# NOTE: (09時24分44秒 EST) QuLogic: Other Contacts is non-grouped
+# NOTE: (09時25分02秒 EST) QuLogic: which is a group because libpurple doesn't understand non-grouped
 msgid "Other Contacts"
-msgstr "聯絡方法"
-
-# XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
-#, fuzzy
+msgstr "沒有群組的好友"
+
+# XXX 暫譯,有待改進 - 20090226 acli
+# XXX 這可能是MSN的「基本資料連絡人」? 
+# XXX「Buddy」和「Contact」在中文版Pidgin無法析別;可能有改進的空間
 msgid "Non-IM Contacts"
-msgstr "移除這組好友"
+msgstr "非即時訊息的好友"
 
 msgid "Nudge"
 msgstr "呼叫"
@@ -5204,9 +5210,8 @@
 msgid "Playing a game"
 msgstr "正在玩遊戲"
 
-#, fuzzy
 msgid "Working"
-msgstr "工作資料"
+msgstr "正在工作"
 
 msgid "Has you"
 msgstr "你在他(她)的好友清單裏"
@@ -5244,13 +5249,12 @@
 msgid "Album"
 msgstr "專輯名稱"
 
-#, fuzzy
 msgid "Game Title"
-msgstr "樂曲名稱"
-
-#, fuzzy
+msgstr "遊戲名稱"
+
+# XXX 這是盲猜,但MSN「工作資訊」分頁內比較可能對應「Office Title」的應該是這個 - 20090226
 msgid "Office Title"
-msgstr "樂曲名稱"
+msgstr "職位"
 
 msgid "Set Friendly Name..."
 msgstr "設定暱稱..."
@@ -5443,9 +5447,8 @@
 msgstr ""
 "在這個使用者的個人資料網頁找不到任何可用的資料。這個使用者極有可能並不存在。"
 
-#, fuzzy
 msgid "View web profile"
-msgstr "離線時隱藏"
+msgstr "檢視個人資料網頁"
 
 #. *< type
 #. *< ui_requirement
@@ -5503,9 +5506,9 @@
 msgid "Unable to add user"
 msgstr "無法新增使用者"
 
-#, fuzzy
+# XXX 暫譯 - 20090226
 msgid "The following users are missing from your addressbook"
-msgstr "以下為搜尋結果"
+msgstr "以下使用者不在通訊錄內"
 
 #  TODO 請覆查,譯文有待改進
 #, c-format
@@ -6334,7 +6337,6 @@
 msgid "Error. SSL support is not installed."
 msgstr "錯誤:沒有安裝 SSL 支援。"
 
-#, c-format
 msgid "This conference has been closed. No more messages can be sent."
 msgstr "這個會議已經關閉。無法繼續送出任何訊息。"
 
@@ -6594,6 +6596,7 @@
 msgid "Hiptop"
 msgstr "Hiptop"
 
+# FIXME flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli
 msgid "Security Enabled"
 msgstr "有保安功能"
 
@@ -6616,24 +6619,19 @@
 msgid "Screen Sharing"
 msgstr "螢幕共享"
 
-#, c-format
 msgid "Free For Chat"
 msgstr "我有空聊天"
 
-#, c-format
 msgid "Not Available"
 msgstr "長時間離開"
 
-#, c-format
 msgid "Occupied"
 msgstr "忙碌"
 
 # NOTE 參閱 http://www.geocities.com/Athens/Delphi/6470/icq99.html
-#, c-format
 msgid "Web Aware"
 msgstr "允許其他使用者在網路上查看您目前的狀態"
 
-#, c-format
 msgid "Invisible"
 msgstr "隱身"
 
@@ -6735,19 +6733,15 @@
 msgstr "確定(_O)"
 
 #, c-format
-msgid ""
-"You may be disconnected shortly.  You may want to use TOC until this is "
-"fixed.  Check %s for updates."
-msgstr ""
-"您可能會短時間中斷連線。您可能會想在這個問題被修正後使用 TOC。請到 %s 看看有"
-"沒有更新。"
+msgid "You may be disconnected shortly.  If so, check %s for updates."
+msgstr "您可能會在短時間內中斷連線。如果屬實,請到 %s 看看有沒有更新。"
 
 msgid "Unable to get a valid AIM login hash."
 msgstr "無法取得有效的 AIM 登入碼。"
 
 #, c-format
 msgid "You may be disconnected shortly.  Check %s for updates."
-msgstr "您可能會短時間中斷連線。請到 %s 看看有沒有更新。"
+msgstr "您可能會在短時間內中斷連線。請到 %s 看看有沒有更新。"
 
 msgid "Unable to get a valid login hash."
 msgstr "無法取得有效的登入雜湊。"
@@ -7178,6 +7172,7 @@
 msgid "Get AIM Info"
 msgstr "取得 AIM 資訊"
 
+#. We only do this if the user is in our buddy list
 msgid "Edit Buddy Comment"
 msgstr "編輯好友說明"
 
@@ -7288,7 +7283,6 @@
 msgid "Attempting to connect to %s:%hu."
 msgstr "正在嘗試連線至 %s:%hu。"
 
-#, c-format
 msgid "Attempting to connect via proxy server."
 msgstr "正在嘗試透過代理伺服器連線。"
 
@@ -7379,16 +7373,15 @@
 msgid "Other"
 msgstr "其他"
 
-#, fuzzy
 msgid "Visible"
-msgstr "隱身"
-
+msgstr "公開"
+
+# XXX 暫譯 - 20090226
 msgid "Friend Only"
-msgstr ""
-
-#, fuzzy
+msgstr "只允許好友"
+
 msgid "Private"
-msgstr "隱私設定"
+msgstr "非公開"
 
 msgid "QQ Number"
 msgstr "QQ 號碼"
@@ -7415,18 +7408,14 @@
 msgid "Personal Introduction"
 msgstr "個人簡介"
 
-#, fuzzy
 msgid "City/Area"
-msgstr "城市"
-
-#, fuzzy
+msgstr "城市/地區"
+
 msgid "Publish Mobile"
-msgstr "個人行動電話"
-
-# XXX 中文譯文無法分別出「Alias Buddy」和「Alias Contact」
-#, fuzzy
+msgstr "刊登行動電話號碼"
+
 msgid "Publish Contact"
-msgstr "為這組好友加上別名"
+msgstr "刊登個人資訊"
 
 msgid "College"
 msgstr "大學/大專"
@@ -7443,21 +7432,21 @@
 msgstr "血型"
 
 msgid "True"
-msgstr ""
+msgstr "是"
 
 msgid "False"
-msgstr ""
-
-#, fuzzy
+msgstr "不是"
+
+# FIXME - qq.c is buggy - it uses "Contact" here to mean "personal contact info" - filed ticket #8523
+# FIXME - 原文一詞多義,無法翻譯 - 20090226
 msgid "Modify Contact"
 msgstr "修改帳號"
 
 msgid "Modify Address"
 msgstr "修改地址"
 
-#, fuzzy
 msgid "Modify Extended Information"
-msgstr "修改資訊"
+msgstr "修改詳細資訊"
 
 msgid "Modify Information"
 msgstr "修改資訊"
@@ -7576,12 +7565,9 @@
 msgid "Member"
 msgstr "用戶"
 
-#  XXX 這譯文絶對有問題,但想不到怎樣譯較好 - ambrose 20070415
-#, fuzzy
 msgid "Requesting"
-msgstr "對話視窗 (Request Dialog)"
-
-# #NOTE 根據「plugins/log_reader.c#1971」的訊息來判斷,應該是指一種新式的通訊協定。
+msgstr ""
+
 msgid "Admin"
 msgstr ""
 
@@ -7597,14 +7583,12 @@
 msgid "About me"
 msgstr "關於我"
 
-#, fuzzy
 msgid "Category"
-msgstr "聊天錯誤"
+msgstr "類別"
 
 msgid "The Qun does not allow others to join"
 msgstr "這群組不容許外人加入"
 
-#, fuzzy
 msgid "Join QQ Qun"
 msgstr "加入群組"
 
@@ -7669,9 +7653,9 @@
 msgid "%u requested to join Qun %u for %s"
 msgstr "使用者 %d 要求加入群組 %d"
 
-#, fuzzy, c-format
+#, c-format
 msgid "%u request to join Qun %u"
-msgstr "使用者 %d 要求加入群組 %d"
+msgstr "使用者 %u 要求加入群組 %u"
 
 #, c-format
 msgid "Failed to join Qun %u, operated by admin %u"
@@ -7682,9 +7666,9 @@
 msgstr ""
 
 # XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
-#, fuzzy, c-format
+#, c-format
 msgid "<b>Removed buddy %u.</b>"
-msgstr "移除好友"
+msgstr "<b>成功移除好友 %u。</b>"
 
 # XXX「Remove Buddy」和「Remove Contact」在中文版Pidgin無法析別;可能有改進的空間
 #, c-format
@@ -7718,14 +7702,12 @@
 msgid " FromMobile"
 msgstr " 使用行動裝置"
 
-#, fuzzy
 msgid " BindMobile"
 msgstr " 綁定行動裝置"
 
 msgid " Video"
 msgstr " 視訊"
 
-#, fuzzy
 msgid " Zone"
 msgstr " 區"
 
@@ -7805,21 +7787,20 @@
 msgid "Login Information"
 msgstr "登入資訊"
 
-#, fuzzy
 msgid "<p><b>Original Author</b>:<br>\n"
-msgstr "<b>外部使用者</b><br>"
+msgstr "<p><b>原作者</b>:<br>\n"
 
 msgid "<p><b>Code Contributors</b>:<br>\n"
 msgstr "<p><b>程式碼貢獻者</b>:<br>\n"
 
-#, fuzzy
 msgid "<p><b>Lovely Patch Writers</b>:<br>\n"
-msgstr "<b>最近更新時間:</b>%s<br>\n"
-
-# NOTE qq_data->net_stat.sent,送出的數據封包數量(並非位元組數量)的總計
-#, fuzzy
+msgstr "<p><b>可愛的模組作者</b>:<br>\n"
+
 msgid "<p><b>Acknowledgement</b>:<br>\n"
-msgstr "<b>送出封包</b>:%lu 個<br>\n"
+msgstr "<p><b>鳴謝</b>:<br>\n"
+
+msgid "<p><b>Scrupulous Testers</b>:<br>\n"
+msgstr "<p><b>仔細的品管人員</b>:<br>\n"
 
 msgid "<p><i>And, all the boys in the backroom...</i><br>\n"
 msgstr "<p><i>還有所有幕後默默貢獻的無名英雄們…</i><br>\n"
@@ -7846,6 +7827,10 @@
 msgid "About OpenQ"
 msgstr "關於 OpenQ"
 
+#, fuzzy
+msgid "Modify Buddy Memo"
+msgstr "修改地址"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -7866,13 +7851,13 @@
 msgstr "選擇伺服器"
 
 msgid "QQ2005"
-msgstr ""
+msgstr "QQ2005"
 
 msgid "QQ2007"
-msgstr ""
+msgstr "QQ2007"
 
 msgid "QQ2008"
-msgstr ""
+msgstr "QQ2008"
 
 msgid "Connect by TCP"
 msgstr "使用 TCP 連線"
@@ -7885,6 +7870,9 @@
 msgid "Show server news"
 msgstr "顯示伺服器是日訊息"
 
+msgid "Show chat room when msg comes"
+msgstr ""
+
 # XXX 20080810 acli - 譯文有待改進,原文也是
 msgid "Keep alive interval (seconds)"
 msgstr "每隔多少秒送出 Keep Alive"
@@ -7898,7 +7886,7 @@
 
 #, c-format
 msgid "Failed requesting token, 0x%02X"
-msgstr ""
+msgstr "請求符記失敗,回應碼「0x%02X」"
 
 #, c-format
 msgid "Invalid token len, %d"
@@ -7906,7 +7894,7 @@
 
 #. extend redirect used in QQ2006
 msgid "Redirect_EX is not currently supported"
-msgstr ""
+msgstr "暫時不支援 Redirect_EX"
 
 #. need activation
 #. need activation
@@ -7976,9 +7964,8 @@
 msgstr "設定使用者資訊..."
 
 # XXX 這是看了原始碼後的結論(但可能會錯)- acli 20080930
-#, fuzzy
 msgid "Requesting token"
-msgstr "送出請求符記中"
+msgstr "請求符記中"
 
 msgid "Couldn't resolve host"
 msgstr "無法解析主機"
@@ -9529,6 +9516,9 @@
 msgid "SIP usernames may not contain whitespaces or @ symbols"
 msgstr "SIP 的帳號不可含有空白字元或「@」符號"
 
+msgid "SIP connect server not specified"
+msgstr "未有指定 SIP 伺服器"
+
 #. *< type
 #. *< ui_requirement
 #. *< flags
@@ -11461,8 +11451,10 @@
 msgstr "反向"
 
 # XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
+# XXX flagged "有保安功能?" by c9s (http://developer.pidgin.im/ticket/7917), need to verify - 20090226 acli
+# NOTE 譯文改動 by c9s
 msgid "Highlight matches"
-msgstr "標示匹配字串"
+msgstr "標示比對字串"
 
 #  NOTE 除錯視窗的工具列的快取選單的指令,指「工具列的按紐以圖示標示」,下二同
 msgid "_Icon Only"
@@ -11507,11 +11499,13 @@
 msgid "Fatal Error"
 msgstr "嚴重錯誤訊息"
 
+# XXX 暫譯 - 20090226 acli
 msgid "bug master"
-msgstr ""
-
+msgstr "除錯主管"
+
+# NOTE 這個「artist」(有別於其他的「Artist」字串)係指設計pidgin圖示的「graphic designer」,絕對不可譯成「藝人」
 msgid "artist"
-msgstr "藝人"
+msgstr "平面設計"
 
 #. feel free to not translate this
 msgid "Ka-Hing Cheung"
@@ -11543,7 +11537,7 @@
 msgstr "支援兼品管"
 
 msgid "XMPP"
-msgstr ""
+msgstr "XMPP"
 
 msgid "original author"
 msgstr "原作者"
@@ -11700,6 +11694,9 @@
 msgid "Macedonian"
 msgstr "馬其頓文"
 
+msgid "Mongolian"
+msgstr "蒙古文"
+
 #  NOTE 譯文不統一,一般似乎偏向音譯,但譯音也不統一
 #  NOTE 音譯包括:博克馬爾、波克默爾、布克莫爾、巴克摩
 #  NOTE 其他譯法包括:丹麥-挪威文(大英百科)、丹麥式挪威文(維基百科)、東挪威文、標準挪威文(國內不是標準,國外是 :P)
@@ -11831,9 +11828,31 @@
 "<BR><BR>"
 
 #, c-format
-msgid "<FONT SIZE=\"4\">IRC:</FONT> #pidgin on irc.freenode.net<BR><BR>"
-msgstr ""
-"<FONT SIZE=\"4\">IRC:</FONT> irc.freenode.net 上的 #pidgin 頻道<BR><BR>"
+msgid ""
+"<FONT SIZE=\"4\">FAQ:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/FAQ"
+"\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">常見問題:</FONT> <A HREF=\"http://developer.pidgin.im/wiki/"
+"FAQ\">http://developer.pidgin.im/wiki/FAQ</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">Help via e-mail:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+msgstr ""
+"<FONT SIZE=\"4\">電郵支援:</FONT> <A HREF=\"mailto:support@pidgin.im"
+"\">support@pidgin.im</A><BR/><BR/>"
+
+#, c-format
+msgid ""
+"<FONT SIZE=\"4\">IRC Channel:</FONT> #pidgin on irc.freenode.net<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">IRC 頻道</FONT> irc.freenode.net 上的 #pidgin 頻道<BR><BR>"
+
+#, c-format
+msgid "<FONT SIZE=\"4\">XMPP MUC:</FONT> devel@conference.pidgin.im<BR><BR>"
+msgstr ""
+"<FONT SIZE=\"4\">XMPP 聊天室:</FONT>devel@conference.pidgin.im<BR><BR>"
 
 msgid "Current Developers"
 msgstr "現任開發者"
@@ -12497,6 +12516,10 @@
 msgid "Pidgin"
 msgstr "Pidgin"
 
+#, c-format
+msgid "Exiting because another libpurple client is already running.\n"
+msgstr ""
+
 msgid "Open All Messages"
 msgstr "開啟所有訊息"
 
@@ -12837,6 +12860,10 @@
 msgid "No proxy"
 msgstr "不使用代理伺服器"
 
+#. This is a global option that affects SOCKS4 usage even with account-specific proxy settings
+msgid "Use remote DNS with SOCKS4 proxies"
+msgstr "使用 SOCKS4 代理伺服器時使用遠端 DNS"
+
 msgid "_User:"
 msgstr "使用者(_U):"
 
@@ -13339,9 +13366,9 @@
 msgid "_Edit"
 msgstr "修改(_E)"
 
-#  FIXME Tooltip中文怎寫?
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) - 20090226 acli
 msgid "Pidgin Tooltip"
-msgstr "Pidgin Tooltip"
+msgstr "Pidgin 工具提示"
 
 # NOTE 這是「Default」表情主題的說明
 msgid "Pidgin smileys"
@@ -13475,9 +13502,9 @@
 msgid "Error Messages"
 msgstr "錯誤訊息"
 
-# XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 12/27/2008 - 20090226 acli
 msgid "Highlighted Messages"
-msgstr "反白訊息"
+msgstr "已標示訊息"
 
 msgid "System Messages"
 msgstr "系統訊息"
@@ -13945,9 +13972,9 @@
 msgstr "瀏覽過的超連結顏色"
 
 # XXX TODO 我非常討厭把「Highlight」譯成「高亮度」,但譯文可以改進 - Ambrose 20061029
-# FIXME 什麼是「反白訊息名稱」? - acli 20080511
+# NOTE 譯文改動 by c9s (http://developer.pidgin.im/ticket/7917) 20081227 - 20090226 acli
 msgid "Highlighted Message Name Color"
-msgstr "反白訊息名稱顏色"
+msgstr "已標示訊息名稱顏"
 
 msgid "GtkTreeView Horizontal Separation"
 msgstr "GtkTreeView 水平間隔距離"
@@ -14042,7 +14069,7 @@
 
 #, c-format
 msgid "You can upgrade to %s %s today."
-msgstr ""
+msgstr "%s 現已可升級至 %s 版。"
 
 msgid "New Version Available"
 msgstr "有新版本"
@@ -14312,9 +14339,6 @@
 msgid "Only when docked"
 msgstr "只在停駐時生效"
 
-msgid "_Flash window when chat messages are received"
-msgstr "收到聊天訊息後閃動視窗(_F)"
-
 msgid "Windows Pidgin Options"
 msgstr "Windows 版 Pidgin 選項"
 
@@ -14364,6 +14388,19 @@
 msgid "This plugin is useful for debbuging XMPP servers or clients."
 msgstr "幫助為 XMPP 伺服器或客戶端進行除錯。"
 
+#~ msgid "Unable to retrieve MSN Address Book"
+#~ msgstr "無法讀取 MSN 通訊錄"
+
+#~ msgid "_Flash window when chat messages are received"
+#~ msgstr "收到聊天訊息後閃動視窗(_F)"
+
+#~ msgid ""
+#~ "You may be disconnected shortly.  You may want to use TOC until this is "
+#~ "fixed.  Check %s for updates."
+#~ msgstr ""
+#~ "您可能會短時間中斷連線。您可能會想在這個問題被修正後使用 TOC。請到 %s 看看"
+#~ "有沒有更新。"
+
 #~ msgid "Connection to server lost (no data received within %d second)"
 #~ msgid_plural ""
 #~ "Connection to server lost (no data received within %d seconds)"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/ca-certs/AOL_Member_CA.pem	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,25 @@
+-----BEGIN CERTIFICATE-----
+MIIEKzCCAxOgAwIBAgIBBzANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc
+MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP
+bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTA0MDYwNDE3
+MjYzOVoXDTI5MDYwNDE3MjYzOVowZzELMAkGA1UEBhMCVVMxETAPBgNVBAgTCFZp
+cmdpbmlhMQ8wDQYDVQQHEwZEdWxsZXMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5l
+IEluYy4xFjAUBgNVBAMTDUFPTCBNZW1iZXIgQ0EwggEiMA0GCSqGSIb3DQEBAQUA
+A4IBDwAwggEKAoIBAQD4Y9jxzNYRbwXh1p9DJycl+q9nh3Ss3Nb8wpq9M3JOZbBa
+zev4qWlIOW5oLnEWbp5ZfMJ8ze1uQ9gJQk4Nmn3utVojgdKkW6lRVBzf9oTfGcM+
+lC2NuhD46EMIDzI1bDUx+NbT/Akx1qmheiAGWQzgK42EwzegCB7xNXMQ3U/9DHKT
+Jm6vxRw548rzlW8wwoU9TYQgyD490EDW/gZKGHMLbldn24PBE2aX071ZvH76LzZF
+FM28v6tod79I6xGJTmqE810c5WtqAOZrjUikCbkh3C1mKfRWnvAFaP/MwcmIvNIs
+C68ddBqGaKRtFHTsJID4lbnzLjw9IG8JAjjqOjgFAgMBAAGjgeUwgeIwDgYDVR0P
+AQH/BAQDAgGGMB0GA1UdDgQWBBRhppltJJ8OEYjmOeD+dNEFaVKpQzAfBgNVHSME
+GDAWgBQArdmj9nn2bnSpfzM9gRfXTM8z3jAPBgNVHRMBAf8EBTADAQH/MEgGA1Ud
+IARBMD8wPQYEVR0gADA1MDMGCCsGAQUFBwIBFidodHRwczovL3BraS1pbmZvLmFv
+bC5jb20vQU9ML2luZGV4Lmh0bWwwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL2Ny
+bC5hb2wuY29tL0FPTC9NYXN0ZXJDUkwuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQAM
+nbzMHdQukRuvoDrrzV78JSopjrMg4Bc3+vy7xbUUuxxmDm9YX8Zx0BOJx60jC+1M
+uFjB48KkJExldg2zhmRPKLrPlvhlmg6CJvWChU41ILNFzGDuD04glDorL8sjEJtG
+G37DVnVJJKS4TZ8caNTm8i+vju0rt+WWaxw9jb8g028tVC+ceTX92gbeaCAgS69d
+q15mwxRke/cC5ieWrRgeq/OCYPxMX7YKUnuenDsuzjxCXzZta/6hdooiIf1b6L1/
+n85RdEhsrLXRomr6B0Te0NupjRgf8bnF6Crruj07GIzADDCzySEcM0w6SVPUqLq6
+OCM9OmWCXnlxFfglK30Z
+-----END CERTIFICATE-----
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/ca-certs/America_Online_Root_Certification_Authority_1.pem	Wed Mar 04 16:52:47 2009 +0000
@@ -0,0 +1,23 @@
+-----BEGIN CERTIFICATE-----
+MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJV
+UzEcMBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1l
+cmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4X
+DTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMx
+HDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJp
+Y2EgT25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIw
+DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCa
+xlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CGv2BlnEtUiMJIxUo5vxTjWVXl
+GbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44zDyL9Hy7n
+BzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145Lcx
+VR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiE
+mf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCu
+JKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
+HQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Zo/Z5
+9m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUA
+A4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF
+Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOM
+IOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTI
+dGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
+Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j
+8uB9Gr784N/Xx6dssPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
+-----END CERTIFICATE-----
--- a/share/ca-certs/Makefile.am	Wed Feb 25 22:59:41 2009 +0000
+++ b/share/ca-certs/Makefile.am	Wed Mar 04 16:52:47 2009 +0000
@@ -1,4 +1,5 @@
 CERTIFICATES = \
+		America_Online_Root_Certification_Authority_1.pem \
 		CAcert_Root.pem \
 		CAcert_Class3.pem \
 		Equifax_Secure_CA.pem \
@@ -9,6 +10,7 @@
 		VeriSign_Class_3_Public_Primary_Certification_Authority_-_G5.pem
 
 EXTRA_CERTS = \
+		AOL_Member_CA.pem \
 		Microsoft_Internet_Authority.pem \
 		Microsoft_Secure_Server_Authority.pem \
 		VeriSign_International_Server_Class_3_CA.pem