@valueerror/ltjs-lang-en 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/LICENSE +232 -0
  2. package/NOTICE +10 -0
  3. package/README.md +25 -2
  4. package/index.js +34 -0
  5. package/licenses/LGPL-2.1.txt +504 -0
  6. package/licenses/english-pos-dict.pom.xml +135 -0
  7. package/licenses/resource_en_12dicts-readme.html +738 -0
  8. package/licenses/resource_en_agid-readme.txt +340 -0
  9. package/licenses/resource_en_pos-readme.txt +115 -0
  10. package/package.json +60 -4
  11. package/resource-root.js +4 -0
  12. package/resources/META-INF/org/languagetool/language-module.properties +1 -0
  13. package/resources/en-chunker.bin +0 -0
  14. package/resources/en-pos-maxent.bin +0 -0
  15. package/resources/en-token.bin +0 -0
  16. package/resources/org/languagetool/resource/en/12dicts-readme.html +738 -0
  17. package/resources/org/languagetool/resource/en/added.txt +446 -0
  18. package/resources/org/languagetool/resource/en/added_custom.txt +4 -0
  19. package/resources/org/languagetool/resource/en/agid-readme.txt +340 -0
  20. package/resources/org/languagetool/resource/en/compounds.txt +9059 -0
  21. package/resources/org/languagetool/resource/en/confusion_sets.txt +871 -0
  22. package/resources/org/languagetool/resource/en/disambiguation.xml +17238 -0
  23. package/resources/org/languagetool/resource/en/do-not-synthesize.txt +13 -0
  24. package/resources/org/languagetool/resource/en/en-US-GB.txt +4804 -0
  25. package/resources/org/languagetool/resource/en/en.sor +211 -0
  26. package/resources/org/languagetool/resource/en/english.dict +0 -0
  27. package/resources/org/languagetool/resource/en/english.info +8 -0
  28. package/resources/org/languagetool/resource/en/english_synth.dict +0 -0
  29. package/resources/org/languagetool/resource/en/english_synth.info +7 -0
  30. package/resources/org/languagetool/resource/en/english_tags.txt +88 -0
  31. package/resources/org/languagetool/resource/en/hunspell/en_AU.dict +0 -0
  32. package/resources/org/languagetool/resource/en/hunspell/en_AU.info +16 -0
  33. package/resources/org/languagetool/resource/en/hunspell/en_CA.dict +0 -0
  34. package/resources/org/languagetool/resource/en/hunspell/en_CA.info +13 -0
  35. package/resources/org/languagetool/resource/en/hunspell/en_GB.dict +0 -0
  36. package/resources/org/languagetool/resource/en/hunspell/en_GB.info +15 -0
  37. package/resources/org/languagetool/resource/en/hunspell/en_NZ.dict +0 -0
  38. package/resources/org/languagetool/resource/en/hunspell/en_NZ.info +18 -0
  39. package/resources/org/languagetool/resource/en/hunspell/en_US.dict +0 -0
  40. package/resources/org/languagetool/resource/en/hunspell/en_US.info +15 -0
  41. package/resources/org/languagetool/resource/en/hunspell/en_ZA.dict +0 -0
  42. package/resources/org/languagetool/resource/en/hunspell/en_ZA.info +16 -0
  43. package/resources/org/languagetool/resource/en/hunspell/ignore.txt +11070 -0
  44. package/resources/org/languagetool/resource/en/hunspell/prohibit.txt +383 -0
  45. package/resources/org/languagetool/resource/en/hunspell/prohibit_custom.txt +1 -0
  46. package/resources/org/languagetool/resource/en/hunspell/spelling.txt +477 -0
  47. package/resources/org/languagetool/resource/en/hunspell/spelling_custom.txt +1 -0
  48. package/resources/org/languagetool/resource/en/hunspell/spelling_en-AU.txt +34 -0
  49. package/resources/org/languagetool/resource/en/hunspell/spelling_en-CA.txt +28 -0
  50. package/resources/org/languagetool/resource/en/hunspell/spelling_en-GB.txt +44 -0
  51. package/resources/org/languagetool/resource/en/hunspell/spelling_en-NZ.txt +31 -0
  52. package/resources/org/languagetool/resource/en/hunspell/spelling_en-US.txt +41 -0
  53. package/resources/org/languagetool/resource/en/hunspell/spelling_en-ZA.txt +32 -0
  54. package/resources/org/languagetool/resource/en/hunspell/spelling_merged.txt +0 -0
  55. package/resources/org/languagetool/resource/en/multiwords.txt +8210 -0
  56. package/resources/org/languagetool/resource/en/pos-readme.txt +115 -0
  57. package/resources/org/languagetool/resource/en/removed.txt +31 -0
  58. package/resources/org/languagetool/resource/en/removed_custom.txt +4 -0
  59. package/resources/org/languagetool/resource/en/specific_case.txt +5621 -0
  60. package/resources/org/languagetool/resource/en/word_definitions.txt +1510 -0
  61. package/resources/org/languagetool/rules/en/coherency.txt +2501 -0
  62. package/resources/org/languagetool/rules/en/contractions.txt +198 -0
  63. package/resources/org/languagetool/rules/en/det_a.txt +959 -0
  64. package/resources/org/languagetool/rules/en/det_an.txt +4080 -0
  65. package/resources/org/languagetool/rules/en/diacritics.txt +1415 -0
  66. package/resources/org/languagetool/rules/en/en-AU/grammar.xml +171 -0
  67. package/resources/org/languagetool/rules/en/en-CA/grammar.xml +197 -0
  68. package/resources/org/languagetool/rules/en/en-GB/grammar.xml +555 -0
  69. package/resources/org/languagetool/rules/en/en-GB/replace.txt +104 -0
  70. package/resources/org/languagetool/rules/en/en-GB/style.xml +302 -0
  71. package/resources/org/languagetool/rules/en/en-NZ/grammar.xml +171 -0
  72. package/resources/org/languagetool/rules/en/en-NZ/replace.txt +5 -0
  73. package/resources/org/languagetool/rules/en/en-US/grammar.xml +913 -0
  74. package/resources/org/languagetool/rules/en/en-US/replace.txt +74 -0
  75. package/resources/org/languagetool/rules/en/en-US/style.xml +524 -0
  76. package/resources/org/languagetool/rules/en/grammar-l2-de.xml +227 -0
  77. package/resources/org/languagetool/rules/en/grammar-l2-fr.xml +39 -0
  78. package/resources/org/languagetool/rules/en/grammar.xml +142537 -0
  79. package/resources/org/languagetool/rules/en/redundancies.txt +866 -0
  80. package/resources/org/languagetool/rules/en/remote-rule-filters.xml +3622 -0
  81. package/resources/org/languagetool/rules/en/replace.txt +221 -0
  82. package/resources/org/languagetool/rules/en/replace_custom.txt +7 -0
  83. package/resources/org/languagetool/rules/en/replace_profanity.txt +540 -0
  84. package/resources/org/languagetool/rules/en/style.xml +12556 -0
  85. package/resources/org/languagetool/rules/en/synonyms.txt +42 -0
  86. package/resources/org/languagetool/rules/en/wordiness.txt +1061 -0
  87. package/resources/org/languagetool/rules/en/wrongWordInContext.txt +14 -0
  88. package/src/lang/en/chunking/EnglishChunkFilter.js +108 -0
  89. package/src/lang/en/chunking/EnglishChunker.js +135 -0
  90. package/src/lang/en/language/AmericanEnglish.js +73 -0
  91. package/src/lang/en/language/AustralianEnglish.js +42 -0
  92. package/src/lang/en/language/BritishEnglish.js +91 -0
  93. package/src/lang/en/language/CanadianEnglish.js +70 -0
  94. package/src/lang/en/language/English.js +398 -0
  95. package/src/lang/en/language/NewZealandEnglish.js +44 -0
  96. package/src/lang/en/language/SouthAfricanEnglish.js +40 -0
  97. package/src/lang/en/language/id2prioBritishEnglish.js +6 -0
  98. package/src/lang/en/language/id2prioEnglish.js +333 -0
  99. package/src/lang/en/rules/AbstractEnglishSpellerRule.js +677 -0
  100. package/src/lang/en/rules/AbstractEnglishSpellerRuleData.js +778 -0
  101. package/src/lang/en/rules/AdvancedSynthesizerFilter.js +12 -0
  102. package/src/lang/en/rules/AdverbFilter.js +538 -0
  103. package/src/lang/en/rules/AmericanReplaceRule.js +57 -0
  104. package/src/lang/en/rules/AvsAnData.js +37 -0
  105. package/src/lang/en/rules/AvsAnRule.js +182 -0
  106. package/src/lang/en/rules/BritishReplaceRule.js +57 -0
  107. package/src/lang/en/rules/CompoundRule.js +150 -0
  108. package/src/lang/en/rules/ConsistentApostrophesRule.js +87 -0
  109. package/src/lang/en/rules/ContractionSpellingRule.js +64 -0
  110. package/src/lang/en/rules/DateCheckFilter.js +58 -0
  111. package/src/lang/en/rules/DateFilterHelper.js +51 -0
  112. package/src/lang/en/rules/EnglishConvertToSentenceCaseFilter.js +17 -0
  113. package/src/lang/en/rules/EnglishDashRule.js +42 -0
  114. package/src/lang/en/rules/EnglishDiacriticsRule.js +67 -0
  115. package/src/lang/en/rules/EnglishMultitokenSpeller.js +15 -0
  116. package/src/lang/en/rules/EnglishNumberInWordFilter.js +38 -0
  117. package/src/lang/en/rules/EnglishPartialPosTagFilter.js +29 -0
  118. package/src/lang/en/rules/EnglishPlainEnglishRule.js +67 -0
  119. package/src/lang/en/rules/EnglishRedundancyRule.js +67 -0
  120. package/src/lang/en/rules/EnglishRepeatedWordsRule.js +212 -0
  121. package/src/lang/en/rules/EnglishSpecificCaseRule.js +47 -0
  122. package/src/lang/en/rules/EnglishSuppressMisspelledSuggestionsFilter.js +12 -0
  123. package/src/lang/en/rules/EnglishUnpairedBracketsRule.js +25 -0
  124. package/src/lang/en/rules/EnglishUnpairedQuotesRule.js +41 -0
  125. package/src/lang/en/rules/EnglishWordRepeatBeginningRule.js +107 -0
  126. package/src/lang/en/rules/EnglishWordRepeatRule.js +126 -0
  127. package/src/lang/en/rules/EnglishWrongWordInContextRule.js +50 -0
  128. package/src/lang/en/rules/FindSuggestionsFilter.js +41 -0
  129. package/src/lang/en/rules/FutureDateFilter.js +25 -0
  130. package/src/lang/en/rules/LongSentenceRule.js +19 -0
  131. package/src/lang/en/rules/MorfologikAmericanSpellerRule.js +69 -0
  132. package/src/lang/en/rules/MorfologikAustralianSpellerRule.js +45 -0
  133. package/src/lang/en/rules/MorfologikBritishSpellerRule.js +47 -0
  134. package/src/lang/en/rules/MorfologikCanadianSpellerRule.js +45 -0
  135. package/src/lang/en/rules/MorfologikNewZealandSpellerRule.js +45 -0
  136. package/src/lang/en/rules/MorfologikSouthAfricanSpellerRule.js +45 -0
  137. package/src/lang/en/rules/NewYearDateFilter.js +25 -0
  138. package/src/lang/en/rules/NewZealandReplaceRule.js +56 -0
  139. package/src/lang/en/rules/NoDisambiguationEnglishPartialPosTagFilter.js +24 -0
  140. package/src/lang/en/rules/OrdinalSuffixFilter.js +33 -0
  141. package/src/lang/en/rules/SimpleReplaceProfanityRule.js +55 -0
  142. package/src/lang/en/rules/SimpleReplaceRule.js +46 -0
  143. package/src/lang/en/rules/StyleTooOftenUsedAdjectiveRule.js +58 -0
  144. package/src/lang/en/rules/StyleTooOftenUsedNounRule.js +58 -0
  145. package/src/lang/en/rules/StyleTooOftenUsedVerbRule.js +58 -0
  146. package/src/lang/en/rules/UnitConversionRule.js +47 -0
  147. package/src/lang/en/rules/UnitConversionRuleImperial.js +57 -0
  148. package/src/lang/en/rules/UnitConversionRuleUS.js +62 -0
  149. package/src/lang/en/rules/VariantInfo.js +23 -0
  150. package/src/lang/en/rules/WordCoherencyRule.js +40 -0
  151. package/src/lang/en/rules/YMDDateCheckFilter.js +25 -0
  152. package/src/lang/en/rules/YMDNewYearDateFilter.js +25 -0
  153. package/src/lang/en/rules/translation/BeoLingusTranslator.js +357 -0
  154. package/src/lang/en/rules/translation/Inflector.js +72 -0
  155. package/src/lang/en/synthesis/EnglishSynthesizer.js +109 -0
  156. package/src/lang/en/tagging/EnglishHybridDisambiguator.js +28 -0
  157. package/src/lang/en/tagging/EnglishTagger.js +78 -0
  158. package/src/lang/en/tokenizers/EnglishWordTokenizer.js +113 -0
