[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[hunspell] 53/98: Imported Upstream version 1.2.2



This is an automated email from the git hooks/post-receive script.

rene pushed a commit to branch master
in repository hunspell.

commit b58e73370ab82ed1014b7f3484c11a0304dd7183
Author: Rene Engelhard <rene@debian.org>
Date:   Thu Apr 21 14:45:19 2016 +0200

    Imported Upstream version 1.2.2
---
 BUGS                        |   4 +-
 ChangeLog                   | 164 +++++++-----
 NEWS                        |  28 +-
 README                      |  84 ++++--
 THANKS                      |  10 +
 man/hu/hunspell.1           | 607 ++++++++++++++++++++++----------------------
 man/hu/hunspell.4           |  70 ++---
 man/hunspell.1              | 125 ++++-----
 man/hunspell.4              |  75 +++---
 po/Makevars                 |   2 +-
 po/POTFILES.in              |   6 +-
 po/hu.gmo                   | Bin 7563 -> 8886 bytes
 po/hu.po                    | 453 ++++++++++++++++++---------------
 po/hunspell.pot             | 296 +++++++++++----------
 src/hunspell/affixmgr.cxx   |  25 +-
 src/hunspell/csutil.cxx     |   2 +-
 src/hunspell/csutil.hxx     |   1 +
 src/hunspell/hashmgr.cxx    |  68 +++--
 src/hunspell/hashmgr.hxx    |   1 +
 src/hunspell/htypes.hxx     |   1 +
 src/hunspell/hunspell.cxx   |   7 +-
 src/hunspell/hunspell.h     |   1 -
 src/hunspell/hunspell.hxx   |   1 -
 src/parsers/latexparser.cxx |   2 +-
 src/parsers/testparser.cxx  |   2 +-
 src/tools/Makefile.am       |   2 +
 src/tools/Makefile.in       |  36 ++-
 src/tools/chmorph.cxx       |  58 +----
 src/tools/example.cxx       |   2 +-
 src/tools/hunspell.cxx      | 272 +++++++++++---------
 src/tools/hzip.c            |   2 +-
 src/win_api/Makefile.am     |   2 +-
 src/win_api/Makefile.cygwin | 145 +++++++++++
 src/win_api/Makefile.in     |   2 +-
 src/win_api/README          |  14 +
 src/win_api/config.h        | 430 +++++++++++++++----------------
 36 files changed, 1678 insertions(+), 1322 deletions(-)

diff --git a/BUGS b/BUGS
index cb0ea7f..6a5468e 100644
--- a/BUGS
+++ b/BUGS
@@ -1,5 +1,5 @@
 * Interactive interface has some visualization problem with long lines
 
-* -U, -u options doesn't support Unicode.
+* Experimental -U, -u options don't support Unicode.
 
-* Compound handling is not thread safe in Hungarian specific code
+* Compound handling is not thread safe in Hungarian specific code.
diff --git a/ChangeLog b/ChangeLog
index 3216f5b..c031218 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,69 +1,106 @@
-* src/hunspell.h: add DLL macro for  Flemming Frandsen
+2008-04-12 Németh László <nemeth at OOo>:
+        * src/tools/hunspell.cxx: 
+        - Multilingual spell checking and special dictionary support with -d.
+          Multilingual spell checking suggested by Khaled Hosny (SF.net
+          Bug 1834280). Example for the new syntax:
+          
+          -d en_US,en_geo,en_med,de_DE,de_med
+          
+          en_US and de_DE are base dictionaries, and en_geo, en_med, de_med
+          are special dictionaries (dictionaries without affix file).
+          Special dictionaries are optional extension of the base dictionaries.
+          There is no explicit naming convention for special dictionaries,
+          only the ".dic" extension: dictionaries without affix file will
+          be an extension of the preceding base dictionary. First dictionary
+          in -d parameter must have an affix file (it must be a base
+          dictionary).
+
+        - new options for debugging, morphological analysis and stemming:
+          -m: morphological analysis or flag debug mode (without affix
+          rule data it signs the flag of the affix rules)
+          -s: stemming mode
+          -D: show also available dictionaries and search path
+              (suggested by Aaron Digulla in SF.net Bug 1902133)
+
+        - add missing refresh() to print bad words before the slower suggestion
+          search in UI (better user experience)
+          
+        - fix tabulator problems (reported by ugli-kid-joe AT sf DOT net)
 
-- add per mille to LANG hu_HU section
+        - fix different encoding of dic and input, and suggestions
 
-új makealias
-ivóvíz tiltási probléma!!!
-- több szótár::
-hu_HU_geo
-hu_HU_politics
-hu_HU_
-NAME magyar geológiai szakszótár
+        - add per mille sign to LANG hu_HU section.
 
-- időkorlát a generáláshoz???
-- valami optimalizálás kell
+        - rewrite program messages. Concatenating multiple printfs for
+          easier translation suggested by András Tímár and Gábor Kelemen.
 
+        * src/hunspell/csutil.cxx: set static encds variable. Patch by
+          Rene Engerhald. SF.net Bug 1896207 and 1939988.
+        
+        * src/hunspell/w_char.hxx,csutil.hxx: reorganizing
+          w_char typedef and HENTRY_DATA, HENTRY_FIND consts
 
-- DEBUG mode: -m
-- m: analyze or flag debug mode
-- s: stems
+        * src/hunspell/hunzip.cxx: fopen(): using rb options instead of r (fix
+          for Windows)
+          
+        * src/tools/affixmgr.cxx: restore original behaviour of get_wordchars
+          in an #ifdef WINSHELL section. Problem reported by Ingo H. de Boer
+          in SF.net Bug 1763105.
 
-- hunzip.cxx: explicit binary read for Windows (fopen(,"rb"))
+        * src/tools/chmorph.cxx: remove the experimental modifications
 
-- szinonimaszótár elkészítése,
+        * src/tools/hzip.c: fopen(): using wb options instead of w (fix
+          for Windows)
 
-- javított javaslattevés???
-ötlet: 
-- nagyon eltérőt ne javasoljon!!!
-- gyorsítás, optimalizálás??? (egy betűs eltérés jav.???)
-- 
+        * src/tools/hunzip.cxx: add missing MOZILLA_CLIENT. Reported
+          by Ryan VanderMeulen.
 
-Hunspell ui: refresh() for better reaction time!!!
-- fix tabulators 
-- fix different encoding of dic and input, and suggestions
-- long lines: problems
+        * man/*, man/hu/*: updated manual
 
-timeless warnings Mozilla (Ryan)
-hunspell.cxx-ben config.h???
         * man/hunspell.4: fix formatting problem (missing header)
+        
+        * tools/makealias: now works with the extra data fields.
 
-2008-01-30 1882105 Mark McClain: OS X fix on PPC platform
+        * phonet.cxx: use HASHSIZE const
 
+        * tests/rep.aff: fix REP count
+        
+        * src/win_api/Makefile.cygwin, README: native Windows compilation
+          in Cygwin environment without cygwin1.dll dependency (see README
+          for compiling instructions).
 
-- manual!!
-- chmorph vissza!!!!
-HENTRY_DATA át, kitöröl a htypes hiv., máshonnan
-két konstruktor
-* phonet.cxx ->HASHs
-csutill a htypes-hoz
-Ryan: MOZILLA_CLIENT a hunzipba
+2008-04-08 Roland Smith <rsmith AT xs4all DOT nl>:
+        * src/parsers/latexparser.cxx: fix PATTERN_LEN for AMD64 and
+          other platforms with different struct padding (SF.net Bug 1937995).
 
-* tests/rep.aff: fix REP count
+2008-04-03 Kelemen Gábor <kelemeng AT gnome DOT hu>:
+        * po/POTFILES.in: fix path of the source file
 
-2008-01-30 Németh László <nemeth at OOo>:
-        - ZWSP, REP, tabulator problems: need for the final release?
-         
+        * po/Makevars: add --from-code=UTF-8 gettext option 
+        
+        * hunspell.cxx: add comments for shortkey translation
+
+2008-02-04 Flemming Frandsen <flfr AT stibo DOT com>
+        * src/hunspell.h: fix Windows DLL support
+        - this patch also reported by Zoltán Bartkó.
 
-        * Bug 1851246 IDB_Winshell Visual C, hunspell.cxx, csutil.cxx, hunspelldll.c
+2008-01-30 Mark McClain <marc_mcclain AT users DOT sf DOT net>
+        * src/hunspell.cxx: stem(): fix function call side effect
+          for PPC platform (SF.net Bug 1882105).
 
-        * Bug 1856572  Mark de Does C prototype problem
+2008-01-30 Németh László <nemeth at OOo>:
+        * hunspell.cxx, csutil.cxx, hunspelldll.c: fix
+          SF.et Bug 1851246, patch also by Ingo H. de Boer.
 
-        * hunspell.pc: 1857450 wrong prefix in hunspell.pc.in
+        * hunspell.h: fix SF.net Bug 1856572 (C prototype problem),
+          patch by Mark de Does.
 
-        * Bug 1857512, reported by Rene Engelhard, Mark de Does
+        * hunspell.pc.in: fix SF.net Bug 1857450 wrong prefix, reported
+          by Mark de Does.
 
-        * csutil.cxx: Bug 1863239, notrailingcomma patch and optimization of
-          get_currect_cs() by Caolan McNamara.
+        * hunspell.pc.in: reset numbering scheme: libhunspell-1.2.
+          Fix SF.net Bug 1857512 reported by Mark de Does,
+          also by Rene Engelhard.
 
         * csutil.cxx: patches for ARM platform, signed_chars.dpatch
           by Rene Engelhard and arm_structure_alignment.dpatch by
@@ -77,19 +114,22 @@ Ryan: MOZILLA_CLIENT a hunzipba
 
         * README: fix problems reported by Pham Ngoc Khanh.
 
-        * hunspell.pc: reset numbering scheme: libhunspell-1.2
-
-        * csutil.cxx, suggestmgr: Warning-free in OOo builds
+        * csutil.cxx, suggestmgr: Warning-free in OOo builds.
 
-        * hentry??, csutil.cxx: fix protected memory problems with
-          stored pointers on several not x86 platforms.
+        * hashmgr.*, csutil.*: fix protected memory problems with
+          stored pointers on several not x86 platforms by
+          store_pointer(), get_stored_pointer().
 
-        * fix iconv support on Solaris platform
+        * src/tools/hunspell.cxx: fix iconv support on Solaris platform.
 
         * tests/IJ.good: add missing test file
 
         * csutil.cxx: fix const char* related errors. Compiling bug
-          with Visual C++ reported by Ryan VanderMeulen and Ingo H. De Boer.
+          with Visual C++ reported by Ryan VanderMeulen and Ingo H. de Boer.
+
+2008-01-03 Caolan McNamara <cmc at OO.o>:
+        * csutil.cxx: SF.net Bug 1863239, notrailingcomma patch and
+          optimization of get_currect_cs().
 
 2007-11-01 Németh László <nemeth at OOo>:
         * hunspell/*: new feature: morphological generation,
@@ -150,7 +190,7 @@ Ryan: MOZILLA_CLIENT a hunzipba
 2007-09-05 Németh László <nemeth at OOo>:
 	* win_api/Hunspell.vproj, parsers/testparser.cxx,textparser.hxx:
 	  warning fixes and removing unnecessary Windows project file.
-	  Reported by Ingo H. De Boer.
+	  Reported by Ingo H. de Boer.
 
 	* hashmgr.*, {affixmgr,suggestmgr}.cxx: optimized data structure
 	  for variable-count fields (only "ph" transliteration field in
@@ -186,7 +226,7 @@ Marseille	ph:maarsayl
 	* suggestmgr.cxx: fix twowords() for last UTF-8 multibyte character.
 	  (conditional jump or move depended on uninitialised value).
 
-2007-08-29 Ingo H. De Boer <idb_winshell at SF.net>:
+2007-08-29 Ingo H. de Boer <idb_winshell at SF.net>:
 	* win_api/{hunspell,libhunspell, testparser}.vcproj: new project
 	  files for the library and the executables.
 	
@@ -194,26 +234,26 @@ Marseille	ph:maarsayl
 	  Version number problem also reported by András Tímár.
 
 2007-08-27 Németh László <nemeth at OOo>:
-	* suggestmgr.hxx: put fixed version. Bug report by Ingo H. De Boer.
+	* suggestmgr.hxx: put fixed version. Bug report by Ingo H. de Boer.
 
 	* suggestmgr.cxx: remove variable-length local character array
-	  reported by Ingo H. De Boer.
+	  reported by Ingo H. de Boer.
 
 2007-08-27 Németh László <nemeth at OOo>:
 	* suggestmgr.hxx: change bad time_t to clock_t in header, too.
-	  Bug reports or patches by Ingo H. De Boer under SF.net
+	  Bug reports or patches by Ingo H. de Boer under SF.net
 	  Bug ID 1781951, János Mohácsi and Gábor Zahemszky, András Tímár,
 	  OMax3 at SF.net under SF.net Bug ID 1781592.
 
 	* phonet.*: change variable-length local character array to
 	  portable fixed size character array. Problem reported by
-	  Ingo H. De Boer under SF.net Bug ID 1781951 and
+	  Ingo H. de Boer under SF.net Bug ID 1781951 and
 	  Ryan VanderMeulen.
 
 	* suggestmgr.cxx: remove debug message (also by
-	  Ingo H. De Boer).
+	  Ingo H. de Boer).
 
-2007-08-26 Ingo H. De Boer <idb_winshell at SF.net>:
+2007-08-26 Ingo H. de Boer <idb_winshell at SF.net>:
 	* win_api/Hunspell.vcproj: updated version (with phonet.*)
 
 2007-08-23 Németh László <nemeth at OOo>:
@@ -302,7 +342,7 @@ Marseille	ph:maarsayl
          will be recognised with affixes of Simpson (Foo's etc.)."
 
 2007-07-18 Németh László <nemeth at OOo>:
-	* src/win_api/: add missing resource files, reported by Ingo H. De Boer.
+	* src/win_api/: add missing resource files, reported by Ingo H. de Boer.
 
 2007-07-16 Németh László <nemeth at OOo>:
 	* hunspell.cxx: fix dot removing from UTF-8 encoded words in cleanword2()
@@ -347,7 +387,7 @@ Marseille	ph:maarsayl
 	* {dictmgr,csutil,hashmgr,suggestmgr}.cxx: check memory allocation.
 	  Sf.net Bug ID 1747507, based on the patch by Jose da Silva.
 
-2007-07-13 Ingo H. De Boer <idb_winshell at SF.net>:
+2007-07-13 Ingo H. de Boer <idb_winshell at SF.net>:
 	* atypes.cxx: fix Visual C compatibility: Using
 	"HUNSPELL_WARNING(a,b,...} {}" macro instead of empty "X(a,b...)".
 	
diff --git a/NEWS b/NEWS
index c514e10..61c2453 100644
--- a/NEWS
+++ b/NEWS
@@ -1,13 +1,33 @@
-2008-03-03: Hunspell 1.2.2 release:
-  - multiple dictionary (dic file) support to use extra (medical,
-    geographical etc.) dictionaries (tools/example)
+2008-04-12: Hunspell 1.2.2 release:
+  - extended dictionary (dic file) support to use multiple base and
+    special dictionaries.
+    
+  - new and improved options of command line hunspell:
+    -m: morphological analysis or flag debug mode (without affix
+        rule data it signs the flag of the affix rules)
+    -s: stemming mode
+    -D: list available dictionaries and search path
+    -d: support extra dictionaries by comma separated list. Example:
+    
+    hunspell -d en_US,en_med,de_DE,de_med,de_geo UNESCO.txt
+
+    - forbidding in personal dictionary (with asterisk, / signs affixation)
 
   - optional compressed dictionary format "hzip" for aff and dic files
+    usage:
+    hzip example.aff example.dic
+    mv example.aff example.dic /tmp
+    hunspell -d example
+    hunzip example.aff.hz >example.aff
+    hunzip example.dic.hz >example.dic
+
+  - new affix compression tool "affixcompress": compression tool for
+    large (millions of words) dictionaries.
 
   - support encrypted dictionaries for closed OpenOffice.org extensions or
     other commercial programs
 
-  - new affix compression tool "affixcompress"
+  - improved manual
 
   - bug fixes
 
diff --git a/README b/README
index a718501..f97273f 100644
--- a/README
+++ b/README
@@ -15,7 +15,7 @@ Main features of Hunspell spell checker and morphological analyzer:
 
 - Unicode support (affix rules work only with the first 65535 Unicode characters)
 
-- Morphological analysis (in custom item and arrangement style)
+- Morphological analysis (in custom item and arrangement style) and stemming
 
 - Max. 65535 affix classes and twofold affix stripping (for agglutinative
   languages, like Azeri, Basque, Estonian, Finnish, Hungarian, Turkish, etc.)
@@ -30,8 +30,8 @@ Main features of Hunspell spell checker and morphological analyzer:
 
 - Free software (LGPL, GPL, MPL tri-license)
 
-Compiling
----------
+Compiling on Unix/Linux
+-----------------------
 
 ./configure
 make
@@ -39,9 +39,6 @@ make install
 
 For dictionary development, use the --with-warnings option of configure.
 
-For compiling morphological analyser and stemmer code and tools, use the
---with-experimental option of configure.
-
 For interactive user interface of Hunspell executable, use the --with-ui option.
 
 The developer packages you need to compile Hunspell's interface:
@@ -58,6 +55,48 @@ locale and gettext (but you can also use the
 
 Hunspell distribution uses new Autoconf (2.59) and Automake (1.9).
 
+Compiling on Windows
+--------------------
+
+1. Compiling with Windows SDK
+
+Download the free Windows SDK of Microsoft, open a command prompt
+window and cd into hunspell/src/win_api. Use the following command
+to compile hunspell:
+
+vcbuild
+
+2. Compiling in Cygwin environment
+
+Download and install Cygwin environment for Windows with the following
+extra packages: 
+
+make
+gcc-g++ development package
+mingw development package (for cygwin.dll free native Windows compilation)
+ncurses, readline (for user interface)
+iconv (character conversion)
+
+2.1. Cygwin1.dll dependent compiling
+
+Open a Cygwin shell, cd into the hunspell root directory:
+
+./configure
+make
+make install
+
+For dictionary development, use the --with-warnings option of configure.
+
+For interactive user interface of Hunspell executable, use the --with-ui option.
+
+readline configure parameter: --with-readline (for fancy input line editing)
+
+1.2. Cygwin1.dll free compiling
+
+Open a Cygwin shell, cd into the hunspell/src/win_api and
+
+make -f Makefile.cygwin
+
 Testing
 -------
 
@@ -88,26 +127,33 @@ http://hunspell.sourceforge.net
 Usage
 -----
 
-The src/tools dictionary contains three executables.
-A spell checker with Ispell-like curses interface and Ispell
-compatible pipe interface (hunspell) and two small example
-program (hunmorph and hunstem).
+The src/tools dictionary contains ten executables after compiling
+(or some of them are in the src/win_api):
+
+affixcompress: dictionary generation from large (millions of words) vocabularies
+  analyze: example of spell checking, stemming and morphological analysis
+  chmorph: example of automatic morphological generation and conversion
+  example: example of spell checking and suggestion
+ hunspell: main program for spell checking and others (see manual)
+   hunzip: decompressor of hzip format
+     hzip: compressor of hzip format
+makealias: alias compression (Hunspell only, not back compatible with MySpell)
+    munch: dictionary generation from vocabularies (it needs an affix file, too).
+  unmunch: list all recognized words of a MySpell dictionary
 
 After compiling and installing (see INSTALL) you can
 run the Hunspell spell checker (compiled with user interface)
 with a Hunspell or Myspell dictionary:
 
-hunspell -d en_UK text.txt
+hunspell -d en_US text.txt
 
 or without interface:
 
+hunspell
 hunspell -d en_UK -l <text.txt
 
-(Dictionaries consists of an affix and dictionary file.)
-
-Usage of Hunmorph morphological analyzer:
-
-hunmorph en_UK.aff en_UK.dic input_file
+Dictionaries consist of an affix and dictionary file, see tests/
+or http://wiki.services.openoffice.org/wiki/Dictionaries.
 
 Using Hunspell library with GCC
 -------------------------------
@@ -121,12 +167,12 @@ g++ -lhunspell example.cxx
 Dictionaries
 ------------
 
-Myspell dictionaries:
-http://lingucomponent.openoffice.org/spell_dic.html
+Myspell & Hunspell dictionaries:
+http://wiki.services.openoffice.org/wiki/Dictionaries
 
 Aspell dictionaries (need some conversion):
 ftp://ftp.gnu.org/gnu/aspell/dict
 Conversion steps: see relevant feature request at http://hunspell.sf.net.
 
-Németh László
+László Németh
 nemeth at OOo
diff --git a/THANKS b/THANKS
index 5d5387a..2474acf 100644
--- a/THANKS
+++ b/THANKS
@@ -1,21 +1,25 @@
 Many thanks to the following contributors and supporters:
 
 Lars Aronsson
+Bartkó Zoltán
 Bencsáth Boldizsár
 Bíró Árpád
 Ingo H. de Boer
 Simon Brouwer
 Jeppe Bundsgaard
 Ginn Chen
+Aaron Digulla
 Dmitri Gabinski
 Dvornik László
 David Einstein
 Rene Engelhard
 Frederik Fouvry
+Flemming Frandsen
 Gavins at OOo
 Gefferth András
 Godó Ferenc
 Goldman Eleonóra
+Steinar H. Gunderson
 Halácsy Péter
 Chris Halls
 Khaled Hosny
@@ -28,14 +32,17 @@ Jean-Christophe Helary
 Kevin Hendricks
 Martin Hollmichel
 Pavel Janík
+Kelemen Gábor
 Kéménczy Kálmán
 Dan Kenigsberg
+Pham Ngoc Khanh
 Khiraly László
 Koblinger Egmont
 Kornai András
 Tor Lillqvist
 Robert Longson
 Marot at SF dot net
+Mark McClain
 Caolan McNamara
 Michael Meeks
 Moheb Mekhaiel
@@ -47,6 +54,8 @@ Daniel Naber
 Nagy Viktor
 John Nisly
 Noll János
+Malcolm Parsons
+Sylvain Paschein
 Bryan Petty
 Harri Pitkänen
 Davide Prina
@@ -56,6 +65,7 @@ Bernhard Rosenkraenzer
 Sarlós Tamás
 Thobias Schlemmer
 Jose da Silva
+Roland Smith
 Munzir Taha
 Tímár András
 Tonal at OOo
diff --git a/man/hu/hunspell.1 b/man/hu/hunspell.1
index 5dbc79e..7c3423b 100644
--- a/man/hu/hunspell.1
+++ b/man/hu/hunspell.1
@@ -1,93 +1,33 @@
 .hla hu
-.TH hunspell 1 "2003. december 15."
+.TH hunspell 1 "2008. április 11."
 .LO 1
-.SH N�V
-hunspell \- helyes�r�s\-jav�t�, sz�t�vez� �s morfol�giai elemz� program
-.SH �TTEKINT�S
-hunspell [\-1 \-a \-G \-h \-H \-l \-L \-m \-n \-t] [\-d sz�t�r] [\-p saj�t_sz�t�r] [�llom�ny(ok)]
-.SH LE�R�S
+.SH NÉV
+hunspell \- unicode-os helyesírás\-ellenőrző, szótövező és morfológiai elemző program
+.SH ÁTTEKINTÉS
+hunspell [\-1aDGHhLlmnstvw] [\-\-check\-url] [\-d szótár[,...]] [\-p sajátszótár] [állomány(ok)]
+.SH LEÍRÁS
 A
 .B hunspell
-Ispell\-szer� interakt�v �s cs�fel�let a (Magyar) Myspell f�ggv�nyk�nyvt�rhoz.
-Felismeri �s jav�tja az el�t�seket �s t�pushib�kat
-sima sz�veges, (La)TeX, HTML, �s groff (k�zik�nyv oldal) �llom�nyokban.
+felismeri és javítja az elütéseket és típushibákat
+egyszerű szöveges, (La)TeX, HTML és groff (kézikönyv oldal) állományokban.
 .PP
-Ha nem adunk meg �llom�nyn�v param�tert, a Hunspell az Ispell
-cs�fel�let�hez hasonl�an m�k�dik: a bemenet sorait szavakra bontja,
-�s *, +, vagy - jellel kezd�d� kimeneti sorral jelzi, ha egy sz� j�,
-�s # vagy & jellel, ha rossz. A cs�fel�let parancsait viszont az
-Ispellhez hasonl�an csak a
+Ha nem adunk meg állománynév-paramétert, a Hunspell az Ispell
+csőfelületéhez hasonlóan működik: a bemenet sorait szavakra bontja,
+és *, +, vagy - jellel kezdődő kimeneti sorral jelzi, ha egy szó jó,
+és # vagy & jellel, ha rossz. A csőfelület parancsait viszont az
+Ispellhez hasonlóan csak a
 .I \-a
-kapcsol� megad�s�val �rtelmezi.
+kapcsoló megadásával értelmezi.
 .PP
-�llom�nyn�v param�ter eset�n elindul egy az Ispell�hez hasonl� interakt�v fel�let.
-.PP
-A program a k�vetkez� el�ny�ket ny�jtja a hasonl� c�lokat szolg�l� \fIIspell\fR\-lel szemben:
-.IP \-
-K�pz�k �tfog� ismerete. (T�bb t�zezer helyes sz�alak elfogad�s�t tette
-lehet�v� a tesztel�sre haszn�lt 4 milli� szavas gyakoris�gi sz�t�rban.)
-.IP \-
-Homonim�k kezel�se (nincsenek p�ld�ul olyan alakok elfogadva, mint megv�rban).
-.IP \-
-Helyes javaslatok a t�bb karakter v�ltoz�s�val j�r� tipikus hib�kra
-(j/ly, �j/ijj, nyj/nny �s m�g t�bb tucatnyi t�veszt�s megvizsg�l�s�val).
-Az \fIIspell\fR csak k�t karakter felcser�l�se; vagy egy karakter hi�nya,
-cser�je, illetve felesleges jelenl�te eset�n ad helyes javaslatot.
-.IP \-
-Az �sszes helyes �sszetett sz�nak l�tsz�, de tipikus hib�val el��ll� alak tilt�sa (karvaj, sz�nt�, s�lyt� stb.)
-.IP \-
-Javaslatok val�sz�n�s�gi sorrendben  jelennek meg (tipikus hib�k, i/�, o/�, u/� t�veszt�sek stb.).
-.IP \-
-�sszetett szavak eset�n  6\-3\-as szab�ly alkalmaz�sa (helyes�r�s\-ellen�rz�, g�pkocsi\-�sszeszerel�s).
-.IP \-
-Mozg�szab�ly alkalmaz�sa (kiviteli enged�ly, kivitelienged�ly\-k�r�s).
-.IP \-
-A magyar nyelv egy�b �sszet�teli szab�lyainak alkalmaz�sa (p�ld�ul hatl�vet�, tizenk�t l�vet�, k�thavi, k�t h�napos, m�sodmag�val).
-.IP \-
-Leg-, legesleg- �s -bb confixum helyes kezel�se (nincs pl. leg�des, csak leg�desebb).
-.IP \-
-Ragozhat� t�sz�felv�tel. Megk�nny�ti egy �j sz� ragozott v�ltozatainak ellen�rz�s�t, feleslegess� t�ve ezek k�l�n\-k�l�n t�rt�n� felv�tel�t a saj�t sz�t�rba.
-.IP \-
-Javaslatok m�ssalhangz�\-tripl�z�sok (sakkk�r, balettt�ncos, dzsesszszak) eset�n.
-(Ispell helyesnek fogadja el ezeket.)
-.IP \-
-Javaslatok sz�tagdupl�z�sok (oktatat�s, igenenevet) eset�n.
-.IP \-
-Javaslatok �kezet n�lk�li sz�vegre (tukorfurogep\->t�k�rf�r�g�p).
-.IP \-
-K�t�jeles szavak kezel�se (unos\-untalan).
-.IP \-
-Toldal�kolt sz�mok (1\-j�n, 11\-�n, 5.\-et) kezel�se.
-.IP \-
-�, %, �s � jelek (%\-kal) toldal�kolt alakjainak kezel�se.
-.IP \-
-Mozaikszavak (M�V\-osokat) kezel�se.
-.IP \-
-Y-ra v�gz�d� szavak (boyjal, pennyvel) kezel�se.
-.IP \-
-Idegen ejt�s� sz�tagra v�gz�d� szavak (Anonymusszal, Voltaire\-nek) kezel�se.
-.IP \-
-K�t sz�b�l �ll� f�ldrajzi nevek (San Francisc�\-i) kezel�se.
-.IP \-
-Hib�s alakok tilt�sa (Babitssal, tanit, alkot�m�v�sz stb.)
-.IP \-
-Tilt�sok jelz�se a felhaszn�l�i fel�leten.
-.IP \-
-Egy�b (p�ld�ul az Ispell ragozott ut�sz� eset�ben b�rmilyen sz��sszet�telt elfogad: macskatekerem, kutyakavarom, ezt a Hunspell nem teszi meg).
-.IP \-
-Magyar nyelv� (illetve 
-.B locale (7)
-f�gg�) fel�let.
-.IP \-
-Hordozhat� sz�veges sz�t�r�llom�nyok, szemben az Ispell platform, �s bin�ris Ispell ford�t�st�l f�gg�en (nem) kezelhet� adat�llom�nyaival.
-.SH KAPCSOL�K
+Állománynév paraméter esetén elindul egy az Ispelléhez hasonló interaktív felület.
+.SH KAPCSOLÓK
 .TP
 .B \-1
-Speci�lis form�tum: a bemeneti �llom�ny tabul�torjelet tartalmaz� soraib�l csak az
-els� tabul�torjel el�tti karaktersorozatot vizsg�lja meg.
+Speciális formátum: a bemeneti állomány tabulátorjelet tartalmazó soraiból csak az
+első tabulátorjel előtti karaktersorozatot vizsgálja meg.
 .TP
 .B \-a
-Ispellhez cs�fel�let. A
+Ispellhez csőfelület. A
 .I !,
 .I +,
 .I \-,
@@ -95,225 +35,258 @@ Ispellhez cs
 .I #,
 vagy
 .I ^
-jellel kezd�d� sorok a cs�fel�let parancsai, jelent�s�ket
-az Ispell k�zik�nyvoldal r�szletezi. A \-a kapcsol�
-hat�s�ra a kimenetben a j� szavakat csak csillaggal jelzi
-a Hunspell. Ez nagyobb kompatibilit�st biztos�t az Ispellt haszn�l� programok
-n�melyik�vel (p�ld�ul a LyX-szel). Ekkor nem kell
-megadnunk a \-a kapcsol�t, mivel az Ispellt
-haszn�l� programok automatikusan ezzel a kapcsol�val ind�tj�k
-el az Ispell nev�ben fut� Hunspellt is.
-.TP
-.B \-d " sz�t�r"
-Meghat�rozza a helyes�r�si sz�t�rt. Az alap�rtelmezett sz�t�r a
-.BR /usr/share/hunspell/default.
-A megadott �tvonal lehet abszol�t �s relat�v is. Relat�v
-�tvonal eset�n el�sz�r az aktu�lis, majd a
+jellel kezdődő sorok a csőfelület parancsai, jelentésüket
+az Ispell kézikönyvoldal részletezi. A \-a kapcsoló
+hatására a kimenetben a jó szavakat csak csillaggal jelzi
+a Hunspell. Ez nagyobb kompatibilitást biztosít az Ispellt használó programok
+némelyikével (például a LyX-szel). Ekkor nem kell
+megadnunk a \-a kapcsolót, mivel az Ispellt
+használó programok automatikusan ezzel a kapcsolóval indítják
+el az Ispell nevében futó Hunspellt is.
+.TP
+.B \-d " szótár[,szótár2,...]"
+Beállítja a helyesírási szótárakat a
+kiterjesztés nélküli szótárnevek, útvonalak
+megadásával.
+
+Például a
+.PP
+hunspell \-d hu_HU,hu_geo,hu_med,de_DE,de_med
+.PP
+a magyar alapszótárat és kiegészítő szótárait,
+valamint német alapszótárat és annak egy kiegészítő
+szótárát tölti be. Az alapszótárak egy aff és egy dic
+kiterjesztésű állományból állnak, a kiegészítő szótárak
+csak dic állományból. A kiegészítő szótárak
+nevére vonatkozóan nincs szabály (csak a dic kiterjesztés),
+a szótárnevek sorrendje határozza meg, hogy melyik alapszótárhoz
+töltődnek be a kiegészítő szótárak (ami pedig meghatározza
+a javaslattevést). Az első szótár mindig alapszótár.
+.PP
+Az alapértelmezett szótár a környezet nyelvi beállításától függ
+az Unix rendszereken. Locale hiányában a
+.BR /usr/share/hunspell/default
+az alapértelmezett szótár. 
+.PP
+A megadott útvonal lehet abszolút és relatív is. Relatív
+útvonal esetén először az aktuális, majd a
 .BR /usr/share/hunspell
-k�nyvt�rban keresi a sz�t�rt a program. L.
-.BR P�LD�K.
+és még több más könyvtárban keresi a szótárt a program. L. \-D és a
+.BR PÉLDÁK.
+.TP
+.B \-D
+A keresési útvonalak, az elérhető és betöltött szótárak útvonalának
+kijelzése.
 .TP
 .B \-G
-A \-l, \-w, �s \-L kapcsol�kat kieg�sz�t� kapcsol�. A standard bemenetr�l
-�rkez� hib�s szavak, illetve
-sorok megjelen�t�se helyett a j� szavak �s a hib�tlan sorok megjelen�t�s�t
-k�rhetj�k vele. Ha m�st nem adunk meg, a \-l kapcsol� hat�s�nak megfelel�en
-m�k�dik, csak a rossz helyett a j� szavakat �rja a standard kimenetre.
+A \-l, \-w, és \-L kapcsolókat kiegészítő kapcsoló. A standard bemenetről
+érkező hibás szavak, illetve
+sorok megjelenítése helyett a jó szavak és a hibátlan sorok megjelenítését
+kérhetjük vele. Ha mást nem adunk meg, a \-l kapcsoló hatásának megfelelően
+működik, csak a rossz helyett a jó szavakat írja a standard kimenetre.
 .TP
 .B \-h, \-\-help
-A be�p�tett le�r�s megjelen�t�se.
+A beépített leírás megjelenítése.
 .TP
 .B \-H
-HTML bemeneti �llom�nyform�tum be�ll�t�sa. Ha az �llom�ny
-nev�nek .html, .htm, vagy .xml a kiterjeszt�se, ez automatikusan bek�vetkezik.
+HTML bemeneti állományformátum beállítása. Ha az állomány
+nevének .html, .htm, vagy .xml a kiterjesztése, ez automatikusan bekövetkezik.
 .TP
 .B \-l
-Ki�rja a hib�s szavakat a standard bemenetr�l �rkez� �llom�nyb�l.
-Haszn�lhat� a \-H, \-t, \-n, \-1 kapcsol�kkal egy�tt is. A \-G kapcsol�
-megford�tja a Hunspell m�k�d�s�t: csak a j� szavak ker�lnek ki�r�sra.
+Kiírja a hibás szavakat a standard bemenetről érkező állományból.
+Használható a \-H, \-t, \-n, \-1 kapcsolókkal együtt is. A \-G kapcsoló
+megfordítja a Hunspell működését: csak a jó szavak kerülnek kiírásra.
 .TP
 .B \-L
-Csak a hib�s szavakat tartalmaz� sorokat �rja ki a standard bemenetr�l �rkez� �llom�nyb�l.
-Haszn�lhat� a \-H, \-t, \-n, \-1 kapcsol�kkal egy�tt is. A \-G kapcsol�
-megford�tja a m�k�d�s�t: csak azok a sorok ker�lnek ki�r�sra, amelyek egy
-hib�s sz�t sem tartalmaznak.
-.TP
+Csak a hibás szavakat tartalmazó sorokat írja ki a standard bemenetről érkező állományból.
+Használható a \-H, \-t, \-n, \-1 kapcsolókkal együtt is. A \-G kapcsoló
+megfordítja a működését: csak azok a sorok kerülnek kiírásra, amelyek egy
+hibás szót sem tartalmaznak.
+.TP
+.B \-m
+Elemző üzemmód: a bemeneti szövegszavak morfológia elemzése, illetve a szótári
+morfológiai leírás hiányában a toldalékolt szavak kapcsolóinak
+kijelzése (szótárfejlesztőknek).
 .B \-n
-Nroff/troff bemeneti �llom�nyform�tum be�ll�t�sa, els�sorban a 
-k�zik�nyvlapok ellen�rz�s�re.
+Nroff/troff bemeneti állományformátum beállítása, elsősorban a 
+kézikönyvlapok ellenőrzésére.
 .TP
-.B \-p " saj�t_sz�t�r"
-A felhaszn�l� saj�t sz�t�r�nak be�ll�t�s�ra szolg�l.
+.B \-p " saját_szótár"
+A felhasználó saját szótárának beállítására szolgál.
 
-Az alap�rtelmezett saj�t sz�t�r a
+Az alapértelmezett saját szótár a
 .BR $HOME/.hunspell_default
-�llom�ny. Ha sz�t�rat is megadunk a
+állomány. Ha szótárat is megadunk a
 .I \-d
-kapcsol�val, vagy a
+kapcsolóval, vagy a
 .I DICTIONARY
-k�rnyezeti v�ltoz�val, a saj�t sz�t�r a
-.BR $HOME/.hunspell_sz�t�rn�v
-lesz. Ha a saj�t sz�t�r nem l�tezik, l�trehozza.
+környezeti változóval, a saját szótár a
+.BR $HOME/.hunspell_szótárnév
+lesz. Ha a saját szótár nem létezik, létrehozza.
 
-Ha az aktu�lis k�nyvt�rban is van egy ugyanilyen nev�
-�llom�ny, akkor annak tartalma is beolvas�sra ker�l,
-mint saj�t sz�t�r, �s az �jonnan felvett szavak is
-ide ker�lnek.
+Ha az aktuális könyvtárban is van egy ugyanilyen nevű
+állomány, akkor annak tartalma is beolvasásra kerül,
+mint saját szótár, és az újonnan felvett szavak is
+ide kerülnek.
 
 A
 .I \-p ,
 vagy a
 .I WORDLIST
-k�rnyezeti v�ltoz� megad�s�val �j saj�t sz�t�rat
-jel�l�nk ki. A saj�t sz�t�rat az aktu�lis k�nyvt�rban,
-�s a saj�t k�nyvt�r gy�ker�ben ($HOME) keresi a
-Hunspell. Ha nem tal�lhat�, akkor az �jonnan felvett
-szavak ment�s�n�l l�trehozza a saj�t k�nyvt�r gy�ker�ben.
+környezeti változó megadásával új saját szótárat
+jelölünk ki. A saját szótárat az aktuális könyvtárban,
+és a saját könyvtár gyökerében ($HOME) keresi a
+Hunspell. Ha nem található, akkor az újonnan felvett
+szavak mentésénél létrehozza a saját könyvtár gyökerében.
+.TP
+.B \-s
+Tövező üzemmód: a bemenő szövegszavak tövezése (a szótártól függő
+pontossággal).
 .TP
 .B \-t
-LaTeX bemeneti �llom�nyform�tum be�ll�t�sa. Ha az �llom�ny nev�nek .tex
-a kiterjeszt�se, ez automatikusan bek�vetkezik.
+LaTeX bemeneti állományformátum beállítása. Ha az állomány nevének .tex
+a kiterjesztése, ez automatikusan bekövetkezik.
 .TP
 .B \-u
-Tipikus hib�k kijelz�se az �llom�nyb�l, cserejavaslattal.
+Tipikus hibák kijelzése az állományból, cserejavaslattal.
 .TP
 .B \-u2
-Tipikus hib�k �s jav�t�suk kijelz�se m�dos�that�, �s a
-sed programmal v�grehajtathat� form�ban.
-Ir�ny�tsuk a Hunspell kimenet�t egy �llom�nyba.
-T�r�lj�k azokat a sorokat az elmentett �llom�nyb�l,
-amelyek sed paranccsal megadott jav�t�s�t nem szeretn�nk.
-Ments�k el az �llom�nyt, �s
-a \fIsed -f jav�t�s eredeti_�llom�ny >jav�tott_�llom�ny\fR
-paranccsal jav�thatjuk az �llom�nyt gyorsan
-�s egyszer�en. (A sok hib�t tartalmaz� �llom�nyok
-jav�t�s�t gyors�tja meg ez a lehet�s�g.)
+Tipikus hibák és javításuk kijelzése módosítható, és a
+sed programmal végrehajtatható formában.
+Irányítsuk a Hunspell kimenetét egy állományba.
+Törüljük azokat a sorokat az elmentett állományból,
+amelyek sed paranccsal megadott javítását nem szeretnénk.
+Mentsük el az állományt, és
+a \fIsed -f javítás eredeti_állomány >javított_állomány\fR
+paranccsal javíthatjuk az állományt gyorsan
+és egyszerűen. (A sok hibát tartalmazó állományok
+javítását gyorsítja meg ez a lehetőség.)
 .TP
 .B \-U
-Ha az -u kapcsol�val kapott javaslatokat mind el szeretn�nk fogadni,
-akkor az \-U kapcsol�val a Hunspell automatikusan
-v�grehajtja a cser�ket, �s a m�dos�tott �llom�nyt
-a szabv�nyos kimenetre k�ldi. P�lda a jav�t�sra:
-\fIhunspell -U eredeti_�llom�ny >jav�tott_�llom�ny\fR.
-A hibakimeneten megjelennek a jav�t�sok is m�g egyszer, a
--\u kapcsol�hoz hasonl� m�don.
+Ha az -u kapcsolóval kapott javaslatokat mind el szeretnénk fogadni,
+akkor az \-U kapcsolóval a Hunspell automatikusan
+végrehajtja a cseréket, és a módosított állományt
+a szabványos kimenetre küldi. Példa a javításra:
+\fIhunspell -U eredeti_állomány >javított_állomány\fR.
+A hibakimeneten megjelennek a javítások is még egyszer, a
+-\u kapcsolóhoz hasonló módon.
 .TP
 .B \-v
-Verzi�sz�m.
+Verziószám.
 .TP
 .B \-vv
-Verzi�sz�m (Ispell kompatibilit�s miatt).
+Verziószám (Ispell kompatibilitás miatt).
 .TP
 .B \-w
-Csak a hib�s szavakat �rja ki a standard bemenetr�l �rkez�, soronk�nt
-egy sz�t tartalmaz� �llom�nyb�l. A sorok nincsenek szavakra
-bontva. A sorok szavakra bont�sa, �s csak a hib�s szavak ki�r�sa a \-w kapcsol�val
-�rhet� el. A \-G kapcsol� megford�tja a Hunspell m�k�d�s�t: csak a j� szavak ker�lnek
-ki�r�sra.
-.SH INTERAKT�V FEL�LET
-A fel�let legfels� sor�ban a hib�s sz�alakot, �s az �ppen vizsg�lt
-�llom�ny nev�t l�tjuk. Amennyiben egy sz�alak sz�t�ri tilt�s
-miatt nem ker�l elfogad�sra, a bal fels� sarokban a TILTOTT!
-(FORBIDDEN!) �zenet is megjelenik. Ez az �zenet arra utal, hogy nem
-hi�nyos sz�kincs, hanem sz�nd�kos tilt�s miatt nem ker�lt a sz�
-elfogad�sra. Az els� sor alatt az �llom�ny hib�s sz�t tartalmaz� sor�t, �s
-sz�vegk�rnyezet�t l�thatjuk, majd ezt k�vetik a javaslatok, ha vannak.
+Csak a hibás szavakat írja ki a standard bemenetről érkező, soronként
+egy szót tartalmazó állományból. A sorok nincsenek szavakra
+bontva. A sorok szavakra bontása, és csak a hibás szavak kiírása a \-w kapcsolóval
+érhető el. A \-G kapcsoló megfordítja a Hunspell működését: csak a jó szavak kerülnek
+kiírásra.
+.SH INTERAKTÍV FELÜLET
+A felület legfelső sorában a hibás szóalakot, és az éppen vizsgált
+állomány nevét látjuk. Amennyiben egy szóalak szótári tiltás
+miatt nem kerül elfogadásra, a bal felső sarokban a TILTOTT!
+(FORBIDDEN!) üzenet is megjelenik. Ez az üzenet arra utal, hogy nem
+hiányos szókincs, hanem szándékos tiltás miatt nem került a szó
+elfogadásra. Az első sor alatt az állomány hibás szót tartalmazó sorát, és
+szövegkörnyezetét láthatjuk, majd ezt követik a javaslatok, ha vannak.
 .PP
-A haszn�lhat� billenty�kombin�ci�k:
+A használható billentyűkombinációk:
 .TP
-.B Sz�k�z
-Tov�bbl�p�s jav�t�s n�lk�l a k�vetkez� hib�s sz�ra.
+.B Szóköz
+Továbblépés javítás nélkül a következő hibás szóra.
 .TP
-.B Sz�mok
-A megfelel� javaslat kiv�laszt�sa.
+.B Számok
+A megfelelő javaslat kiválasztása.
 .TP
 .B c
-Csere. A hib�s sz� cser�je a megadott sz�ra, vagy szavakra.
-Az Escape billenty� k�tszeri lenyom�s�val megszak�thatjuk a
-a cser�t.
+Csere. A hibás szó cseréje a megadott szóra, vagy szavakra.
+Az Escape billentyű kétszeri lenyomásával megszakíthatjuk a
+a cserét.
 .TP
 .B j
-A sz� elfogad�sa a program fut�s�nak befejez�d�s�ig.
+A szó elfogadása a program futásának befejeződéséig.
 .TP
 .B f
-A sz� felv�tele a saj�t sz�t�rba.
+A szó felvétele a saját szótárba.
 .TP
 .B k
-A sz� kisbet�sk�nt val� felv�tele a saj�t sz�t�rba.
+A szó kisbetűsként való felvétele a saját szótárba.
 .TP
 .B t
-Ragozott t�sz� felv�tele. A ragoz�s a m�sodikk�nt
-megadott, mint�ul szolg�l� sz� alapj�n t�rt�nik.
-Ha ez a sz� nincs felv�ve a sz�t�rba, a t�sz�felv�telt
-el�lr�l kell kezdeni.
+Ragozott tőszó felvétele. A ragozás a másodikként
+megadott, mintául szolgáló szó alapján történik.
+Ha ez a szó nincs felvéve a szótárba, a tőszófelvételt
+elölről kell kezdeni.
 
-P�lda: gyakran hi�nyoznak az idegen �s a
-mozaikszavak. Vegy�k fel a hi�nyz� OTP sz�t
-a tv k�zn�vi mozaiksz� toldal�kaival!
-Lenyomjuk a t billenty�t, be�rjuk, hogy OTP,
-le�tj�k az �j sor billenty�t, be�rjuk, hogy tv, �s ism�t �j sor. A tv sz�
-ugyanis m�r szerepel a sz�t�rban, �s ragoz�sa
-mondja meg a programnak, hogy az OTP sz�t
-milyen toldal�kokkal szeretn�nk l�tni, pl.
-OTP\-hez, OTP\-met stb. a tv\-hez, tv\-met mint�j�ra.
-A \-val/\-vel, \-v�/\-v� toldal�kokat
-a k�t�jellel kapcsolt toldal�k� szavak
-eset�ben k�l�n kell felvenni, de m�g �gy is sokkal
-k�nyelmesebb a speci�lis t�felv�tel, mint minden
-(ak�r t�bb sz�z) toldal�kos alakot k�l�n\-k�l�n
+Példa: gyakran hiányoznak az idegen és a
+mozaikszavak. Vegyük fel a hiányzó OTP szót
+a tv köznévi mozaikszó toldalékaival!
+Lenyomjuk a t billentyűt, beírjuk, hogy OTP,
+leütjük az új sor billentyűt, beírjuk, hogy tv, és ismét új sor. A tv szó
+ugyanis már szerepel a szótárban, és ragozása
+mondja meg a programnak, hogy az OTP szót
+milyen toldalékokkal szeretnénk látni, pl.
+OTP\-hez, OTP\-met stb. a tv\-hez, tv\-met mintájára.
+A \-val/\-vel, \-vá/\-vé toldalékokat
+a kötőjellel kapcsolt toldalékú szavak
+esetében külön kell felvenni, de még így is sokkal
+kényelmesebb a speciális tőfelvétel, mint minden
+(akár több száz) toldalékos alakot külön\-külön
 felvenni.
 
-Egy kis seg�ts�g a minta kiv�laszt�s�hoz:
-els� menetben a hangrend sz�m�t. Pl. mozaikszavakn�l a
-m�ly hangrend� �j szavak felv�tel�n�l haszn�lhatjuk
-a \fIM�V\fR sz�t p�ldak�nt, ajakr�ses magas hangrendn�l
-pedig az eml�tett \fItv\fR\-t. Ajakkerek�t�ses magas hangrend
-eset�ben a \fIH�K\fR sz�t haszn�lhatjuk (am�g �t nem
-lesz jav�tva a helyes h�k\-re). Ha a hi�nyz�
-sz� nem mozaiksz�, hanem p�ld�ul tulajdonn�v, 
-a \fIP�l\fR, \fIP�ter\fR, \fI�rs\fR szavakat adhatjuk
-meg p�ld�nak a hangrendt�l f�gg�en. Ha meg
-egyszer� k�zn�vr�l van sz�, akkor haszn�ljuk az
-\fIok\fR, \fI�k\fR, \fI�k\fR szavakat.
-Ig�kn�l \fI�ll\fR, \fIv�l\fR, \fI�l\fR,
-ikes ig�kn�l \fI�zik\fR, \fIv�rzik\fR, \fIn�zik\fR
-lehet a p�lda (rem�lhet�leg a k�vetkez�
-v�ltozatokban egyszer�s�dik ez a t�felv�tel).
+Egy kis segítség a minta kiválasztásához:
+első menetben a hangrend számít. Pl. mozaikszavaknál a
+mély hangrendű új szavak felvételénél használhatjuk
+a \fIMÁV\fR szót példaként, ajakréses magas hangrendnél
+pedig az említett \fItv\fR\-t. Ajakkerekítéses magas hangrend
+esetében a \fIHÖK\fR szót használhatjuk (amíg át nem
+lesz javítva a helyes hök\-re). Ha a hiányzó
+szó nem mozaikszó, hanem például tulajdonnév, 
+a \fIPál\fR, \fIPéter\fR, \fIÖrs\fR szavakat adhatjuk
+meg példának a hangrendtől függően. Ha meg
+egyszerű köznévről van szó, akkor használjuk az
+\fIok\fR, \fIék\fR, \fIük\fR szavakat.
+Igéknél \fIáll\fR, \fIvél\fR, \fIül\fR,
+ikes igéknél \fIázik\fR, \fIvérzik\fR, \fInőzik\fR
+lehet a példa (remélhetőleg a következő
+változatokban egyszerűsödik ez a tőfelvétel).
 
-Az Escape billenty� k�tszeri lenyom�s�val megszak�thatjuk ezt
-a m�veletet.
+Az Escape billentyű kétszeri lenyomásával megszakíthatjuk ezt
+a műveletet.
 
-Az itt felvett szavak automatikusan a saj�t
-sz�t�rba ker�lnek. Ha ezt innen t�r�lni
-szeretn�nk, a programb�l kil�pve
-a saj�t sz�t�r k�zi �tszerkeszt�s�vel tehetj�k meg.
+Az itt felvett szavak automatikusan a saját
+szótárba kerülnek. Ha ezt innen törölni
+szeretnénk, a programból kilépve
+a saját szótár kézi átszerkesztésével tehetjük meg.
 
 .TP
 .B m
-Kil�p�s a v�ltoztat�sok ment�se n�lk�l. A program
-v�ltoztat�s megl�te eset�n meger�s�t�st k�r.
+Kilépés a változtatások mentése nélkül. A program
+változtatás megléte esetén megerősítést kér.
 .TP
 .B v
-Az �llom�ny ellen�rz�s�nek megszak�t�sa a v�ltoztat�sok
-ment�s�vel. Ha van k�vetkez� �llom�ny, akkor
-a program annak ellen�rz�s�t kezdi el.
+Az állomány ellenőrzésének megszakítása a változtatások
+mentésével. Ha van következő állomány, akkor
+a program annak ellenőrzését kezdi el.
 .TP
 .B ?
-Seg�ts�g. Hasonl� r�vid le�r�s megjelen�t�se a
-billenty�parancsokr�l.
-.SH CS�FEL�LET
-A \fIHunspell \fR soronk�nt dolgozza fel az
-�llom�nyokat, a helyes szavakat \fI*\fR (t�sz�), \fI\-\fR
-(�sszetett sz�), vagy
+Segítség. Hasonló rövid leírás megjelenítése a
+billentyűparancsokról.
+.SH CSŐFELÜLET
+A \fIHunspell \fR soronként dolgozza fel az
+állományokat, a helyes szavakat \fI*\fR (tőszó), \fI\-\fR
+(összetett szó), vagy
 .I +
-(ragozott sz�) karakterrel jel�li, a helyteleneket
+(ragozott szó) karakterrel jelöli, a helyteleneket
 .I #
 (nincs javaslat) , vagy
 .I &
-(van javaslat) karakterrel. A + jelet a kimenetben k�veti m�g a sz�t�.
-A # jel ut�n a hib�s sz�, �s kezd�poz�ci�ja van felt�ntetve.
-A & jelet k�veti a hib�s sz�; a javaslatok sz�ma; a hib�s sz�
-kezd�poz�ci�ja; majd kett�spont ut�n a javaslatok, vessz�vel elv�lasztva:
+(van javaslat) karakterrel. A + jelet a kimenetben követi még a szótő.
+A # jel után a hibás szó, és kezdőpozíciója van feltüntetve.
+A & jelet követi a hibás szó; a javaslatok száma; a hibás szó
+kezdőpozíciója; majd kettőspont után a javaslatok, vesszővel elválasztva:
 .PP
 .RS
 .nf
@@ -321,113 +294,133 @@ macska
 *
 macskabajusz
 -
-macsk�k
+macskák
 + macska
 mcsk
 # mcsk 0
 macka
-& macka 7 0: macska, maca, racka, packa, vacka, marka, mack�
+& macka 7 0: macska, maca, racka, packa, vacka, marka, mackó
 .fi
 .RS
-.SH P�LD�K
+.SH PÉLDÁK
 .TP
 .B hunspell \-d en_US english.html
-Az amerikai angol helyes�r�si sz�t�r kiv�laszt�sa (aktu�lis, vagy a
+Az amerikai angol helyesírási szótár kiválasztása (aktuális, vagy a
 .BR /usr/share/hunspell
-k�nyvt�rb�l.
+könyvtárból.
 .TP
 .B hunspell \-d /opt/OpenOffice.org1.0.1/share/dict/ooo/de_DE
-A n�met helyes�r�si sz�t�r kiv�laszt�sa a megadott abszol�t
-�tvonalr�l, a standard bemenet feldolgoz�s�val.
+A német helyesírási szótár kiválasztása a megadott abszolút
+útvonalról, a standard bemenet feldolgozásával.
 .TP
 .B hunspell *.html
-Az aktu�lis k�nyvt�rban tal�lhat� �sszes HTML �llom�ny
-interakt�v ellen�rz�se.
+Az aktuális könyvtárban található összes HTML állomány
+interaktív ellenőrzése.
 .TP
-.B hunspell -l sz�veg.html
-A megadott �llom�ny hib�s szavainak ki�r�sa.
-.TP
-.B hunspell -r *.html
-Az aktu�lis k�nyvt�rban tal�lhat� �sszes HTML �llom�ny
-szavainak, �s a szavak sz�t�veinek ki�r�sa.
-.SH K�RNYEZET
+.B hunspell -l szöveg.html
+A megadott állomány hibás szavainak kiírása.
+.SH KÖRNYEZET
 .TP
 .B DICTIONARY
-A sz�t�r hely�nek megad�s�ra szolg�l. Szerepe megegyezik a
+A szótár helyének megadására szolgál. Szerepe megegyezik a
 .I \-d
-kapcsol�val.
+kapcsolóval.
 .TP
 .B DICPATH
-A sz�t�rkeres�si �tvonalat tartalmaz� v�ltoz�.
+A szótárkeresési útvonalat tartalmazó változó.
 .TP
 .B WORDLIST
-A saj�t sz�t�r hely�nek megad�s�ra szolg�l. Szerepe megegyezik a
+A saját szótár helyének megadására szolgál. Szerepe megegyezik a
 .I \-p
-kapcsol�val.
-.SH �LLOM�NYOK
+kapcsolóval.
+.SH ÁLLOMÁNYOK
 .BI /usr/share/default.aff
-Az alap�rtelmezett ragoz�si t�bl�zat. L�sd hunspell(4).
+Az alapértelmezett ragozási táblázat. Lásd hunspell(4).
 .PP
 .BI /usr/share/default.dic
-Az alap�rtelmezett sz�t�r az el�z� ragoz�si t�bl�zathoz.
-L�sd hunspell(4).
+Az alapértelmezett szótár az előző ragozási táblázathoz.
+Lásd hunspell(4).
 .BI $HOME/.hunspell_default
-Az alap�rtelmezett saj�t sz�t�r. Az �llom�nyt l�trehozza
-a Hunspell, ha nem l�tezik. L�sd ispell(1).
-.SH L�SD M�G
+Az alapértelmezett saját szótár. Az állományt létrehozza
+a Hunspell, ha nem létezik. Lásd ispell(1).
+.SH LÁSD MÉG
 .B hunspell (4),
 .B hunstem (1),
 .B makedb (1),
 .B lookdb (1),
 .B ispell (1),
 .B ispell (4),
-Magyar Ispell dokument�ci�.
-.SH SZERZ�
-A Hunspell az International Ispell l�nyegi r�sz�nek C++\-os �jramegval�s�t�s�nak,
-a Myspell f�ggv�nyk�nyvt�rnak a b�v�t�se.
-Nemcsak fel�let a k�nyvt�rhoz, hanem egy jelent�s b�v�t�s is a magyar nyelv
-vonatkoz�s�ban (Magyar Myspell).
-.PP
-A mintak�nt szolg�l� International Ispell szerz�je Geoff Kuenning,
-sok m�s el�dje munk�j�ra t�maszkodva (l. ispell(1)).
-.PP
-A Myspellt Kevin Hendricks k�sz�tette a kiv�l� �s ingyenes OpenOffice.org
-(eredetileg StarOffice) irodai programcsomaghoz 2001\-2002\-ben.
-.PP
-A Magyar Myspellt, illetve a Hunspell fel�letet
-N�meth L�szl� <nemethl@gyorsposta.hu> k�sz�tette 2002\-2003\-ban.
-.PP
-2003 m�rcius�t�l a fejleszt�st a Sz�szablya projekt viszi tov�bb egy
-nyitott forr�sk�d� magyar morfol�giai elemz� elk�sz�t�s�nek ir�ny�ba.
-.PP
-A Hunspell a Magyar Ispell projekt eredm�ny�t, a magyar Ispell/Myspell
-helyes�r�si sz�t�rmodult haszn�lja a magyar nyelv� sz�vegek ellen�rz�sekor.
-A Magyar Ispell levelez�lista a magyarispell@yahoogroups.com
-c�men tal�lhat�. V�runk minden olyan �szrev�telt, illetve seg�ts�get,
-ami jobb� teheti a Magyar Myspell helyes�r�s\-ellen�rz�t, �s a
-Magyar Ispell sz�t�rmodult.
-.PP
-Az International Ispell\-nek, �s �gy a Myspellnek is
-magyar vonatkoz�sa is van.
-A programokban szerepl� affixumt�m�r�t�s a D�m�lki\-algoritmuson
-alapszik, D�m�lki B�lint egyik 60\-as �vekben publik�lt algoritmus�n,
-amit a magyar M3\-as, az els� hazai elektronikus sz�m�t�g�p
-meg�p�t�s�t k�vet�en, nyelv�szeti jelleg� kutat�sok kapcs�n
-dolgozott ki.
-.SH HIB�K
-Az UTF-8, vagy UTF-16 karakterk�dol�s� �llom�nyok ellen�rz�s�t a Hunspell
-parancssori fel�let m�g nem t�mogatja. UTF-8 k�dol�s� sz�t�rak, �s
-a check() f�ggv�ny m�r haszn�lhat�.
+Magyar Ispell dokumentáció.
+.SH ELŐNYÖK
+A program a következő előnyöket nyújtja a hasonló célokat szolgáló \fIIspell\fR\-lel szemben:
+.IP \-
+Képzők átfogó ismerete. (Több tízezer helyes szóalak elfogadását tette
+lehetővé a tesztelésre használt 4 millió szavas gyakorisági szótárban.)
+.IP \-
+Homonimák kezelése (nincsenek például olyan alakok elfogadva, mint megvárban).
+.IP \-
+Helyes javaslatok a több karakter változásával járó tipikus hibákra
+(j/ly, íj/ijj, nyj/nny és még több tucatnyi tévesztés megvizsgálásával).
+Az \fIIspell\fR csak két karakter felcserélése; vagy egy karakter hiánya,
+cseréje, illetve felesleges jelenléte esetén ad helyes javaslatot.
+.IP \-
+Az összes helyes összetett szónak látszó, de tipikus hibával előálló alak tiltása (karvaj, színtű, súlytó stb.)
+.IP \-
+Javaslatok valószínűségi sorrendben  jelennek meg (tipikus hibák, i/í, o/ó, u/ú tévesztések stb.).
+.IP \-
+Összetett szavak esetén  6–3\-as szabály alkalmazása (helyesírás\-ellenőrző, gépkocsi\-összeszerelés).
+.IP \-
+Mozgószabály alkalmazása (kiviteli engedély, kiviteliengedély\-kérés).
+.IP \-
+A magyar nyelv egyéb összetételi szabályainak alkalmazása (például hatlövetű, tizenkét lövetű, kéthavi, két hónapos, másodmagával).
+.IP \-
+Leg-, legesleg- és -bb confixum helyes kezelése (nincs pl. legédes, csak legédesebb).
+.IP \-
+Ragozható tőszófelvétel. Megkönnyíti egy új szó ragozott változatainak ellenőrzését, feleslegessé téve ezek külön\-külön történő felvételét a saját szótárba.
+.IP \-
+Javaslatok mássalhangzó\-triplázások (sakkkör, baletttáncos, dzsesszszak) esetén.
+(Ispell helyesnek fogadja el ezeket.)
+.IP \-
+Javaslatok szótagduplázások (oktatatás, igenenevet) esetén.
+.IP \-
+Javaslatok ékezet nélküli szövegre (tukorfurogep\->tükörfúrógép).
+.IP \-
+Kötőjeles szavak kezelése (unos\-untalan).
+.IP \-
+Toldalékolt számok (1\-jén, 11\-én, 5.\-et) kezelése.
+.IP \-
+°, %, és § jelek (%\-kal) toldalékolt alakjainak kezelése.
+.IP \-
+Mozaikszavak (MÁV\-osokat) kezelése.
+.IP \-
+Y-ra végződő szavak (boyjal, pennyvel) kezelése.
+.IP \-
+Idegen ejtésű szótagra végződő szavak (Anonymusszal, Voltaire\-nek) kezelése.
+.IP \-
+Két szóból álló földrajzi nevek (San Franciscó\-i) kezelése.
+.IP \-
+Hibás alakok tiltása (Babitssal, tanit, alkotóművész stb.)
+.IP \-
+Tiltások jelzése a felhasználói felületen.
+.IP \-
+Egyéb (például az Ispell ragozott utószó esetében bármilyen szóösszetételt elfogad: macskatekerem, kutyakavarom, ezt a Hunspell nem teszi meg).
+.IP \-
+Magyar nyelvű (illetve 
+.B locale (7)
+függő) felület.
+.IP \-
+Hordozható szöveges szótárállományok, szemben az Ispell platform, és bináris Ispell fordítástól függően (nem) kezelhető adatállományaival.
+
+.SH SZERZŐ
+A Hunspell az OpenOffice.org MySpell függvénykönyvtárán továbbfejlesztése.
+A MySpell affixumtömörítésének mintája az International Ispell program volt.
 .PP
-A sorok maxim�lis m�rete nincs korl�tozva, de a 8 kB\-os hat�rokon
-t�vesen hib�t jelezhet a program. A sz�k�z lenyom�s�val
-ugorjuk �t a t�ves hibajelz�st!
+A mintaként szolgáló International Ispell szerzője Geoff Kuenning,
+sok más elődje munkájára támaszkodva (l. ispell(1)).
 .PP
-Az e\-mail c�mek, URL\-ek, �s egy�b �tvonalak
-ellen�rz�s�t elker�lhetj�k, ha ezeket a javasolt m�don;
-HTML eset�ben a \fB<var>�tvonal</var>\fR, LaTeX eset�ben \fB\\url{�tvonal}\fR
-form�ban adjuk meg. (A c�mek elv�laszt�st is lehet�v�
-tev� \fI\\url\fR LaTeX parancs az \fIurl\fR csomagban tal�lhat�, teh�t
-haszn�lat�hoz a \fB\\usepackage{url}\fR parancs kiad�s�ra is sz�ks�g
-van a preambulumban.)
+A Myspellt Kevin Hendricks készítette a legjelentősebb
+nyílt forráskódú irodai csomaghoz, az OpenOffice.org-hoz 2001\-2002\-ben
+(l. http://hu.openoffice.org).
 .PP
+A Hunspell programkönyvtárat és parancssori programot
+Németh László <nemeth@openoffice PONT org> készítette 2002\-2008\-ban.
diff --git a/man/hu/hunspell.4 b/man/hu/hunspell.4
index 8932c4b..dd2bfe7 100644
--- a/man/hu/hunspell.4
+++ b/man/hu/hunspell.4
@@ -1,5 +1,5 @@
 .hla hu
-.TH hunspell 4 "2005. május 13."
+.TH hunspell 4 "2008. április 11."
 .LO 1
 .SH NÉV
 hunspell \- a Hunspell állományainak formátuma
@@ -138,6 +138,9 @@ levelezik/e
 .PP
 
 .SH "ÁLTALÁNOS PARAMÉTEREK"
+A Hunspell forrás több mint 80 példát tartalmaz a
+paraméterek használatára vonatkozóan. A következő leírás
+nem teljes, l. még az angol kézikönyvoldalt is.
 .IP "SET karakterkód"
 A szótár és affixumállomány karakterkódolásának beállítása.
 A lehetséges értékek: UTF-8, ISO8859\-1-től ISO8859\-10-ig, 
@@ -316,8 +319,7 @@ Ha a keresett szó nincs a szótárban, a felsorolt karaktereknél vagy
 karaktersorozatoknál felbontja és részenként ellenőrzi. Hasznos
 például a kis- és nagykötőjeles szavaknál a magyarban.
 .IP "COMPOUNDRULE"
-xxxxxxx
-
+Reguláris kifejezésekhez hasonló összetételi szabályok megadása.
 .IP "COMPOUNDMIN szám"
 A legkisebb szóhossz, ami még összetett szóban szerepelhet.
 Alapértelmezés szerint 3 karakter.
@@ -350,16 +352,16 @@ osztályaként (l. később) adjuk meg ezt a kapcsolót.
 .IP "COMPOUNDROOT kapcsoló"
 A szótárba közvetlenül felvett összetett szavakat
 jelölő kapcsoló. A COMPOUNDWORDMAX, és így a magyar esetében
-a 6-3-as szabály működését befolyásolja azzal, hogy a COMPOUNDROOT
+a 6–3-as szabály működését befolyásolja azzal, hogy a COMPOUNDROOT
 kapcsolóval összetettnek jelölt
 szavak két szónak számítanak.
 .IP "COMPOUNDWORDMAX szám"
 A szóösszetételekben szereplő egyszerű tövek maximális száma.
 A magyar esetében 2 az érték, e fölötti szószámnál már életbe lép
-a 6-3-as szabály.
+a 6–3-as szabály.
 .IP "COMPOUNDSYLLABLE szám karakterek"
 Két paramétert vár. Az első megadja az összetett szavak tövének
-maximális szótagszámát, ami a magyar helyesírás 6-3-as szabálya szerint 6.
+maximális szótagszámát, ami a magyar helyesírás 6–3-as szabálya szerint 6.
 A második mező felsorolja a magánhangzókat,
 ami a szótagszám megállapításához szükséges.
 Ha hiányzik ez a definíció, akkor nincsen
@@ -388,13 +390,6 @@ nyelv szavaiban előfordulhatnak. Ilyen például a magyarban
 a kötőjel, pont, százalékjel, fokjel, paragrafusjel és a
 nagykötőjel. Az utóbbi csak UTF-8, vagy microsoft-cp1250
 karakterkészlet mellett lesz használható a magyar szótárban.
-.IP "LEMMA_PRESENT kapcsoló"
-A morfológiai leírás elején megadhatunk más töveket is a
-tőszótárban az alapértelmezett helyett. A LEMMA_PRESENT
-kapcsolóval jelölt tövek esetében az elemző nem teszi a
-kimenetbe a lemmát (mivel az már szerepel a morfológiai
-leírásban). Így adhatunk meg fiktív vagy nem szótári
-tövekhez valódi töveket.
 .IP "PFX kapcsoló keresztkombinálódás szám"
 .IP "PFX kapcsoló levágás prefixum feltétel morfológia"
 Prefixum megadására szolgáló definíciók.
@@ -442,14 +437,9 @@ illeszkedik a minta, hasonlóan a reguláris
 kifejezésekhez (l.
 .IR regex "(7))."
 
-(5) Morfológiai leírás. Szóközön és szóköz értékű
-karaktereken kívül tetszőleges karakterekből álló leírás.
-A morfológiai elemzés során a program összefűzi az
-itt található leírást, tartalmával nem foglalkozik.
-Kivéve a { és } közé zárt leírásokat, amelyek a
-sor végi zárójelezett rész kivételével eltűnnek az elemzésből.
-Ezen a módon a zéró morfémához kapcsolódó elemzést adhatjuk
-meg.
+(5) Morfológiai leírás. Szóközzel vagy tabulátorral
+elválasztott mezők. A mezőnevek és használatuk az
+angol kézikönyvoldalon található.
 
 .IP "SFX kapcsoló keresztkombinálódás szám"
 .IP "SFX kapcsoló szuffixum feltétel mofológiai_leírás"
@@ -499,16 +489,18 @@ A saját szótár formátuma közel megegyezik a szótárállomány
 formátumával. A különbségek a következőek:
 
 (1) Nem kell megadni az első sorban az állományban lévő szavak
-méretét. (Ne is adjuk meg!)
+méretét.
 
-(2) A sorban a kapcsolók helyett megadhatunk két
-perjellel elválasztva egy mintaszót is,
-aminek a kapcsolóit örökli a későbbiekben a saját
-szótárba felvett szó. Például a Patyomkin//Ádám sor
-jelentése, hogy a Patyomkin szót az Ádáméval megegyező
+(2) A szóhoz nem kapcsolókat, hanem egy mintaszót
+adhatunk meg, ami alapján az ellenőrző a szó toldalékolt
+alakjait is felismeri. Például a Patyomkin/Ádám azt jelenti, hogy
+a Patyomkin szót az Ádáméval megegyező
 ragozással is el kell fogadni.
 
-(3) Az állomány kézzel módosítható, és ezt időnként
+(3) A csillag tiltást jelent: a csillaggal jelölt szavakat az ellenőrző
+akkor sem ismeri fel, ha az alapszótárban szerepelnek, pl. *kóricál.
+
+(4) Az állomány kézzel módosítható, és ezt időnként
 javasolt is megtenni, ha esetleg hibásan vettünk fel szavakat.
 .SH LÁSD MÉG
 .B angol nyelvű hunspell (4),
@@ -556,25 +548,3 @@ a Hunspell\-lel van dolgunk. Ha helyesnek fogadja
 el, akkor pedig az eredeti MySpell\-lel.
 
 
-
-A Magyar Ispellben meglévő keresztellenőrzés miatt
-egy karakteres cserék (i-í) is szerepelnek
-a REP táblázatban. Ennek köszönhető, hogy az amúgy
-helyes nem szótári szóösszetételek nem kerülnek
-elfogadásra, ha a cseretáblázat egyik cseréjével
-előállíthatók egy szótári szóból (például:
-a ,,színtű'' szó hibás összetett szó lesz, mert az
-i\->í cserével előállítható a szintű szóból).
-
-
-COMPOUNDMIN 2
-COMPOUNDFLAG Y
-COMPOUNDWORDMAX 2
-COMPOUNDROOT y
-COMPOUNDSYLLABLE 6 aáeéiíoóöőuúüű
-SYLLABLENUM klmc
-COMPOUNDBEGIN v
-COMPOUNDEND x
-FORBIDDENWORD w
-PSEUDOROOT u
-ACCENT áéíóöőúüű aeiooouuu
diff --git a/man/hunspell.1 b/man/hunspell.1
index 6459ff6..b788796 100644
--- a/man/hunspell.1
+++ b/man/hunspell.1
@@ -1,33 +1,44 @@
-.hla hu
-.TH hunspell 1 "2008-03-03"
+.TH hunspell 1 "2008-04-11"
 .LO 1
 .SH NAME
 hunspell \- spell checker, stemmer and morphological analyzer
 .SH SYNOPSIS
-.\" -u, -u2, -U currently disabled
-hunspell [\-1aDGHhLlntvw] [\-\-check\-url] [\-d dict] [\-\-help] [\-i enc] [\-p dict] [\-vv\] [\-\-version] [file(s)]
+hunspell [\-1aDGHhLlmnstvw] [\-\-check\-url] [\-d dict[,dict2,...]] [\-\-help] [\-i enc] [\-p dict] [\-vv\] [\-\-version] [file(s)]
 .SH DESCRIPTION
 .I Hunspell
 is fashioned after the
 .I Ispell
-program.  The most common usage is "hunspell filename".  In this
-case,
+program.  The most common usage is "hunspell" or "hunspell filename". 
+Without filename parameter, hunspell checks the standard input.
+Typing "cat" and "exsample" in two input lines, we got an asterisk
+(it means "cat" is a correct word) and a line with corrections:
+.PP
+.RS
+.nf
+$ hunspell -d en_US
+Hunspell 1.2.2
+*
+& exsample 3 0: example, examples, ex sample
+.fi
+.RE
+.PP
+Correct words signed with an '*', '+' or '-', unrecognized
+words signed with '#' or '&' in output lines (see later).
+(Close the standard input with Ctrl-d on Unix/Linux and
+Ctrl-Z Enter or Ctrl-C on Windows.)
+.PP
+With filename parameters,
 .I hunspell
-will display each word which does not appear in the dictionary at the
+will display each word of the files which does not appear in the dictionary at the
 top of the screen and allow you to change it.  If there are "near
-misses" in the dictionary (words which differ by only a single letter, a
-missing or extra letter, a pair of transposed letters, a missing
-space or hyphen, or a special string pair), then they are
+misses" in the dictionary, then they are
 also displayed on following lines.
-As well as "near misses", ispell may display other guesses
-at ways to make the word from a known root, with each guess preceded
-by question marks.
 Finally, the line containing the
 word and the previous line
 are printed at the bottom of the screen.  If your terminal can
 display in reverse video, the word itself is highlighted.  You have the
 option of replacing the word completely, or choosing one of the
-suggested words.  Commands are single characters as follows
+suggested words. Commands are single characters as follows
 (case is ignored):
 .PP
 .RS
@@ -45,21 +56,17 @@ file, and update private dictionary.
 .IP U
 Accept the word, and add an uncapitalized (actually, all lower-case)
 version to the private dictionary.
+.IP S
+Ask a stem and a model word and store them in the private dictionary.
+The stem will be accepted also with the affixes of the model word.
 .IP 0-\fIn\fR
 Replace with one of the suggested words.
-.IP L
-Look up words in system dictionary (controlled by the WORDS
-compilation option).
 .IP X
 Write the rest of this file, ignoring misspellings, and start next file.
 .IP Q
 Exit immediately and leave the file unchanged.
-.IP !
-Shell escape (not implemented).
-.IP ^L
-Redraw screen.
 .IP ^Z
-Suspend ispell.
+Suspend hunspell.
 .IP ?
 Give help screen.
 .RE
@@ -93,10 +100,6 @@ beginning of the misspelled word, a colon, another space,
 and a list of the near
 misses separated by
 commas and spaces.
-Following the near misses (and identified only by the count of near
-misses), if the word could be formed by adding
-(illegal) affixes to a known root,
-is a list of suggested derivations, again separated by commas and spaces.
 .IP ""
 Also, each near miss or guess is capitalized the same as the input
 word unless such capitalization is illegal;
@@ -121,7 +124,7 @@ These output lines can be summarized as follows:
 .IP Compound:
 \-
 .IP Miss:
-& <original> <count> <offset>: <miss>, <miss>, ..., <guess>, ...
+& <original> <count> <offset>: <miss>, <miss>, ...
 .IP None:
 # <original> <offset>
 .RE
@@ -133,13 +136,14 @@ command "echo 'frqy refries | hunspell \-a":
 .nf
 (#) Hunspell 0.4.1 (beta), 2005-05-26
 & frqy 3 0: fray, Frey, fry
-& refries 1 5: refried, re+fry-y+ies
+& refries 1 5: refried
 .fi
 .RE
 .IP ""
 This mode
 is also suitable for interactive use when you want to figure out the
-spelling of a single word.
+spelling of a single word (but this is the default behavior of hunspell
+without -a, too).
 .IP ""
 When in the
 .B \-a
@@ -252,10 +256,25 @@ interaction for some programs.
 Check URLs, e-mail addresses and directory paths.
 
 .IP \fB\-D\fR
-Show detected path of the dictionary.
+Show detected path of the loaded dictionary, and list of the
+search path and the available dictionaries.
 
-.IP \fB\-d\ dict\fR
-Path of affix and dic files, without file extension.
+.IP \fB\-d\ dict,dict2,...\fR
+Set dictionaries by their base names with or without paths.
+Example of the syntax:
+.PP          
+\-d en_US,en_geo,en_med,de_DE,de_med
+.PP          
+en_US and de_DE are base dictionaries, they consist of
+aff and dic file pairs: en_US.aff, en_US.dic and de_DE.aff, de_DE.dic.
+En_geo, en_med, de_med are special dictionaries: dictionaries 
+without affix file. Special dictionaries are optional extension
+of the base dictionaries usually with special (medical, law etc.)
+terms. There is no naming convention for special dictionaries,
+only the ".dic" extension: dictionaries without affix file will
+be an extension of the preceding base dictionary (right
+order of the parameter list needs for good suggestions). First
+item of \-d parameter list must be a base dictionary.
 
 .IP \fB\-G\fR
 Print only correct words or lines.
@@ -278,7 +297,9 @@ is used to produce a list of misspelled words from the standard input.
 
 .IP \fB\-m\fR
 Analyze the words of the input text (see also hunspell(4) about
-morphological analysis).
+morphological analysis). Without dictionary morphological data,
+signs the flags of the affixes of the word forms for dictionary
+developers.
 
 .IP \fB\-n\fR
 The input file is in nroff/troff format.
@@ -288,7 +309,10 @@ Set password for encrypted dictionaries.
 
 .IP \fB\-p\ dict\fR
 Set path of personal dictionary.
-Default is $HOME/.hunspell_default.
+Default dictionary depends from the locale settings.
+Without locale support, the default personal dictionary is
+the $HOME/.hunspell_default.
+
 Setting
 .I \-d
 or  the
@@ -298,21 +322,11 @@ environmental variable, personal dictionary will be
 
 .IP \fB\-s\fR
 Stem the words of the input text (see also hunspell(4) about
-stemming).
+stemming). It depends from the dictionary data.
 
 .IP \fB\-t\fR
 The input file is in TeX or LaTeX format.
 
-.\" .IP \fB\-u\fR
-.\" Print typical mistakes with suggestions.
-.\"
-.\" .IP \fB\-u2\fR
-.\" List typical mistakes with suggestions to a sed files.
-.\" Using of this file:
-.\"
-.\" \fIsed \-f correct.sed original.txt >corrected.txt\fR
-.\"
-
 .IP \fB\-v,\ \-\-version\fR
 Print version number.
 
@@ -320,19 +334,19 @@ Print version number.
 Print ispell(1) compatible version number.
 
 .IP \fB\-w\fR
-Print mispelled words (= lines) from one word/line input.
+Print misspelled words (= lines) from one word/line input.
 
 .SH EXAMPLES
 .TP
 .B hunspell \-d en_US english.html
 .TP
-.B hunspell \-d /opt/OpenOffice.org1.0.1/share/dict/ooo/de_DE
+.B hunspell \-d en_US,en_US_med medical.txt
+.TP
+.B hunspell \-d ~/openoffice.org2.4/share/dict/ooo/de_DE
 .TP
 .B hunspell *.html
 .TP
 .B hunspell \-l text.html
-.TP
-.B hunspell \-r *.html
 .SH ENVIRONMENT
 .TP
 .B DICTIONARY
@@ -364,17 +378,8 @@ Author of International Ispell is Geoff Kuenning.
 .PP
 Author of MySpell is Kevin Hendricks.
 .PP
-Author of Hunspell is Laszlo Nemeth.
+Author of Hunspell is László Németh.
 .PP
 This manual based on Ispell's manual (See ispell(1)).
 .SH BUGS
-There are some layout problems with tabulated non ASCII texts under
-interactive UTF-8 environment.
-
-Unnecessary checking of e-mail addresses, URLs, paths
-(put these character strings into
-.B var
-element in HTML, and 
-\fB\\url{path}\fR
-in LaTeX.)
-.PP
+There are some layout problems with long lines.
diff --git a/man/hunspell.4 b/man/hunspell.4
index 986ac01..94dcdf4 100644
--- a/man/hunspell.4
+++ b/man/hunspell.4
@@ -1,4 +1,4 @@
-.TH hunspell 4 "2008-03-03"
+.TH hunspell 4 "2008-04-11"
 .LO 1
 .SH NAME
 hunspell \- format of Hunspell dictionaries and affix files
@@ -21,20 +21,23 @@ file, there are also optional fields separated
 by tabulators or spaces (spaces from Hunspell 1.2), see
 Optional data fields.
 
-Personal dictionaries are simple word lists, but with optional
-word patterns for affixation, separated by a slash:
+Personal dictionaries are simple word lists. Asterisk
+at the first character position signs prohibition.
+A second word separated by a slash sets the affixation.
 
 .PP
 .RS
 .nf
 foo
 Foo/Simpson
+*bar
 .fi
 .RE
 .PP
 
 In this example, "foo" and "Foo" are personal words, plus Foo
-will be recognized with affixes of Simpson (Foo's etc.).
+will be recognized with affixes of Simpson (Foo's etc.) and
+bar is a forbidden word.
 
 An affix file (*.aff) may contain a lot of optional attributes.
 For example,
@@ -77,11 +80,11 @@ SFX B y ied y
 .PP
 
 There are two affix classes in the dictionary. Class A
-defines an `re-' prefix. Class B defines two `-ed'
+defines a `re-' prefix. Class B defines two `-ed'
 suffixes. First suffix can be added to a word if
 the last character of the word isn't `y'.
-Second suffix can be added to words terminated with an `y'.
-(See details later.) The following dictionary file
+Second suffix can be added to the words terminated with an `y'.
+(See later.) The following dictionary file
 uses these affix classes.
 
 .PP
@@ -95,10 +98,13 @@ work/AB
 .RE
 .PP
 
-All accepted words with this example:
-hello, try, tried, work, worked, rework, reworked.
+All accepted words with this dictionary:
+"hello", "try", "tried", "work", "worked", "rework", "reworked".
 
 .SH "GENERAL OPTIONS"
+Hunspell source distribution contains more than 80 examples for
+option usage.
+
 .IP "SET encoding"
 Set character encoding of words and morphemes in affix and dictionary files.
 Possible values: UTF-8, ISO8859\-1 \- ISO8859\-10, 
@@ -550,7 +556,7 @@ stemming and morphological generation):
 .IP "ph:"
 Alternative transliteration for better suggestion.
 It's useful for words with foreign
-pronounciation. (Dictionary based phonetic suggestion.)
+pronunciation. (Dictionary based phonetic suggestion.)
 For example:
 
 .PP
@@ -688,22 +694,24 @@ Planned: terminal prefix.
 
 .SH "Twofold suffix stripping"
 
-Ispell's original algorithm strips only one suffix. Hunspell can strip another one yet. 
+Ispell's original algorithm strips only one suffix. Hunspell can strip another
+one yet (or a plus prefix in COMPLEXPREFIXES mode).
 
 The twofold suffix stripping is a significant improvement in
-handling of immense number of suffixes, that characterize agglutinative languages.
+handling of immense number of suffixes, that characterize
+agglutinative languages.
 
-Extending the previous example by adding a second suffix (affix class Y
-will be the continuation class of the suffix `able'):
+A second `s' suffix (affix class Y) will be the continuation class
+of the suffix `able' in the following example:
 
 .PP
 .RS
 .nf
  SFX Y Y 1
- SFX Y 0 s . +PLUR
+ SFX Y 0 s .
 
  SFX X Y 1
- SFX X 0 able/Y . +ABLE
+ SFX X 0 able/Y .
 .fi
 .RE
 .PP
@@ -713,7 +721,7 @@ Dictionary file:
 .PP
 .RS
 .nf
- drink/X   [VERB]
+ drink/X
 .fi
 .RE
 .PP
@@ -735,10 +743,10 @@ Test:
 .PP
 .RS
 .nf
- $ hunmorph test.aff test.dic test.txt
- drink:      drink[VERB]
- drinkable:  drink[VERB]+ABLE
- drinkables: drink[VERB]+ABLE+PLUR
+ $ hunspell -m -d test <test.txt
+ drink st:drink
+ drinkable st:drink fl:X
+ drinkables st:drink fl:X fl:Y
 .fi
 .RE
 .PP
@@ -749,13 +757,10 @@ compared with a Hunspell implementation. In our practice, we could have
 elaborated the Hungarian inflectional morphology with twofold
 suffix stripping.
 
-Note: In Hunlex preprocessor's grammar can be use not only
-twofold, but multiple suffix slitting.
-
 .SH "Extended affix classes"
 
 Hunspell can handle more than 65000 affix classes.
-There are two new syntax for giving flags in affix and dictionary files.
+There are three new syntax for giving flags in affix and dictionary files.
 
 \fIFLAG long\fR command sets 2-character flags:
 
@@ -801,6 +806,8 @@ Dictionary example:
 .RE
 .PP
 
+The third one is the Unicode character flags.
+
 .SH "Homonyms"
 
 Hunspell's dictionary can contain repeating elements that are homonyms:
@@ -808,8 +815,8 @@ Hunspell's dictionary can contain repeating elements that are homonyms:
 .PP
 .RS
 .nf
- work/A    [VERB]
- work/B    [NOUN]
+ work/A    po:verb
+ work/B    po:noun
 .fi
 .RE
 .PP
@@ -820,10 +827,10 @@ An affix file:
 .RS
 .nf
  SFX A Y 1
- SFX A 0 s . +SG3
+ SFX A 0 s . sf:sg3
 
  SFX B Y 1
- SFX B 0 s . +PLUR
+ SFX B 0 s . is:plur
 .fi
 .RE
 .PP
@@ -843,14 +850,14 @@ Test:
 .PP
 .RS
 .nf
- > works
- work[VERB]+SG3
- work[NOUN]+PLUR
+ $ hunspell -d test -m <testwords
+ work st:work po:verb is:sg3
+ work st:work po:noun is:plur
 .fi
 .RE
 .PP
 
-This feature also gives a way to forbid illegal prefix/suffix combinations in difficult cases.
+This feature also gives a way to forbid illegal prefix/suffix combinations.
 
 .SH "Prefix--suffix dependencies"
 
@@ -1034,7 +1041,7 @@ improved this, and its recursive compound checking
 rules makes it possible to implement the intricate spelling
 conventions of Hungarian compounds. For example, using COMPOUNDWORDMAX,
 COMPOUNDSYLLABLE, COMPOUNDROOT, SYLLABLENUM
-options can be set the noteworthy Hungarian `6--3' rule.
+options can be set the noteworthy Hungarian `6-3' rule.
 Further example in Hungarian, derivate suffixes often modify compounding
 properties. Hunspell allows the compounding flags on the
 affixes, and there are two special flags (COMPOUNDPERMITFLAG and
diff --git a/po/Makevars b/po/Makevars
index 8b09f53..3a0fd0d 100644
--- a/po/Makevars
+++ b/po/Makevars
@@ -8,7 +8,7 @@ subdir = po
 top_builddir = ..
 
 # These options get passed to xgettext.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --from-code=UTF-8
 
 # This is the copyright holder that gets inserted into the header of the
 # $(DOMAIN).pot file.  Set this to the copyright holder of the surrounding
diff --git a/po/POTFILES.in b/po/POTFILES.in
index bd800e2..8610201 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,11 +1,7 @@
 # List of source files containing translatable strings.
 # Copyright (C) 1995, 1996 Free Software Foundation, Inc.
 
-# Common library files
-#src/getopt.c
-# src/getopt1.c
-
 # Package source files
-src/hunspell/hunspell.cxx
+src/tools/hunspell.cxx
 
 # end of file POTFILE.in
diff --git a/po/hu.gmo b/po/hu.gmo
index a004fec..4a25d29 100644
Binary files a/po/hu.gmo and b/po/hu.gmo differ
diff --git a/po/hu.po b/po/hu.po
index f136223..cbeca78 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -8,386 +8,421 @@ msgid ""
 msgstr ""
 "Project-Id-Version: hunspell\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-07-15 13:09+0200\n"
+"POT-Creation-Date: 2008-04-12 01:05+0200\n"
 "PO-Revision-Date: 2005-09-03 11:22+0200\n"
-"Last-Translator: Laszlo Dvornik <dvornik@gnome.hu>\n"
-"Language-Team: Hungarian <magyarispell@yahoogroups.com>\n"
+"Last-Translator: László Németh <nemeth dot lacko at gmail>\n"
+"Language-Team: Hungarian <openscope.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/hunspell/hunspell.cxx:383
+#: src/tools/hunspell.cxx:189 src/tools/hunspell.cxx:295
 #, c-format
-msgid "Line %d: %s -> %s\n"
-msgstr "%d. sor: %s -> %s\n"
+msgid "error - iconv_open: %s -> %s\n"
+msgstr "hiba - iconv_open: %s -> %s\n"
 
-#: src/hunspell/hunspell.cxx:519
+#: src/tools/hunspell.cxx:232 src/tools/hunspell.cxx:253
+#, c-format
+msgid "error - iconv_open: UTF-8 -> %s\n"
+msgstr "hiba - iconv_open: UTF-8 -> %s\n"
+
+#: src/tools/hunspell.cxx:543 src/tools/hunspell.cxx:1022
+#: src/tools/hunspell.cxx:1153
+#, c-format
+msgid "error - missing HOME variable\n"
+msgstr "hiba - nincs definiálva a HOME környezeti változó\n"
+
+#: src/tools/hunspell.cxx:618
+#, c-format
+msgid "Line %d: %s -> "
+msgstr "%d. sor: %s -> "
+
+#: src/tools/hunspell.cxx:847
 msgid "FORBIDDEN!"
 msgstr "TILTOTT!"
 
-#: src/hunspell/hunspell.cxx:520
+#: src/tools/hunspell.cxx:848
 #, c-format
 msgid ""
 "\t%s\t\tFile: %s\n"
 "\n"
 msgstr ""
-"\t%s\t\tF�jl: %s\n"
+"\t%s\t\tFájl: %s\n"
 "\n"
 
-#: src/hunspell/hunspell.cxx:562
+#: src/tools/hunspell.cxx:900
 msgid ""
 "\n"
-"[SP] <number> R)epl A)ccept I)nsert L)ookup U)ncap Q)uit e(X)it or ? for "
-"help\n"
+"[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n"
 msgstr ""
 "\n"
-"Sz�k�z=tov�bb <sz�m> C)sere J)� F)elvesz K)isbet�vel T)� M)�gsem V)�ge ?"
-"=S�g�\n"
-
-#: src/hunspell/hunspell.cxx:607
-msgid "Whenever a word is found that is not in the dictionary\n"
-msgstr "A hib�s, vagy fel nem ismert szavak az els� sorban jelennek meg.\n"
-
-#: src/hunspell/hunspell.cxx:608
-msgid "it is printed on the first line of the screen.  If the dictionary\n"
-msgstr "Amennyiben van jav�t�si javaslat, az sz�mozott lista form�j�ban\n"
-
-#: src/hunspell/hunspell.cxx:609
-msgid "contains any similar words, they are listed with a number\n"
-msgstr "jelenik meg. A sorsz�m le�t�s�vel v�laszthatunk ki ezek k�z�l\n"
+"Szóköz=tovább <szám> C)sere J)ó F)elvesz K)isbetűvel T)ő M)égsem V)ége ?"
+"=Súgó\n"
 
-#: src/hunspell/hunspell.cxx:610
-msgid "next to each one.  You have the option of replacing the word\n"
-msgstr "egyet, de megadhatunk ak�r egy �j sz�t is.\n"
-
-#: src/hunspell/hunspell.cxx:611
-msgid "completely, or choosing one of the suggested words.\n"
-msgstr "R�szletes le�r�s a program lehet�s�geir�l: man hunspell.\n"
+#: src/tools/hunspell.cxx:945
+msgid ""
+"Whenever a word is found that is not in the dictionary\n"
+"it is printed on the first line of the screen.  If the dictionary\n"
+"contains any similar words, they are listed with a number\n"
+"next to each one.  You have the option of replacing the word\n"
+"completely, or choosing one of the suggested words.\n"
+msgstr ""
+"A hibás, vagy fel nem ismert szavak az első sorban jelennek meg.\n"
+"Amennyiben van javítási javaslat, az számozott lista formájában\n"
+"jelenik meg. A sorszám leütésével választhatunk ki ezek közül\n"
+"egyet, de megadhatunk akár egy új szót is.\n"
+"Részletes leírás a program lehetőségeiről: man hunspell.\n"
 
-#: src/hunspell/hunspell.cxx:612
+#: src/tools/hunspell.cxx:950
 msgid ""
 "\n"
 "Commands are:\n"
 "\n"
 msgstr ""
 "\n"
-"Billenty�parancsok: \n"
+"Billentyűparancsok: \n"
 "\n"
 
-#: src/hunspell/hunspell.cxx:613
+#: src/tools/hunspell.cxx:951
 msgid "R\tReplace the misspelled word completely.\n"
-msgstr "C\tA hib�s sz� kicser�l�se egy megadott sz�ra.\n"
+msgstr "C\tA hibás szó kicserélése egy megadott szóra.\n"
 
-#: src/hunspell/hunspell.cxx:614
+#: src/tools/hunspell.cxx:952
 msgid "Space\tAccept the word this time only.\n"
-msgstr "Sz�k�z\tA sz� egyszeri �tugr�sa v�ltoztat�s n�lk�l.\n"
+msgstr "Szóköz\tA szó egyszeri átugrása változtatás nélkül.\n"
 
-#: src/hunspell/hunspell.cxx:615
+#: src/tools/hunspell.cxx:953
 msgid "A\tAccept the word for the rest of this session.\n"
-msgstr "J\tA sz� minden el�fordul�s�t j�nak tekinti a program fut�sa sor�n.\n"
+msgstr "J\tA szó minden előfordulását jónak tekinti a program futása során.\n"
 
-#: src/hunspell/hunspell.cxx:616
+#: src/tools/hunspell.cxx:954
 msgid "I\tAccept the word, and put it in your private dictionary.\n"
 msgstr ""
-"F\tA sz�t felveszi a saj�t sz�t�rba, �gy �j ind�t�skor is ismerni fogja.\n"
+"F\tA szót felveszi a saját szótárba, így új indításkor is ismerni fogja.\n"
 
-#: src/hunspell/hunspell.cxx:617
+#: src/tools/hunspell.cxx:955
 msgid "U\tAccept and add lowercase version to private dictionary.\n"
-msgstr "K\tMint az el�z�, de a sz�t kisbet�sen veszi fel a saj�t sz�t�rba.\n"
+msgstr "K\tMint az előző, de a szót kisbetűsen veszi fel a saját szótárba.\n"
 
-#: src/hunspell/hunspell.cxx:618
-msgid "O\tAsk two words. First word will accepted with 2nd's affixes too.\n"
+#: src/tools/hunspell.cxx:957
+msgid ""
+"S\tAsk a stem and a model word and store them in the private dictionary.\n"
+"\tThe stem will be accepted also with the affixes of the model word.\n"
 msgstr ""
-"T\tSz�t� �s minta bek�r�se. A sz�t� a minta toldal�kaival is elfogad�sra "
-"ker�l.\n"
+"T\tSzótő és mintaszó bekérése és saját szótárban való tárolása.\n"
+"\tA tő felveheti a mintául megadott szó toldalékait is.\n"
 
-#: src/hunspell/hunspell.cxx:619
+#: src/tools/hunspell.cxx:960
 msgid "0-n\tReplace with one of the suggested words.\n"
-msgstr "0-n\tA javasolt szavak k�z�l az adott sorsz�m�ra cser�l.\n"
+msgstr "0-n\tA javasolt szavak közül az adott sorszámúra cserél.\n"
 
-#: src/hunspell/hunspell.cxx:620
-msgid "L\tLook up words in system dictionary.\n"
-msgstr "L\tSz�, vagy minta alapj�n sz�ri a rendszer sz�t�r�t.\n"
-
-#: src/hunspell/hunspell.cxx:621
+#: src/tools/hunspell.cxx:961
 msgid ""
 "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n"
-msgstr "V\tMenti az eddigi jav�t�sokat, �s r�t�r a k�vetkez� f�jlra.\n"
+msgstr "V\tMenti az eddigi javításokat, és rátér a következő fájlra.\n"
 
-#: src/hunspell/hunspell.cxx:622
+#: src/tools/hunspell.cxx:962
 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n"
-msgstr "M\tKil�p a jav�t�sok ment�se n�lk�l, de el�tte meger�s�t�st k�r.\n"
-
-#: src/hunspell/hunspell.cxx:623
-msgid "!\tShell escape.\n"
-msgstr "H\tIdeiglenes kil�p�s a h�jba.\n"
+msgstr "M\tKilép a javítások mentése nélkül, de előtte megerősítést kér.\n"
 
-#: src/hunspell/hunspell.cxx:624
-msgid "^L\tRedraw screen\n"
-msgstr "^L\tA k�perny� �jrarajzol�sa.\n"
-
-#: src/hunspell/hunspell.cxx:625
+#: src/tools/hunspell.cxx:963
 msgid "^Z\tSuspend program. Restart with fg command.\n"
-msgstr "^Z\tA program felf�ggeszt�se. �jraind�t�s fg paranccsal.\n"
+msgstr "^Z\tA program felfüggesztése. Újraindítás fg paranccsal.\n"
 
-#: src/hunspell/hunspell.cxx:626
+#: src/tools/hunspell.cxx:964
 msgid "?\tShow this help screen.\n"
-msgstr "?\tEnnek a le�r�snak a megjelen�t�se.\n"
+msgstr "?\tEnnek a leírásnak a megjelenítése.\n"
 
-#: src/hunspell/hunspell.cxx:627
+#: src/tools/hunspell.cxx:965
 msgid ""
 "\n"
 "-- Type space to continue -- \n"
 msgstr ""
 "\n"
-"-- Tov�bbl�p�s a sz�k�z billenty� le�t�s�vel -- \n"
+"-- Továbblépés a szóköz billentyű leütésével -- \n"
 
-#: src/hunspell/hunspell.cxx:635
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "R)epl" before
+#: src/tools/hunspell.cxx:975
 msgid "r"
 msgstr "c"
 
-#: src/hunspell/hunspell.cxx:647
+#: src/tools/hunspell.cxx:987
 msgid "Replace with: "
 msgstr "Csere: "
 
-#: src/hunspell/hunspell.cxx:670 src/hunspell/hunspell.cxx:673
-#: src/hunspell/hunspell.cxx:698
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "U)ncap" before
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "U)ncap" and I)nsert before
+#: src/tools/hunspell.cxx:1008 src/tools/hunspell.cxx:1013
+#: src/tools/hunspell.cxx:1044
 msgid "u"
 msgstr "k"
 
-#: src/hunspell/hunspell.cxx:673 src/hunspell/hunspell.cxx:698
+#: src/tools/hunspell.cxx:1013 src/tools/hunspell.cxx:1044
 msgid "i"
 msgstr "f"
 
-#: src/hunspell/hunspell.cxx:694 src/hunspell/hunspell.cxx:816
+#: src/tools/hunspell.cxx:1038 src/tools/hunspell.cxx:1169
 #, c-format
 msgid "Cannot update personal dictionary."
-msgstr "Nem lehet friss�teni a saj�t sz�t�rat."
+msgstr "Nem lehet frissíteni a saját szótárat."
 
-#: src/hunspell/hunspell.cxx:698
+#: src/tools/hunspell.cxx:1044
 msgid "a"
 msgstr "j"
 
-#: src/hunspell/hunspell.cxx:703
-msgid "o"
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "S)tem" before
+#: src/tools/hunspell.cxx:1051
+msgid "s"
 msgstr "t"
 
-#: src/hunspell/hunspell.cxx:735
-msgid "New root word: "
-msgstr "�j sz�t�: "
+#: src/tools/hunspell.cxx:1084
+msgid "New word (stem): "
+msgstr "Új szó(tő): "
 
-#: src/hunspell/hunspell.cxx:762
-msgid "Pattern word: "
-msgstr "Minta (ami alapj�n ragozva lesz a sz�t�): "
+#: src/tools/hunspell.cxx:1111
+msgid "Model word (a similar dictionary word): "
+msgstr "Mintaszó (egy hasonló szótári szó): "
 
-#: src/hunspell/hunspell.cxx:822
-msgid "Pattern word must be in the dictionary. Press any key!"
-msgstr "A minta sz�t�ri sz� kell hogy legyen! Tov�bbl�p�s billenty�le�t�ssel."
+#: src/tools/hunspell.cxx:1175
+msgid "Model word must be in the dictionary. Press any key!"
+msgstr "A minta csak szótári szó lehet! Továbblépés billentyűleütéssel."
 
-#: src/hunspell/hunspell.cxx:829
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "e(X)it" before
+#: src/tools/hunspell.cxx:1184
 msgid "x"
 msgstr "v"
 
-#: src/hunspell/hunspell.cxx:832
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "Q)uit" before
+#: src/tools/hunspell.cxx:1189
 msgid "q"
 msgstr "m"
 
-#: src/hunspell/hunspell.cxx:834
+#: src/tools/hunspell.cxx:1191
 msgid "Are you sure you want to throw away your changes? "
-msgstr "Kil�p a m�dos�t�sok ment�se n�lk�l (i/n)? "
+msgstr "Kilép a módosítások mentése nélkül (i/n)? "
 
-#: src/hunspell/hunspell.cxx:835
+#. TRANSLATORS: translate this letter according to the shortcut letter y)es
+#: src/tools/hunspell.cxx:1193
 msgid "y"
 msgstr "i"
 
-#: src/hunspell/hunspell.cxx:899
+#: src/tools/hunspell.cxx:1265
 #, c-format
 msgid "Can't create tempfile %s.\n"
-msgstr "Nem lehet l�trehozni a(z) %s �tmeneti f�jlt.\n"
+msgstr "Nem lehet létrehozni a(z) %s átmeneti fájlt.\n"
 
-#: src/hunspell/hunspell.cxx:986
+#: src/tools/hunspell.cxx:1425
 #, c-format
 msgid "Usage: hunspell [OPTION]... [FILE]...\n"
-msgstr "Haszn�lat: hunspell [KAPCSOL�]... [F�JL]...\n"
+msgstr "Használat: hunspell [KAPCSOLÓ]... [FÁJL]...\n"
 
-#: src/hunspell/hunspell.cxx:987
+#: src/tools/hunspell.cxx:1426
 #, c-format
-msgid "Check spelling of each FILE. Without FILE, check standard input.\n"
+msgid ""
+"Check spelling of each FILE. Without FILE, check standard input.\n"
+"\n"
 msgstr ""
-"A F�JL(OK) (ennek hi�ny�ban a szabv�nyos bemenet) helyes�r�s�t ellen�rzi.\n"
+"A FÁJL(OK) (ennek hiányában a szabványos bemenet) helyesírását ellenőrzi.\n"
+"\n"
 
-#: src/hunspell/hunspell.cxx:989
+#: src/tools/hunspell.cxx:1427
 #, c-format
 msgid "  -1\t\tcheck only first field in lines (delimiter = tabulator)\n"
 msgstr ""
-"  -1\t\tcsak az els� mez�t ellen�rzi a sorban (mez�hat�rol� = tabul�tor)\n"
+"  -1\t\tcsak az első mezőt ellenőrzi a sorban (mezőhatároló = tabulátor)\n"
 
-#: src/hunspell/hunspell.cxx:990
+#: src/tools/hunspell.cxx:1428
 #, c-format
 msgid "  -a\t\tIspell's pipe interface\n"
-msgstr "  -a\t\tIspell-szer� cs�fel�let\n"
+msgstr "  -a\t\tIspell-szerű csőfelület\n"
 
-#: src/hunspell/hunspell.cxx:991
+#: src/tools/hunspell.cxx:1429
 #, c-format
-msgid "  -d dict\tuse dict dictionary\n"
-msgstr "  -d t�r\ta t�r nev� sz�t�rat haszn�lja\n"
+msgid "  --check-url\tCheck URLs, e-mail addresses and directory paths\n"
+msgstr "  --check-url\tURL-ek, e-mail címek és útvonalak ellenőrzése\n"
 
-#: src/hunspell/hunspell.cxx:992
+#: src/tools/hunspell.cxx:1430
+#, c-format
+msgid "  -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n"
+msgstr "  -d d[,d2,...]\ta d (d2 stb.) nevű szótárat használja\n"
+
+#: src/tools/hunspell.cxx:1431
+#, c-format
+msgid "  -D\t\tshow available dictionaries\n"
+msgstr "  -D\t\taz elérhető szótárak kilistázása\n"
+
+#: src/tools/hunspell.cxx:1432
 #, c-format
 msgid "  -G\t\tprint only correct words or lines\n"
-msgstr "  -G\t\tki�rja a bemenet helyes szavait vagy sorait\n"
+msgstr "  -G\t\tkiírja a bemenet helyes szavait vagy sorait\n"
 
-#: src/hunspell/hunspell.cxx:993
+#: src/tools/hunspell.cxx:1433
 #, c-format
 msgid "  -h, --help\tdisplay this help and exit\n"
-msgstr "  -h, --help\tki�rja ezt a le�r�st\n"
+msgstr "  -h, --help\tkiírja ezt a leírást\n"
 
-#: src/hunspell/hunspell.cxx:994
+#: src/tools/hunspell.cxx:1434
 #, c-format
 msgid "  -H\t\tHTML input file format\n"
-msgstr "  -H\t\tHTML bemeneti form�tum\n"
+msgstr "  -H\t\tHTML bemeneti formátum\n"
+
+#: src/tools/hunspell.cxx:1435
+#, c-format
+msgid "  -i enc\tinput encoding\n"
+msgstr "  -i kód\tbemeneti karakterkódolás\n"
 
-#: src/hunspell/hunspell.cxx:995
+#: src/tools/hunspell.cxx:1436
 #, c-format
 msgid "  -l\t\tprint mispelled words\n"
-msgstr "  -l\t\tki�rja a hib�s szavakat\n"
+msgstr "  -l\t\tkiírja a hibás szavakat\n"
 
-#: src/hunspell/hunspell.cxx:996
+#: src/tools/hunspell.cxx:1437
 #, c-format
 msgid "  -L\t\tprint lines with mispelled words\n"
-msgstr "  -L\t\tki�rja a hib�s sorokat\n"
+msgstr "  -L\t\tkiírja a hibás sorokat\n"
 
-#: src/hunspell/hunspell.cxx:997
+#: src/tools/hunspell.cxx:1438
 #, c-format
-msgid "  -n\t\tnroff/troff input file format\n"
-msgstr "  -n\t\tnroff/troff bemeneti form�tum\n"
+msgid "  -m \t\tanalyze the words of the input text\n"
+msgstr "  -m \t\tszövegszavak morfológiai elemzése\n"
 
-#: src/hunspell/hunspell.cxx:998
+#: src/tools/hunspell.cxx:1439
 #, c-format
-msgid "  -p dict\tset dict custom dictionary\n"
-msgstr "  -p t�r\ta t�r nev� saj�t sz�t�rat haszn�lja\n"
+msgid "  -n\t\tnroff/troff input file format\n"
+msgstr "  -n\t\tnroff/troff bemeneti formátum\n"
 
-#: src/hunspell/hunspell.cxx:999
+#: src/tools/hunspell.cxx:1440
 #, c-format
-msgid "  -t\t\tTeX/LaTeX input file format\n"
-msgstr "  -t\t\tTeX/LaTeX bemeneti form�tum\n"
+msgid "  -p dict\tset dict custom dictionary\n"
+msgstr "  -p tár\ta tár nevű saját szótárat használja\n"
 
-#: src/hunspell/hunspell.cxx:1000
+#: src/tools/hunspell.cxx:1441
 #, c-format
-msgid "  -u\t\tshow typical misspellings\n"
-msgstr "  -u\t\tki�rja a tipikus t�veszt�seket\n"
+msgid "  -P password\tset password for encrypted dictionaries\n"
+msgstr "  -P jelszó\tjelszó megadása a titkosított szótárakhoz\n"
 
-#: src/hunspell/hunspell.cxx:1001
+#: src/tools/hunspell.cxx:1442
 #, c-format
-msgid "  -u2\t\tprint typical misspellings in sed format\n"
-msgstr "  -u2\t\tki�rja a tipikus t�veszt�seket sed form�tumban\n"
+msgid "  -s \t\tstem the words of the input text\n"
+msgstr "  -s \t\tszövegszavak tövezése\n"
 
-#: src/hunspell/hunspell.cxx:1002
+#: src/tools/hunspell.cxx:1443
 #, c-format
-msgid "  -U\t\tautomatic correction of typical misspellings to stdout\n"
-msgstr "  -U\t\tki�rja az automatikusan jav�tott f�jlt\n"
+msgid "  -t\t\tTeX/LaTeX input file format\n"
+msgstr "  -t\t\tTeX/LaTeX bemeneti formátum\n"
 
-#: src/hunspell/hunspell.cxx:1003
+#: src/tools/hunspell.cxx:1448
 #, c-format
 msgid "  -v, --version\tprint version number\n"
-msgstr "  -v, --version\tki�rja a v�ltozat sz�m�t\n"
+msgstr "  -v, --version\tkiírja a változat számát\n"
 
-#: src/hunspell/hunspell.cxx:1004
+#: src/tools/hunspell.cxx:1449
 #, c-format
 msgid "  -vv\t\tprint Ispell compatible version number\n"
-msgstr "  -vv\t\tki�rja a v�ltozat sz�m�t Ispell-szer�en\n"
+msgstr "  -vv\t\tkiírja a változat számát Ispell-szerűen\n"
 
-#: src/hunspell/hunspell.cxx:1005
+#: src/tools/hunspell.cxx:1450
 #, c-format
-msgid "  -w\t\tprint mispelled words (= lines) from one word/line input.\n"
-msgstr "  -w\t\tki�rja a hib�s szavakat a soronk�nt egy szavas bemenetb�l.\n"
+msgid ""
+"  -w\t\tprint mispelled words (= lines) from one word/line input.\n"
+"\n"
+msgstr ""
+"  -w\t\tkiírja a hibás szavakat a soronként egy szavas bemenetből.\n"
+"\n"
 
-#: src/hunspell/hunspell.cxx:1007
-#, fuzzy, c-format
-msgid "Example: hunspell -d english file.txt  # interactive spelling\n"
+#: src/tools/hunspell.cxx:1451
+#, c-format
+msgid ""
+"Example: hunspell -d en_US file.txt    # interactive spelling\n"
+"         hunspell -l file.txt          # print misspelled words\n"
+"         hunspell -i utf-8 file.txt    # check UTF-8 encoded file\n"
+"\n"
 msgstr ""
-"P�ld�k: hunspell -d en_US f�jl.txt      # interakt�v helyes�r�s-ellen�rz�s\n"
+"Példák: hunspell -d en_US fájl.txt    # interaktív helyesírás-ellenőrzés\n"
+"        hunspell -l fájl.txt          # kiírja a hibás szavakat\n"
+"        hunspell -i utf-8 fájl.txt    # UTF-8-as fájl ellenőrzése\n"
+"\n"
 
-#: src/hunspell/hunspell.cxx:1008
+#: src/tools/hunspell.cxx:1454
 #, c-format
-msgid "         hunspell -l file.txt          # print misspelled words\n"
-msgstr "         hunspell -l f�jl.txt          # ki�rja a hib�s szavakat\n"
+msgid "Bug reports: http://hunspell.sourceforge.net\n";
+msgstr "Hibajelzés: http://hunspell.sourceforge.net\n";
 
-#: src/hunspell/hunspell.cxx:1009
+#: src/tools/hunspell.cxx:1460
 #, c-format
 msgid ""
-"         hunspell -u file.txt          # print typical (=serious) "
-"misspellings\n"
+"\n"
+"Copyright (C) 2002-2008 László Németh. License: MPL/GPL/LGPL.\n"
+"\n"
+"Based on OpenOffice.org's Myspell library.\n"
+"Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n"
+"\n"
 msgstr ""
-"       hunspell -u f�jl.txt            # ki�rja a tipikus (=s�lyos) hib�kat\n"
+"\n"
+"Copyright (C) 2002-2008 Németh László. Licenc: MPL/GPL/LGPL.\n"
+"\n"
+"Az OpenOffice.org Myspell programkönyvtárán alapul.\n"
+"MySpell copyright (C) Kevin Hendricks, 2001-2002, Licenc: BSD.\n"
+"\n"
 
-#: src/hunspell/hunspell.cxx:1011
+#: src/tools/hunspell.cxx:1463
 #, c-format
-msgid "E-mail bug reports to: szoszablya-user@lists.mokk.bme.hu\n"
+msgid ""
+"This is free software; see the source for copying conditions.  There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n"
+"to the extent permitted by law.\n"
 msgstr ""
+"Ez egy szabad szoftver: lásd a forráskódot a licencfeltételekről.\n"
+"NINCS garancia, még az eladhatóságra vagy valamely célra való\n"
+"alkalmazhatóságra sem.\n"
 
-#: src/hunspell/hunspell.cxx:1019
-#, fuzzy, c-format
-msgid "Copyright (C) 2002-2005 Nemeth Laszlo. License: GNU LGPL.\n"
-msgstr "Copyright (C) 2002-2008 N�meth L�szl�. Licenc: MPL/GPL/LGPL.\n"
-
-#: src/hunspell/hunspell.cxx:1021
-#, c-format
-msgid "Based on OpenOffice.org's Myspell library.\n"
-msgstr "Az OpenOffice.org Myspell programk�nyvt�r�n alapul.\n"
-
-#: src/hunspell/hunspell.cxx:1022
+#: src/tools/hunspell.cxx:1503 src/tools/hunspell.cxx:1619
 #, c-format
-msgid "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n"
-msgstr "MySpell copyright (C) Kevin Hendricks, 2001-2002, Licenc: BSD.\n"
+msgid "Can't open %s.\n"
+msgstr "Nem lehet megnyitni a(z) %s-t.\n"
 
-#: src/hunspell/hunspell.cxx:1024
+#: src/tools/hunspell.cxx:1545
 #, c-format
 msgid ""
-"This is free software; see the source for copying conditions.  There is NO\n"
-msgstr "Ez egy szabad szoftver: l�sd a forr�sk�dot a licencfelt�telekr�l.\n"
+"SEARCH PATH:\n"
+"%s\n"
+msgstr ""
+"KERESÉSI ÚTVONAL:\n"
+"%s\n"
 
-#: src/hunspell/hunspell.cxx:1025
+#: src/tools/hunspell.cxx:1546
 #, c-format
-msgid ""
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n"
-msgstr "NINCS garancia, m�g az eladhat�s�gra vagy valamely c�lra val�\n"
+msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n"
+msgstr "ELÉRHETŐ SZÓTÁRAK (az útvonal nem kötelező a -d kapcsolónál):\n"
 
-#: src/hunspell/hunspell.cxx:1026
+#: src/tools/hunspell.cxx:1548
 #, c-format
-msgid "to the extent permitted by law.\n"
-msgstr "alkalmazhat�s�gra sem.\n"
+msgid ""
+"LOADED DICTIONARY:\n"
+"%s\n"
+"%s\n"
+msgstr ""
+"BETÖLTÖTT SZÓTÁR:\n"
+"%s\n"
+"%s\n"
 
-#: src/hunspell/hunspell.cxx:1056 src/hunspell/hunspell.cxx:1138
+#: src/tools/hunspell.cxx:1566
 #, c-format
-msgid "Can't open %s.\n"
-msgstr "Nem lehet megnyitni a(z) %s-t.\n"
+msgid "error - %s exceeds dictionary limit.\n"
+msgstr "hiba - %s meghaladja a szótárlimitet.\n"
 
-#: src/hunspell/hunspell.cxx:1088
+#: src/tools/hunspell.cxx:1570
 #, c-format
 msgid "Can't open affix or dictionary files.\n"
-msgstr "Nem lehet megnyitni a ragoz�si vagy a sz�t�rf�jlt.\n"
+msgstr "Nem lehet megnyitni a ragozási vagy a szótárfájlt.\n"
 
-#: src/hunspell/hunspell.cxx:1150 src/hunspell/hunspell.cxx:1153
+#: src/tools/hunspell.cxx:1631 src/tools/hunspell.cxx:1634
 #, c-format
 msgid "Hunspell has been compiled without Ncurses user interface.\n"
-msgstr "A Hunspell Ncurses felhaszn�l�i fel�let n�lk�l lett ford�tva.\n"
-
-#~ msgid "  --check-url\tCheck URLs, e-mail addresses and directory paths\n"
-#~ msgstr "  --check-url\tURL-ek, lev�lc�mek �s �tvonalak ellen�rz�se\n"
-
-#~ msgid "         hunspell -i utf-8 file.txt    # check UTF-8 encoded file\n"
-#~ msgstr ""
-#~ "        hunspell -i utf-8 f�jl.txt      # UTF-8-as �llom�ny ellen�rz�se\n"
-
-#~ msgid "  -P password\tset password for encrypted dictionaries\n"
-#~ msgstr "  -P jelsz�\tjelsz� megad�sa a titkos�tott sz�t�rakhoz\n"
-
-#~ msgid "Bug reports: http://hunspell.sourceforge.net\n";
-#~ msgstr "Hibajelz�s: http://hunspell.sourceforge.net\n";
-
-#~ msgid "  -D\t\tshow detected path of the dictionary\n"
-#~ msgstr "  -D\t\tki�rja a bet�lt�tt sz�t�r �tvonal�t\n"
-
-#~ msgid "  -i enc\tinput encoding\n"
-#~ msgstr "  -i k�d\tbemeneti karakterk�dol�s\n"
+msgstr "A Hunspell Ncurses felhasználói felület nélkül lett fordítva.\n"
diff --git a/po/hunspell.pot b/po/hunspell.pot
index 487cd10..af6eda0 100644
--- a/po/hunspell.pot
+++ b/po/hunspell.pot
@@ -8,350 +8,380 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-07-15 13:09+0200\n"
+"POT-Creation-Date: 2008-04-12 01:05+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: src/hunspell/hunspell.cxx:383
+#: src/tools/hunspell.cxx:189 src/tools/hunspell.cxx:295
 #, c-format
-msgid "Line %d: %s -> %s\n"
+msgid "error - iconv_open: %s -> %s\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:519
-msgid "FORBIDDEN!"
-msgstr ""
-
-#: src/hunspell/hunspell.cxx:520
+#: src/tools/hunspell.cxx:232 src/tools/hunspell.cxx:253
 #, c-format
-msgid ""
-"\t%s\t\tFile: %s\n"
-"\n"
+msgid "error - iconv_open: UTF-8 -> %s\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:562
-msgid ""
-"\n"
-"[SP] <number> R)epl A)ccept I)nsert L)ookup U)ncap Q)uit e(X)it or ? for "
-"help\n"
+#: src/tools/hunspell.cxx:543 src/tools/hunspell.cxx:1022
+#: src/tools/hunspell.cxx:1153
+#, c-format
+msgid "error - missing HOME variable\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:607
-msgid "Whenever a word is found that is not in the dictionary\n"
+#: src/tools/hunspell.cxx:618
+#, c-format
+msgid "Line %d: %s -> "
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:608
-msgid "it is printed on the first line of the screen.  If the dictionary\n"
+#: src/tools/hunspell.cxx:847
+msgid "FORBIDDEN!"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:609
-msgid "contains any similar words, they are listed with a number\n"
+#: src/tools/hunspell.cxx:848
+#, c-format
+msgid ""
+"\t%s\t\tFile: %s\n"
+"\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:610
-msgid "next to each one.  You have the option of replacing the word\n"
+#: src/tools/hunspell.cxx:900
+msgid ""
+"\n"
+"[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:611
-msgid "completely, or choosing one of the suggested words.\n"
+#: src/tools/hunspell.cxx:945
+msgid ""
+"Whenever a word is found that is not in the dictionary\n"
+"it is printed on the first line of the screen.  If the dictionary\n"
+"contains any similar words, they are listed with a number\n"
+"next to each one.  You have the option of replacing the word\n"
+"completely, or choosing one of the suggested words.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:612
+#: src/tools/hunspell.cxx:950
 msgid ""
 "\n"
 "Commands are:\n"
 "\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:613
+#: src/tools/hunspell.cxx:951
 msgid "R\tReplace the misspelled word completely.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:614
+#: src/tools/hunspell.cxx:952
 msgid "Space\tAccept the word this time only.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:615
+#: src/tools/hunspell.cxx:953
 msgid "A\tAccept the word for the rest of this session.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:616
+#: src/tools/hunspell.cxx:954
 msgid "I\tAccept the word, and put it in your private dictionary.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:617
+#: src/tools/hunspell.cxx:955
 msgid "U\tAccept and add lowercase version to private dictionary.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:618
-msgid "O\tAsk two words. First word will accepted with 2nd's affixes too.\n"
+#: src/tools/hunspell.cxx:957
+msgid ""
+"S\tAsk a stem and a model word and store them in the private dictionary.\n"
+"\tThe stem will be accepted also with the affixes of the model word.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:619
+#: src/tools/hunspell.cxx:960
 msgid "0-n\tReplace with one of the suggested words.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:620
-msgid "L\tLook up words in system dictionary.\n"
-msgstr ""
-
-#: src/hunspell/hunspell.cxx:621
+#: src/tools/hunspell.cxx:961
 msgid ""
 "X\tWrite the rest of this file, ignoring misspellings, and start next file.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:622
+#: src/tools/hunspell.cxx:962
 msgid "Q\tQuit immediately. Asks for confirmation. Leaves file unchanged.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:623
-msgid "!\tShell escape.\n"
-msgstr ""
-
-#: src/hunspell/hunspell.cxx:624
-msgid "^L\tRedraw screen\n"
-msgstr ""
-
-#: src/hunspell/hunspell.cxx:625
+#: src/tools/hunspell.cxx:963
 msgid "^Z\tSuspend program. Restart with fg command.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:626
+#: src/tools/hunspell.cxx:964
 msgid "?\tShow this help screen.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:627
+#: src/tools/hunspell.cxx:965
 msgid ""
 "\n"
 "-- Type space to continue -- \n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:635
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "R)epl" before
+#: src/tools/hunspell.cxx:975
 msgid "r"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:647
+#: src/tools/hunspell.cxx:987
 msgid "Replace with: "
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:670 src/hunspell/hunspell.cxx:673
-#: src/hunspell/hunspell.cxx:698
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "U)ncap" before
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "U)ncap" and I)nsert before
+#: src/tools/hunspell.cxx:1008 src/tools/hunspell.cxx:1013
+#: src/tools/hunspell.cxx:1044
 msgid "u"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:673 src/hunspell/hunspell.cxx:698
+#: src/tools/hunspell.cxx:1013 src/tools/hunspell.cxx:1044
 msgid "i"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:694 src/hunspell/hunspell.cxx:816
+#: src/tools/hunspell.cxx:1038 src/tools/hunspell.cxx:1169
 #, c-format
 msgid "Cannot update personal dictionary."
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:698
+#: src/tools/hunspell.cxx:1044
 msgid "a"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:703
-msgid "o"
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "S)tem" before
+#: src/tools/hunspell.cxx:1051
+msgid "s"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:735
-msgid "New root word: "
+#: src/tools/hunspell.cxx:1084
+msgid "New word (stem): "
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:762
-msgid "Pattern word: "
+#: src/tools/hunspell.cxx:1111
+msgid "Model word (a similar dictionary word): "
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:822
-msgid "Pattern word must be in the dictionary. Press any key!"
+#: src/tools/hunspell.cxx:1175
+msgid "Model word must be in the dictionary. Press any key!"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:829
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "e(X)it" before
+#: src/tools/hunspell.cxx:1184
 msgid "x"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:832
+#. TRANSLATORS: translate this letter according to the shortcut letter used
+#. previously in the  translation of "Q)uit" before
+#: src/tools/hunspell.cxx:1189
 msgid "q"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:834
+#: src/tools/hunspell.cxx:1191
 msgid "Are you sure you want to throw away your changes? "
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:835
+#. TRANSLATORS: translate this letter according to the shortcut letter y)es
+#: src/tools/hunspell.cxx:1193
 msgid "y"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:899
+#: src/tools/hunspell.cxx:1265
 #, c-format
 msgid "Can't create tempfile %s.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:986
+#: src/tools/hunspell.cxx:1425
 #, c-format
 msgid "Usage: hunspell [OPTION]... [FILE]...\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:987
+#: src/tools/hunspell.cxx:1426
 #, c-format
-msgid "Check spelling of each FILE. Without FILE, check standard input.\n"
+msgid ""
+"Check spelling of each FILE. Without FILE, check standard input.\n"
+"\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:989
+#: src/tools/hunspell.cxx:1427
 #, c-format
 msgid "  -1\t\tcheck only first field in lines (delimiter = tabulator)\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:990
+#: src/tools/hunspell.cxx:1428
 #, c-format
 msgid "  -a\t\tIspell's pipe interface\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:991
+#: src/tools/hunspell.cxx:1429
+#, c-format
+msgid "  --check-url\tCheck URLs, e-mail addresses and directory paths\n"
+msgstr ""
+
+#: src/tools/hunspell.cxx:1430
+#, c-format
+msgid "  -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n"
+msgstr ""
+
+#: src/tools/hunspell.cxx:1431
 #, c-format
-msgid "  -d dict\tuse dict dictionary\n"
+msgid "  -D\t\tshow available dictionaries\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:992
+#: src/tools/hunspell.cxx:1432
 #, c-format
 msgid "  -G\t\tprint only correct words or lines\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:993
+#: src/tools/hunspell.cxx:1433
 #, c-format
 msgid "  -h, --help\tdisplay this help and exit\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:994
+#: src/tools/hunspell.cxx:1434
 #, c-format
 msgid "  -H\t\tHTML input file format\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:995
+#: src/tools/hunspell.cxx:1435
+#, c-format
+msgid "  -i enc\tinput encoding\n"
+msgstr ""
+
+#: src/tools/hunspell.cxx:1436
 #, c-format
 msgid "  -l\t\tprint mispelled words\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:996
+#: src/tools/hunspell.cxx:1437
 #, c-format
 msgid "  -L\t\tprint lines with mispelled words\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:997
+#: src/tools/hunspell.cxx:1438
 #, c-format
-msgid "  -n\t\tnroff/troff input file format\n"
+msgid "  -m \t\tanalyze the words of the input text\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:998
+#: src/tools/hunspell.cxx:1439
 #, c-format
-msgid "  -p dict\tset dict custom dictionary\n"
+msgid "  -n\t\tnroff/troff input file format\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:999
+#: src/tools/hunspell.cxx:1440
 #, c-format
-msgid "  -t\t\tTeX/LaTeX input file format\n"
+msgid "  -p dict\tset dict custom dictionary\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1000
+#: src/tools/hunspell.cxx:1441
 #, c-format
-msgid "  -u\t\tshow typical misspellings\n"
+msgid "  -P password\tset password for encrypted dictionaries\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1001
+#: src/tools/hunspell.cxx:1442
 #, c-format
-msgid "  -u2\t\tprint typical misspellings in sed format\n"
+msgid "  -s \t\tstem the words of the input text\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1002
+#: src/tools/hunspell.cxx:1443
 #, c-format
-msgid "  -U\t\tautomatic correction of typical misspellings to stdout\n"
+msgid "  -t\t\tTeX/LaTeX input file format\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1003
+#: src/tools/hunspell.cxx:1448
 #, c-format
 msgid "  -v, --version\tprint version number\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1004
+#: src/tools/hunspell.cxx:1449
 #, c-format
 msgid "  -vv\t\tprint Ispell compatible version number\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1005
-#, c-format
-msgid "  -w\t\tprint mispelled words (= lines) from one word/line input.\n"
-msgstr ""
-
-#: src/hunspell/hunspell.cxx:1007
-#, c-format
-msgid "Example: hunspell -d english file.txt  # interactive spelling\n"
-msgstr ""
-
-#: src/hunspell/hunspell.cxx:1008
+#: src/tools/hunspell.cxx:1450
 #, c-format
-msgid "         hunspell -l file.txt          # print misspelled words\n"
+msgid ""
+"  -w\t\tprint mispelled words (= lines) from one word/line input.\n"
+"\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1009
+#: src/tools/hunspell.cxx:1451
 #, c-format
 msgid ""
-"         hunspell -u file.txt          # print typical (=serious) "
-"misspellings\n"
+"Example: hunspell -d en_US file.txt    # interactive spelling\n"
+"         hunspell -l file.txt          # print misspelled words\n"
+"         hunspell -i utf-8 file.txt    # check UTF-8 encoded file\n"
+"\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1011
+#: src/tools/hunspell.cxx:1454
 #, c-format
-msgid "E-mail bug reports to: szoszablya-user@lists.mokk.bme.hu\n"
+msgid "Bug reports: http://hunspell.sourceforge.net\n";
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1019
+#: src/tools/hunspell.cxx:1460
 #, c-format
-msgid "Copyright (C) 2002-2005 Nemeth Laszlo. License: GNU LGPL.\n"
+msgid ""
+"\n"
+"Copyright (C) 2002-2008 László Németh. License: MPL/GPL/LGPL.\n"
+"\n"
+"Based on OpenOffice.org's Myspell library.\n"
+"Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n"
+"\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1021
+#: src/tools/hunspell.cxx:1463
 #, c-format
-msgid "Based on OpenOffice.org's Myspell library.\n"
+msgid ""
+"This is free software; see the source for copying conditions.  There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n"
+"to the extent permitted by law.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1022
+#: src/tools/hunspell.cxx:1503 src/tools/hunspell.cxx:1619
 #, c-format
-msgid "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n"
+msgid "Can't open %s.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1024
+#: src/tools/hunspell.cxx:1545
 #, c-format
 msgid ""
-"This is free software; see the source for copying conditions.  There is NO\n"
+"SEARCH PATH:\n"
+"%s\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1025
+#: src/tools/hunspell.cxx:1546
 #, c-format
-msgid ""
-"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n"
+msgid "AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1026
+#: src/tools/hunspell.cxx:1548
 #, c-format
-msgid "to the extent permitted by law.\n"
+msgid ""
+"LOADED DICTIONARY:\n"
+"%s\n"
+"%s\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1056 src/hunspell/hunspell.cxx:1138
+#: src/tools/hunspell.cxx:1566
 #, c-format
-msgid "Can't open %s.\n"
+msgid "error - %s exceeds dictionary limit.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1088
+#: src/tools/hunspell.cxx:1570
 #, c-format
 msgid "Can't open affix or dictionary files.\n"
 msgstr ""
 
-#: src/hunspell/hunspell.cxx:1150 src/hunspell/hunspell.cxx:1153
+#: src/tools/hunspell.cxx:1631 src/tools/hunspell.cxx:1634
 #, c-format
 msgid "Hunspell has been compiled without Ncurses user interface.\n"
 msgstr ""
diff --git a/src/hunspell/affixmgr.cxx b/src/hunspell/affixmgr.cxx
index 3fe51b6..1bcec78 100644
--- a/src/hunspell/affixmgr.cxx
+++ b/src/hunspell/affixmgr.cxx
@@ -270,7 +270,7 @@ int  AffixMgr::parse_file(const char * affpath, const char * key)
 
     // read in each line ignoring any that do not
     // start with a known line type indicator
-    while (line = afflst->getline()) {
+    while ((line = afflst->getline())) {
        mychomp(line);
 
        /* remove byte order mark */
@@ -667,6 +667,23 @@ int  AffixMgr::parse_file(const char * affpath, const char * key)
     free(enc);
     enc = NULL;
 
+#ifdef WINSHELL
+    char expw[MAXLNLEN];
+    if (wordchars) {
+        strcpy(expw, wordchars);
+        free(wordchars);
+    } else *expw = '\0';
+
+    for (int i = 0; i <= 255; i++) {
+        if ( (csconv[i].cupper != csconv[i].clower) &&
+            (! strchr(expw, (char) i))) {
+                *(expw + strlen(expw) + 1) = '\0';
+                *(expw + strlen(expw)) = (char) i;
+        }
+    }
+
+    wordchars = mystrdup(expw);
+#endif
     // temporary BREAK definition for German dash handling (OOo issue 64400)
     if ((langnum == LANG_de) && (!breaktable)) {
         breaktable = (char **) malloc(sizeof(char *));
@@ -974,7 +991,7 @@ int AffixMgr::condlen(char * st)
 int AffixMgr::encodeit(struct affentry * ptr, char * cs)
 {
   if (strcmp(cs,".") != 0) {
-    ptr->numconds = condlen(cs);
+    ptr->numconds = (char) condlen(cs);
     strncpy(ptr->c.conds, cs, MAXCONDLEN);
     // long condition (end of conds padded by strncpy)
     if (ptr->c.conds[MAXCONDLEN - 1] && cs[MAXCONDLEN]) {
@@ -1318,7 +1335,7 @@ int AffixMgr::defcpd_check(hentry *** words, short wnum, hentry * rv, hentry **
         ok = 1;
         btnum[bt - 1]--;
         pp = btpp[bt - 1];
-        wp = btwp[bt - 1] + btnum[bt - 1];
+        wp = btwp[bt - 1] + (signed short) btnum[bt - 1];
     } while ((btnum[bt - 1] < 0) && --bt);
   } while (bt);
 
@@ -3317,7 +3334,7 @@ int  AffixMgr::parse_phonetable(char * line, FileMgr * af)
             	       phone = (phonetable *) malloc(sizeof(struct phonetable));
             	       phone->num = atoi(piece);
             	       phone->rules = NULL;
-            	       phone->utf8 = utf8;
+            	       phone->utf8 = (char) utf8;
                        if (!phone) return 1;
                        if (phone->num < 1) {
                           HUNSPELL_WARNING(stderr, "incorrect number of entries in phonelacement table\n");
diff --git a/src/hunspell/csutil.cxx b/src/hunspell/csutil.cxx
index 008e19f..e282754 100644
--- a/src/hunspell/csutil.cxx
+++ b/src/hunspell/csutil.cxx
@@ -5107,7 +5107,7 @@ struct cs_info iscii_devanagari_tbl[] = {
 { 0x00, 0xff, 0xff }
 };
 
-struct enc_entry encds[] = {
+static struct enc_entry encds[] = {
 {"ISO8859-1",iso1_tbl},
 {"ISO8859-2",iso2_tbl},
 {"ISO8859-3",iso3_tbl},
diff --git a/src/hunspell/csutil.hxx b/src/hunspell/csutil.hxx
index fbed083..2a16538 100644
--- a/src/hunspell/csutil.hxx
+++ b/src/hunspell/csutil.hxx
@@ -38,6 +38,7 @@
 #define FORBIDDENWORD  65510
 #define ONLYUPCASEFLAG 65511
 
+// hash entry macros
 #define HENTRY_DATA(h) (h->var ? ((h->var & H_OPT_ALIASM) ? \
     get_stored_pointer(&(h->word) + h->blen + 1) : &(h->word) + h->blen + 1) : NULL)
 #define HENTRY_FIND(h,p) (HENTRY_DATA(h) ? strstr(HENTRY_DATA(h), p) : NULL)
diff --git a/src/hunspell/hashmgr.cxx b/src/hunspell/hashmgr.cxx
index 48cbb25..a1ca329 100644
--- a/src/hunspell/hashmgr.cxx
+++ b/src/hunspell/hashmgr.cxx
@@ -267,27 +267,47 @@ int HashMgr::get_clen_and_captype(const char * word, int wbl, int * captype) {
     return len;
 }
 
-// remove word with FORBIDDENWORD flag (not implemented)
+// remove word (personal dictionary function for standalone applications)
 int HashMgr::remove(const char * word)
 {
-/*    struct hentry * dp = lookup(word);    
-
-    if (!word || (!dp->astr || !TESTAFF(dp->astr, forbiddenword, pt->alen))) {
-        int wbl = strlen(word);
-        int wcl = get_clen_and_captype(word, wbl, &captype);
-        if (aliasf) {
-            add_word(word, wbl, wcl, dp->astr, dp->alen, NULL, false);	
-        } else {
-            unsigned short * flags = (unsigned short *) malloc (dp->alen * sizeof(short));
-            if (flags) {
-                memcpy((void *) flags, (void *) dp->astr, dp->alen * sizeof(short));
-                add_word(word, wbl, wcl, flags, dp->alen, NULL, false);
-            } else return 1;
+    struct hentry * dp = lookup(word);
+    while (dp) {
+        if (dp->alen == 0 || !TESTAFF(dp->astr, forbiddenword, dp->alen)) {
+            unsigned short * flags =
+                (unsigned short *) malloc(sizeof(short *) * (dp->alen + 1));
+            if (!flags) return 1;
+            for (int i = 0; i < dp->alen; i++) flags[i] = dp->astr[i];
+            flags[dp->alen] = forbiddenword;
+            dp->astr = flags;
+            dp->alen++;
+            flag_qsort(flags, 0, dp->alen);
         }
-        return add_hidden_capitalized_word((char *) word, wbl, wcl, dp->astr, dp->alen, NULL, captype);
+        dp = dp->next_homonym;
     }
-*/
-    return 1;
+}
+
+/* remove forbidden flag to add a personal word to the hash */
+int HashMgr::remove_forbidden_flag(const char * word) {
+    struct hentry * dp = lookup(word);
+    if (!dp) return 1;
+    while (dp) {
+         if (dp->astr && TESTAFF(dp->astr, forbiddenword, dp->alen)) {
+            if (dp->alen == 1) dp->alen = 0; // XXX forbidden words of personal dic.
+            else {
+                unsigned short * flags2 =
+                    (unsigned short *) malloc(sizeof(short *) * (dp->alen - 1));
+                if (!flags2) return 1;
+                int i, j = 0;
+                for (i = 0; i < dp->alen; i++) {
+                    if (dp->astr[i] != forbiddenword) flags2[j++] = dp->astr[i];
+                }
+                dp->alen--;
+                dp->astr = flags2; // XXX allowed forbidden words
+            }
+         }
+         dp = dp->next_homonym;
+       }
+   return 0;
 }
 
 // add a custom dic. word to the hash table (public)
@@ -302,17 +322,21 @@ int HashMgr::add(const char * word, char * aff)
         flags = NULL;
     }
 
-    int captype;
-    int wbl = strlen(word);
-    int wcl = get_clen_and_captype(word, wbl, &captype);
-    add_word(word, wbl, wcl, flags, al, NULL, false);
-    return add_hidden_capitalized_word((char *) word, wbl, wcl, flags, al, NULL, captype);
+    if (remove_forbidden_flag(word)) {
+        int captype;
+        int wbl = strlen(word);
+        int wcl = get_clen_and_captype(word, wbl, &captype);
+        add_word(word, wbl, wcl, flags, al, NULL, false);
+        return add_hidden_capitalized_word((char *) word, wbl, wcl, flags, al, NULL, captype);
+    }
+    return 0;
 }
 
 int HashMgr::add_with_affix(const char * word, const char * example)
 {
     // detect captype and modify word length for UTF-8 encoding
     struct hentry * dp = lookup(example);
+    remove_forbidden_flag(word);
     if (dp && dp->astr) {
         int captype;
         int wbl = strlen(word);
diff --git a/src/hunspell/hashmgr.hxx b/src/hunspell/hashmgr.hxx
index 9664e5f..ce23f71 100644
--- a/src/hunspell/hashmgr.hxx
+++ b/src/hunspell/hashmgr.hxx
@@ -64,6 +64,7 @@ private:
   int add_hidden_capitalized_word(char * word, int wbl, int wcl,
     unsigned short * flags, int al, char * dp, int captype);
   int parse_aliasm(char * line, FileMgr * af);
+  int remove_forbidden_flag(const char * word);
 
 };
 
diff --git a/src/hunspell/htypes.hxx b/src/hunspell/htypes.hxx
index 33fe91b..80647f9 100644
--- a/src/hunspell/htypes.hxx
+++ b/src/hunspell/htypes.hxx
@@ -11,6 +11,7 @@
 #define H_OPT_ALIASM (1 << 1)
 #define H_OPT_PHON   (1 << 2)
 
+// see also csutil.hxx
 #define HENTRY_WORD(h) &(h->word)
 
 // approx. number  of user defined words
diff --git a/src/hunspell/hunspell.cxx b/src/hunspell/hunspell.cxx
index 0acf7bd..e74b34a 100644
--- a/src/hunspell/hunspell.cxx
+++ b/src/hunspell/hunspell.cxx
@@ -1247,8 +1247,6 @@ int Hunspell::add_with_affix(const char * word, const char * example)
     return 0;
 }
 
-/* XXX not implemented yet */
-
 int Hunspell::remove(const char * word)
 {
     if (pHMgr[0]) return (pHMgr[0])->remove(word);
@@ -1487,7 +1485,7 @@ int Hunspell::generate(char*** slst, const char * word, char ** pl, int pln)
 {
   if (!pSMgr || !pln) return 0;
   char **pl2;
-  char pl2n = analyze(&pl2, word);
+  int pl2n = analyze(&pl2, word);
   int captype = 0;
   int abbv = 0;
   char cw[MAXWORDUTF8LEN];
@@ -1535,7 +1533,7 @@ int Hunspell::generate(char*** slst, const char * word, char ** pl, int pln)
 int Hunspell::generate(char*** slst, const char * word, const char * pattern)
 {
   char **pl;
-  char pln = analyze(&pl, pattern);
+  int pln = analyze(&pl, pattern);
   int n = generate(slst, word, pl, pln);
   freelist(&pl, pln);
   return uniqlist(*slst, n);
@@ -1769,7 +1767,6 @@ int Hunspell_add_with_affix(Hunhandle *pHunspell, const char * word,
 }
 
   /* remove word from the run-time dictionary */
-  /* NOTE: not implemented yet */
 
 int Hunspell_remove(Hunhandle *pHunspell, const char * word) {
         return ((Hunspell*)pHunspell)->remove(word);
diff --git a/src/hunspell/hunspell.h b/src/hunspell/hunspell.h
index 63c0c29..a18cec4 100644
--- a/src/hunspell/hunspell.h
+++ b/src/hunspell/hunspell.h
@@ -85,7 +85,6 @@ DLL int Hunspell_add(Hunhandle *pHunspell, const char * word);
 DLL int Hunspell_add_with_affix(Hunhandle *pHunspell, const char * word, const char * example);
 
   /* remove word from the run-time dictionary */
-  /* NOTE: not implemented yet */
 
 DLL int Hunspell_remove(Hunhandle *pHunspell, const char * word);
 
diff --git a/src/hunspell/hunspell.hxx b/src/hunspell/hunspell.hxx
index c083f20..854f354 100644
--- a/src/hunspell/hunspell.hxx
+++ b/src/hunspell/hunspell.hxx
@@ -128,7 +128,6 @@ public:
   int add_with_affix(const char * word, const char * example);
 
   /* remove word from the run-time dictionary */
-  /* NOTE: not implemented yet */
 
   int remove(const char * word);
 
diff --git a/src/parsers/latexparser.cxx b/src/parsers/latexparser.cxx
index 4b0a326..1cd4ed2 100644
--- a/src/parsers/latexparser.cxx
+++ b/src/parsers/latexparser.cxx
@@ -82,7 +82,7 @@ static struct {
 	{ { "\\url", NULL } , 1 }
 };
 
-#define PATTERN_LEN (sizeof(PATTERN) / ((sizeof(char *) * 2) + sizeof(int)))
+#define PATTERN_LEN (sizeof(PATTERN) / sizeof(PATTERN[0]))
 
 LaTeXParser::LaTeXParser(const char * wordchars)
 {
diff --git a/src/parsers/testparser.cxx b/src/parsers/testparser.cxx
index 379fb14..06e129c 100644
--- a/src/parsers/testparser.cxx
+++ b/src/parsers/testparser.cxx
@@ -16,7 +16,7 @@ main(int argc, char** argv)
     FILE * f;
   /* first parse the command line options */
 
-  if (! argv[1]) {
+  if (argc < 2) {
     fprintf(stderr,"correct syntax is:\n"); 
     fprintf(stderr,"testparser file\n");
     fprintf(stderr,"example: testparser /dev/stdin\n");
diff --git a/src/tools/Makefile.am b/src/tools/Makefile.am
index 3e92633..445a8fd 100644
--- a/src/tools/Makefile.am
+++ b/src/tools/Makefile.am
@@ -23,4 +23,6 @@ analyze_LDADD = ../hunspell/libhunspell-1.2.la
 chmorph_SOURCES=chmorph.cxx
 chmorph_LDADD = ../hunspell/libhunspell-1.2.la ../parsers/libparsers.a
 
+noinst_PROGRAMS=example
+
 EXTRA_DIST=makealias affixcompress
diff --git a/src/tools/Makefile.in b/src/tools/Makefile.in
index bd5b851..180c878 100644
--- a/src/tools/Makefile.in
+++ b/src/tools/Makefile.in
@@ -41,6 +41,7 @@ target_triplet = @target@
 bin_PROGRAMS = analyze$(EXEEXT) chmorph$(EXEEXT) example$(EXEEXT) \
 	hunspell$(EXEEXT) munch$(EXEEXT) unmunch$(EXEEXT) \
 	hzip$(EXEEXT) hunzip$(EXEEXT)
+noinst_PROGRAMS = example$(EXEEXT)
 subdir = src/tools
 DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
@@ -58,7 +59,7 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(includedir)"
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-PROGRAMS = $(bin_PROGRAMS)
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
 am_analyze_OBJECTS = analyze.$(OBJEXT)
 analyze_OBJECTS = $(am_analyze_OBJECTS)
 analyze_DEPENDENCIES = ../hunspell/libhunspell-1.2.la
@@ -329,6 +330,13 @@ clean-binPROGRAMS:
 	  echo " rm -f $$p $$f"; \
 	  rm -f $$p $$f ; \
 	done
+
+clean-noinstPROGRAMS:
+	@list='$(noinst_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
 analyze$(EXEEXT): $(analyze_OBJECTS) $(analyze_DEPENDENCIES) 
 	@rm -f analyze$(EXEEXT)
 	$(CXXLINK) $(analyze_LDFLAGS) $(analyze_OBJECTS) $(analyze_LDADD) $(LIBS)
@@ -546,7 +554,8 @@ maintainer-clean-generic:
 	@echo "it deletes files that may require special tools to rebuild."
 clean: clean-am
 
-clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+clean-am: clean-binPROGRAMS clean-generic clean-libtool \
+	clean-noinstPROGRAMS mostlyclean-am
 
 distclean: distclean-am
 	-rm -rf ./$(DEPDIR)
@@ -596,17 +605,18 @@ uninstall-am: uninstall-binPROGRAMS uninstall-includeHEADERS \
 	uninstall-info-am
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-	clean-generic clean-libtool ctags distclean distclean-compile \
-	distclean-generic distclean-libtool distclean-tags distdir dvi \
-	dvi-am html html-am info info-am install install-am \
-	install-binPROGRAMS install-data install-data-am install-exec \
-	install-exec-am install-includeHEADERS install-info \
-	install-info-am install-man install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags uninstall uninstall-am uninstall-binPROGRAMS \
-	uninstall-includeHEADERS uninstall-info-am
+	clean-generic clean-libtool clean-noinstPROGRAMS ctags \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-exec install-exec-am \
+	install-includeHEADERS install-info install-info-am \
+	install-man install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+	uninstall-am uninstall-binPROGRAMS uninstall-includeHEADERS \
+	uninstall-info-am
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/tools/chmorph.cxx b/src/tools/chmorph.cxx
index c2bd113..c2b1e28 100644
--- a/src/tools/chmorph.cxx
+++ b/src/tools/chmorph.cxx
@@ -5,20 +5,20 @@
 #include "hunspell.hxx"
 #include "textparser.hxx"
 
-#ifndef WIN32
+#ifndef W32
 using namespace std;
 #endif
 
-void freelist(char *** list, int n) {
+void freelst(char *** list, int n) {
    if (list && (n > 0)) {
       for (int i = 0; i < n; i++) if ((*list)[i]) free((*list)[i]);
       free(*list);
       *list = NULL;
    }
 }
- 
 
-int main(int argc, char** argv)
+int 
+main(int argc, char** argv)
 {
     FILE * f;
     
@@ -45,11 +45,10 @@ int main(int argc, char** argv)
     }
 
     Hunspell *pMS = new Hunspell(argv[1], argv[2]);
-    TextParser * p = new TextParser("|${}:/_+qwertzuiopasdfghjklyxcvbnm���������QWERTZUIOPASDFGHJKLYXCVBNM���������");
+    TextParser * p = new TextParser("qwertzuiopasdfghjklyxcvbnm���������QWERTZUIOPASDFGHJKLYXCVBNM���������");
     
     char buf[MAXLNLEN];
     char * next;
-    int num = 0;
 
     while(fgets(buf,MAXLNLEN,f)) {
       p->put_line(buf);
@@ -69,61 +68,20 @@ int main(int argc, char** argv)
 	  	        free(pl[i]);
 	  	        pl[i] = r;
 	  	        gen = 1;
-	  	    } else {
-//	  	        free(pl[i]);
-//	  	        pl[i] = NULL;
 	  	    }
  	        }
 	  	if (gen) {
 		    char **pl2;
-//		    pln = uniqlist(pl, pln);
 		    int pl2n = pMS->generate(&pl2, next, pl, pln);
 		    if (pl2n) {
-//		        pl2n = uniqlist(pl2, pl2n);
-        	        char x[MAXLNLEN];
-		        char * x2 = pl2[0];
-		        num++;
-		        if (pl2n>1) {
-		            strcpy(x, "$");
-		            for (int j = 0; (j < pl2n) && (j < 5); j++) {
-		                strcat(x, pl2[j]);
-		    if (j < pln && pl[j]) {
-		    strcat(x, "{");
-		    char * p2 = x + strlen(x);
-		    for (char * p3 = pl[j]; *p3; p3++, p2++) {
-		      if (*p3 == ' ' || *p3 == '\t') *p2 = '+';
-		      else *p2 = *p3;
-		    }
-		    strcpy(p2, "}");
-		    }
-		                
-		                strcat(x, "|");
-		            }
-		            x[strlen(x) - 1] = '$';
-		            x2 = x;
-		        }
-//		        p->change_token(pl2[0]);
-		        p->change_token(x2);
-		        freelist(&pl2, pl2n);
+		        p->change_token(pl2[0]);
+		        freelst(&pl2, pl2n);
 		        // jump over the (possibly un)modified word
 		        free(next);
 		        next=p->next_token();
 		    }
-		} else {
-		    char x[MAXLNLEN];
-		    strcpy(x, next);
-		    strcat(x, "{");
-		    char * p2 = x + strlen(x);
-		    for (char * p3 = pl[0]; *p3; p3++, p2++) {
-		      if (*p3 == ' ' || *p3 == '\t') *p2 = '+';
-		      else *p2 = *p3;
-		    }
-		    strcpy(p2, "}");
-	            p->change_token(x);
-	            free(next);
-		    next=p->next_token();
 		}
-		freelist(&pl, pln);
+		freelst(&pl, pln);
 	  }
 	  free(next);
       }
diff --git a/src/tools/example.cxx b/src/tools/example.cxx
index 029c4e9..89a30ee 100644
--- a/src/tools/example.cxx
+++ b/src/tools/example.cxx
@@ -17,7 +17,7 @@ main(int argc, char** argv)
     /* first parse the command line options */
 
     if (argc < 4) {
-        fprintf(stderr,"example (multiple dictionary version.:\n"); 
+        fprintf(stderr,"example (now it works with more dictionary files):\n"); 
         fprintf(stderr,"example affix_file dictionary_file(s) file_of_words_to_check\n");
         exit(1);
     }
diff --git a/src/tools/hunspell.cxx b/src/tools/hunspell.cxx
index c699c2c..9e909c3 100644
--- a/src/tools/hunspell.cxx
+++ b/src/tools/hunspell.cxx
@@ -166,8 +166,12 @@ int checkurl = 0;  // check URLs and mail addresses
 char * ui_lang = NULL; // locale for default dic_name
 const char * ui_enc = NULL;  // locale character encoding (default for I/O)
 const char * io_enc = NULL;  // I/O character encoding
-const char * dic_enc = NULL; // dictionary encoding
-char * path = NULL;    // 
+
+#define DMAX 10              // maximal count of loaded dictionaries
+
+const char * dic_enc[DMAX];  // dictionary encoding
+char * path = NULL;
+int dmax = 0;                // dictionary count
 
 // functions
 
@@ -182,7 +186,7 @@ char * chenc(char * st, const char * enc1, const char * enc2) {
 	char * dest = text_conv;
 	iconv_t conv = iconv_open(enc2, enc1);
         if (conv == (iconv_t) -1) {
-	    fprintf(stderr, gettext("error - iconv_open: %s -> %s"), enc2, enc1);
+	    fprintf(stderr, gettext("error - iconv_open: %s -> %s\n"), enc2, enc1);
 	} else {	
 	    size_t res = iconv(conv, (ICONV_CONST char **) &source, &c1, &dest, &c2);
 	    iconv_close(conv);
@@ -196,7 +200,7 @@ char * chenc(char * st, const char * enc1, const char * enc2) {
 TextParser * get_parser(int format, char * extension, Hunspell * pMS) {
     TextParser * p = NULL;
     int io_utf8 = 0;
-    dic_enc = pMS->get_dic_encoding();
+    char * denc = pMS->get_dic_encoding();
 #ifdef HAVE_ICONV
     initialize_utf_tbl(); // also need for 8-bit tokenization
     if (io_enc) {
@@ -211,21 +215,21 @@ TextParser * get_parser(int format, char * extension, Hunspell * pMS) {
 	io_enc = ui_enc;
 	if (strcmp(ui_enc, "UTF-8") == 0) io_utf8 = 1;	
     } else {
-	io_enc = dic_enc;
-	if (strcmp(dic_enc, "UTF-8") == 0) io_utf8 = 1;
+	io_enc = denc;
+	if (strcmp(denc, "UTF-8") == 0) io_utf8 = 1;
     }
 
     if (io_utf8) {
     	wordchars_utf16 = pMS->get_wordchars_utf16(&wordchars_utf16_len);
-	if ((strcmp(dic_enc, "UTF-8") != 0) && pMS->get_wordchars()) {
+	if ((strcmp(denc, "UTF-8") != 0) && pMS->get_wordchars()) {
 	    char * wchars = (char *) pMS->get_wordchars();
 	    int wlen = strlen(wchars);
 	    size_t c1 = wlen;
 	    size_t c2 = MAXLNLEN;
 	    char * dest = text_conv;
-	    iconv_t conv = iconv_open("UTF-8", dic_enc);
+	    iconv_t conv = iconv_open("UTF-8", denc);
 	    if (conv == (iconv_t) -1) {
-	        fprintf(stderr, gettext("error - iconv_open: UTF-8 -> %s"), dic_enc);
+	        fprintf(stderr, gettext("error - iconv_open: UTF-8 -> %s\n"), denc);
 	        wordchars_utf16 = NULL;
 	        wordchars_utf16_len = 0;
 	    } else {
@@ -246,7 +250,7 @@ TextParser * get_parser(int format, char * extension, Hunspell * pMS) {
 	char u8[10];
 	iconv_t conv = iconv_open("UTF-8", io_enc);
         if (conv == (iconv_t) -1) {
-	    fprintf(stderr, gettext("error - iconv_open: UTF-8 -> %s"), io_enc);
+	    fprintf(stderr, gettext("error - iconv_open: UTF-8 -> %s\n"), io_enc);
 	} else {
 	    for (int i = 32; i < 256; i++) {
 	        size_t c1 = 1;
@@ -278,7 +282,7 @@ TextParser * get_parser(int format, char * extension, Hunspell * pMS) {
     	int len = 0;
     	char * wchars = (char *) pMS->get_wordchars();
 	if (wchars) {
-	    if ((strcmp(dic_enc, "UTF-8")==0)) {
+	    if ((strcmp(denc, "UTF-8")==0)) {
     		pMS->get_wordchars_utf16(&len);
 	    } else {
 		len = strlen(wchars);
@@ -286,9 +290,9 @@ TextParser * get_parser(int format, char * extension, Hunspell * pMS) {
 	    char * dest = letters + strlen(letters); // append wordchars
 	    size_t c1 = len + 1;
 	    size_t c2 = len + 1;
-	    iconv_t conv = iconv_open(io_enc, dic_enc);
+	    iconv_t conv = iconv_open(io_enc, denc);
 	    if (conv == (iconv_t) -1) {
-	        fprintf(stderr, gettext("error - iconv_open: %s -> %s"), io_enc, dic_enc);
+	        fprintf(stderr, gettext("error - iconv_open: %s -> %s\n"), io_enc, denc);
 	    } else {
 	        iconv(conv, (ICONV_CONST char **) &wchars, &c1, &dest, &c2);
 	        iconv_close(conv);		
@@ -297,11 +301,11 @@ TextParser * get_parser(int format, char * extension, Hunspell * pMS) {
 	if (*letters) wordchars = mystrdup(letters);
     }
 #else
-    if (strcmp(dic_enc, "UTF-8") == 0) {
+    if (strcmp(denc, "UTF-8") == 0) {
         wordchars_utf16 = pMS->get_wordchars_utf16(&wordchars_utf16_len);
 	io_utf8 = 1;
     } else {
-	char * casechars = get_casechars(dic_enc);
+	char * casechars = get_casechars(denc);
 	wordchars = (char *) pMS->get_wordchars();
 	if (wordchars) {
 	    casechars = (char *) realloc(casechars, strlen(casechars) + strlen(wordchars) + 1);
@@ -309,7 +313,7 @@ TextParser * get_parser(int format, char * extension, Hunspell * pMS) {
 	}
 	wordchars = casechars;
     }
-    io_enc = dic_enc;
+    io_enc = denc;
 #endif
 
     if (io_utf8) {
@@ -380,15 +384,16 @@ int putdic(char * word, Hunspell * pMS)
 {
     char * w;
     
-    if (((w=strstr(word + 1, "/")) == NULL)) {
-	return pMS->add(word);
+    if (((w = strstr(word + 1, "/")) == NULL)) {
+        if (*word == '*') return pMS->remove(word + 1);
+	else return pMS->add(word);
     } else {
 	char c;
 	int ret;
 	c = *w;
 	*w = '\0';
 	if (*(w+1) == '/') {
-	    ret = pMS->add_with_affix(word, w + 2); // word//pattern
+	    ret = pMS->add_with_affix(word, w + 2); // word//pattern (back comp.)
 	} else {
 	    ret = pMS->add_with_affix(word, w + 1); // word/pattern
 	}
@@ -463,7 +468,16 @@ char * scanline(char * message) {
 }
 #endif
 
-void pipe_interface(Hunspell * pMS, int format, FILE * fileid) {
+// check words in the dictionaries (and set first checked dictionary)
+int check(Hunspell ** pMS, int * d, char * token, int * info, char ** root) {
+  for (int i = 0; i < dmax; i++) {
+    if (pMS[*d]->spell(chenc(token, io_enc, dic_enc[*d]), info, root)) return 1;
+    if (++(*d) == dmax) *d = 0;
+  }
+  return 0;
+}
+
+void pipe_interface(Hunspell ** pMS, int format, FILE * fileid) {
 char buf[MAXLNLEN];
 char * buf2;
 wordlist * dicwords = NULL;
@@ -472,8 +486,9 @@ int pos;
 int bad;
 int lineno = 0;
 int terse_mode = 0;
+int d = 0;
 
-TextParser * parser = get_parser(format, NULL, pMS);
+TextParser * parser = get_parser(format, NULL, pMS[0]);
 
 if ((filter_mode == NORMAL) || (filter_mode == PIPE)) {
     if (filter_mode == NORMAL) {
@@ -482,7 +497,7 @@ if ((filter_mode == NORMAL) || (filter_mode == PIPE)) {
 	fprintf(stdout,gettext(HUNSPELL_PIPE_HEADING));
     }
     fprintf(stdout,HUNSPELL_VERSION);
-    if (pMS->get_version()) fprintf(stdout," - %s", pMS->get_version());
+    if (pMS[0]->get_version()) fprintf(stdout," - %s", pMS[0]->get_version());
     fprintf(stdout,"\n");
     fflush(stdout);
 }
@@ -510,22 +525,22 @@ nextline: while(fgets(buf, MAXLNLEN, fileid)) {
 	}
     case '-': {
 		delete parser;
-		parser = get_parser(format, NULL, pMS);
+		parser = get_parser(format, NULL, pMS[0]);
 		break;
 	}
-    case '@': { putdic(buf+1,pMS); break; }
+    case '@': { putdic(buf+1, pMS[d]); break; }
     case '*': {
         struct wordlist* i = 
 	    (struct wordlist *) malloc (sizeof(struct wordlist));
     	i->word = mystrdup(buf+1);
 	i->next = dicwords;
 	dicwords = i;
-        putdic(buf+1,pMS);
+        putdic(buf+1, pMS[d]);
         break;
     }
     case '#': {
 	if (HOME) strcpy(buf,HOME); else {
-	    fprintf(stderr, gettext("error - missing HOME variable"));
+	    fprintf(stderr, gettext("error - missing HOME variable\n"));
 	    continue;
 	}
 #ifndef WIN32
@@ -560,7 +575,7 @@ if (pos >= 0) {
 	    switch (filter_mode) {
 		
 		case BADWORD: {
-			if (! pMS->spell(chenc(token, io_enc, dic_enc))) {
+			if (!check(pMS, &d, token, NULL, NULL)) {
 				bad = 1;
 				if (! printgood) fprintf(stdout,"%s\n", token);
 			} else {
@@ -571,7 +586,7 @@ if (pos >= 0) {
 		}
 		
 		case WORDFILTER: {
-			if (! pMS->spell(chenc(buf, io_enc, dic_enc))) {
+			if (!check(pMS, &d, token, NULL, NULL)) {
 				bad = 1;
 				if (! printgood) fprintf(stdout,"%s\n", buf);
 			} else {
@@ -582,7 +597,7 @@ if (pos >= 0) {
 		}
 
 		case BADLINE: {
-			if (! pMS->spell(chenc(token, io_enc, dic_enc))) {
+			if (!check(pMS, &d, token, NULL, NULL)) {
 				bad = 1;
 			}
 			free(token);
@@ -593,21 +608,21 @@ if (pos >= 0) {
 		case AUTO:
 		case AUTO2: {
                 FILE * f = (filter_mode == AUTO) ? stderr : stdout;
-		if (! pMS->spell(chenc(token, io_enc, dic_enc))) {
+		if (!check(pMS, &d, token, NULL, NULL)) {
 			char ** wlst = NULL;
 			bad = 1;
-			int ns = pMS->suggest_auto(&wlst, chenc(token, io_enc, dic_enc));
+			int ns = pMS[d]->suggest_auto(&wlst, chenc(token, io_enc, dic_enc[d]));
 			if (ns > 0) {
-				parser->change_token(chenc(wlst[0], dic_enc, io_enc));
+				parser->change_token(chenc(wlst[0], dic_enc[d], io_enc));
 				if (filter_mode != AUTO2) {
 					fprintf(f,gettext("Line %d: %s -> "), lineno,
 					    chenc(token, io_enc, ui_enc));
-					fprintf(f,gettext("%s\n"),
-					    chenc(wlst[0], dic_enc, ui_enc));
+					fprintf(f, "%s\n",
+					    chenc(wlst[0], dic_enc[d], ui_enc));
                                         free(wlst[0]);
                                 } else {
 					fprintf(f,"%ds/%s/%s/g; # %s\n", lineno,
-					    token, chenc(wlst[0], dic_enc, io_enc), buf);
+					    token, chenc(wlst[0], dic_enc[d], io_enc), buf);
                                 }
 			}
 			for (int j = 1; j < ns; j++) {
@@ -622,14 +637,14 @@ if (pos >= 0) {
 
 		case STEM: {
                 char ** result;
-                int n = pMS->stem(&result, token);
+                int n = pMS[d]->stem(&result, token);
                 for (int i = 0; i < n; i++) {
                 	fprintf(stdout, "%s %s\n", token, result[i]);
                 	free(result[i]);
                 }
                 if (n == 0 && token[strlen(token) - 1] == '.') {
                 	token[strlen(token) - 1] = '\0';
-                        n = pMS->stem(&result, token);
+                        n = pMS[d]->stem(&result, token);
                         for (int i = 0; i < n; i++) {
                 	        fprintf(stdout, "%s %s\n", token, result[i]);
                 	        free(result[i]);
@@ -642,14 +657,14 @@ if (pos >= 0) {
 
 		case ANALYZE: {
                 char ** result;
-                int n = pMS->analyze(&result, token);
+                int n = pMS[d]->analyze(&result, token);
                 for (int i = 0; i < n; i++) {
                 	fprintf(stdout, "%s %s\n", token, result[i]);
                 	free(result[i]);
                 }
                 if (n == 0 && token[strlen(token) - 1] == '.') {
                 	token[strlen(token) - 1] = '\0';
-                        n = pMS->analyze(&result, token);
+                        n = pMS[d]->analyze(&result, token);
                         for (int i = 0; i < n; i++) {
                 	        fprintf(stdout, "%s %s\n", token, result[i]);
                 	        free(result[i]);
@@ -663,23 +678,23 @@ if (pos >= 0) {
 		case PIPE: {
 		int info;
                 char * root = NULL;
-		if (pMS->spell(chenc(token, io_enc, dic_enc), &info, &root)) {
+		if (check(pMS, &d, token, &info, &root)) {
 			if (!terse_mode) fprintf(stdout,"*\n");
 			fflush(stdout);
 		} else {
 			char ** wlst = NULL;
-			int ns = pMS->suggest(&wlst, token);
+			int ns = pMS[d]->suggest(&wlst, token);
 			if (ns == 0) {
 		    		fprintf(stdout,"# %s %d", token,
 		    		    parser->get_tokenpos() + pos);
 			} else {
 				fprintf(stdout,"& %s %d %d: ", token, ns,
 				    parser->get_tokenpos() + pos);
-				fprintf(stdout,"%s", chenc(wlst[0], dic_enc, io_enc));
+				fprintf(stdout,"%s", chenc(wlst[0], dic_enc[d], io_enc));
                                 free(wlst[0]);
 			}
 			for (int j = 1; j < ns; j++) {
-				fprintf(stdout, ", %s", chenc(wlst[j], dic_enc, io_enc));
+				fprintf(stdout, ", %s", chenc(wlst[j], dic_enc[d], io_enc));
 		    		free(wlst[j]);
 			}
 
@@ -693,29 +708,29 @@ if (pos >= 0) {
 		case NORMAL: {
 		int info;
                 char * root = NULL;
-		if (pMS->spell(chenc(token, io_enc, dic_enc), &info, &root)) {
+		if (check(pMS, &d, token, &info, &root)) {
 			if (info & SPELL_COMPOUND) {
 				fprintf(stdout,"-\n");
 			} else if (root) {
-		    		fprintf(stdout,"+ %s\n", chenc(root, dic_enc, ui_enc));
+		    		fprintf(stdout,"+ %s\n", chenc(root, dic_enc[d], ui_enc));
 			} else {
 				fprintf(stdout,"*\n");
 			}			
 			fflush(stdout);
 		} else {
 			char ** wlst = NULL;
-			int ns = pMS->suggest(&wlst, chenc(token, io_enc, dic_enc));
+			int ns = pMS[d]->suggest(&wlst, chenc(token, io_enc, dic_enc[d]));
 			if (ns == 0) {
 		    		fprintf(stdout,"# %s %d", chenc(token, io_enc, ui_enc),
 		    		    parser->get_tokenpos() + pos);
 			} else {
 				fprintf(stdout,"& %s %d %d: ", chenc(token, io_enc, ui_enc), ns,
 				    parser->get_tokenpos() + pos);
-				fprintf(stdout,"%s", chenc(wlst[0], dic_enc, ui_enc));
+				fprintf(stdout,"%s", chenc(wlst[0], dic_enc[d], ui_enc));
                                 free(wlst[0]);
 			}
 			for (int j = 1; j < ns; j++) {
-				fprintf(stdout, ", %s", chenc(wlst[j], dic_enc, ui_enc));
+				fprintf(stdout, ", %s", chenc(wlst[j], dic_enc[d], ui_enc));
 		    		free(wlst[j]);
 			}
 
@@ -865,7 +880,6 @@ void dialogscreen(TextParser * parser, char * token,
 	}
 
 	strncpyu8(line, lines[0], x * rowindex, (tokenbeg + 1) % x);
-	fprintf(stderr, "LIBA: |%s| (%s) %d %d\n", line, token, tokenbeg, tokenend);
 	mvprintw(MAXPREVLINE + 1 - beginrow, 0, "%s", line);
 	attron(A_REVERSE);    
 	printw("%s", chenc(token, io_enc, ui_enc));
@@ -880,8 +894,10 @@ void dialogscreen(TextParser * parser, char * token,
 		}
 	}
 
+/* TRANSLATORS: the capital letters are shortcuts, mark one letter similarly
+   in your translation and translate the standalone letter accordingly later */
 	mvprintw(y-3, 0, "%s\n", 
-		gettext("\n[SP] <number> R)epl A)ccept I)nsert L)ookup U)ncap Q)uit e(X)it or ? for help\n"));
+		gettext("\n[SPACE] R)epl A)ccept I)nsert U)ncap S)tem Q)uit e(X)it or ? for help\n"));
 }
 
 
@@ -926,24 +942,24 @@ int dialog(TextParser * parser, Hunspell * pMS, char * token, char * filename,
 	}
 	case '?': {
 	    clear();
-printw(gettext("Whenever a word is found that is not in the dictionary\n"));
-printw(gettext("it is printed on the first line of the screen.  If the dictionary\n"));
-printw(gettext("contains any similar words, they are listed with a number\n"));
-printw(gettext("next to each one.  You have the option of replacing the word\n"));
-printw(gettext("completely, or choosing one of the suggested words.\n"));
+printw(gettext("Whenever a word is found that is not in the dictionary\n"
+    "it is printed on the first line of the screen.  If the dictionary\n"
+    "contains any similar words, they are listed with a number\n"
+    "next to each one.  You have the option of replacing the word\n"
+    "completely, or choosing one of the suggested words.\n"));
 printw(gettext("\nCommands are:\n\n"));
 printw(gettext("R	Replace the misspelled word completely.\n"));
 printw(gettext("Space	Accept the word this time only.\n"));
 printw(gettext("A	Accept the word for the rest of this session.\n"));
 printw(gettext("I	Accept the word, and put it in your private dictionary.\n"));
 printw(gettext("U	Accept and add lowercase version to private dictionary.\n"));
-printw(gettext("O	Ask two words. First word will accepted with 2nd's affixes too.\n"));
+printw(gettext(
+"S\tAsk a stem and a model word and store them in the private dictionary.\n"
+"\tThe stem will be accepted also with the affixes of the model word.\n"
+));
 printw(gettext("0-n	Replace with one of the suggested words.\n"));
-printw(gettext("L	Look up words in system dictionary.\n"));
 printw(gettext("X	Write the rest of this file, ignoring misspellings, and start next file.\n"));
 printw(gettext("Q	Quit immediately. Asks for confirmation. Leaves file unchanged.\n"));
-printw(gettext("!	Shell escape.\n"));
-printw(gettext("^L	Redraw screen\n"));
 printw(gettext("^Z	Suspend program. Restart with fg command.\n"));
 printw(gettext("?	Show this help screen.\n"));
 printw(gettext("\n-- Type space to continue -- \n"));
@@ -954,6 +970,8 @@ printw(gettext("\n-- Type space to continue -- \n"));
 	    break;
 	}
 	default: {
+/* TRANSLATORS: translate this letter according to the shortcut letter used
+   previously in the  translation of "R)epl" before */
 	    if (c==(gettext("r"))[0]) {
 		char i[MAXLNLEN];
 		char *temp;
@@ -981,17 +999,17 @@ printw(gettext("\n-- Type space to continue -- \n"));
 		strncpy(i, temp, MAXLNLEN);
 		free(temp);
 
-		//printw(gettext("Replace with: "));
-		//char i[MAXLNLEN];
-		//getnstr(i,MAXLNLEN);
-
 		parser->change_token(i);
 		
 		return 2; // replace
 	    }
+/* TRANSLATORS: translate this letter according to the shortcut letter used
+   previously in the  translation of "U)ncap" before */
 	    if (c==(gettext("u"))[0]) {
 		*token = (pMS->get_csconv())[(*token)].clower;
 	    }
+/* TRANSLATORS: translate this letter according to the shortcut letter used
+   previously in the  translation of "U)ncap" and I)nsert before */
 	    if ((c==(gettext("u"))[0]) || (c==(gettext("i"))[0])) {
 		struct wordlist* i = 
 		    (struct wordlist *) malloc (sizeof(struct wordlist));
@@ -1001,7 +1019,7 @@ printw(gettext("\n-- Type space to continue -- \n"));
 		// save
 		strcpy(buf,HOME);
 		if (HOME) strcpy(buf,HOME); else {
-		    fprintf(stderr, gettext("error - missing HOME variable"));
+		    fprintf(stderr, gettext("error - missing HOME variable\n"));
 		    break;
 		}
 #ifndef WIN32
@@ -1021,20 +1039,21 @@ printw(gettext("\n-- Type space to continue -- \n"));
 		    break;
 		}
 	    } // no break
+/* TRANSLATORS: translate this letter according to the shortcut letter used
+   previously in the  translation of "U)ncap" and I)nsert before */
 	    if ((c==(gettext("u"))[0]) || (c==(gettext("i"))[0]) || (c==(gettext("a"))[0])) {
 		modified=1;
 		putdic(token, pMS);
 		goto ki;
 	    }
-	    if (c==(gettext("o"))[0]) {
+/* TRANSLATORS: translate this letter according to the shortcut letter used
+   previously in the  translation of "S)tem" before */
+	    if (c==(gettext("s"))[0]) {
 		modified=1;
 
-		////printw(gettext("New root word: "));
 		char w[MAXLNLEN], w2[MAXLNLEN], w3[MAXLNLEN];
 		char *temp;
 
-		////getnstr(w, MAXLNLEN);
-
 		strncpy(w, token, MAXLNLEN);
 		temp = basename(w, '-');
 		if (w < temp) {
@@ -1062,7 +1081,7 @@ printw(gettext("\n-- Type space to continue -- \n"));
 		rltext = w;
 		if (rltext && *rltext) rl_startup_hook = set_rltext;
 #endif
-		temp = readline(gettext("New root word: "));
+		temp = readline(gettext("New word (stem): "));
 
 		if ((!temp) || (temp[0] == '\0')) {
 		    free(temp);
@@ -1089,7 +1108,7 @@ printw(gettext("\n-- Type space to continue -- \n"));
 		rltext = "";
 		if (rltext && *rltext) rl_startup_hook = set_rltext;
 #endif
-		temp = readline(gettext("Pattern word: "));
+		temp = readline(gettext("Model word (a similar dictionary word): "));
 
 #ifdef HAVE_READLINE
 		initscr();
@@ -1106,10 +1125,10 @@ printw(gettext("\n-- Type space to continue -- \n"));
 		free(temp);
 
 		if (strlen(w) + strlen(w2) + 2 < MAXLNLEN) {
-			sprintf(w3, "%s//%s", w, w2);
+			sprintf(w3, "%s/%s", w, w2);
 		} else break;
 		
-		if (putdic(w3, pMS)) {
+		if (!putdic(w3, pMS)) {
 
 		    struct wordlist* i = 
 			(struct wordlist *) malloc (sizeof(struct wordlist));
@@ -1118,7 +1137,7 @@ printw(gettext("\n-- Type space to continue -- \n"));
 		    dicwords = i;
 
 		    if (strlen(w) + strlen(w2) + 4 < MAXLNLEN) {
-			    sprintf(w3, "%s-//%s-", w, w2);
+			    sprintf(w3, "%s-/%s-", w, w2);
 			    if (putdic(w3, pMS)) {
 				struct wordlist* i = 
 				    (struct wordlist *) malloc (sizeof(struct wordlist));
@@ -1131,7 +1150,7 @@ printw(gettext("\n-- Type space to continue -- \n"));
 		    		    
 		    strcpy(buf,HOME);
 		    if (HOME) strcpy(buf,HOME); else {
-			fprintf(stderr, gettext("error - missing HOME variable"));
+			fprintf(stderr, gettext("error - missing HOME variable\n"));
 			continue;
 		    }
 #ifndef WIN32
@@ -1153,19 +1172,24 @@ printw(gettext("\n-- Type space to continue -- \n"));
 		    
 		} else {
 		    dialogscreen(parser, token, filename, forbidden, wlst, ns);
-		    printw(gettext("Pattern word must be in the dictionary. Press any key!"));
+		    printw(gettext("Model word must be in the dictionary. Press any key!"));
 		    getch();
 		    dialogscreen(parser, token, filename, forbidden, wlst, ns);
 		    break;
 		}
 		goto ki;
 	    }
+/* TRANSLATORS: translate this letter according to the shortcut letter used
+   previously in the  translation of "e(X)it" before */
 	    if (c==(gettext("x"))[0]) {
 		return 1;
 	    }
+/* TRANSLATORS: translate this letter according to the shortcut letter used
+   previously in the  translation of "Q)uit" before */
 	    if (c==(gettext("q"))[0]) {
 		if (modified) {
 		    printw(gettext("Are you sure you want to throw away your changes? "));
+/* TRANSLATORS: translate this letter according to the shortcut letter y)es */
 		    if (getch()==(gettext("y"))[0]) return -1;
     		    dialogscreen(parser, token, filename, forbidden, wlst, ns);
 		    break;		    
@@ -1179,27 +1203,28 @@ printw(gettext("\n-- Type space to continue -- \n"));
     ki: return 0;
 }
 
-int interactive_line(TextParser * parser, Hunspell * pMS, char * filename, FILE * tempfile)
+int interactive_line(TextParser * parser, Hunspell ** pMS, char * filename, FILE * tempfile)
 {
 	char * token;
 	int dialogexit = 0;
         int info;
+        int d = 0;
 	while ((token=parser->next_token())) {
-		if (! pMS->spell(chenc(token, io_enc, dic_enc), &info, NULL)) {
+		if (!check(pMS, &d, token, &info, NULL)) {
 			dialogscreen(parser, token, filename, (info & SPELL_FORBIDDEN), NULL, 0); // preview
 			refresh();
 			char ** wlst = NULL;
-			int ns = pMS->suggest(&wlst, chenc(token, io_enc, dic_enc));
+			int ns = pMS[d]->suggest(&wlst, chenc(token, io_enc, dic_enc[d]));
 			if (ns==0) {
-				dialogexit = dialog(parser, pMS, token, filename, wlst, ns, (info & SPELL_FORBIDDEN));
+				dialogexit = dialog(parser, pMS[d], token, filename, wlst, ns, (info & SPELL_FORBIDDEN));
 			} else {	    
 				for (int j = 0; j < ns; j++) {
 					char d2io[MAXLNLEN];
-					strcpy(d2io, chenc(wlst[j], dic_enc, io_enc));
+					strcpy(d2io, chenc(wlst[j], dic_enc[d], io_enc));
 					wlst[j] = (char *) realloc(wlst[j], strlen(d2io) + 1);
 					strcpy(wlst[j], d2io);
 				}
-				dialogexit = dialog(parser, pMS, token, filename, wlst, ns, (info & SPELL_FORBIDDEN));
+				dialogexit = dialog(parser, pMS[d], token, filename, wlst, ns, (info & SPELL_FORBIDDEN));
 			}
 			for (int j = 0; j < ns; j++) {
 				free(wlst[j]);
@@ -1215,7 +1240,7 @@ int interactive_line(TextParser * parser, Hunspell * pMS, char * filename, FILE
 	return dialogexit;
 }
 
-void interactive_interface(Hunspell * pMS, char * filename, int format)
+void interactive_interface(Hunspell ** pMS, char * filename, int format)
 {
     char buf[MAXLNLEN];
 
@@ -1228,7 +1253,7 @@ void interactive_interface(Hunspell * pMS, char * filename, int format)
 
     TextParser * parser;
     char * extension = basename(filename, '.');
-    parser = get_parser(format, extension, pMS);
+    parser = get_parser(format, extension, pMS[0]);
 
     char * tempname = (char *) malloc(strlen(filename) + strlen(TEMPNAME) + 1);
     strcpy(tempname, filename);
@@ -1315,8 +1340,8 @@ int listdicpath(char * dir, int len) {
 	struct dirent * de;
 	while ((de = readdir(d))) {
 		int len = strlen(de->d_name);
-		if ((len > 4 && strcmp(de->d_name + len - 4, ".aff") == 0) ||
-		   (len > 7 && strcmp(de->d_name + len - 7, ".aff.hz") == 0)) {
+		if ((len > 4 && strcmp(de->d_name + len - 4, ".dic") == 0) ||
+		   (len > 7 && strcmp(de->d_name + len - 7, ".dic.hz") == 0)) {
 		    char * s = mystrdup(de->d_name);
 		    s[len - ((s[len - 1] == 'z') ? 7 : 4)] = '\0';
 		    fprintf(stderr, "%s%s\n", buf, s);
@@ -1349,17 +1374,13 @@ char * search(char * begin, char * name, char * ext) {
 
 int main(int argc, char** argv)
 {
-	Hunspell * pMS = NULL;
+	char buf[MAXLNLEN];
+	Hunspell * pMS[DMAX];
         char * key = NULL;
 	int arg_files = -1; // first filename argumentum position in argv
-
 	int format = FMT_TEXT; 
-
-	char buf[MAXLNLEN];
-	char buf2[MAXLNLEN];
-
 	int argstate = 0;
-
+	
 #ifdef ENABLE_NLS
 #ifdef HAVE_LOCALE_H
 	ui_lang = setlocale(LC_ALL, "");
@@ -1402,13 +1423,12 @@ int main(int argc, char** argv)
 		else if (strcmp(argv[i],"-P")==0) argstate=4;
 		else if ((strcmp(argv[i],"-h") == 0) || (strcmp(argv[i],"--help") == 0)) {
 			fprintf(stderr,gettext("Usage: hunspell [OPTION]... [FILE]...\n"));
-			fprintf(stderr,gettext("Check spelling of each FILE. Without FILE, check standard input.\n"));
-			fprintf(stderr,"\n");
+			fprintf(stderr,gettext("Check spelling of each FILE. Without FILE, check standard input.\n\n"));
 			fprintf(stderr,gettext("  -1\t\tcheck only first field in lines (delimiter = tabulator)\n"));
 			fprintf(stderr,gettext("  -a\t\tIspell's pipe interface\n"));
 			fprintf(stderr,gettext("  --check-url\tCheck URLs, e-mail addresses and directory paths\n"));
-			fprintf(stderr,gettext("  -d dict\tuse dict dictionary\n"));
-			fprintf(stderr,gettext("  -D\t\tshow detected path of the dictionary\n"));
+			fprintf(stderr,gettext("  -d d[,d2,...]\tuse d (d2 etc.) dictionaries\n"));
+			fprintf(stderr,gettext("  -D\t\tshow available dictionaries\n"));
 			fprintf(stderr,gettext("  -G\t\tprint only correct words or lines\n"));
 			fprintf(stderr,gettext("  -h, --help\tdisplay this help and exit\n"));
 			fprintf(stderr,gettext("  -H\t\tHTML input file format\n"));
@@ -1427,27 +1447,22 @@ int main(int argc, char** argv)
 //			fprintf(stderr,gettext("  -U\t\tautomatic correction of typical misspellings to stdout\n"));
 			fprintf(stderr,gettext("  -v, --version\tprint version number\n"));
 			fprintf(stderr,gettext("  -vv\t\tprint Ispell compatible version number\n"));
-			fprintf(stderr,gettext("  -w\t\tprint mispelled words (= lines) from one word/line input.\n"));
-			fprintf(stderr,"\n");
-			fprintf(stderr,gettext("Example: hunspell -d en_US file.txt    # interactive spelling\n"));
-			fprintf(stderr,gettext("         hunspell -l file.txt          # print misspelled words\n"));
-			fprintf(stderr,gettext("         hunspell -i utf-8 file.txt    # check UTF-8 encoded file\n"));
-			fprintf(stderr,"\n");
+			fprintf(stderr,gettext("  -w\t\tprint mispelled words (= lines) from one word/line input.\n\n"));
+			fprintf(stderr,gettext("Example: hunspell -d en_US file.txt    # interactive spelling\n"
+                                               "         hunspell -l file.txt          # print misspelled words\n"
+                                               "         hunspell -i utf-8 file.txt    # check UTF-8 encoded file\n\n"));
 			fprintf(stderr,gettext("Bug reports: http://hunspell.sourceforge.net\n";));
 			exit(0);
 	        } else if ((strcmp(argv[i],"-vv")==0) || (strcmp(argv[i],"-v")==0) || (strcmp(argv[i],"--version")==0)) {
 			fprintf(stdout,gettext(HUNSPELL_PIPE_HEADING));
 			fprintf(stdout,"\n");
                         if (strcmp(argv[i],"-vv")!=0) {
-			    fprintf(stdout,"\n");
-                            fprintf(stdout,gettext("Copyright (C) 2002-2008 L\303\241szl\303\263 N\303\251meth. License: MPL/GPL/LGPL.\n"));
-			    fprintf(stdout,"\n");
-			    fprintf(stdout,gettext("Based on OpenOffice.org's Myspell library.\n"));
-			    fprintf(stdout,gettext("Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n"));
-			    fprintf(stdout,"\n");
-			    fprintf(stdout,gettext("This is free software; see the source for copying conditions.  There is NO\n"));
-			    fprintf(stdout,gettext("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n"));
-			    fprintf(stdout,gettext("to the extent permitted by law.\n"));
+                            fprintf(stdout,gettext("\nCopyright (C) 2002-2008 L\303\241szl\303\263 N\303\251meth. License: MPL/GPL/LGPL.\n\n"
+			    "Based on OpenOffice.org's Myspell library.\n"
+			    "Myspell's copyright (C) Kevin Hendricks, 2001-2002, License: BSD.\n\n"));
+			    fprintf(stdout,gettext("This is free software; see the source for copying conditions.  There is NO\n"
+			    "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,\n"
+			    "to the extent permitted by law.\n"));
                         }
 			exit(0);
 		} else if ((strcmp(argv[i],"-a")==0)) {
@@ -1520,16 +1535,37 @@ int main(int argc, char** argv)
 
 	if (!privdicname) privdicname = mystrdup(getenv("WORDLIST"));
 
+        int diclen = strlen(dicname);
+        char * dicplus = strchr(dicname, ',');
+        if (dicplus) *dicplus = '\0';
 	char * aff = search(path, dicname, ".aff");
 	char * dic = search(path, dicname, ".dic");
 	if (aff && dic) {
 		if (showpath) {
 			fprintf(stderr, gettext("SEARCH PATH:\n%s\n"), path);
-			fprintf(stderr, gettext("AVAILABLE DICTIONARIES (full path is not mandatory for -d):\n"), path);
+			fprintf(stderr, gettext("AVAILABLE DICTIONARIES (path is not mandatory for -d option):\n"), path);
 			search(path, NULL, NULL);
 			fprintf(stderr, gettext("LOADED DICTIONARY:\n%s\n%s\n"), aff, dic);
 		}
-		pMS = new Hunspell(aff, dic, key);
+		pMS[0] = new Hunspell(aff, dic, key);
+		dic_enc[0] = pMS[0]->get_dic_encoding();
+		dmax = 1;
+		if (pMS[0] && dicplus) while (dicplus) {
+		    char * dicname2 = dicplus + 1;
+		    dicplus = strchr(dicname2, ',');
+                    if (dicplus) *dicplus = '\0';
+                    free(aff);
+                    free(dic);
+	            aff = search(path, dicname2, ".aff");
+	            dic = search(path, dicname2, ".dic");
+                    if (aff && dic) {
+                        if (dmax < DMAX) {
+                            pMS[dmax] = new Hunspell(aff, dic, key);
+                            dic_enc[dmax] = pMS[dmax]->get_dic_encoding();
+                            dmax++;
+                        } else fprintf(stderr, gettext("error - %s exceeds dictionary limit.\n"), dicname2);
+                    } else if (dic) pMS[dmax-1]->add_dic(dic);
+		}
 	} else {
 		fprintf(stderr,gettext("Can't open affix or dictionary files.\n"));
 		exit(1);
@@ -1544,15 +1580,15 @@ int main(int argc, char** argv)
 	    if (!privdicname) {
 		strcat(buf,DICBASENAME);
 		strcat(buf,basename(dicname,DIRSEPCH));
-		load_privdic(buf, pMS);
+		load_privdic(buf, pMS[0]);
 		strcpy(buf,DICBASENAME);
 		strcat(buf,basename(dicname,DIRSEPCH));
-		load_privdic(buf, pMS);
+		load_privdic(buf, pMS[0]);
 	    } else {
 		strcat(buf,privdicname);
-		load_privdic(buf, pMS);
+		load_privdic(buf, pMS[0]);
 		strcpy(buf,privdicname);
-		load_privdic(buf, pMS);	
+		load_privdic(buf, pMS[0]);	
 	    }
         }
 
@@ -1608,6 +1644,6 @@ int main(int argc, char** argv)
 #ifdef HAVE_ICONV
 	free_utf_tbl();
 #endif
-	delete pMS; // not need, because time-consuming
+        for (int i = 0; i < dmax; i++) delete pMS[i];
 	return 0;
 }
diff --git a/src/tools/hzip.c b/src/tools/hzip.c
index 7c63297..e586bcd 100644
--- a/src/tools/hzip.c
+++ b/src/tools/hzip.c
@@ -246,7 +246,7 @@ int hzip(const char * filename, char * key) {
     if (!f) return fail("hzip: %s: Permission denied\n", filename);
     tempfile = tmpfile();
     if (!tempfile) return fail("hzip: cannot create temporary file\n", NULL);
-    f2 = fopen(out, "w");
+    f2 = fopen(out, "wb");
     if (!f2) return fail("hzip: %s: Permission denied\n", out);
     for (n = 0; n < CODELEN; n++) table[n] = NULL;
     prefixcompress(f, tempfile);
diff --git a/src/win_api/Makefile.am b/src/win_api/Makefile.am
index 201e1a4..7c82de2 100644
--- a/src/win_api/Makefile.am
+++ b/src/win_api/Makefile.am
@@ -1,3 +1,3 @@
 EXTRA_DIST=hunspelldll.h hunspelldll.c hunspelldll.dev README \
-		      config.h Hunspell.rc Hunspell.sln \
+		      config.h Hunspell.rc Hunspell.sln Makefile.cygwin \
 		      hunspell.vcproj libhunspell.vcproj testparser.vcproj
diff --git a/src/win_api/Makefile.cygwin b/src/win_api/Makefile.cygwin
new file mode 100644
index 0000000..8d0d23c
--- /dev/null
+++ b/src/win_api/Makefile.cygwin
@@ -0,0 +1,145 @@
+# COMPILATION
+#
+# 1. download and install Cygwin environment for Windows with the following
+# extra packages: 
+#
+# make
+# gcc-g++ development package
+# mingw development package (for cygwin.dll free native Windows compilation)
+#  
+# 2. open a Cygwin shell, cd into this directory and run make
+#
+
+
+#CC=gcc 
+#CXX=g++
+CC=gcc -mno-cygwin -DHUNSPELL_STATIC
+CXX=g++ -mno-cygwin -DHUNSPELL_STATIC
+
+CXXFLAGS= -O2 -ansi -pedantic -I.
+#CXXFLAGS= -O2 -Wall -ansi -pedantic -I.
+
+LDFLAGS=-L.  -lhunspell
+LD2FLAGS=-L.  -lhunspell -lparser
+
+LIBS=libhunspell.a
+LIBS2=libparser.a
+
+AR=ar rc
+RANLIB=ranlib
+
+OBJ=../hunspell/
+OBJ2=../parsers/
+OBJ3=../tools/
+
+OBJS = \
+affentry.o \
+affixmgr.o \
+hashmgr.o \
+suggestmgr.o \
+csutil.o \
+phonet.o \
+hunspell.o \
+filemgr.o \
+hunzip.o
+
+OBJS2 = \
+textparser.o \
+firstparser.o \
+htmlparser.o \
+latexparser.o \
+manparser.o
+
+all: hunspell example hzip hunzip 
+
+libhunspell.a: $(OBJS)
+	$(AR) $@ $(OBJS)
+	-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
+
+libparser.a: $(OBJS2)
+	$(AR) $@ $(OBJS2)
+	-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
+
+example: $(LIBS) example.o
+	$(CXX) $(CXXFLAGS) -o $@ example.o $(LDFLAGS)
+
+hunspell: hunspellprg.o $(LIBS) $(LIBS2)
+	$(CXX) $(CXXFLAGS) -o $@ hunspellprg.o $(LDFLAGS) $(LD2FLAGS)
+
+hunzip: hunzipprg.o $(LIBS)
+	$(CXX) $(CXXFLAGS) -o $@ hunzipprg.o $(LDFLAGS)
+
+hzip: hzip.o
+	$(CXX) $(CXXFLAGS) -o $@ hzip.o $(LDFLAGS)
+
+%.o: %.cxx 
+	$(CXX) $(CXXFLAGS) -c $<
+
+clean:
+	rm -f *.exe *xx license* license* hunspell.h hzip.c *prg.cxx \
+	*.o *~ example hunspell hzip hunzip libhunspell.a libparser.a
+
+distclean:	clean
+
+hunspell.hxx:
+	ln -s $(OBJ)/*xx $(OBJ)/hunspell.h $(OBJ)/license* $(OBJ2)/*xx ./
+	ln -s  $(OBJ3)/hunspell.cxx ./hunspellprg.cxx
+	ln -s  $(OBJ3)/hunzip.cxx ./hunzipprg.cxx
+	ln -s  $(OBJ3)/example.cxx $(OBJ3)/hzip.c ./
+	make -f Makefile.cygwin
+
+depend:
+	makedepend -- $(CXXFLAGS) -- *.[ch]xx
+
+# DO NOT DELETE THIS LINE -- make depend depends on it.
+
+affentry.o: license.hunspell config.h license.myspell affentry.hxx atypes.hxx
+affentry.o: hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx w_char.hxx
+affentry.o: baseaffix.hxx affixmgr.hxx phonet.hxx csutil.hxx
+affentry.o: atypes.hxx hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx
+affentry.o: w_char.hxx baseaffix.hxx affixmgr.hxx phonet.hxx
+affixmgr.o: license.hunspell config.h license.myspell affixmgr.hxx atypes.hxx
+affixmgr.o: hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx w_char.hxx
+affixmgr.o: baseaffix.hxx phonet.hxx affentry.hxx langnum.hxx csutil.hxx
+affixmgr.o: atypes.hxx hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx
+affixmgr.o: w_char.hxx baseaffix.hxx phonet.hxx
+atypes.o: hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx w_char.hxx
+csutil.o: license.hunspell config.h license.myspell csutil.hxx w_char.hxx
+csutil.o: atypes.hxx hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx
+csutil.o: langnum.hxx utf_info.cxx
+csutil.o: w_char.hxx
+dictmgr.o: dictmgr.hxx
+example.o: hunspell.hxx hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx
+example.o: affixmgr.hxx atypes.hxx w_char.hxx baseaffix.hxx phonet.hxx
+filemgr.o: hunzip.hxx
+firstparser.o: ../hunspell/csutil.hxx w_char.hxx firstparser.hxx
+firstparser.o: textparser.hxx
+firstparser.o: textparser.hxx
+hashmgr.o: license.hunspell config.h license.myspell hashmgr.hxx htypes.hxx
+hashmgr.o: filemgr.hxx hunzip.hxx csutil.hxx w_char.hxx atypes.hxx
+hashmgr.o: htypes.hxx filemgr.hxx hunzip.hxx
+htmlparser.o: ../hunspell/csutil.hxx w_char.hxx htmlparser.hxx textparser.hxx
+htmlparser.o: textparser.hxx
+hunspell.o: license.hunspell config.h license.myspell hunspell.hxx
+hunspell.o: hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx affixmgr.hxx
+hunspell.o: atypes.hxx w_char.hxx baseaffix.hxx phonet.hxx suggestmgr.hxx
+hunspell.o: hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx affixmgr.hxx
+hunspell.o: atypes.hxx w_char.hxx baseaffix.hxx phonet.hxx suggestmgr.hxx
+hunspellprg.o: config.h hunspell.hxx hashmgr.hxx htypes.hxx filemgr.hxx
+hunspellprg.o: hunzip.hxx affixmgr.hxx atypes.hxx w_char.hxx baseaffix.hxx
+hunspellprg.o: latexparser.hxx manparser.hxx firstparser.hxx
+hunzip.o: hunzip.hxx
+latexparser.o: ../hunspell/csutil.hxx w_char.hxx latexparser.hxx
+latexparser.o: textparser.hxx
+latexparser.o: textparser.hxx
+manparser.o: ../hunspell/csutil.hxx w_char.hxx manparser.hxx textparser.hxx
+manparser.o: textparser.hxx
+phonet.o: csutil.hxx w_char.hxx phonet.hxx
+suggestmgr.o: license.hunspell config.h license.myspell suggestmgr.hxx
+suggestmgr.o: atypes.hxx hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx
+suggestmgr.o: w_char.hxx affixmgr.hxx baseaffix.hxx phonet.hxx langnum.hxx
+suggestmgr.o: atypes.hxx hashmgr.hxx htypes.hxx filemgr.hxx hunzip.hxx
+suggestmgr.o: w_char.hxx affixmgr.hxx baseaffix.hxx phonet.hxx langnum.hxx
+testparser.o: textparser.hxx htmlparser.hxx latexparser.hxx
+textparser.o: ../hunspell/csutil.hxx w_char.hxx textparser.hxx
+utf_info.o: csutil.hxx w_char.hxx
diff --git a/src/win_api/Makefile.in b/src/win_api/Makefile.in
index aedc903..f53bba4 100644
--- a/src/win_api/Makefile.in
+++ b/src/win_api/Makefile.in
@@ -183,7 +183,7 @@ target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
 EXTRA_DIST = hunspelldll.h hunspelldll.c hunspelldll.dev README \
-		      config.h Hunspell.rc Hunspell.sln \
+		      config.h Hunspell.rc Hunspell.sln Makefile.cygwin \
 		      hunspell.vcproj libhunspell.vcproj testparser.vcproj
 
 all: all-am
diff --git a/src/win_api/README b/src/win_api/README
index c916e4b..0770496 100644
--- a/src/win_api/README
+++ b/src/win_api/README
@@ -1,4 +1,18 @@
+COMPILATION (static Hunspell executable)
+
+1. download and install Cygwin environment for Windows with the following
+extra packages: 
+
+make
+gcc-g++ development package
+mingw development package (for cygwin.dll free native Windows compilation)
+ 
+2. open a Cygwin shell, cd into this directory and run make
+
+HUNSPELL DLL:
+
 hunspelldll.*: Hunspell API for Windows and Delphi
 Copyright (C) 2006 - Miha Vrhovnik (http://simail.sf.net, http://xcollect.sf.net)
 License: MPL 1.1/GPL 2.0/LGPL 2.1
 Usage: See Delphi example on Hunspell home page on Sourceforge.
+
diff --git a/src/win_api/config.h b/src/win_api/config.h
index 25a31e1..2308a56 100644
--- a/src/win_api/config.h
+++ b/src/win_api/config.h
@@ -1,215 +1,215 @@
-/* config.h.in.  Generated from configure.ac by autoheader.  */
-
-/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
-   systems. This function is required for `alloca.c' support on those systems.
-   */
-#define CRAY_STACKSEG_END 1
-
-/* Define to 1 if using `alloca.c'. */
-#define C_ALLOCA 1
-
-/* Define to 1 if translation of program messages to the user's native
-   language is requested. */
-#undef ENABLE_NLS
-
-/* Define to 1 if you have `alloca', as a function or macro. */
-#define HAVE_ALLOCA 1
-
-/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
-   */
-#define HAVE_ALLOCA_H 1
-
-/* Define to 1 if you have the <argz.h> header file. */
-#define HAVE_ARGZ_H 1
-
-/* "Define if you have the <curses.h> header" */
-#undef HAVE_CURSES_H
-
-/* Define if the GNU dcgettext() function is already present or preinstalled.
-   */
-#define HAVE_DCGETTEXT 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <error.h> header file. */
-#define HAVE_ERROR_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define to 1 if you have the `feof_unlocked' function. */
-#define HAVE_FEOF_UNLOCKED 1
-
-/* Define to 1 if you have the `fgets_unlocked' function. */
-#define HAVE_FGETS_UNLOCKED 1
-
-/* Define to 1 if you have the `getcwd' function. */
-#define HAVE_GETCWD 1
-
-/* Define to 1 if you have the `getc_unlocked' function. */
-#define HAVE_GETC_UNLOCKED 1
-
-/* Define to 1 if you have the `getegid' function. */
-#define HAVE_GETEGID 1
-
-/* Define to 1 if you have the `geteuid' function. */
-#define HAVE_GETEUID 1
-
-/* Define to 1 if you have the `getgid' function. */
-#define HAVE_GETGID 1
-
-/* Define to 1 if you have the `getpagesize' function. */
-#define HAVE_GETPAGESIZE 1
-
-/* Define if the GNU gettext() function is already present or preinstalled. */
-#define HAVE_GETTEXT 1
-
-/* Define to 1 if you have the `getuid' function. */
-#define HAVE_GETUID 1
-
-/* Define if you have the iconv() function. */
-#undef HAVE_ICONV
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
-#define HAVE_LANGINFO_CODESET 1
-
-/* Define if your <locale.h> file defines LC_MESSAGES. */
-#define HAVE_LC_MESSAGES 1
-
-/* Define to 1 if you have the <libintl.h> header file. */
-#define HAVE_LIBINTL_H 1
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <locale.h> header file. */
-#define HAVE_LOCALE_H 1
-
-/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
-   to 0 otherwise. */
-#define HAVE_MALLOC 1
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#define HAVE_MALLOC_H 1
-
-/* Define to 1 if you have the `memchr' function. */
-#define HAVE_MEMCHR 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `mempcpy' function. */
-#define HAVE_MEMPCPY 1
-
-/* Define to 1 if you have a working `mmap' system call. */
-#define HAVE_MMAP 1
-
-/* Define to 1 if you have the `munmap' function. */
-#define HAVE_MUNMAP 1
-
-/* "Define if you have the <ncursesw/curses.h> header" */
-#define HAVE_NCURSESW_H 1
-
-/* Define to 1 if you have the <nl_types.h> header file. */
-#define HAVE_NL_TYPES_H 1
-
-/* Define to 1 if you have the `putenv' function. */
-#define HAVE_PUTENV 1
-
-/* "Define if you have fancy command input editing with Readline" */
-#undef HAVE_READLINE
-
-/* Define to 1 if you have the `setenv' function. */
-#define HAVE_SETENV 1
-
-/* Define to 1 if you have the `setlocale' function. */
-#define HAVE_SETLOCALE 1
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#define HAVE_STDDEF_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the `stpcpy' function. */
-#define HAVE_STPCPY 1
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#define HAVE_STRCASECMP 1
-
-/* Define to 1 if you have the `strchr' function. */
-#define HAVE_STRCHR 1
-
-/* Define to 1 if you have the `strdup' function. */
-#define HAVE_STRDUP 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strstr' function. */
-#define HAVE_STRSTR 1
-
-/* Define to 1 if you have the `strtoul' function. */
-#define HAVE_STRTOUL 1
-
-/* Define to 1 if you have the <sys/param.h> header file. */
-#define HAVE_SYS_PARAM_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the `tsearch' function. */
-#define HAVE_TSEARCH 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the `__argz_count' function. */
-#define HAVE___ARGZ_COUNT 1
-
-/* Define to 1 if you have the `__argz_next' function. */
-#define HAVE___ARGZ_NEXT 1
-
-/* Define to 1 if you have the `__argz_stringify' function. */
-#define HAVE___ARGZ_STRINGIFY 1
-
-/* "Define if you use exterimental functions" */
-#undef HUNSPELL_EXPERIMENTAL
-
-/* "Define if you need warning messages" */
-#undef HUNSPELL_WARNING_ON
-
-/* Define as const if the declaration of iconv() needs const. */
-#define ICONV_CONST 1
-
-/* Name of package */
-#define PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.2.2"
-#define VERSION "1.2.2"
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#define CRAY_STACKSEG_END 1
+
+/* Define to 1 if using `alloca.c'. */
+#define C_ALLOCA 1
+
+/* Define to 1 if translation of program messages to the user's native
+   language is requested. */
+#undef ENABLE_NLS
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#define HAVE_ALLOCA_H 1
+
+/* Define to 1 if you have the <argz.h> header file. */
+#define HAVE_ARGZ_H 1
+
+/* "Define if you have the <curses.h> header" */
+#undef HAVE_CURSES_H
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#define HAVE_DCGETTEXT 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <error.h> header file. */
+#define HAVE_ERROR_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `feof_unlocked' function. */
+#define HAVE_FEOF_UNLOCKED 1
+
+/* Define to 1 if you have the `fgets_unlocked' function. */
+#define HAVE_FGETS_UNLOCKED 1
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getc_unlocked' function. */
+#define HAVE_GETC_UNLOCKED 1
+
+/* Define to 1 if you have the `getegid' function. */
+#define HAVE_GETEGID 1
+
+/* Define to 1 if you have the `geteuid' function. */
+#define HAVE_GETEUID 1
+
+/* Define to 1 if you have the `getgid' function. */
+#define HAVE_GETGID 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#define HAVE_GETTEXT 1
+
+/* Define to 1 if you have the `getuid' function. */
+#define HAVE_GETUID 1
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#define HAVE_LANGINFO_CODESET 1
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#define HAVE_LC_MESSAGES 1
+
+/* Define to 1 if you have the <libintl.h> header file. */
+#define HAVE_LIBINTL_H 1
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+   to 0 otherwise. */
+#define HAVE_MALLOC 1
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#define HAVE_MALLOC_H 1
+
+/* Define to 1 if you have the `memchr' function. */
+#define HAVE_MEMCHR 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mempcpy' function. */
+#define HAVE_MEMPCPY 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the `munmap' function. */
+#define HAVE_MUNMAP 1
+
+/* "Define if you have the <ncursesw/curses.h> header" */
+#define HAVE_NCURSESW_H 1
+
+/* Define to 1 if you have the <nl_types.h> header file. */
+#define HAVE_NL_TYPES_H 1
+
+/* Define to 1 if you have the `putenv' function. */
+#define HAVE_PUTENV 1
+
+/* "Define if you have fancy command input editing with Readline" */
+#undef HAVE_READLINE
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define to 1 if you have the `setlocale' function. */
+#define HAVE_SETLOCALE 1
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#define HAVE_STDDEF_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `stpcpy' function. */
+#define HAVE_STPCPY 1
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#define HAVE_STRCASECMP 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strstr' function. */
+#define HAVE_STRSTR 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the `tsearch' function. */
+#define HAVE_TSEARCH 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `__argz_count' function. */
+#define HAVE___ARGZ_COUNT 1
+
+/* Define to 1 if you have the `__argz_next' function. */
+#define HAVE___ARGZ_NEXT 1
+
+/* Define to 1 if you have the `__argz_stringify' function. */
+#define HAVE___ARGZ_STRINGIFY 1
+
+/* "Define if you use exterimental functions" */
+#undef HUNSPELL_EXPERIMENTAL
+
+/* "Define if you need warning messages" */
+#undef HUNSPELL_WARNING_ON
+
+/* Define as const if the declaration of iconv() needs const. */
+#define ICONV_CONST 1
+
+/* Name of package */
+#define PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.2.2"
+#define VERSION "1.2.2"

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-openoffice/hunspell.git


Reply to: