--- src/compose.c	2007-09-28 07:46:21.000000000 +0200
+++ src/compose.c	2007-12-24 23:15:31.000000000 +0100
@@ -67,7 +67,7 @@
 #if USE_GTKSPELL
 #  include <gtk/gtkradiomenuitem.h>
 #  include <gtkspell/gtkspell.h>
-#  include <aspell.h>
+#  include <enchant/enchant.h>
 #endif
 
 #include <stdio.h>
@@ -4889,6 +4889,7 @@
 #ifdef USE_GTKSPELL
 	compose->check_spell = prefs_common.check_spell;
 	compose->spell_lang  = g_strdup(prefs_common.spell_lang);
+	compose->spell_dict_list = NULL;
 	compose->spell_menu  = spell_menu;
 #endif /* USE_GTKSPELL */
 
@@ -5320,26 +5321,30 @@
 #if USE_GTKSPELL
 static void compose_set_spell_lang_menu(Compose *compose)
 {
-	AspellConfig *config;
-	AspellDictInfoList *dlist;
-	AspellDictInfoEnumeration *dels;
-	const AspellDictInfo *entry;
+	EnchantBroker* eb;
 	GSList *dict_list = NULL, *menu_list = NULL, *cur;
 	GtkWidget *menu;
 	gboolean lang_set = FALSE;
 
-	config = new_aspell_config();
-	dlist = get_aspell_dict_info_list(config);
-	delete_aspell_config(config);
-
-	dels = aspell_dict_info_list_elements(dlist);
-	while ((entry = aspell_dict_info_enumeration_next(dels)) != 0) {
-		dict_list = g_slist_append(dict_list, (gchar *)entry->name);
-		if (compose->spell_lang != NULL &&
-		    g_ascii_strcasecmp(compose->spell_lang, entry->name) == 0)
-			lang_set = TRUE;
+        void enchDictDescCb (const char * const lang_tag,
+			     const char * const provider_name,
+			     const char * const provider_desc,
+			     const char * const provider_file,
+			     void * user_data)
+	{
+	  dict_list = g_slist_append(dict_list, g_strdup((gchar*)lang_tag));
+	}
+
+        eb = enchant_broker_init();
+        enchant_broker_list_dicts (eb, enchDictDescCb, &dict_list);
+        compose->spell_dict_list = dict_list;
+	enchant_broker_free(eb);
+
+	for (cur = dict_list; cur!=NULL; cur = cur->next) {
+	  if (compose->spell_lang != NULL &&
+	      g_ascii_strcasecmp(compose->spell_lang, cur->data) == 0)
+	      lang_set = TRUE;
 	}
-	delete_aspell_dict_info_enumeration(dels);
 
 	menu = gtk_menu_new();
 
@@ -5499,6 +5504,7 @@
 	AttachInfo *ainfo;
 	GtkTextBuffer *buffer;
 	GtkClipboard *clipboard;
+	GSList *cur;
 
 	compose_list = g_list_remove(compose_list, compose);
 
@@ -5510,6 +5516,9 @@
 	address_completion_end(compose->window);
 
 #if USE_GTKSPELL
+	for (cur = compose->spell_dict_list; cur!=NULL; cur = cur->next) {
+	  g_free((gchar*)cur->data);
+	}
 	g_free(compose->spell_lang);
 #endif
 
--- src/compose.h	2007-07-12 04:56:58.000000000 +0200
+++ src/compose.h	2007-12-24 23:03:27.000000000 +0100
@@ -135,6 +135,7 @@
 #if USE_GTKSPELL
         GtkWidget *spell_menu;
         gchar     *spell_lang;
+        GSList *spell_dict_list;
         gboolean   check_spell;
 #endif
 