--- a/ChangeLog.win32 Mon Aug 01 19:34:44 2005 -0400
+++ b/ChangeLog.win32 Tue Aug 02 12:01:55 2005 -0400
@@ -1,5 +1,6 @@
+ * The installer now supports downloading and installing version 1.4.0 (7/7/2005):
* On Windows XP or newer, the non-debug version of gaim will attempt
--- a/gaim-installer.nsi Mon Aug 01 19:34:44 2005 -0400
+++ b/gaim-installer.nsi Tue Aug 02 12:01:55 2005 -0400
@@ -12,6 +12,7 @@
;--------------------------------
@@ -62,6 +63,9 @@
!define GTK_DEFAULT_THEME_GTKRC_DIR "share\themes\Default\gtk-2.0"
!define GTK_DEFAULT_THEME_ENGINE_DIR "lib\gtk-2.0\2.4.0\engines"
+!define ASPELL_REG_KEY "SOFTWARE\Aspell" +!define DOWNLOADER_URL "http://gaim.sourceforge.net/win32/download_redir.php" ;--------------------------------
@@ -559,6 +563,100 @@
;--------------------------------
+SubSection /e $(GAIM_SPELLCHECK_SECTION_TITLE) SecSpellCheck + Section /o $(GAIM_SPELLCHECK_BRETON) SecSpellCheckBreton + Push ${SecSpellCheckBreton} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_CATALAN) SecSpellCheckCatalan + Push ${SecSpellCheckCatalan} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_CZECH) SecSpellCheckCzech + Push ${SecSpellCheckCzech} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_WELSH) SecSpellCheckWelsh + Push ${SecSpellCheckWelsh} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_DANISH) SecSpellCheckDanish + Push ${SecSpellCheckDanish} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_GERMAN) SecSpellCheckGerman + Push ${SecSpellCheckGerman} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_GREEK) SecSpellCheckGreek + Push ${SecSpellCheckGreek} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_ENGLISH) SecSpellCheckEnglish + Push ${SecSpellCheckEnglish} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_ESPERANTO) SecSpellCheckEsperanto + Push ${SecSpellCheckEsperanto} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_SPANISH) SecSpellCheckSpanish + Push ${SecSpellCheckSpanish} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_FAROESE) SecSpellCheckFaroese + Push ${SecSpellCheckFaroese} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_FRENCH) SecSpellCheckFrench + Push ${SecSpellCheckFrench} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_ITALIAN) SecSpellCheckItalian + Push ${SecSpellCheckItalian} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_DUTCH) SecSpellCheckDutch + Push ${SecSpellCheckDutch} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_NORWEGIAN) SecSpellCheckNorwegian + Push ${SecSpellCheckNorwegian} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_POLISH) SecSpellCheckPolish + Push ${SecSpellCheckPolish} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_PORTUGUESE) SecSpellCheckPortuguese + Push ${SecSpellCheckPortuguese} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_ROMANIAN) SecSpellCheckRomanian + Push ${SecSpellCheckRomanian} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_RUSSIAN) SecSpellCheckRussian + Push ${SecSpellCheckRussian} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_SLOVAK) SecSpellCheckSlovak + Push ${SecSpellCheckSlovak} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_SWEDISH) SecSpellCheckSwedish + Push ${SecSpellCheckSwedish} + Call InstallAspellAndDict + Section /o $(GAIM_SPELLCHECK_UKRAINIAN) SecSpellCheckUkrainian + Push ${SecSpellCheckUkrainian} + Call InstallAspellAndDict +;-------------------------------- @@ -700,6 +798,52 @@
!insertmacro MUI_DESCRIPTION_TEXT ${SecStartMenuShortcut} \
$(GAIM_STARTMENU_SHORTCUT_DESC)
+ !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheck} \ + $(GAIM_SPELLCHECK_SECTION_DESCRIPTION) + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckBreton} \ + "$(GAIM_SPELLCHECK_BRETON) (862kb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckCatalan} \ + "$(GAIM_SPELLCHECK_CATALAN) (3.9Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckCzech} \ + "$(GAIM_SPELLCHECK_CZECH) (17Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckWelsh} \ + "$(GAIM_SPELLCHECK_WELSH) (4.2Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckDanish} \ + "$(GAIM_SPELLCHECK_DANISH) (6.9Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckGerman} \ + "$(GAIM_SPELLCHECK_GERMAN) (5.4Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckGreek} \ + "$(GAIM_SPELLCHECK_GREEK) (7.1Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckEnglish} \ + "$(GAIM_SPELLCHECK_ENGLISH) (2.3Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckEsperanto} \ + "$(GAIM_SPELLCHECK_ESPERANTO) (5.7Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckSpanish} \ + "$(GAIM_SPELLCHECK_SPANISH) (7.0Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckFaroese} \ + "$(GAIM_SPELLCHECK_FAROESE) (913kb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckFrench} \ + "$(GAIM_SPELLCHECK_FRENCH) (9.3Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckItalian} \ + "$(GAIM_SPELLCHECK_ITALIAN) (770kb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckDutch} \ + "$(GAIM_SPELLCHECK_DUTCH) (3.7Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckNorwegian} \ + "$(GAIM_SPELLCHECK_NORWEGIAN) (3.2Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckPolish} \ + "$(GAIM_SPELLCHECK_POLISH) (9.3Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckPortuguese} \ + "$(GAIM_SPELLCHECK_PORTUGUESE) (5.5Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckRomanian} \ + "$(GAIM_SPELLCHECK_ROMANIAN) (906kb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckRussian} \ + "$(GAIM_SPELLCHECK_RUSSIAN) (11Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckSlovak} \ + "$(GAIM_SPELLCHECK_SLOVAK) (8.0Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckSwedish} \ + "$(GAIM_SPELLCHECK_SWEDISH) (2.2Mb)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecSpellCheckUkrainian} \ + "$(GAIM_SPELLCHECK_UKRAINIAN) (12Mb)" !insertmacro MUI_FUNCTION_DESCRIPTION_END
;--------------------------------
@@ -1098,6 +1242,7 @@
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "gaim_installer_running") i .r1 ?e'
@@ -1106,10 +1251,16 @@
StrCpy $name "Gaim ${GAIM_VERSION}"
StrCpy $GTK_THEME_SEL ${SecGtkWimp}
+ StrCpy $SPELLCHECK_SEL "" !insertmacro SetSectionFlag ${SecGtkThemes} ${SF_RO}
!insertmacro UnselectSection ${SecGtkThemes}
!insertmacro SelectSection $GTK_THEME_SEL
+ !insertmacro SetSectionFlag ${SecSpellCheck} ${SF_RO} + !insertmacro UnselectSection ${SecSpellCheck} + ;Mark the dictionaries that are already installed as readonly + Call SelectAndDisableInstalledDictionaries @@ -1153,6 +1304,7 @@
StrCpy $INSTDIR "$R2\Gaim"
@@ -1164,13 +1316,72 @@
+; This is a modified StartRadioButtons (from Sections.nsh) +; The only difference is that it allows for nothing in the group to be selected +; In that case, the default variable should be set to "" +!macro StartRadioButtonsUnselectable var + !define StartRadioButtons_Var "${var}" + ;If we have no selection, don't try to unselect it + StrCmp "${StartRadioButtons_Var}" "" +4 + SectionGetFlags "${StartRadioButtons_Var}" $R0 + IntOp $R1 $R0 & ${SF_SELECTED} + IntOp $R0 $R0 & ${SECTION_OFF} + SectionSetFlags "${StartRadioButtons_Var}" $R0 + ; If the previous value isn't currently selected, + ; we don't want to select it at the end + IntCmp $R1 ${SF_SELECTED} +2 + StrCpy "${StartRadioButtons_Var}" "" + StrCpy $R1 "${StartRadioButtons_Var}" !insertmacro StartRadioButtons $GTK_THEME_SEL
!insertmacro RadioButton ${SecGtkNone}
!insertmacro RadioButton ${SecGtkWimp}
!insertmacro RadioButton ${SecGtkBluecurve}
!insertmacro RadioButton ${SecGtkLighthouseblue}
!insertmacro EndRadioButtons
+ ; Check that at most one of the non-readonly spelling dictionaries are selected + ; We can't use $R0 or $R1 in this block since they're used in the macros + !insertmacro StartRadioButtonsUnselectable $SPELLCHECK_SEL + ; Start with the first language dictionary + IntOp $2 ${SecSpellCheck} + 1 + start_spellcheck_radio: + IntOp $1 $0 & ${SF_SECGRPEND} + ; If it is the end of the section group, stop + IntCmp $1 ${SF_SECGRPEND} end_spellcheck_radio + IntCmp $0 ${SF_RO} after_button_insert + ; If !readonly, then it is part of the radiobutton group + !insertmacro RadioButton $2 + IntOp $2 $2 + 1 ;Advance to the next section + Goto start_spellcheck_radio + !insertmacro EndRadioButtons ; Page enter and exit functions..
@@ -1444,3 +1655,232 @@
+; SpellChecker Related Functions +;------------------------------- +; 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 + Pop $R0 ;This is the section index + IntCmp $R0 ${SecSpellCheckBreton} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckCatalan} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckCzech} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckWelsh} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckDanish} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckGerman} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckGreek} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckEnglish} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckEsperanto} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckSpanish} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckFaroese} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckFrench} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckItalian} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckDutch} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckNorwegian} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckPolish} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckPortuguese} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckRomanian} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckRussian} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckSlovak} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckSwedish} 0 +3 +3 + IntCmp $R0 ${SecSpellCheckUkrainian} 0 +3 +3 +FunctionEnd ;GetLangCodeForSection +; Select and Disable any Sections that have currently installed dictionaries +Function SelectAndDisableInstalledDictionaries + ; Start with the first language dictionary + IntOp $R0 ${SecSpellCheck} + 1 + ; If it is the end of the section group, stop + SectionGetFlags $R0 $R1 + IntOp $R2 $R1 & ${SF_SECGRPEND} + IntCmp $R2 ${SF_SECGRPEND} done + Call GetLangCodeForSection + 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 + IntOp $R0 $R0 + 1 ;Advance to the next section +Function InstallAspellAndDict + Call GetLangCodeForSection + Pop $R0 ;This is the language code + IfErrors done ; We weren't able to convert the section to lang code + StrCmp $R1 "cancel" done + MessageBox MB_RETRYCANCEL "$(GAIM_SPELLCHECK_ERROR) : $R1" IDRETRY retry IDCANCEL done + Call InstallAspellDictionary + StrCmp $R1 "cancel" done + MessageBox MB_RETRYCANCEL "$(GAIM_SPELLCHECK_DICT_ERROR) : $R1" IDRETRY retry_dict + 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 "$TEMP\aspell_installer.exe" 0 +3 + StrCpy $R0 $(ASPELL_INSTALL_FAILED) + ; We need to download and install aspell + StrCpy $R1 "$TEMP\aspell_installer.exe" + StrCpy $R2 "${DOWNLOADER_URL}?version=${GAIM_VERSION}&dl_pkg=aspell_core" + DetailPrint "Downloading Aspell... ($R2)" + NSISdl::download $R2 $R1 + StrCmp $R0 "success" +2 + Goto check ; Check that it is now installed correctly + installed: ;Aspell is currently installed, no error message + DetailPrint "Aspell is installed" +Function InstallAspellDictionary + Pop $R0 ;This is the language code + ReadRegStr $R1 HKLM "${ASPELL_REG_KEY}-$R0" "" + StrCmp $R1 "" 0 installed + ; If this is the check after installation, don't infinite loop on failure + StrCmp $R1 "$TEMP\aspell_installer-$R0.exe" 0 +3 + StrCpy $R0 $(ASPELL_INSTALL_FAILED) + ; We need to download and install aspell + StrCpy $R1 "$TEMP\aspell_dict-$R0.exe" + StrCpy $R3 "${DOWNLOADER_URL}?version=${GAIM_VERSION}&dl_pkg=lang_$R0" + DetailPrint "Downloading the Aspell $R0 Dictionary... ($R3)" + NSISdl::download $R3 $R1 + StrCmp $R3 "success" +3 + Goto check ; Check that it is now installed correctly + installed: ;The dictionary is currently installed, no error message + DetailPrint "Aspell $R0 Dictionary is installed" --- a/src/win32/nsis/langmacros.nsh Mon Aug 01 19:34:44 2005 -0400
+++ b/src/win32/nsis/langmacros.nsh Tue Aug 02 12:01:55 2005 -0400
@@ -81,6 +81,35 @@
!insertmacro GAIM_MACRO_LANGSTRING_INSERT un.GAIM_UNINSTALL_ERROR_1 ${CUR_LANG}
!insertmacro GAIM_MACRO_LANGSTRING_INSERT un.GAIM_UNINSTALL_ERROR_2 ${CUR_LANG}
+ ; Spellcheck Section Prompts + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_SECTION_TITLE ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_ERROR ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_DICT_ERROR ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_SECTION_DESCRIPTION ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT ASPELL_INSTALL_FAILED ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_BRETON ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_CATALAN ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_CZECH ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_WELSH ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_DANISH ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_GERMAN ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_ENGLISH ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_GREEK ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_ESPERANTO ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_SPANISH ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_FAROESE ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_FRENCH ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_ITALIAN ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_DUTCH ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_NORWEGIAN ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_POLISH ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_PORTUGUESE ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_ROMANIAN ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_RUSSIAN ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_SLOVAK ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_SWEDISH ${CUR_LANG} + !insertmacro GAIM_MACRO_LANGSTRING_INSERT GAIM_SPELLCHECK_UKRAINIAN ${CUR_LANG} --- a/src/win32/nsis/translations/english.nsh Mon Aug 01 19:34:44 2005 -0400
+++ b/src/win32/nsis/translations/english.nsh Tue Aug 02 12:01:55 2005 -0400
@@ -63,3 +63,33 @@
; Uninstall Section Prompts
!insertmacro GAIM_MACRO_DEFAULT_STRING un.GAIM_UNINSTALL_ERROR_1 "The uninstaller could not find registry entries for Gaim.$\rIt is likely that another user installed this application."
!insertmacro GAIM_MACRO_DEFAULT_STRING un.GAIM_UNINSTALL_ERROR_2 "You do not have permission to uninstall this application."
+; Spellcheck Section Prompts +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_SECTION_TITLE "Spellchecking Support" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_ERROR "Error Installing Spellchecking" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_DICT_ERROR "Error Installing Spellchecking Dictionary" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_SECTION_DESCRIPTION "Support for Spellchecking. (Internet connection required for installation)" +!insertmacro GAIM_MACRO_DEFAULT_STRING ASPELL_INSTALL_FAILED "Installation Failed" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_BRETON "Breton" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_CATALAN "Catalan" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_CZECH "Czech" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_WELSH "Welsh" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_DANISH "Danish" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_GERMAN "German" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_GREEK "Greek" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_ENGLISH "English" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_ESPERANTO "Esperanto" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_SPANISH "Spanish" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_FAROESE "Faroese" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_FRENCH "French" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_ITALIAN "Italian" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_DUTCH "Dutch" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_NORWEGIAN "Norwegian" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_POLISH "Polish" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_PORTUGUESE "Portuguese" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_ROMANIAN "Romanian" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_RUSSIAN "Russian" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_SLOVAK "Slovak" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_SWEDISH "Swedish" +!insertmacro GAIM_MACRO_DEFAULT_STRING GAIM_SPELLCHECK_UKRAINIAN "Ukrainian"