languagetool-org/languagetool · error · IOException
A separator character (fsa.dict.separator) must be defined i
Error message
A separator character (fsa.dict.separator) must be defined in the dictionary info file.
What it means
Configuration guard in SynthDictionaryBuilder: the synthesizer dictionary's .info file lacks fsa.dict.separator, so entries cannot be parsed/reversed correctly.
Source
Thrown at languagetool-tools/src/main/java/org/languagetool/tools/SynthDictionaryBuilder.java:121
String fileName = infoFile.getName();
int underscorePos = fileName.indexOf('_');
if (underscorePos == -1) {
throw new IllegalArgumentException("Please specify an .info file for a synthesizer as the second parameter, named '<xyz>_synth.info', with <xyz> being a language'");
}
String baseName = fileName.substring(0, underscorePos);
if (baseName.equals("polish")) {
return Pattern.compile(POLISH_IGNORE_REGEX);
}
return null;
}
private File reverseLineContent(File plainTextDictFile, Set<String> itemsToBeIgnored, Pattern ignorePosRegex) throws IOException {
File reversedFile = File.createTempFile(SynthDictionaryBuilder.class.getSimpleName() + "_reversed", ".txt");
reversedFile.deleteOnExit();
String separator = getOption("fsa.dict.separator");
if (separator == null || separator.trim().isEmpty()) {
throw new IOException("A separator character (fsa.dict.separator) must be defined in the dictionary info file.");
}
String encoding = getOption("fsa.dict.encoding");
int posIgnoreCount = 0;
Scanner scanner = new Scanner(plainTextDictFile, encoding);
try (Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(reversedFile), encoding))) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (itemsToBeIgnored.contains(line)) {
System.out.println("Ignoring: " + line);
continue;
}
String[] parts = line.split("\t");
if (parts.length == 3) {
String posTag = parts[2];
if (ignorePosRegex != null && ignorePosRegex.matcher(posTag).find()) {
posIgnoreCount++;
continue;View on GitHub (pinned to 2e990059ce)
Solutions
- Add fsa.dict.separator=<char> to the synth dictionary .info file
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at languagetool-tools/src/main/java/org/languagetool/tools/SynthDictionaryBuilder.java:121 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of languagetool-org/languagetool@2e990059ce (2026-09-06).
Data as JSON: /api/errors/399d51fb617a5800.
Report an issue: GitHub.