summaryrefslogtreecommitdiffstats
path: root/scripts/kde-spellcheck.pl
blob: 2a8974e08d1447419f3e84606ba68803757d8372 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
#! /usr/bin/env perl

# CORRECTIONS GO IN THE __DATA__ SECTION AT THE END OF THIS SCRIPT

# Checks and corrects common spelling errors in text files - code
# derived from kde-spellcheck.pl (Dirk Mueller <mueller@kde.org>)
#
# Copyright (c) 2004 Richard Evans <rich@ridas.com>
#
# License: LGPL 2.0
#
# 2004-05-14: Richard Evans <rich@ridas.com>
#
# Initial revision differs from kde-spellcheck.pl as follows:
# 
# Text file detection no longer spawns external program.
# No longer checks cwd if arguments omitted - just specify '.'
# No longer recurses through sub directories without --recurse.
# Can now check internal dictionary for mistakes using aspell.
# Changes are not made unless --make-changes is specified.
# File modification now uses an intermediate file to reduce the
# chance of data loss.
# Fixed bug that missed words with apostrophes.
# Removed the code checking for "nonword misspelling" - I don't
# believe it was doing anything useful, but please correct me
# if that's not the case!
# Corrected some dictionary entries.
# Runs much, much faster.

sub usage
{
  warn <<"EOF";

kde-spellcheck.pl [flags] filenames/directories

This script checks for, and optionally replaces, commonly misspelled words
with the correct US English equivalents. The behaviour has changed from
kde-spellcheck.pl - to check subdirectories you must specify --recurse,
omitting arguments does not check the current directory, and changes are
not made to files unless you specify --make-changes

CAUTION IS NEEDED WHEN USING THIS SCRIPT - changes are made to the original
file and are not programming language syntax aware - this is why the script
only suggests the changes to be made unless --make-changes is specified.

Hidden files, CVS directories, .desktop, and .moc files are excluded
from checking.

--check-dictionary    : Checks the internal dictionary for potential
                        spelling mistakes - requires aspell with a US
                        English dictionary, and Text::Aspell installed.

--suggest-corrections : Behaves as --check-dictionary, but also suggests
                        spelling corrections.

--recurse             : Check subdirectories recursively.
--quiet               : Disable informational output (not recommended).
--make-changes        : Displays the changes that would have been made.
--help|?              : Display this summary.

EOF

  exit;
}

use strict;
use warnings;
use Getopt::Long;
use File::Temp qw( tempfile );
use File::Copy qw( copy );

my $DICTIONARY = build_dictionary_lookup_table();

###########################################################################################
# Add options here as necessary - perldoc Getopt::Long for details on GetOptions

die "kde-spellcheck2 --help for usage\n"
      unless GetOptions ( "check-dictionary"    => \my $opt_check_dictionary,
                          "suggest-corrections" => \my $opt_suggest_corrections,
                          "quiet"               => \my $opt_quiet,
                          "make-changes"        => \my $opt_make_changes,
                          "recurse"             => \my $opt_recurse,
                          "help|?"              => \&usage );

check_dictionary($opt_suggest_corrections) if $opt_suggest_corrections or $opt_check_dictionary;

usage() unless @ARGV;

require File::MMagic;

my $MIME = File::MMagic->new;

my @dirqueue;

$opt_quiet = 0 unless $opt_make_changes;

sub info; *info = $opt_quiet ? sub {} : sub { print @_ };

for ( @ARGV )
{
  if    ( -f   ) { check_file($_)     }
  elsif ( -d _ ) { push @dirqueue, $_ }
  else           { warn "Unknown: '$_' is neither a directory or file" }
}

my $dir;

process_directory($dir) while $dir = pop @dirqueue;

$opt_make_changes or print <<EOF;

NB No changes have been made to any file. Please check the output to
see if the suggested changes are correct - if so, re-run this script
adding argument --make-changes 

EOF