@@ -0,0 +1,555 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <?xml-stylesheet type="text/xsl" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/print.xsl" ?>
3
+ <?xml-stylesheet type="text/css" href="../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.css"
4
+ title="Easy editing stylesheet" ?>
5
+ <!--
6
+ British English Grammar and Typo Rules for LanguageTool
7
+ See tagset.txt for the meaning of the POS tags
8
+ Copyright (C) 2012 Marcin Miłkowski (https://www.languagetool.org)
9
+
10
+ This library is free software; you can redistribute it and/or
11
+ modify it under the terms of the GNU Lesser General Public
12
+ License as published by the Free Software Foundation; either
13
+ version 2.1 of the License, or (at your option) any later version.
14
+
15
+ This library is distributed in the hope that it will be useful,
16
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
+ Lesser General Public License for more details.
19
+
20
+ You should have received a copy of the GNU Lesser General Public
21
+ License along with this library; if not, write to the Free Software
22
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23
+ USA
24
+ -->
25
+
26
+ <!DOCTYPE rules [
27
+ <!ENTITY apostrophe "['’`´‘ʻ]">
28
+
29
+ <!ENTITY hyphen "(?:[-‑])">
30
+
31
+ <!ENTITY ambiguous_date '
32
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
33
+ <token>/</token>
34
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
35
+ <token>/</token>
36
+ <token regexp="yes">\d\d\d\d</token>
37
+ '>
38
+ <!-- "7 October 2014" and "7th October 2014" -->
39
+ <!ENTITY date_dmy '
40
+ <token regexp="yes">\d\d?(th)?</token>
41
+ <token regexp="yes">&months;|&abbrevMonths;</token>
42
+ <token regexp="yes">\d\d\d\d</token>
43
+ '>
44
+ <!ENTITY date_dmy_skip '
45
+ <token regexp="yes">\d\d?</token>
46
+ <token regexp="yes">&months;|&abbrevMonths;</token>
47
+ <token regexp="yes" skip="-1">\d\d\d\d</token>
48
+ '>
49
+ <!-- "October 7, 2014" -->
50
+ <!ENTITY date_mdy '
51
+ <token regexp="yes">&months;|&abbrevMonths;</token>
52
+ <token regexp="yes">\d\d?</token>
53
+ <token>,</token>
54
+ <token regexp="yes">\d\d\d\d</token>
55
+ '>
56
+ <!ENTITY date_mdy_skip '
57
+ <token regexp="yes">&months;|&abbrevMonths;</token>
58
+ <token regexp="yes">\d\d?</token>
59
+ <token>,</token>
60
+ <token regexp="yes" skip="-1">\d\d\d\d</token>
61
+ '>
62
+ <!-- "31/10/2014" -->
63
+ <!ENTITY date_dmy_numbers '
64
+ <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
65
+ <token>/</token>
66
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
67
+ <token>/</token>
68
+ <token regexp="yes">\d\d\d\d</token>
69
+ '>
70
+ <!ENTITY date_dmy_numbers_skip '
71
+ <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
72
+ <token>/</token>
73
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
74
+ <token>/</token>
75
+ <token regexp="yes" skip="-1">\d\d\d\d</token>
76
+ '>
77
+ <!-- "10/31/2014" -->
78
+ <!ENTITY date_mdy_numbers '
79
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
80
+ <token>/</token>
81
+ <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
82
+ <token>/</token>
83
+ <token regexp="yes">\d\d\d\d</token>
84
+ '>
85
+ <!ENTITY date_mdy_numbers_skip '
86
+ <token regexp="yes">0?[1-9]|1[0-2]</token>
87
+ <token>/</token>
88
+ <token regexp="yes">0?[1-9]|[12][0-9]|3[01]</token>
89
+ <token>/</token>
90
+ <token regexp="yes" skip="-1">\d\d\d\d</token>
91
+ '>
92
+ ]>
93
+
94
+ <rules lang="en-GB" xsi:noNamespaceSchemaLocation="../../../../../../../../../../languagetool-core/src/main/resources/org/languagetool/rules/rules.xsd"
95
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
96
+ <category id="AMERICAN_ENGLISH" name="American English phrases" type="locale-violation">
97
+ <rulegroup id="TAKE_A_LOOK" name="take a look → have a look">
98
+ <short>American spelling</short>
99
+ <rule>
100
+ <pattern>
101
+ <marker>
102
+ <token inflected="yes" chunk_re=".-VP">
103
+ take
104
+ </token>
105
+ <token>a</token>
106
+ <token min="0" regexp="yes">closer?|first|second|deeper|brief|quick|careful</token>
107
+ <token chunk_re="E-NP.*">look</token>
108
+ </marker>
109
+ <token regexp="yes">at|if|and|on|because|but|when|once|over|in(to)?|whether|later|before|afterwards?|after|tomorrow|here|please|,|\.|…|\?|\!</token>
110
+ </pattern>
111
+ <message>In British English, "have a look" is more commonly used.</message>
112
+ <suggestion><match no="1" postag="VB.*" postag_regexp="yes">have</match> \2 \3 \4</suggestion>
113
+ <example correction="have a look">I promise that I will <marker>take a look</marker> later.</example>
114
+ </rule>
115
+ </rulegroup>
116
+ <rulegroup id="LUNCH_ROOM" name="lunchroom">
117
+ <rule>
118
+ <pattern>
119
+ <token>lunchroom</token>
120
+ </pattern>
121
+ <message>This term is chiefly North American English. Consider a replacement.</message>
122
+ <suggestion>canteen</suggestion>
123
+ <suggestion>cafeteria</suggestion>
124
+ <suggestion>break room</suggestion>
125
+ <example correction="canteen|cafeteria|break room">Tom is having a break in the <marker>lunchroom</marker>.</example>
126
+ </rule>
127
+ <rule>
128
+ <pattern>
129
+ <token>lunchrooms</token>
130
+ </pattern>
131
+ <message>This term is chiefly North American English. Consider a replacement.</message>
132
+ <suggestion>canteens</suggestion>
133
+ <suggestion>cafeterias</suggestion>
134
+ <suggestion>break rooms</suggestion>
135
+ <example correction="canteens|cafeterias|break rooms">Tom is having a break in the <marker>lunchrooms</marker>.</example>
136
+ </rule>
137
+ </rulegroup>
138
+ <rule id="DRIVERS_LICENSE" name="driver's licence/driving licence">
139
+ <pattern>
140
+ <token>driver</token>
141
+ <token>'s</token>
142
+ <token regexp="yes">licences?</token>
143
+ </pattern>
144
+ <message>This term is chiefly North American English. Consider a replacement.</message>
145
+ <suggestion>driving \4</suggestion>
146
+ <url>https://www.lexico.com/definition/driving_licence</url>
147
+ <example correction="driving licence">I've got a full, clean <marker>driver's licence</marker>.</example>
148
+ </rule>
149
+ <rule id="EGGPLANT" name="eggplant/aubergine">
150
+ <pattern>
151
+ <token regexp="yes">eggplants?</token>
152
+ </pattern>
153
+ <message>This term is chiefly North American English. Consider a replacement.</message>
154
+ <suggestion><match no="1" regexp_match="(?i)eggplant" regexp_replace="aubergine" /></suggestion>
155
+ <url>https://www.lexico.com/en/definition/eggplant</url>
156
+ <example correction="aubergines">He loved to eat <marker>eggplants</marker> for breakfast.</example>
157
+ </rule>
158
+ <rule id="ZIP_CODE_POSTCODE" name="zip code/postcode">
159
+ <pattern>
160
+ <token>zip</token>
161
+ <token postag_regexp="yes" postag="NN:UN|NNS" regexp="yes">codes?</token>
162
+ </pattern>
163
+ <message>The term '\1 \2' is common for American English. Did you mean <suggestion><match no="2" postag_regexp="yes" postag="NN(S)|NN:UN" postag_replace="NN$1">postcode</match></suggestion>?</message>
164
+ <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
165
+ <short>AmE/BrE: zip code/postcode</short>
166
+ <example correction="postcode">Please enter your <marker>zip code</marker>.</example>
167
+ <example correction="Postcodes"><marker>Zip codes</marker> are not always necessary.</example>
168
+ </rule>
169
+ <rulegroup id="APARTMENT-FLAT" name="apartment/flat">
170
+ <rule>
171
+ <pattern>
172
+ <token><exception>an</exception></token>
173
+ <marker>
174
+ <token inflected="yes">apartment</token>
175
+ </marker>
176
+ </pattern>
177
+ <message>The word '\2' is common for American English. Did you mean <suggestion><match no="2" postag="(NN.*)" postag_replace="$1">flat</match></suggestion>?</message>
178
+ <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
179
+ <short>AmE/BrE: apartment/flat</short>
180
+ <example correction="flats">These <marker>apartments</marker> are expensive.</example>
181
+ <example correction="flat">I just bought the <marker>apartment</marker>.</example>
182
+ <example>I just bought an apartment.</example>
183
+ </rule>
184
+ <rule>
185
+ <pattern>
186
+ <token>an</token>
187
+ <token>apartment</token>
188
+ </pattern>
189
+ <message>The word 'apartment' is common for American English. Did you mean <suggestion>a flat</suggestion>?</message>
190
+ <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
191
+ <short>AmE/BrE: apartment/flat</short>
192
+ <example correction="a flat">I just bought <marker>an apartment</marker>.</example>
193
+ </rule>
194
+ </rulegroup>
195
+ <rulegroup id="BAND-AID_PLASTER" name="band-aid/plaster">
196
+ <rule><!-- 'Band-Aid' is a trademark according to Merriam Webster's dictionary. Thus, it must not have postags NN or NNS. -->
197
+ <pattern>
198
+ <token>band-aid</token>
199
+ </pattern>
200
+ <message>The word '\1' is common for American English. (Band-Aid is a trademark.) Did you mean <suggestion>plaster</suggestion>?</message>
201
+ <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
202
+ <short>AmE/BrE: band-aid/plaster</short>
203
+ <example correction="plaster">Where's the <marker>band-aid</marker>?</example>
204
+ </rule>
205
+ <rule>
206
+ <pattern>
207
+ <token>band-aids</token>
208
+ </pattern>
209
+ <message>The word '\1' is common for American English. (Band-Aid is a trademark.) Did you mean <suggestion>plasters</suggestion>?</message>
210
+ <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
211
+ <short>AmE/BrE: band-aid/plaster</short>
212
+ <example correction="plasters">These <marker>band-aids</marker> are dirty.</example>
213
+ </rule>
214
+ </rulegroup>
215
+ <rule id="GROUND_VS_MINCED" name="ground beef/minced beef">
216
+ <pattern>
217
+ <token>ground</token>
218
+ <token>beef</token>
219
+ </pattern>
220
+ <message>The term '\1 \2' is common for American English. Did you mean <suggestion>minced \2</suggestion>?</message>
221
+ <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
222
+ <short>AmE/BrE: ground beef/minced beef</short>
223
+ <example correction="minced beef">Do vegetarians eat <marker>ground beef</marker>?</example>
224
+ </rule>
225
+ <rule id="MOVIE_THEATER_CINEMA" name="movie theater/cinema">
226
+ <pattern>
227
+ <token>movie</token>
228
+ <token inflected="yes">theater</token>
229
+ </pattern>
230
+ <message>The term '\1 \2' is common for American English. Did you mean <suggestion><match no="2" postag="(NN|NNS)(:UN)?" postag_replace="$1">cinema</match></suggestion>?</message>
231
+ <url>http://www.learnenglish.de/mistakes/USvsBrEnglish.html</url>
232
+ <short>AmE/BrE: movie theater/cinema</short>
233
+ <example correction="cinema">Let's go to a <marker>movie theater</marker>.</example>
234
+ <example correction="Cinemas"><marker>Movie theaters</marker> are popular, despite the new online movie streaming services.</example>
235
+ <example>Edward Norton – not appearing in a <marker>cinema</marker> near you.</example>
236
+ </rule>
237
+ <rule id="GOT_GOTTEN" name="gotten/got">
238
+ <pattern>
239
+ <token>gotten</token>
240
+ </pattern>
241
+ <message>"Gotten" is commonly used in American English. For varieties outside of North America, "got" is the preferred variant.</message>
242
+ <suggestion>got</suggestion>
243
+ <url>https://languagetool.org/insights/post/grammar-got-gotten/</url>
244
+ <short>AmE/BrE: gotten/got</short>
245
+ <example correction="got">He has <marker>gotten</marker> some food.</example>
246
+ <example correction="got">He's <marker>gotten</marker> up on the wrong side of bed.</example>
247
+ </rule>
248
+ <rule id="GAS_PETROL" name="gas/petrol" default="off"> <!-- This rule needs more exceptions to be usable -->
249
+ <pattern>
250
+ <token>gas<exception scope="previous">natural</exception></token>
251
+ </pattern>
252
+ <message>With the meaning of "gasoline", in British English is more common to use <suggestion>petrol</suggestion>.</message>
253
+ <short>AmE/BrE: gas/petrol</short>
254
+ <example>Natural gas.</example>
255
+ <example correction="petrol">More <marker>gas</marker>.</example>
256
+ </rule>
257
+ <rule id="LICENCE_LICENSE_NOUN_SINGULAR" name="License/Licence (noun)">
258
+ <antipattern>
259
+ <token postag="TO|MD" postag_regexp="yes" />
260
+ <token postag="RB" min="0" />
261
+ <token>license</token>
262
+ </antipattern>
263
+ <pattern>
264
+ <token negate_pos="yes" postag="VB|VBD|VBG|VBN|VBP|VBZ" postag_regexp="yes">license</token>
265
+ </pattern>
266
+ <message><match no="1"/> must be spelled with a "c" when used as a noun in British English. Use <suggestion>licence</suggestion>.</message>
267
+ <short>AmE/BrE: license/licence (noun singular)</short>
268
+ <example correction="licence">Please show me your <marker>license</marker>.</example>
269
+ </rule>
270
+ <rule id="LICENCE_LICENSE_NOUN_PLURAL" name="Licenses/Licences (noun)">
271
+ <antipattern>
272
+ <token chunk_re=".-NP-.*"/>
273
+ <token negate_pos="yes" postag="VB|VBD|VBG|VBN|VBP|VBZ" postag_regexp="yes">licenses</token>
274
+ <token chunk_re=".-NP-.*"/>
275
+ <example>The verb licenses a bare infinitive.</example>
276
+ </antipattern>
277
+ <pattern>
278
+ <token negate_pos="yes" postag="VB|VBD|VBG|VBN|VBP|VBZ" postag_regexp="yes">licenses</token>
279
+ </pattern>
280
+ <message><match no="1"/> must be spelled with a "c" when used as a noun in British English. Use <suggestion>licences</suggestion>.</message>
281
+ <short>AmE/BrE: license/licence (noun plural)</short>
282
+ <example correction="licences">Please show me your <marker>licenses</marker>.</example>
283
+ </rule>
284
+ <rule id="TRUNK_BOOT" name="trunk/boot (of car)">
285
+ <antipattern>
286
+ <token>car</token>
287
+ <token regexp="yes" skip="-1">boots?</token>
288
+ <token regexp="yes">trunks?</token>
289
+ </antipattern>
290
+ <antipattern>
291
+ <token regexp="yes" skip="-1">trunks?</token>
292
+ <token>car</token>
293
+ <token regexp="yes">boots?</token>
294
+ </antipattern>
295
+ <antipattern>
296
+ <token>car</token>
297
+ <token>'s</token>
298
+ <token skip="-1">boot</token>
299
+ <token regexp="yes">trunks?</token>
300
+ </antipattern>
301
+ <antipattern>
302
+ <token regexp="yes" skip="-1">trunks?</token>
303
+ <token>car</token>
304
+ <token>'s</token>
305
+ <token>boot</token>
306
+ </antipattern>
307
+ <antipattern>
308
+ <token regexp="yes">boots?</token>
309
+ <token>of</token>
310
+ <token postag_regexp="yes" postag="DT|PDT" />
311
+ <token inflected="yes" skip="-1">car</token>
312
+ <token regexp="yes">trunks?</token>
313
+ </antipattern>
314
+ <antipattern>
315
+ <token regexp="yes" skip="-1">trunks?</token>
316
+ <token regexp="yes">boots?</token>
317
+ <token>of</token>
318
+ <token postag_regexp="yes" postag="DT|PDT" />
319
+ <token inflected="yes">car</token>
320
+ </antipattern>
321
+ <pattern>
322
+ <token postag="SENT_START" skip="-1"><exception scope="next" inflected="yes" regexp="yes">elephant|river|swimming|tree</exception></token>
323
+ <marker>
324
+ <token regexp="yes" skip="-1">trunk|trunks<exception scope="next" inflected="yes" regexp="yes">elephant|river|swimming|tree|road|muzik</exception></token>
325
+ </marker>
326
+ <token postag="SENT_END"><exception scope="current" inflected="yes" regexp="yes">elephant|river|swimming|tree</exception></token>
327
+ </pattern>
328
+ <message>In the context of cars (automobiles), '<match no="2"/>' is American English. For British English use <suggestion><match no="2" postag="(NN.*)" postag_replace="$1">boot</match></suggestion>.</message>
329
+ <url>https://en.wikipedia.org/wiki/Trunk_%28car%29</url>
330
+ <short>AmE/BrE: trunk/boot</short>
331
+ <example correction="boot">The automobile has a small <marker>trunk</marker>.</example>
332
+ <example correction="boots">Automobiles that have large <marker>trunks</marker> are usually expensive.</example>
333
+ <example correction="Boots"><marker>Trunks</marker> on some automobiles are at the front.</example>
334
+ <example correction="boot">This Volkswagen has a large <marker>trunk</marker>.</example>
335
+ <example correction="boots">Volkswagens and Chryslers usually have large <marker>trunks</marker>.</example>
336
+ <example>The elephant's <marker>trunk</marker> is long.</example>
337
+ <example>This tree <marker>trunk</marker> is large.</example>
338
+ <example>The <marker>trunks</marker> of some trees were damaged during the storm.</example>
339
+ <example>The arterial <marker>trunks</marker> of some rivers are ...</example>
340
+ <example><marker>Trunks</marker> (swimming) of various colours are available from ...</example>
341
+ <example>If the electrical <marker>trunking</marker> on the car is ...</example>
342
+ <example>Put the <marker>trunk</marker> into the car boot.</example>
343
+ <example>The car boot contained <marker>trunks</marker> of many colours.</example>
344
+ <example>The car boots contained <marker>trunks</marker> of many sizes.</example>
345
+ <example>Put these items into the boot of the car: <marker>trunk</marker>, table, chair, kitchen sink.</example>
346
+ <example>Put the <marker>trunks</marker> into the boot of the car.</example>
347
+ <example>The lace on this <marker>boot</marker> is frayed.</example>
348
+ <example>The car boot contained a <marker>trunk</marker> and a ...</example>
349
+ <example>The car's boot contained a <marker>trunk</marker> and a ...</example>
350
+ <example>The <marker>trunks</marker> were in our car’s boot.</example>
351
+ <example>In the United Kingdom, trunk roads were first defined for Great Britain in the Trunk Roads Act 1936.</example>
352
+ <example>Trunk Muzik is a mixtape by southern rapper Yelawolf.</example>
353
+ <example type="triggers_error">The boot of this Volkswagen contains a large <marker>trunk</marker>.</example>
354
+ <example type="triggers_error">The boots of Volkswagens are sufficiently large to contain 2 or 3 <marker>trunks</marker>.</example>
355
+ <example type="triggers_error">The <marker>trunk</marker> was in the Ford.</example>
356
+ <example type="triggers_error">Mr Ford has a large blue <marker>trunk</marker>.</example>
357
+ <example type="triggers_error">The <marker>trunk</marker> was on the back seat of the Ford.</example>
358
+ <example type="triggers_error">The abandoned car contained a stolen <marker>trunk</marker>.</example>
359
+ <example type="triggers_error">The Chrysler's boot contained a <marker>trunk</marker> and a ...</example>
360
+ <example type="triggers_error">Some cars' boots can contain <marker>trunks</marker> of enormous size.</example>
361
+ </rule>
362
+ <rule id="AIR_PLANE_AEROPLANE" name="air plane/aeroplane"><!-- 'airplane' is in replace.txt -->
363
+ <pattern>
364
+ <token>air</token>
365
+ <token postag_regexp="yes" postag="NN|NNS" regexp="yes">planes?</token>
366
+ </pattern>
367
+ <message>The term '\1 \2' is common for American English. For British English use <suggestion><match no="2" postag="(NN.*)" postag_replace="$1">aeroplane</match></suggestion>.</message>
368
+ <url>https://www.lexico.com/definition/airplane</url>
369
+ <short>AmE/BrE: air plane/aeroplane</short>
370
+ <example correction="aeroplane">This <marker>air plane</marker> is very quiet.</example>
371
+ <example correction="aeroplanes">These <marker>air planes</marker> can fly for 12 hours when they are fully loaded with fuel.</example>
372
+ <example>This <marker>aeroplane</marker> is very quiet.</example>
373
+ </rule>
374
+ <rule id="SI_UNITS_OF_MEASUREMENT_ADJECTIVES_AME" name="1-liter/1-litre">
375
+ <pattern>
376
+ <token regexp="yes">([0-9]+-)(quetta|ronna|yotta|zetta|exa|peta|tera|giga|mega|kilo|hecto|deka|deci|centi|milli|micro|nano|pico|femto|atto|zepto|yocto|ronto|quecto)?(liter|meter)<exception postag="NNP"/></token>
377
+ </pattern>
378
+ <message>The word '<match no="1"/>' is an adjective (SI unit of measurement), but the spelling is not correct British English.</message>
379
+ <short>AmE/BrE: SI units (adjectives)</short>
380
+ <example correction="">Use a <marker>6-millimeter</marker> bolt.</example>
381
+ <example>Use a <marker>6-millimetre</marker> bolt.</example>
382
+ <example>Do not find incorrect English: use a <marker>10-millimeters</marker> bolt.</example>
383
+ <example>The 4.<marker>6-centigram</marker> difference is not a problem.</example><!-- Refer to OXFORD_SPELLING_GRAM -->
384
+ <example correction="">Use a <marker>10-meter</marker> rope.</example>
385
+ <example correction="">Also find typographic errors: a 5.7.<marker>8-femtoliter</marker> difference is not important.</example>
386
+ </rule>
387
+ <rule id="TAKE_A_BATH" name="Collocation: take (have) a bath/nap"><!-- Refer to en-US/HAVE_A_BATH -->
388
+ <pattern>
389
+ <marker>
390
+ <token inflected="yes">take</token>
391
+ </marker>
392
+ <or>
393
+ <token>a</token>
394
+ <token postag="PRP$"/>
395
+ </or>
396
+ <token regexp="yes" chunk_re="E-NP.*">bath|nap|rest|vacation</token>
397
+ </pattern>
398
+ <message>In British English, the usual verb to go with '\3' is <suggestion><match no="1" postag_regexp="yes" postag="(VB.*)" postag_replace="$1">have</match></suggestion>.</message>
399
+ <url>http://dialectblog.com/2012/07/26/take-have-a-bath/</url>
400
+ <short>Collocation error</short>
401
+ <example correction="had">John <marker>took</marker> a nap after lunch.</example>
402
+ <example correction="have">You can't <marker>take</marker> your bath now because I'm cleaning the bathroom.</example><!-- LT suggestion is not correct. -->
403
+ <example correction="have">Mary will <marker>take</marker> her vacation in Paris.</example>
404
+ <example correction="having">I was thinking about <marker>taking</marker> a rest, but I decided to complete the work.</example>
405
+ <example correction="having">While I was <marker>taking</marker> a bath, I thought about how to lay the bedroom carpet.</example>
406
+ <example correction="have">Does she <marker>take</marker> a bath in her vacation home or only a shower?</example>
407
+ <example correction="had">Who <marker>took</marker> a bath in the morning?</example>
408
+ <example>John <marker>had</marker> a nap after lunch.</example>
409
+ </rule>
410
+ <rule id="OK" name="ok (OK)">
411
+ <pattern>
412
+ <token case_sensitive="yes" regexp="yes">[Oo]k</token>
413
+ </pattern>
414
+ <message>Lower-case '\1' is American English. For British English use <suggestion>OK</suggestion>.</message>
415
+ <url>https://www.lexico.com/en/definition/ok</url>
416
+ <short>AmE/BrE: ok/OK</short>
417
+ <example correction="OK"><marker>Ok</marker>, I'll let you know.</example>
418
+ <example correction="OK">Are you <marker>ok</marker>?</example>
419
+ </rule>
420
+ <rule id="ANYMORE" name="anymore (any more)"><!-- Premium #759 -->
421
+ <pattern>
422
+ <token>anymore</token>
423
+ </pattern>
424
+ <message>In British English, the spelling '\1' is sometimes considered incorrect. Did you mean <suggestion>any more</suggestion>?</message>
425
+ <url>https://www.collinsdictionary.com/dictionary/english/anymore</url>
426
+ <short>AmE/BrE: anymore/any more</short>
427
+ <example correction="any more">I don't want to do this <marker>anymore</marker>.</example>
428
+ <example>I don't want to do this <marker>any more</marker>.</example>
429
+ </rule>
430
+ </category>
431
+
432
+ <category id="SEMANTICS" name="Semantics" type="inconsistency">
433
+ <rule id="UNION_JACK" name="Union Jack">
434
+ <antipattern case_sensitive="yes">
435
+ <token regexp="yes">Union|UNION</token>
436
+ <token regexp="yes">Jack|JACK</token>
437
+ </antipattern>
438
+ <pattern>
439
+ <token>union</token>
440
+ <token>jack</token>
441
+ </pattern>
442
+ <message>Capitalize this word if you mean the national flag of the UK.</message>
443
+ <suggestion>Union Jack</suggestion>
444
+ <url>https://www.lexico.com/definition/union_jack</url>
445
+ <example correction="Union Jack">The <marker>union jack</marker> is the national flag of the UK.</example>
446
+ </rule>
447
+ <rulegroup id="DATE_FUTURE_VERB_PAST_US" name="Future date, but verb in past tense (UK)">
448
+ <rule><!-- We have visited the client on 27/10/2040 -->
449
+ <pattern>
450
+ <token inflected="yes" postag="VBD?" postag_regexp="yes" skip="-1">have</token>
451
+ <token postag="VBN" skip="-1" chunk_re=".-VP">
452
+ <exception>scheduled</exception>
453
+ <exception regexp="yes">wed|sat</exception>
454
+ <exception scope='next' regexp='yes'>before|until|will</exception></token>
455
+ <marker> &date_dmy_numbers; </marker>
456
+ </pattern>
457
+ <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\7 month:\5 day:\3"/>
458
+ <message>The given date is in the future, but the verb is in past tense.</message>
459
+ <example correction="">We have visited the client on <marker>27/10/2040</marker>.</example>
460
+ <example correction="">I had already informed the customer on <marker>27/10/2040</marker>.</example>
461
+ <example>We have visited the client on <marker>27/10/2010</marker>.</example>
462
+ <example>I had already informed the customer on <marker>27/10/2010</marker>.</example>
463
+ <example>We will inform the client on 27/10/2010.</example>
464
+ <example>He promised to do it before 30/08/2020.</example>
465
+ <example>The data collected from 8/12/2019 to 8/29/2019 contained a lot of errors.</example><!-- XXX US standard style dates -->
466
+ </rule>
467
+ <rule><!-- On 27/10/2040, we have visited the client -->
468
+ <pattern>
469
+ <token>
470
+ <exception regexp='yes'>before|until</exception></token>
471
+ <marker> &date_dmy_numbers_skip; </marker>
472
+ <token inflected="yes" postag="VBD?" postag_regexp="yes" skip="-1">have</token>
473
+ <token postag="VBN" skip="-1" chunk_re=".-VP">
474
+ <exception regexp="yes">wed|sat</exception>
475
+ </token>
476
+ </pattern>
477
+ <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\6 month:\4 day:\2"/>
478
+ <message>The given date is in the future, but the verb is in past tense.</message>
479
+ <example correction="">On <marker>27/10/2040</marker>, we have visited the client.</example>
480
+ <example correction="">On <marker>27/10/2040</marker>, I had already informed the customer.</example>
481
+ <example>On <marker>27/10/2010</marker>, we have visited the client.</example>
482
+ <example>On <marker>27/10/2010</marker>, I had already informed the customer.</example>
483
+ <example>On 27/10/2010, we will inform the client.</example>
484
+ <example>He promised to do it before 30/08/2020.</example>
485
+ </rule>
486
+ <rule><!-- We visited the client on 27/10/2040 -->
487
+ <pattern>
488
+ <token postag="VBD" skip="-1" chunk_re=".-VP">
489
+ <exception scope='next' regexp='yes'>before|until|will</exception>
490
+ <exception regexp="yes">wed|sat</exception>
491
+ </token>
492
+ <marker> &date_dmy_numbers; </marker>
493
+ </pattern>
494
+ <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\6 month:\4 day:\2"/>
495
+ <message>The given date is in the future, but the verb is in past tense.</message>
496
+ <example correction="">We visited the client on <marker>27/10/2040</marker>.</example>
497
+ <example correction="">I already informed the customer on <marker>27/10/2040</marker>.</example>
498
+ <example>We visited the client on <marker>27/10/2010</marker>.</example>
499
+ <example>I already informed the customer on <marker>27/10/2010</marker>.</example>
500
+ <example>We will inform the client on 27/10/2010.</example>
501
+ <example>He promised to do it before 30/08/2020.</example>
502
+ </rule>
503
+ <rule><!-- On 27/10/2040, we visited the client -->
504
+ <pattern>
505
+ <token>
506
+ <exception regexp='yes'>before|until</exception></token>
507
+ <marker> &date_dmy_numbers_skip; </marker>
508
+ <token postag="VBD" skip="-1" chunk_re=".-VP">
509
+ <exception regexp="yes">wed|sat</exception>
510
+ </token>
511
+ </pattern>
512
+ <filter class="org.languagetool.rules.en.FutureDateFilter" args="year:\6 month:\4 day:\2"/>
513
+ <message>The given date is in the future, but the verb is in past tense.</message>
514
+ <example correction="">On <marker>27/10/2040</marker>, we visited the client.</example>
515
+ <example correction="">On <marker>27/10/2040</marker>, I already informed the customer.</example>
516
+ <example>On <marker>27/10/2010</marker>, we visited the client.</example>
517
+ <example>On <marker>27/10/2010</marker>, I already informed the customer.</example>
518
+ <example>On 27/10/2010, we will inform the client.</example>
519
+ <example>He promised to do it before 30/08/2020.</example>
520
+ </rule>
521
+ </rulegroup>
522
+ </category>
523
+
524
+ <category id="TYPOS" name="Possible Typo" type="misspelling">
525
+
526
+ <rule id="AIT" name="ait (it)">
527
+ <antipattern><!-- Context: island, river -->
528
+ <token skip="-1" postag="SENT_START"/>
529
+ <token skip="-1" regexp="yes" postag_regexp="yes" postag="NN.*" inflected="yes">island|river</token>
530
+ <token postag="SENT_END"/>
531
+ </antipattern>
532
+ <pattern>
533
+ <token case_sensitive="yes" regexp="yes">[Aa]it<exception postag="NNP"/></token>
534
+ </pattern>
535
+ <message>The rare word '\1' means a small island in a river.</message>
536
+ <suggestion>air</suggestion>
537
+ <suggestion>it</suggestion>
538
+ <url>https://www.lexico.com/definition/ait</url>
539
+ <short>Possible typo</short>
540
+ <example correction="Air|It"><marker>Ait</marker> is a good idea.</example>
541
+ <example correction="air|it">I need some fresh <marker>ait</marker> to clear my mind.</example>
542
+ <example>An <marker>ait</marker> is a small island.</example>
543
+ <example>The AIT is governed by a Committee.</example>
544
+ <example>Stallergenes Greer's approach to allergen immunotherapy(AIT) is focused on individual patient needs.</example>
545
+ <example>Welcome to all new and returning AiT members. </example>
546
+ <example>Santo insists young full-back Rayan Ait-Nouri has their 'confidence and total support'...</example>
547
+ <example>Restricted access - Isleworth Ait. Birdwatching.</example>
548
+ <example>Isleworth Ait lies offshore from Heron's place.</example>
549
+ <example>Visit One Over the Ait Pub and Restaurant in Brentford.</example>
550
+ <example type="triggers_error">Explore releases from Ait! at Discogs.</example>
551
+ </rule>
552
+
553
+ </category>
554
+
555
+ </rules>