https://github.com/willibrandon/spellcheck32
A .NET wrapper around the Microsoft Spell Checking API.
https://github.com/willibrandon/spellcheck32
dictionary dotnet spellcheck spellchecker spelling suggestions win32
Last synced: 2 months ago
JSON representation
A .NET wrapper around the Microsoft Spell Checking API.
- Host: GitHub
- URL: https://github.com/willibrandon/spellcheck32
- Owner: willibrandon
- License: mit
- Created: 2024-01-01T20:36:49.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-25T06:40:39.000Z (6 months ago)
- Last Synced: 2024-12-04T17:54:35.901Z (6 months ago)
- Topics: dictionary, dotnet, spellcheck, spellchecker, spelling, suggestions, win32
- Language: C#
- Homepage:
- Size: 806 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# spellcheck32
A .NET wrapper around the Microsoft Spell Checking API
## Example
```csharp
string text = "Cann I I haev some Linux?";using SpellChecker spellChecker = new("en-US");
spellChecker.AutoCorrect("Linux", "Windows");Console.WriteLine(string.Concat("Check \"", text, "\"", Environment.NewLine));
foreach (SpellingError error in spellChecker.Check(text))
{
string mistake = text.Substring(error.StartIndex, error.Length);switch (error.CorrectiveAction)
{
case CorrectiveAction.Delete:
Console.WriteLine(string.Concat("Delete \"", mistake, "\"", Environment.NewLine));
break;case CorrectiveAction.GetSuggestions:
Console.WriteLine(string.Concat("Suggest replacing \"", mistake, "\" with:"));foreach (string suggestion in spellChecker.Suggest(mistake))
{
Console.WriteLine(string.Concat("\"", suggestion, "\""));
}Console.WriteLine(string.Empty);
break;case CorrectiveAction.Replace:
Console.WriteLine(
string.Concat("Replace \"", mistake, "\" with \"",
spellChecker.Suggest(mistake).First(), "\"", Environment.NewLine));
break;case CorrectiveAction.None:
default:
break;
}
}
```Output:
```
Check "Cann I I haev some Linux?"Replace "Cann" with "Can"
Delete "I"
Replace "haev" with "have"
Replace "Linux" with "Windows"
```## API
```csharp
namespace spellcheck32;public class SpellChecker
{
///
/// Occurs when there is a change to the state of the spell checker that could cause the text to be treated differently. A
/// client should recheck the text when this event is received.
///
public event EventHandler? SpellCheckerChanged;///
/// Gets the identifier of the spell checker.
///
public string Id { get; }///
/// Gets the BCP47 language tag this instance of the spell checker supports.
///
public string LanguageTag { get; }///
/// Gets text, suitable to display to the user, that describes this spell checker.
///
public string LocalizedName { get; }///
/// Creates a new instance of the class.
///
///
/// A BCP47 language tag that identifies the language for the requested spell checker.
///
public SpellChecker(string languageTag)///
/// Treats the provided word as though it were part of the original dictionary.
///
///
///
/// The word will no longer be considered misspelled, and will also be considered as a candidate for suggestions.
///
///
public void Add(string word)///
/// Causes the occurrences of one word to be replaced by another.
///
///
/// The incorrectly spelled word to be autocorrected.
///
///
/// The correctly spelled word that should replace .
///
public void AutoCorrect(string from, string to)///
/// Checks the spelling of the supplied text and returns a collection of spelling errors.
///
public IEnumerable Check(string text)///
/// Checks the spelling of the supplied text in a more thorough manner than , and returns a
/// collection of spelling errors."/>
///
public IEnumerable ComprehensiveCheck(string text)///
/// Ignores the provided word for the rest of this session.
///
///
///
/// The word will no longer be considered misspelled, but it will not be considered as a candidate for suggestions.
///
///
public void Ignore(string word)///
/// Determines whether the specified language is supported by a registered spell checker.
///
///
/// A BCP47 language tag that identifies the language for the requested spell checker.
///
///
/// if the specified language is supported by a registered spell checker, otherwise
/// .
///
public bool IsLanguageSupported(string languageTag)///
/// Registers a file to be used as a user dictionary for the current user, until unregistered.
///
///
///
/// Allows clients to persistently register and unregister user dictionary files that exist in locations other than the
/// usual directory path (%AppData%\Microsoft\Spelling). The dictionaries must have the same files formats as the ones
/// located in the normal path and also should have the appropriate file extensions. However, it is strongly recommended
/// for clients to place their dictionaries under %AppData%\Microsoft\Spelling whenever it is possible--the spell checking
/// functionality does not pick up changes in dictionaries outside that directory tree.
///
///
/// The filename must have the extension .dic (added words), .exc (excluded words), or .acl (autocorrect word pairs). The
/// files are UTF-16 LE plaintext that must start with the aprropriate Byte Order Mark (BOM). Each line conains a word (in
/// the Added and Excluded word lists), or an autocorrect pair with the words separated by a vertical var ("|") (in the
/// AutoCorrect word list). The wordlist in which the dictionary is included is inferred through the file extension.
///
///
/// A file registered for a language subtag will be picked up for all languages that contain it. For example, a dictionary
/// registered for "en" will also be used by an "en-US" spell checker.
///
///
public void RegisterUserDictionary(string dictionaryPath, string languageTag)///
/// Removes a word that was previously added by , or set by to be
/// ignored.
///
public void Remove(string word)///
/// Retrieves spelling suggestions for the supplied text.
///
public IEnumerable Suggest(string word)///
/// Gets the set of languages/dialects supported by any of the registered spell checkers.
///
public IEnumerable SupportedLanguages()///
/// Unregisters a previously registered user dictionary. The dictionary will no longer be used by the spell checking
/// functionality.
///
///
///
/// To unregister a given file, this method must be passed the same arguments that were previously used to register it.
///
///
public void UnregisterUserDictionary(string dictionaryPath, string languageTag)
}
```