###########################################################################################

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

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

  my $file_modified = 0;
  my @contents      = <$fh>;

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

  my $original;
  my $line_no = 0;
            
  for ( @contents )
  {
    $line_no++;
    $original = $_ unless $opt_make_changes;
                                                                  
    for my $word ( split /[^\w']/ )    # \W would split on apostrophe
    {
      next unless defined (my $correction = $DICTIONARY->{$word});

      $file_modified ||= 1;

      s/\b$word\b/$correction/g;
      
      info "$filename ($line_no): $word => $correction\n";
    }

    print "FROM: $original",
          "  TO: $_\n"        if !$opt_make_changes and $_ ne $original;
  }

  return unless $file_modified;
  return unless $opt_make_changes;

  info "Correcting: $filename\n";

  my ($tmp_fh, $tmp_filename) = tempfile(UNLINK => 0);

  eval
  {
    print $tmp_fh @contents or die "Write";

    $tmp_fh->flush          or die "Flush";
    $tmp_fh->seek(0, 0)     or die "Seek";
  };

  die "$@ failed on: '$tmp_filename': $!" if $@;

  copy($tmp_fh, $filename) or die "Failed to copy: $tmp_filename => $filename: $!\n", 
                                  "You can manually restore from: $tmp_filename";

  close  $tmp_fh       or warn  "Close failed on: '$tmp_filename': $!";
  unlink $tmp_filename or warn "Unlink failed on: '$tmp_filename': $!";
}


# Could be more robustly rewitten with File::Find / File::Find::Rules etc

sub process_directory
{
  my $directory = shift;

  info "Processing directory: $directory\n";

  opendir my $dh, $directory or die "Failed to read dir: '$directory': $!";

  while ( my $entry = readdir($dh) )
  {
    if ( $entry =~ /^\./        or
         $entry =~ /\.desktop$/ or
         $entry =~ /\.moc$/     or
         $entry eq "CVS" )
    {
      info "Skipping excluded file or directory: $entry\n";
      next;
    }

    my $file = "$directory/$entry";

    if ( -d $file )
    {
      push(@dirqueue, $file) if $opt_recurse;
      next;
    }

    next unless -f _;

    # First use perl's heuristic check to discard files as quickly as possible...

    unless ( -T _ )
    {
      info "Skipping binary file: $file\n";
      next;
    }

    # ...it's not always good enough though, so now check the Mimetype

    unless ( (my $type = $MIME->checktype_filename($file)) =~ /text/i )
    {
      info "Skipping $type file: $file\n";
      next;
    }

    check_file($file);
  }

  closedir $dh or warn "Failed to close dir: '$directory': $!";
}


########################################################################################################

sub check_dictionary
{
  my $suggest_corrections = shift;

  print <<EOF;

Attempting to check the internal dictionary - you must have aspell
and the perl module Text::Aspell installed for this to succeed,
otherwise the script will fail at this point.

EOF

  require Text::Aspell;

  my $speller = Text::Aspell->new or die "Failed to create Text::Aspell instance";

  # Despite the docs, set_option doesnt seem to return undef on error ...

  $speller->set_option('lang','en_US')
    or die "Text::Aspell failed to select language: 'en_US'", $speller->errstr; 

  # ... so try a very simple check

  unless ( $speller->check('color') )
  {
    warn "You dont appear to have the en_US dictionary installed - cannot check";
    exit;
  }

  print "Checking Lexicon for identical misspelling and corrections:\n";

  while ( my($key, $value) = each %$DICTIONARY )
  {
    print "\n$key" if $key eq $value;
  }

  print "\n\nChecking Lexicon for possible misspellings:\n\n";

  for my $word ( values %$DICTIONARY )
  {
    next if $speller->check($word);

    print "$word\n";
    print join(", ", $speller->suggest($word)), "\n\n" if $suggest_corrections;
  }

  print "\n";

  exit;
}


########################################################################################################

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;
}

__DATA__

#INCORRECT SPELLING    CORRECTION

