├── .gitignore
├── LICENSE
├── MANIFEST.in
├── README.md
├── SyntaxAutoFix
├── __init__.py
├── __main__.py
├── config.ini
├── stats-gui.py
├── syntaxautofix.py
├── utils
│ ├── __init__.py
│ └── data_handlers.py
└── words
│ ├── en.json
│ ├── es.json
│ ├── fr.json
│ └── it.json
├── config-sample.ini
├── csvtoterms.py
├── launch.py
├── manageterms-gui.py
├── manageterms.ui
├── setup.py
├── ui_manageterms.py
├── upload.sh
└── validateterms.py
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Created by https://www.gitignore.io/api/python
3 |
4 | ### Python ###
5 | # Byte-compiled / optimized / DLL files
6 | __pycache__/
7 | *.py[cod]
8 | *$py.class
9 |
10 | # C extensions
11 | *.so
12 |
13 | # Distribution / packaging
14 | .Python
15 | build/
16 | develop-eggs/
17 | dist/
18 | downloads/
19 | eggs/
20 | .eggs/
21 | lib/
22 | lib64/
23 | parts/
24 | sdist/
25 | var/
26 | wheels/
27 | *.egg-info/
28 | .installed.cfg
29 | *.egg
30 | MANIFEST
31 |
32 | # PyInstaller
33 | # Usually these files are written by a python script from a template
34 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
35 | *.manifest
36 | *.spec
37 |
38 | # Installer logs
39 | pip-log.txt
40 | pip-delete-this-directory.txt
41 |
42 | # Unit test / coverage reports
43 | htmlcov/
44 | .tox/
45 | .nox/
46 | .coverage
47 | .coverage.*
48 | .cache
49 | nosetests.xml
50 | coverage.xml
51 | *.cover
52 | .hypothesis/
53 | .pytest_cache/
54 |
55 | # Translations
56 | *.mo
57 | *.pot
58 |
59 | # Django stuff:
60 | *.log
61 | local_settings.py
62 | db.sqlite3
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # celery beat schedule file
88 | celerybeat-schedule
89 |
90 | # SageMath parsed files
91 | *.sage.py
92 |
93 | # Environments
94 | .env
95 | .venv
96 | env/
97 | venv/
98 | ENV/
99 | env.bak/
100 | venv.bak/
101 |
102 | # Spyder project settings
103 | .spyderproject
104 | .spyproject
105 |
106 | # Rope project settings
107 | .ropeproject
108 |
109 | # mkdocs documentation
110 | /site
111 |
112 | # mypy
113 | .mypy_cache/
114 | .dmypy.json
115 | dmypy.json
116 |
117 | ### Python Patch ###
118 | .venv/
119 |
120 | ### Python.VirtualEnv Stack ###
121 | # Virtualenv
122 | # http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
123 | [Bb]in
124 | [Ii]nclude
125 | [Ll]ib
126 | [Ll]ib64
127 | [Ll]ocal
128 | [Ss]cripts
129 | pyvenv.cfg
130 | pip-selfcheck.json
131 |
132 |
133 | # End of https://www.gitignore.io/api/python
134 | config.ini
135 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU General Public License is a free, copyleft license for
11 | software and other kinds of works.
12 |
13 | The licenses for most software and other practical works are designed
14 | to take away your freedom to share and change the works. By contrast,
15 | the GNU General Public License is intended to guarantee your freedom to
16 | share and change all versions of a program--to make sure it remains free
17 | software for all its users. We, the Free Software Foundation, use the
18 | GNU General Public License for most of our software; it applies also to
19 | any other work released this way by its authors. You can apply it to
20 | your programs, too.
21 |
22 | When we speak of free software, we are referring to freedom, not
23 | price. Our General Public Licenses are designed to make sure that you
24 | have the freedom to distribute copies of free software (and charge for
25 | them if you wish), that you receive source code or can get it if you
26 | want it, that you can change the software or use pieces of it in new
27 | free programs, and that you know you can do these things.
28 |
29 | To protect your rights, we need to prevent others from denying you
30 | these rights or asking you to surrender the rights. Therefore, you have
31 | certain responsibilities if you distribute copies of the software, or if
32 | you modify it: responsibilities to respect the freedom of others.
33 |
34 | For example, if you distribute copies of such a program, whether
35 | gratis or for a fee, you must pass on to the recipients the same
36 | freedoms that you received. You must make sure that they, too, receive
37 | or can get the source code. And you must show them these terms so they
38 | know their rights.
39 |
40 | Developers that use the GNU GPL protect your rights with two steps:
41 | (1) assert copyright on the software, and (2) offer you this License
42 | giving you legal permission to copy, distribute and/or modify it.
43 |
44 | For the developers' and authors' protection, the GPL clearly explains
45 | that there is no warranty for this free software. For both users' and
46 | authors' sake, the GPL requires that modified versions be marked as
47 | changed, so that their problems will not be attributed erroneously to
48 | authors of previous versions.
49 |
50 | Some devices are designed to deny users access to install or run
51 | modified versions of the software inside them, although the manufacturer
52 | can do so. This is fundamentally incompatible with the aim of
53 | protecting users' freedom to change the software. The systematic
54 | pattern of such abuse occurs in the area of products for individuals to
55 | use, which is precisely where it is most unacceptable. Therefore, we
56 | have designed this version of the GPL to prohibit the practice for those
57 | products. If such problems arise substantially in other domains, we
58 | stand ready to extend this provision to those domains in future versions
59 | of the GPL, as needed to protect the freedom of users.
60 |
61 | Finally, every program is threatened constantly by software patents.
62 | States should not allow patents to restrict development and use of
63 | software on general-purpose computers, but in those that do, we wish to
64 | avoid the special danger that patents applied to a free program could
65 | make it effectively proprietary. To prevent this, the GPL assures that
66 | patents cannot be used to render the program non-free.
67 |
68 | The precise terms and conditions for copying, distribution and
69 | modification follow.
70 |
71 | TERMS AND CONDITIONS
72 |
73 | 0. Definitions.
74 |
75 | "This License" refers to version 3 of the GNU General Public License.
76 |
77 | "Copyright" also means copyright-like laws that apply to other kinds of
78 | works, such as semiconductor masks.
79 |
80 | "The Program" refers to any copyrightable work licensed under this
81 | License. Each licensee is addressed as "you". "Licensees" and
82 | "recipients" may be individuals or organizations.
83 |
84 | To "modify" a work means to copy from or adapt all or part of the work
85 | in a fashion requiring copyright permission, other than the making of an
86 | exact copy. The resulting work is called a "modified version" of the
87 | earlier work or a work "based on" the earlier work.
88 |
89 | A "covered work" means either the unmodified Program or a work based
90 | on the Program.
91 |
92 | To "propagate" a work means to do anything with it that, without
93 | permission, would make you directly or secondarily liable for
94 | infringement under applicable copyright law, except executing it on a
95 | computer or modifying a private copy. Propagation includes copying,
96 | distribution (with or without modification), making available to the
97 | public, and in some countries other activities as well.
98 |
99 | To "convey" a work means any kind of propagation that enables other
100 | parties to make or receive copies. Mere interaction with a user through
101 | a computer network, with no transfer of a copy, is not conveying.
102 |
103 | An interactive user interface displays "Appropriate Legal Notices"
104 | to the extent that it includes a convenient and prominently visible
105 | feature that (1) displays an appropriate copyright notice, and (2)
106 | tells the user that there is no warranty for the work (except to the
107 | extent that warranties are provided), that licensees may convey the
108 | work under this License, and how to view a copy of this License. If
109 | the interface presents a list of user commands or options, such as a
110 | menu, a prominent item in the list meets this criterion.
111 |
112 | 1. Source Code.
113 |
114 | The "source code" for a work means the preferred form of the work
115 | for making modifications to it. "Object code" means any non-source
116 | form of a work.
117 |
118 | A "Standard Interface" means an interface that either is an official
119 | standard defined by a recognized standards body, or, in the case of
120 | interfaces specified for a particular programming language, one that
121 | is widely used among developers working in that language.
122 |
123 | The "System Libraries" of an executable work include anything, other
124 | than the work as a whole, that (a) is included in the normal form of
125 | packaging a Major Component, but which is not part of that Major
126 | Component, and (b) serves only to enable use of the work with that
127 | Major Component, or to implement a Standard Interface for which an
128 | implementation is available to the public in source code form. A
129 | "Major Component", in this context, means a major essential component
130 | (kernel, window system, and so on) of the specific operating system
131 | (if any) on which the executable work runs, or a compiler used to
132 | produce the work, or an object code interpreter used to run it.
133 |
134 | The "Corresponding Source" for a work in object code form means all
135 | the source code needed to generate, install, and (for an executable
136 | work) run the object code and to modify the work, including scripts to
137 | control those activities. However, it does not include the work's
138 | System Libraries, or general-purpose tools or generally available free
139 | programs which are used unmodified in performing those activities but
140 | which are not part of the work. For example, Corresponding Source
141 | includes interface definition files associated with source files for
142 | the work, and the source code for shared libraries and dynamically
143 | linked subprograms that the work is specifically designed to require,
144 | such as by intimate data communication or control flow between those
145 | subprograms and other parts of the work.
146 |
147 | The Corresponding Source need not include anything that users
148 | can regenerate automatically from other parts of the Corresponding
149 | Source.
150 |
151 | The Corresponding Source for a work in source code form is that
152 | same work.
153 |
154 | 2. Basic Permissions.
155 |
156 | All rights granted under this License are granted for the term of
157 | copyright on the Program, and are irrevocable provided the stated
158 | conditions are met. This License explicitly affirms your unlimited
159 | permission to run the unmodified Program. The output from running a
160 | covered work is covered by this License only if the output, given its
161 | content, constitutes a covered work. This License acknowledges your
162 | rights of fair use or other equivalent, as provided by copyright law.
163 |
164 | You may make, run and propagate covered works that you do not
165 | convey, without conditions so long as your license otherwise remains
166 | in force. You may convey covered works to others for the sole purpose
167 | of having them make modifications exclusively for you, or provide you
168 | with facilities for running those works, provided that you comply with
169 | the terms of this License in conveying all material for which you do
170 | not control copyright. Those thus making or running the covered works
171 | for you must do so exclusively on your behalf, under your direction
172 | and control, on terms that prohibit them from making any copies of
173 | your copyrighted material outside their relationship with you.
174 |
175 | Conveying under any other circumstances is permitted solely under
176 | the conditions stated below. Sublicensing is not allowed; section 10
177 | makes it unnecessary.
178 |
179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
180 |
181 | No covered work shall be deemed part of an effective technological
182 | measure under any applicable law fulfilling obligations under article
183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
184 | similar laws prohibiting or restricting circumvention of such
185 | measures.
186 |
187 | When you convey a covered work, you waive any legal power to forbid
188 | circumvention of technological measures to the extent such circumvention
189 | is effected by exercising rights under this License with respect to
190 | the covered work, and you disclaim any intention to limit operation or
191 | modification of the work as a means of enforcing, against the work's
192 | users, your or third parties' legal rights to forbid circumvention of
193 | technological measures.
194 |
195 | 4. Conveying Verbatim Copies.
196 |
197 | You may convey verbatim copies of the Program's source code as you
198 | receive it, in any medium, provided that you conspicuously and
199 | appropriately publish on each copy an appropriate copyright notice;
200 | keep intact all notices stating that this License and any
201 | non-permissive terms added in accord with section 7 apply to the code;
202 | keep intact all notices of the absence of any warranty; and give all
203 | recipients a copy of this License along with the Program.
204 |
205 | You may charge any price or no price for each copy that you convey,
206 | and you may offer support or warranty protection for a fee.
207 |
208 | 5. Conveying Modified Source Versions.
209 |
210 | You may convey a work based on the Program, or the modifications to
211 | produce it from the Program, in the form of source code under the
212 | terms of section 4, provided that you also meet all of these conditions:
213 |
214 | a) The work must carry prominent notices stating that you modified
215 | it, and giving a relevant date.
216 |
217 | b) The work must carry prominent notices stating that it is
218 | released under this License and any conditions added under section
219 | 7. This requirement modifies the requirement in section 4 to
220 | "keep intact all notices".
221 |
222 | c) You must license the entire work, as a whole, under this
223 | License to anyone who comes into possession of a copy. This
224 | License will therefore apply, along with any applicable section 7
225 | additional terms, to the whole of the work, and all its parts,
226 | regardless of how they are packaged. This License gives no
227 | permission to license the work in any other way, but it does not
228 | invalidate such permission if you have separately received it.
229 |
230 | d) If the work has interactive user interfaces, each must display
231 | Appropriate Legal Notices; however, if the Program has interactive
232 | interfaces that do not display Appropriate Legal Notices, your
233 | work need not make them do so.
234 |
235 | A compilation of a covered work with other separate and independent
236 | works, which are not by their nature extensions of the covered work,
237 | and which are not combined with it such as to form a larger program,
238 | in or on a volume of a storage or distribution medium, is called an
239 | "aggregate" if the compilation and its resulting copyright are not
240 | used to limit the access or legal rights of the compilation's users
241 | beyond what the individual works permit. Inclusion of a covered work
242 | in an aggregate does not cause this License to apply to the other
243 | parts of the aggregate.
244 |
245 | 6. Conveying Non-Source Forms.
246 |
247 | You may convey a covered work in object code form under the terms
248 | of sections 4 and 5, provided that you also convey the
249 | machine-readable Corresponding Source under the terms of this License,
250 | in one of these ways:
251 |
252 | a) Convey the object code in, or embodied in, a physical product
253 | (including a physical distribution medium), accompanied by the
254 | Corresponding Source fixed on a durable physical medium
255 | customarily used for software interchange.
256 |
257 | b) Convey the object code in, or embodied in, a physical product
258 | (including a physical distribution medium), accompanied by a
259 | written offer, valid for at least three years and valid for as
260 | long as you offer spare parts or customer support for that product
261 | model, to give anyone who possesses the object code either (1) a
262 | copy of the Corresponding Source for all the software in the
263 | product that is covered by this License, on a durable physical
264 | medium customarily used for software interchange, for a price no
265 | more than your reasonable cost of physically performing this
266 | conveying of source, or (2) access to copy the
267 | Corresponding Source from a network server at no charge.
268 |
269 | c) Convey individual copies of the object code with a copy of the
270 | written offer to provide the Corresponding Source. This
271 | alternative is allowed only occasionally and noncommercially, and
272 | only if you received the object code with such an offer, in accord
273 | with subsection 6b.
274 |
275 | d) Convey the object code by offering access from a designated
276 | place (gratis or for a charge), and offer equivalent access to the
277 | Corresponding Source in the same way through the same place at no
278 | further charge. You need not require recipients to copy the
279 | Corresponding Source along with the object code. If the place to
280 | copy the object code is a network server, the Corresponding Source
281 | may be on a different server (operated by you or a third party)
282 | that supports equivalent copying facilities, provided you maintain
283 | clear directions next to the object code saying where to find the
284 | Corresponding Source. Regardless of what server hosts the
285 | Corresponding Source, you remain obligated to ensure that it is
286 | available for as long as needed to satisfy these requirements.
287 |
288 | e) Convey the object code using peer-to-peer transmission, provided
289 | you inform other peers where the object code and Corresponding
290 | Source of the work are being offered to the general public at no
291 | charge under subsection 6d.
292 |
293 | A separable portion of the object code, whose source code is excluded
294 | from the Corresponding Source as a System Library, need not be
295 | included in conveying the object code work.
296 |
297 | A "User Product" is either (1) a "consumer product", which means any
298 | tangible personal property which is normally used for personal, family,
299 | or household purposes, or (2) anything designed or sold for incorporation
300 | into a dwelling. In determining whether a product is a consumer product,
301 | doubtful cases shall be resolved in favor of coverage. For a particular
302 | product received by a particular user, "normally used" refers to a
303 | typical or common use of that class of product, regardless of the status
304 | of the particular user or of the way in which the particular user
305 | actually uses, or expects or is expected to use, the product. A product
306 | is a consumer product regardless of whether the product has substantial
307 | commercial, industrial or non-consumer uses, unless such uses represent
308 | the only significant mode of use of the product.
309 |
310 | "Installation Information" for a User Product means any methods,
311 | procedures, authorization keys, or other information required to install
312 | and execute modified versions of a covered work in that User Product from
313 | a modified version of its Corresponding Source. The information must
314 | suffice to ensure that the continued functioning of the modified object
315 | code is in no case prevented or interfered with solely because
316 | modification has been made.
317 |
318 | If you convey an object code work under this section in, or with, or
319 | specifically for use in, a User Product, and the conveying occurs as
320 | part of a transaction in which the right of possession and use of the
321 | User Product is transferred to the recipient in perpetuity or for a
322 | fixed term (regardless of how the transaction is characterized), the
323 | Corresponding Source conveyed under this section must be accompanied
324 | by the Installation Information. But this requirement does not apply
325 | if neither you nor any third party retains the ability to install
326 | modified object code on the User Product (for example, the work has
327 | been installed in ROM).
328 |
329 | The requirement to provide Installation Information does not include a
330 | requirement to continue to provide support service, warranty, or updates
331 | for a work that has been modified or installed by the recipient, or for
332 | the User Product in which it has been modified or installed. Access to a
333 | network may be denied when the modification itself materially and
334 | adversely affects the operation of the network or violates the rules and
335 | protocols for communication across the network.
336 |
337 | Corresponding Source conveyed, and Installation Information provided,
338 | in accord with this section must be in a format that is publicly
339 | documented (and with an implementation available to the public in
340 | source code form), and must require no special password or key for
341 | unpacking, reading or copying.
342 |
343 | 7. Additional Terms.
344 |
345 | "Additional permissions" are terms that supplement the terms of this
346 | License by making exceptions from one or more of its conditions.
347 | Additional permissions that are applicable to the entire Program shall
348 | be treated as though they were included in this License, to the extent
349 | that they are valid under applicable law. If additional permissions
350 | apply only to part of the Program, that part may be used separately
351 | under those permissions, but the entire Program remains governed by
352 | this License without regard to the additional permissions.
353 |
354 | When you convey a copy of a covered work, you may at your option
355 | remove any additional permissions from that copy, or from any part of
356 | it. (Additional permissions may be written to require their own
357 | removal in certain cases when you modify the work.) You may place
358 | additional permissions on material, added by you to a covered work,
359 | for which you have or can give appropriate copyright permission.
360 |
361 | Notwithstanding any other provision of this License, for material you
362 | add to a covered work, you may (if authorized by the copyright holders of
363 | that material) supplement the terms of this License with terms:
364 |
365 | a) Disclaiming warranty or limiting liability differently from the
366 | terms of sections 15 and 16 of this License; or
367 |
368 | b) Requiring preservation of specified reasonable legal notices or
369 | author attributions in that material or in the Appropriate Legal
370 | Notices displayed by works containing it; or
371 |
372 | c) Prohibiting misrepresentation of the origin of that material, or
373 | requiring that modified versions of such material be marked in
374 | reasonable ways as different from the original version; or
375 |
376 | d) Limiting the use for publicity purposes of names of licensors or
377 | authors of the material; or
378 |
379 | e) Declining to grant rights under trademark law for use of some
380 | trade names, trademarks, or service marks; or
381 |
382 | f) Requiring indemnification of licensors and authors of that
383 | material by anyone who conveys the material (or modified versions of
384 | it) with contractual assumptions of liability to the recipient, for
385 | any liability that these contractual assumptions directly impose on
386 | those licensors and authors.
387 |
388 | All other non-permissive additional terms are considered "further
389 | restrictions" within the meaning of section 10. If the Program as you
390 | received it, or any part of it, contains a notice stating that it is
391 | governed by this License along with a term that is a further
392 | restriction, you may remove that term. If a license document contains
393 | a further restriction but permits relicensing or conveying under this
394 | License, you may add to a covered work material governed by the terms
395 | of that license document, provided that the further restriction does
396 | not survive such relicensing or conveying.
397 |
398 | If you add terms to a covered work in accord with this section, you
399 | must place, in the relevant source files, a statement of the
400 | additional terms that apply to those files, or a notice indicating
401 | where to find the applicable terms.
402 |
403 | Additional terms, permissive or non-permissive, may be stated in the
404 | form of a separately written license, or stated as exceptions;
405 | the above requirements apply either way.
406 |
407 | 8. Termination.
408 |
409 | You may not propagate or modify a covered work except as expressly
410 | provided under this License. Any attempt otherwise to propagate or
411 | modify it is void, and will automatically terminate your rights under
412 | this License (including any patent licenses granted under the third
413 | paragraph of section 11).
414 |
415 | However, if you cease all violation of this License, then your
416 | license from a particular copyright holder is reinstated (a)
417 | provisionally, unless and until the copyright holder explicitly and
418 | finally terminates your license, and (b) permanently, if the copyright
419 | holder fails to notify you of the violation by some reasonable means
420 | prior to 60 days after the cessation.
421 |
422 | Moreover, your license from a particular copyright holder is
423 | reinstated permanently if the copyright holder notifies you of the
424 | violation by some reasonable means, this is the first time you have
425 | received notice of violation of this License (for any work) from that
426 | copyright holder, and you cure the violation prior to 30 days after
427 | your receipt of the notice.
428 |
429 | Termination of your rights under this section does not terminate the
430 | licenses of parties who have received copies or rights from you under
431 | this License. If your rights have been terminated and not permanently
432 | reinstated, you do not qualify to receive new licenses for the same
433 | material under section 10.
434 |
435 | 9. Acceptance Not Required for Having Copies.
436 |
437 | You are not required to accept this License in order to receive or
438 | run a copy of the Program. Ancillary propagation of a covered work
439 | occurring solely as a consequence of using peer-to-peer transmission
440 | to receive a copy likewise does not require acceptance. However,
441 | nothing other than this License grants you permission to propagate or
442 | modify any covered work. These actions infringe copyright if you do
443 | not accept this License. Therefore, by modifying or propagating a
444 | covered work, you indicate your acceptance of this License to do so.
445 |
446 | 10. Automatic Licensing of Downstream Recipients.
447 |
448 | Each time you convey a covered work, the recipient automatically
449 | receives a license from the original licensors, to run, modify and
450 | propagate that work, subject to this License. You are not responsible
451 | for enforcing compliance by third parties with this License.
452 |
453 | An "entity transaction" is a transaction transferring control of an
454 | organization, or substantially all assets of one, or subdividing an
455 | organization, or merging organizations. If propagation of a covered
456 | work results from an entity transaction, each party to that
457 | transaction who receives a copy of the work also receives whatever
458 | licenses to the work the party's predecessor in interest had or could
459 | give under the previous paragraph, plus a right to possession of the
460 | Corresponding Source of the work from the predecessor in interest, if
461 | the predecessor has it or can get it with reasonable efforts.
462 |
463 | You may not impose any further restrictions on the exercise of the
464 | rights granted or affirmed under this License. For example, you may
465 | not impose a license fee, royalty, or other charge for exercise of
466 | rights granted under this License, and you may not initiate litigation
467 | (including a cross-claim or counterclaim in a lawsuit) alleging that
468 | any patent claim is infringed by making, using, selling, offering for
469 | sale, or importing the Program or any portion of it.
470 |
471 | 11. Patents.
472 |
473 | A "contributor" is a copyright holder who authorizes use under this
474 | License of the Program or a work on which the Program is based. The
475 | work thus licensed is called the contributor's "contributor version".
476 |
477 | A contributor's "essential patent claims" are all patent claims
478 | owned or controlled by the contributor, whether already acquired or
479 | hereafter acquired, that would be infringed by some manner, permitted
480 | by this License, of making, using, or selling its contributor version,
481 | but do not include claims that would be infringed only as a
482 | consequence of further modification of the contributor version. For
483 | purposes of this definition, "control" includes the right to grant
484 | patent sublicenses in a manner consistent with the requirements of
485 | this License.
486 |
487 | Each contributor grants you a non-exclusive, worldwide, royalty-free
488 | patent license under the contributor's essential patent claims, to
489 | make, use, sell, offer for sale, import and otherwise run, modify and
490 | propagate the contents of its contributor version.
491 |
492 | In the following three paragraphs, a "patent license" is any express
493 | agreement or commitment, however denominated, not to enforce a patent
494 | (such as an express permission to practice a patent or covenant not to
495 | sue for patent infringement). To "grant" such a patent license to a
496 | party means to make such an agreement or commitment not to enforce a
497 | patent against the party.
498 |
499 | If you convey a covered work, knowingly relying on a patent license,
500 | and the Corresponding Source of the work is not available for anyone
501 | to copy, free of charge and under the terms of this License, through a
502 | publicly available network server or other readily accessible means,
503 | then you must either (1) cause the Corresponding Source to be so
504 | available, or (2) arrange to deprive yourself of the benefit of the
505 | patent license for this particular work, or (3) arrange, in a manner
506 | consistent with the requirements of this License, to extend the patent
507 | license to downstream recipients. "Knowingly relying" means you have
508 | actual knowledge that, but for the patent license, your conveying the
509 | covered work in a country, or your recipient's use of the covered work
510 | in a country, would infringe one or more identifiable patents in that
511 | country that you have reason to believe are valid.
512 |
513 | If, pursuant to or in connection with a single transaction or
514 | arrangement, you convey, or propagate by procuring conveyance of, a
515 | covered work, and grant a patent license to some of the parties
516 | receiving the covered work authorizing them to use, propagate, modify
517 | or convey a specific copy of the covered work, then the patent license
518 | you grant is automatically extended to all recipients of the covered
519 | work and works based on it.
520 |
521 | A patent license is "discriminatory" if it does not include within
522 | the scope of its coverage, prohibits the exercise of, or is
523 | conditioned on the non-exercise of one or more of the rights that are
524 | specifically granted under this License. You may not convey a covered
525 | work if you are a party to an arrangement with a third party that is
526 | in the business of distributing software, under which you make payment
527 | to the third party based on the extent of your activity of conveying
528 | the work, and under which the third party grants, to any of the
529 | parties who would receive the covered work from you, a discriminatory
530 | patent license (a) in connection with copies of the covered work
531 | conveyed by you (or copies made from those copies), or (b) primarily
532 | for and in connection with specific products or compilations that
533 | contain the covered work, unless you entered into that arrangement,
534 | or that patent license was granted, prior to 28 March 2007.
535 |
536 | Nothing in this License shall be construed as excluding or limiting
537 | any implied license or other defenses to infringement that may
538 | otherwise be available to you under applicable patent law.
539 |
540 | 12. No Surrender of Others' Freedom.
541 |
542 | If conditions are imposed on you (whether by court order, agreement or
543 | otherwise) that contradict the conditions of this License, they do not
544 | excuse you from the conditions of this License. If you cannot convey a
545 | covered work so as to satisfy simultaneously your obligations under this
546 | License and any other pertinent obligations, then as a consequence you may
547 | not convey it at all. For example, if you agree to terms that obligate you
548 | to collect a royalty for further conveying from those to whom you convey
549 | the Program, the only way you could satisfy both those terms and this
550 | License would be to refrain entirely from conveying the Program.
551 |
552 | 13. Use with the GNU Affero General Public License.
553 |
554 | Notwithstanding any other provision of this License, you have
555 | permission to link or combine any covered work with a work licensed
556 | under version 3 of the GNU Affero General Public License into a single
557 | combined work, and to convey the resulting work. The terms of this
558 | License will continue to apply to the part which is the covered work,
559 | but the special requirements of the GNU Affero General Public License,
560 | section 13, concerning interaction through a network will apply to the
561 | combination as such.
562 |
563 | 14. Revised Versions of this License.
564 |
565 | The Free Software Foundation may publish revised and/or new versions of
566 | the GNU General Public License from time to time. Such new versions will
567 | be similar in spirit to the present version, but may differ in detail to
568 | address new problems or concerns.
569 |
570 | Each version is given a distinguishing version number. If the
571 | Program specifies that a certain numbered version of the GNU General
572 | Public License "or any later version" applies to it, you have the
573 | option of following the terms and conditions either of that numbered
574 | version or of any later version published by the Free Software
575 | Foundation. If the Program does not specify a version number of the
576 | GNU General Public License, you may choose any version ever published
577 | by the Free Software Foundation.
578 |
579 | If the Program specifies that a proxy can decide which future
580 | versions of the GNU General Public License can be used, that proxy's
581 | public statement of acceptance of a version permanently authorizes you
582 | to choose that version for the Program.
583 |
584 | Later license versions may give you additional or different
585 | permissions. However, no additional obligations are imposed on any
586 | author or copyright holder as a result of your choosing to follow a
587 | later version.
588 |
589 | 15. Disclaimer of Warranty.
590 |
591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
599 |
600 | 16. Limitation of Liability.
601 |
602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
610 | SUCH DAMAGES.
611 |
612 | 17. Interpretation of Sections 15 and 16.
613 |
614 | If the disclaimer of warranty and limitation of liability provided
615 | above cannot be given local legal effect according to their terms,
616 | reviewing courts shall apply local law that most closely approximates
617 | an absolute waiver of all civil liability in connection with the
618 | Program, unless a warranty or assumption of liability accompanies a
619 | copy of the Program in return for a fee.
620 |
621 | END OF TERMS AND CONDITIONS
622 |
623 | How to Apply These Terms to Your New Programs
624 |
625 | If you develop a new program, and you want it to be of the greatest
626 | possible use to the public, the best way to achieve this is to make it
627 | free software which everyone can redistribute and change under these terms.
628 |
629 | To do so, attach the following notices to the program. It is safest
630 | to attach them to the start of each source file to most effectively
631 | state the exclusion of warranty; and each file should have at least
632 | the "copyright" line and a pointer to where the full notice is found.
633 |
634 |
635 | Copyright (C)
636 |
637 | This program is free software: you can redistribute it and/or modify
638 | it under the terms of the GNU General Public License as published by
639 | the Free Software Foundation, either version 3 of the License, or
640 | (at your option) any later version.
641 |
642 | This program is distributed in the hope that it will be useful,
643 | but WITHOUT ANY WARRANTY; without even the implied warranty of
644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
645 | GNU General Public License for more details.
646 |
647 | You should have received a copy of the GNU General Public License
648 | along with this program. If not, see .
649 |
650 | Also add information on how to contact you by electronic and paper mail.
651 |
652 | If the program does terminal interaction, make it output a short
653 | notice like this when it starts in an interactive mode:
654 |
655 | Copyright (C)
656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
657 | This is free software, and you are welcome to redistribute it
658 | under certain conditions; type `show c' for details.
659 |
660 | The hypothetical commands `show w' and `show c' should show the appropriate
661 | parts of the General Public License. Of course, your program's commands
662 | might be different; for a GUI interface, you would use an "about box".
663 |
664 | You should also get your employer (if you work as a programmer) or school,
665 | if any, to sign a "copyright disclaimer" for the program, if necessary.
666 | For more information on this, and how to apply and follow the GNU GPL, see
667 | .
668 |
669 | The GNU General Public License does not permit incorporating your program
670 | into proprietary programs. If your program is a subroutine library, you
671 | may consider it more useful to permit linking proprietary applications with
672 | the library. If this is what you want to do, use the GNU Lesser General
673 | Public License instead of this License. But first, please read
674 | .
675 |
--------------------------------------------------------------------------------
/MANIFEST.in:
--------------------------------------------------------------------------------
1 | include LICENSE
2 | recursive-include SyntaxAutoFix/words/ *
3 | recursive-include SyntaxAutoFix/utils *
4 | include SyntaxAutoFix/manageterms.ui
5 | include SyntaxAutoFix/filepath.ini
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SyntaxAlert
2 | Automatically fix every typo that you will type to the right words!
3 |
4 | It uses a database that can be extended.
5 |
6 | Check the `words` folder for the languages available.
7 |
8 | ## Installation
9 | ```
10 | pip3 install keyboard
11 | pip3 install syntaxautofix
12 | ```
13 | For the UI is required PyQt5.
14 |
15 | Doesn't create conflicts with [Espanso](https://espanso.org/).
16 |
17 | ### Settings and assets files (dictionaries)
18 |
19 | Automatically will create a folder inside '~/.config/SyntaxAutoFix` that will include the stats.json files.
20 | Also will look for the dictionaries and settings also on this folder so this let you customize it without define commandline parameters.
21 |
22 | ## Usage
23 |
24 | ### How to use with Target Language(s)
25 |
26 | - For English only
27 | ```
28 | syntaxautofix -words ./words/en.json
29 | ```
30 |
31 | - For Italian/English/Spanish (or without parameters is the same):
32 | ```
33 | syntaxautofix -words ./words/en.json -words2 ./words/it.json
34 | ```
35 |
36 | - Otherwise with the `configini` parameter you can specify a settings file (sample in the package/repo):
37 | ```
38 | syntaxautofix -configini /path/config.ini
39 | ```
40 |
41 | ### Adding New Terms
42 |
43 | This require the git repo or the right path to the pip package folder.
44 |
45 | ```
46 | manageterms.py -wrong="wdiget" -right="widget" -lang=en
47 | ```
48 |
49 | You can use also an ui for that: `manageterms-gui.py`
50 |
51 | ### Adding New Terms using a CSV File
52 |
53 | This require the git repo or the right path to the pip package folder.
54 |
55 | Directly upload new terms using a CSV file with row format:
56 | ```
57 | ,
58 | ```
59 |
60 | For example:
61 | Let `new_words.csv` be
62 | ```
63 | Africa,Afica
64 | America,Ameria
65 | ```
66 |
67 | Then use the command:
68 | ```
69 | csvtoterms.py -file new_words.csv -lang en
70 | ```
71 |
--------------------------------------------------------------------------------
/SyntaxAutoFix/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mte90/SyntaxAutoFix/c6421cd329cb8df83409be8825663c49c72c075a/SyntaxAutoFix/__init__.py
--------------------------------------------------------------------------------
/SyntaxAutoFix/__main__.py:
--------------------------------------------------------------------------------
1 | from . import syntaxautofix
2 | from .utils import *
3 |
--------------------------------------------------------------------------------
/SyntaxAutoFix/config.ini:
--------------------------------------------------------------------------------
1 | ; Default values.
2 | [DEFAULT]
3 | words_file = [ "words/en.json", "words/it.json" ]
--------------------------------------------------------------------------------
/SyntaxAutoFix/stats-gui.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 |
3 | import sys
4 | import os
5 | import signal
6 | from PyQt5.QtCore import Qt
7 | from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QApplication
8 | from utils import open_stats_file
9 |
10 |
11 | class MyTable(QTableWidget):
12 | def __init__(self, data, *args):
13 | QTableWidget.__init__(self, *args)
14 | # When the software are closed on console the software are closed
15 | signal.signal(signal.SIGINT, signal.SIG_DFL)
16 | self.data = data
17 | self.setmydata()
18 | self.resizeColumnsToContents()
19 | self.resizeRowsToContents()
20 |
21 | def setmydata(self):
22 | horHeaders = []
23 | for n, key in enumerate(sorted(self.data.keys())):
24 | horHeaders.append(key)
25 | for m, item in enumerate(self.data[key]):
26 | newitem = QTableWidgetItem(item)
27 | newitem.setFlags(Qt.ItemFlags(~Qt.ItemIsEnabled))
28 | self.setItem(m, n, newitem)
29 | self.setHorizontalHeaderLabels(horHeaders)
30 |
31 |
32 | def main(args):
33 | app = QApplication(args)
34 | stats_data = open_stats_file(os.path.dirname(sys.argv[0]) + "/stats.json")
35 | items = stats_data.items()
36 | words, counters = ('', '')
37 | if len(items) > 0:
38 | items = sorted(items, key=lambda item: item[1], reverse=True)
39 | words, counters = [list(item) for item in zip(*items)]
40 | counters = map(lambda x: str(x), counters)
41 | result = {'wrong_word': words, 'counter': counters}
42 | table = MyTable(result, len(words), 2)
43 | table.show()
44 | sys.exit(app.exec_())
45 |
46 |
47 | if __name__ == "__main__":
48 | main(sys.argv)
49 |
--------------------------------------------------------------------------------
/SyntaxAutoFix/syntaxautofix.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python3
2 | import logging
3 | import keyboard
4 | import argparse
5 | import os.path
6 | from threading import Thread
7 | from time import sleep
8 | from SyntaxAutoFix.utils import open_typo_file
9 | from SyntaxAutoFix.utils import save_stats_file
10 |
11 | from configparser import ConfigParser
12 | import json
13 |
14 |
15 | logging.basicConfig(
16 | level=logging.INFO,
17 | format="%(asctime)s %(name)s %(levelname)-8s %(thread)d %(message)s",
18 | datefmt="%Y-%m-%d %H:%M:%S")
19 | logger = logging.getLogger("SyntaxAutoFix")
20 | script_path = os.path.dirname(os.path.realpath(__file__))
21 |
22 |
23 | def getProjectPath():
24 | home = os.getenv("HOME")
25 | project_path = os.path.join(home, ".config/SyntaxAutoFix")
26 | if not os.path.exists(project_path):
27 | os.mkdir(project_path)
28 | return project_path
29 |
30 |
31 | def getAssetPath(path):
32 | project_path = getProjectPath()
33 | complete_path = os.path.join(project_path, path)
34 | if not os.path.exists(complete_path):
35 | complete_path = os.path.join(script_path, path)
36 | return complete_path
37 |
38 |
39 | # Load words
40 | def loadWord(filename):
41 | with open(filename) as json_file:
42 | words = open_typo_file(json_file)
43 | return words
44 |
45 |
46 | # Parse argument
47 | parser = argparse.ArgumentParser(description='Scan your digited letter for wrong words and alert you!')
48 | parser.add_argument('-config', dest='configini', nargs='?', default=getAssetPath('config.ini'), type=str)
49 | parser.add_argument('-words', dest='words_file', nargs='?', default=getAssetPath('words/en.json'), type=str)
50 | parser.add_argument('-words2', dest='words_file2', nargs='?', default=getAssetPath('words/it.json'), type=str)
51 | args = parser.parse_args()
52 |
53 | try:
54 | config_parser = ConfigParser()
55 | config_parser.read(args.configini)
56 | LIST_OF_FILES = json.loads(config_parser.get('DEFAULT', 'words_file'))
57 | if args.words_file != LIST_OF_FILES[0]:
58 | args.words_file = LIST_OF_FILES[0]
59 | if args.words_file2 != LIST_OF_FILES[1]:
60 | args.words_file2 = LIST_OF_FILES[1]
61 | except:
62 | logger.error("Config empty")
63 |
64 | # it holds the files name passed and the stat os file
65 | files = {}
66 |
67 |
68 | def get_wrong_word(recorded_words_list):
69 | if len(recorded_words_list) > 0:
70 | list_splitted = recorded_words_list[0].split() # Get first element of the list
71 | if len(list_splitted) > 0:
72 | wrong_word = list_splitted[-1]
73 | return wrong_word
74 | return None
75 |
76 |
77 | def mispell_callback():
78 | recorded_words = keyboard.stop_recording()
79 | recorded_words_list = list(keyboard.get_typed_strings(recorded_words))
80 | logger.info(f"Captured list of words: {recorded_words_list}")
81 | wrong_word = get_wrong_word(recorded_words_list)
82 | if wrong_word:
83 | logger.info(f"Word '{wrong_word}' detected and tracked")
84 | save_stats_file(os.path.join(getProjectPath(), "stats.json"), wrong_word, 1)
85 | keyboard.start_recording()
86 |
87 |
88 | def loadJSON():
89 | # Check the file and load it
90 | if not os.path.isfile(args.words_file):
91 | logger.error(f"Words file {args.words_file} not exist!")
92 | exit()
93 |
94 | if args.words_file2:
95 | if os.path.isfile(args.words_file2):
96 | words = open_typo_file(args.words_file)
97 | words2 = open_typo_file(args.words_file2)
98 | words.update(words2)
99 | # register the status of file in these moment
100 | files[args.words_file] = os.stat(args.words_file)
101 | files[args.words_file2] = os.stat(args.words_file2)
102 | else:
103 | words = open_typo_file(args.words_file)
104 | # register the status of file in these moment
105 | files[args.words_file] = os.stat(args.words_file)
106 |
107 | logger.info(f"{str(len(words))} words loaded")
108 | for (correct_word, misspelled_words) in words.items():
109 | for misspelled_word in misspelled_words:
110 | if misspelled_word:
111 | keyboard.add_abbreviation(misspelled_word, ' ' + correct_word + ' ')
112 | keyboard.add_word_listener(misspelled_word, mispell_callback)
113 |
114 |
115 | # Clean the abbreviations from previous JSON and reloads new JSON
116 | def reload_JSON():
117 | logger.info("Reloading modified JSON!")
118 | keyboard.unhook_all()
119 | loadJSON()
120 |
121 |
122 | def JSON_modify_watcher():
123 | while True:
124 | sleep(3)
125 | for k in files:
126 | if files[k] != os.stat(k):
127 | reload_JSON()
128 | break
129 |
130 |
131 | def main():
132 | keyboard.start_recording()
133 |
134 | loadJSON()
135 | t_watcher = Thread(target=JSON_modify_watcher)
136 | t_watcher.start()
137 |
138 |
139 | if __name__ == "__main__":
140 | try:
141 | main()
142 | except KeyboardInterrupt:
143 | keyboard.stop_recording()
144 |
--------------------------------------------------------------------------------
/SyntaxAutoFix/utils/__init__.py:
--------------------------------------------------------------------------------
1 | from .data_handlers import *
2 |
--------------------------------------------------------------------------------
/SyntaxAutoFix/utils/data_handlers.py:
--------------------------------------------------------------------------------
1 | from json import load, dumps
2 | from collections import OrderedDict
3 | import os
4 |
5 | def open_typo_file(path):
6 | """Open a file with typos and return the data as a defaultdict of sets."""
7 | with open(path, "r") as f:
8 | return load(f, object_hook=OrderedDict)
9 |
10 |
11 | def save_typo_data(path, data):
12 | """Save the data as a dictionary with the values being lists instead of sets."""
13 | data = dict(sorted(data.items()))
14 | with open(path, "w") as f:
15 | f.write(dumps(data, indent=4))
16 |
17 |
18 | def save_stats_file(path, word, amount):
19 | """Save statistics about typos."""
20 | stats = open_stats_file(path)
21 | if word in stats:
22 | stats[word] += amount
23 | else:
24 | stats[word] = amount
25 |
26 | with open(path, "w") as f:
27 | f.write(dumps(stats, indent=4, sort_keys=True))
28 |
29 |
30 | def open_stats_file(path):
31 | """Open a file with statistics on wrong words and return the data as a defaultdict of sets."""
32 | if os.path.exists(path):
33 | with open(path, "r") as f:
34 | return load(f)
35 | else:
36 | return {}
37 |
--------------------------------------------------------------------------------
/SyntaxAutoFix/words/es.json:
--------------------------------------------------------------------------------
1 | {
2 | "Caracas": [
3 | "Carcas"
4 | ],
5 | "abandonar": [
6 | "abandoran",
7 | "abandoanr"
8 | ],
9 | "adios": [
10 | "addios"
11 | ],
12 | "adulterado": [
13 | "adulterdo"
14 | ],
15 | "afirmaci\u00f3n": [
16 | "afirmasi\u00f3n"
17 | ],
18 | "alumnos": [
19 | "alunmos"
20 | ],
21 | "amoroso": [
22 | "amorso"
23 | ],
24 | "aparece": [
25 | "aprarce"
26 | ],
27 | "avanzar": [
28 | "avansar"
29 | ],
30 | "aversi\u00f3n": [
31 | "adversi\u00f3n"
32 | ],
33 | "ayudarte": [
34 | "ayudrate"
35 | ],
36 | "banal": [
37 | "vanal"
38 | ],
39 | "bueno": [
40 | "beuno"
41 | ],
42 | "cantar": [
43 | "cantra"
44 | ],
45 | "capacidad": [
46 | "capsidad",
47 | "capasidad"
48 | ],
49 | "causa": [
50 | "casua"
51 | ],
52 | "cepillo": [
53 | "sepillo"
54 | ],
55 | "coger": [
56 | "cojer"
57 | ],
58 | "comenzar": [
59 | "conmenzar"
60 | ],
61 | "comunismo": [
62 | "conumismo"
63 | ],
64 | "conciencia": [
65 | "consciencia",
66 | "conciensia",
67 | "consiensia",
68 | "consiencia"
69 | ],
70 | "contento": [
71 | "contendo"
72 | ],
73 | "convalecencia": [
74 | "convalescencia"
75 | ],
76 | "conyuntura": [
77 | "conyontura"
78 | ],
79 | "cuidar": [
80 | "ciudar"
81 | ],
82 | "decisi\u00f3n": [
83 | "desici\u00f3n"
84 | ],
85 | "deshabitado": [
86 | "desabitado"
87 | ],
88 | "deshecho": [
89 | "desecho",
90 | "desdecho"
91 | ],
92 | "desprenderse": [
93 | "depsenderse",
94 | "desprenderce"
95 | ],
96 | "distintos": [
97 | "disitintos"
98 | ],
99 | "editorial": [
100 | "editorail"
101 | ],
102 | "efectividad": [
103 | "efectiviad"
104 | ],
105 | "empieza": [
106 | "empiesza"
107 | ],
108 | "enfermo": [
109 | "enfermp"
110 | ],
111 | "enfrentarse": [
112 | "enfretnarse"
113 | ],
114 | "enfrente": [
115 | "enferente"
116 | ],
117 | "enojado": [
118 | "enojadp"
119 | ],
120 | "episodios": [
121 | "espisodios"
122 | ],
123 | "escoger": [
124 | "escojer"
125 | ],
126 | "esc\u00e9ptico": [
127 | "exc\u00e9ptico"
128 | ],
129 | "esperamos": [
130 | "esperamso"
131 | ],
132 | "estimados": [
133 | "estimaods",
134 | "estimaos"
135 | ],
136 | "estuviera": [
137 | "estubiera"
138 | ],
139 | "exhalar": [
140 | "exalar"
141 | ],
142 | "exhausto": [
143 | "exausto"
144 | ],
145 | "exhortar": [
146 | "exortar"
147 | ],
148 | "exhumar": [
149 | "exumar"
150 | ],
151 | "familia": [
152 | "familai"
153 | ],
154 | "fidedigno": [
155 | "fideligno"
156 | ],
157 | "frontera": [
158 | "frotnera"
159 | ],
160 | "garaje": [
161 | "garage"
162 | ],
163 | "general": [
164 | "genral"
165 | ],
166 | "glosario": [
167 | "glosairo"
168 | ],
169 | "gracias": [
170 | "gracas"
171 | ],
172 | "gusano": [
173 | "gusanso"
174 | ],
175 | "humano": [
176 | "human"
177 | ],
178 | "idiocincrasia": [
179 | "idiocincracia"
180 | ],
181 | "ilusi\u00f3n": [
182 | "iluis\u00f3n"
183 | ],
184 | "infancia": [
185 | "infanca"
186 | ],
187 | "infligido": [
188 | "inflingido"
189 | ],
190 | "insistir": [
191 | "insistr",
192 | "incistir"
193 | ],
194 | "injerencia": [
195 | "ingerencia"
196 | ],
197 | "interesante": [
198 | "interesnate"
199 | ],
200 | "inter\u00e9s": [
201 | "interez"
202 | ],
203 | "llorar": [
204 | "llroar"
205 | ],
206 | "mis\u00f3gino": [
207 | "mis\u00f3geno"
208 | ],
209 | "muestra": [
210 | "meustra"
211 | ],
212 | "m\u00f3vil": [
213 | "m\u00f3bil"
214 | ],
215 | "nosotros": [
216 | "nosotrs"
217 | ],
218 | "novedades": [
219 | "novedaes"
220 | ],
221 | "nuestra": [
222 | "neustra"
223 | ],
224 | "nuevo": [
225 | "neuvo"
226 | ],
227 | "ocasi\u00f3n": [
228 | "ocaci\u00f3n"
229 | ],
230 | "olor": [
231 | "holor"
232 | ],
233 | "para": [
234 | "pra"
235 | ],
236 | "plagio": [
237 | "plajio"
238 | ],
239 | "preparados": [
240 | "preparadso"
241 | ],
242 | "presi\u00f3n": [
243 | "preci\u00f3n"
244 | ],
245 | "prestarnos": [
246 | "prsetarnos"
247 | ],
248 | "prever": [
249 | "preveer"
250 | ],
251 | "profesor": [
252 | "professor"
253 | ],
254 | "prohibido": [
255 | "proihibido",
256 | "proibido"
257 | ],
258 | "pueblo": [
259 | "puevlo"
260 | ],
261 | "realidad": [
262 | "realiad"
263 | ],
264 | "relaciones": [
265 | "relacions",
266 | "relasion"
267 | ],
268 | "resbalando": [
269 | "resvalando"
270 | ],
271 | "ruptura": [
272 | "ruputura"
273 | ],
274 | "sacapuntas": [
275 | "sakapuntas"
276 | ],
277 | "social": [
278 | "socail"
279 | ],
280 | "sociedad": [
281 | "socieda",
282 | "sosiedad"
283 | ],
284 | "soledad": [
285 | "soldedad",
286 | "solaedad"
287 | ],
288 | "solidario": [
289 | "solidairo"
290 | ],
291 | "terminaba": [
292 | "temrinaba"
293 | ],
294 | "tienda": [
295 | "teinda"
296 | ],
297 | "todav\u00eda": [
298 | "todab\u00eda"
299 | ],
300 | "traducidos": [
301 | "traducidso",
302 | "traduciods"
303 | ],
304 | "traspasan": [
305 | "traspsan"
306 | ],
307 | "traspasar": [
308 | "traspsar"
309 | ],
310 | "trastornado": [
311 | "transtornado"
312 | ],
313 | "t\u00f3xicas": [
314 | "t\u00f3xisac"
315 | ],
316 | "unidos": [
317 | "unidso"
318 | ],
319 | "vacaciones": [
320 | "vacasiones",
321 | "vacasions"
322 | ],
323 | "yendo": [
324 | "llendo"
325 | ]
326 | }
327 |
--------------------------------------------------------------------------------
/SyntaxAutoFix/words/fr.json:
--------------------------------------------------------------------------------
1 | {
2 | "agression" : [
3 | "aggression"
4 | ],
5 | "arrêter" : [
6 | "arreter"
7 | ],
8 | "ascenseur" : [
9 | "ascenceur"
10 | ],
11 | "banlieue" : [
12 | "banlieu"
13 | ],
14 | "banlieues" : [
15 | "banlieux"
16 | ],
17 | "belle-sœur" : [
18 | "belle-soeur"
19 | ],
20 | "biter" : [
21 | "bitter"
22 | ],
23 | "bleus" : [
24 | "bleux"
25 | ],
26 | "budgétaire" : [
27 | "bugétaire"
28 | ],
29 | "çà et là" : [
30 | "ça et là"
31 | ],
32 | "caresse" : [
33 | "casress"
34 | ],
35 | "catéchisme" : [
36 | "cathéchisme"
37 | ],
38 | "cauchemar" : [
39 | "cauchemard"
40 | ],
41 | "cauchemars" : [
42 | "cauchemards"
43 | ],
44 | "Cène" : [
45 | "cène"
46 | ],
47 | "championnat" : [
48 | "championat"
49 | ],
50 | "ci-dessus" : [
51 | "cidessus"
52 | ],
53 | "colophane" : [
54 | "collophane"
55 | ],
56 | "colocataire" : [
57 | "colocateur"
58 | ],
59 | "côlon" : [
60 | "colon"
61 | ],
62 | "côlons" : [
63 | "colons"
64 | ],
65 | "compétitivité" : [
66 | "compétivité"
67 | ],
68 | "conscience" : [
69 | "concience"
70 | ],
71 | "croisement" : [
72 | "croissement"
73 | ],
74 | "débarrasser" : [
75 | "débarasser"
76 | ],
77 | "défaite" : [
78 | "défete",
79 | "défète"
80 | ],
81 | "dernière" : [
82 | "derniere"
83 | ],
84 | "déshydrogénase" : [
85 | "deshydrogenase"
86 | ],
87 | "etc." : [
88 | "ect."
89 | ],
90 | "elles-mêmes" : [
91 | "ellesmêmes"
92 | ],
93 | "entregent" : [
94 | "entre-gens"
95 | ],
96 | "entrepreneuriat" : [
97 | "entrepreunariat"
98 | ],
99 | "étaient" : [
100 | "etaient"
101 | ],
102 | "était" : [
103 | "etait"
104 | ],
105 | "étaits" : [
106 | "etaits"
107 | ],
108 | "être" : [
109 | "etre"
110 | ],
111 | "expérimental" : [
112 | "experimental"
113 | ],
114 | "fascisme" : [
115 | "fachisme"
116 | ],
117 | "fascismes" : [
118 | "fachismes"
119 | ],
120 | "fasciste" : [
121 | "fachiste"
122 | ],
123 | "fascistes" : [
124 | "fachistes"
125 | ],
126 | "flottille" : [
127 | "flotille"
128 | ],
129 | "flotrilles" : [
130 | "flotilles"
131 | ],
132 | "foehn" : [
133 | "fœhn"
134 | ],
135 | "Guiana" : [
136 | "Guyana"
137 | ],
138 | "ici" : [
139 | "içi"
140 | ],
141 | "îlot" : [
142 | "ilôt"
143 | ],
144 | "inclus" : [
145 | "inclu"
146 | ],
147 | "Israélien" : [
148 | "Israëlien"
149 | ],
150 | "Israéliens" : [
151 | "Israëliens"
152 | ],
153 | "lipofuscine" : [
154 | "lipofucsine"
155 | ],
156 | "merci" : [
157 | "merçi"
158 | ],
159 | "merveilleux" : [
160 | "merveilleu"
161 | ],
162 | "niveau" : [
163 | "nivau"
164 | ],
165 | "par-ci": [
166 | "par ci"
167 | ],
168 | "par-la": [
169 | "par la"
170 | ],
171 | "patin à roulettes" : [
172 | "patin à roues"
173 | ],
174 | "pendre la crémaillère" : [
175 | "pendre la crémallière"
176 | ],
177 | "peut-être" : [
178 | "peut être"
179 | ],
180 | "poisse" : [
181 | "pouasse"
182 | ],
183 | "pourparlers" : [
184 | "pourpalers"
185 | ],
186 | "protège" : [
187 | "protége"
188 | ],
189 | "qualité" : [
190 | "qualitée"
191 | ],
192 | "roder" : [
193 | "rôder"
194 | ],
195 | "saynète" : [
196 | "saynette"
197 | ],
198 | "soi-disant" : [
199 | "soit-disant"
200 | ],
201 | "transsexuel" : [
202 | "transexuel"
203 | ],
204 | "transsexuels" : [
205 | "transexuels"
206 | ],
207 | "trompe-l’œil" : [
208 | "trompe l'oeil"
209 | ],
210 | }
--------------------------------------------------------------------------------
/SyntaxAutoFix/words/it.json:
--------------------------------------------------------------------------------
1 | {
2 | "abbandonare": [
3 | "abbandoare"
4 | ],
5 | "abbastanza": [
6 | "abastanza",
7 | "ababstanza",
8 | "abbstanza",
9 | "abbstanza",
10 | "abbastanzia",
11 | "abbatsanza"
12 | ],
13 | "abbiamo": [
14 | "abbimoa",
15 | "abbimo",
16 | "abbimo",
17 | "abbaimo"
18 | ],
19 | "abbonamento": [
20 | "abonamento"
21 | ],
22 | "abilitate": [
23 | "abiltiate"
24 | ],
25 | "abilitati": [
26 | "abiltiati"
27 | ],
28 | "abilitato": [
29 | "abiltiato",
30 | "abilitaot"
31 | ],
32 | "abituata": [
33 | "abiutata"
34 | ],
35 | "abituato": [
36 | "abiutato"
37 | ],
38 | "accede": [
39 | "acede"
40 | ],
41 | "accessi": [
42 | "acessi"
43 | ],
44 | "accesso": [
45 | "acecsso",
46 | "acesso"
47 | ],
48 | "accetta": [
49 | "acectta"
50 | ],
51 | "accettato": [
52 | "acecttato"
53 | ],
54 | "accettavo": [
55 | "accetavo"
56 | ],
57 | "accettazione": [
58 | "accetazione"
59 | ],
60 | "accontenta": [
61 | "acontenta"
62 | ],
63 | "accontertarti": [
64 | "acocntentarti"
65 | ],
66 | "accorpiamo": [
67 | "accopriamo"
68 | ],
69 | "acquistabili": [
70 | "acquistbili"
71 | ],
72 | "addirittura": [
73 | "addirittuera"
74 | ],
75 | "adesivi": [
76 | "adevisi"
77 | ],
78 | "affidabile": [
79 | "affadabile"
80 | ],
81 | "affrontata": [
82 | "affrotnata"
83 | ],
84 | "aggiornamento": [
85 | "aggiornametno",
86 | "agigornamento"
87 | ],
88 | "aggiornando": [
89 | "aggiorando"
90 | ],
91 | "aggiornare": [
92 | "agigornare",
93 | "aggioranre"
94 | ],
95 | "aggiornata": [
96 | "agigornata"
97 | ],
98 | "aggiornato": [
99 | "agiornato",
100 | "agigornato",
101 | "agigornato"
102 | ],
103 | "aggiorni": [
104 | "aggionri"
105 | ],
106 | "aggiorno": [
107 | "agiorno"
108 | ],
109 | "aggiudicato": [
110 | "aggiudato"
111 | ],
112 | "aggiunge": [
113 | "agiunge"
114 | ],
115 | "aggiungere": [
116 | "aggiugnere",
117 | "aggiugnere"
118 | ],
119 | "aggiungerne": [
120 | "aggiugnerne"
121 | ],
122 | "aggiungiamo": [
123 | "aggiungiami",
124 | "aggiungiuamo"
125 | ],
126 | "aggiungono": [
127 | "agigungono"
128 | ],
129 | "aggiunto": [
130 | "agignto"
131 | ],
132 | "aggregazione": [
133 | "aggregazoine"
134 | ],
135 | "aggreghiamo": [
136 | "agreghiamo"
137 | ],
138 | "aiutano": [
139 | "aiutnao"
140 | ],
141 | "alcune": [
142 | "alcuen"
143 | ],
144 | "algoritmi": [
145 | "algortimi"
146 | ],
147 | "alimentatore": [
148 | "alimetnatore"
149 | ],
150 | "alla": [
151 | "alal"
152 | ],
153 | "alle": [
154 | "alel"
155 | ],
156 | "alleanza": [
157 | "allenaza"
158 | ],
159 | "alleanze": [
160 | "allenaze"
161 | ],
162 | "allineamento": [
163 | "allineameto"
164 | ],
165 | "allineate": [
166 | "allienate"
167 | ],
168 | "allineati": [
169 | "allienati"
170 | ],
171 | "allora": [
172 | "alora"
173 | ],
174 | "almeno": [
175 | "lameno",
176 | "almneo",
177 | "almeo"
178 | ],
179 | "alternative": [
180 | "alterantive"
181 | ],
182 | "alternativi": [
183 | "alterantivi"
184 | ],
185 | "alternativo": [
186 | "laternativo"
187 | ],
188 | "altra": [
189 | "latra"
190 | ],
191 | "altre": [
192 | "latre",
193 | "latre"
194 | ],
195 | "altri": [
196 | "altr"
197 | ],
198 | "altrimenti": [
199 | "altriemnti"
200 | ],
201 | "altro": [
202 | "latro",
203 | "alotr"
204 | ],
205 | "ammesso": [
206 | "amesso"
207 | ],
208 | "ammettere": [
209 | "amettere"
210 | ],
211 | "amministrativa": [
212 | "amminsitrativa"
213 | ],
214 | "amministratore": [
215 | "amminsitratore",
216 | "amminsitratore"
217 | ],
218 | "amministrazioni": [
219 | "amministraizoni"
220 | ],
221 | "analizzati": [
222 | "nalizzati"
223 | ],
224 | "anche": [
225 | "anceh",
226 | "nahce",
227 | "anhce",
228 | "nahce"
229 | ],
230 | "ancora": [
231 | "ancoran",
232 | "acora"
233 | ],
234 | "andando": [
235 | "anando"
236 | ],
237 | "andare": [
238 | "anadre"
239 | ],
240 | "andato": [
241 | "adnato"
242 | ],
243 | "andavano": [
244 | "anvano"
245 | ],
246 | "andrebbero": [
247 | "andrebero"
248 | ],
249 | "animazioni": [
250 | "animaizoni"
251 | ],
252 | "antonio": [
253 | "antono"
254 | ],
255 | "anzi": [
256 | "nzi"
257 | ],
258 | "aperte": [
259 | "paerte"
260 | ],
261 | "aperto": [
262 | "paerto"
263 | ],
264 | "apparire": [
265 | "apprire"
266 | ],
267 | "appena": [
268 | "appean"
269 | ],
270 | "approfittare": [
271 | "appforittare"
272 | ],
273 | "approfittiamo": [
274 | "approfitiamo"
275 | ],
276 | "aprile": [
277 | "parile"
278 | ],
279 | "arrapano": [
280 | "arrpano"
281 | ],
282 | "arrivano": [
283 | "arivano"
284 | ],
285 | "arrivare": [
286 | "arivare"
287 | ],
288 | "arrivati": [
289 | "arivati"
290 | ],
291 | "arriveremo": [
292 | "ariveremo"
293 | ],
294 | "arruginito": [
295 | "arruginto"
296 | ],
297 | "articoli": [
298 | "artiocli",
299 | "artiocli"
300 | ],
301 | "ascensore": [
302 | "ascnesore"
303 | ],
304 | "ascolta": [
305 | "asoclta"
306 | ],
307 | "aspetta": [
308 | "aspeta"
309 | ],
310 | "aspettando": [
311 | "apsettando"
312 | ],
313 | "aspettare": [
314 | "apsettare",
315 | "aspetare"
316 | ],
317 | "aspettavo": [
318 | "aspetavo"
319 | ],
320 | "assicurare": [
321 | "assicuare"
322 | ],
323 | "associazione": [
324 | "assocaizione"
325 | ],
326 | "associazioni": [
327 | "asociazioni"
328 | ],
329 | "assolutamente": [
330 | "assolutametne"
331 | ],
332 | "attesa": [
333 | "atesa",
334 | "atesa"
335 | ],
336 | "attimo": [
337 | "attim"
338 | ],
339 | "attrezzi": [
340 | "atrezi"
341 | ],
342 | "attualmente": [
343 | "attualemnte",
344 | "attualemnte",
345 | "attualemnte"
346 | ],
347 | "attuenanti": [
348 | "attuentanti"
349 | ],
350 | "autobiografia": [
351 | "autobiogrfia"
352 | ],
353 | "automatically": [
354 | "autoamticaly"
355 | ],
356 | "automaticamente": [
357 | "autoamticamente"
358 | ],
359 | "automatici": [
360 | "autoamtici"
361 | ],
362 | "automatico": [
363 | "autoamtico",
364 | "autamatico",
365 | "autmatico",
366 | "autmatico"
367 | ],
368 | "avanzano": [
369 | "avazanzano"
370 | ],
371 | "aver": [
372 | "vare"
373 | ],
374 | "avere": [
375 | "avcere"
376 | ],
377 | "averli": [
378 | "vaerli"
379 | ],
380 | "averlo": [
381 | "vaerlo"
382 | ],
383 | "avete": [
384 | "avede"
385 | ],
386 | "avevamo": [
387 | "avevao"
388 | ],
389 | "avevi": [
390 | "vevi"
391 | ],
392 | "avevo": [
393 | "aveo"
394 | ],
395 | "avrebbe": [
396 | "avrebe"
397 | ],
398 | "avuto": [
399 | "auvot"
400 | ],
401 | "avvenuto": [
402 | "avenuto"
403 | ],
404 | "azienda": [
405 | "azineda"
406 | ],
407 | "azione": [
408 | "aziine"
409 | ],
410 | "balle": [
411 | "balel"
412 | ],
413 | "barbara": [
414 | "barabra"
415 | ],
416 | "bassissima": [
417 | "bassisima"
418 | ],
419 | "basta": [
420 | "bsta",
421 | "basat"
422 | ],
423 | "battaglia": [
424 | "bataglia"
425 | ],
426 | "batteria": [
427 | "batteira"
428 | ],
429 | "bella": [
430 | "belal"
431 | ],
432 | "benvenuta": [
433 | "bnevenuta"
434 | ],
435 | "bestemmiare": [
436 | "bestemiare"
437 | ],
438 | "bibliografia": [
439 | "bibligorafia"
440 | ],
441 | "bidoni": [
442 | "biodni"
443 | ],
444 | "bisogna": [
445 | "bisgoan",
446 | "bisgona",
447 | "bisgona"
448 | ],
449 | "bisognerebbe": [
450 | "biosgnerebbe"
451 | ],
452 | "bisogno": [
453 | "bisgono"
454 | ],
455 | "bloccarli": [
456 | "blocarli"
457 | ],
458 | "blocchi": [
459 | "blochci"
460 | ],
461 | "bordi": [
462 | "borid"
463 | ],
464 | "buongiorno": [
465 | "Buongirono"
466 | ],
467 | "buono": [
468 | "bvuono"
469 | ],
470 | "buttando": [
471 | "buttnado"
472 | ],
473 | "cacchio": [
474 | "cachcio"
475 | ],
476 | "caduto": [
477 | "caudot"
478 | ],
479 | "cambia": [
480 | "cabmia"
481 | ],
482 | "cambiano": [
483 | "cabiano"
484 | ],
485 | "cambiare": [
486 | "canbiare"
487 | ],
488 | "cambiarlo": [
489 | "camobairlo"
490 | ],
491 | "cambio": [
492 | "cabmio",
493 | "cmabio",
494 | "acmbio"
495 | ],
496 | "campagna": [
497 | "campgna"
498 | ],
499 | "campagne": [
500 | "camapgne"
501 | ],
502 | "cancellare": [
503 | "cancelalre"
504 | ],
505 | "capire": [
506 | "cpaire",
507 | "cpaire",
508 | "cpaire"
509 | ],
510 | "capisce": [
511 | "capise",
512 | "cpisce"
513 | ],
514 | "capisco": [
515 | "cpiasco"
516 | ],
517 | "capiscono": [
518 | "capisconmo"
519 | ],
520 | "capite": [
521 | "caoite"
522 | ],
523 | "capito": [
524 | "capto",
525 | "cpaito"
526 | ],
527 | "cappellata": [
528 | "cappellatta"
529 | ],
530 | "caricamento": [
531 | "caricmento"
532 | ],
533 | "carriera": [
534 | "carrira"
535 | ],
536 | "cartella": [
537 | "cartelal"
538 | ],
539 | "cartellazione": [
540 | "caretllazione"
541 | ],
542 | "casini": [
543 | "casiin"
544 | ],
545 | "categoria": [
546 | "categoira"
547 | ],
548 | "cavolo": [
549 | "caovlo"
550 | ],
551 | "cazzi": [
552 | "caziz"
553 | ],
554 | "cercherei": [
555 | "cercehrei"
556 | ],
557 | "cerco": [
558 | "erco"
559 | ],
560 | "cestinarlo": [
561 | "cestianrlo"
562 | ],
563 | "che": [
564 | "ceh",
565 | "hce"
566 | ],
567 | "chi": [
568 | "hci"
569 | ],
570 | "chiamare": [
571 | "chiarare"
572 | ],
573 | "chiamiamo": [
574 | "hciamiamo"
575 | ],
576 | "chiaramente": [
577 | "chiaramento"
578 | ],
579 | "chiariva": [
580 | "chairiva"
581 | ],
582 | "chiave": [
583 | "chaive",
584 | "chiav"
585 | ],
586 | "chiede": [
587 | "chide",
588 | "cheide"
589 | ],
590 | "chiedere": [
591 | "chidere",
592 | "cheidere",
593 | "cheidere"
594 | ],
595 | "chiederti": [
596 | "chiererti",
597 | "chiderti"
598 | ],
599 | "chieder\u00f2": [
600 | "cheider\u00f2"
601 | ],
602 | "chiedete": [
603 | "cheidete"
604 | ],
605 | "chiediamo": [
606 | "chiadiamo"
607 | ],
608 | "chiesto": [
609 | "hicesto",
610 | "chisto",
611 | "cheisto"
612 | ],
613 | "cifra": [
614 | "cfira"
615 | ],
616 | "coinvolgere": [
617 | "coinvoglere"
618 | ],
619 | "collaborazione": [
620 | "collbaorazione"
621 | ],
622 | "collaborazioni": [
623 | "collaborzioni"
624 | ],
625 | "collegare": [
626 | "colelgare"
627 | ],
628 | "collegato": [
629 | "colelgato"
630 | ],
631 | "colleghi": [
632 | "colelghi"
633 | ],
634 | "collezione": [
635 | "colelzione"
636 | ],
637 | "comando": [
638 | "cmmando"
639 | ],
640 | "combinazioni": [
641 | "combinaizoni"
642 | ],
643 | "come": [
644 | "comne",
645 | "cvome",
646 | "coem",
647 | "ocme"
648 | ],
649 | "commentato": [
650 | "commetnato"
651 | ],
652 | "commento": [
653 | "commentio"
654 | ],
655 | "compatibili": [
656 | "comaptibili"
657 | ],
658 | "compila": [
659 | "ocmpila"
660 | ],
661 | "compilare": [
662 | "compialre",
663 | "compialre"
664 | ],
665 | "compilarli": [
666 | "complilarli"
667 | ],
668 | "compilate": [
669 | "compialte"
670 | ],
671 | "completa": [
672 | "compelta"
673 | ],
674 | "complicato": [
675 | "complciato"
676 | ],
677 | "complicazioni": [
678 | "complicaizoni"
679 | ],
680 | "comporta": [
681 | "comprta"
682 | ],
683 | "comportamento": [
684 | "comprotamento"
685 | ],
686 | "comportare": [
687 | "comprtare"
688 | ],
689 | "comportarmi": [
690 | "comprotarmi"
691 | ],
692 | "compra": [
693 | "compa"
694 | ],
695 | "comprare": [
696 | "comrapre"
697 | ],
698 | "comprato": [
699 | "comrpato"
700 | ],
701 | "compreso": [
702 | "comrpeso"
703 | ],
704 | "compri": [
705 | "cmpri"
706 | ],
707 | "comunicazione": [
708 | "comunicaizone",
709 | "comunicziaone"
710 | ],
711 | "comunicazioni": [
712 | "comunicaizoni"
713 | ],
714 | "comunque": [
715 | "counque",
716 | "comunqwue",
717 | "comuqne",
718 | "comunqeu",
719 | "comnuque",
720 | "conuque",
721 | "comuqnue",
722 | "comuinque",
723 | "comuhque",
724 | "comnuque",
725 | "conunque",
726 | "conunque"
727 | ],
728 | "con": [
729 | "ocn"
730 | ],
731 | "concorso": [
732 | "concirso"
733 | ],
734 | "condividi": [
735 | "condivdi"
736 | ],
737 | "condivisione": [
738 | "condivisioen"
739 | ],
740 | "condizioni": [
741 | "codnizioni"
742 | ],
743 | "condotta": [
744 | "condatta"
745 | ],
746 | "confartigianato": [
747 | "confartiginato"
748 | ],
749 | "conferenze": [
750 | "conferneze"
751 | ],
752 | "confermato": [
753 | "conferamto"
754 | ],
755 | "configurare": [
756 | "confgiurare"
757 | ],
758 | "configurarlo": [
759 | "confirugarlo"
760 | ],
761 | "configurati": [
762 | "connfigurati"
763 | ],
764 | "configurato": [
765 | "confogirato"
766 | ],
767 | "configurazione": [
768 | "configurazioen",
769 | "configuarazione",
770 | "condigurazione",
771 | "confgiurazione",
772 | "confgiurazione"
773 | ],
774 | "confusione": [
775 | "confusioen"
776 | ],
777 | "conosce": [
778 | "consoce"
779 | ],
780 | "conoscenza": [
781 | "consocenza",
782 | "cconscenza"
783 | ],
784 | "conoscenze": [
785 | "consocenze"
786 | ],
787 | "conoscere": [
788 | "consocere"
789 | ],
790 | "conoscete": [
791 | "consocete"
792 | ],
793 | "conoscevo": [
794 | "consocevo"
795 | ],
796 | "conosci": [
797 | "consosci"
798 | ],
799 | "consegnano": [
800 | "cosnegano"
801 | ],
802 | "considera": [
803 | "consdiera"
804 | ],
805 | "considerando": [
806 | "cosniderando",
807 | "consierando"
808 | ],
809 | "considerare": [
810 | "consdierare"
811 | ],
812 | "considerate": [
813 | "consdierate"
814 | ],
815 | "consideriamo": [
816 | "consdieriamo"
817 | ],
818 | "contattare": [
819 | "cotnatt"
820 | ],
821 | "contattato": [
822 | "contattaot",
823 | "concattato"
824 | ],
825 | "contatto": [
826 | "cotatto"
827 | ],
828 | "contemporanea": [
829 | "conemporanea"
830 | ],
831 | "contento": [
832 | "conteto"
833 | ],
834 | "continuare": [
835 | "continaure"
836 | ],
837 | "continuo": [
838 | "contunuo"
839 | ],
840 | "contrappone": [
841 | "conrappone"
842 | ],
843 | "contratto": [
844 | "cotnratto",
845 | "cotnratto"
846 | ],
847 | "contributo": [
848 | "contirbuto"
849 | ],
850 | "contributori": [
851 | "contirbutori"
852 | ],
853 | "controllare": [
854 | "controlalre",
855 | "controlalre"
856 | ],
857 | "conviene": [
858 | "convine"
859 | ],
860 | "convincere": [
861 | "convicnere"
862 | ],
863 | "coordinarsi": [
864 | "coordianrsi"
865 | ],
866 | "copia": [
867 | "copai"
868 | ],
869 | "coraggio": [
870 | "coragio"
871 | ],
872 | "correggeva": [
873 | "corregeva"
874 | ],
875 | "correttamente": [
876 | "correttamnet"
877 | ],
878 | "corretti": [
879 | "coretti"
880 | ],
881 | "corretto": [
882 | "correto",
883 | "coretto"
884 | ],
885 | "corrispondente": [
886 | "corrispondete"
887 | ],
888 | "corrispondete": [
889 | "corrispondnte"
890 | ],
891 | "corrispondono": [
892 | "cirrispondono"
893 | ],
894 | "cose": [
895 | "cse"
896 | ],
897 | "costante": [
898 | "costsnte"
899 | ],
900 | "costanti": [
901 | "costnati"
902 | ],
903 | "creazione": [
904 | "creazioen"
905 | ],
906 | "dargli": [
907 | "darlgi"
908 | ],
909 | "dashboard": [
910 | "dasbhoard"
911 | ],
912 | "decentemente": [
913 | "decentemnte"
914 | ],
915 | "decidere": [
916 | "edcidere"
917 | ],
918 | "decisamente": [
919 | "decisametne",
920 | "decisametne",
921 | "decisametne"
922 | ],
923 | "declinare": [
924 | "declianre"
925 | ],
926 | "definire": [
927 | "defnire"
928 | ],
929 | "definitiva": [
930 | "definitva"
931 | ],
932 | "definitivo": [
933 | "definitvo"
934 | ],
935 | "del": [
936 | "dle"
937 | ],
938 | "della": [
939 | "delal"
940 | ],
941 | "delle": [
942 | "dele",
943 | "delel"
944 | ],
945 | "democratico": [
946 | "demcoratico"
947 | ],
948 | "deposito": [
949 | "despoito"
950 | ],
951 | "depresse": [
952 | "deprese"
953 | ],
954 | "descrizione": [
955 | "descirzione",
956 | "descirizione"
957 | ],
958 | "destroy": [
959 | "desotry"
960 | ],
961 | "dettagli": [
962 | "detagli"
963 | ],
964 | "dettaglio": [
965 | "detaglio"
966 | ],
967 | "devi": [
968 | "edvi"
969 | ],
970 | "dicevo": [
971 | "dcevo"
972 | ],
973 | "differenza": [
974 | "diferenza"
975 | ],
976 | "difficile": [
977 | "difficiel",
978 | "difficle"
979 | ],
980 | "digitalizzare": [
981 | "digitalizare"
982 | ],
983 | "dimenticato": [
984 | "dimetnicato"
985 | ],
986 | "dimentichiamo": [
987 | "dimenticiamo"
988 | ],
989 | "dimmi": [
990 | "dimim"
991 | ],
992 | "dimostra": [
993 | "dimsotra"
994 | ],
995 | "dimostrare": [
996 | "dimsotrare",
997 | "dimsotrare"
998 | ],
999 | "dimostrata": [
1000 | "dimsotrata"
1001 | ],
1002 | "dimostrato": [
1003 | "dimsotrato"
1004 | ],
1005 | "dipendente": [
1006 | "dipenmdente"
1007 | ],
1008 | "direbbero": [
1009 | "direbero"
1010 | ],
1011 | "direi": [
1012 | "dieri",
1013 | "idrei"
1014 | ],
1015 | "diretta": [
1016 | "direta"
1017 | ],
1018 | "direttamente": [
1019 | "direttametne",
1020 | "direttametne",
1021 | "direttametne",
1022 | "direttametne",
1023 | "direttametne",
1024 | "diretamente",
1025 | "direttametne",
1026 | "diretamente",
1027 | "direttmanete",
1028 | "direttametne",
1029 | "direttametne",
1030 | "direttametn"
1031 | ],
1032 | "dirglielo": [
1033 | "dirgielo",
1034 | "dirglelo"
1035 | ],
1036 | "disallineato": [
1037 | "disallienato"
1038 | ],
1039 | "disattivare": [
1040 | "diattivare"
1041 | ],
1042 | "discussione": [
1043 | "discusisone"
1044 | ],
1045 | "discussioni": [
1046 | "discusisoni"
1047 | ],
1048 | "disistallare": [
1049 | "disistalalre"
1050 | ],
1051 | "dispiace": [
1052 | "dispaice"
1053 | ],
1054 | "dispiaceva": [
1055 | "dispaiceva"
1056 | ],
1057 | "disposizione": [
1058 | "dispozione"
1059 | ],
1060 | "distrazioni": [
1061 | "distraizoni"
1062 | ],
1063 | "diventare": [
1064 | "dinvetare"
1065 | ],
1066 | "diventato": [
1067 | "dievntato",
1068 | "diventto"
1069 | ],
1070 | "diversi": [
1071 | "dibversi",
1072 | "diveris"
1073 | ],
1074 | "divertente": [
1075 | "divertenet",
1076 | "divertenete"
1077 | ],
1078 | "documentazione": [
1079 | "documentaizone"
1080 | ],
1081 | "dollari": [
1082 | "dolalri"
1083 | ],
1084 | "domanda": [
1085 | "doamnda",
1086 | "domadna"
1087 | ],
1088 | "domande": [
1089 | "domaned",
1090 | "doamnde"
1091 | ],
1092 | "domani": [
1093 | "doamni",
1094 | "doamni"
1095 | ],
1096 | "dominio": [
1097 | "dominipo"
1098 | ],
1099 | "donazione": [
1100 | "donazioen"
1101 | ],
1102 | "dormivo": [
1103 | "odrmivo"
1104 | ],
1105 | "dovevo": [
1106 | "doveo"
1107 | ],
1108 | "dovrebbe": [
1109 | "dorvebbe",
1110 | "dovrebe"
1111 | ],
1112 | "dovrebbero": [
1113 | "dovrebero"
1114 | ],
1115 | "dovreste": [
1116 | "drovreste"
1117 | ],
1118 | "dovuto": [
1119 | "duvot"
1120 | ],
1121 | "due": [
1122 | "deu"
1123 | ],
1124 | "duplicati": [
1125 | "duplciati"
1126 | ],
1127 | "durante": [
1128 | "durnte"
1129 | ],
1130 | "ebbe": [
1131 | "ebe"
1132 | ],
1133 | "efffetto": [
1134 | "effeto"
1135 | ],
1136 | "elaborazione": [
1137 | "elborazione"
1138 | ],
1139 | "elettronica": [
1140 | "eletronica"
1141 | ],
1142 | "eliminare": [
1143 | "eliniare"
1144 | ],
1145 | "energie": [
1146 | "enerige"
1147 | ],
1148 | "enigmistica": [
1149 | "engmistica"
1150 | ],
1151 | "entrambe": [
1152 | "netrambe"
1153 | ],
1154 | "entrano": [
1155 | "entrnao"
1156 | ],
1157 | "entrare": [
1158 | "netrare"
1159 | ],
1160 | "entrato": [
1161 | "etrnato"
1162 | ],
1163 | "equivoco": [
1164 | "ecquivoco"
1165 | ],
1166 | "eravamo": [
1167 | "eravano"
1168 | ],
1169 | "errore": [
1170 | "erroe"
1171 | ],
1172 | "esattamente": [
1173 | "esattametne"
1174 | ],
1175 | "esempio": [
1176 | "eempio"
1177 | ],
1178 | "esiste": [
1179 | "essite"
1180 | ],
1181 | "espande": [
1182 | "epsande"
1183 | ],
1184 | "esperienza": [
1185 | "espereienza",
1186 | "epserienza"
1187 | ],
1188 | "esportare": [
1189 | "espoertare"
1190 | ],
1191 | "esportazione": [
1192 | "esportaizone"
1193 | ],
1194 | "espressi": [
1195 | "esperssi"
1196 | ],
1197 | "essere": [
1198 | "esere",
1199 | "essre"
1200 | ],
1201 | "estensione": [
1202 | "estnesione"
1203 | ],
1204 | "estensioni": [
1205 | "esntesioni"
1206 | ],
1207 | "esterni": [
1208 | "esterini"
1209 | ],
1210 | "estrae": [
1211 | "estrate"
1212 | ],
1213 | "estratte": [
1214 | "etsratte"
1215 | ],
1216 | "estratto": [
1217 | "estrato"
1218 | ],
1219 | "euro": [
1220 | "uero"
1221 | ],
1222 | "eventuale": [
1223 | "envetuale"
1224 | ],
1225 | "evidentemente": [
1226 | "evidentemetne"
1227 | ],
1228 | "facciamo": [
1229 | "faciamo"
1230 | ],
1231 | "faccio": [
1232 | "facco",
1233 | "facico"
1234 | ],
1235 | "facemmo": [
1236 | "facemo"
1237 | ],
1238 | "facendo": [
1239 | "afcendo"
1240 | ],
1241 | "facile": [
1242 | "faciel"
1243 | ],
1244 | "fanno": [
1245 | "fano"
1246 | ],
1247 | "fare": [
1248 | "fafre",
1249 | "frare"
1250 | ],
1251 | "fargli": [
1252 | "faregli"
1253 | ],
1254 | "farla": [
1255 | "afrla"
1256 | ],
1257 | "fatemelo": [
1258 | "ffatemelo"
1259 | ],
1260 | "fatti": [
1261 | "faftti"
1262 | ],
1263 | "fattibili": [
1264 | "fattibli"
1265 | ],
1266 | "fatto": [
1267 | "fatot",
1268 | "aftto"
1269 | ],
1270 | "febbraio": [
1271 | "febraio",
1272 | "febbrai"
1273 | ],
1274 | "fermato": [
1275 | "femrato"
1276 | ],
1277 | "fermo": [
1278 | "femro",
1279 | "femro"
1280 | ],
1281 | "festeggiare": [
1282 | "festegiare"
1283 | ],
1284 | "ficcare": [
1285 | "ficacre"
1286 | ],
1287 | "fighi": [
1288 | "ifghi"
1289 | ],
1290 | "filmare": [
1291 | "filmanre"
1292 | ],
1293 | "fine": [
1294 | "ifne"
1295 | ],
1296 | "finestra": [
1297 | "finiestra"
1298 | ],
1299 | "finisce": [
1300 | "ffinisce"
1301 | ],
1302 | "finished": [
1303 | "finisehd"
1304 | ],
1305 | "firmare": [
1306 | "firamre"
1307 | ],
1308 | "fissiamoci": [
1309 | "fissimaoci"
1310 | ],
1311 | "flashare": [
1312 | "flsahre"
1313 | ],
1314 | "fondazione": [
1315 | "fondaizone"
1316 | ],
1317 | "formale": [
1318 | "fotmale"
1319 | ],
1320 | "formato": [
1321 | "formatoo"
1322 | ],
1323 | "fornitore": [
1324 | "frornitore"
1325 | ],
1326 | "forse": [
1327 | "frose"
1328 | ],
1329 | "fotocopiatrice": [
1330 | "fotocopitraice"
1331 | ],
1332 | "frammentato": [
1333 | "frammetnato"
1334 | ],
1335 | "francesco": [
1336 | "frnacesco"
1337 | ],
1338 | "frattempo": [
1339 | "fratempo",
1340 | "frattmepo"
1341 | ],
1342 | "fretta": [
1343 | "freta"
1344 | ],
1345 | "frontiere": [
1346 | "frotneiere"
1347 | ],
1348 | "funziona": [
1349 | "funizona"
1350 | ],
1351 | "funzionante": [
1352 | "funzionate"
1353 | ],
1354 | "funzionare": [
1355 | "funzioanre"
1356 | ],
1357 | "funzionavano": [
1358 | "funzioanvano"
1359 | ],
1360 | "funzione": [
1361 | "fuznione",
1362 | "funzioen"
1363 | ],
1364 | "funzioni": [
1365 | "funizoni"
1366 | ],
1367 | "generare": [
1368 | "generaer"
1369 | ],
1370 | "genitore": [
1371 | "gentiore"
1372 | ],
1373 | "gestione": [
1374 | "gestioen"
1375 | ],
1376 | "gioiello": [
1377 | "gioello"
1378 | ],
1379 | "giorni": [
1380 | "gionri",
1381 | "grioni"
1382 | ],
1383 | "giovedi": [
1384 | "givoed\u00ec"
1385 | ],
1386 | "girare": [
1387 | "giarre"
1388 | ],
1389 | "girato": [
1390 | "giraot"
1391 | ],
1392 | "giustamente": [
1393 | "giuistamente",
1394 | "gisutamente"
1395 | ],
1396 | "giusto": [
1397 | "viusto",
1398 | "guisto"
1399 | ],
1400 | "glielo": [
1401 | "glie"
1402 | ],
1403 | "gloria": [
1404 | "glora"
1405 | ],
1406 | "gomma": [
1407 | "gomam"
1408 | ],
1409 | "gomme": [
1410 | "gomem"
1411 | ],
1412 | "grado": [
1413 | "grao"
1414 | ],
1415 | "gratuito": [
1416 | "gratutito"
1417 | ],
1418 | "grazie": [
1419 | "graize"
1420 | ],
1421 | "grosso": [
1422 | "gorsso"
1423 | ],
1424 | "gruppi": [
1425 | "gurppi"
1426 | ],
1427 | "guadagniamo": [
1428 | "gadagniamo"
1429 | ],
1430 | "guardando": [
1431 | "guardandno"
1432 | ],
1433 | "guerra": [
1434 | "guera"
1435 | ],
1436 | "guida": [
1437 | "guda"
1438 | ],
1439 | "hanno": [
1440 | "hannio",
1441 | "hann",
1442 | "hano",
1443 | "hanon",
1444 | "hhan"
1445 | ],
1446 | "ignoranza": [
1447 | "ignorazna"
1448 | ],
1449 | "ignori": [
1450 | "ingori"
1451 | ],
1452 | "il": [
1453 | "lil"
1454 | ],
1455 | "imbarazzante": [
1456 | "imabarazzante"
1457 | ],
1458 | "immagina": [
1459 | "imamgina"
1460 | ],
1461 | "immaginato": [
1462 | "imamginato"
1463 | ],
1464 | "immagine": [
1465 | "imamgine"
1466 | ],
1467 | "immagini": [
1468 | "imamgini",
1469 | "immaggini",
1470 | "imamgini",
1471 | "imamgiin",
1472 | "imamgini"
1473 | ],
1474 | "immagino": [
1475 | "immgaino",
1476 | "imamgino",
1477 | "imamgino"
1478 | ],
1479 | "impara": [
1480 | "imapra"
1481 | ],
1482 | "imparare": [
1483 | "imaprare"
1484 | ],
1485 | "impegnare": [
1486 | "impengare"
1487 | ],
1488 | "impegni": [
1489 | "impgni"
1490 | ],
1491 | "impianta": [
1492 | "impianata"
1493 | ],
1494 | "implementare": [
1495 | "implemntare"
1496 | ],
1497 | "implementato": [
1498 | "implmentato"
1499 | ],
1500 | "implementazioni": [
1501 | "implementaizoni"
1502 | ],
1503 | "importante": [
1504 | "imporntate",
1505 | "importate",
1506 | "importanete"
1507 | ],
1508 | "importare": [
1509 | "oimportare"
1510 | ],
1511 | "impossibile": [
1512 | "impossibiel"
1513 | ],
1514 | "impostazioni": [
1515 | "impsotazioni"
1516 | ],
1517 | "impressione": [
1518 | "imrpessione"
1519 | ],
1520 | "incastrarvi": [
1521 | "incastrarcvi"
1522 | ],
1523 | "incentivi": [
1524 | "incetivi"
1525 | ],
1526 | "incompetenti": [
1527 | "incompetneti"
1528 | ],
1529 | "incredibile": [
1530 | "incerdibile"
1531 | ],
1532 | "indirizzo": [
1533 | "idirizzo"
1534 | ],
1535 | "inevitabilmente": [
1536 | "inveitabilmente"
1537 | ],
1538 | "influire": [
1539 | "influre"
1540 | ],
1541 | "influisce": [
1542 | "influsice"
1543 | ],
1544 | "informarlo": [
1545 | "inofrmarlo"
1546 | ],
1547 | "informatica": [
1548 | "inforamtica"
1549 | ],
1550 | "informazione": [
1551 | "informazone"
1552 | ],
1553 | "informazioni": [
1554 | "informaizoni"
1555 | ],
1556 | "inglese": [
1557 | "inglse"
1558 | ],
1559 | "ingrandimento": [
1560 | "ingradimento"
1561 | ],
1562 | "iniziare": [
1563 | "inizare"
1564 | ],
1565 | "innalzati": [
1566 | "inalzati"
1567 | ],
1568 | "innanzitutto": [
1569 | "innazitutto"
1570 | ],
1571 | "innestate": [
1572 | "inestate"
1573 | ],
1574 | "inniettata": [
1575 | "inietata"
1576 | ],
1577 | "inoltre": [
1578 | "inolter"
1579 | ],
1580 | "insalata": [
1581 | "inslata"
1582 | ],
1583 | "inserire": [
1584 | "isnerire"
1585 | ],
1586 | "inserito": [
1587 | "inmserito"
1588 | ],
1589 | "insomma": [
1590 | "insooma"
1591 | ],
1592 | "inspiegabilmente": [
1593 | "inspiegabilemtne"
1594 | ],
1595 | "installare": [
1596 | "instalalre"
1597 | ],
1598 | "installazione": [
1599 | "installaizone"
1600 | ],
1601 | "intanto": [
1602 | "intnaot",
1603 | "intant",
1604 | "intnato",
1605 | "intnato"
1606 | ],
1607 | "integrazioni": [
1608 | "integraizoni"
1609 | ],
1610 | "integrerei": [
1611 | "itnegrerei"
1612 | ],
1613 | "intelligente": [
1614 | "inteliggente"
1615 | ],
1616 | "intendi": [
1617 | "itendi"
1618 | ],
1619 | "interattivi": [
1620 | "interativi"
1621 | ],
1622 | "interazioni": [
1623 | "interaizoni"
1624 | ],
1625 | "interessa": [
1626 | "itneressa",
1627 | "interess"
1628 | ],
1629 | "interessano": [
1630 | "interessnao"
1631 | ],
1632 | "interessante": [
1633 | "itneressante"
1634 | ],
1635 | "interessanti": [
1636 | "itneressanti",
1637 | "itneressanti"
1638 | ],
1639 | "interessata": [
1640 | "itneressata",
1641 | "interesata"
1642 | ],
1643 | "interessati": [
1644 | "itneressati",
1645 | "itneressati"
1646 | ],
1647 | "interessato": [
1648 | "itneressato"
1649 | ],
1650 | "interesse": [
1651 | "itneresse"
1652 | ],
1653 | "interfacce": [
1654 | "itnerfacce"
1655 | ],
1656 | "interfaccia": [
1657 | "interfaccai",
1658 | "itnerfaccia",
1659 | "iterfaccia"
1660 | ],
1661 | "internet": [
1662 | "itnernet"
1663 | ],
1664 | "interno": [
1665 | "itnerno"
1666 | ],
1667 | "inutile": [
1668 | "intuile"
1669 | ],
1670 | "invece": [
1671 | "ivnece",
1672 | "invce",
1673 | "invce"
1674 | ],
1675 | "inventano": [
1676 | "invetano"
1677 | ],
1678 | "inventarci": [
1679 | "ivnentarci"
1680 | ],
1681 | "inventarono": [
1682 | "invetarono"
1683 | ],
1684 | "iscrizione": [
1685 | "iscrizioen"
1686 | ],
1687 | "italiana": [
1688 | "itliana"
1689 | ],
1690 | "largo": [
1691 | "alrgo"
1692 | ],
1693 | "lascialo": [
1694 | "lascalo"
1695 | ],
1696 | "lasciare": [
1697 | "lascaire",
1698 | "lascair"
1699 | ],
1700 | "lasciato": [
1701 | "alsciato",
1702 | "lsciato",
1703 | "laciato"
1704 | ],
1705 | "lascio": [
1706 | "alscio"
1707 | ],
1708 | "lavatrice": [
1709 | "lvatrice"
1710 | ],
1711 | "lavora": [
1712 | "alvora"
1713 | ],
1714 | "lavorando": [
1715 | "alvorando"
1716 | ],
1717 | "lavorare": [
1718 | "lavrare",
1719 | "alvorare"
1720 | ],
1721 | "lavorato": [
1722 | "lavroato"
1723 | ],
1724 | "lavoro": [
1725 | "alvoro",
1726 | "alvoro",
1727 | "laovro"
1728 | ],
1729 | "le ho detto": [
1730 | "gli ho detto"
1731 | ],
1732 | "legale": [
1733 | "lgale"
1734 | ],
1735 | "leggendo": [
1736 | "elggendo",
1737 | "leggegndo"
1738 | ],
1739 | "leggere": [
1740 | "legere"
1741 | ],
1742 | "leggermente": [
1743 | "leggereemnte",
1744 | "leggeemrnte",
1745 | "legegremnte"
1746 | ],
1747 | "lentamente": [
1748 | "lentamnete"
1749 | ],
1750 | "letto": [
1751 | "eltto",
1752 | "leto"
1753 | ],
1754 | "liberativo": [
1755 | "lbierativo"
1756 | ],
1757 | "libero": [
1758 | "lbiero",
1759 | "libeor"
1760 | ],
1761 | "libreoffice": [
1762 | "lbireoffice"
1763 | ],
1764 | "libreria": [
1765 | "lbireria",
1766 | "lbireria",
1767 | "lbireria"
1768 | ],
1769 | "librerie": [
1770 | "lbirerie",
1771 | "lbirerie"
1772 | ],
1773 | "libro": [
1774 | "lbiro"
1775 | ],
1776 | "licenza": [
1777 | "lcienza"
1778 | ],
1779 | "licenziato": [
1780 | "lcienziato"
1781 | ],
1782 | "limite": [
1783 | "limte"
1784 | ],
1785 | "linea": [
1786 | "liena"
1787 | ],
1788 | "linguaggio": [
1789 | "linguagigo"
1790 | ],
1791 | "lista": [
1792 | "lsita"
1793 | ],
1794 | "locale": [
1795 | "lcoale"
1796 | ],
1797 | "localizzazione": [
1798 | "localizzaizione"
1799 | ],
1800 | "locazione": [
1801 | "localzione"
1802 | ],
1803 | "macchina": [
1804 | "amcchina",
1805 | "machcina",
1806 | "machina"
1807 | ],
1808 | "macchine": [
1809 | "machcine"
1810 | ],
1811 | "macchinetta": [
1812 | "machcinetta"
1813 | ],
1814 | "madonna": [
1815 | "madonan"
1816 | ],
1817 | "magagne": [
1818 | "amgagne"
1819 | ],
1820 | "magari": [
1821 | "mfgari"
1822 | ],
1823 | "magazzino": [
1824 | "amgazzino"
1825 | ],
1826 | "maggiore": [
1827 | "amggiore"
1828 | ],
1829 | "maggiori": [
1830 | "magigori"
1831 | ],
1832 | "magliette": [
1833 | "magleitte"
1834 | ],
1835 | "manca": [
1836 | "amnca"
1837 | ],
1838 | "mancano": [
1839 | "amcano"
1840 | ],
1841 | "mancanza": [
1842 | "mancaza"
1843 | ],
1844 | "manda": [
1845 | "amnda"
1846 | ],
1847 | "mandagli": [
1848 | "madagli"
1849 | ],
1850 | "mandare": [
1851 | "madnare",
1852 | "madnare"
1853 | ],
1854 | "mandato": [
1855 | "manato"
1856 | ],
1857 | "mandavano": [
1858 | "mandavno"
1859 | ],
1860 | "mando": [
1861 | "amndo"
1862 | ],
1863 | "mangiare": [
1864 | "mangaire"
1865 | ],
1866 | "manico": [
1867 | "manicco"
1868 | ],
1869 | "maniera": [
1870 | "maneira"
1871 | ],
1872 | "maniglie": [
1873 | "manigle"
1874 | ],
1875 | "manteniamo": [
1876 | " manteiamo"
1877 | ],
1878 | "mantenimento": [
1879 | "mantenimeto"
1880 | ],
1881 | "manualmente": [
1882 | "manualemten"
1883 | ],
1884 | "manutenzione": [
1885 | "amnutenzione"
1886 | ],
1887 | "marchio": [
1888 | "marhcio",
1889 | "amrchio"
1890 | ],
1891 | "massimo": [
1892 | "masismo"
1893 | ],
1894 | "materassi": [
1895 | "amterassi"
1896 | ],
1897 | "materiale": [
1898 | "amteriale",
1899 | "amteriale"
1900 | ],
1901 | "matrimonio": [
1902 | "amtrimonio",
1903 | "amtrimonio"
1904 | ],
1905 | "mattina": [
1906 | "mattian"
1907 | ],
1908 | "meglio": [
1909 | "megli",
1910 | "melgio"
1911 | ],
1912 | "mente": [
1913 | "metne"
1914 | ],
1915 | "mercato": [
1916 | "emrcato"
1917 | ],
1918 | "mese": [
1919 | "emse"
1920 | ],
1921 | "messaggi": [
1922 | "messagi"
1923 | ],
1924 | "messaggio": [
1925 | "emssaggio"
1926 | ],
1927 | "metodi": [
1928 | "meotdi"
1929 | ],
1930 | "metodo": [
1931 | "medoto",
1932 | "emtodo"
1933 | ],
1934 | "mette": [
1935 | "emtte"
1936 | ],
1937 | "mettendo": [
1938 | "metendo"
1939 | ],
1940 | "mettercele": [
1941 | "mettercle"
1942 | ],
1943 | "mettere": [
1944 | "emttere"
1945 | ],
1946 | "metterli": [
1947 | "emtterli"
1948 | ],
1949 | "mettermi": [
1950 | "emttermi"
1951 | ],
1952 | "mettevo": [
1953 | "emttevo"
1954 | ],
1955 | "metti": [
1956 | "emtti"
1957 | ],
1958 | "mettiamo": [
1959 | "metttiamo"
1960 | ],
1961 | "mettono": [
1962 | "emtono"
1963 | ],
1964 | "migliaio": [
1965 | "miglialio"
1966 | ],
1967 | "migliorare": [
1968 | "mgiliraore",
1969 | "mgiliorare",
1970 | "migliroare"
1971 | ],
1972 | "migliorata": [
1973 | "migliroata"
1974 | ],
1975 | "migliorava": [
1976 | "migliroava"
1977 | ],
1978 | "migliori": [
1979 | "milgiori"
1980 | ],
1981 | "milione": [
1982 | "miliome"
1983 | ],
1984 | "minacciarci": [
1985 | "miancciarci"
1986 | ],
1987 | "minaccio": [
1988 | "mianccio"
1989 | ],
1990 | "minuti": [
1991 | "mnuti",
1992 | "mnuti"
1993 | ],
1994 | "mistica": [
1995 | "miatica"
1996 | ],
1997 | "misure": [
1998 | "msiure"
1999 | ],
2000 | "mobile": [
2001 | "modile"
2002 | ],
2003 | "moderatore": [
2004 | "mdoeratore"
2005 | ],
2006 | "modifiche": [
2007 | "mdofiche"
2008 | ],
2009 | "modulo": [
2010 | "moudlo",
2011 | "moudlo"
2012 | ],
2013 | "molti": [
2014 | "mlti"
2015 | ],
2016 | "montaggio": [
2017 | "montagigo"
2018 | ],
2019 | "monumento": [
2020 | "monumenot"
2021 | ],
2022 | "mostra": [
2023 | "msotra"
2024 | ],
2025 | "mostri": [
2026 | "mostir"
2027 | ],
2028 | "mouia": [
2029 | "muia"
2030 | ],
2031 | "mucchio": [
2032 | "muchcio"
2033 | ],
2034 | "muovere": [
2035 | "muivere"
2036 | ],
2037 | "nascita": [
2038 | "anscita"
2039 | ],
2040 | "nascosta": [
2041 | "nasconsta"
2042 | ],
2043 | "nascosto": [
2044 | "nascsto"
2045 | ],
2046 | "nazionale": [
2047 | "naizonale"
2048 | ],
2049 | "neanche": [
2050 | "neache",
2051 | "nanche"
2052 | ],
2053 | "necessaria": [
2054 | "encessaria"
2055 | ],
2056 | "necessario": [
2057 | "encessario"
2058 | ],
2059 | "nei": [
2060 | "nie"
2061 | ],
2062 | "nella": [
2063 | "enlla",
2064 | "nelal",
2065 | "nela",
2066 | "nlla"
2067 | ],
2068 | "nessun": [
2069 | "nesusn"
2070 | ],
2071 | "nessuna": [
2072 | "nesusna"
2073 | ],
2074 | "nessuno": [
2075 | "enssuno",
2076 | "nesusno"
2077 | ],
2078 | "niente": [
2079 | "niete"
2080 | ],
2081 | "non": [
2082 | "enon",
2083 | "nons"
2084 | ],
2085 | "nostra": [
2086 | "nsotra"
2087 | ],
2088 | "nostri": [
2089 | "nsotri",
2090 | "snotri"
2091 | ],
2092 | "nostro": [
2093 | "nostor",
2094 | "nsotro"
2095 | ],
2096 | "notare": [
2097 | "ntoare"
2098 | ],
2099 | "notifica": [
2100 | "motifica"
2101 | ],
2102 | "numerazione": [
2103 | "numeraione"
2104 | ],
2105 | "nuova": [
2106 | "nuvoa"
2107 | ],
2108 | "nuovamente": [
2109 | "nuovametne",
2110 | "nuovametne"
2111 | ],
2112 | "obbligatorie": [
2113 | "obbilgiatorie"
2114 | ],
2115 | "oblique": [
2116 | "olbique"
2117 | ],
2118 | "officiali": [
2119 | "oficiali"
2120 | ],
2121 | "officine": [
2122 | "officne"
2123 | ],
2124 | "oggetti": [
2125 | "oggeti"
2126 | ],
2127 | "oggetto": [
2128 | "oggeto"
2129 | ],
2130 | "ogni": [
2131 | "goni"
2132 | ],
2133 | "oltre": [
2134 | "otlre"
2135 | ],
2136 | "oltretutto": [
2137 | "olrtetutto"
2138 | ],
2139 | "oltreutto": [
2140 | "otlretutto"
2141 | ],
2142 | "opensource": [
2143 | "openosurce"
2144 | ],
2145 | "operativo": [
2146 | "oeprativo"
2147 | ],
2148 | "opposed": [
2149 | "opppsed"
2150 | ],
2151 | "oppure": [
2152 | "opure"
2153 | ],
2154 | "opzione": [
2155 | "zopione"
2156 | ],
2157 | "opzioni": [
2158 | "ozpioni"
2159 | ],
2160 | "oramai": [
2161 | "oaramai"
2162 | ],
2163 | "ordine": [
2164 | "rodine",
2165 | "oridne"
2166 | ],
2167 | "ordini": [
2168 | "rodini",
2169 | "oridni",
2170 | "oridni"
2171 | ],
2172 | "organi": [
2173 | "orgnai"
2174 | ],
2175 | "organizza": [
2176 | "orgnaizza",
2177 | "orgnaizza"
2178 | ],
2179 | "organizzando": [
2180 | "orgnaizzando",
2181 | "orgnaizzando"
2182 | ],
2183 | "organizzano": [
2184 | "orgnaizzano"
2185 | ],
2186 | "organizzarci": [
2187 | "orgnaizzarci",
2188 | "orgniazzarci"
2189 | ],
2190 | "organizzare": [
2191 | "orgnaizzare",
2192 | "roganizzare",
2193 | "orgnaizzare",
2194 | "orgnaizzare"
2195 | ],
2196 | "organizzarle": [
2197 | "orgnaizzarle"
2198 | ],
2199 | "organizzarlo": [
2200 | "orgnaizzarlo"
2201 | ],
2202 | "organizzarmi": [
2203 | "orgnaizzarmi"
2204 | ],
2205 | "organizzarono": [
2206 | "orgnaizzarono"
2207 | ],
2208 | "organizzarsi": [
2209 | "orgnaizzarsi"
2210 | ],
2211 | "organizzarvi": [
2212 | "orgnaizzarvi",
2213 | "organzzarvi"
2214 | ],
2215 | "organizzati": [
2216 | "orgnaizzati"
2217 | ],
2218 | "organizzativa": [
2219 | "orgnaizzativa"
2220 | ],
2221 | "organizzative": [
2222 | "orgnaizzative"
2223 | ],
2224 | "organizzativi": [
2225 | "orgnaizzativi"
2226 | ],
2227 | "organizzativo": [
2228 | "orgnaizzativo",
2229 | "orgnaizzativo"
2230 | ],
2231 | "organizzato": [
2232 | "orgnaizzato"
2233 | ],
2234 | "organizzavate": [
2235 | "organizzvate"
2236 | ],
2237 | "organizzazione": [
2238 | "orgnaizzazione",
2239 | "orgnaizzaizone",
2240 | "orgnaizzazione"
2241 | ],
2242 | "organizzeranno": [
2243 | "orgnaizzeranno"
2244 | ],
2245 | "organizziamo": [
2246 | "orgnaizziamo"
2247 | ],
2248 | "organizzo": [
2249 | "orgnaizzo"
2250 | ],
2251 | "ormai": [
2252 | "omrai"
2253 | ],
2254 | "oscuro": [
2255 | "oscruo"
2256 | ],
2257 | "osservatorio": [
2258 | "osseravtorio"
2259 | ],
2260 | "ottimizzazioni": [
2261 | "ottimizzaizoni"
2262 | ],
2263 | "ovunque": [
2264 | "vounque"
2265 | ],
2266 | "ovviamente": [
2267 | "ovviametne",
2268 | "ovviametne",
2269 | "ovviametne",
2270 | "ovviametne",
2271 | "ovviammnete"
2272 | ],
2273 | "paese": [
2274 | "apese"
2275 | ],
2276 | "pagamento": [
2277 | "apgamento"
2278 | ],
2279 | "pagare": [
2280 | "apgare"
2281 | ],
2282 | "pagina": [
2283 | "pagian",
2284 | "pagia",
2285 | "pagia"
2286 | ],
2287 | "parallelamente": [
2288 | "paralellamente"
2289 | ],
2290 | "parametri": [
2291 | "aprametri "
2292 | ],
2293 | "parametro": [
2294 | "aprametro",
2295 | "apramentro"
2296 | ],
2297 | "parecchia": [
2298 | "aprecchia"
2299 | ],
2300 | "parecchie": [
2301 | "aprecchie"
2302 | ],
2303 | "parecchio": [
2304 | "parecciho",
2305 | "parechcio",
2306 | "aprecchio"
2307 | ],
2308 | "pareri": [
2309 | "apreri"
2310 | ],
2311 | "pareti": [
2312 | "paerti"
2313 | ],
2314 | "parlano": [
2315 | "palrano"
2316 | ],
2317 | "parlare": [
2318 | "prlare",
2319 | "paralre",
2320 | "paralre",
2321 | "pralare",
2322 | "paralre"
2323 | ],
2324 | "parlato": [
2325 | "aprlato"
2326 | ],
2327 | "parliamo": [
2328 | "parliamno",
2329 | "parlaimo"
2330 | ],
2331 | "parola": [
2332 | "prarola"
2333 | ],
2334 | "parole": [
2335 | "paroel"
2336 | ],
2337 | "parte": [
2338 | "prate",
2339 | "aprte",
2340 | "partte"
2341 | ],
2342 | "partecipa": [
2343 | "aprtecipa"
2344 | ],
2345 | "partecipare": [
2346 | "aprtecipare",
2347 | "aprteciapre",
2348 | "parteciapre"
2349 | ],
2350 | "partecipato": [
2351 | "aprtecipato"
2352 | ],
2353 | "partecipazione": [
2354 | "partecipazioen",
2355 | "aprtecipazione",
2356 | "partecipaizone"
2357 | ],
2358 | "particolare": [
2359 | "particoalre"
2360 | ],
2361 | "partiva": [
2362 | "parrtiva",
2363 | "aprtiva"
2364 | ],
2365 | "passaggio": [
2366 | "passagio"
2367 | ],
2368 | "passando": [
2369 | "opassndo"
2370 | ],
2371 | "passaparola": [
2372 | "pasaparola"
2373 | ],
2374 | "passare": [
2375 | "apssare"
2376 | ],
2377 | "passati": [
2378 | "apassati"
2379 | ],
2380 | "passato": [
2381 | "pasato"
2382 | ],
2383 | "pasticci": [
2384 | "spaticci"
2385 | ],
2386 | "paura": [
2387 | "apura",
2388 | "apura"
2389 | ],
2390 | "pausa": [
2391 | "apusa"
2392 | ],
2393 | "pazzesca": [
2394 | "pazzzesca"
2395 | ],
2396 | "peggio": [
2397 | "pegio"
2398 | ],
2399 | "peggiore": [
2400 | "pegiore"
2401 | ],
2402 | "pensa": [
2403 | "pennsa"
2404 | ],
2405 | "pensato": [
2406 | "pesnato"
2407 | ],
2408 | "pensavamo": [
2409 | "pesanvamo"
2410 | ],
2411 | "pensiamoci": [
2412 | "pensaimoci"
2413 | ],
2414 | "per": [
2415 | "pe",
2416 | "er",
2417 | "epr",
2418 | "ppe",
2419 | "epr",
2420 | "epr"
2421 | ],
2422 | "perdendo": [
2423 | "perndendo"
2424 | ],
2425 | "perdere": [
2426 | "predere"
2427 | ],
2428 | "perfetto": [
2429 | "perfeto"
2430 | ],
2431 | "periodo": [
2432 | "epriodo"
2433 | ],
2434 | "permetterebbe": [
2435 | "pemretterebbe"
2436 | ],
2437 | "perso": [
2438 | "eprso"
2439 | ],
2440 | "persona": [
2441 | "persoan"
2442 | ],
2443 | "personaggio": [
2444 | "persoanggio",
2445 | "prsonaggio"
2446 | ],
2447 | "personale": [
2448 | "eprsonale"
2449 | ],
2450 | "personalizzazioni": [
2451 | "persoalizzazioni"
2452 | ],
2453 | "persone": [
2454 | "eprsone",
2455 | "persoen"
2456 | ],
2457 | "piace": [
2458 | "paice",
2459 | "paice",
2460 | "paice"
2461 | ],
2462 | "piacere": [
2463 | "paicere",
2464 | "piacree"
2465 | ],
2466 | "piacerebbe": [
2467 | "paicerebbe",
2468 | "paicerebbe"
2469 | ],
2470 | "piacevole": [
2471 | "paicevole"
2472 | ],
2473 | "piaciuto": [
2474 | "piacuto"
2475 | ],
2476 | "piantato": [
2477 | "pinatato"
2478 | ],
2479 | "piattaforma": [
2480 | "piatatforma",
2481 | "piattafroma"
2482 | ],
2483 | "piccola": [
2484 | "piccoal"
2485 | ],
2486 | "piccoli": [
2487 | "picocli"
2488 | ],
2489 | "pienissimo": [
2490 | "pienissio"
2491 | ],
2492 | "poi": [
2493 | "ppoi"
2494 | ],
2495 | "polemiche": [
2496 | "poelmiche"
2497 | ],
2498 | "pomeriggio": [
2499 | "pomerigigo"
2500 | ],
2501 | "porcherie": [
2502 | "procherie"
2503 | ],
2504 | "portale": [
2505 | "protale",
2506 | "portlae"
2507 | ],
2508 | "portare": [
2509 | "protare"
2510 | ],
2511 | "portatile": [
2512 | "protatile"
2513 | ],
2514 | "portava": [
2515 | "protava"
2516 | ],
2517 | "possiamo": [
2518 | "possimoa",
2519 | "possiam"
2520 | ],
2521 | "possibile": [
2522 | "possibiel",
2523 | "possibiel"
2524 | ],
2525 | "posso": [
2526 | "posos"
2527 | ],
2528 | "poste": [
2529 | "spote"
2530 | ],
2531 | "posti": [
2532 | "posit"
2533 | ],
2534 | "potente": [
2535 | "poteten"
2536 | ],
2537 | "potenzialmente": [
2538 | "potenizlmanete"
2539 | ],
2540 | "poter": [
2541 | "ptoer"
2542 | ],
2543 | "potete": [
2544 | "ptoete"
2545 | ],
2546 | "poteva": [
2547 | "ptoeva"
2548 | ],
2549 | "potrebbe": [
2550 | "ptoerbbe",
2551 | "potrebe",
2552 | "ptorebbe"
2553 | ],
2554 | "potrebbero": [
2555 | "ptorebbero",
2556 | "potrebero"
2557 | ],
2558 | "potrei": [
2559 | "ptorei"
2560 | ],
2561 | "potremmo": [
2562 | "potremm"
2563 | ],
2564 | "potresti": [
2565 | "ptoresti"
2566 | ],
2567 | "poveraccio": [
2568 | "poveracco"
2569 | ],
2570 | "praticamente": [
2571 | "praticametne"
2572 | ],
2573 | "prendere": [
2574 | "predenre",
2575 | "prendenre"
2576 | ],
2577 | "prenotare": [
2578 | "prentoare"
2579 | ],
2580 | "prescindere": [
2581 | "prescidnere",
2582 | "prescidenre"
2583 | ],
2584 | "presentazione": [
2585 | "presentaizone"
2586 | ],
2587 | "presentazioni": [
2588 | "presentaizoni"
2589 | ],
2590 | "presente": [
2591 | "preente"
2592 | ],
2593 | "presentino": [
2594 | "presnetino"
2595 | ],
2596 | "pretendo": [
2597 | "prtendo"
2598 | ],
2599 | "previsto": [
2600 | "previsot"
2601 | ],
2602 | "prima": [
2603 | "pri",
2604 | "prim",
2605 | "priam",
2606 | "pria",
2607 | "priam",
2608 | "rpima",
2609 | "priam"
2610 | ],
2611 | "principale": [
2612 | "princiaple"
2613 | ],
2614 | "principalmente": [
2615 | "principlamente"
2616 | ],
2617 | "privato": [
2618 | "prvato"
2619 | ],
2620 | "probabilmente": [
2621 | "probabilmetne"
2622 | ],
2623 | "problema": [
2624 | "rpoblema",
2625 | "prlblema"
2626 | ],
2627 | "prodotti": [
2628 | "prodoti",
2629 | "porodotti"
2630 | ],
2631 | "prodotto": [
2632 | "prodtto"
2633 | ],
2634 | "produzione": [
2635 | "produzioen"
2636 | ],
2637 | "professionale": [
2638 | "profesisonale"
2639 | ],
2640 | "professionisti": [
2641 | "profesisonisti"
2642 | ],
2643 | "progetto": [
2644 | "priogetto",
2645 | "prgoetto"
2646 | ],
2647 | "programma": [
2648 | "programam",
2649 | "proramma"
2650 | ],
2651 | "programmare": [
2652 | "programamre"
2653 | ],
2654 | "programmato": [
2655 | "programamto"
2656 | ],
2657 | "programmatore": [
2658 | "prgrammatore"
2659 | ],
2660 | "programmatori": [
2661 | "programamtori",
2662 | "progeammatori"
2663 | ],
2664 | "proiettore": [
2665 | "proeittore"
2666 | ],
2667 | "prontissime": [
2668 | "prosntissime"
2669 | ],
2670 | "pronto": [
2671 | "prontt"
2672 | ],
2673 | "propagazione": [
2674 | "propagaiozne"
2675 | ],
2676 | "proporlo": [
2677 | "proprorlo"
2678 | ],
2679 | "proporzioni": [
2680 | "proprozioni"
2681 | ],
2682 | "proposito": [
2683 | "propostio"
2684 | ],
2685 | "proposta": [
2686 | "posposta",
2687 | "porposta"
2688 | ],
2689 | "proposte": [
2690 | "porposte",
2691 | "propsote"
2692 | ],
2693 | "proposto": [
2694 | "proposot"
2695 | ],
2696 | "proprietario": [
2697 | "prorpietario"
2698 | ],
2699 | "proprio": [
2700 | "prorpio",
2701 | "priprio",
2702 | "orprio"
2703 | ],
2704 | "prorogato": [
2705 | "prorogatp"
2706 | ],
2707 | "prossima": [
2708 | "prossim",
2709 | "prossiam"
2710 | ],
2711 | "prossimamente": [
2712 | "prosimamente"
2713 | ],
2714 | "prossimo": [
2715 | "prosismo",
2716 | "rpossimo",
2717 | "possimo"
2718 | ],
2719 | "prototipi": [
2720 | "prototivi"
2721 | ],
2722 | "prova": [
2723 | "rpova"
2724 | ],
2725 | "provo": [
2726 | "rpovo"
2727 | ],
2728 | "psicologa": [
2729 | "psicologaa"
2730 | ],
2731 | "pubblica": [
2732 | "publica"
2733 | ],
2734 | "pubblicazioni": [
2735 | "pubblicaizoni"
2736 | ],
2737 | "pulito": [
2738 | "pultio"
2739 | ],
2740 | "pulizia": [
2741 | "puzlia",
2742 | "puliza",
2743 | "pulizzia"
2744 | ],
2745 | "punto": [
2746 | "putno",
2747 | "punot"
2748 | ],
2749 | "purchase": [
2750 | "pruchase"
2751 | ],
2752 | "quadruplo": [
2753 | "quadruplio"
2754 | ],
2755 | "qualche": [
2756 | "qualce",
2757 | "qualhce",
2758 | "qualceh",
2759 | "quacleh",
2760 | "qualceh"
2761 | ],
2762 | "qualcosa": [
2763 | "quaclosa"
2764 | ],
2765 | "qualcuno": [
2766 | "qulaucno"
2767 | ],
2768 | "qualsiasi": [
2769 | "quasliasi"
2770 | ],
2771 | "quando": [
2772 | "qaundo",
2773 | "qunado",
2774 | "qunado"
2775 | ],
2776 | "quanto": [
2777 | "quanot"
2778 | ],
2779 | "quella": [
2780 | "quelal",
2781 | "ueqall",
2782 | "qeulla",
2783 | "quelal"
2784 | ],
2785 | "quelli": [
2786 | "queli"
2787 | ],
2788 | "quello": [
2789 | "uqello",
2790 | "uqello",
2791 | "quelo",
2792 | "quelo",
2793 | "qeullo",
2794 | "uqello"
2795 | ],
2796 | "questa": [
2797 | "uqesta",
2798 | "qeusta"
2799 | ],
2800 | "queste": [
2801 | "uqeste"
2802 | ],
2803 | "questi": [
2804 | "quetsi",
2805 | "qusti"
2806 | ],
2807 | "questionario": [
2808 | "qeustionario"
2809 | ],
2810 | "questione": [
2811 | "questioen",
2812 | "quesitone"
2813 | ],
2814 | "questo": [
2815 | "uesto",
2816 | "qeusto",
2817 | "quesot",
2818 | "queto",
2819 | "uqesto",
2820 | "qeusto"
2821 | ],
2822 | "quindi": [
2823 | "quinid",
2824 | "quinid",
2825 | "qundi"
2826 | ],
2827 | "raccontarono": [
2828 | "racconrarono"
2829 | ],
2830 | "raggruppare": [
2831 | "raggrupare"
2832 | ],
2833 | "ragionare": [
2834 | "raguionare"
2835 | ],
2836 | "rappresentanza": [
2837 | "rappresentaza"
2838 | ],
2839 | "realizzazione": [
2840 | "relaizzazione"
2841 | ],
2842 | "recensito": [
2843 | "recensiot"
2844 | ],
2845 | "recentemente": [
2846 | "recenetemente"
2847 | ],
2848 | "registrati": [
2849 | "regtistrati"
2850 | ],
2851 | "registrazione": [
2852 | "regstrazione"
2853 | ],
2854 | "registrazioni": [
2855 | "regisrtazioni"
2856 | ],
2857 | "regola": [
2858 | "regoal"
2859 | ],
2860 | "regolamento": [
2861 | "regolmaneto"
2862 | ],
2863 | "reindirizza": [
2864 | "reinidirizza"
2865 | ],
2866 | "reindirizzato": [
2867 | "reindirzzato"
2868 | ],
2869 | "relativa": [
2870 | "reelativa"
2871 | ],
2872 | "relazione": [
2873 | "realzione"
2874 | ],
2875 | "responsabili": [
2876 | "reposnsabili"
2877 | ],
2878 | "revisionare": [
2879 | "revisonare",
2880 | "revisioanre"
2881 | ],
2882 | "riaccendendo": [
2883 | "riaccendnedo"
2884 | ],
2885 | "riapprovarla": [
2886 | "riapporvarla"
2887 | ],
2888 | "riapri": [
2889 | "riaptri"
2890 | ],
2891 | "riassunto": [
2892 | "rassiunto"
2893 | ],
2894 | "riavvio": [
2895 | "riavivo"
2896 | ],
2897 | "ricaricando": [
2898 | "ricarcando"
2899 | ],
2900 | "richiede": [
2901 | "richede"
2902 | ],
2903 | "richiedere": [
2904 | "richeide",
2905 | "richeidere"
2906 | ],
2907 | "richiesta": [
2908 | "richeista",
2909 | "irchiesta"
2910 | ],
2911 | "richieste": [
2912 | "recheiste",
2913 | "richeiste"
2914 | ],
2915 | "richiesto": [
2916 | "richeisto"
2917 | ],
2918 | "riconoscere": [
2919 | "riconsocere"
2920 | ],
2921 | "riconoscimento": [
2922 | "riconsocimento"
2923 | ],
2924 | "ricontrollati": [
2925 | "ricontrolalti"
2926 | ],
2927 | "riempito": [
2928 | "rimpeito",
2929 | "rimpeito"
2930 | ],
2931 | "riesce": [
2932 | "reisce",
2933 | "risce"
2934 | ],
2935 | "rifacendo": [
2936 | "rifancedo"
2937 | ],
2938 | "riferissi": [
2939 | "refrissi"
2940 | ],
2941 | "rifiuta": [
2942 | "rifitua"
2943 | ],
2944 | "rifornimento": [
2945 | "riforinmenti"
2946 | ],
2947 | "riguardano": [
2948 | "irugardano"
2949 | ],
2950 | "riguardo": [
2951 | "rgiuardo",
2952 | "rugardo"
2953 | ],
2954 | "rilascia": [
2955 | "rialscia"
2956 | ],
2957 | "rilasciano": [
2958 | "rialsciano"
2959 | ],
2960 | "rilasciare": [
2961 | "rialsciare"
2962 | ],
2963 | "rilasciarli": [
2964 | "rialsciarli"
2965 | ],
2966 | "rilasciata": [
2967 | "rialsciata"
2968 | ],
2969 | "rilasciato": [
2970 | "rialsciato"
2971 | ],
2972 | "rilascio": [
2973 | "rialscio"
2974 | ],
2975 | "rimando": [
2976 | "riamndo"
2977 | ],
2978 | "rimarremo": [
2979 | "rimarrermo"
2980 | ],
2981 | "rimborsate": [
2982 | "rimobrsate"
2983 | ],
2984 | "rinnovare": [
2985 | "rinnvoare",
2986 | "rinovare"
2987 | ],
2988 | "rinunciato": [
2989 | "rinunicnato"
2990 | ],
2991 | "riorganizzare": [
2992 | "riorgnaizzare"
2993 | ],
2994 | "riparte": [
2995 | "riprte"
2996 | ],
2997 | "ripetizione": [
2998 | "rieptizioni"
2999 | ],
3000 | "riportare": [
3001 | "riprotare"
3002 | ],
3003 | "ripresentarsi": [
3004 | "ripresesntarsi"
3005 | ],
3006 | "risarcimento": [
3007 | "risaricmento"
3008 | ],
3009 | "risolto": [
3010 | "rosolto"
3011 | ],
3012 | "risolvere": [
3013 | "risovlere"
3014 | ],
3015 | "risolviamo": [
3016 | "risovliamo"
3017 | ],
3018 | "risparmiato": [
3019 | "rispariamto",
3020 | "ripsarmiato"
3021 | ],
3022 | "risponde": [
3023 | "riscponde",
3024 | "rispodne",
3025 | "rispodne"
3026 | ],
3027 | "rispondendo": [
3028 | "ripondendo"
3029 | ],
3030 | "risponderai": [
3031 | "rispodnerai"
3032 | ],
3033 | "rispondere": [
3034 | "rispodnere",
3035 | "rspiondre",
3036 | "rispodnere",
3037 | "ripsondere"
3038 | ],
3039 | "rispondergli": [
3040 | "risponderlgi"
3041 | ],
3042 | "rispondono": [
3043 | "rispondno"
3044 | ],
3045 | "risposta": [
3046 | "rispota`"
3047 | ],
3048 | "risposte": [
3049 | "ripsoste"
3050 | ],
3051 | "risposto": [
3052 | "rispsoto",
3053 | "rispsoto"
3054 | ],
3055 | "risulta": [
3056 | "risutla",
3057 | "risutla"
3058 | ],
3059 | "risultare": [
3060 | "risutlare"
3061 | ],
3062 | "risultati": [
3063 | "irsultati",
3064 | "rislutati",
3065 | "rsiultati"
3066 | ],
3067 | "ritardo": [
3068 | "irtardo"
3069 | ],
3070 | "ritrovare": [
3071 | "ritovare"
3072 | ],
3073 | "riunione": [
3074 | "riunioone",
3075 | "riunioen"
3076 | ],
3077 | "riusare": [
3078 | "risuare"
3079 | ],
3080 | "riusarlo": [
3081 | "risuarlo"
3082 | ],
3083 | "riusato": [
3084 | "risuato"
3085 | ],
3086 | "riusciamo": [
3087 | "riousciamo"
3088 | ],
3089 | "riusciti": [
3090 | "riusxciti"
3091 | ],
3092 | "riuscito": [
3093 | "riuscto"
3094 | ],
3095 | "riusiamo": [
3096 | "rusiamo"
3097 | ],
3098 | "rogne": [
3099 | "rogni"
3100 | ],
3101 | "rompere": [
3102 | "romepre"
3103 | ],
3104 | "salvati": [
3105 | "alvati"
3106 | ],
3107 | "sanitari": [
3108 | "santiari"
3109 | ],
3110 | "sanitizzati": [
3111 | "santizzati"
3112 | ],
3113 | "sapere": [
3114 | "saper",
3115 | "saepre",
3116 | "sapre"
3117 | ],
3118 | "sapevo": [
3119 | "sapeo"
3120 | ],
3121 | "sapienza": [
3122 | "spaienza"
3123 | ],
3124 | "saprei": [
3125 | "sapreo"
3126 | ],
3127 | "sarebbe": [
3128 | "sarebe"
3129 | ],
3130 | "sbagliati": [
3131 | "sbaglaiti"
3132 | ],
3133 | "sbagliato": [
3134 | "sbaglaito"
3135 | ],
3136 | "sbaglio": [
3137 | "sbalgio"
3138 | ],
3139 | "sbattersi": [
3140 | "sbatersi"
3141 | ],
3142 | "scansionare": [
3143 | "scansioanre"
3144 | ],
3145 | "scappare": [
3146 | "scppare"
3147 | ],
3148 | "scaricare": [
3149 | "scricare"
3150 | ],
3151 | "scartoffie": [
3152 | "scartoeffie"
3153 | ],
3154 | "scatole": [
3155 | "scatoel"
3156 | ],
3157 | "scelgo": [
3158 | "sceglo"
3159 | ],
3160 | "scelta": [
3161 | "scleta"
3162 | ],
3163 | "scelto": [
3164 | "scleto"
3165 | ],
3166 | "scheda": [
3167 | "scehda"
3168 | ],
3169 | "scherziamo": [
3170 | "scherizmao"
3171 | ],
3172 | "schiantare": [
3173 | "schianatare"
3174 | ],
3175 | "sciacquone": [
3176 | "sciqauone"
3177 | ],
3178 | "scommetto": [
3179 | "scommeto"
3180 | ],
3181 | "scommettono": [
3182 | "scomettono"
3183 | ],
3184 | "scomparsa": [
3185 | "scomaprsa"
3186 | ],
3187 | "sconsigliata": [
3188 | "sconsiglaita"
3189 | ],
3190 | "scontare": [
3191 | "scotnare"
3192 | ],
3193 | "scoprire": [
3194 | "scroprire"
3195 | ],
3196 | "scordato": [
3197 | "scrodato"
3198 | ],
3199 | "scorsa": [
3200 | "scrosa"
3201 | ],
3202 | "scorte": [
3203 | "scrote"
3204 | ],
3205 | "scritto": [
3206 | "scrito"
3207 | ],
3208 | "scrivendolo": [
3209 | "scirvendolo"
3210 | ],
3211 | "scrivergli": [
3212 | "scrviergli"
3213 | ],
3214 | "scriverlo": [
3215 | "scrivero"
3216 | ],
3217 | "scrivessero": [
3218 | "scirvessero"
3219 | ],
3220 | "scrivilo": [
3221 | "scrivlo"
3222 | ],
3223 | "scrolla": [
3224 | "scrollla"
3225 | ],
3226 | "scuola": [
3227 | "sucola",
3228 | "scuoal"
3229 | ],
3230 | "scusa": [
3231 | "scsua"
3232 | ],
3233 | "se": [
3234 | "sen"
3235 | ],
3236 | "secondo": [
3237 | "seocndo",
3238 | "secndo"
3239 | ],
3240 | "segnala": [
3241 | "sengala"
3242 | ],
3243 | "segnalato": [
3244 | "segnalat",
3245 | "segnalto"
3246 | ],
3247 | "segnalazione": [
3248 | "segnalaizone"
3249 | ],
3250 | "segnato": [
3251 | "sengato"
3252 | ],
3253 | "segui": [
3254 | "seugi"
3255 | ],
3256 | "sembra": [
3257 | "smebra"
3258 | ],
3259 | "sembrava": [
3260 | "sebrava"
3261 | ],
3262 | "semiautomatico": [
3263 | "semiautoamtico"
3264 | ],
3265 | "semplice": [
3266 | "semplcie"
3267 | ],
3268 | "semplicemente": [
3269 | "semplicemnete"
3270 | ],
3271 | "semplificherebbe": [
3272 | "semplifhcerebbe"
3273 | ],
3274 | "sempre": [
3275 | "semrpe",
3276 | "sempee",
3277 | "smepre",
3278 | "smpere"
3279 | ],
3280 | "senti": [
3281 | "sneti"
3282 | ],
3283 | "sentiamo": [
3284 | "setniamo"
3285 | ],
3286 | "sentirci": [
3287 | "senteirci"
3288 | ],
3289 | "sentita": [
3290 | "sentta"
3291 | ],
3292 | "sentito": [
3293 | "snetito"
3294 | ],
3295 | "senza": [
3296 | "sena",
3297 | "sneza"
3298 | ],
3299 | "separati": [
3300 | "spearati"
3301 | ],
3302 | "separatisti": [
3303 | "separatsti"
3304 | ],
3305 | "servi": [
3306 | "srvi"
3307 | ],
3308 | "servirebbe": [
3309 | "servirebe"
3310 | ],
3311 | "servizio": [
3312 | "servioz"
3313 | ],
3314 | "servono": [
3315 | "serovno",
3316 | "serovno"
3317 | ],
3318 | "settembre": [
3319 | "setembre"
3320 | ],
3321 | "settimana": [
3322 | "settimna",
3323 | "settiman",
3324 | "setimana"
3325 | ],
3326 | "sfortunatamente": [
3327 | "sfortunatamete",
3328 | "sfortuantamente"
3329 | ],
3330 | "siamo": [
3331 | "siao"
3332 | ],
3333 | "siccome": [
3334 | "siccoem"
3335 | ],
3336 | "sicuramente": [
3337 | "sicuramte",
3338 | "sicurametne",
3339 | "sincerametne",
3340 | "sicurametne"
3341 | ],
3342 | "sicurezza": [
3343 | "iscurezza"
3344 | ],
3345 | "siete": [
3346 | "seiti"
3347 | ],
3348 | "significa": [
3349 | "siginifica",
3350 | "sginifica"
3351 | ],
3352 | "significati": [
3353 | "sginificati"
3354 | ],
3355 | "significherebbe": [
3356 | "sginificherebbe"
3357 | ],
3358 | "simpatico": [
3359 | "simaptico"
3360 | ],
3361 | "sinceramente": [
3362 | "sinceramenten",
3363 | "siceramente",
3364 | "sincerammente"
3365 | ],
3366 | "singola": [
3367 | "singoal",
3368 | "signola"
3369 | ],
3370 | "singolarmente": [
3371 | "singolrmente"
3372 | ],
3373 | "sistemare": [
3374 | "sistamre",
3375 | "sistamre"
3376 | ],
3377 | "sistemazione": [
3378 | "sistamaizone"
3379 | ],
3380 | "sistemo": [
3381 | "sistmeo",
3382 | "sistmeo"
3383 | ],
3384 | "situazione": [
3385 | "stiauzione",
3386 | "situaizone",
3387 | "situaizone"
3388 | ],
3389 | "sofisticato": [
3390 | "sofistiacto"
3391 | ],
3392 | "solitamente": [
3393 | "solitasmente"
3394 | ],
3395 | "solito": [
3396 | "oslito",
3397 | "solto"
3398 | ],
3399 | "soltanto": [
3400 | "soltaont"
3401 | ],
3402 | "soluzione": [
3403 | "osluzione"
3404 | ],
3405 | "sondagio": [
3406 | "sondagigo"
3407 | ],
3408 | "sono": [
3409 | "osno",
3410 | "sonmo",
3411 | "osno"
3412 | ],
3413 | "sopratutto": [
3414 | "sopatutto"
3415 | ],
3416 | "sorprendermi": [
3417 | "soprendermi"
3418 | ],
3419 | "sostituisco": [
3420 | "sostistuisco"
3421 | ],
3422 | "sottodominio": [
3423 | "sttodominio"
3424 | ],
3425 | "spaventando": [
3426 | "spaventanto"
3427 | ],
3428 | "spazio": [
3429 | "spaizo",
3430 | "spaizo"
3431 | ],
3432 | "spegnere": [
3433 | "spengere"
3434 | ],
3435 | "spende": [
3436 | "spene"
3437 | ],
3438 | "sperimentare": [
3439 | "sperimetnare"
3440 | ],
3441 | "spiegano": [
3442 | "spiegnao"
3443 | ],
3444 | "spiegato": [
3445 | "speigato",
3446 | "psiegato",
3447 | "speigato"
3448 | ],
3449 | "spiegazione": [
3450 | "speigazione",
3451 | "spiegaizone",
3452 | "spiegazioen",
3453 | "speigazione",
3454 | "speigazione"
3455 | ],
3456 | "spiegazioni": [
3457 | "spiegaizoni"
3458 | ],
3459 | "spiego": [
3460 | "psiego"
3461 | ],
3462 | "spingere": [
3463 | "spignere",
3464 | "spingre"
3465 | ],
3466 | "sponsorizzato": [
3467 | "sponsorizzatro"
3468 | ],
3469 | "sporcare": [
3470 | "sprocare"
3471 | ],
3472 | "spostare": [
3473 | "spsotare"
3474 | ],
3475 | "sprite": [
3476 | "spirte"
3477 | ],
3478 | "sputo": [
3479 | "psuto"
3480 | ],
3481 | "stamattina": [
3482 | "stamattian"
3483 | ],
3484 | "stampare": [
3485 | "stmapare",
3486 | "stamapre"
3487 | ],
3488 | "stanno": [
3489 | "stanho"
3490 | ],
3491 | "statistiche": [
3492 | "staitstiche"
3493 | ],
3494 | "stava": [
3495 | "satava"
3496 | ],
3497 | "stavo": [
3498 | "stavao"
3499 | ],
3500 | "stazione": [
3501 | "staizone"
3502 | ],
3503 | "stessa": [
3504 | "tessa"
3505 | ],
3506 | "stiamo": [
3507 | "sitamo"
3508 | ],
3509 | "storico": [
3510 | "sotirco"
3511 | ],
3512 | "strada": [
3513 | "sttada"
3514 | ],
3515 | "studentesche": [
3516 | "studentesce"
3517 | ],
3518 | "stupendi": [
3519 | "stupedi"
3520 | ],
3521 | "succederanno": [
3522 | "sucederanno"
3523 | ],
3524 | "successivamente": [
3525 | "sucessivamente"
3526 | ],
3527 | "successivo": [
3528 | "sucessivo"
3529 | ],
3530 | "successo": [
3531 | "sucesso"
3532 | ],
3533 | "sufficente": [
3534 | "sufficinte"
3535 | ],
3536 | "sufficiente": [
3537 | "sufficente"
3538 | ],
3539 | "sufficienti": [
3540 | "sufficenti",
3541 | "sufficenti"
3542 | ],
3543 | "suggerimenti": [
3544 | "suggeriemnti"
3545 | ],
3546 | "sulla": [
3547 | "sulal",
3548 | "sulal"
3549 | ],
3550 | "sulle": [
3551 | "sulel"
3552 | ],
3553 | "supporto": [
3554 | "spporto"
3555 | ],
3556 | "svenire": [
3557 | "svnire"
3558 | ],
3559 | "sviluppare": [
3560 | "sivluppare"
3561 | ],
3562 | "sviluppatori": [
3563 | "svilupaptori"
3564 | ],
3565 | "svolta": [
3566 | "svolat"
3567 | ],
3568 | "taglie": [
3569 | "tagle"
3570 | ],
3571 | "tamponare": [
3572 | "tampoanre"
3573 | ],
3574 | "tante": [
3575 | "tnate"
3576 | ],
3577 | "tanti": [
3578 | "tnait",
3579 | "tnati",
3580 | "ntanti"
3581 | ],
3582 | "tanto": [
3583 | "tnato"
3584 | ],
3585 | "tappare": [
3586 | "tapapre"
3587 | ],
3588 | "tartaruga": [
3589 | "tartargua"
3590 | ],
3591 | "tastiera": [
3592 | "tasteira"
3593 | ],
3594 | "telefonare": [
3595 | "telefoanre",
3596 | "telefoanre"
3597 | ],
3598 | "telefonarmi": [
3599 | "telefornarmi"
3600 | ],
3601 | "telefono": [
3602 | "telfeono",
3603 | "telfono"
3604 | ],
3605 | "tema": [
3606 | "ltema"
3607 | ],
3608 | "temo": [
3609 | "tenmo"
3610 | ],
3611 | "tempi": [
3612 | "tmepi"
3613 | ],
3614 | "tempo": [
3615 | "tmepo"
3616 | ],
3617 | "tentativi": [
3618 | "tentaivi"
3619 | ],
3620 | "teoria": [
3621 | "terosia"
3622 | ],
3623 | "terapia": [
3624 | "tarpia"
3625 | ],
3626 | "terminale": [
3627 | "termianle"
3628 | ],
3629 | "termini": [
3630 | "temrini"
3631 | ],
3632 | "tienile": [
3633 | "tenile"
3634 | ],
3635 | "timeout": [
3636 | "timoeut"
3637 | ],
3638 | "togliere": [
3639 | "togleire",
3640 | "toglire",
3641 | "togleire"
3642 | ],
3643 | "toglierei": [
3644 | "toglerei",
3645 | "togleirei"
3646 | ],
3647 | "tolgono": [
3648 | "toglono"
3649 | ],
3650 | "tornato": [
3651 | "trnato",
3652 | "toranto"
3653 | ],
3654 | "tracciamento": [
3655 | "tracciamneto"
3656 | ],
3657 | "traduzione": [
3658 | "traduzioen",
3659 | "tradzuione"
3660 | ],
3661 | "tranquillamente": [
3662 | "tranquillametne",
3663 | "tranquillmanete"
3664 | ],
3665 | "tranquilli": [
3666 | "trnaquilli"
3667 | ],
3668 | "trasferimento": [
3669 | "tasferimento"
3670 | ],
3671 | "trasforma": [
3672 | "trasfroma"
3673 | ],
3674 | "trastevere": [
3675 | "trasntevere"
3676 | ],
3677 | "tratterebbe": [
3678 | "tratterenbbe"
3679 | ],
3680 | "triste": [
3681 | "trsite"
3682 | ],
3683 | "trovare": [
3684 | "trvare",
3685 | "torvare"
3686 | ],
3687 | "trovato": [
3688 | "trvato",
3689 | "trovaot"
3690 | ],
3691 | "trovi": [
3692 | "trovu"
3693 | ],
3694 | "tuo": [
3695 | "tup"
3696 | ],
3697 | "tutela": [
3698 | "tutetla"
3699 | ],
3700 | "tutte": [
3701 | "tutet"
3702 | ],
3703 | "tutti": [
3704 | "tutit",
3705 | "tutit"
3706 | ],
3707 | "tutto": [
3708 | "tuto"
3709 | ],
3710 | "uguali": [
3711 | "ugiali"
3712 | ],
3713 | "ultima": [
3714 | "ultiam"
3715 | ],
3716 | "ultimi": [
3717 | "utlimi",
3718 | "lutimi"
3719 | ],
3720 | "un": [
3721 | "u"
3722 | ],
3723 | "una": [
3724 | "uan",
3725 | "uan"
3726 | ],
3727 | "universitari": [
3728 | "unviersitari",
3729 | "unviersitari"
3730 | ],
3731 | "universitaria": [
3732 | "unviersitria"
3733 | ],
3734 | "universit\u00e0": [
3735 | "unviersit\u00e0"
3736 | ],
3737 | "usabile": [
3738 | "suabile"
3739 | ],
3740 | "usare": [
3741 | "suare"
3742 | ],
3743 | "usate": [
3744 | "suate"
3745 | ],
3746 | "utenti": [
3747 | "utneti"
3748 | ],
3749 | "utile": [
3750 | "tuile"
3751 | ],
3752 | "utilizzare": [
3753 | "utilizzre"
3754 | ],
3755 | "vacanze": [
3756 | "vancaze"
3757 | ],
3758 | "vado": [
3759 | "vaod"
3760 | ],
3761 | "validazione": [
3762 | "validazioen",
3763 | "validazioen"
3764 | ],
3765 | "valutare": [
3766 | "valtuare"
3767 | ],
3768 | "valutazioni": [
3769 | "valutaizoni",
3770 | "valutaizoni",
3771 | "valutaizoni"
3772 | ],
3773 | "variazioni": [
3774 | "variaizoni",
3775 | "variaizoni"
3776 | ],
3777 | "vecchio": [
3778 | "vechcio",
3779 | "vechcio",
3780 | "vechcio"
3781 | ],
3782 | "vedere": [
3783 | "vedree"
3784 | ],
3785 | "vediamo": [
3786 | "vediam"
3787 | ],
3788 | "vedrei": [
3789 | "vederi"
3790 | ],
3791 | "vendiamo": [
3792 | "nvediamo",
3793 | "vendiao"
3794 | ],
3795 | "veramente": [
3796 | "verametne",
3797 | "verametne",
3798 | "verametne",
3799 | "vermente"
3800 | ],
3801 | "verifica": [
3802 | "varifica"
3803 | ],
3804 | "verificando": [
3805 | "verificano"
3806 | ],
3807 | "verranno": [
3808 | "verrano"
3809 | ],
3810 | "verrebbe": [
3811 | "verrebe"
3812 | ],
3813 | "versione": [
3814 | "verisoen",
3815 | "verisone",
3816 | "vrsione",
3817 | "versioen",
3818 | "vrsione",
3819 | "vrsione",
3820 | "verisone",
3821 | "iversone",
3822 | "verione",
3823 | "verisone",
3824 | "verisoen"
3825 | ],
3826 | "versioni": [
3827 | "verisoni",
3828 | "versoni",
3829 | "verisoni"
3830 | ],
3831 | "verso": [
3832 | "vesro"
3833 | ],
3834 | "vicesindaco": [
3835 | "vicensidanco"
3836 | ],
3837 | "vincere": [
3838 | "vicnere"
3839 | ],
3840 | "virgola": [
3841 | "verigola"
3842 | ],
3843 | "virtuale": [
3844 | "vrituale"
3845 | ],
3846 | "visualizzazione": [
3847 | "visualizazione"
3848 | ],
3849 | "vogliamo": [
3850 | "vigliamo"
3851 | ],
3852 | "voglio": [
3853 | "volio",
3854 | "volgio"
3855 | ],
3856 | "volantino": [
3857 | "vloantino"
3858 | ],
3859 | "volesse": [
3860 | "volese"
3861 | ],
3862 | "volete": [
3863 | "voelte",
3864 | "voelte"
3865 | ],
3866 | "volontari": [
3867 | "ovltnoari"
3868 | ],
3869 | "volta": [
3870 | "votla"
3871 | ],
3872 | "vorranno": [
3873 | "vorrano",
3874 | "vrrano"
3875 | ],
3876 | "vorrebbe": [
3877 | "vorrebe"
3878 | ],
3879 | "vorrei": [
3880 | "voreri"
3881 | ],
3882 | "vostro": [
3883 | "vostor"
3884 | ],
3885 | "vulnerabile": [
3886 | "vulenrabile"
3887 | ],
3888 | "vulnerabilit\u00e1": [
3889 | "vulenrabilit\u00e1"
3890 | ],
3891 | "webinar": [
3892 | "webianr"
3893 | ]
3894 | }
--------------------------------------------------------------------------------
/config-sample.ini:
--------------------------------------------------------------------------------
1 | ; Default values.
2 | [DEFAULT]
3 | words_file = [ "words/en.json", "words/it.json" ]
--------------------------------------------------------------------------------
/csvtoterms.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | import argparse
3 | import os.path
4 | import csv
5 | from SyntaxAutoFix.utils import open_typo_file, save_typo_data
6 |
7 | # Parse argument
8 | parser = argparse.ArgumentParser(description='add new terms!')
9 |
10 | parser.add_argument('-file', dest="file", type=str, required=True)
11 | parser.add_argument('-lang', dest="lang", type=str, required=True)
12 | args = parser.parse_args()
13 |
14 | script_path = os.path.dirname(os.path.realpath(__file__))
15 | script_path = os.path.join(script_path, 'SyntaxAutoFix/words/' + args.lang + '.json')
16 |
17 | typo_data = open_typo_file(script_path)
18 | with open(args.file) as csv_file:
19 | csv_reader = csv.reader(csv_file, delimiter=',')
20 | for row in csv_reader:
21 | typo_data[row[0]].add(row[1])
22 |
23 | save_typo_data(script_path, typo_data)
24 |
--------------------------------------------------------------------------------
/launch.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | # This script can be used for who use the git version
3 |
4 | import SyntaxAutoFix.syntaxautofix
5 |
6 | SyntaxAutoFix.syntaxautofix.main()
7 |
--------------------------------------------------------------------------------
/manageterms-gui.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | import os
3 | import signal
4 | import sys
5 | import glob
6 | from PyQt5 import QtCore
7 | from PyQt5.QtWidgets import QMainWindow, QApplication, QErrorMessage, QShortcut
8 | from PyQt5.QtGui import QKeySequence
9 | from SyntaxAutoFix.utils import open_typo_file, save_typo_data
10 | from ui_manageterms import Ui_MainWindow
11 |
12 |
13 | class MainWindow(QMainWindow, Ui_MainWindow):
14 |
15 | def __init__(self, parent=None):
16 | # Load the ui
17 | QMainWindow.__init__(self, parent)
18 | self.ui = Ui_MainWindow()
19 | self.ui.setupUi(self)
20 | # Connect the function with the signal
21 | self.ui.save.clicked.connect(self.store_new_argument)
22 | self.ui.save.clicked.connect(self.save_and_clear)
23 | self.ui.save_close.clicked.connect(self.save_close)
24 | # When the software are closed on console the software are closed
25 | signal.signal(signal.SIGINT, signal.SIG_DFL)
26 | self.script_path = os.path.dirname(os.path.realpath(__file__)) + '/SyntaxAutoFix/words/'
27 | for filepath in sorted(glob.glob(os.path.join(self.script_path, '*.json'))):
28 | language = os.path.splitext(os.path.basename(filepath))[0]
29 | self.ui.languages.addItem(language)
30 | enter = QShortcut(QKeySequence(QtCore.Qt.Key_Return), self)
31 | enter.activated.connect(self.save_close)
32 | self.show()
33 |
34 | def store_new_argument(self):
35 | wrong = self.ui.wrong.text()
36 | right = self.ui.right.text()
37 | lang = self.ui.languages.currentText()
38 | # Check argument is not circular
39 | if right == wrong:
40 | msg = QErrorMessage(self)
41 | msg.setWindowModality(QtCore.Qt.WindowModal)
42 | msg.showMessage('You can’t replace a word with itself. It will create a loop.')
43 |
44 | lang_path = self.script_path + lang + '.json'
45 | typo_data = open_typo_file(lang_path)
46 | if right in typo_data:
47 | typo_data[right].append(wrong)
48 | else:
49 | typo_data[right] = [wrong]
50 | save_typo_data(lang_path, typo_data)
51 |
52 | def save_close(self):
53 | self.store_new_argument()
54 | self.close()
55 |
56 | # Clear the text fields on save issue #39
57 | def save_and_clear(self):
58 | self.ui.wrong.clear()
59 | self.ui.right.clear()
60 |
61 |
62 | def main():
63 | # Start the software
64 | app = QApplication(sys.argv)
65 | MainWindow_ = QMainWindow()
66 | ui = MainWindow()
67 | ui.setupUi(MainWindow_)
68 | # Add the close feature at the program with the X
69 | sys.exit(app.exec_())
70 |
71 |
72 | # Execute the software
73 | main()
74 |
--------------------------------------------------------------------------------
/manageterms.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 220
10 | 158
11 |
12 |
13 |
14 |
15 | 200
16 | 0
17 |
18 |
19 |
20 | Add Terms
21 |
22 |
23 |
24 | -
25 |
26 |
-
27 |
28 |
29 | Right Term
30 |
31 |
32 |
33 | -
34 |
35 |
36 | -
37 |
38 |
39 | Wrong Term
40 |
41 |
42 |
43 | -
44 |
45 |
46 | Language
47 |
48 |
49 |
50 | -
51 |
52 |
53 | -
54 |
55 |
56 | Save
57 |
58 |
59 |
60 | -
61 |
62 |
63 | -
64 |
65 |
66 | Save and Close
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 | wrong
77 | right
78 | languages
79 | save
80 | save_close
81 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/setup.py:
--------------------------------------------------------------------------------
1 | from setuptools import setup
2 |
3 | with open("README.md", "rb") as f:
4 | long_descr = f.read().decode("utf-8")
5 |
6 | setup(
7 | name="SyntaxAutoFix",
8 | packages=["SyntaxAutoFix"],
9 | entry_points={
10 | "console_scripts": ['syntaxautofix = SyntaxAutoFix.syntaxautofix:main']
11 | },
12 | install_requires=[
13 | 'keyboard',
14 | ],
15 | version="2.5.1",
16 | description="Autofix your typos on Linux easily!",
17 | long_description=long_descr,
18 | long_description_content_type='text/markdown',
19 | author="Mte90",
20 | author_email="mte90net@gmail.com",
21 | url="https://github.com/Mte90/SyntaxAutoFix",
22 | include_package_data=True
23 | )
24 |
--------------------------------------------------------------------------------
/ui_manageterms.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'manageterms.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.11.3
6 | #
7 | # WARNING! All changes made in this file will be lost!
8 |
9 | from PyQt5 import QtCore, QtGui, QtWidgets
10 |
11 | class Ui_MainWindow(object):
12 | def setupUi(self, MainWindow):
13 | MainWindow.setObjectName("MainWindow")
14 | MainWindow.resize(220, 158)
15 | MainWindow.setMinimumSize(QtCore.QSize(200, 0))
16 | self.centralwidget = QtWidgets.QWidget(MainWindow)
17 | self.centralwidget.setObjectName("centralwidget")
18 | self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
19 | self.gridLayout_2.setObjectName("gridLayout_2")
20 | self.gridLayout = QtWidgets.QGridLayout()
21 | self.gridLayout.setObjectName("gridLayout")
22 | self.label_2 = QtWidgets.QLabel(self.centralwidget)
23 | self.label_2.setObjectName("label_2")
24 | self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
25 | self.wrong = QtWidgets.QLineEdit(self.centralwidget)
26 | self.wrong.setObjectName("wrong")
27 | self.gridLayout.addWidget(self.wrong, 0, 1, 1, 1)
28 | self.label = QtWidgets.QLabel(self.centralwidget)
29 | self.label.setObjectName("label")
30 | self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
31 | self.label_3 = QtWidgets.QLabel(self.centralwidget)
32 | self.label_3.setObjectName("label_3")
33 | self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1)
34 | self.right = QtWidgets.QLineEdit(self.centralwidget)
35 | self.right.setObjectName("right")
36 | self.gridLayout.addWidget(self.right, 1, 1, 1, 1)
37 | self.save = QtWidgets.QPushButton(self.centralwidget)
38 | self.save.setObjectName("save")
39 | self.gridLayout.addWidget(self.save, 3, 0, 1, 1)
40 | self.languages = QtWidgets.QComboBox(self.centralwidget)
41 | self.languages.setObjectName("languages")
42 | self.gridLayout.addWidget(self.languages, 2, 1, 1, 1)
43 | self.save_close = QtWidgets.QPushButton(self.centralwidget)
44 | self.save_close.setObjectName("save_close")
45 | self.gridLayout.addWidget(self.save_close, 3, 1, 1, 1)
46 | self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
47 | MainWindow.setCentralWidget(self.centralwidget)
48 |
49 | self.retranslateUi(MainWindow)
50 | QtCore.QMetaObject.connectSlotsByName(MainWindow)
51 | MainWindow.setTabOrder(self.wrong, self.right)
52 | MainWindow.setTabOrder(self.right, self.languages)
53 | MainWindow.setTabOrder(self.languages, self.save)
54 | MainWindow.setTabOrder(self.save, self.save_close)
55 |
56 | def retranslateUi(self, MainWindow):
57 | _translate = QtCore.QCoreApplication.translate
58 | MainWindow.setWindowTitle(_translate("MainWindow", "Add Terms"))
59 | self.label_2.setText(_translate("MainWindow", "Right Term"))
60 | self.label.setText(_translate("MainWindow", "Wrong Term"))
61 | self.label_3.setText(_translate("MainWindow", "Language"))
62 | self.save.setText(_translate("MainWindow", "Save"))
63 | self.save_close.setText(_translate("MainWindow", "Save and Close"))
64 |
65 |
66 | if __name__ == "__main__":
67 | import sys
68 | app = QtWidgets.QApplication(sys.argv)
69 | MainWindow = QtWidgets.QMainWindow()
70 | ui = Ui_MainWindow()
71 | ui.setupUi(MainWindow)
72 | MainWindow.show()
73 | sys.exit(app.exec_())
74 |
75 |
--------------------------------------------------------------------------------
/upload.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | echo "Upload in progress of the package to PyPi"
4 |
5 | python setup.py sdist
6 | twine upload dist/*
7 |
--------------------------------------------------------------------------------
/validateterms.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 | import argparse
3 | import logging
4 | import os.path
5 | from SyntaxAutoFix.utils import open_typo_file
6 |
7 |
8 | def parse_argument(_parser_):
9 | _parser_.add_argument('-lang', dest="lang", type=str, required=True)
10 | args = _parser_.parse_args()
11 | return args
12 |
13 |
14 | def load_language(_args_, script_path):
15 | try:
16 | lang_path = script_path + _args_.lang + '.json'
17 | words = open_typo_file(lang_path)
18 | return words
19 | except FileNotFoundError:
20 | raise ValueError(f"Language '{ _args_.lang}' is not available.")
21 |
22 |
23 | def term_is_typo_of_another_word(term, words):
24 | for (correct, wrongs) in words.items():
25 | if correct == term:
26 | logging.info(f"ERR 1: The term '{correct}' is a typo of '{term}'.")
27 | for wrong in wrongs:
28 | if not wrong:
29 | logging.info(f"ERR 3: The term '{correct}' has an empty typo.")
30 |
31 |
32 | def main():
33 | # Parse argument
34 | parser = argparse.ArgumentParser(description='validate terms!')
35 | args = parse_argument(parser)
36 |
37 | # Store argument
38 | script_path = os.path.dirname(os.path.realpath(__file__))
39 | script_path = os.path.join(script_path, 'SyntaxAutoFix/words/')
40 | words = load_language(args, script_path)
41 | for (correct, wrongs) in words.items():
42 | for wrong in wrongs:
43 | if wrong == correct:
44 | logging.info(
45 | f"ERR 2: The term '{correct}' is a typo of itself."
46 | )
47 | continue
48 | if wrong:
49 | term_is_typo_of_another_word(wrong, words)
50 |
51 |
52 | if __name__ == "__main__":
53 | main()
54 |
--------------------------------------------------------------------------------