#!/usr/bin/perl -w

eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}'
    if 0; # not running under some shell
###############################################################################
# Sanity check plugin for the Krazy project.                                  #
# Copyright (C) 2006-2010 by Allen Winter <winter@kde.org>                    #
# Copyright (C) 2003 by Dirk Mueller <mueller@kde.org>                        #
# Copyright (C) 2004 Richard Evans <rich@ridas.com>                           #
#                                                                             #
# All the real work in this program uses code derived from kde-spellcheck.pl  #
# written by Dirk Mueller <mueller@kde.org> and later modified by             #
# Richard Evans <rich@ridas.com>.  You may find kde-spellcheck.pl in          #
# the kdesdk module, in the scripts subdirectory.                             #
#                                                                             #
# This program is free software; you can redistribute it and/or modify        #
# it under the terms of the GNU General Public License as published by        #
# the Free Software Foundation; either version 2 of the License, or           #
# (at your option) any later version.                                         #
#                                                                             #
# This program is distributed in the hope that it will be useful,             #
# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the                #
# GNU General Public License for more details.                                #
#                                                                             #
# You should have received a copy of the GNU General Public License along     #
# with this program; if not, write to the Free Software Foundation, Inc.,     #
# 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.               #
#                                                                             #
###############################################################################

# Tests KDE source for spelling errors

# Program options:
#   --help:          print one-line help message and exit
#   --version:       print one-line version information and exit
#   --priority:      report issues of the specified priority only
#   --strict:        report issues with the specified strictness level only
#   --explain:       print an explanation with solving instructions
#   --installed      file is to be installed
#   --quiet:         suppress all output messages
#   --verbose:       print the offending content

# Exits with status=0 if test condition is not present in the source;
# else exits with the number of failures encountered.

use strict;
use FindBin qw($Bin);
use lib "$Bin/../../../../lib";
use Krazy::PreProcess;
use Krazy::Utils;

my($Prog) = "spelling";
my($Version) = "1.8";

&parseArgs();