aasumes                assumes
abailable              available
Abbrevation            Abbreviation
abbrevations           abbreviations
abbriviate             abbreviate
abbriviation           abbreviation
abilties               abilities
Ablolute               Absolute
abreviate              abbreviate
acces                  access
accesible              accessible
accesing               accessing
accomodate             accommodate
accross                across
Acess                  Access
achive                 achieve
achived                achieved
achiving               achieving
acknoledged            acknowledged
acknowledgement        acknowledgment
Acknowledgements       Acknowledgments
Acknowlege             Acknowledge
acommodate             accommodate
aconyms                acronyms
acording               according
acount                 account
acouting               accounting
activ                  active
actons                 actions
acually                actually
adapater               adapter
adatper                adapter
addded                 added
adddress               address
Additinoally           Additionally
additionaly            additionally
Additionaly            Additionally
additionnal            additional
additonal              additional

#INCORRECT SPELLING    CORRECTION

Addtional              Additional
aditional              additional
adminstrator           administrator
Adminstrator           Administrator
adress                 address
Adress                 Address
adressed               addressed
adresses               addresses
advertize              advertise
aesthetic              esthetic
Afganistan             Afghanistan
agressive              aggressive
Agressive              Aggressive
agressively            aggressively
alignement             alignment
alligned               aligned
Allignment             Alignment
allmost                almost
allready               already
allways                always
Allways                Always
alook                  a look
alot                   a lot
alows                  allows
alrady                 already
alreay                 already
alternativly           alternatively
ammount                amount
Ammount                Amount
analagous              analogous
analizer               analyzer
analogue               analog
analyse                analyze
analyses               analyzes
anfer                  after
angainst               against
annoucement            announcement
announcments           announcements
anwer                  answer
anwser                 answer
anwsers                answers
aplication             application
appeareance            appearance
appearence             appearance
appeares               appears
apperarance            appearance
appers                 appears

#INCORRECT SPELLING    CORRECTION

applicaiton            application
Applicalble            Applicable
appliction             application
appplication           application
approciated            appreciated
appropiate             appropriate
approriate             appropriate
approximatly           approximately
apropriate             appropriate
aquire                 acquire
aquired                acquired
arbitarily             arbitrarily
arbitary               arbitrary
Arbitary               Arbitrary
aribrary               arbitrary
aribtrarily            arbitrarily
aribtrary              arbitrary
arround                around
assosciated            associated
assosiated             associated
assoziated             associated
asssembler             assembler
assumend               assumed
asume                  assume
asynchonous            asynchronous
asyncronous            asynchronous
aticles                articles
atleast                at least
atomicly               atomically
attatchment            attachment
auhor                  author
authentification       authentication
authoratative          authoritative
authorisations         authorizations
automaticaly           automatically
Automaticaly           Automatically
automaticly            automatically
autoreplacment         autoreplacement
auxilary               auxiliary
Auxilary               Auxiliary
avaible                available
Avaible                Available
availble               available
availibility           availability
availible              available
Availible              Available
avaliable              available
avaluate               evaluate
avare                  aware
aviable                available
backrefences           backreferences
baloon                 balloon
basicly                basically

#INCORRECT SPELLING    CORRECTION

Basicly                Basically
beautifull             beautiful
becuase                because
beeep                  beep
beeing                 being
beexported             be exported
befor                  before
beggining              beginning
begining               beginning
behaviour              behavior
Behaviour              Behavior
Belarussian            Belarusian
beteen                 between
betrween               between
betweeen               between
Blueish                Bluish
bofore                 before
botton                 bottom
boudaries              boundaries
boundries              boundaries
boundry                boundary
boxs                   boxes
bruning                burning
buton                  button
Buxfixes               Bugfixes
cacheing               caching
calulation             calculation
cancelation            cancellation
cancelled              canceled
cancelling             canceling
capabilites            capabilities
caracters              characters
cataloge               catalog
Cataloge               Catalog
catalogue              catalog
catched                caught
ceneration             generation
centralised            centralized
centre                 center
Centre                 Center
changable              changeable
chaning                changing
characers              characters
charachters            characters
Characteres            Characters
charakters             characters
charater               character
Chatacter              Character
chatwindow             chat window
childs                 children
choosed                chose
choosen                chosen
Choosen                Chosen

#INCORRECT SPELLING    CORRECTION

