changeset 29943:9cb96fe7e414

propagate from branch 'im.pidgin.pidgin' (head 6d8a9a520e4ea4c291e8e4ddbd59bcdb988f3965) to branch 'im.pidgin.cpw.rekkanoryo.ggupdate' (head fca920a325e72a4e07459eff26c4b6af242edb99)
author John Bailey <rekkanoryo@rekkanoryo.org>
date Sat, 06 Mar 2010 16:33:10 +0000
parents 1b861e13ae45 (diff) c84ee0ff4fe6 (current diff)
children 818f2845ab47
files configure.ac
diffstat 54 files changed, 454 insertions(+), 1176 deletions(-) [+]
line wrap: on
line diff
--- a/.mtn-ignore	Mon Mar 01 03:47:06 2010 +0000
+++ b/.mtn-ignore	Sat Mar 06 16:33:10 2010 +0000
@@ -38,7 +38,10 @@
 pidgin.spec$
 pidgin-.*.tar.gz
 pidgin-.*.tar.bz2
+pidgin-*.*.*-dbgsym$
+pidgin-*.*.*-dbgsym.zip$
 pidgin-*.*.*-win32bin$
+pidgin-*.*.*-win32-bin.zip$
 pidgin/pidgin$
 pidgin/pixmaps/emotes/default/24/theme
 pidgin/pixmaps/emotes/none/theme
@@ -48,6 +51,9 @@
 pidgin/plugins/perl/common/Makefile.old
 pidgin/win32/pidgin_dll_rc.rc$
 pidgin/win32/pidgin_exe_rc.rc$
+pidgin/win32/nsis/gtk-runtime-*.*.*.*.zip
+pidgin/win32/nsis/gtk_runtime_stage$
+pidgin/win32/nsis/pidgin-translations.nsh$
 install-sh
 libpurple/dbus-bindings.c
 libpurple/dbus-signals.c
--- a/ChangeLog.win32	Mon Mar 01 03:47:06 2010 +0000
+++ b/ChangeLog.win32	Sat Mar 06 16:33:10 2010 +0000
@@ -5,6 +5,9 @@
 	* Crash Report files (pidgin.RPT) are now generated in the ~/.purple
 	  directory instead of the installation directory.
 	* NSS SSL Library upgraded to 3.12.5 (thanks to Berke Viktor)
+	* GtkSpell upgraded to 2.0.16, changing the spellchecking backend to
+	  enchant.  This means that myspell, hunspell (OpenOffice) and existing
+	  aspell dictionaries can be used.
 
 version 2.6.6 (02/18/2010):
 	* Installer translations for: Norwegian nynorsk
--- a/Makefile.mingw	Mon Mar 01 03:47:06 2010 +0000
+++ b/Makefile.mingw	Sat Mar 06 16:33:10 2010 +0000
@@ -31,10 +31,7 @@
     exit; \
 }' VERSION)
 
-GTK_INSTALL_VERSION = $(shell \
-  source ../gtk_installer/version.sh; \
-  echo $$gtk_version \
-)
+GTK_INSTALL_VERSION = 2.14.7.0
 
 STRIPPED_RELEASE_DIR = $(PIDGIN_TREE_TOP)/pidgin-$(PIDGIN_VERSION)-win32bin
 DEBUG_SYMBOLS_DIR = $(PIDGIN_TREE_TOP)/pidgin-$(PIDGIN_VERSION)-dbgsym
@@ -44,11 +41,13 @@
 # should be included in this list so they don't get stripped
 EXTERNAL_DLLS = \
 	comerr32.dll \
+	exchndl.dll \
 	freebl3.dll \
 	gssapi32.dll \
 	k5sprt32.dll \
 	krb5_32.dll \
-	libgtkspell.dll \
+	libenchant.dll \
+	libgtkspell-0.dll \
 	libmeanwhile-1.dll \
 	libnspr4.dll \
 	libplc4.dll \
@@ -74,7 +73,7 @@
 #build an expression for `find` to use to ignore the above files
 EXTERNAL_DLLS_FIND_EXP = $(patsubst %,-o -name %,$(EXTERNAL_DLLS))
 
-.PHONY: all docs install installer installer_offline installer_zip debug_symbols_zip installers clean uninstall create_release_install_dir generate_translations_installer_include $(PIDGIN_REVISION_H) $(PIDGIN_REVISION_RAW_TXT)
+.PHONY: all docs install installer installer_offline installer_zip debug_symbols_zip installers clean uninstall create_release_install_dir generate_installer_includes $(PIDGIN_REVISION_H) $(PIDGIN_REVISION_RAW_TXT)
 
 all: $(PIDGIN_CONFIG_H) $(PIDGIN_REVISION_H)
 	$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE)
@@ -91,26 +90,48 @@
 endif
 	$(MAKE) -C share/ca-certs -f $(MINGW_MAKEFILE) install
 	$(MAKE) -C share/sounds -f $(MINGW_MAKEFILE) install
+	mkdir -p $(PIDGIN_INSTALL_DIR)/spellcheck
+	cp $(GTKSPELL_TOP)/bin/libgtkspell-0.dll $(PIDGIN_INSTALL_DIR)/spellcheck
+	cp $(ENCHANT_TOP)/bin/libenchant.dll $(PIDGIN_INSTALL_DIR)/spellcheck
+	cp -R $(ENCHANT_TOP)/lib $(PIDGIN_INSTALL_DIR)/spellcheck
+	cp $(WIN32_DEV_TOP)/pidgin-inst-deps-20100223/exchndl.dll $(PIDGIN_INSTALL_DIR)
 
-generate_translations_installer_include: create_release_install_dir 
-	rm -f pidgin/win32/nsis/pidgin-translations.nsh
+pidgin/win32/nsis/gtk-runtime-$(GTK_BUNDLE_VERSION).zip:
+	pidgin/win32/nsis/generate_gtk_zip.sh `pwd`
+
+generate_installer_includes: create_release_install_dir pidgin/win32/nsis/gtk-runtime-$(GTK_BUNDLE_VERSION).zip debug_symbols_zip
+	rm -f pidgin/win32/nsis/pidgin-translations.nsh pidgin/win32/nsis/pidgin-spellcheck.nsh pidgin/win32/nsis/pidgin-spellcheck-preselect.nsh
 	find $(STRIPPED_RELEASE_DIR)/locale -maxdepth 1 -mindepth 1 \
 	 -exec basename {} ';' \
 	 | sed -e s/^/\!insertmacro\ LANG_SECTION\ \"/ -e s/$$/\"/ \
 	 > pidgin/win32/nsis/pidgin-translations.nsh
+	#Convert the available.lst lines to "!insertmacro SPELLCHECK_SECTION lang lang_name lang_file"
+	sed -e "/^#/d" -e "s/^[^,]\{1,\},[^,]\{1,\},/\"/" \
+	 -e "s/,/\"\ \"/" -e "s/,/\"\ \"/" -e "s/[\ \t]*$$/\"/" \
+	 -e "s/^/\!insertmacro\ SPELLCHECK_SECTION\ /" \
+         pidgin/win32/nsis/available.lst \
+         > pidgin/win32/nsis/pidgin-spellcheck.nsh
+	#Convert the lines to "!insertmacro CHECK_SPELLCHECK_SECTION lang"
+	iconv -f latin1 -t utf-8 pidgin/win32/nsis/pidgin-spellcheck.nsh | \
+	 sed -e "s/SPELLCHECK_SECTION/CHECK_SPELLCHECK_SECTION/" \
+	 -e "s/ \"[^\"]*\"\ \"[^\"]*\"[\t\ ]*$$//" | \
+         iconv -f utf-8 -t latin1 \
+        > pidgin/win32/nsis/pidgin-spellcheck-preselect.nsh
 
 create_release_install_dir: install
 	rm -rf $(STRIPPED_RELEASE_DIR)
-	cp -R $(PIDGIN_INSTALL_DIR) $(STRIPPED_RELEASE_DIR)
+	mkdir $(STRIPPED_RELEASE_DIR)
+	tar -cf - $(PIDGIN_INSTALL_DIR) --exclude=Gtk --exclude=spellcheck/share \
+	 | tar --strip 2 -xC $(STRIPPED_RELEASE_DIR) -f -
 	find $(STRIPPED_RELEASE_DIR) \( -name '*.dll' -o -name '*.exe' \) \
 	 -not \( -false $(EXTERNAL_DLLS_FIND_EXP) \) \
 	 -exec $(STRIP) --strip-unneeded {} ';'
 
-installer: create_release_install_dir generate_translations_installer_include
+installer: generate_installer_includes
 	$(MAKENSIS) $(MAKENSISOPT)V3 $(MAKENSISOPT)DPIDGIN_VERSION="$(PIDGIN_VERSION)" $(MAKENSISOPT)DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" $(MAKENSISOPT)DPIDGIN_INSTALL_DIR="$(STRIPPED_RELEASE_DIR)" $(MAKENSISOPT)DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
 	mv pidgin/win32/nsis/pidgin-$(PIDGIN_VERSION).exe ./
 
-installer_offline: create_release_install_dir generate_translations_installer_include debug_symbols_zip
+installer_offline: generate_installer_includes
 	$(MAKENSIS) $(MAKENSISOPT)V3 $(MAKENSISOPT)DPIDGIN_VERSION="$(PIDGIN_VERSION)" $(MAKENSISOPT)DPIDGIN_PRODUCT_VERSION="$(PIDGIN_PRODUCT_VERSION)" $(MAKENSISOPT)DOFFLINE_INSTALLER $(MAKENSISOPT)DPIDGIN_INSTALL_DIR="$(STRIPPED_RELEASE_DIR)" $(MAKENSISOPT)DGTK_INSTALL_VERSION="$(GTK_INSTALL_VERSION)" pidgin/win32/nsis/pidgin-installer.nsi
 	mv pidgin/win32/nsis/pidgin-$(PIDGIN_VERSION)-offline.exe ./
 
--- a/configure.ac	Mon Mar 01 03:47:06 2010 +0000
+++ b/configure.ac	Sat Mar 06 16:33:10 2010 +0000
@@ -2394,6 +2394,30 @@
         AC_DEFINE(HAVE_TM_GMTOFF, 1, [Define if you have a tm_gmtoff member in struct tm])
 fi
 
+AC_CACHE_CHECK([whether va_lists can be copied by value], ac_cv_va_val_copy,[
+	AC_TRY_RUN([#include <stdarg.h>
+#include <stdlib.h>
+	void f (int i, ...) {
+	va_list args1, args2;
+	va_start (args1, i);
+	args2 = args1;
+	if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+	  exit (1);
+	va_end (args1); va_end (args2);
+	}
+	int main() {
+	  f (0, 42);
+	  return 0;
+	}],
+	[ac_cv_va_val_copy=yes],
+	[ac_cv_va_val_copy=no],
+	[ac_cv_va_val_copy=yes])
+])
+
+if test "x$ac_cv_va_val_copy" = "xno"; then
+	AC_DEFINE(VA_COPY_AS_ARRAY, 1, ['va_lists' cannot be copied as values])
+fi
+
 dnl #######################################################################
 dnl # Check for check
 dnl #######################################################################
--- a/libpurple/connection.h	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/connection.h	Sat Mar 06 16:33:10 2010 +0000
@@ -44,8 +44,9 @@
 	PURPLE_CONNECTION_NO_FONTSIZE = 0x0020, /**< Connection does not send/receive font sizes */
 	PURPLE_CONNECTION_NO_URLDESC = 0x0040,  /**< Connection does not support descriptions with links */
 	PURPLE_CONNECTION_NO_IMAGES = 0x0080,  /**< Connection does not support sending of images */
-	PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY = 0x0100 /**< Connection supports sending and receiving custom smileys */
-	
+	PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY = 0x0100, /**< Connection supports sending and receiving custom smileys */
+	PURPLE_CONNECTION_SUPPORT_MOODS = 0x0200, /**< Connection supports setting moods */
+	PURPLE_CONNECTION_SUPPORT_MOOD_MESSAGES = 0x0400 /**< Connection supports setting a message on moods */
 } PurpleConnectionFlags;
 
 typedef enum
--- a/libpurple/ft.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/ft.c	Sat Mar 06 16:33:10 2010 +0000
@@ -579,7 +579,7 @@
 	type = purple_xfer_get_type(xfer);
 	account = purple_xfer_get_account(xfer);
 
-	purple_debug_misc("xfer", "request accepted for %p\n", xfer); 
+	purple_debug_misc("xfer", "request accepted for %p\n", xfer);
 
 	if (!filename && type == PURPLE_XFER_RECEIVE) {
 		xfer->status = PURPLE_XFER_STATUS_ACCEPTED;
@@ -1088,6 +1088,7 @@
 		size_t result = 0;
 		size_t s = MIN(purple_xfer_get_bytes_remaining(xfer), xfer->current_buffer_size);
 		PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
+		gboolean read = TRUE;
 
 		/* this is so the prpl can keep the connection open
 		   if it needs to for some odd reason. */
@@ -1099,47 +1100,41 @@
 			return;
 		}
 
-		if (ui_ops && ui_ops->ui_read) {
-			gssize tmp = ui_ops->ui_read(xfer, &buffer, s);
-			if (tmp == 0) {
-				/*
-				 * The UI claimed it was ready, but didn't have any data for
-				 * us...  It will call purple_xfer_ui_ready when ready, which
-				 * sets back up this watcher.
-				 */
-				if (xfer->watcher != 0) {
-					purple_input_remove(xfer->watcher);
-					xfer->watcher = 0;
+		if (priv->buffer) {
+			if (priv->buffer->len < s) {
+				s -= priv->buffer->len;
+				read = TRUE;
+			} else {
+				read = FALSE;
+			}
+		}
+
+		if (read) {
+			if (ui_ops && ui_ops->ui_read) {
+				gssize tmp = ui_ops->ui_read(xfer, &buffer, s);
+				if (tmp == 0) {
+					/*
+					 * The UI claimed it was ready, but didn't have any data for
+					 * us...  It will call purple_xfer_ui_ready when ready, which
+					 * sets back up this watcher.
+					 */
+					if (xfer->watcher != 0) {
+						purple_input_remove(xfer->watcher);
+						xfer->watcher = 0;
+					}
+
+					/* Need to indicate the prpl is still ready... */
+					priv->ready |= PURPLE_XFER_READY_PRPL;
+
+					g_return_if_reached();
+				} else if (tmp < 0) {
+					purple_debug_error("filetransfer", "Unable to read whole buffer.\n");
+					purple_xfer_cancel_local(xfer);
+					return;
 				}
 
-				/* Need to indicate the prpl is still ready... */
-				priv->ready |= PURPLE_XFER_READY_PRPL;
-
-				/*
-				 * if we requested 0 bytes it's only normal that end up here 
-				 * we shouldn't return as we still have something to 
-				 * write in priv->buffer
-				 */
-				if (s != 0)
-					g_return_if_reached();
-			} else if (tmp < 0) {
-				purple_debug_error("filetransfer", "Unable to read whole buffer.\n");
-				purple_xfer_cancel_local(xfer);
-				return;
-			}
-
-			result = tmp;
-		} else {
-			gboolean read = TRUE;
-			if (priv->buffer) {
-				if (priv->buffer->len < s) {
-					s -= priv->buffer->len;
-					read = TRUE;
-				} else {
-					read = FALSE;
-				}
-			}
-			if (read) {
+				result = tmp;
+			} else {
 				buffer = g_malloc(s);
 				result = fread(buffer, 1, s, xfer->dest_fp);
 				if (result != s) {
@@ -1150,14 +1145,14 @@
 				}
 			}
 		}
-	
+
 		if (priv->buffer) {
 			priv->buffer = g_byte_array_append(priv->buffer, buffer, result);
 			g_free(buffer);
 			buffer = priv->buffer->data;
 			result = priv->buffer->len;
 		}
-	
+
 		r = purple_xfer_write(xfer, buffer, result);
 
 		if (r == -1) {
@@ -1172,12 +1167,12 @@
 			 */
 			purple_xfer_increase_buffer_size(xfer);
 		} else {
-			if (ui_ops && ui_ops->data_not_sent) 
-				ui_ops->data_not_sent(xfer, buffer + r, result -r);
+			if (ui_ops && ui_ops->data_not_sent)
+				ui_ops->data_not_sent(xfer, buffer + r, result - r);
 		}
 
 		if (priv->buffer) {
-			/* 
+			/*
 			 * Remove what we wrote
 			 * If we wrote the whole buffer the byte array will be empty
 			 * Otherwise we'll kee what wasn't sent for next time.
--- a/libpurple/log.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/log.c	Sat Mar 06 16:33:10 2010 +0000
@@ -36,8 +36,6 @@
 #include "imgstore.h"
 #include "time.h"
 
-#include <math.h>
-
 static GSList *loggers = NULL;
 
 static PurpleLogLogger *html_logger;
--- a/libpurple/plugins/perl/perl-common.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/plugins/perl/perl-common.c	Sat Mar 06 16:33:10 2010 +0000
@@ -472,74 +472,74 @@
 }
 
 SV *
-purple_perl_sv_from_vargs(const PurpleValue *value, va_list args, void ***copy_arg)
+purple_perl_sv_from_vargs(const PurpleValue *value, va_list *args, void ***copy_arg)
 {
 	if (purple_value_is_outgoing(value)) {
 		switch (purple_value_get_type(value)) {
 			case PURPLE_TYPE_SUBTYPE:
-				if ((*copy_arg = va_arg(args, void **)) == NULL)
+				if ((*copy_arg = va_arg(*args, void **)) == NULL)
 					return &PL_sv_undef;
 
 				return purple_perl_sv_from_subtype(value, *(void **)*copy_arg);
 
 			case PURPLE_TYPE_BOOLEAN:
-				if ((*copy_arg = (void *)va_arg(args, gboolean *)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, gboolean *)) == NULL)
 					return &PL_sv_undef;
 
 				return newSViv(*(gboolean *)*copy_arg);
 
 			case PURPLE_TYPE_INT:
-				if ((*copy_arg = (void *)va_arg(args, int *)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, int *)) == NULL)
 					return &PL_sv_undef;
 
 				return newSViv(*(int *)*copy_arg);
 
 			case PURPLE_TYPE_UINT:
-				if ((*copy_arg = (void *)va_arg(args, unsigned int *)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, unsigned int *)) == NULL)
 					return &PL_sv_undef;
 
 				return newSVuv(*(unsigned int *)*copy_arg);
 
 			case PURPLE_TYPE_LONG:
-				if ((*copy_arg = (void *)va_arg(args, long *)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, long *)) == NULL)
 					return &PL_sv_undef;
 
 				return newSViv(*(long *)*copy_arg);
 
 			case PURPLE_TYPE_ULONG:
-				if ((*copy_arg = (void *)va_arg(args,
+				if ((*copy_arg = (void *)va_arg(*args,
 												unsigned long *)) == NULL)
 					return &PL_sv_undef;
 
 				return newSVuv(*(unsigned long *)*copy_arg);
 
 			case PURPLE_TYPE_INT64:
-				if ((*copy_arg = (void *)va_arg(args, gint64 *)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, gint64 *)) == NULL)
 					return &PL_sv_undef;
 
 				return newSViv(*(gint64 *)*copy_arg);
 
 			case PURPLE_TYPE_UINT64:
-				if ((*copy_arg = (void *)va_arg(args, guint64 *)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, guint64 *)) == NULL)
 					return &PL_sv_undef;
 
 				return newSVuv(*(guint64 *)*copy_arg);
 
 			case PURPLE_TYPE_STRING:
-				if ((*copy_arg = (void *)va_arg(args, char **)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, char **)) == NULL)
 					return &PL_sv_undef;
 
 				return newSVGChar(*(char **)*copy_arg);
 
 			case PURPLE_TYPE_POINTER:
-				if ((*copy_arg = va_arg(args, void **)) == NULL)
+				if ((*copy_arg = va_arg(*args, void **)) == NULL)
 					return &PL_sv_undef;
 
 				return newSViv((IV)*(void **)*copy_arg);
 
 			case PURPLE_TYPE_BOXED:
 				/* Uh.. I dunno. Try this? */
-				if ((*copy_arg = va_arg(args, void **)) == NULL)
+				if ((*copy_arg = va_arg(*args, void **)) == NULL)
 					return &PL_sv_undef;
 
 				return sv_2mortal(purple_perl_bless_object(
@@ -553,40 +553,40 @@
 	} else {
 		switch (purple_value_get_type(value)) {
 			case PURPLE_TYPE_SUBTYPE:
-				if ((*copy_arg = va_arg(args, void *)) == NULL)
+				if ((*copy_arg = va_arg(*args, void *)) == NULL)
 					return &PL_sv_undef;
 
 				return purple_perl_sv_from_subtype(value, *copy_arg);
 
 			case PURPLE_TYPE_BOOLEAN:
-				*copy_arg = GINT_TO_POINTER( va_arg(args, gboolean) );
+				*copy_arg = GINT_TO_POINTER( va_arg(*args, gboolean) );
 
 				return newSViv((gboolean)GPOINTER_TO_INT(*copy_arg));
 
 			case PURPLE_TYPE_INT:
-				*copy_arg = GINT_TO_POINTER( va_arg(args, int) );
+				*copy_arg = GINT_TO_POINTER( va_arg(*args, int) );
 
 				return newSViv(GPOINTER_TO_INT(*copy_arg));
 
 			case PURPLE_TYPE_UINT:
-				*copy_arg = GUINT_TO_POINTER(va_arg(args, unsigned int));
+				*copy_arg = GUINT_TO_POINTER(va_arg(*args, unsigned int));
 
 				return newSVuv(GPOINTER_TO_UINT(*copy_arg));
 
 			case PURPLE_TYPE_LONG:
-				*copy_arg = (void *)va_arg(args, long);
+				*copy_arg = (void *)va_arg(*args, long);
 
 				return newSViv((long)*copy_arg);
 
 			case PURPLE_TYPE_ULONG:
-				*copy_arg = (void *)va_arg(args, unsigned long);
+				*copy_arg = (void *)va_arg(*args, unsigned long);
 
 				return newSVuv((unsigned long)*copy_arg);
 
 			case PURPLE_TYPE_INT64:
 #if 0
 				/* XXX This yells and complains. */
-				*copy_arg = va_arg(args, gint64);
+				*copy_arg = va_arg(*args, gint64);
 
 				return newSViv(*copy_arg);
 #endif
@@ -595,27 +595,27 @@
 			case PURPLE_TYPE_UINT64:
 				/* XXX This also yells and complains. */
 #if 0
-				*copy_arg = (void *)va_arg(args, guint64);
+				*copy_arg = (void *)va_arg(*args, guint64);
 
 				return newSVuv(*copy_arg);
 #endif
 				break;
 
 			case PURPLE_TYPE_STRING:
-				if ((*copy_arg = (void *)va_arg(args, char *)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, char *)) == NULL)
 					return &PL_sv_undef;
 
 				return newSVGChar((char *)*copy_arg);
 
 			case PURPLE_TYPE_POINTER:
-				if ((*copy_arg = (void *)va_arg(args, void *)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, void *)) == NULL)
 					return &PL_sv_undef;
 
 				return newSViv((IV)*copy_arg);
 
 			case PURPLE_TYPE_BOXED:
 				/* Uh.. I dunno. Try this? */
-				if ((*copy_arg = (void *)va_arg(args, void *)) == NULL)
+				if ((*copy_arg = (void *)va_arg(*args, void *)) == NULL)
 					return &PL_sv_undef;
 
 				return sv_2mortal(purple_perl_bless_object(*copy_arg,
--- a/libpurple/plugins/perl/perl-common.h	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/plugins/perl/perl-common.h	Sat Mar 06 16:33:10 2010 +0000
@@ -66,7 +66,7 @@
 #endif
 
 void *purple_perl_data_from_sv(PurpleValue *value, SV *sv);
-SV *purple_perl_sv_from_vargs(const PurpleValue *value, va_list args,
+SV *purple_perl_sv_from_vargs(const PurpleValue *value, va_list *args,
                             void ***copy_arg);
 SV *purple_perl_sv_from_fun(PurplePlugin *plugin, SV *callback);
 #endif /* _PURPLE_PERL_COMMON_H_ */
--- a/libpurple/plugins/perl/perl-handlers.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/plugins/perl/perl-handlers.c	Sat Mar 06 16:33:10 2010 +0000
@@ -298,7 +298,11 @@
 
 	for (i = 0; i < value_count; i++) {
 		sv_args[i] = purple_perl_sv_from_vargs(values[i],
-		                                       args,
+#ifdef VA_COPY_AS_ARRAY
+		                                       (va_list*)args,
+#else
+		                                       (va_list*)&args,
+#endif
 		                                       &copy_args[i]);
 
 		XPUSHs(sv_args[i]);
--- a/libpurple/protocols/bonjour/mdns_win32.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/protocols/bonjour/mdns_win32.c	Sat Mar 06 16:33:10 2010 +0000
@@ -251,7 +251,7 @@
 
 static void DNSSD_API
 _mdns_service_resolve_callback(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode,
-    const char *fullname, const char *hosttarget, uint16_t port, uint16_t txtLen, const char *txtRecord, void *context)
+    const char *fullname, const char *hosttarget, uint16_t port, uint16_t txtLen, const unsigned char *txtRecord, void *context)
 {
 	ResolveCallbackArgs *args = (ResolveCallbackArgs*) context;
 	Win32BuddyImplData *idata = args->bb->mdns_impl_data;
--- a/libpurple/protocols/irc/irc.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/protocols/irc/irc.c	Sat Mar 06 16:33:10 2010 +0000
@@ -369,7 +369,7 @@
 	const char *pass = purple_connection_get_password(gc);
 
 	if (pass && *pass) {
-		buf = irc_format(irc, "vv", "PASS", pass);
+		buf = irc_format(irc, "v:", "PASS", pass);
 		if (irc_send(irc, buf) < 0) {
 			g_free(buf);
 			return FALSE;
--- a/libpurple/protocols/jabber/buddy.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/protocols/jabber/buddy.c	Sat Mar 06 16:33:10 2010 +0000
@@ -218,7 +218,7 @@
 	for (l = jb->resources; l; l = l->next)
 	{
 		JabberBuddyResource *jbr = l->data;
-		if (g_str_equal(resource, jbr->name))
+		if (jbr->name && g_str_equal(resource, jbr->name))
 			return jbr;
 	}
 
--- a/libpurple/protocols/jabber/disco.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/protocols/jabber/disco.c	Sat Mar 06 16:33:10 2010 +0000
@@ -517,8 +517,12 @@
 		const char *category, *type, *name;
 		category = xmlnode_get_attrib(child, "category");
 		type = xmlnode_get_attrib(child, "type");
-		if(category && type && !strcmp(category, "pubsub") && !strcmp(type,"pep"))
+		if(category && type && !strcmp(category, "pubsub") && !strcmp(type,"pep")) {
+			PurpleConnection *gc = js->gc;
 			js->pep = TRUE;
+			gc->flags |= PURPLE_CONNECTION_SUPPORT_MOODS |
+				PURPLE_CONNECTION_SUPPORT_MOOD_MESSAGES;
+		}
 		if (!category || strcmp(category, "server"))
 			continue;
 		if (!type || strcmp(type, "im"))
--- a/libpurple/protocols/jabber/presence.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/protocols/jabber/presence.c	Sat Mar 06 16:33:10 2010 +0000
@@ -137,7 +137,9 @@
 	if (purple_status_type_get_primitive(purple_status_get_type(status)) == PURPLE_STATUS_MOOD) {
 		const char *mood =
 			purple_status_get_attr_string(status, PURPLE_MOOD_NAME);
-		jabber_mood_set(js, mood, NULL);
+		const char *mood_text =
+			purple_status_get_attr_string(status, PURPLE_MOOD_COMMENT);
+		jabber_mood_set(js, mood, mood_text);
 		return;
 	}
 
--- a/libpurple/protocols/jabber/usermood.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/protocols/jabber/usermood.c	Sat Mar 06 16:33:10 2010 +0000
@@ -119,10 +119,6 @@
 	{NULL, NULL, NULL}
 };
 
-static PurpleMood empty_moods[] = {
-	{NULL, NULL, NULL}
-};
-
 static void jabber_mood_cb(JabberStream *js, const char *from, xmlnode *items) {
 	/* it doesn't make sense to have more than one item here, so let's just pick the first one */
 	xmlnode *item = xmlnode_get_child(items, "item");
@@ -260,14 +256,5 @@
 
 PurpleMood *jabber_get_moods(PurpleAccount *account)
 {
-	PurpleConnection *gc = purple_account_get_connection(account);
-	JabberStream *js = (JabberStream *) gc->proto_data;
-
-	if (js->pep) {
-		purple_debug_info("jabber", "get_moods: account supports PEP\n");
-		return moods;
-	} else {
-		purple_debug_info("jabber", "get_moods: account doesn't support PEP\n");
-		return empty_moods;
-	}
+	return moods;
 }
\ No newline at end of file
--- a/libpurple/protocols/oscar/oscar.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Sat Mar 06 16:33:10 2010 +0000
@@ -1573,6 +1573,7 @@
 
 	if (oscar_util_valid_name_icq((purple_account_get_username(account)))) {
 		od->icq = TRUE;
+		gc->flags |= PURPLE_CONNECTION_SUPPORT_MOODS;
 	} else {
 		gc->flags |= PURPLE_CONNECTION_HTML;
 		gc->flags |= PURPLE_CONNECTION_AUTO_RESP;
@@ -3797,7 +3798,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->bn, 0, utf8, time((time_t)NULL));
+	serv_got_chat_in(gc, ccon->id, info->bn, 0, utf8, time(NULL));
 	g_free(utf8);
 
 	return 1;
--- a/libpurple/upnp.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/upnp.c	Sat Mar 06 16:33:10 2010 +0000
@@ -542,7 +542,7 @@
 		len = recv(dd->fd, buf,
 			sizeof(buf) - 1, 0);
 
-		if(len > 0) {
+		if(len >= 0) {
 			buf[len] = '\0';
 			break;
 		} else if(errno != EINTR) {
--- a/libpurple/win32/global.mak	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/win32/global.mak	Sat Mar 06 16:33:10 2010 +0000
@@ -10,8 +10,8 @@
 
 # Locations of our various dependencies
 WIN32_DEV_TOP ?= $(PIDGIN_TREE_TOP)/../win32-dev
-ASPELL_TOP ?= $(WIN32_DEV_TOP)/aspell-dev-0-50-3-3
-GTKSPELL_TOP ?= $(WIN32_DEV_TOP)/gtkspell-2.0.11-daa1
+GTKSPELL_TOP ?= $(WIN32_DEV_TOP)/gtkspell-2.0.16
+ENCHANT_TOP ?= $(WIN32_DEV_TOP)/enchant_1.5.0-2_win32
 GTK_TOP ?= $(WIN32_DEV_TOP)/gtk_2_0-2.14
 GTK_BIN ?= $(GTK_TOP)/bin
 BONJOUR_TOP ?= $(WIN32_DEV_TOP)/Bonjour_SDK
--- a/libpurple/win32/libc_interface.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/libpurple/win32/libc_interface.c	Sat Mar 06 16:33:10 2010 +0000
@@ -62,7 +62,7 @@
 /* helpers */
 static int wpurple_is_socket( int fd ) {
 	int optval;
-	unsigned int optlen = sizeof(int);
+	int optlen = sizeof(int);
 
 	if( (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void*)&optval, &optlen)) == SOCKET_ERROR ) {
 		int error = WSAGetLastError();
@@ -973,7 +973,7 @@
 
 		memset(zonename, 0, sizeof(zonename));
 		namesize = sizeof(zonename);
-		if ((r = RegQueryValueEx(key, "Std", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS)
+		if ((r = RegQueryValueEx(key, "Std", NULL, NULL, (LPBYTE)zonename, &namesize)) != ERROR_SUCCESS)
 		{
 			purple_debug_warning("wpurple", "could not query value for 'std' to identify Windows timezone: %i\n", (int) r);
 			RegCloseKey(key);
@@ -988,7 +988,7 @@
 		}
 		memset(zonename, 0, sizeof(zonename));
 		namesize = sizeof(zonename);
-		if ((r = RegQueryValueEx(key, "Dlt", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS)
+		if ((r = RegQueryValueEx(key, "Dlt", NULL, NULL, (LPBYTE)zonename, &namesize)) != ERROR_SUCCESS)
 		{
 			purple_debug_warning("wpurple", "could not query value for 'dlt' to identify Windows timezone: %i\n", (int) r);
 			RegCloseKey(key);
--- a/pidgin/Makefile.am	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/Makefile.am	Sat Mar 06 16:33:10 2010 +0000
@@ -21,6 +21,7 @@
 		win32/winpidgin.c \
 		win32/wspell.c \
 		win32/wspell.h \
+		win32/nsis/generate_gtk_zip.sh \
 		win32/nsis/pixmaps/pidgin-header.bmp \
 		win32/nsis/pixmaps/pidgin-intro.bmp \
 		win32/nsis/pixmaps/pidgin-install.ico \
--- a/pidgin/Makefile.mingw	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/Makefile.mingw	Sat Mar 06 16:33:10 2010 +0000
@@ -9,8 +9,6 @@
 
 DEFINES := $(subst -DWIN32_LEAN_AND_MEAN,,$(DEFINES))
 
-NEEDED_DLLS = $(GTKSPELL_TOP)/gtkspell/libgtkspell.dll
-
 ##
 ## VARIABLE DEFINITIONS
 ##
@@ -43,14 +41,12 @@
 			-I$(GTK_TOP)/include/atk-1.0 \
 			-I$(GTK_TOP)/include/cairo \
 			-I$(GTK_TOP)/lib/gtk-2.0/include \
-			-I$(GTKSPELL_TOP) \
-			-I$(ASPELL_TOP)/include
+			-I$(GTKSPELL_TOP)/include/gtkspell-2.0
 
 LIB_PATHS +=		-L$(GTK_TOP)/lib \
 			-L$(PURPLE_TOP) \
 			-L$(PIDGIN_TOP) \
-			-L$(PIDGIN_IDLETRACK_TOP) \
-			-L$(ASPELL_TOP)/lib
+			-L$(PIDGIN_IDLETRACK_TOP)
 
 ##
 ##  SOURCES, OBJECTS
@@ -151,7 +147,6 @@
 
 install_shallow: $(PIDGIN_INSTALL_DIR) $(EXE_TARGET).exe $(PIDGIN_TARGET).dll
 	cp $(EXE_TARGET).exe $(PIDGIN_TARGET).dll $(PIDGIN_INSTALL_DIR)
-	cp $(NEEDED_DLLS) $(PIDGIN_INSTALL_DIR)
 
 install: install_shallow all
 	$(MAKE) -C $(PIDGIN_PLUGINS_TOP) -f $(MINGW_MAKEFILE) install
--- a/pidgin/gtkblist.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/gtkblist.c	Sat Mar 06 16:33:10 2010 +0000
@@ -7818,20 +7818,29 @@
 static void
 edit_mood_cb(PurpleConnection *gc, PurpleRequestFields *fields)
 {
-	PurpleRequestField *f;
+	PurpleRequestField *mood_field, *text_field;
 	GList *l;
 
-	f = purple_request_fields_get_field(fields, "mood");
-	l = purple_request_field_list_get_selected(f);
+	mood_field = purple_request_fields_get_field(fields, "mood");
+	text_field = purple_request_fields_get_field(fields, "text");
+	l = purple_request_field_list_get_selected(mood_field);
 
 	if (l) {
-		const char *mood = purple_request_field_list_get_data(f, l->data);
+		const char *mood = purple_request_field_list_get_data(mood_field, l->data);
+		const char *text = purple_request_field_string_get_value(text_field);
 		PurpleAccount *account = purple_connection_get_account(gc);
 
 		if (mood != NULL && !purple_strequal(mood, "")) {
-			purple_account_set_status(account, "mood", TRUE,
-			                          PURPLE_MOOD_NAME, mood,
-			                          NULL);
+			if (text) {
+				purple_account_set_status(account, "mood", TRUE,
+			                          	PURPLE_MOOD_NAME, mood,
+				    				  	PURPLE_MOOD_COMMENT, text,
+			                          	NULL);
+			} else {
+				purple_account_set_status(account, "mood", TRUE,
+			                          	PURPLE_MOOD_NAME, mood,
+			                          	NULL);
+			}
 		} else {
 			purple_account_set_status(account, "mood", FALSE, NULL);
 		}
@@ -7884,6 +7893,15 @@
 
 	purple_request_fields_add_group(fields, g);
 
+	/* if the connection allows setting a mood message */
+	if (gc->flags & PURPLE_CONNECTION_SUPPORT_MOOD_MESSAGES) {
+		g = purple_request_field_group_new(NULL);
+		f = purple_request_field_string_new("text",
+		    _("Message (optional)"), NULL, FALSE);
+		purple_request_field_group_add_field(g, f);
+		purple_request_fields_add_group(fields, g);
+	}
+
 	purple_request_fields(gc, _("Edit User Mood"), _("Edit User Mood"),
                               NULL, fields,
                               _("OK"), G_CALLBACK(edit_mood_cb),
@@ -8016,8 +8034,10 @@
 		if (prpl_info &&
 		    (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods) ||
 			 PURPLE_PLUGIN_HAS_ACTIONS(plugin))) {
-			if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods)) {
+			if (PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_moods) &&
+			    gc->flags & PURPLE_CONNECTION_SUPPORT_MOODS) {
 				GList *types;
+
 				for (types = purple_account_get_status_types(account);
 			     	types != NULL ; types = types->next) {
 					PurpleStatusType *type = types->data;
--- a/pidgin/win32/gtkdocklet-win32.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/gtkdocklet-win32.c	Sat Mar 06 16:33:10 2010 +0000
@@ -21,7 +21,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  * 02111-1301, USA.
  */
-
+#define _WIN32_IE 0x0500
 #include <windows.h>
 #include <gdk/gdkwin32.h>
 #include <gdk/gdk.h>
@@ -51,7 +51,7 @@
 /* This is used to trigger click events on so they appear to GTK+ as if they are triggered by input */
 static GtkWidget *dummy_button = NULL;
 static GtkWidget *dummy_window = NULL;
-static NOTIFYICONDATA _nicon_data;
+static NOTIFYICONDATAW _nicon_data;
 
 static gboolean dummy_button_cb(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
 	pidgin_docklet_clicked(event->button);
@@ -64,7 +64,7 @@
 	switch(msg) {
 	case WM_CREATE:
 		purple_debug_info("docklet", "WM_CREATE\n");
-		taskbarRestartMsg = RegisterWindowMessage("TaskbarCreated");
+		taskbarRestartMsg = RegisterWindowMessageW(L"TaskbarCreated");
 		break;
 
 	case WM_TIMER:
@@ -114,7 +114,7 @@
 		if (msg == taskbarRestartMsg) {
 			/* explorer crashed and left us hanging...
 			   This will put the systray icon back in it's place, when it restarts */
-			Shell_NotifyIcon(NIM_ADD, &_nicon_data);
+			Shell_NotifyIconW(NIM_ADD, &_nicon_data);
 		}
 		break;
 	}/* end switch */
@@ -124,10 +124,10 @@
 
 /* Create hidden window to process systray messages */
 static HWND systray_create_hiddenwin() {
-	WNDCLASSEX wcex;
-	LPCTSTR wname;
+	WNDCLASSEXW wcex;
+	wchar_t *wname;
 
-	wname = TEXT("WinpidginSystrayWinCls");
+	wname = L"WinpidginSystrayWinCls";
 
 	wcex.cbSize = sizeof(wcex);
 	wcex.style		= 0;
@@ -142,22 +142,25 @@
 	wcex.lpszClassName	= wname;
 	wcex.hIconSm		= NULL;
 
-	RegisterClassEx(&wcex);
+	RegisterClassExW(&wcex);
 
 	/* Create the window */
-	return (CreateWindow(wname, "", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, winpidgin_exe_hinstance(), 0));
+	return (CreateWindowW(wname, L"", 0, 0, 0, 0, 0, GetDesktopWindow(), NULL, winpidgin_exe_hinstance(), 0));
 }
 
 static void systray_init_icon(HWND hWnd) {
+	wchar_t *w;
 	ZeroMemory(&_nicon_data, sizeof(_nicon_data));
-	_nicon_data.cbSize = sizeof(NOTIFYICONDATA);
+	_nicon_data.cbSize = sizeof(NOTIFYICONDATAW);
 	_nicon_data.hWnd = hWnd;
 	_nicon_data.uID = 0;
 	_nicon_data.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
 	_nicon_data.uCallbackMessage = WM_TRAYMESSAGE;
 	_nicon_data.hIcon = NULL;
-	lstrcpy(_nicon_data.szTip, PIDGIN_NAME);
-	Shell_NotifyIcon(NIM_ADD, &_nicon_data);
+	w = g_utf8_to_utf16(PIDGIN_NAME, -1, NULL, NULL, NULL);
+	wcsncpy(_nicon_data.szTip, w, sizeof(_nicon_data.szTip) / sizeof(wchar_t));
+	g_free(w);
+	Shell_NotifyIconW(NIM_ADD, &_nicon_data);
 	pidgin_docklet_embedded();
 }
 
@@ -486,11 +489,11 @@
 	g_return_if_fail(hicon != NULL);
 
 	_nicon_data.hIcon = hicon;
-	Shell_NotifyIcon(NIM_MODIFY, &_nicon_data);
+	Shell_NotifyIconW(NIM_MODIFY, &_nicon_data);
 }
 
 static void systray_remove_nid(void) {
-	Shell_NotifyIcon(NIM_DELETE, &_nicon_data);
+	Shell_NotifyIconW(NIM_DELETE, &_nicon_data);
 }
 
 static void winpidgin_tray_update_icon(PurpleStatusPrimitive status,
@@ -547,19 +550,19 @@
 
 static void winpidgin_tray_blank_icon() {
 	_nicon_data.hIcon = NULL;
-	Shell_NotifyIcon(NIM_MODIFY, &_nicon_data);
+	Shell_NotifyIconW(NIM_MODIFY, &_nicon_data);
 }
 
 static void winpidgin_tray_set_tooltip(gchar *tooltip) {
-	if (tooltip) {
-		char *locenc = NULL;
-		locenc = g_locale_from_utf8(tooltip, -1, NULL, NULL, NULL);
-		lstrcpyn(_nicon_data.szTip, locenc, sizeof(_nicon_data.szTip) / sizeof(TCHAR));
-		g_free(locenc);
-	} else {
-		lstrcpy(_nicon_data.szTip, PIDGIN_NAME);
-	}
-	Shell_NotifyIcon(NIM_MODIFY, &_nicon_data);
+	const char *value = tooltip;
+	wchar_t *w;
+	if (value == NULL) {
+		value = PIDGIN_NAME;
+	}	
+	w = g_utf8_to_utf16(value, -1, NULL, NULL, NULL);
+	wcsncpy(_nicon_data.szTip, w, sizeof(_nicon_data.szTip) / sizeof(wchar_t));
+	g_free(w);
+	Shell_NotifyIconW(NIM_MODIFY, &_nicon_data);
 }
 
 static void winpidgin_tray_minimize(PidginBuddyList *gtkblist) {
--- a/pidgin/win32/nsis/available.lst	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/available.lst	Sat Mar 06 16:33:10 2010 +0000
@@ -4,72 +4,46 @@
 sq,AL,sq_AL,Albanian (Albania),sq_AL.zip
 bg,BG,bg_BG,Bulgarian (Bulgaria),bg_BG.zip
 ca,ES,ca_ES,Catalan (Spain),ca_ES.zip
+cop,EG,cop_EG,Coptic (Egypt),cop_EG.zip
 hr,HR,hr_HR,Croatian (Croatia),hr_HR.zip
 cs,CZ,cs_CZ,Czech (Czech Republic),cs_CZ.zip
 da,DK,da_DK,Danish (Denmark),da_DK.zip
 nl,NL,nl_NL,Dutch (Netherlands),nl_NL.zip
 nl,NL,nl_med,Dutch Medical (Netherlands),nl_med.zip
-nl,BE,nl_NL,Dutch (Belgium),nl_NL.zip
-nl,BE,nl_NL,Dutch Medical (Belgium),nl_NL.zip
 en,AU,en_AU,English (Australia),en_AU.zip
 en,CA,en_CA,English (Canada),en_CA.zip
 en,NZ,en_NZ,English (New Zealand),en_NZ.zip
 en,ZA,en_ZA,English (South Africa),en_ZA.zip
 en,GB,en_GB,English (United Kingdom),en_GB.zip
 en,US,en_US,English (United States),en_US.zip
-cop,EG,cop_EG,Coptic (Egypt),cop_EG.zip
 eo,ANY,eo_l3,Esperanto,eo.zip
 et,EE,et_EE,Estonian (Estonia),et_EE.zip
 fo,FO,fo_FO,Faroese (Faroe Islands),fo_FO.zip
-fr,BE,fr_FR,Franテァais Rテゥforme 1990 & Classique (Belgium),fr_FR_1-3-2.zip
-fr,CA,fr_FR,Franテァais Rテゥforme 1990 & Classique (Canada),fr_FR_1-3-2.zip
-fr,FR,fr_FR,Franテァais Rテゥforme 1990 & Classique (France),fr_FR_1-3-2.zip
-fr,LU,fr_FR,Franテァais Rテゥforme 1990 & Classique (Luxembourg),fr_FR_1-3-2.zip
-fr,MC,fr_FR,Franテァais Rテゥforme 1990 & Classique (Monaco),fr_FR_1-3-2.zip
-fr,CH,fr_FR,Franテァais Rテゥforme 1990 & Classique (Switzerland),fr_FR_1-3-2.zip
-fr,BE,fr_FR-classique,Franテァais Classique (Belgium),fr_FR-classique_1-3-2.zip
-fr,CA,fr_FR-classique,Franテァais Classique (Canada),fr_FR-classique_1-3-2.zip
-fr,FR,fr_FR-classique,Franテァais Classique (France),fr_FR-classique_1-3-2.zip
-fr,LU,fr_FR-classique,Franテァais Classique (Luxembourg),fr_FR-classique_1-3-2.zip
-fr,MC,fr_FR-classique,Franテァais Classique (Monaco),fr_FR-classique_1-3-2.zip
-fr,CH,fr_FR-classique,Franテァais Classique  (Switzerland),fr_FR-classique_1-3-2.zip
-fr,BE,fr_FR-1990,Franテァais Rテゥforme 1990 (Belgium),fr_FR-1990_1-3-2.zip
-fr,CA,fr_FR-1990,Franテァais Rテゥforme 1990 (Canada),fr_FR-1990_1-3-2.zip
-fr,FR,fr_FR-1990,Franテァais Rテゥforme 1990 (France),fr_FR-1990_1-3-2.zip
-fr,LU,fr_FR-1990,Franテァais Rテゥforme 1990 (Luxembourg),fr_FR-1990_1-3-2.zip
-fr,MC,fr_FR-1990,Franテァais Rテゥforme 1990 (Monaco),fr_FR-1990_1-3-2.zip
-fr,CH,fr_FR-1990,Franテァais Rテゥforme 1990 (Switzerland),fr_FR-1990_1-3-2.zip
+fr,FR,fr_FR-classique,Fran軋is Classique,fr_FR-classique_1-3-2.zip
+fr,FR,fr_FR-1990,Fran軋is R馭orme 1990,fr_FR-1990_1-3-2.zip
+fr,FR,fr_FR,Fran軋is R馭orme 1990 & Classique,fr_FR_1-3-2.zip
 fy,NL,fy_NL,Frisian (Netherlands),fy_NL.zip
 gl,ES,gl_ES,Galician (Spain),gl_ES.zip
 gsc,FR,gsc_FR,Gascon (France),gsc_FR.zip
-de,AT,de_DE,German (Austria Base),de_DE.zip
 de,AT,de_AT,German (Austria Extension),de_AT.zip
 de,AT,de_AT_frami,German (Austria) neu 08/2006 (frami),de_AT_frami.zip
 de,DE,de_DE,German (Germany),de_DE.zip
 de,DE,de_DE_frami,German (Germany) neu 08/2006 (frami),de_DE_frami.zip
-de,LI,de_CH,German (Liechtenstein),de_CH.zip
-de,LI,de_CH_frami,German (Liechtenstein) neu 08/2006 (frami),de_CH_frami.zip
-de,LU,de_DE,German (Luxembourg),de_DE.zip
-de,LU,de_DE_frami,German (Luxembourg) neu 08/2006 (frami),de_DE_frami.zip
 de,CH,de_CH,German (Switzerland),de_CH.zip
 de,CT,de_CH_frami,German (Switzerland) neu 08/2006 (frami),de_CH_frami.zip
 el,GR,el_GR,Greek (Greece),el_GR.zip
 gu,IN,gu_IN,Gujarati (India),gu_IN.zip
-gd,GB,gd_GB,Scots Gaelic (Scotland),gd_GB.zip
 he,IL,he_IL,Hebrew (Israel),he_IL.zip
 hil,PH,hil_PH,Hiligaynon (Philippines),hil_PH.zip
 hu,HU,hu_HU,Hungarian (Hungary),hu_HU.zip
 hu,HU,hu_HU_comb,Hungarian (Hungary) collected compounds,hu_HU_comb.zip
 id,ID,id_ID,Indonesian (Indonesia),id_ID.zip
-ia,ANY,ia_ANY,Interlingua (ANY locale),ia_ANY.zip
 ga,IE,ga_IE,Irish (Ireland),ga_IE.zip
 it,IT,it_IT,Italian (Italy),it_IT.zip
-it,CH,it_IT,Italian (Switzerland),it_IT.zip
 sw,KE,sw_KE,Kiswahili (Africa),sw_KE.zip
+ku,TR,ku_TR,Kurdish (Turkey),ku_TR.zip
+it,IT,la,Latin,la.zip
 lv,LV,lv_LV,Latvian (Latvia),lv_LV.zip
-ku,TR,ku_TR,Kurdish (Turkey),ku_TR.zip
-ku,TR,ku_TR,Kurdish (Syria),ku_TR.zip
-it,IT,la,Latin (for x-register),la.zip
 lt,LT,lt_LT,Lithuanian (Lithuania),lt_LT.zip
 mk,MK,mk_MK,Macedonian (Macedonia),mk_MK.zip
 ms,MY,ms_MY,Malay (Malaysia),ms_MY.zip
@@ -89,6 +63,7 @@
 ru,RU,ru_RU,Russian (Russia),ru_RU.zip
 ru,RU,ru_RU_ye,Russian_ye (Russia),ru_RU_ye.zip
 ru,RU,ru_RU_yo,Russian_yo (Russia),ru_RU_yo.zip
+gd,GB,gd_GB,Scots Gaelic (Scotland),gd_GB.zip
 tn,ZA,tn_ZA,Setswana (Africa),tn_ZA.zip
 sk,SK,sk_SK,Slovak (Slovakia),sk_SK.zip
 sl,SI,sl_SI,Slovenian (Slovenia),sl_SI.zip
@@ -104,7 +79,6 @@
 es,EC,es_EC,Spanish (Ecuador),es_EC.zip
 es,SV,es_SV,Spanish (El Salvador),es_SV.zip
 es,GT,es_GT,Spanish (Guatemala),es_GT.zip
-es,HN,es_HN,Spanish (Honduras),es_HN.zip
 es,MX,es_MX,Spanish (Mexico),es_MX.zip
 es,NI,es_NI,Spanish (Nicaragua),es_NI.zip
 es,PA,es_PA,Spanish (Panama),es_PA.zip
@@ -118,8 +92,7 @@
 sv,SE,sv_SE,Swedish (Sweden),sv_SE.zip
 ts,ZA,ts_ZA,Tsonga (South Africa),ts_ZA.zip
 uk,UA,uk_UA,Ukrainian (Ukraine),uk_UA.zip
-ur,IN,ur_PK,Urdu (India),ur_PK.zip
-ur,PK,ur_PK,Urdu (Pakistan),ur_PK.zip
+ur,PK,ur_PK,Urdu,ur_PK.zip
 ve,ZA,ve_ZA,Venda (South Africa),ve_ZA.zip
 vi,VN,vi_VN,Vietnamese (Viet-Nam),vi_VN.zip
 cy,GB,cy_GB,Welsh (Wales),cy_GB.zip
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/win32/nsis/generate_gtk_zip.sh	Sat Mar 06 16:33:10 2010 +0000
@@ -0,0 +1,80 @@
+#!/bin/bash
+# Script to generate zip file for GTK+ runtime to be included in Pidgin installer
+
+PIDGIN_BASE=$1
+
+if [ ! -e $PIDGIN_BASE/ChangeLog.win32 ]; then
+	echo `basename $0` must must have the pidgin base dir specified as a parameter.
+	exit 1
+fi
+
+STAGE_DIR=$PIDGIN_BASE/pidgin/win32/nsis/gtk_runtime_stage
+#Subdirectory of $STAGE_DIR
+INSTALL_DIR=Gtk
+CONTENTS_FILE=$INSTALL_DIR/CONTENTS
+
+#This needs to be changed every time there is any sort of change.
+BUNDLE_VERSION=2.14.7.0
+
+ATK="http://ftp.gnome.org/pub/gnome/binaries/win32/atk/1.24/atk_1.24.0-1_win32.zip ATK 1.24.0-1"
+CAIRO="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/cairo_1.8.10-1_win32.zip Cairo 1.8.10-1"
+EXPAT="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/expat_2.0.1-1_win32.zip Expat 2.0.1-1"
+FONTCONFIG="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/fontconfig_2.8.0-2_win32.zip Fontconfig 2.8.0-2"
+FREETYPE="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/freetype_2.3.11-2_win32.zip Freetype 2.3.11-2"
+GETTEXT="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-0.17-1.zip Gettext 0.17-1"
+GLIB="http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.20/glib_2.20.5-1_win32.zip Glib 2.20.5-1"
+GTK="http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.14/gtk+_2.14.7-1_win32.zip GTK+ 2.14.7-1"
+LIBJPEG="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/jpeg-6b-4.zip libjpeg 6b-4"
+#Used by GTK+
+LIBPNG="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.2.39-1_win32.zip libpng 1.2.39-1"
+#Used by Cairo
+LIBPNG2="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libpng_1.4.0-1_win32.zip libpng 1.4.0-1"
+LIBTIFF="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/libtiff_3.9.1-1_win32.zip libtiff 3.9.1-1"
+PANGO="http://ftp.gnome.org/pub/gnome/binaries/win32/pango/1.26/pango_1.26.2-1_win32.zip Pango 1.26.2-1"
+ZLIB="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/zlib-1.2.3.zip zlib 1.2.3"
+
+ALL="ATK CAIRO EXPAT FONTCONFIG FREETYPE GETTEXT GLIB GTK LIBJPEG LIBPNG LIBPNG2 LIBTIFF PANGO ZLIB"
+
+mkdir -p $STAGE_DIR
+cd $STAGE_DIR
+
+rm -rf $INSTALL_DIR
+mkdir $INSTALL_DIR
+
+#new CONTENTS file
+echo Bundle Version $BUNDLE_VERSION > $CONTENTS_FILE
+
+function download_and_extract {
+	URL=${1%%\ *}
+	NAME=${1#*\ }
+	FILE=`basename $URL`
+	if [ ! -e $FILE ]; then
+		echo Downloading $NAME
+		wget $URL
+	fi
+	unzip -q $FILE -d $INSTALL_DIR
+	echo "$NAME" >> $CONTENTS_FILE
+}
+
+for VAL in $ALL
+do
+	VAR=${!VAL}
+	download_and_extract "$VAR"
+done
+
+#Default GTK+ Theme to MS-Windows
+echo gtk-theme-name = \"MS-Windows\" > $INSTALL_DIR/etc/gtk-2.0/gtkrc
+
+#Blow away translations that we don't have in Pidgin
+for LOCALE_DIR in $INSTALL_DIR/share/locale/*
+do
+	LOCALE=`basename $LOCALE_DIR`
+	if [ ! -e $PIDGIN_BASE/po/$LOCALE.po ]; then
+		echo Remove $LOCALE translation as it is missing from Pidgin
+		rm -r $LOCALE_DIR
+	fi
+done
+
+#Generate zip file to be included in installer
+zip -9 -r ../gtk-runtime-$BUNDLE_VERSION.zip Gtk
+
--- a/pidgin/win32/nsis/langmacros.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/langmacros.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -48,6 +48,7 @@
   !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_DESKTOP_SHORTCUT_DESC		${CUR_LANG}
   !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_STARTMENU_SHORTCUT_DESC	${CUR_LANG}
   !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT DEBUG_SYMBOLS_SECTION_TITLE ${CUR_LANG}
+  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT TRANSLATIONS_SECTION_TITLE ${CUR_LANG}
 
   ; Installer Finish Page
   !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_FINISH_VISIT_WEB_SITE		${CUR_LANG}
@@ -65,37 +66,11 @@
   ; Spellcheck Section Prompts
   !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_SECTION_TITLE	${CUR_LANG}
   !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_ERROR		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_DICT_ERROR		${CUR_LANG}
   !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT ASPELL_INSTALL_FAILED		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_BRETON		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_CATALAN		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_CZECH		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_WELSH		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_DANISH		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_GERMAN		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_ENGLISH		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_GREEK		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_ESPERANTO		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_SPANISH		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_FAROESE		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_FRENCH		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_ITALIAN		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_DUTCH		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_NORWEGIAN		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_POLISH		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_PORTUGUESE		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_ROMANIAN		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_RUSSIAN		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_SLOVAK		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_SWEDISH		${CUR_LANG}
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_SPELLCHECK_UKRAINIAN		${CUR_LANG}
 
   !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_DEBUGSYMBOLS_ERROR		${CUR_LANG}
   !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT PIDGIN_GTK_DOWNLOAD_ERROR		${CUR_LANG}
 
-  !insertmacro PIDGIN_MACRO_LANGSTRING_INSERT TRANSLATIONS_SECTION_TITLE	${CUR_LANG}
-
   !undef CUR_LANG
 !macroend
 
--- a/pidgin/win32/nsis/pidgin-installer.nsi	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/pidgin-installer.nsi	Sat Mar 06 16:33:10 2010 +0000
@@ -28,6 +28,7 @@
 ShowInstDetails show
 ShowUninstDetails show
 SetDateSave on
+RequestExecutionLevel highest
 
 ; $name and $INSTDIR are set in .onInit function..
 
@@ -53,7 +54,6 @@
 ;Defines
 
 !define PIDGIN_NSIS_INCLUDE_PATH		"."
-!define PIDGIN_INSTALLER_DEPS			"..\..\..\..\win32-dev\pidgin-inst-deps-20100223"
 
 ; Remove these and the stuff that uses them at some point
 !define OLD_GAIM_REG_KEY			"SOFTWARE\gaim"
@@ -71,8 +71,8 @@
 !define PERL_REG_KEY				"SOFTWARE\Perl"
 !define PERL_DLL				"perl510.dll"
 
-!define ASPELL_REG_KEY				"SOFTWARE\Aspell"
 !define DOWNLOADER_URL				"http://pidgin.im/win32/download_redir.php"
+!define SPELL_DOWNLOAD_URL			"http://ftp.services.openoffice.org/pub/OpenOffice.org/contrib/dictionaries"
 
 !define MEMENTO_REGISTRY_ROOT			HKLM
 !define MEMENTO_REGISTRY_KEY			"${PIDGIN_UNINSTALL_KEY}"
@@ -302,7 +302,7 @@
           IfErrors uninstall_problem
             ; Ready to uninstall..
             ClearErrors
-            ExecWait '"$TEMP\$R6" /S /KEEPGTK=1 _?=$R1'
+            ExecWait '"$TEMP\$R6" /S /UPGRADE=1 _?=$R1'
             IfErrors exec_error
               Delete "$TEMP\$R6"
             Goto done
@@ -340,7 +340,7 @@
 !ifdef OFFLINE_INSTALLER
 
   SetOutPath $PLUGINSDIR
-  File /oname=gtk.zip "..\..\..\..\gtk_installer\gtk-runtime-${GTK_INSTALL_VERSION}.zip"
+  File /oname=gtk.zip ".\gtk-runtime-${GTK_INSTALL_VERSION}.zip"
 
 !else
 
@@ -356,6 +356,9 @@
 
 !endif
 
+  ;Delete the old Gtk directory
+  RMDir /r "$INSTDIR\Gtk"
+
   SetOutPath "$INSTDIR"
   nsisunz::UnzipToLog $R1 "$INSTDIR"
   Pop $R0
@@ -414,7 +417,6 @@
     Delete "$INSTDIR\plugins\libjabber.dll"
 
     File /r /x locale ..\..\..\${PIDGIN_INSTALL_DIR}\*.*
-    File "${PIDGIN_INSTALLER_DEPS}\exchndl.dll"
 
     ; Check if Perl is installed, if so add it to the AppPaths
     ReadRegStr $R2 HKLM ${PERL_REG_KEY} ""
@@ -504,7 +506,7 @@
 !macro LANG_SECTION lang
   ${MementoUnselectedSection} "${lang}" SecLang_${lang}
     SetOutPath "$INSTDIR\locale\${lang}\LC_MESSAGES"
-    File /oname=pidgin.mo "..\..\..\${PIDGIN_INSTALL_DIR}\locale\${lang}\LC_MESSAGES\pidgin.mo"
+    File "..\..\..\${PIDGIN_INSTALL_DIR}\locale\${lang}\LC_MESSAGES\*.mo"
     SetOutPath "$INSTDIR"
   ${MementoSectionEnd}
 !macroend
@@ -517,95 +519,15 @@
 ;--------------------------------
 ;Spell Checking
 
-SectionGroup /e $(PIDGIN_SPELLCHECK_SECTION_TITLE) SecSpellCheck
-  Section /o $(PIDGIN_SPELLCHECK_BRETON) SecSpellCheckBreton
-    Push ${SecSpellCheckBreton}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_CATALAN) SecSpellCheckCatalan
-    Push ${SecSpellCheckCatalan}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_CZECH) SecSpellCheckCzech
-    Push ${SecSpellCheckCzech}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_WELSH) SecSpellCheckWelsh
-    Push ${SecSpellCheckWelsh}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_DANISH) SecSpellCheckDanish
-    Push ${SecSpellCheckDanish}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_GERMAN) SecSpellCheckGerman
-    Push ${SecSpellCheckGerman}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_GREEK) SecSpellCheckGreek
-    Push ${SecSpellCheckGreek}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_ENGLISH) SecSpellCheckEnglish
-    Push ${SecSpellCheckEnglish}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_ESPERANTO) SecSpellCheckEsperanto
-    Push ${SecSpellCheckEsperanto}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_SPANISH) SecSpellCheckSpanish
-    Push ${SecSpellCheckSpanish}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_FAROESE) SecSpellCheckFaroese
-    Push ${SecSpellCheckFaroese}
-    Call InstallAspellAndDict
+!macro SPELLCHECK_SECTION lang lang_name lang_file
+  Section /o "${lang_name}" SecSpell_${lang}
+    Push ${lang_file}
+    Push ${lang}
+    Call InstallDict
   SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_FRENCH) SecSpellCheckFrench
-    Push ${SecSpellCheckFrench}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_ITALIAN) SecSpellCheckItalian
-    Push ${SecSpellCheckItalian}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_DUTCH) SecSpellCheckDutch
-    Push ${SecSpellCheckDutch}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_NORWEGIAN) SecSpellCheckNorwegian
-    Push ${SecSpellCheckNorwegian}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_POLISH) SecSpellCheckPolish
-    Push ${SecSpellCheckPolish}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_PORTUGUESE) SecSpellCheckPortuguese
-    Push ${SecSpellCheckPortuguese}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_ROMANIAN) SecSpellCheckRomanian
-    Push ${SecSpellCheckRomanian}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_RUSSIAN) SecSpellCheckRussian
-    Push ${SecSpellCheckRussian}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_SLOVAK) SecSpellCheckSlovak
-    Push ${SecSpellCheckSlovak}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_SWEDISH) SecSpellCheckSwedish
-    Push ${SecSpellCheckSwedish}
-    Call InstallAspellAndDict
-  SectionEnd
-  Section /o $(PIDGIN_SPELLCHECK_UKRAINIAN) SecSpellCheckUkrainian
-    Push ${SecSpellCheckUkrainian}
-    Call InstallAspellAndDict
-  SectionEnd
+!macroend
+SectionGroup $(PIDGIN_SPELLCHECK_SECTION_TITLE) SecSpellCheck
+  !include "pidgin-spellcheck.nsh"
 SectionGroupEnd
 
 Section /o $(DEBUG_SYMBOLS_SECTION_TITLE) SecDebugSymbols
@@ -769,9 +691,16 @@
     Delete "$INSTDIR\sounds\purple\send.wav"
     RMDir "$INSTDIR\sounds\purple"
     RMDir "$INSTDIR\sounds"
+    Delete "$INSTDIR\spellcheck\libenchant.dll"
+    Delete "$INSTDIR\spellcheck\libgtkspell-0.dll"
+    Delete "$INSTDIR\spellcheck\lib\enchant\libenchant_aspell.dll"
+    Delete "$INSTDIR\spellcheck\lib\enchant\libenchant_ispell.dll"
+    Delete "$INSTDIR\spellcheck\lib\enchant\libenchant_myspell.dll"
+    RMDir "$INSTDIR\spellcheck\lib\enchant"
+    RMDir "$INSTDIR\spellcheck\lib"
+    RMDir "$INSTDIR\spellcheck"
     Delete "$INSTDIR\freebl3.dll"
     Delete "$INSTDIR\idletrack.dll"
-    Delete "$INSTDIR\libgtkspell.dll"
     Delete "$INSTDIR\libjabber.dll"
     Delete "$INSTDIR\libnspr4.dll"
     Delete "$INSTDIR\libmeanwhile-1.dll"
@@ -803,10 +732,13 @@
     ; Remove the local GTK+ copy (if we're not just upgrading)
     ${GetParameters} $R0
     ClearErrors
-    ${GetOptions} "$R0" "/KEEPGTK=" $R1
+    ${GetOptions} "$R0" "/UPGRADE=" $R1
     IfErrors +2
-    StrCmp $R1 "1" +2
+    StrCmp $R1 "1" upgrade_done
     RMDir /r "$INSTDIR\Gtk"
+    ; Remove the downloaded spellcheck dictionaries (if we're not just upgrading)
+    RMDir /r "$INSTDIR\spellcheck"
+    upgrade_done:
 
     ;Try to remove Pidgin install dir (only if empty)
     RMDir "$INSTDIR"
@@ -845,50 +777,7 @@
 
   !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheck} \
         $(PIDGIN_SPELLCHECK_SECTION_DESCRIPTION)
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckBreton} \
-        "$(PIDGIN_SPELLCHECK_BRETON) (862kb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckCatalan} \
-        "$(PIDGIN_SPELLCHECK_CATALAN) (3.9Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckCzech} \
-        "$(PIDGIN_SPELLCHECK_CZECH) (17Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckWelsh} \
-        "$(PIDGIN_SPELLCHECK_WELSH) (4.2Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckDanish} \
-        "$(PIDGIN_SPELLCHECK_DANISH) (6.9Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckGerman} \
-        "$(PIDGIN_SPELLCHECK_GERMAN) (5.4Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckGreek} \
-        "$(PIDGIN_SPELLCHECK_GREEK) (7.1Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckEnglish} \
-        "$(PIDGIN_SPELLCHECK_ENGLISH) (2.3Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckEsperanto} \
-        "$(PIDGIN_SPELLCHECK_ESPERANTO) (5.7Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckSpanish} \
-        "$(PIDGIN_SPELLCHECK_SPANISH) (7.0Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckFaroese} \
-        "$(PIDGIN_SPELLCHECK_FAROESE) (913kb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckFrench} \
-        "$(PIDGIN_SPELLCHECK_FRENCH) (9.3Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckItalian} \
-        "$(PIDGIN_SPELLCHECK_ITALIAN) (770kb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckDutch} \
-        "$(PIDGIN_SPELLCHECK_DUTCH) (3.7Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckNorwegian} \
-        "$(PIDGIN_SPELLCHECK_NORWEGIAN) (3.2Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckPolish} \
-        "$(PIDGIN_SPELLCHECK_POLISH) (9.3Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckPortuguese} \
-        "$(PIDGIN_SPELLCHECK_PORTUGUESE) (5.5Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckRomanian} \
-        "$(PIDGIN_SPELLCHECK_ROMANIAN) (906kb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckRussian} \
-        "$(PIDGIN_SPELLCHECK_RUSSIAN) (11Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckSlovak} \
-        "$(PIDGIN_SPELLCHECK_SLOVAK) (8.0Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckSwedish} \
-        "$(PIDGIN_SPELLCHECK_SWEDISH) (2.2Mb)"
-  !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckUkrainian} \
-        "$(PIDGIN_SPELLCHECK_UKRAINIAN) (12Mb)"
+
 !insertmacro MUI_FUNCTION_DESCRIPTION_END
 
 ;--------------------------------
@@ -1235,12 +1124,6 @@
 
   ${MementoSectionRestore}
 
-  !insertmacro SetSectionFlag ${SecSpellCheck} ${SF_RO}
-  !insertmacro UnselectSection ${SecSpellCheck}
-
-  ;Mark the dictionaries that are already installed as readonly
-  Call SelectAndDisableInstalledDictionaries
-
   ;Preselect the URI handlers as appropriate
   Call SelectURIHandlerSelections
 
@@ -1339,6 +1222,10 @@
     StrCpy $INSTDIR "$R2\Pidgin"
 
   instdir_done:
+
+  ;Mark the dictionaries that are already installed as readonly
+  Call SelectAndDisableInstalledDictionaries
+
 ;LogSet on
   Pop $R3
   Pop $R2
@@ -1395,234 +1282,72 @@
 ; Convert the a Section index to the language code
 ; Push the section index onto the stack and pop off the language code after the call
 ; This will set the error code, if no match is found
-Function GetLangCodeForSection
-  ClearErrors
-  Push $R0
-  Exch
-  Pop $R0 ;This is the section index
-
-  IntCmp $R0 ${SecSpellCheckBreton} 0 +3 +3
-  StrCpy $R0 "br"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckCatalan} 0 +3 +3
-  StrCpy $R0 "ca"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckCzech} 0 +3 +3
-  StrCpy $R0 "cs"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckWelsh} 0 +3 +3
-  StrCpy $R0 "cy"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckDanish} 0 +3 +3
-  StrCpy $R0 "da"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckGerman} 0 +3 +3
-  StrCpy $R0 "de"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckGreek} 0 +3 +3
-  StrCpy $R0 "el"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckEnglish} 0 +3 +3
-  StrCpy $R0 "en"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckEsperanto} 0 +3 +3
-  StrCpy $R0 "eo"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckSpanish} 0 +3 +3
-  StrCpy $R0 "es"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckFaroese} 0 +3 +3
-  StrCpy $R0 "fo"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckFrench} 0 +3 +3
-  StrCpy $R0 "fr"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckItalian} 0 +3 +3
-  StrCpy $R0 "it"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckDutch} 0 +3 +3
-  StrCpy $R0 "nl"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckNorwegian} 0 +3 +3
-  StrCpy $R0 "no"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckPolish} 0 +3 +3
-  StrCpy $R0 "pl"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckPortuguese} 0 +3 +3
-  StrCpy $R0 "pt"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckRomanian} 0 +3 +3
-  StrCpy $R0 "ro"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckRussian} 0 +3 +3
-  StrCpy $R0 "ru"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckSlovak} 0 +3 +3
-  StrCpy $R0 "sk"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckSwedish} 0 +3 +3
-  StrCpy $R0 "sv"
-  Goto done
-  IntCmp $R0 ${SecSpellCheckUkrainian} 0 +3 +3
-  StrCpy $R0 "uk"
-  Goto done
-
-  SetErrors
-
-  done:
-  Exch $R0
-FunctionEnd ;GetLangCodeForSection
 
 ; Select and Disable any Sections that have currently installed dictionaries
+!macro CHECK_SPELLCHECK_SECTION lang
+  ;Advance to the next (correct) section index
+  IntOp $R0 $R0 + 1
+  IfFileExists "$INSTDIR\spellcheck\share\enchant\myspell\${lang}.dic" 0 done_${lang}
+  SectionGetFlags $R0 $R1
+  IntOp $R1 $R1 | ${SF_RO} ; Mark Readonly
+  IntOp $R1 $R1 | ${SF_SELECTED} ; Select
+  SectionSetFlags $R0 $R1
+  done_${lang}:
+!macroend
 Function SelectAndDisableInstalledDictionaries
   Push $R0
   Push $R1
-  Push $R2
-
-  ; Start with the first language dictionary
-  IntOp $R0 ${SecSpellCheck} + 1
-
-  start:
-  ; If it is the end of the section group, stop
-  SectionGetFlags $R0 $R1
-  IntOp $R2 $R1 & ${SF_SECGRPEND}
-  IntCmp $R2 ${SF_SECGRPEND} done
-
-  Push $R0
-  Call GetLangCodeForSection
-  Pop $R2
-  IfErrors end_loop
-  ReadRegStr $R2 HKLM "${ASPELL_REG_KEY}-$R2" "" ; Check that the dictionary is installed
-  StrCmp $R2 "" end_loop ; If it isn't installed, skip to the next item
-  IntOp $R1 $R1 | ${SF_RO} ; Mark Readonly
-  IntOp $R1 $R1 | ${SF_SELECTED} ; Select
-  SectionSetFlags $R0 $R1
-
-  end_loop:
-  IntOp $R0 $R0 + 1 ;Advance to the next section
-  Goto start
 
-  done:
-  Pop $R2
-  Pop $R1
-  Pop $R0
-FunctionEnd
-
-Function InstallAspellAndDict
-  Push $R0
-  Exch
-  Call GetLangCodeForSection
-  Pop $R0 ;This is the language code
-  Push $R1
-
-  InitPluginsDir
-
-  IfErrors done ; We weren't able to convert the section to lang code
+  !insertmacro SetSectionFlag ${SecSpellCheck} ${SF_RO}
+  !insertmacro UnselectSection ${SecSpellCheck}
 
-  retry:
-    Call InstallAspell
-    Pop $R1
-    StrCmp $R1 "" +3
-    StrCmp $R1 "cancel" done
-    MessageBox MB_RETRYCANCEL "$(PIDGIN_SPELLCHECK_ERROR) : $R1" /SD IDCANCEL IDRETRY retry IDCANCEL done
-
-  retry_dict:
-    Push $R0
-    Call InstallAspellDictionary
-    Pop $R1
-    StrCmp $R1 "" +3
-    StrCmp $R1 "cancel" done
-    MessageBox MB_RETRYCANCEL "$(PIDGIN_SPELLCHECK_DICT_ERROR) : $R1" /SD IDCANCEL IDRETRY retry_dict
-
-  done:
+  IntOp $R0 ${SecSpellCheck} + 0
+  !include "pidgin-spellcheck-preselect.nsh"
 
   Pop $R1
   Pop $R0
 FunctionEnd
 
-Function InstallAspell
-  Push $R0
-  Push $R1
-  Push $R2
-
-  check:
-  ClearErrors
-  ReadRegDWORD $R0 HKLM ${ASPELL_REG_KEY} "AspellVersion"
-  IntCmp $R0 15 installed
-
-  ; If this is the check after installation, don't infinite loop on failure
-  StrCmp $R1 "$PLUGINSDIR\aspell_installer.exe" 0 +3
-    StrCpy $R0 $(ASPELL_INSTALL_FAILED)
-    Goto done
-
-  ; We need to download and install aspell
-  StrCpy $R1 "$PLUGINSDIR\aspell_installer.exe"
-  StrCpy $R2 "${DOWNLOADER_URL}?version=${PIDGIN_VERSION}&dl_pkg=aspell_core"
-  DetailPrint "Downloading Aspell... ($R2)"
-  NSISdl::download /TIMEOUT=10000 $R2 $R1
-  Pop $R0
-  StrCmp $R0 "success" +2
-    Goto done
-  ExecWait '"$R1"'
-  Delete $R1
-  Goto check ; Check that it is now installed correctly
-
-  installed: ;Aspell is currently installed, no error message
-    DetailPrint "Aspell is installed"
-    StrCpy $R0 ''
-
-  done:
-  Pop $R2
-  Pop $R1
-  Exch $R0
-FunctionEnd
-
-Function InstallAspellDictionary
+Function InstallDict
   Push $R0
   Exch
   Pop $R0 ;This is the language code
   Push $R1
+  Exch 2
+  Pop $R1 ;This is the language file
   Push $R2
   Push $R3
-  Push $R4
 
-  check:
   ClearErrors
-  ReadRegStr $R2 HKLM "${ASPELL_REG_KEY}-$R0" ""
-  StrCmp $R2 "" 0 installed
+  IfFileExists "$INSTDIR\spellcheck\share\enchant\myspell\$R0.dic" installed
+
+  InitPluginsDir
 
-  ; If this is the check after installation, don't infinite loop on failure
-  StrCmp $R1 "$PLUGINSDIR\aspell_dict-$R0.exe" 0 +3
-    StrCpy $R0 $(ASPELL_INSTALL_FAILED)
+  ; We need to download and install dictionary
+  StrCpy $R2 "$PLUGINSDIR\$R1"
+  StrCpy $R3 "${SPELL_DOWNLOAD_URL}/$R1"
+  DetailPrint "Downloading the $R0 Dictionary... ($R3)"
+  retry:
+  NSISdl::download /TIMEOUT=10000 "$R3" "$R2"
+  Pop $R3
+  StrCmp $R3 "cancel" done
+  StrCmp $R3 "success" +3
+    MessageBox MB_RETRYCANCEL "$(PIDGIN_SPELLCHECK_ERROR) : $R3" /SD IDCANCEL IDRETRY retry IDCANCEL done
+    Goto done
+  SetOutPath "$INSTDIR\spellcheck\share\enchant\myspell"
+  nsisunz::UnzipToLog "$R2" "$OUTDIR"
+  SetOutPath "$INSTDIR"
+  Pop $R3
+  StrCmp $R3 "success" installed
+    DetailPrint "$R3" ;print error message to log
     Goto done
 
-  ; We need to download and install aspell
-  StrCpy $R1 "$PLUGINSDIR\aspell_dict-$R0.exe"
-  StrCpy $R3 "${DOWNLOADER_URL}?version=${PIDGIN_VERSION}&dl_pkg=lang_$R0"
-  DetailPrint "Downloading the Aspell $R0 Dictionary... ($R3)"
-  NSISdl::download /TIMEOUT=10000 $R3 $R1
-  Pop $R3
-  StrCmp $R3 "success" +3
-    StrCpy $R0 $R3
-    Goto done
-  ; Use a specific temporary $OUTDIR for each dictionary because the installer doesn't clean up after itself
-  StrCpy $R4 "$OUTDIR"
-  SetOutPath "$PLUGINSDIR\aspell_dict-$R0"
-  ExecWait '"$R1"'
-  SetOutPath "$R4"
-  RMDir /r "$PLUGINSDIR\aspell_dict-$R0"
-  Delete $R1
-  Goto check ; Check that it is now installed correctly
-
   installed: ;The dictionary is currently installed, no error message
-    DetailPrint "Aspell $R0 Dictionary is installed"
-    StrCpy $R0 ''
+    DetailPrint "$R0 Dictionary is installed"
 
   done:
-  Pop $R4
   Pop $R3
   Pop $R2
-  Pop $R1
-  Exch $R0
+  Pop $R0
+  Exch $R1
 FunctionEnd
--- a/pidgin/win32/nsis/translations/afrikaans.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/afrikaans.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -49,29 +49,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE	"Speltoets-ondersteuning"
 !define PIDGIN_SPELLCHECK_ERROR		"Fout met installering van speltoetser"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Fout met installering van speltoetswoordeboek"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Ondersteuning vir speltoeter.  (Internetverbinding benodigd vir installasie)"
-!define ASPELL_INSTALL_FAILED			"Installasie het misluk"
-!define PIDGIN_SPELLCHECK_BRETON		"Bretons"
-!define PIDGIN_SPELLCHECK_CATALAN		"Katalaans"
-!define PIDGIN_SPELLCHECK_CZECH		"Tsjeggies"
-!define PIDGIN_SPELLCHECK_WELSH		"Wallies"
-!define PIDGIN_SPELLCHECK_DANISH		"Deens"
-!define PIDGIN_SPELLCHECK_GERMAN		"Duits"
-!define PIDGIN_SPELLCHECK_GREEK		"Grieks"
-!define PIDGIN_SPELLCHECK_ENGLISH		"Engels"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH		"Spaans"
-!define PIDGIN_SPELLCHECK_FAROESE		"Faroes"
-!define PIDGIN_SPELLCHECK_FRENCH		"Frans"
-!define PIDGIN_SPELLCHECK_ITALIAN		"Italiaans"
-!define PIDGIN_SPELLCHECK_DUTCH		"Nederlands"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Noorweegs"
-!define PIDGIN_SPELLCHECK_POLISH		"Pools"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugees"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Roemeens"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"Russies"
-!define PIDGIN_SPELLCHECK_SLOVAK		"Slowaaks"
-!define PIDGIN_SPELLCHECK_SWEDISH		"Sweeds"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Oekraens"
 
--- a/pidgin/win32/nsis/translations/arabic.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/arabic.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -47,29 +47,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE	"マレ ヌ睫マ゙゙ ヌ眷聶ヌニ"
 !define PIDGIN_SPELLCHECK_ERROR		"ホリテ テヒ萇チ ハヒネハ ヌ睫マ゙゙ ヌ眷聶ヌニ"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"ホリテ テヒ萇チ ハヒネハ ゙ヌ肆モ ヌ睫マ゙゙ ヌ眷聶ヌニ"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"マレ ヌ睫マ゙゙ ヌ眷聶ヌニ.  (聒礦ネ ヌハユヌ ネヌ眷萍ム萍 矣ハヒネハ)"
-!define ASPELL_INSTALL_FAILED			"ンヤ ヌ睫ヒネハ"
-!define PIDGIN_SPELLCHECK_BRETON		"Breton"
-!define PIDGIN_SPELLCHECK_CATALAN		"Catalan"
-!define PIDGIN_SPELLCHECK_CZECH		"Czech"
-!define PIDGIN_SPELLCHECK_WELSH		"Welsh"
-!define PIDGIN_SPELLCHECK_DANISH		"Danish"
-!define PIDGIN_SPELLCHECK_GERMAN		"German"
-!define PIDGIN_SPELLCHECK_GREEK		"Greek"
-!define PIDGIN_SPELLCHECK_ENGLISH		"English"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH		"Spanish"
-!define PIDGIN_SPELLCHECK_FAROESE		"Faroese"
-!define PIDGIN_SPELLCHECK_FRENCH		"French"
-!define PIDGIN_SPELLCHECK_ITALIAN		"Italian"
-!define PIDGIN_SPELLCHECK_DUTCH		"Dutch"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norwegian"
-!define PIDGIN_SPELLCHECK_POLISH		"Polish"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portuguese"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Romanian"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"Russian"
-!define PIDGIN_SPELLCHECK_SLOVAK		"Slovak"
-!define PIDGIN_SPELLCHECK_SWEDISH		"Swedish"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukrainian"
 
--- a/pidgin/win32/nsis/translations/basque.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/basque.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -47,29 +47,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE	"Zuzentzaile Ortografikoa"
 !define PIDGIN_SPELLCHECK_ERROR		"Errorea Zuzentzaile Ortografikoa instalatzean"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Errorea Zuzentzaile Ortografikoarentzako hiztegia instalatzean"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Zuzentzaile Ortografikoa.  (Internet konexioa behar du instalatzeko)"
-!define ASPELL_INSTALL_FAILED			"Ezin izan da instalatu"
-!define PIDGIN_SPELLCHECK_BRETON		"Britaniera"
-!define PIDGIN_SPELLCHECK_CATALAN		"Katalana"
-!define PIDGIN_SPELLCHECK_CZECH		"Txekiera"
-!define PIDGIN_SPELLCHECK_WELSH		"Gaelikoa"
-!define PIDGIN_SPELLCHECK_DANISH		"Daniera"
-!define PIDGIN_SPELLCHECK_GERMAN		"Alemana"
-!define PIDGIN_SPELLCHECK_GREEK		"Grekoa"
-!define PIDGIN_SPELLCHECK_ENGLISH		"Ingelesa"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperantoa"
-!define PIDGIN_SPELLCHECK_SPANISH		"Gaztelania"
-!define PIDGIN_SPELLCHECK_FAROESE		"Faroera"
-!define PIDGIN_SPELLCHECK_FRENCH		"Frantsesa"
-!define PIDGIN_SPELLCHECK_ITALIAN		"Italiera"
-!define PIDGIN_SPELLCHECK_DUTCH		"Nederlandera"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norvegiera"
-!define PIDGIN_SPELLCHECK_POLISH		"Poloniera"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugesa"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Errumaniera"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"Errusiera"
-!define PIDGIN_SPELLCHECK_SLOVAK		"Eslovakiera"
-!define PIDGIN_SPELLCHECK_SWEDISH		"Suediera"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukraniera"
 
--- a/pidgin/win32/nsis/translations/catalan.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/catalan.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -46,29 +46,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Suport a la Verificaci de l'Ortografia "
 !define PIDGIN_SPELLCHECK_ERROR			"Error instal.lant verificaci de l'ortografia"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Error Instal.lant Diccionari  per a Verificaci de l'Ortografia"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Suport per a Verificaci de l'Ortografia.  (駸 necesaria connexi a internet per dur a terme la instal.laci)"
-!define ASPELL_INSTALL_FAILED			"La instal.laci ha fallat"
-!define PIDGIN_SPELLCHECK_BRETON			"Bret"
-!define PIDGIN_SPELLCHECK_CATALAN			"Catal"
-!define PIDGIN_SPELLCHECK_CZECH			"Txec"
-!define PIDGIN_SPELLCHECK_WELSH			"Galキl鑚"
-!define PIDGIN_SPELLCHECK_DANISH			"Dan鑚"
-!define PIDGIN_SPELLCHECK_GERMAN			"Alemany"
-!define PIDGIN_SPELLCHECK_GREEK			"Grec"
-!define PIDGIN_SPELLCHECK_ENGLISH			"Angl鑚"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH			"Espanyol"
-!define PIDGIN_SPELLCHECK_FAROESE			"Fero鑚"
-!define PIDGIN_SPELLCHECK_FRENCH			"Franc鑚"
-!define PIDGIN_SPELLCHECK_ITALIAN			"Itali"
-!define PIDGIN_SPELLCHECK_DUTCH			"Holand鑚"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Noruec"
-!define PIDGIN_SPELLCHECK_POLISH			"Polon鑚"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugu鑚"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Roman鑚"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"Rus"
-!define PIDGIN_SPELLCHECK_SLOVAK			"Eslovac"
-!define PIDGIN_SPELLCHECK_SWEDISH			"Suec"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ucran鑚"
 
--- a/pidgin/win32/nsis/translations/dutch.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/dutch.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -39,28 +39,4 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Spellingscontrole"
 !define PIDGIN_SPELLCHECK_ERROR			"Fout bij installatie van spellingscontrole"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Fout bij installatie van woordenboek voor spellingscontrole"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Ondersteuning voor spellingscontrole. (Internetverbinding nodig voor installatie)"
-!define ASPELL_INSTALL_FAILED			"Installatie mislukt"
-!define PIDGIN_SPELLCHECK_BRETON			"Bretons"
-!define PIDGIN_SPELLCHECK_CATALAN			"Catalaans"
-!define PIDGIN_SPELLCHECK_CZECH			"Tsjechisch"
-!define PIDGIN_SPELLCHECK_WELSH			"Welsh"
-!define PIDGIN_SPELLCHECK_DANISH			"Deens"
-!define PIDGIN_SPELLCHECK_GERMAN			"Duits"
-!define PIDGIN_SPELLCHECK_GREEK			"Grieks"
-!define PIDGIN_SPELLCHECK_ENGLISH			"Engels"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH			"Spaans"
-!define PIDGIN_SPELLCHECK_FAROESE			"Faroese"
-!define PIDGIN_SPELLCHECK_FRENCH			"Frans"
-!define PIDGIN_SPELLCHECK_ITALIAN			"Italiaans"
-!define PIDGIN_SPELLCHECK_DUTCH			"Nederlands"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Noors"
-!define PIDGIN_SPELLCHECK_POLISH			"Pools"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugees"
-!define PIDGIN_SPELLCHECK_ROMANIAN			"Roemeens"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"Russisch"
-!define PIDGIN_SPELLCHECK_SLOVAK			"Slowaaks"
-!define PIDGIN_SPELLCHECK_SWEDISH			"Zweeds"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Oekrans"
--- a/pidgin/win32/nsis/translations/english.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/english.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -54,31 +54,7 @@
 ; Spellcheck Section Prompts
 !insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_SECTION_TITLE	"Spellchecking Support"
 !insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_ERROR		"Error Installing Spellchecking"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_DICT_ERROR		"Error Installing Spellchecking Dictionary"
 !insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Support for Spellchecking.  (Internet connection required for installation)"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING ASPELL_INSTALL_FAILED			"Installation Failed"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_BRETON		"Breton"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_CATALAN		"Catalan"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_CZECH		"Czech"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_WELSH		"Welsh"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_DANISH		"Danish"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_GERMAN		"German"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_GREEK		"Greek"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_ENGLISH		"English"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_SPANISH		"Spanish"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_FAROESE		"Faroese"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_FRENCH		"French"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_ITALIAN		"Italian"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_DUTCH		"Dutch"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_NORWEGIAN		"Norwegian"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_POLISH		"Polish"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_PORTUGUESE		"Portuguese"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_ROMANIAN		"Romanian"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_RUSSIAN		"Russian"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_SLOVAK		"Slovak"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_SWEDISH		"Swedish"
-!insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_SPELLCHECK_UKRAINIAN		"Ukrainian"
 
 !insertmacro PIDGIN_MACRO_DEFAULT_STRING PIDGIN_DEBUGSYMBOLS_ERROR		"Error Installing Debug Symbols"
 
--- a/pidgin/win32/nsis/translations/finnish.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/finnish.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -48,29 +48,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Oikolukutuki"
 !define PIDGIN_SPELLCHECK_ERROR			"Virhe asennettaessa oikolukua"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Virhe asennettaessa oikoluvun sanakirjaa"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Tuki oikoluvulle.  (Asennukseen tarvitaan Internet-yhteys)"
-!define ASPELL_INSTALL_FAILED			"Asennus ep與nnistui"
-!define PIDGIN_SPELLCHECK_BRETON		"bretoni"
-!define PIDGIN_SPELLCHECK_CATALAN		"katalaani"
-!define PIDGIN_SPELLCHECK_CZECH		"tshekki"
-!define PIDGIN_SPELLCHECK_WELSH		"kymri"
-!define PIDGIN_SPELLCHECK_DANISH		"tanska"
-!define PIDGIN_SPELLCHECK_GERMAN		"saksa"
-!define PIDGIN_SPELLCHECK_GREEK		"kreikka"
-!define PIDGIN_SPELLCHECK_ENGLISH		"englanti"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH		"espanja"
-!define PIDGIN_SPELLCHECK_FAROESE		"f蒿ri"
-!define PIDGIN_SPELLCHECK_FRENCH		"ranska"
-!define PIDGIN_SPELLCHECK_ITALIAN		"italia"
-!define PIDGIN_SPELLCHECK_DUTCH		"hollanti"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"norja"
-!define PIDGIN_SPELLCHECK_POLISH		"puola"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"portugali"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"romania"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"ven臻"
-!define PIDGIN_SPELLCHECK_SLOVAK		"slovakia"
-!define PIDGIN_SPELLCHECK_SWEDISH		"ruotsi"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"ukraina"
 
--- a/pidgin/win32/nsis/translations/french.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/french.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -52,28 +52,4 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Correction orthographique"
 !define PIDGIN_SPELLCHECK_ERROR			"Erreur  l'installation du correcteur orthographique"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Erreur  l'installation du dictionnaire pour le correcteur orthographique"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Correction orthogaphique. (Une connexion internet est n馗essaire pour son installation)"
-!define ASPELL_INSTALL_FAILED			"ノchec de l'installation"
-!define PIDGIN_SPELLCHECK_BRETON			"Breton"
-!define PIDGIN_SPELLCHECK_CATALAN			"Catalan"
-!define PIDGIN_SPELLCHECK_CZECH			"Tch鑷ue"
-!define PIDGIN_SPELLCHECK_WELSH			"Gallois"
-!define PIDGIN_SPELLCHECK_DANISH			"Danois"
-!define PIDGIN_SPELLCHECK_GERMAN			"Allemand"
-!define PIDGIN_SPELLCHECK_GREEK			"Grec"
-!define PIDGIN_SPELLCHECK_ENGLISH			"Anglais"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esp駻anto"
-!define PIDGIN_SPELLCHECK_SPANISH			"Espagnol"
-!define PIDGIN_SPELLCHECK_FAROESE			"F駻ingien"
-!define PIDGIN_SPELLCHECK_FRENCH			"Fran軋is"
-!define PIDGIN_SPELLCHECK_ITALIAN			"Italien"
-!define PIDGIN_SPELLCHECK_DUTCH			"Hollandais"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norv馮ien"
-!define PIDGIN_SPELLCHECK_POLISH			"Polonais"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugais"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Roumain"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"Russe"
-!define PIDGIN_SPELLCHECK_SLOVAK			"Slovaque"
-!define PIDGIN_SPELLCHECK_SWEDISH			"Su馘ois"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukrainien"
--- a/pidgin/win32/nsis/translations/german.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/german.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -50,28 +50,4 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE	"Untersttzung fr Rechtschreibkontrolle"
 !define PIDGIN_SPELLCHECK_ERROR		"Fehler bei der Installation der Rechtschreibkontrolle"
-!define PIDGIN_SPELLCHECK_DICT_ERROR	"Fehler bei der Installation des Wrterbuches fr die Rechtschreibkontrolle"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Untersttzung fr Rechtschreibkontrolle.  (Fr die Installation ist eine Internet-Verbindung ntig)"
-!define ASPELL_INSTALL_FAILED			"Installation gescheitert"
-!define PIDGIN_SPELLCHECK_BRETON		"Bretonisch"
-!define PIDGIN_SPELLCHECK_CATALAN		"Katalanisch"
-!define PIDGIN_SPELLCHECK_CZECH		"Tschechisch"
-!define PIDGIN_SPELLCHECK_WELSH		"Walisisch"
-!define PIDGIN_SPELLCHECK_DANISH		"D舅isch"
-!define PIDGIN_SPELLCHECK_GERMAN		"Deutsch"
-!define PIDGIN_SPELLCHECK_GREEK		"Griechisch"
-!define PIDGIN_SPELLCHECK_ENGLISH		"Englisch"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH		"Spanisch"
-!define PIDGIN_SPELLCHECK_FAROESE		"Farersprache"
-!define PIDGIN_SPELLCHECK_FRENCH		"Franzsisch"
-!define PIDGIN_SPELLCHECK_ITALIAN		"Italienisch"
-!define PIDGIN_SPELLCHECK_DUTCH		"Holl舅disch"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norwegisch"
-!define PIDGIN_SPELLCHECK_POLISH		"Polnisch"
-!define PIDGIN_SPELLCHECK_PORTUGUESE	"Portugiesisch"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Rum舅isch"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"Russisch"
-!define PIDGIN_SPELLCHECK_SLOVAK		"Slowakisch"
-!define PIDGIN_SPELLCHECK_SWEDISH		"Schwedisch"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukrainisch"
--- a/pidgin/win32/nsis/translations/hebrew.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/hebrew.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -50,29 +50,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE	"鴉 矣肓褝 琺褝"
 !define PIDGIN_SPELLCHECK_ERROR		"粳琅 砌 矼鴒褝 琺褝"
-!define PIDGIN_SPELLCHECK_DICT_ERROR	"粳琅 砌 鴈襃 矼鴒褝 琺褝"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"鴉 砒 矼鴒褝 琺褝 (肄 鉉砒 琺顏 蕣)"
-!define ASPELL_INSTALL_FAILED			"蒿 "
-!define PIDGIN_SPELLCHECK_BRETON		"碾韃"
-!define PIDGIN_SPELLCHECK_CATALAN		"韲褞鴾"
-!define PIDGIN_SPELLCHECK_CZECH		"'鴾"
-!define PIDGIN_SPELLCHECK_WELSH		"裹鴾"
-!define PIDGIN_SPELLCHECK_DANISH		"胙鴾"
-!define PIDGIN_SPELLCHECK_GERMAN		"糲鴾"
-!define PIDGIN_SPELLCHECK_GREEK		"鱧褞鴾"
-!define PIDGIN_SPELLCHECK_ENGLISH		"瑩粮鴾"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"瑰韃"
-!define PIDGIN_SPELLCHECK_SPANISH		"肓"
-!define PIDGIN_SPELLCHECK_FAROESE		"鴾"
-!define PIDGIN_SPELLCHECK_FRENCH		"鴾"
-!define PIDGIN_SPELLCHECK_ITALIAN		"琺顆鴾"
-!define PIDGIN_SPELLCHECK_DUTCH		"蒟肓"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"褸裹粳"
-!define PIDGIN_SPELLCHECK_POLISH		"褌鴾"
-!define PIDGIN_SPELLCHECK_PORTUGUESE	"褸韃粫鴾"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"褓鴾"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"褥鴾"
-!define PIDGIN_SPELLCHECK_SLOVAK		"裹鴾"
-!define PIDGIN_SPELLCHECK_SWEDISH		"裹肓"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"瑯琺鴾"
 
--- a/pidgin/win32/nsis/translations/hungarian.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/hungarian.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -49,29 +49,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Helyesr疽-ellenrz駸 t疥ogat疽a"
 !define PIDGIN_SPELLCHECK_ERROR			"Hiba a helyesr疽-ellenrz駸 telept駸e kzben"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Hiba a helyesr疽-ellenrz駸i szt疵 telept駸e kzben"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Helyesr疽-ellenrz駸 t疥ogat疽a. (Internetkapcsolat szks馮es a telept駸hez)"
-!define ASPELL_INSTALL_FAILED			"A telept駸 sikertelen"
-!define PIDGIN_SPELLCHECK_BRETON			"Breton"
-!define PIDGIN_SPELLCHECK_CATALAN			"Katal疣"
-!define PIDGIN_SPELLCHECK_CZECH			"Cseh"
-!define PIDGIN_SPELLCHECK_WELSH			"Walesi"
-!define PIDGIN_SPELLCHECK_DANISH			"D疣"
-!define PIDGIN_SPELLCHECK_GERMAN			"N駑et"
-!define PIDGIN_SPELLCHECK_GREEK			"Grg"
-!define PIDGIN_SPELLCHECK_ENGLISH			"Angol"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Eszperant"
-!define PIDGIN_SPELLCHECK_SPANISH			"Spanyol"
-!define PIDGIN_SPELLCHECK_FAROESE			"Farai"
-!define PIDGIN_SPELLCHECK_FRENCH			"Francia"
-!define PIDGIN_SPELLCHECK_ITALIAN			"Olasz"
-!define PIDGIN_SPELLCHECK_DUTCH			"Holland"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norv馮"
-!define PIDGIN_SPELLCHECK_POLISH			"Lengyel"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portug疝"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Rom疣"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"Orosz"
-!define PIDGIN_SPELLCHECK_SLOVAK			"Szlov疚"
-!define PIDGIN_SPELLCHECK_SWEDISH			"Sv馘"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukr疣"
 
--- a/pidgin/win32/nsis/translations/italian.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/italian.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -49,29 +49,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE	"Supporto per il correttore ortografico"
 !define PIDGIN_SPELLCHECK_ERROR		"Errore nell'installazione del correttore ortografico"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Errore nell'installazione del dizionario per il correttore ortografico"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Supporto per il correttore ortografico.  (ネ richiesta una connessione a internet per l'installazione)"
-!define ASPELL_INSTALL_FAILED			"Installazione fallita"
-!define PIDGIN_SPELLCHECK_BRETON		"Bretone"
-!define PIDGIN_SPELLCHECK_CATALAN		"Catalano"
-!define PIDGIN_SPELLCHECK_CZECH		"Ceco"
-!define PIDGIN_SPELLCHECK_WELSH		"Gallese"
-!define PIDGIN_SPELLCHECK_DANISH		"Danese"
-!define PIDGIN_SPELLCHECK_GERMAN		"Tedesco"
-!define PIDGIN_SPELLCHECK_GREEK		"Greco"
-!define PIDGIN_SPELLCHECK_ENGLISH		"Inglese"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH		"Spagnolo"
-!define PIDGIN_SPELLCHECK_FAROESE		"Faroese"
-!define PIDGIN_SPELLCHECK_FRENCH		"Francese"
-!define PIDGIN_SPELLCHECK_ITALIAN		"Italiano"
-!define PIDGIN_SPELLCHECK_DUTCH		"Olandese"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norvegese"
-!define PIDGIN_SPELLCHECK_POLISH		"Polacco"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portoghese"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Rumeno"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"Russo"
-!define PIDGIN_SPELLCHECK_SLOVAK		"Slovacco"
-!define PIDGIN_SPELLCHECK_SWEDISH		"Svedese"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ucraino"
 
--- a/pidgin/win32/nsis/translations/japanese.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/japanese.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -45,29 +45,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"スペルチェックのサポート"
 !define PIDGIN_SPELLCHECK_ERROR			"スペルチェックのインストールに失敗しました"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"スペルチェック辞書のインストールに失敗しました。"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"スペルチェックのサポート  (インターネット接続がインストールに必要です)"
-!define ASPELL_INSTALL_FAILED			"インストールに失敗しました"
-!define PIDGIN_SPELLCHECK_BRETON			"ブルターニュ語"
-!define PIDGIN_SPELLCHECK_CATALAN			"カタルーニャ語"
-!define PIDGIN_SPELLCHECK_CZECH			"チェコ語"
-!define PIDGIN_SPELLCHECK_WELSH			"ウェールズ語"
-!define PIDGIN_SPELLCHECK_DANISH			"デンマーク語"
-!define PIDGIN_SPELLCHECK_GERMAN			"ドイツ語"
-!define PIDGIN_SPELLCHECK_GREEK			"ギリシャ語"
-!define PIDGIN_SPELLCHECK_ENGLISH			"英語"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"エスペラント語"
-!define PIDGIN_SPELLCHECK_SPANISH			"スペイン語"
-!define PIDGIN_SPELLCHECK_FAROESE			"フェロー語"
-!define PIDGIN_SPELLCHECK_FRENCH			"フランス語"
-!define PIDGIN_SPELLCHECK_ITALIAN			"イタリア語"
-!define PIDGIN_SPELLCHECK_DUTCH			"オランダ語"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"ノルウェー後"
-!define PIDGIN_SPELLCHECK_POLISH			"ポーランド語"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"ポルトガル語"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"ルーマニア語"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"ロシア語"
-!define PIDGIN_SPELLCHECK_SLOVAK			"スロヴァキア語"
-!define PIDGIN_SPELLCHECK_SWEDISH			"スウェーデン後"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"ウクライナ語"
 
--- a/pidgin/win32/nsis/translations/kurdish.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/kurdish.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -44,29 +44,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Desteka kontrola rastnivs"
 !define PIDGIN_SPELLCHECK_ERROR			"Di sazkirina kontrola rastnivs de 軻wt derket."
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Di sazkirina ferhenga rastnivs de 軻wt derket."
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Desteka kontrola rastnivs.  (Ji bo sazkirin nternet p黔st e)"
-!define ASPELL_INSTALL_FAILED			"Sazkirin Serneket"
-!define PIDGIN_SPELLCHECK_BRETON			"Breton"
-!define PIDGIN_SPELLCHECK_CATALAN			"Catalan"
-!define PIDGIN_SPELLCHECK_CZECH			"ヌek"
-!define PIDGIN_SPELLCHECK_WELSH			"Welsh"
-!define PIDGIN_SPELLCHECK_DANISH			"Danik"
-!define PIDGIN_SPELLCHECK_GERMAN			"Alman"
-!define PIDGIN_SPELLCHECK_GREEK			"Yewnan"
-!define PIDGIN_SPELLCHECK_ENGLISH			"ホngilz"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH			"Span"
-!define PIDGIN_SPELLCHECK_FAROESE			"Faroese"
-!define PIDGIN_SPELLCHECK_FRENCH			"Frans"
-!define PIDGIN_SPELLCHECK_ITALIAN			"ホtal"
-!define PIDGIN_SPELLCHECK_DUTCH			"Dutch"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norwec"
-!define PIDGIN_SPELLCHECK_POLISH			"Pol"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portekiz"
-!define PIDGIN_SPELLCHECK_ROMANIAN			"Roman"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"Rus"
-!define PIDGIN_SPELLCHECK_SLOVAK			"Slovak"
-!define PIDGIN_SPELLCHECK_SWEDISH			"Sw鹽"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukrayn"
 
--- a/pidgin/win32/nsis/translations/lithuanian.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/lithuanian.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -47,29 +47,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE	"Raybos tikrinimo palaikymas"
 !define PIDGIN_SPELLCHECK_ERROR		"Raybos tikrinimo palaikymo diegimo klaida"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Raybos tikrinimo odyno diegimo klaida"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Raybos tikrinimo palaikymas.  (Diegimui btina interneto jungtis)"
-!define ASPELL_INSTALL_FAILED			"Diegimas nepavyko"
-!define PIDGIN_SPELLCHECK_BRETON		"Breton kalba"
-!define PIDGIN_SPELLCHECK_CATALAN		"Katalon kalba"
-!define PIDGIN_SPELLCHECK_CZECH		"ネek kalba"
-!define PIDGIN_SPELLCHECK_WELSH		"Val kalba"
-!define PIDGIN_SPELLCHECK_DANISH		"Dan kalba"
-!define PIDGIN_SPELLCHECK_GERMAN		"Vokie鑛 kalba"
-!define PIDGIN_SPELLCHECK_GREEK		"Graik kalba"
-!define PIDGIN_SPELLCHECK_ENGLISH		"Angl kalba"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto kalba"
-!define PIDGIN_SPELLCHECK_SPANISH		"Ispan kalba"
-!define PIDGIN_SPELLCHECK_FAROESE		"Farer kalba"
-!define PIDGIN_SPELLCHECK_FRENCH		"Prancz kalba"
-!define PIDGIN_SPELLCHECK_ITALIAN		"Ital kalba"
-!define PIDGIN_SPELLCHECK_DUTCH		"Oland kalba"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norveg kalba"
-!define PIDGIN_SPELLCHECK_POLISH		"Lenk kalba"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugal kalba"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Rumun kalba"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"Rus kalba"
-!define PIDGIN_SPELLCHECK_SLOVAK		"Slovak kalba"
-!define PIDGIN_SPELLCHECK_SWEDISH		"ミved kalba"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukrainie鑛 kalba"
 
--- a/pidgin/win32/nsis/translations/norwegian.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/norwegian.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -45,28 +45,4 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Sttte for stavekontroll"
 !define PIDGIN_SPELLCHECK_ERROR			"Det oppstod en feil ved installering av stavekontroll"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Det oppstod en feil ved installering av ordboken for stavekontroll"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Sttte for stavekontroll. (Internettoppkobling p虧revd for installasjon)"
-!define ASPELL_INSTALL_FAILED			"Installasjonen mislyktes."
-!define PIDGIN_SPELLCHECK_BRETON			"Bretagnsk"
-!define PIDGIN_SPELLCHECK_CATALAN			"Katalansk"
-!define PIDGIN_SPELLCHECK_CZECH			"Tsjekkisk"
-!define PIDGIN_SPELLCHECK_WELSH			"Walisisk"
-!define PIDGIN_SPELLCHECK_DANISH			"Dansk"
-!define PIDGIN_SPELLCHECK_GERMAN			"Tysk"
-!define PIDGIN_SPELLCHECK_GREEK			"Gresk"
-!define PIDGIN_SPELLCHECK_ENGLISH			"Engelsk"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH			"Spansk"
-!define PIDGIN_SPELLCHECK_FAROESE			"F誡ysk"
-!define PIDGIN_SPELLCHECK_FRENCH			"Fransk"
-!define PIDGIN_SPELLCHECK_ITALIAN			"Italiensk"
-!define PIDGIN_SPELLCHECK_DUTCH			"Nederlandsk"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norsk"
-!define PIDGIN_SPELLCHECK_POLISH			"Polsk"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugisisk"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Rumensk"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"Russisk"
-!define PIDGIN_SPELLCHECK_SLOVAK			"Slovakisk"
-!define PIDGIN_SPELLCHECK_SWEDISH			"Svensk"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukrainsk"
--- a/pidgin/win32/nsis/translations/persian.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/persian.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -51,29 +51,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE	"ヤハネヌ蓆 ロ瞿晨ヌネ ヌ聶ヌ"
 !define PIDGIN_SPELLCHECK_ERROR		"ホリヌ 裝隻 蒄ネ ロ瞿晨ヌネ ヌ聶ヌ"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"ホリヌ 裝隻 蒄ネ 瞻ハ昜ヌ肄 ロ瞿晨ヌネ ヌ聶ヌ"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"ヤハネヌ蓆 ロ瞿晨ヌネ ヌ聶ヌ. (ネムヌ 蒄ネ ヌハユヌ ヌ萍ム萍 睇メ ヌモハ)"
-!define ASPELL_INSTALL_FAILED			"蒄ネ ヤ侖ハ ホ贄マ"
-!define PIDGIN_SPELLCHECK_BRETON		"ネムハヌ蓖ヌ"
-!define PIDGIN_SPELLCHECK_CATALAN		"佗ハヌ睇"
-!define PIDGIN_SPELLCHECK_CZECH		"腰"
-!define PIDGIN_SPELLCHECK_WELSH		"跫瞑"
-!define PIDGIN_SPELLCHECK_DANISH		"マヌ蒹ヌム們"
-!define PIDGIN_SPELLCHECK_GERMAN		"ツ矼ヌ蓆"
-!define PIDGIN_SPELLCHECK_GREEK		"趾ヌ蓆"
-!define PIDGIN_SPELLCHECK_ENGLISH		"ヌ苣硼モ"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"ヌモムヌ萍"
-!define PIDGIN_SPELLCHECK_SPANISH		"ヌモヌ蓖ヌ"
-!define PIDGIN_SPELLCHECK_FAROESE		"ンヌム跫"
-!define PIDGIN_SPELLCHECK_FRENCH		"ンムヌ萼跪"
-!define PIDGIN_SPELLCHECK_ITALIAN		"ヌハヌ硼ヌ"
-!define PIDGIN_SPELLCHECK_DUTCH		"裔蔆"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"葭謗"
-!define PIDGIN_SPELLCHECK_POLISH		"砒モハヌ蓆"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"ムハロヌ碆"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"ム跂ヌ蓖ヌ"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"ム贊"
-!define PIDGIN_SPELLCHECK_SLOVAK		"ヌモ礦ヌ們"
-!define PIDGIN_SPELLCHECK_SWEDISH		"モ貳マ"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"ヌ譏ムヌ蓆"
 
--- a/pidgin/win32/nsis/translations/portuguese-br.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/portuguese-br.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -43,28 +43,4 @@
 !define URI_HANDLERS_SECTION_TITLE             "Handlers para endere輟s"
 !define PIDGIN_SPELLCHECK_SECTION_TITLE        "Suporte a verifica鈬o ortogr畴ica"
 !define PIDGIN_SPELLCHECK_ERROR                "Erro ao instalar a verifica鈬o ortogr畴ica"
-!define PIDGIN_SPELLCHECK_DICT_ERROR           "Erro ao instalar o dicion疵io da verifica鈬o ortogr畴ica"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION  "Suporte a verifica鈬o ortogr畴ica (A instala鈬o necessita de conex縊 a internet)"
-!define ASPELL_INSTALL_FAILED                  "Falha na instala鈬o"
-!define PIDGIN_SPELLCHECK_BRETON               "Bret縊"
-!define PIDGIN_SPELLCHECK_CATALAN              "Catal縊"
-!define PIDGIN_SPELLCHECK_CZECH                "Tcheco"
-!define PIDGIN_SPELLCHECK_WELSH                "Gal黌" 
-!define PIDGIN_SPELLCHECK_DANISH               "Dinamarqu黌"
-!define PIDGIN_SPELLCHECK_GERMAN               "Alem縊" 
-!define PIDGIN_SPELLCHECK_GREEK                "Grego"
-!define PIDGIN_SPELLCHECK_ENGLISH              "Ingl黌"
-!define PIDGIN_SPELLCHECK_ESPERANTO            "Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH              "Espanhol"
-!define PIDGIN_SPELLCHECK_FAROESE              "Fero黌"
-!define PIDGIN_SPELLCHECK_FRENCH               "Franc黌"
-!define PIDGIN_SPELLCHECK_ITALIAN              "Italiano"
-!define PIDGIN_SPELLCHECK_DUTCH                "Holand黌"
-!define PIDGIN_SPELLCHECK_NORWEGIAN            "Noruegu黌" 
-!define PIDGIN_SPELLCHECK_POLISH               "Polon黌"
-!define PIDGIN_SPELLCHECK_PORTUGUESE           "Portugu黌"
-!define PIDGIN_SPELLCHECK_ROMANIAN             "Romeno"
-!define PIDGIN_SPELLCHECK_RUSSIAN              "Russo" 
-!define PIDGIN_SPELLCHECK_SLOVAK               "Eslovaco"
-!define PIDGIN_SPELLCHECK_SWEDISH              "Sueco"
-!define PIDGIN_SPELLCHECK_UKRAINIAN            "Ucraniano"
--- a/pidgin/win32/nsis/translations/simp-chinese.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/simp-chinese.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -43,28 +43,4 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"ニエミエシイ鰒ァウヨ"
 !define PIDGIN_SPELLCHECK_ERROR			"ーイラーニエミエシイ魑エ"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"ーイラーニエミエシイ鰊ヨオ莎エ"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"ニエミエシイ鰒ァウヨ。」(ーイラーミ靨ェチャスモオス Internet)"
-!define ASPELL_INSTALL_FAILED			"ーイラーハァーワ"
-!define PIDGIN_SPELLCHECK_BRETON			"イシタカ狷瞠"
-!define PIDGIN_SPELLCHECK_CATALAN			"シモフゥヅト瞋ヌモ"
-!define PIDGIN_SPELLCHECK_CZECH			"スンソヒモ"
-!define PIDGIN_SPELLCHECK_WELSH			"ヘカハソモ"
-!define PIDGIN_SPELLCHECK_DANISH			"オ、ツモ"
-!define PIDGIN_SPELLCHECK_GERMAN			"オツモ"
-!define PIDGIN_SPELLCHECK_GREEK			"マ」ターモ"
-!define PIDGIN_SPELLCHECK_ENGLISH			"モ「モ"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"ハタス醺"
-!define PIDGIN_SPELLCHECK_SPANISH			"ホー獏タモ"
-!define PIDGIN_SPELLCHECK_FAROESE			"キィヅモ"
-!define PIDGIN_SPELLCHECK_FRENCH			"キィモ"
-!define PIDGIN_SPELLCHECK_ITALIAN			"メ箒タモ"
-!define PIDGIN_SPELLCHECK_DUTCH			"コノタシモ"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"ナイヘモ"
-!define PIDGIN_SPELLCHECK_POLISH			"イィタシモ"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"ニマフムムタモ"
-!define PIDGIN_SPELLCHECK_ROMANIAN			"ヅツト瞋ヌモ"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"カモ"
-!define PIDGIN_SPELLCHECK_SLOVAK			"ヒケツ蟾・ソヒモ"
-!define PIDGIN_SPELLCHECK_SWEDISH			"ネオ萼"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"ホレソヒタシモ"
--- a/pidgin/win32/nsis/translations/slovak.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/slovak.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -43,29 +43,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Podpora kontroly pravopisu"
 !define PIDGIN_SPELLCHECK_ERROR			"Chyba pri in嗾al當ii kontroly pravopisu"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Chyba pri in嗾al當ii slovnka kontroly pravopisu"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Podpora kontroly pravopisu (Nutn pripojenie k Internetu)"
-!define ASPELL_INSTALL_FAILED			"In嗾al當ia zlyhala"
-!define PIDGIN_SPELLCHECK_BRETON			"Bretnsky"
-!define PIDGIN_SPELLCHECK_CATALAN			"Katal疣sky"
-!define PIDGIN_SPELLCHECK_CZECH			"ネesk"
-!define PIDGIN_SPELLCHECK_WELSH			"Welshsk"
-!define PIDGIN_SPELLCHECK_DANISH			"D疣sky"
-!define PIDGIN_SPELLCHECK_GERMAN			"Nemeck"
-!define PIDGIN_SPELLCHECK_GREEK			"Gr馗ky"
-!define PIDGIN_SPELLCHECK_ENGLISH			"Anglick"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperantsk"
-!define PIDGIN_SPELLCHECK_SPANISH			"角anielsk"
-!define PIDGIN_SPELLCHECK_FAROESE			"Faroesk"
-!define PIDGIN_SPELLCHECK_FRENCH			"Franczsky"
-!define PIDGIN_SPELLCHECK_ITALIAN			"Taliansk"
-!define PIDGIN_SPELLCHECK_DUTCH			"Holandsk"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Nrsky"
-!define PIDGIN_SPELLCHECK_POLISH			"Poセsk"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugalsk"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Rumunsk"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"Rusk"
-!define PIDGIN_SPELLCHECK_SLOVAK			"Slovensk"
-!define PIDGIN_SPELLCHECK_SWEDISH			"革馘sky"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukrajinsk"
 
--- a/pidgin/win32/nsis/translations/slovenian.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/slovenian.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -49,29 +49,4 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Podpora preverjanja 鑽kovanja"
 !define PIDGIN_SPELLCHECK_ERROR			"Napaka pri name夊anju preverjanja 鑽kovanja"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Napaka pri name夊anju slovarja za preverjanje 鑽kovanja"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Podpora preverjanja 鑽kovanja.  (Za namestitev je potrebna spletna povezava)"
-!define ASPELL_INSTALL_FAILED			"Namestitev ni uspela."
-!define PIDGIN_SPELLCHECK_BRETON		"bretonski"
-!define PIDGIN_SPELLCHECK_CATALAN		"katalonski"
-!define PIDGIN_SPELLCHECK_CZECH			"鐺嗅i"
-!define PIDGIN_SPELLCHECK_WELSH			"vel嗅i"
-!define PIDGIN_SPELLCHECK_DANISH		"danski"
-!define PIDGIN_SPELLCHECK_GERMAN		"nem嗅i"
-!define PIDGIN_SPELLCHECK_GREEK			"gr嗅i"
-!define PIDGIN_SPELLCHECK_ENGLISH		"angle嗅i"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"esperantski"
-!define PIDGIN_SPELLCHECK_SPANISH		"嗔anski"
-!define PIDGIN_SPELLCHECK_FAROESE		"farojski"
-!define PIDGIN_SPELLCHECK_FRENCH		"francoski"
-!define PIDGIN_SPELLCHECK_ITALIAN		"italijanski"
-!define PIDGIN_SPELLCHECK_DUTCH			"nizozemski"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"norve嗅i"
-!define PIDGIN_SPELLCHECK_POLISH		"poljski"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"portugalski"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"romunski"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"ruski"
-!define PIDGIN_SPELLCHECK_SLOVAK		"slova嗅i"
-!define PIDGIN_SPELLCHECK_SLOVENIAN		"slovenski"
-!define PIDGIN_SPELLCHECK_SWEDISH		"嘛edski"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"ukrajinski"
--- a/pidgin/win32/nsis/translations/swedish.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/swedish.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -49,28 +49,4 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Std fr r舩tstavning"
 !define PIDGIN_SPELLCHECK_ERROR			"Fel vid installation fr r舩tstavning"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Fel vid installation av r舩tstavningsordlista"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Std fr R舩tstavning.  (Internetanslutning kr舸s fr installation)"
-!define ASPELL_INSTALL_FAILED			"Installationen misslyckades"
-!define PIDGIN_SPELLCHECK_BRETON		"Bretonska"
-!define PIDGIN_SPELLCHECK_CATALAN		"Katalanska"
-!define PIDGIN_SPELLCHECK_CZECH			"Tjeckiska"
-!define PIDGIN_SPELLCHECK_WELSH			"Kymriska"
-!define PIDGIN_SPELLCHECK_DANISH		"Danska"
-!define PIDGIN_SPELLCHECK_GERMAN		"Tyska"
-!define PIDGIN_SPELLCHECK_GREEK			"Grekiska"
-!define PIDGIN_SPELLCHECK_ENGLISH		"Engelska"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH		"Spanska"
-!define PIDGIN_SPELLCHECK_FAROESE		"F舐iska"
-!define PIDGIN_SPELLCHECK_FRENCH		"Franska"
-!define PIDGIN_SPELLCHECK_ITALIAN		"Italienska"
-!define PIDGIN_SPELLCHECK_DUTCH			"Nederl舅dska"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Norska"
-!define PIDGIN_SPELLCHECK_POLISH		"Polska"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugisiska"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Rum舅ska"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"Ryska"
-!define PIDGIN_SPELLCHECK_SLOVAK		"Slovakiska"
-!define PIDGIN_SPELLCHECK_SWEDISH		"Svenska"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ukrainska"
--- a/pidgin/win32/nsis/translations/trad-chinese.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/trad-chinese.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -51,29 +51,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"ォヲrタヒャd・\ッ"
 !define PIDGIN_SPELLCHECK_ERROR			"ヲwクヒォヲrタヒャdウ~、、オo・ヘソサ~"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"ヲwクヒォヲrタヒャd・ホェコオィ蟲~、、オo・ヘソサ~"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"ォヲrタヒャd、莇ゥ。]ヲwクヒカキヲウコサレコクウsスu。^。C"
-!define ASPELL_INSTALL_FAILED			"ヲwクヒ・「アム"
-!define PIDGIN_SPELLCHECK_BRETON		"・ャィスヲh・ァ、"
-!define PIDGIN_SPELLCHECK_CATALAN		"・[ョカゥ、"
-!define PIDGIN_SPELLCHECK_CZECH			"アカァJ、"
-!define PIDGIN_SPELLCHECK_WELSH			"ォツコクエオ、"
-!define PIDGIN_SPELLCHECK_DANISH		"、ヲウチ、"
-!define PIDGIN_SPELLCHECK_GERMAN		"シw、"
-!define PIDGIN_SPELLCHECK_GREEK			"ァニテセ、"
-!define PIDGIN_SPELLCHECK_ENGLISH		"ュ^、"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"・@ャノサy"
-!define PIDGIN_SPELLCHECK_SPANISH		"ヲ隸Z、、"
-!define PIDGIN_SPELLCHECK_FAROESE		"ェkテケクsョq、"
-!define PIDGIN_SPELLCHECK_FRENCH		"ェk、"
-!define PIDGIN_SPELLCHECK_ITALIAN		"キN、jァQ、"
-!define PIDGIN_SPELLCHECK_DUTCH			"イト、"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"ョソォツ、"
-!define PIDGIN_SPELLCHECK_POLISH		"ェiト、"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"オ螟"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"テケーィ・ァィネ、"
-!define PIDGIN_SPELLCHECK_RUSSIAN		"ォX、"
-!define PIDGIN_SPELLCHECK_SLOVAK		"エオャ・・ァJ、"
-!define PIDGIN_SPELLCHECK_SWEDISH		"キ遞螟"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"ッQァJト、"
 
--- a/pidgin/win32/nsis/translations/valencian.nsh	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/nsis/translations/valencian.nsh	Sat Mar 06 16:33:10 2010 +0000
@@ -46,29 +46,5 @@
 ; Spellcheck Section Prompts
 !define PIDGIN_SPELLCHECK_SECTION_TITLE		"Soport de Correccio Ortografica"
 !define PIDGIN_SPELLCHECK_ERROR			"Erro Instalant Correccio Ortografica"
-!define PIDGIN_SPELLCHECK_DICT_ERROR		"Erro Instalant Diccionari de Correccio Ortografica"
 !define PIDGIN_SPELLCHECK_SECTION_DESCRIPTION	"Soport per a Correccio Ortografica.  (es requerix conexio a Internet per a fer l'instalacio)"
-!define ASPELL_INSTALL_FAILED			"L'Instalacio fall"
-!define PIDGIN_SPELLCHECK_BRETON			"Breto"
-!define PIDGIN_SPELLCHECK_CATALAN			"Catal"
-!define PIDGIN_SPELLCHECK_CZECH			"Chec"
-!define PIDGIN_SPELLCHECK_WELSH			"Gal駸"
-!define PIDGIN_SPELLCHECK_DANISH			"Danes"
-!define PIDGIN_SPELLCHECK_GERMAN			"Alem"
-!define PIDGIN_SPELLCHECK_GREEK			"Grec"
-!define PIDGIN_SPELLCHECK_ENGLISH			"Angles"
-!define PIDGIN_SPELLCHECK_ESPERANTO		"Esperanto"
-!define PIDGIN_SPELLCHECK_SPANISH			"Espanyol"
-!define PIDGIN_SPELLCHECK_FAROESE			"Feroes"
-!define PIDGIN_SPELLCHECK_FRENCH			"Frances"
-!define PIDGIN_SPELLCHECK_ITALIAN			"Itali"
-!define PIDGIN_SPELLCHECK_DUTCH			"Holandes"
-!define PIDGIN_SPELLCHECK_NORWEGIAN		"Noruec"
-!define PIDGIN_SPELLCHECK_POLISH			"Polac"
-!define PIDGIN_SPELLCHECK_PORTUGUESE		"Portugues"
-!define PIDGIN_SPELLCHECK_ROMANIAN		"Romanes"
-!define PIDGIN_SPELLCHECK_RUSSIAN			"Rus"
-!define PIDGIN_SPELLCHECK_SLOVAK			"Eslovac"
-!define PIDGIN_SPELLCHECK_SWEDISH			"Suec"
-!define PIDGIN_SPELLCHECK_UKRAINIAN		"Ucrani"
 
--- a/pidgin/win32/winpidgin.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/winpidgin.c	Sat Mar 06 16:33:10 2010 +0000
@@ -97,7 +97,7 @@
 	return ret;
 }
 
-static void common_dll_prep(const TCHAR *path) {
+static BOOL common_dll_prep(const TCHAR *path) {
 	HMODULE hmod;
 	HKEY hkey;
 	struct _stat stat_buf;
@@ -110,7 +110,7 @@
 	if (_tstat(test_path, &stat_buf) != 0) {
 		printf("Unable to determine GTK+ path. \n"
 			"Assuming GTK+ is in the PATH.\n");
-		return;
+		return FALSE;
 	}
 
 
@@ -184,6 +184,20 @@
 				printf("SafeDllSearchMode is set to 0\n");
 		}/*end else*/
 	}
+
+	return TRUE;
+}
+
+static BOOL dll_prep(const TCHAR *pidgin_dir) {
+	TCHAR path[MAX_PATH + 1];
+	path[0] = _T('\0');
+
+	if (*pidgin_dir) {
+		_sntprintf(path, sizeof(path) / sizeof(TCHAR), _T("%s\\Gtk\\bin"), pidgin_dir);
+		path[sizeof(path) / sizeof(TCHAR)] = _T('\0');
+	}
+
+	return common_dll_prep(path);
 }
 
 static void portable_mode_dll_prep(const TCHAR *pidgin_dir) {
@@ -224,22 +238,11 @@
 	_tprintf(_T("%s\n"), path2);
 	_tputenv(path2);
 
-	/* set the GTK+ path to be \\path\to\GTK\bin */
-	_tcscat(path, _T("\\GTK\\bin"));
-
-	common_dll_prep(path);
-}
-
-static void dll_prep(const TCHAR *pidgin_dir) {
-	TCHAR gtk_path[MAX_PATH + 1];
-	gtk_path[0] = _T('\0');
-
-	if (*pidgin_dir) {
-		_sntprintf(gtk_path, sizeof(gtk_path) / sizeof(TCHAR), _T("%s\\Gtk\\bin"), pidgin_dir);
-		gtk_path[sizeof(gtk_path) / sizeof(TCHAR)] = _T('\0');
+	if (!dll_prep(pidgin_dir)) {
+		/* set the GTK+ path to be \\path\to\GTK\bin */
+		_tcscat(path, _T("\\GTK\\bin"));
+		common_dll_prep(path);
 	}
-
-	common_dll_prep(gtk_path);
 }
 
 static TCHAR* winpidgin_lcid_to_posix(LCID lcid) {
--- a/pidgin/win32/wspell.c	Mon Mar 01 03:47:06 2010 +0000
+++ b/pidgin/win32/wspell.c	Sat Mar 06 16:33:10 2010 +0000
@@ -3,7 +3,7 @@
  *
  * File: wspell.c
  * Date: March, 2003
- * Description: Windows Purple gtkspell interface.
+ * Description: Windows Pidgin gtkspell interface.
  *
  * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com>
  *
@@ -32,8 +32,22 @@
 #include "win32dep.h"
 #include "wspell.h"
 
+/* Intermediate function so that we can eat Enchant error popups when it doesn't find a DLL
+ * This is fixed upstream, but not released */
+GtkSpell*         (*wpidginspell_new_attach_proxy)              (GtkTextView *,
+							     const gchar *,
+							     GError **) = NULL;
+
 /* GTKSPELL DUMMY FUNCS */
-static GtkSpell* wgtkspell_new_attach(GtkTextView *view, const gchar *lang, GError **error) {return NULL;}
+static GtkSpell* wgtkspell_new_attach(GtkTextView *view, const gchar *lang, GError **error) {
+	GtkSpell *ret = NULL;
+	if (wpidginspell_new_attach_proxy) {
+		UINT old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
+		ret = wpidginspell_new_attach_proxy(view, lang, error);
+		SetErrorMode(old_error_mode);
+	}
+	return ret;
+}
 static GtkSpell* wgtkspell_get_from_text_view(GtkTextView *view) {return NULL;}
 static void wgtkspell_detach(GtkSpell *spell) {}
 static gboolean wgtkspell_set_language(GtkSpell *spell, const gchar *lang, GError **error) {return FALSE;}
@@ -54,28 +68,44 @@
 
 void              (*wpidginspell_recheck_all)             (GtkSpell*) = wgtkspell_recheck_all;
 
+#define GTKSPELL_DLL "libgtkspell-0.dll"
+
 static void load_gtkspell() {
-	wpidginspell_new_attach = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_new_attach" );
-	wpidginspell_get_from_text_view = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_get_from_text_view");
-	wpidginspell_detach = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_detach");
-	wpidginspell_set_language = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_set_language");
-	wpidginspell_recheck_all = (void*) wpurple_find_and_loadproc("libgtkspell.dll", "gtkspell_recheck_all");
+	UINT old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
+	gchar *tmp, *tmp2;
+	const char *path = g_getenv("PATH");
+	tmp = g_build_filename(wpurple_install_dir(), "spellcheck", NULL);
+	tmp2 = g_strdup_printf("%s%s%s", (path ? path : ""),
+		(path ? G_SEARCHPATH_SEPARATOR_S : ""),
+		tmp);
+	g_free(tmp);
+	g_setenv("PATH", tmp2, TRUE);
+
+	/* Suppress error popups */
+	wpidginspell_new_attach_proxy = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_new_attach" );
+	if (wpidginspell_new_attach_proxy) {
+		wpidginspell_get_from_text_view = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_get_from_text_view");
+		wpidginspell_detach = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_detach");
+		wpidginspell_set_language = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_set_language");
+		wpidginspell_recheck_all = (void*) wpurple_find_and_loadproc(GTKSPELL_DLL, "gtkspell_recheck_all");
+	} else {
+		purple_debug_warning("wspell", "Couldn't load gtkspell (%s) \n", GTKSPELL_DLL);
+		/*wpidginspell_new_attach = wgtkspell_new_attach;*/
+	}
+	SetErrorMode(old_error_mode);
 }
 
-static char* lookup_aspell_path() {
+static void lookup_aspell_path() {
 	const char *tmp;
+	gchar *aspell_path;
 
 	if ((tmp = g_getenv("PIDGIN_ASPELL_DIR")))
-		return g_strdup(tmp);
-
-	return wpurple_read_reg_string(HKEY_LOCAL_MACHINE, "Software\\Aspell", "Path");
-}
-
-void winpidgin_spell_init() {
-	char *aspell_path = lookup_aspell_path();
+		aspell_path = g_strdup(tmp);
+	else
+		aspell_path = wpurple_read_reg_string(HKEY_LOCAL_MACHINE, "Software\\Aspell", "Path");
 
 	if (aspell_path != NULL) {
-		char *tmp = g_strconcat(aspell_path, "\\aspell-15.dll", NULL);
+		char *tmp = g_build_filename(aspell_path, "aspell-15.dll", NULL);
 		if (g_file_test(tmp, G_FILE_TEST_EXISTS)) {
 			const char *path = g_getenv("PATH");
 			purple_debug_info("wspell", "Found Aspell in %s\n", aspell_path);
@@ -88,14 +118,18 @@
 
 			g_setenv("PATH", tmp, TRUE);
 
-			load_gtkspell();
-		} else {
+		} else
 			purple_debug_warning("wspell", "Couldn't find aspell-15.dll\n");
-		}
 
 		g_free(tmp);
 		g_free(aspell_path);
-	} else {
-		purple_debug_warning("wspell", "Couldn't find path for Aspell\n");
-	}
+	} else
+		purple_debug_warning("wspell", "Aspell installation not found (this isn't necessarily a problem)\n");
 }
+
+void winpidgin_spell_init() {
+	/* We keep doing the aspell path thing so that previously installed dictionaries still work */
+	lookup_aspell_path();
+
+	load_gtkspell();
+}