&Help() if &helpArg();
&Version() if &versionArg();
&Explain() if &explainArg();
if ($#ARGV != 0){ &Help(); Exit 0; }

my $DICTIONARY = build_dictionary_lookup_table();
Exit &check_file($ARGV[0]);

##############################################################################
sub Help {
  print "Check for spelling errors\n";
  Exit 0 if &helpArg();
}

sub Version {
  print "$Prog, version $Version\n";
  Exit 0 if &versionArg();
}

sub Explain {
  print "Spelling errors in comments and strings should be fixed as they may show up later in API documentation, handbooks, etc.  Misspelled strings make the translator's job harder. Please use US English.\n";
  Exit 0 if &explainArg();
}

sub info{
  print @_ if (&verboseArg());
}

sub check_file
{
  my $filename = shift;
  my $fh;

  unless ( open $fh, "<", $filename )
  {
    warn "Failed to open: '$filename': $!";
    return;
  }

  my @contents      = <$fh>;

  close $fh or warn "Failed to close: '$filename': $!";

  if ( &fileType($filename) eq "c++") {
    @contents = &RemoveCondBlockC($Prog,@contents);
  }

  my $original;
  my $cnt = 0;
  my $linecnt = 0;
  my $line;
  my $lstr = "";
  for ( @contents )
  {
    $linecnt++;
    $original = $_;

    if ($original =~ m+//.*[Kk]razy:excludeall=.*$Prog+ ||
        $original =~ m+//.*[Kk]razy:skip+) {
      $cnt = 0;
      last;
    }

    next if ( fileType($filename) eq "c++" &&
              ($original =~ m+http://+ ||
               $original =~ m+https://+ ||
               $original =~ m+ftp://+)  # skip lines with urls
            );

    next if (fileType($filename) eq "desktop" &&
	     ($original =~ m+^Comment\[.*\]+ ||
	      $original =~ m+^Keywords\[.*\]+ ||
	      $original =~ m+^X-KDE-Keywords\[.*\]+ ||
	      $original =~ m+^Name\[.*\]+ ||
	      $original =~ m+^Description\[.*\]+ ||
	      $original =~ m+^GenericName\[.*\]+));

    next if (fileType($filename) eq "c++" &&
	     ($original =~ m/^\s*#\s*include/));;

    next if ($original =~ m+//.*[Kk]razy:exclude=.*$Prog+);

    $_=~s/&//g;
    my $correction;
    for my $word ( split /[^\w']/ )    # \W would split on apostrophe
    {
      if ($word eq "internet" &&
          ( $original !~ m/applications-internet/ &&
            $original !~ m/internet-mail/ ) ) {
        #FIXME: do something smarter than this to check capitalization probs.
        $correction = "Internet";
      } else {
        $word=lc($word) if ($word =~ /^[A-Z]/);
        next unless defined ($correction = $DICTIONARY->{$word});
        s/\b$word\b/$correction/g;
      }

      $cnt++;
      if ($cnt == 1) {
        $lstr = "line\#" . $linecnt . "[$word]";
      } else {
        $lstr = $lstr . "," . $linecnt . "[$word]";
      }
      info "$filename ($linecnt): $word => $correction\n";
    }
  }

  if (!$cnt) {
    print "okay\n" if (!&quietArg());
    return 0;
  } else {
    print "$lstr ($cnt)\n" if (!&quietArg());
    return $cnt;
  }
}

sub build_dictionary_lookup_table
{
  my %hash;

  while (<DATA>) {
    next if /^\s*$/ or /^\s*#/;   # Skip blank lines and comments

    next unless /^\s*"([^"]+)"\s+(.*)\s*$/ or /^\s*(\S+)\s+(.*)\s*$/;

    if ( $1 eq $2 ) {
      warn "WARNING: Ignoring identical misspelling and correction: '$1' in __DATA__ offset line $.\n";
      next;
    }

    $hash{$1} = $2;
  }

  return \%hash;
}

# permit the following words
#acknowledgement        acknowledgment
#acknowledgements       acknowledgments
#acknowlege             acknowledge
#aesthetic              esthetic
#behaviour              behavior
#cancelation            cancellation
#cancelled              canceled
#cancelling             canceling
#colour                 color
#colours                colors
#dialogue               dialog
#favourable             favorable
#favour                 favor
#favourite              favorite
#favours                favors
#honour                 honor
#honouring              honoring
#initialisation         initialization
#initialise             initialize
#initialising           initializing
#minimise               minimize
#minimising             minimizing
#neighbourhood          neighborhood
#neighbour              neighbor
#neighbour              neighbor
#neighbours             neighbors
#organisational         organizational
#organisation           organization
#organisation           organization
#organisations          organizations
#organised              organized
#organise               organize
#organiser              organizer
#organising             organizing
#organising             organizing
#recognised             recognized
#recognise              recognize
#recognises             recognizes
#centre                 center
#centre                 center
#chatwindow             chat window
#contactlist            contact list

__DATA__

#incorrect spelling    correction

aasume                 assume
aasumed                assumed
aasumes                assumes
abailable              available
abbrevation            abbreviation
abbrevations           abbreviations
abbriviate             abbreviate
abbriviated            abbreviated
abbriviates            abbreviates
abbriviation           abbreviation
abilties               abilities
ablolute               absolute
abreviate              abbreviate
abreviates             abbreviates
acces                  access
accesible              accessible
accesing               accessing
accomodate             accommodate
accomodates            accommodates
accross                across
acess                  access
achive                 achieve
achived                achieved
achives                achieves
achiving               achieving
acknoledge             acknowledge
acknoledged            acknowledged
acknoledges            acknowledges
acommodate             accommodate
acommodated            accommodated
acommodates            accommodates
aconym                 acronym
aconyms                acronyms
acording               according
acount                 account
acounted               accounted
acounting              accounting
acounts                accounts
acout                  account
acouted                accounted
acouts                 accounts
acouting               accounting
activ                  active
acton                  action
actons                 actions
acually                actually
adapat                 adapt
adapated               adapted
adapater               adapter
adapaters              adapters
adapating              adapting
adapats                adapts
adatp                  adapt
adatped                adapted
adatper                adapter
adatpers               adapters
adatping               adapting
adatps                 adapts
addded                 added
adddress               address
# Enable this one when the checker gets smarter. Currently addressbook finds a
# huge amount of false positives in C++ code -> AddressBook is a class name.
# addressbook            address book
additinoal             additional
additinoally           additionally
additionaly            additionally
additionnal            additional
additionnaly           additionally
additionnally          additionally
additonal              additional

#incorrect spelling    correction

addtionally            additionally
addtionaly             additionalyy
aditional              additional
aditionally            additionally
aditionaly             additionally
adminstrator           administrator
adminstrators          administrators
adminstrator           administrator
adminstrators          administrators
adress                 address
adressed               addressed
adresses               addresses
advertize              advertise
afganistan             afghanistan
agressive              aggressive
agressively            aggressively
aligement              alignment
alignement             alignment
allign                 align
alligned               aligned
allignment             alignment
alligns                aligns
allmost                almost
allready               already
allways                always
alook                  a look
alot                   a lot
alows                  allows
alrady                 already
alreay                 already
alternativly           alternatively
ambiguouity            ambiguity
ammount                amount
analagous              analogous
analizer               analyzer
analogue               analog
analyse                analyze
#allow analyses. because we like vandenoever :)
#analyses               analyzes
anfer                  after
angainst               against
annouced               announced
annoucement            announcement
announcments           announcements
annouces               announces
anwer                  answer
anwered                answered
anwers                 answers
anwser                 answer
anwsers                answers
apear                  appear
apearance              appearance
apeared                appeared
apears                 appears
aplication             application
aplications            applications
appeareance            appearance
appearence             appearance
appeares               appears
apperarance            appearance
appers                 appears

#incorrect spelling    correction

applicaiton            application
applicaitons           applications
applicalble            applicable
appliction             application
applictions            applications
appplication           application
appplications          applications
approciate             appreciate
approciated            appreciated
approciates            appreciates
appropiate             appropriate
approriate             appropriate
approximatly           approximately
apropriate             appropriate
aquire                 acquire
aquired                acquired
aquires                acquires
arbitarily             arbitrarily
arbitary               arbitrary
aribrary               arbitrary
aribtrarily            arbitrarily
aribtrary              arbitrary
arround                around
assosciate             associate
assosciated            associated
assosciates            associates
assosiate              associate
assosiated             associated
assosiates             associates
assoziate              associate
assoziated             associated
assoziates             associates
asssemble              assemble
asssembled             assembled
asssembler             assembler
asssembles             assembles
assumend               assumed
asume                  assume
asumed                 assumed
asumes                 assumes
asynchonous            asynchronous
asyncronous            asynchronous
asynchroneously        asynchronously
atempt                 attempt
atempts                attempts
aticle                 article
aticles                articles
atleast                at least
atomicly               atomically
attatchment            attachment
attatchments           attachments
auhor                  author
auhors                 authors
authentification       authentication
authoratative          authoritative
authorisation          authorization
authorisations         authorizations
automaticaly           automatically
automaticly            automatically
autoreplacment         autoreplacement
auxilary               auxiliary
avaible                available
availble               available
availibility           availability
availible              available
avaliable              available
avaluate               evaluate
avare                  aware
aviable                available
backrefences           backreferences
baloon                 balloon
baloons                balloons
basicly                basically

#incorrect spelling    correction

basicly                basically
beautifull             beautiful
becase                 because
becuase                because
beeep                  beep
beeing                 being
beexported             be exported
befor                  before
beggining              beginning
begining               beginning
belarussian            belarusian
beteen                 between
betrween               between
betweeen               between
blueish                bluish
bofore                 before
bosth                  both
botton                 bottom
bottons                bottoms
boudaries              boundaries
boundries              boundaries
boundry                boundary
boxs                   boxes
bruning                burning
buton                  button
butons                 buttons
buxfixes               bugfixes
cacheing               caching
calender               calendar
calulation             calculation
capabilites            capabilities
caracters              characters
cataloge               catalog
cataloges              catalogs
catalogue              catalog
catalogues             catalogs
catched                caught
ceneration             generation
centralise             centralize
centralised            centralized
changable              changeable
chaning                changing
characer               character
characers              characters
charachters            characters
charactere             character
characteres            characters
charakter              character
charakters             characters
charater               character
charaters              characters
chatacter              character
chatacters             characters
childs                 children
choosed                chose
choosen                chosen

#incorrect spelling    correction

chosing                choosing
cirumstance            circumstance
cirumstances           circumstances
classess               classes
cloumn                 column
cloumns                columns
coffie                 coffee
colaborate             collaborate
colaboration           collaboration
collecion              collection
collecions             collections
collumn                column
collumns               columns
coloum                 column
coloums                columns
coloumn                column
coloumns               columns
colum                  column
colums                 columns
comamnd                command
comamnds               commands
comination             combination
cominations            combinations
commense               commence
commerical             commercial
commerically           commercially
comming                coming
commited               committed
commiting              committing
commmand               command
commmands              commands
commuication           communication
commuications          communications
communcation           communication
communcations          communications
compability            compatibility
comparision            comparison
comparisions           comparisons
compatability          compatibility
compatibilty           compatibility
compatiblity           compatibility
compedium              compendium
compediums             compendiums
compiile               compile
compiiled              compiled
compleion              completion
completly              completely
complient              compliant
comsumer               consumer
comsumers              consumers
comunication           communication
comunications          communications
concatonate            concatenate
concatonated           concatenated
concurent              concurrent
concurently            concurrently
configration           configuration
configrations          configurations
configuraton           configuration
configuratons          configurations
connent                connect
connents               connects
connnection            connection
connnections           connections
consecutivly           consecutively
consequtive            consecutive
constuctor             constructor
constuctors            constructors
containg               containing
contexual              contextual
contigious             contiguous
contingous             contiguous
continouos             continuous

#incorrect spelling    correction

continous              continuous
continous              continuous
contiribute            contribute
contiributed           contributed
contiributes           contributes
contiributing          contributing
contoller              controller
contorll               control
contorlled             controlled
contorller             controller
contorlls              controls
controler              controller
controling             controlling
controll               control
controlls              controls
conver                 convert
convers                converts
convient               convenient
conviently             conveniently
convinience            convenience
conviniently           conveniently
coordiator             coordinator
coordiators            coordinators
copys                  copies
coresponding           corresponding
corrdinate             coordinate
corrdinates            coordinates
corrent                correct
correponds             corresponds
costraints             constraints
coudn't                couldn't
coursor                cursor
coursors               cursors
covert                 convert
coverted               converted
coverts                converts
coypright              copyright
coyprights             copyrights
cricle                 circle
cricles                circles
criticisim             criticism
criticisims            criticisms
cryptograhy            cryptography
culculate              calculate
culculated             calculated
culculating            calculating
curren                 current
currenty               currently
curteousy              courtesy
custimisable           customizable
custimisation          customization
custimise              customize
custimised             customized
custimizable           customizable
custimization          customization
custimize              customize
custimized             customized
customisation          customization
customisable           customizable
customisation          customization
customise              customize
customised             customized
cutsom                 custom
cutt                   cut
cutted                 cut
datas                  data
dcopcient              dcopclient
dcopcients             dcopclients
deactive               deactivate
deactives              deactivates
deamon                 daemon
deamons                daemons
debuging               debugging
declar                 declare
declars                declares
decriptor              descriptor
decriptors             descriptors
defaul                 default
defauls                defaults
defered                deferred
defininition           definition
defininitions          definitions
defintion              definition
defintions             definitions
deleteing              deleting
demonsrative           demonstrative
denstiy                density
depencies              dependencies
depency                dependency

#incorrect spelling    correction

dependeds              depends
dependend              dependent
dependig               depending
depricated             deprecated
derfine                define
derfined               defined
derfines               defines
derivs                 derives
descide                decide
desciptor              descriptor
desciptors             descriptors
descryption            description
descryptions           descriptions
desctroy               destroy
desctroyed             destroyed
desdination            destination
desdinations           destinations
desiable               disable
desiabled              disabled
desidere               desire
desidered              desired
desination             destination
desinations            destinations
deskop                 desktop
deskops                desktops
dekstop                desktop
dekstops               desktop
desription             description
desriptions            descriptions
destiantion            destination
destiantions           destinations
detructor              destructor
destrutor              destructor
determien              determine
determiend             determined
determiens             determines
determinated           determined
determins              determines
detremine              determine
detremined             determined
detremines             determines
devellop               develop
develloped             developed
devellops              develops
developerss            developers
developped             developed
devide                 divide
devided                divided
devides                divides
diable                 disable
diabled                disabled
diaglostic             diagnostic
dialag                 dialog
dialags                dialogs
dialler                dialer
diallers               dialers
dialling               dialing
diaog                  dialog
diaogs                 dialog
didnt                  didn't
diffcult               difficult
diffculty              difficulty
differenciate          differentiate
differenciated         differentiated
differenciates         differentiates
differenly             differently
differntiated          differentiated
differntiates          differentiates
dificult               difficult
dificulty              difficulty
difusion               diffusion
digitise               digitize
digitised              digitized
diplay                 display
diplayed               displayed
diplays                displays
dirctely               directly
dirctories             directories
dirctory               directory
direcories             directories
direcory               directory
directoies             directories
directorys             directories
directoy               directory
disactivate            deactivate
disapper               disappear
disappered             disappeared
disappers              disappears
disbale                disable
disbaled               disabled
disbales               disables

#incorrect spelling    correction

discontigous           discontiguous
discpline              discipline
discription            description
discriptions           descriptions
disppear               disappear
disppearance           disappearance
disppeared             disappeared
disppears              disappears
dissappear             disappear
dissappearance         disappearance
dissappeared           disappeared
dissappears            disappears
dissassemble           disassemble
dissassembled          disassembled
dissassembler          disassembler
dissassembles          disassembles
dissassembly           disassembly
distingush             distinguish
distingushed           distinguished
distingushes           distinguishes
distribte              distribute
distribtes             distributes
distribtuion           distribution
distribtuions          distributions
distrubutor            distributor
distrubutors           distributors
divizor                divisor
divizors               divisors
docucument             document
docucuments            documents
documentaiton          documentation
documentors            documenters
doens't                doesn't
doesnt                 doesn't
donnot                 do not
dont                   don't
dont't                 don't
dou                    do
draging                dragging
dreamt                 dreamed
droped                 dropped
duotes                 quotes
durring                during
dynamicly              dynamically
eallocate              deallocate
eample                 example
editory                editor
efficent               efficient
efficently             efficiently
effiency               efficiency
elemt                  element
elemts                 elements
embedabble             embeddable
embedable              embeddable
embeddabble            embeddable
embeded                embedded
emcompass              encompass
emited                 emitted
emticon                emoticon
emtiness               emptiness
emty                   empty
encyption              encryption
enhandcement           enhancement
enhandcements          enhancements
enles                  endless
enought                enough
entitities             entities
entriess               entries
entrys                 entries
enumarated             enumerated
envirnment             environment
envirnmental           environmental
envirnments            environments
envirnoment            environment
envirnomental          environmental
envirnoments           environments
enviroment             environment
enviromental           environmental
enviroments            environments
environemnt            environment
environemntal          environmental
environemnts           environments
environent             environment
environental           environmental
environents            environments
equador                ecuador
equiped                equipped
equlas                 equals

#incorrect spelling    correction

errorous               erroneous
errror                 error
errrors                errors
escriptor              descriptor
escriptors             descriptors
espacially             especially
espesially             especially
evalute                evaluate
evaluted               evaluated
evalutes               evaluates
evaluting              evaluating
everytime              every time
exacly                 exactly
exapmle                example
exapmles               examples
excecpt                except
execeede               exceede
execeeded              exceeded
execeedes              exceedes
execess                excess
exection               execution
exections              executions
execuable              executable
execuables             executables
executeble             executable
executebles            executables
exept                  except
exisiting              existing
existance              existence
existant               existent
exlusive               exclusive
exlusively             exclusively
exmaple                example
exmaples               examples
experienceing          experiencing
expet                  expect
expeted                expected
expets                 expects
explicitely            explicitly
explicity              explicitly
explit                 explicit
expresion              expression
expresions             expressions
extented               extended
extention              extension
extention              extension
extentions             extensions
extesion               extension
fabilous               fabulous
falg                   flag
falgs                  flags
familar                familiar
familarity             familiarity
fastes                 fastest
featue                 feature
featues                features
feeded                 fed
filsystem              filesystem
filsystems             filesystems
finded                 found
firware                firmware
firts                  first
fisrt                  first
fixiated               fixated
fixiate                fixate
fixiating              fixating
flaged                 flagged
flavours               flavors
focussed               focused
folllowed              followed
folllowing             following
follwed                followed
follwing               following
folowing               following

#incorrect spelling    correction

footnotexs             footnotes
formaly                formally
fortunally             fortunately
fortunantly            fortunately
fortunatly             fortunately
foward                 forward
fowards                forward
fragement              fragment
fragements             fragment
framesyle              framestyle
framesyles             framestyles
framset                frameset
framsets               framesets
fucntion               function
fucntions              functions
fuction                function
fuctions               functions
fufil                  fulfill
fufiled                fulfilled
fufill                 fulfill
fufilled               fulfilled
fufills                fulfills
fufils                 fulfills
fulfiling              fulfilling
fullfiled              fulfilled
fullfilled             fulfilled
fullfills              fulfills
fullfils               fulfills
funcion                function
funcions               functions
funciton               function
funcitons              function
functin                function
functins               function
funtional              functional
funtionality           functionality
funtion                function
funtions               functions
furthur                further
gaalxies               galaxies
gamee                  game
gernerate              generate
gernerated             generated
gernerates             generates
ges                    goes
ghostscipt             ghostscript
giude                  guide
giuded                 guided
giudes                 guides
globaly                globally
goind                  going
gostscript             ghostscript
gramatics              grammar
grapphis               graphics
greyed                 grayed
guaranted              guaranteed
guarenteed             guaranteed
guarrantee             guarantee
guarranteed            guaranteed
gziped                 gzipped
handeling              handling
harware                hardware
hasnt                  hasn't
havn't                 haven't
heigt                  height
heigts                 heights
heigth                 height
heigths                heights
hiddden                hidden
hierachical            hierarchical
hierachically          hierarchically
highlighlight          highlight
highlighlighted        highlighted
highligting            highlighting
higlighting            highlighting
hirarchies             hierarchies
hirarchy               hierarchy

#incorrect spelling    correction

honours                honors
horziontal             horizontal
horziontally           horizontally
hypen                  hyphen
hypens                 hyphens
hysical                physical
hysically              physically
iconize                iconifiy
iconized               iconified
illumnate              illuminate
illumnating            illuminating
imaginery              imaginary
imitatation            imitation
imitatations           imitations
immedialely            immediately
immediatly             immediately
imortant               important
imperical              empirical
implemantation         implementation
implemantations        implementations
implemenation          implementation
implemenations         implementations
implenetation          implementation
implenetations         implementations
implimention           implementation
implimentions          implementations
implmentation          implementation
implmentations         implementations
inactiv                inactive
incldue                include
incldued               included
incldues               includes
incomme                income
incomming              incoming
incovenient            inconvenient
incoveniently          inconveniently
indeces                indices
indentical             identical
indentification        identification
indentifications       identifications
indepedancy            independency
independant            independent
independend            independent
indetectable           undetectable
indicdate              indicate
indicdated             indicated
indicdates             indicates
indice                 index
indictes               indicates
infinitv               infinitive
infomation             information
informa                inform
informaion             information
informatation          information
informationon          information
informations           information
infos                  information
inifity                infinity
inital                 initial
initally               initially
initalization          initialization
initalize              initialize
initalized             initialized
initalizes             initializes
initialyze             initialize
initialyzed            initialized
initialyzes            initializes
initilialyze           initialize
initilialyzed          initialized
initilialyzes          initializes
initilization          initialization
initilizations         initializations
initilize              initialize
initilized             initialized

#incorrect spelling    correction

initilizes             initializes
innacurate             inaccurate
innacurately           inaccurately
insde                  inside
inteface               interface
intefaces              interfaces
interactivelly         interactively
interfer               interfere
interfrace             interface
interisting            interesting
interistingly          interestingly
internationalisation   internationalization
internationalisations  internationalizations
interrrupt             interrupt
interrrupts            interrupts
interrumped            interrupted
interrups              interrupts
interupt               interrupt
interupted             interrupted
interupts              interrupts
intervall              interval
intervalls             intervals
intiailize             initialize
intiailized            initialized
intiailizes            initializes
intial                 initial
intialisation          initialization
intialisations         initializations
intialization          initialization
intializations         initializations
intialize              initialize
intialize              initialize
intializing            initializing
introdutionary         introductory
introdution            introduction
introdutions           introductions
intrrupt               interrupt
intrrupted             interrupted
intrrupts              interrupts
intruction             instruction
intructions            instructions
invarient              invariant
invarients             invariants
invocate               invoke
invoce                 invoke
invoced                invoked
invokate               invoke
invokation             invocation
invokations            invocations
ionisation             ionization
ionisations            ionizations
irrevesible            irreversible
isntance               instance
isntances              instances
is'nt                  isn't
issueing               issuing
istories               histories
istory                 history
itterate               iterate
itterates              iterates
itterator              iterator
itterators             iterators
iterface               interface
iterfaces              interfaces
itselfs                itself
journalised            journalized
judgement              judgment
judgements             judgments
kdelbase               kdebase
keyboad                keyboard
keyboads               keyboards
klicking               clicking
knowlege               knowledge
konquerer              konqueror
konstant               constant
konstants              constants
kscreensave            kscreensaver
labell                 label
labelling              labeling
langauge               language
lauch                  launch
lauching               launching
layed                  laid
leace                  lease
learnt                 learned
leats                  least
lenght                 length

#incorrect spelling    correction

licence                license
licenced               licensed
licences               licenses
licens                 license
liset                  list
listenening            listening
listveiw               listview
litle                  little
litteral               literal
litterally             literally
localisation           localization
localisations          localizations
localy                 locally
looged                 logged
losely                 loosely
maange                 manage
maanged                managed
maanges                manages
maching                matching
magnication            magnification
magnifcation           magnification
mailboxs               mailboxes
maillinglist           mailinglist
maillinglists          mailinglists
maintainance           maintenance
maintainence           maintenance
malicous               malicious
malicousness           maliciousness
mamage                 manage
mamagement             management
managment              management
manangement            management
mannual                manual
mannually              manually
mantainer              maintainer
mantainers             maintainers
mantainership          maintainership
manupulation           manipulation
manupulations          manipulations
marbels                marbles
matchs                 matches
maximimum              maximum
maxium                 maximum
mdification            modification
mdifications           modifications
mdified                modified
mdify                  modify
menues                 menus
mesage                 message
mesages                messages
messanger              messenger
messangers             messengers
messanging             messaging
messenging             messaging
microsft               microsoft
millimetres            millimeters
mimimum                minimum
minimun                minimum
minium                 minimum
minumum                minimum
miscelaneous           miscellaneous
miscelanous            miscellaneous
miscellaneaous         miscellaneous
miscellanous           miscellaneous
miscellanous           miscellaneous
mispeled               misspelled
mispelled              misspelled

#incorrect spelling    correction

misteries              mysteries
mistery                mystery
modifes                modifies
modifing               modifying
modul                  module
mosue                  mouse
mozzila                mozilla
mssing                 missing
mulitimedia            multimedia
mulitple               multiple
multible               multiple
multipe                multiple
multy                  multi
mutiple                multiple
neccesary              necessary
neccesarily            necessarily
neccessary             necessary
neccessarily           necessarily
neccessities           necessities
neccessity             necessity
necessery              necessary
necesserily            necessarily
nedd                   need
neet                   need
negativ                negative
negociated             negotiated
negociation            negotiation
neogtiation            negotiation
nessecarrily           necessarily
nessecarry             necessary
nessecary              necessary
nessecarily            necessarily
nessesary              necessary
nessesarily            necessarily
nework                 network
neworked               networked
neworking              networking
neworks                networks
newtork                network
newtorked              networked
newtorking             networking
newtorks               networks
nickanme               nickname
nickanmes              nicknames
nonexistant            nonexistent
noone                  nobody
noone                  no-one
normalisation          normalization
normalisations         normalizations
noticable              noticeable
nucleous               nucleus
obtail                 obtain
obtails                obtains
occoured               occurred
occourence             occurrence
occourences            occurrences
occouring              occurring
occurance              occurrence
occurances             occurrences
occured                occurred
occurence              occurrence
occurences             occurrences
occure                 occur
occuring               occurring
occurrance             occurrence
occurrances            occurrences
ocupied                occupied
offical                official
offically              officially
ommit                  omit
ommited                omitted

#incorrect spelling    correction

onthe                  on the
opend                  opened
optimisation           optimization
optimisations          optimizations
optimise               optimize
optionnal              optional
optionnally            optionally
orangeish              orangish
orginate               originate
orginated              originated
orginates              originates
orginating             originating
originaly              originally
orignal                original
orignally              original
oscilate               oscillate
oscilated              oscillated
oscilates              oscillates
oscilating             oscillating
otehr                  other
otehrs                 others
ouput                  output
ouputs                 outputs
ourselfes              ourselves
outputing              outputting
overidden              overridden
overiden               overridden
overriden              overridden
ownes                  owns
pakage                 package
pakages                packages
panelised              panelized
paramater              parameter
paramaters             parameters
parametre              parameter
parametres             parameters
paramter               parameter
paramters              parameters
particip               participle
particularily          particularly
paticular              particular
pendings               pending
percentate             percentage
percentates            percentages
percetage              percentage
percetages             percentages
perfomance             performance
performace             performance
periferial             peripheral
periferially           peripherally
permision              permission
permisions             permissions
permissable            permissible
personalizsation       personalization
perticular             particular
perticularly           particularly
phyiscal               physical
phyiscally             physically
plaform                platform
plaforms               platforms
plese                  please
poer                   power
poers                  powers
politness              politeness
posibilities           possibilities
posibility             possibility

#incorrect spelling    correction

porgram                program
porgrams               programs
posible                possible
positon                position
positons               positions
possebilities          possibilities
possebility            possibility
possibilty             possibility
possiblity             possibility
posssibility           possibility
potental               potential
potentally             potentially
practise               practice
practising             practicing
preceede               precede
preceeded              preceded
preceedes              precedes
preceeding             preceding
precison               precision
precisons              precisions
preemphasised          preemphasized
preemphasised          preemphasized
prefere                prefer
prefered               preferred
preferrable            preferable
preferrably            preferably
prefious               previous
prefiously             previously
preformance            performance
prerequisits           prerequisites
presense               presence
pressentation          presentation
pressentations         presentations
prgramm                program
prgramms               programs
prining                printing
privelege              privilege
priveleges             privileges
priviledge             privilege
priviledges            privileges
privilige              privilege
priviliges             privileges
probatilities          probabilities
probatility            probability
probelm                problem
probelms               problems
proberly               properly
problme                problem
problmes               problems
proceedure             procedure
proceedures            procedures
proctection            protection
proctections           protections
proecss                process
proecsses              processes
progess                progress
progession             progression
programing             programming
programme              program
programmes             programs
programm               program
programms              programs
promille               per mill
promiscous             promiscuous
promiscousness         promiscuousness
promped                prompted
pronounciation         pronunciation
pronounciations        pronunciations
pronunce               pronounce
pronunced              pronounced
pronunces              pronounces
pronunciated           pronounced
properies              properties
propertites            properties
propogate              propagate
propogated             propagated
propogates             propagates
protoype               prototype
protoypes              prototypes

#incorrect spelling    correction

proxys                 proxies
psuedo                 pseudo
pult                   desk
purposee               purpose
purposees              purposes
purpouse               purpose
purpouses              purposes
quatna                 quanta
queing                 queuing
querys                 queries
quiten                 quiet
quiting                quitting
readony                readonly
realise                realize
realised               realized
realises               realizes
realy                  really
reamde                 readme
reasonnable            reasonable
reasonnably            reasonably
receieve               receive
receieved              received
receieves              receives
recepeient             recipient
recepeients            recipients
recepient              recipient
recepients             recipients
recevie                receive
recevied               received
recevier               receiver
recevies               receives
receving               receiving
recieve                receive
recieved               received
reciever               receiver
recieves               receives
recive                 receive
recived                received
reciver                receiver
recives                receives
recomend               recommend
recomended             recommended
recommand              recommend
recommanded            recommended
recomment              recommend
recommented            recommended
redialling             redialing
reets                  resets
refered                referred
refering               referring
refesh                 refresh
refeshes               refreshes
refreshs               refreshes
regarless              regardless
registaration          registration
registarations         registrations
registred              registered
registed               registered
regsiter               register
regsiters              registers
regulare               regular
regularily             regularly
reigster               register
reigsters              registers
reimplemenation        reimplementation

#incorrect spelling    correction

reimplemenations       reimplementations
releate                relate
releated               related
relection              reselection
relections             reselections
relevent               relevant
relocateable           relocatable
remaing                remaining
remeber                remember
remebers               remembers
remotley               remotely
renderes               renders
renewd                 renewed
reorienting            reorientating
repalcement            replacement
repalcements           replacements
replys                 replies
reponsibilities        responsibilities
reponsibility          responsibility
requeust               request
requeusted             requested
requeuster             requester
requeusting            requesting
requeusts              requests
requeriment            requirement
requeriments           requirements
resently               recently
resetted               reset
resistent              resistant
resognize              recognize
resognized             recognized
resonable              reasonable
resonably              reasonably
resoure                resource
resoures               resources
responsability         responsibility
responsivness          responsiveness
resport                report
resported              reported
resports               reports
resposible             responsible
resposibly             responsibly
ressource              resource
ressources             resources
ressoure               resource
ressoures              resources
retreive               retrieve
retreived              retrieved
retreives              retrieves
retult                 result
retults                results
rewriteble             rewritable
rewritebles            rewritables
richt                  right
rigths                 rights
rigt                   right
saftey                 safety
satified               satisfied
savely                 safely
savety                 safety
scalled                scaled
scather                scatter
scathers               scatters
scenerio               scenario
scenerios              scenarios
sceptical              skeptical
schduler               scheduler
schdulers              schedulers
sectionning            sectioning
selction               selection
selctions              selections
selectde               selected
sensistve              sensitive
separed                separated
separete               separate
separeted              separated
sepcified              specified
sepcify                specify
seperate               separate
seperated              separated
seperates              separates
seperately             separately

#incorrect spelling    correction

seperation             separation
seperations            separations
seperatly              separately
seperator              separator
seperators             separators
sequencial             sequential
sequencially           sequentially
sertificate            certificate
sertificated           certificated
sertificates           certificates
serveral               several
setted                 set
sheduled               scheduled
sheme                  scheme
shemes                 schemes
shorctut               shortcut
shorctuts              shortcuts
shoud                  should
shouldnt               shouldn't
shouldnt               shouldn't
shure                  sure
similarily             similarly
similiarly             similarly
similiar               similar
simlar                 similar
simpliest              simplest
simultaneuos           simultaneous
simultaneuosly         simultaneously
skript                 script
skripts                scripts
slewin                 slewing
smaple                 sample
smaples                samples
sombody                somebody
somehwat               somewhat
soure                  source
soures                 sources
sparcely               sparsely
speakiing              speaking
specefied              specified
specfic                specific
specfied               specified
specialise             specialize
specialised            specialized
specialises            specializes
specifc                specific
specifed               specified
specifes               specifies
specificiation         specification
specificiations        specifications
specifieing            specifying
specifing              specifying
specifiy               specify
speficied              specified
speling                spelling
spezify                specify
spezifying             specifying
splitted               split
sprectra               spectra
sprectrum              spectrum
standar                standard
standars               standards
startp                 startup
statfeul               stateful
statfull               stateful
storey                 story
storeys                storys
straighforward         straightforward
strech                 stretch
streched               stretched
streches               stretches

#incorrect spelling    correction

striked                stroked
stucked                stuck
stucture               structure
stuctures              structures
styleshet              stylesheet
styleshets             stylesheets
subcribe               subscribe
subcribed              subscribed
subcriber              subscriber
subcribes              subscribes
subdirectorys          subdirectories
subseqently            subsequently
substract              subtract
substracting           subtracting
substraction           subtraction
substractions          subtractions
subystem               subsystem
subystems              subsystems
succed                 succeed
succeded               succeeded
succeds                succeeds
succesfully            successfully
succesful              successful
succesfuly             successfully
succesive              successive
succesively            successively
succesor               successor
succesors              successors
successfull            successful
sucessfull             successful
sucessfully            successfully
sucessfuly             successfully
sucess                 success
sucesses               successes
sufficent              sufficient
sufficently            sufficiently
superflous             superfluous
suposse                suppose
supossed               supposed
supress                suppress
supressed              suppressed
supresses              suppresses
suprise                surprise
suprised               surprised
suprises               surprises
susbstitute            substitute
susbstituted           substituted
susbstitutes           substitutes
swaped                 swapped
synchonization         synchronization
synchonizations        synchronizations
synchroneously         synchronously
synchronisation        synchronization
synchronisations       synchronizations
synchronisation        synchronization
synchronitation        synchronization
synchronisations       synchronizations
synchronised           synchronized
synchronises           synchronizes
synchronise            synchronize
synchronyze            synchronize
syncronization         synchronization
syncronized            synchronized
syncronizes            synchronizes
syncronize             synchronize
syncronizing           synchronizing
syncronous             synchronous
syncrounous            synchronous
syndrom                syndrome
syndroms               syndromes
syntex                 syntax
synthetizer            synthesizer
synthetizers           synthesizers
syntheziser            synthesizer
synthezisers           synthesizers
sytem                  system
sytems                 systems
talbs                  tables
talse                  false
targget                target
tartget                target
tecnologies            technologies
tecnology              technology
tempararily            temporarily
temparary              temporary
temperture             temperature
tempertures            temperatures
terminatin             terminating

#incorrect spelling    correction

texure                 texture
texured                textured
texures                textures
themc                  them
thet                   that
threshhold             threshold
threshholds            thresholds
throtte                throttle
throttes               throttles
throught               through
throuth                through
tiggered               triggered
tihs                   this
timditiy               timidity
timdity                timidity
timming                timing
tranceiver             transceiver
tranceivers            transceivers
tranfer                transfer
tranfers               transfers
tranlate               translate
tranlated              translated
tranlates              translates
tranlation             translation
tranlations            translations
transalte              translate
transalted             translated
transaltes             translates
transation             transaction
transations            transactions
tranisition            transition
tranisiton             transition
transfered             transferred
transfering            transferring
transferrable          transferable
transmiter             transmitter
transmiterd            transmitterd
transmiters            transmitters
transmiting            transmitting
transmition            transmission
transmitions           transmissions
transmittion           transmission
transmittions          transmissions
transparancy           transparency
transparant            transparent
trasfer                transfer
trasfered              transferred
trasfers               transfers
traveller              traveler
travellers             travelers
travelling             traveling
trhee                  three
triggerg               triggering
triggerred             triggered
truely                 truly
trys                   tries
typess                 types
uglyness               ugliness
unabiguous             unambiguous
unabiguousness         unambiguousness
unaccesible            unaccessible
unallowed              disallowed
unamed                 unnamed
unathorized            unauthorized
uncrypted              unencrypted
uncutt                 uncut
underlieing            underlying
underrrun              underrun
underrruns             underruns
understandement        understanding
undesireable           undesirable
undestood              understood
undexpected            unexpected
undoedne               undid
unecessarily           unnecessarily
unecessary             unnecessary
unexperienced          inexperienced
unexperience           inexperience
unfortunally           unfortunately
unfortunantly          unfortunately

#incorrect spelling    correction

unfortunatly           unfortunately
uniq                   unique
unitialized            uninitialized
unkown                 unknown
unmoveable             unmovable
unneccessary           unnecessary
unneccessay            unnecessary
unsellectected         unselected
unsuccesful            unsuccessful
unuseable              unusable
unusuable              unusable
unvailable             unavailable
uploades               uploads
upppercase             uppercase
usally                 usually
usefull                useful
usere                  user
usuable                usable
usuallly               usually
usualy                 usually
utilisation            utilization
utilisations           utilizations
vaild                  valid
valied                 valid
valueable              valuable
varb                   verb
vay                    way
vays                   ways
verfication            verification
verfications           verifications
verically              vertically
versin                 version
versins                versions
verticaly              vertically
verticies              vertices
veryify                verify
vicitim                victim
vicitims               victims
visiblity              visibility
visualisation          visualization
visualisations         visualizations
visualise              visualize
visul                  visual
volonteer              volunteer
volonteering           volunteering
volonteers             volunteers
volumen                volume
voribis                vorbis
vrtual                 virtual
waranties              warranties
waranty                warranty
wast                   waste
wastefull              wasteful
wastefuly              wastefully
wats                   waste
watse                  waste
watseful               wasteful
watsefull              wasteful
watsefully             wastefully
weigth                 weight
weigths                weights
wether                 whether
wheter                 whether
whicn                  which
whish                  wish
whishes                wishes
whitch                 which
whith                  with
whithin                within
whitin                 within

#incorrect spelling    correction

wiazrd                 wizard
wiazrds                wizards
wich                   which
wierd                  weird
wieving                viewing
wiev                   view
wievs                  view
wih                    with
willl                  will
withing                within
wnat                   want
workimg                working
workin                 working
workstatio             workstation
workstatios            workstation
woud                   would
wouldd                 would
writting               writing
yeld                   yield
yesturday              yesterday
yorself                yourself
you'ld                 you would
yourcontrycode         yourcountrycode