chosing                choosing
cirumstances           circumstances
classess               classes
cloumn                 column
Coffie                 Coffee
colaboration           collaboration
collecion              collection
collumns               columns
coloum                 column
coloumn                column
colour                 color
colours                colors
colum                  column
comamnd                command
comination             combination
commense               commence
commerical             commercial
comming                coming
commited               committed
commiting              committing
Commiting              Committing
commmand               command
commuication           communication
communcation           communication
compability            compatibility
comparision            comparison
Comparision            Comparison
comparisions           comparisons
Compatability          Compatibility
compatibilty           compatibility
compatiblity           compatibility
Compedium              Compendium
compiiled              compiled
compleion              completion
completly              completely
complient              compliant
comsumer               consumer
comunication           communication
concatonated           concatenated
concurent              concurrent
configration           configuration
Configuraton           Configuration
connent                connect
connnection            connection
consecutivly           consecutively
consequtive            consecutive
constuctors            constructors
contactlist            contact list
containg               containing
contexual              contextual
contigious             contiguous
contingous             contiguous
continouos             continuous

#INCORRECT SPELLING    CORRECTION

continous              continuous
Continous              Continuous
contiribute            contribute
contoller              controller
Contorll               Control
controler              controller
controling             controlling
controll               control
conver                 convert
convient               convenient
convinience            convenience
conviniently           conveniently
coordiator             coordinator
Copys                  Copies
coresponding           corresponding
corrent                correct
correponds             corresponds
Costraints             Constraints
Coudn't                Couldn't
coursor                cursor
Coverted               Converted
coypright              copyright
cricles                circles
criticisim             criticism
cryptograhy            cryptography
Culculating            Calculating
curren                 current
currenty               currently
curteousy              courtesy
Custimize              Customize
customisation          customization
customise              customize
Customise              Customize
customised             customized
cutsom                 custom
cutt                   cut
Cutt                   Cut
datas                  data
DCOPCient              DCOPClient
deactive               deactivate
Deamon                 Daemon
debuging               debugging
Debuging               Debugging
decriptor              descriptor
defaul                 default
defered                deferred
Defininition           Definition
defintions             definitions
deleteing              deleting
Demonsrative           Demonstrative
Denstiy                Density
depencies              dependencies

#INCORRECT SPELLING    CORRECTION

dependeds              depends
dependend              dependent
dependig               depending
depricated             deprecated
derfined               defined
derivs                 derives
descide                decide
desciptor              descriptor
descryption            description
desctroyed             destroyed
desiabled              disabled
desidered              desired
desination             destination
deskop                 desktop
desription             description
Desription             Description
destiantion            destination
determiend             determined
determins              determines
detremines             determines
develloped             developed
developerss            developers
developped             developed
devided                divided
devide                 divide
diabled                disabled
diable                 disable
diaglostic             diagnostic
dialag                 dialog
dialler                dialer
Dialler                Dialer
dialling               dialing
Dialling               Dialing
dialogue               dialog
diaog                  dialog
didnt                  didn't
diffcult               difficult
differenciate          differentiate
differenly             differently
Differntiates          Differentiates
dificulty              difficulty
Difusion               Diffusion
digitised              digitized
diplayed               displayed
dirctely               directly
dirctory               directory
direcory               directory
directorys             directories
directoy               directory
disactivate            deactivate
disappers              disappears
Disbale                Disable

#INCORRECT SPELLING    CORRECTION

discontigous           discontiguous
discpline              discipline
discription            description
disppear               disappear
dissassembler          disassembler
distingush             distinguish
distribtuion           distribution
distrubutor            distributor
divizor                divisor
docucument             document
documentaiton          documentation
documentors            documenters
doens't                doesn't
doesnt                 doesn't
donnot                 do not
Donot                  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
embedabble             embeddable
embedable              embeddable
embeddabble            embeddable
embeded                embedded
emcompass              encompass
emty                   empty
encyption              encryption
enhandcements          enhancements
enles                  endless
enought                enough
entitities             entities
entrys                 entries
Entrys                 Entries
enumarated             enumerated
envirnment             environment
envirnoment            environment
enviroment             environment
environemnt            environment
environent             environment
Equador                Ecuador
equiped                equipped
equlas                 equals

