languagetool-org/languagetool · error
No speller rule found for
Error message
No speller rule found for
What it means
UnknownWordFinderForCsv.getSpellingCheckRule throws a RuntimeException when no dictionary-based spelling rule is active for the given JLanguageTool language, listing the language in the message. Without a speller rule the CSV unknown-word scan cannot proceed.
Source
Thrown at languagetool-dev/src/main/java/org/languagetool/dev/UnknownWordFinderForCsv.java:58
List<Path> files = Files.walk(dir.toPath()).filter(Files::isRegularFile).collect(Collectors.toList());
for (Path file : files) {
handle(file, spellerRule);
}
}
@NotNull
private SpellingCheckRule getSpellingCheckRule(JLanguageTool lt) {
SpellingCheckRule spellerRule = null;
for (Rule rule : lt.getAllActiveRules()) {
if (rule.isDictionaryBasedSpellingRule()) {
if (spellerRule != null) {
throw new RuntimeException("Found more than one spell rule: " + rule + ", " + spellerRule);
}
spellerRule = (SpellingCheckRule) rule;
}
}
if (spellerRule == null) {
throw new RuntimeException("No speller rule found for " + lt.getLanguage());
}
return spellerRule;
}
private void handle(Path f, SpellingCheckRule rule) throws IOException {
int i = 0;
if (f.toString().toLowerCase().endsWith(".csv")) {
List<String> lines = Files.readAllLines(f);
for (String line : lines) {
String[] parts = line.split(",");
String word = parts[0].replace("\"", "");
if (rule.isMisspelled(word)) {
System.out.println(line);
i++;
}
}
} else {
System.out.println("Ignoring " + f + ": unknown suffix");View on GitHub (pinned to 2e990059ce)
Solutions
- Enable the language's dictionary-based spelling rule
- Run the tool only for languages that have a speller rule
- Check lt.getAllActiveRules() for an isDictionaryBasedSpellingRule() rule before invoking
Defensive patterns
Strategy: validation
Validate before calling
if (lt.getAllActiveRules().stream().noneMatch(Rule::isDictionaryBasedSpellingRule)) {
throw new IllegalStateException("No spelling rule active for " + lt.getLanguage());
} Try / catch
try { new UnknownWordFinderForCsv(...).run(); } catch (RuntimeException e) { if (e.getMessage().startsWith("No speller rule found")) { System.err.println("Enable a spelling rule for this language or skip it"); } } Prevention
- Confirm a spelling rule exists for each language in batch runs
- Do not disable all spelling rules before analysis
- Filter language lists to those with speller rules
When it happens
Trigger: Running UnknownWordFinderForCsv for a language with no active dictionary-based spelling rule (rule missing or disabled).
Common situations: Languages without a spelling rule module; custom configs disabling spelling; passing the wrong Language object.
Understand the failure class
Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.
Related errors
- Found more than one spell rule:
- Found more than one spell rule:
- No speller rule found for
- No rules are active. Please make sure your rule ids (<option
- Could not activate rules
AI-assisted analysis of languagetool-org/languagetool@2e990059ce (2026-09-06).
Data as JSON: /api/errors/2e80be78666fed5e.
Report an issue: GitHub.