#INCORRECT SPELLING    CORRECTION

errorous               erroneous
errror                 error
escriptor              descriptor
espacially             especially
espesially             especially
Evalute                Evaluate
everytime              every time
exacly                 exactly
exapmle                example
excecpt                except
execeeded              exceeded
execess                excess
exection               execution
execuable              executable
executeble             executable
exept                  except
exisiting              existing
existance              existence
exlusively             exclusively
exmaple                example
experienceing          experiencing
explicitely            explicitly
explicity              explicitly
explit                 explicit
Expresion              Expression
expresions             expressions
extented               extended
extention              extension
Extention              Extension
extentions             extensions
extesion               extension
fabilous               fabulous
falg                   flag
familar                familiar
fastes                 fastest
favourable             favorable
favour                 favor
favourite              favorite
favours                favors
featue                 feature
feeded                 fed
filsystem              filesystem
firware                firmware
fisrt                  first
fixiated               fixated
fixiate                fixate
fixiating              fixating
flaged                 flagged
flavours               flavors
focussed               focused
folllowed              followed
follwing               following
folowing               following

#INCORRECT SPELLING    CORRECTION

Folowing               Following
footnotexs             footnotes
formaly                formally
fortunatly             fortunately
foward                 forward
fragement              fragment
framesyle              framestyle
framset                frameset
fucntion               function
Fucntion               Function
fuction                function
fuctions               functions
fufill                 fulfill
fulfiling              fulfilling
fullfilled             fulfilled
funcion                function
funciton               function
functin                function
funtional              functional
funtionality           functionality
funtion                function
funtions               functions
furthur                further
gaalxies               galaxies
Gamee                  Game
gernerated             generated
ges                    goes
Ghostscipt             Ghostscript
giude                  guide
globaly                globally
goind                  going
Gostscript             Ghostscript
grapphis               graphics
greyed                 grayed
guaranted              guaranteed
guarenteed             guaranteed
guarrantee             guarantee
gziped                 gzipped
handeling              handling
harware                hardware
Harware                Hardware
hasnt                  hasn't
havn't                 haven't
heigt                  height
heigth                 height
hiddden                hidden
Hierachical            Hierarchical
highlighlighted        highlighted
highligting            highlighting
Higlighting            Highlighting
honour                 honor
honouring              honoring

#INCORRECT SPELLING    CORRECTION

honours                honors
horziontal             horizontal
hypens                 hyphens
hysical                physical
iconized               iconified
illumnating            illuminating
imaginery              imaginary
i'm                    I'm
imitatation            imitation
immedialely            immediately
immediatly             immediately
imortant               important
imperical              empirical
implemantation         implementation
implemenation          implementation
implenetation          implementation
implimention           implementation
implmentation          implementation
inactiv                inactive
incldue                include
incomming              incoming
Incomming              Incoming
incovenient            inconvenient
indeces                indices
indentical             identical
Indentification        Identification
indepedancy            independency
independant            independent
independend            independent
indetectable           undetectable
indicdate              indicate
indice                 index
indictes               indicates
infinitv               infinitive
infomation             information
informaion             information
informatation          information
informationon          information
informations           information
Inifity                Infinity
inital                 initial
initalization          initialization
initalized             initialized
initalize              initialize
Initalize              Initialize
initialisation         initialization
initialise             initialize
initialising           initializing
Initialyze             Initialize
Initilialyze           Initialize
initilization          initialization
initilize              initialize

#INCORRECT SPELLING    CORRECTION

Initilize              Initialize
innacurate             inaccurate
innacurately           inaccurately
insde                  inside
inteface               interface
interactivelly         interactively
interfer               interfere
interfrace             interface
interisting            interesting
internationalisation   internationalization
interrrupt             interrupt
interrumped            interrupted
interrups              interrupts
Interupt               Interrupt
intervall              interval
intervalls             intervals
intiailize             initialize
Intial                 Initial
intialisation          initialization
intialization          initialization
intialize              initialize
Intialize              Initialize
intializing            initializing
introdutionary         introductory
introdution            introduction
intrrupt               interrupt
intruction             instruction
invarient              invariant
invokation             invocation
Ionisation             Ionization
irrevesible            irreversible
isntance               instance
is'nt                  isn't
issueing               issuing
istory                 history
Iterface               Interface
itselfs                itself
journalised            journalized
judgement              judgment
kdelbase               kdebase
keyboad                keyboard
klicking               clicking
knowlege               knowledge
Konquerer              Konqueror
konstants              constants
kscreensave            kscreensaver
labelling              labeling
Labelling              Labeling
lauching               launching
layed                  laid
learnt                 learned
leats                  least
lenght                 length

#INCORRECT SPELLING    CORRECTION

Lenght                 Length
Licenced               Licensed
licence                license
Licence                License
Licens                 License
liset                  list
listenening            listening
listveiw               listview
litle                  little
litteral               literal
localisation           localization
losely                 loosely
maanged                managed
maching                matching
magnication            magnification
magnifcation           magnification
mailboxs               mailboxes
maillinglists          mailinglists
maintainance           maintenance
maintainence           maintenance
Malicous               Malicious
mamage                 manage
managment              management
Managment              Management
manangement            management
mannually              manually
Mantainer              Maintainer
manupulation           manipulation
marbels                marbles
matchs                 matches
maximimum              maximum
Maxium                 Maximum
mdification            modification
mdified                modified
menues                 menus
mesages                messages
messanger              messenger
messanging             messaging
Microsft               Microsoft
millimetres            millimeters
mimimum                minimum
minimise               minimize
minimising             minimizing
Minimun                Minimum
Minium                 Minimum
minumum                minimum
miscelaneous           miscellaneous
miscelanous            miscellaneous
miscellaneaous         miscellaneous
miscellanous           miscellaneous
Miscellanous           Miscellaneous
mispeled               misspelled
mispelled              misspelled

#INCORRECT SPELLING    CORRECTION

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
neccessary             necessary
necessery              necessary
nedd                   need
neet                   need
negativ                negative
negociated             negotiated
negociation            negotiation
neighbourhood          neighborhood
neighbour              neighbor
Neighbour              Neighbor
neighbours             neighbors
neogtiation            negotiation
nessecarry             necessary
nessecary              necessary
nessesary              necessary
nework                 network
newtork                network
nickanme               nickname
nonexistant            nonexistent
noone                  nobody
Noone                  No-one
normalisation          normalization
noticable              noticeable
nucleous               nucleus
obtail                 obtain
occoured               occurred
occouring              occurring
occurance              occurrence
occurances             occurrences
occured                occurred
occurence              occurrence
occurences             occurrences
occure                 occur
occuring               occurring
occurrance             occurrence
occurrances            occurrences
ocupied                occupied
offical                official
ommited                omitted

#INCORRECT SPELLING    CORRECTION

onthe                  on the
opend                  opened
optimisation           optimization
optionnal              optional
orangeish              orangish
organisational         organizational
organisation           organization
Organisation           Organization
organisations          organizations
organised              organized
organise               organize
organiser              organizer
organising             organizing
Organising             Organizing
orginate               originate
Originaly              Originally
orignal                original
oscilating             oscillating
otehr                  other
ouput                  output
outputing              outputting
overidden              overridden
overriden              overridden
overriden              overridden
ownes                  owns
pakage                 package
panelised              panelized
paramaters             parameters
parametres             parameters
parametrize            parameterize
paramter               parameter
paramters              parameters
particip               participle
particularily          particularly
paticular              particular
Pendings               Pending
percetages             percentages
Perfomance             Performance
performace             performance
Periferial             Peripheral
permision              permission
permisions             permissions
permissable            permissible
Personalizsation       Personalization
perticularly           particularly
phyiscal               physical
plaforms               platforms
plese                  please
politness              politeness
posibilities           possibilities
posibility             possibility

#INCORRECT SPELLING    CORRECTION

posible                possible
positon                position
possebilities          possibilities
possebility            possibility
possibilty             possibility
possiblity             possibility
posssibility           possibility
potentally             potentially
practise               practice
practising             practicing
preceeded              preceded
preceeding             preceding
precison               precision
preemphasised          preemphasized
Preemphasised          Preemphasized
prefered               preferred
Prefered               Preferred
preferrable            preferable
prefiously             previously
preformance            performance
prerequisits           prerequisites
presense               presence
pressentation          presentation
prgramm                program
Prining                Printing
priveleges             privileges
priviledge             privilege
priviledges            privileges
priviliges             privileges
probatility            probability
probelm                problem
proberly               properly
problmes               problems
proceedure             procedure
proctection            protection
proecss                process
progess                progress
programing             programming
programme              program
programm               program
promille               per mill
promiscous             promiscuous
promped                prompted
pronounciation         pronunciation
Pronounciation         Pronunciation
pronunce               pronounce
pronunciated           pronounced
properies              properties
Propertites            Properties
Propogate              Propagate
protoypes              prototypes

#INCORRECT SPELLING    CORRECTION

Proxys                 Proxies
psuedo                 pseudo
Psuedo                 Pseudo
pult                   desk
purposees              purposes
quatna                 quanta
queing                 queuing
querys                 queries
queueing               queuing
Queueing               Queuing
quiten                 quiet
quiting                quitting
readony                readonly
realise                realize
realy                  really
REAMDE                 README
reasonnable            reasonable
receieve               receive
recepeient             recipient
recepient              recipient
recevie                receive
recevie                receive
receving               receiving
recieved               received
recieve                receive
Recieve                Receive
reciever               receiver
recieves               receives
Recieves               Receives
recives                receives
recognised             recognized
recognise              recognize
recognises             recognizes
recomended             recommended
recommanded            recommended
recommand              recommend
recommented            recommended
redialling             redialing
reets                  resets
refered                referred
Refering               Referring
Refeshes               Refreshes
refreshs               refreshes
regarless              regardless
registaration          registration
registred              registered
Regsiter               Register
regulare               regular
regularily             regularly
Reigster               Register
reimplemenations       reimplementations

#INCORRECT SPELLING    CORRECTION

Reimplemenations       Reimplementations
releated               related
relection              reselection
relevent               relevant
relocateable           relocatable
remaing                remaining
remeber                remember
remebers               remembers
remotley               remotely
renderes               renders
renewd                 renewed
reorienting            reorientating
Repalcement            Replacement
replys                 replies
reponsibility          responsibility
requeusts              requests
resently               recently
resetted               reset
resistent              resistant
resognized             recognized
resonable              reasonable
resoure                resource
responsability         responsibility
responsivness          responsiveness
resposible             responsible
ressources             resources
retreived              retrieved
retreive               retrieve
retults                results
Rewritebles            Rewritables
richt                  right
rigths                 rights
Rigt                   Right
saftey                 safety
satified               satisfied
savely                 safely
savety                 safety
scalled                scaled
scather                scatter
scenerio               scenario
sceptical              skeptical
schduler               scheduler
Sectionning            Sectioning
selction               selection
selectde               selected
sensistve              sensitive
separed                separated
separeted              separated
sepcified              specified
seperated              separated
seperately             separately
seperate               separate
seperate               separate

#INCORRECT SPELLING    CORRECTION

Seperate               Separate
seperation             separation
seperatly              separately
seperator              separator
sequencially           sequentially
sertificate            certificate
serveral               several
setted                 set
sheduled               scheduled
sheme                  scheme
shorctuts              shortcuts
shoud                  should
shouldnt               shouldn't
Shouldnt               Shouldn't
shure                  sure
Similarily             Similarly
Similiarly             Similarly
similiar               similar
simlar                 similar
simpliest              simplest
simultaneuosly         simultaneously
skript                 script
slewin                 slewing
smaple                 sample
Sombody                Somebody
somehwat               somewhat
soure                  source
sparcely               sparsely
speakiing              speaking
specefied              specified
specfic                specific
specfied               specified
specialised            specialized
specifc                specific
specifed               specified
Specificiation         Specification
specifieing            specifying
specifing              specifying
specifiy               specify
Specifiy               Specify
speficied              specified
speling                spelling
spezifying             specifying
sprectrum              spectrum
standar                standard
Startp                 Startup
Statfeul               Stateful
statfull               stateful
storeys                storys
straighforward         straightforward
streched               stretched
Streches               Stretches
Strech                 Stretch

#INCORRECT SPELLING    CORRECTION

Striked                Stroked
stuctures              structures
styleshets             stylesheets
subcribed              subscribed
subdirectorys          subdirectories
subseqently            subsequently
Substracting           Subtracting
subystem               subsystem
succeded               succeeded
succesfully            successfully
succesful              successful
succesive              successive
succesor               successor
successfull            successful
sucessfull             successful
sucessfully            successfully
sucessfuly             successfully
sucess                 success
sufficent              sufficient
superflous             superfluous
supossed               supposed
supressed              suppressed
supress                suppress
suprised               surprised
susbstitute            substitute
swaped                 swapped
synchonization         synchronization
synchronisation        synchronization
Synchronisation        Synchronization
synchronised           synchronized
synchronises           synchronizes
synchronise            synchronize
synchronyze            synchronize
Syncronization         Synchronization
syncronized            synchronized
Syncronizes            Synchronizes
syncronize             synchronize
syncronizing           synchronizing
Syncronizing           Synchronizing
syncronous             synchronous
syncrounous            synchronous
syndrom                syndrome
syntex                 syntax
synthetizer            synthesizer
syntheziser            synthesizer
sytem                  system
talbs                  tables
talse                  false
tecnology              technology
temparary              temporary
Tempertures            Temperatures
terminatin             terminating

#INCORRECT SPELLING    CORRECTION

texured                textured
themc                  them
thet                   that
threshholds            thresholds
threshhold             threshold
throtte                throttle
throught               through
throuth                through
tiggered               triggered
tihs                   this
timditiy               timidity
Timdity                Timidity
timming                timing
tranceiver             transceiver
Tranfers               Transfers
tranfer                transfer
Tranlate               Translate
tranlation             translation
transalted             translated
transation             transaction
transfering            transferring
transferrable          transferable
transmiter             transmitter
transmiting            transmitting
transmition            transmission
transmittion           transmission
transparancy           transparency
transparant            transparent
trasfered              transferred
traveller              traveler
travelling             traveling
triggerg               triggering
triggerred             triggered
truely                 truly
trys                   tries
uglyness               ugliness
unabiguous             unambiguous
unaccesible            unaccessible
unallowed              disallowed
unamed                 unnamed
unathorized            unauthorized
uncrypted              unencrypted
Uncutt                 Uncut
underlieing            underlying
underrrun              underrun
undesireable           undesirable
undestood              understood
Undexpected            Unexpected
undoedne               undid
unecessary             unnecessary
unexperienced          inexperienced
unexperience           inexperience
unfortunatly           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
vaild                  valid
valied                 valid
valueable              valuable
varb                   verb
vays                   ways
verfication            verification
verically              vertically
versins                versions
verticaly              vertically
verticies              vertices
Veryify                Verify
vicitim                victim
visualisations         visualizations
visualisation          visualization
Visualisation          Visualization
visualise              visualize
visul                  visual
volonteer              volunteer
Volumen                Volume
Voribis                Vorbis
vrtual                 virtual
waranty                warranty
watseful               wasteful
weigth                 weight
wheter                 whether
whicn                  which
whishes                wishes
whitch                 which
whith                  with

#INCORRECT SPELLING    CORRECTION

Wiazrd                 Wizard
wich                   which
wich                   which
wierd                  weird
wieving                viewing
wiev                   view
wih                    with
willl                  will
wnat                   want
workimg                working
workstatio             workstation
woud                   would
wouldd                 would
writting               writing
Writting               Writing
yeld                   yield
yorself                yourself
you'ld                 you would
yourContryCode         yourCountryCode